#dev-general

1 messages · Page 76 of 1

heady birch
#

Why write out the function logic when nialllang™️ can infer it from the procedure name???

prisma wave
#

WHAT

heady birch
#

Your jealous now

prisma wave
#

what does it infer?

heady birch
#

You know when we use Spring repositorys Jpa Data

prisma wave
#

yeah

heady birch
#

It infers the nice methods in our interfaces

prisma wave
#

I was gonna ask is it like that?

heady birch
#

Like that, but it is capable of everything

prisma wave
#

but

#

how

ocean quartz
#

I feel like if I tried making a language it'd look too similar to Kotlin

heady birch
#

Its a work in progress

#

Art cannot be rushed

prisma wave
#

it's very hard to not copy kotlin lol

ocean quartz
#

Ikr, like was just thinking about how i would do variable declarations and val foo = Bar() is already so good lol

prisma wave
#

the only way I could think of to improve it would just be foo = Bar() and the val is inferred

ocean quartz
#

I like having val or var though, makes it easier to read

prisma wave
#

indeed

heady birch
#

If I were to seriously design a language I'd add variable size integers and floats, as well as unsigned types

#

Although bet that's pretty hard to implement

prisma wave
#

not particularly

#

I've defined number sizes for mine

#

Int32, UInt16, etc

#

not entirely sure how I'll implement them

#

bit arrays perhaps

hallow tide
#

so we found something i coded at 3 am to annoy sxtanna with

#

the overcomplicating piece of work

ocean quartz
#

The naming of variables smh

hallow tide
#

xd

#

TC is textcomponent

ocean quartz
#

What about c? xD

obtuse gale
#

just name all your variables x,y,z regardless of what they are

#

simple

#

then x1,y1,z1, and so on

hallow tide
#

character

#

i couldve named it ch but nah

#

and char is taken

ocean quartz
#

Oorr you could have named it character xD

hallow tide
#

too long hehe

ocean quartz
#

No such thing as too long variables ;p

hallow tide
#

true

#

but do you think naming it characterFromStringThatIsInForLoop is a good naming?

ocean quartz
#

Ofc

hallow tide
#

very descriptive

frail glade
hallow tide
#

oh yeah baby

#

good job glare

ocean quartz
#

That's really nice

hallow tide
#

but why do you clear 1.0-SNAPHSOT to write 1.0.0

frail glade
#

It's just an example

hallow tide
#

just erase -SNAPSHOT and add a .0

#

xd

frail glade
#

It's like so close to being done. I just have to figure out why it's not pushing the authors correctly.

hallow tide
#

oh rip

frail glade
#

Alrighty gradle works now too

hallow tide
#

oo

#

adding kotlin support?

ocean quartz
#

Until spigot shades in Kotlin on the main jar i don't think it's worth making Kotlin expansions, that'd be like 1.6MB expansions for very small changes

#

Though a nice idea would be for the Minecraft plugin to have a Kotlin template as well ;o

hallow tide
#

hmm yeah

ocean quartz
#

Really wish MD would just add Kotlin to the jar already

#

Ayy nice, working fine, multiple prefixes, like aliases but all in the same annotation

frail glade
ocean quartz
#

Looking at my framework as a guide for writing this one and noticing so many mistakes I made writing it wow

frail glade
#

So you going to go back through and clean it up?

ocean quartz
#

Yeah, it's really dumb mistakes

frail glade
#

😛

#

Just got a notification that all 6 builds failed and it turns out I forgot to lint.

ocean quartz
#

When I looked there were 4 that didn't pass

frail glade
#

Yeah they all failed cause of lint.

#

We got 1 😮

ocean quartz
#

Only 2 left!

#

Also if I do string.split(' ') if there is no spaces the list will still have 1 index right?

frail glade
#

Passed all 6

#

And I have no idea

ocean quartz
frail glade
#

Alrighty so we have a yes and no for this PR.

#

Yes, it can be implemented but no, not in it's current format. There's another PR coming soon for McDev which will revamp a lot of the project.

#

I can then rebase the PR off this and design a single creator step that can be called by the platforms

ocean quartz
#

So you'll have to wait, then change a bunch of stuff?

frail glade
#

Not too much

#

But the initial logic is done.

#

It works

#

Going to create an updated showcase video.

ocean quartz
#

Oh okay, a little better than i thought

frail glade
#

Alrighty, I posted a full showcase of initial testing in #showcase

#

I actually finished this way sooner than I planned to.

topaz bay
#

pray for me

ocean quartz
#

Is that your language?

#

🙏

topaz bay
#

yes

ocean quartz
#

Ooh nice!
Bm showed a bit of his earlier and had some cool features

obtuse gale
#

I swear this is like the 5th time ive spent 20 minutes tryna work out why my plugins not working then realising i forgot to call Gui#open

errant geyser
#

@ocean quartz is your site down? I can't get onto it or the MF docs

obtuse gale
#

fine for me

errant geyser
#

Can you link it? I'm probably looking at the wrong page

hot hull
obtuse gale
#

^

heady birch
#

Why is that wiki so nice

#

Also why is that framework so nice

errant geyser
#

Most of Matts things seem to be nice

obtuse gale
#

^

zinc warren
#

Any1 good with hoppers are slow?

#

I already change it too this

#

but they are still slow

quiet depot
#

@ocean quartz u making another framework?

heady birch
#

Am I going mad

#

Yep I am lol my bad

heady birch
#

@frigid badge Or there was this I came up with earlier:

CriteriaRegister criteriaRegister = kiteBoard.getCriteriaRegister();
CriteriaProvider<MyAssignmentCriteria> myCriteriaProvider = MyAssignmentCriteria::new;
        
 try {
   criteriaRegister.registerProvider("MY_ASSIGNMENT", myCriteriaProvider);
} catch (CriteriaConflictException e) {
  e.printStackTrace();
}
frigid badge
#

I'd go for the previous one

#

and fuck the type

heady birch
#

😥

#

oh you mean getType

#

I'll keep generics because so beautiful

ocean quartz
#

@quiet depot Kinda, making a bot for my discord server, so thought it be easier to have a small command system for JDA so basically remaking what i did for my main framework but to work with JDA, if it works well and people like it i might publish though ;p

signal tinsel
#

AAAAAAAAAAAAAA MY FUCKING BRAIN

#

ERROR 500

#

THIS SHIT ISN'T WORKING AND I CAN'T FUCKING FIGURE OUT WHY

#

THERE IS ABSOLUTELY NO FUCKING REASON FOR IT NOT TO WORK

pallid gale
#

caps pls

heady birch
#

Haha bet your using php

signal tinsel
#

Java

#

Error 500 in my brain I mean

#

Lol

heady birch
#

Lol

signal tinsel
#

oh

#

i am

#

fucking

#

stupid

#

I FUCKING KNEW it was a stupid mistake

#

IT ALWAYS IS

hot hull
#

:caps:

onyx loom
#

reeeeeeeeeee

pale shell
#

if you wanted to get values from different areas of your java project, is it better to make a mini-api?

prisma wave
#

api everything

#

encapsulate and hide implementation

pale shell
#

It's just being annoying by not sharing the values around 😄

prisma wave
#

don't pass values around

#

get them when you need to

#

through an api

#

ideally an interface

#

different components shouldn't know how the other components work

remote goblet
#

Lesson of the day: don't use - in sql

heady birch
#

Writing to interfaces is nice

prisma wave
#

interfaces are cool

pale shell
#

fun fact: trying to get the vault economy before initilizing it causes too many fucking NPE's to talk about.

#

soz.

remote goblet
heady birch
#

Idiot

#

Why didnt you show that earlier

#

I was trying to make a similar generic method

#

But didnt know how to ask google

remote goblet
#

I need to recode the command system for my bot

quiet depot
#

@ocean quartz abstract your api to be platform independent, don’t have two separate libraries that have the same function, for different platforms

heady birch
#

<T> CriteriaRegistration<T> getCriteriaRegistration(Class<T extends Criteria> criteriaClass);

#

This is what I need to figure out

quiet depot
#

what u tryna do?

heady birch
#

What I posted

quiet depot
#

gee thanks for the context

heady birch
#

but I can't use Class<T extends Criteria>

#

It doesnt let me add a bound

quiet depot
#

that’s cuz u can only use that syntax on ?

#

move it to the type variable declaration

#

<T extends Blah> methodName

heady birch
#

Oh sick

#

Works

#

Never used that <T> suffix before

remote goblet
#

okay now let's figure out how to make this command system for my bot 🤔

prisma wave
#

Magic

pale shell
hot hull
#

wdy

#

m

#

That's perfect

prisma wave
#

Looks like dodgy colour codes

pale shell
#

like what the actual fuck causes that

obtuse gale
#

oof

hot hull
#

1.8

#

<o/

heady birch
#

What are you using for colour codes

pale shell
#

Ah

hot hull
#

That's what causes that

pale shell
#

I know what the issue is

prisma wave
#

1.8

hot hull
#

^

pale shell
#

no !

ocean quartz
#

@quiet depot Yeah BM also suggested that, i don't know if it'd be worth it though
Plus i don't really know how to make the maven modules independent like that, i guess I could look how ACF does it
and yes maven not gradle because dealing with maven central with gradle is much more complicated

pale shell
#

i lost the code so i hate to decompile it and it didn't decompile well

heady birch
#

CEO of losing code

ocean quartz
#

Tbh hmm, it wouldn't be that hard to make it platform independent

heady birch
#

I've lost 3 projects before

pale shell
#

it was the § code lol

#

how

heady birch
#

Because a hard drive failure

pale shell
#

backups?

quiet depot
#

ez just deploy via maven

heady birch
#

I do now

quiet depot
#

do everything else gradle

heady birch
#

I have an external hd for that

quiet depot
#

that’s what I do for rpf, although purely because I haven’t bothered to look at gradle’s deploy plugin

prisma wave
#

It can't be that bad

ocean quartz
#

Oh yeah, i could easily have the project set with maven and gradle, one for deploying other for working right?

quiet depot
#

take a look at my structure if you wish

#

I’ve got poms in a maven folder

#

then gradle everywhere else

#

deploying is actually done via maven cli

ocean quartz
#

Sure thing will do
And gradle deploy plugin has one downside, it only stages doesn't release (as far as my testing went)

quiet depot
remote goblet
#

Matt

#

i may have to steal that command framework :)

ocean quartz
#

Ooh nice nice
I should be done with it soon
Gotta figure how I'll make this work with my main one first xD

remote goblet
#

i previously yeeted jda utilities source code in my bot

#

and it's such a mess to work with

#

Making any slight change takes forever so i might aswell just recode it all]

heady birch
#

Another vote:

rotund egret
#

Yes

pale shell
#

When people irl think you're good at coding and you just put on a smile knowing all the stress it brings. (:

rotund egret
#

I feel no stress

#

I only feel NPE

heady birch
#

😭

#

I might rename my whole animation system

#

to modifiers

remote goblet
#

Update on the command handler: I deleted it

prisma wave
#

a tragic loss

remote goblet
#

JDA Utilities has 24 classes

#

i dont have time for that

errant geyser
#

My role application hasn't been rejected yet

#

🤔

#

I just wanted to bring pain to Piggy and Glare, having to look through my awful code

remote goblet
#

it took a solid like

#

2/3 weeks for them to do it

#

Piggy ended up looking at the one plugin I haven't touched in a long time

ocean quartz
rotund egret
#

1st one imo

prisma wave
#

yeah first

ocean quartz
#

Gonna add a 3rd option

commandManager.setPrefixes("!", "?")

@Command("test")
class TestCommand : CommandBase()
prisma wave
#

that is the best I think

ocean quartz
#

Easier to customize i think

obtuse gale
#

The last ones the best

ocean quartz
#

So sad to need to rewrite the bot code in Java 😢

hot hull
#

@ocean quartz oo that's smexy

obtuse gale
#

^^^^^^^

#

If frosty was talking about the command annotations lol

hot hull
#

Yes

heady birch
#

I like th efirst one

obtuse gale
#

same

heady birch
#
@FunctionalInterface
    interface Provider<T extends Criteria> {
        /**
         * Supply a new criteria instance from the provided Configuration Section.
         * @param configurationSection criteria configuration section
         * @return Criteria
         */
        T provideInstance(ConfigurationSection configurationSection);
    }
#

I feel I could change the name Provider

hot hull
#

Is that documentation on an API :oshit:

heady birch
#

To something more appropriate

quiet depot
#

what is that indentation though

heady birch
#

discord

heady birch
#
AssignmentRegistry assignmentRegistry;
//opt 1
assignmentRegistry.registerCriteria("IDENTIFIER", MyCriteria.class, MyCritiria::new);
//opt 2
assignmentRegistry.registerCriteria(new AbstractCriteriaRegistration<MyCriteria>("IDENTIFIER", MyCriteria.class, MyCriteria::new));
//opt 3
assignmentRegistry.registerCriteria(
    Criteria.createRegistration("IDENTIFIER", MyCriteria.class, MyCriteria::new));
#

@quiet depot For my API which option do you think is best

#

Better to keep the registration not exposed my passing the arguments directly to registerCriteria?

hot hull
#

first one seems nicer imo

frigid badge
#

definitely not option 3

heady birch
#

@frigid badge Really, why not?

frigid badge
#

a registration is what creates a Criteria

heady birch
#

True

frigid badge
#

so you create a registration from a criteria which in turns gets created by the registration

heady birch
#

so the Criteria should create its registration

#

well, its static

frigid badge
#

still

#

show us the registration class

heady birch
#

opt 1 i'm with at the moment

#

which

#

Concrete interface of the abstract one

frigid badge
#

AbstractCriteriaRegistration

heady birch
#

I kind of deleted that

frigid badge
#

well then show the first one

#

it's the same code since it has same params

heady birch
#
public interface AssignmentRegistration<T extends Criteria> {
    /**
     * Get the criteria type's unique identifier.
     * @return ID
     */
    String getIdentifier();

    /**
     * Get the criteria class
     * @return class.
     */
    Class<T> getCriteriaClass();

    /**
     * Get the supplier
     * @return supplier.
     */
    Criteria.Provider<T> getProvider();
}```
frigid badge
#

and the registerCriteria method?

#

to be really honest

#

you are overthinking this

#

making it way harder than it should be

heady birch
#
@Override
    public <T extends Criteria> void registerCriteria(String identifier, Class<T> clazz, Criteria.Provider<T> provider) {
        AssignmentRegistration<T> registration =
                new AssignmentRegistrationImpl<>(identifier, clazz, provider);
        registeredCriteria.put(identifier, registration);
    }
#

All the T does is make sure a user doesnt try to register the wrong types together

#

this way is extensible though

frigid badge
#

why do you need the class and the provider though

heady birch
#

actually good point

#

that was so you could get a provider from the class, but i actually removed that

#

so identifier and provider only would be fine

#

then I wouldn't need the registration class

signal tinsel
#

I deadass wanna add MongoDB support

#

I love mongo

frigid badge
#

you are the only one then

#

😛

topaz bay
#

@prisma wave that works pretty well

#

And since it has type bounds

prisma wave
#

not too shabby

hot hull
#

I'd say neat, but no clue what's going on

topaz bay
#

@hot hull its my language

hot hull
#

Yea I got that part

heady birch
#

pull::[Int]("Please provide a number")

topaz bay
#

@hot hull what do you not get then?

heady birch
#

😕

topaz bay
#

WHAT

heady birch
#

What?

#

You want to know what

topaz bay
#

I'm.... confused

heady birch
#

Capital P for please

ocean quartz
#

Isn't pull in that situation a function?

topaz bay
#

No, its a keyword

#

its counterpart is push

ocean quartz
#

Oh okok

heady birch
#

That is really cool though sxtanna

ocean quartz
#

I mean if it's a keyword it makes more sense to be lowercase

topaz bay
heady birch
#

bro this aint an array

#

one may think that is pushing to an array 😐

#

How are you doing it?

#

Written like a parser in kotlin?

remote goblet
#

sx ur gay

topaz bay
#

Theres a lexer that tokenizes the raw string

#

Then a typer (parser) that transforms the tokens into commands

#

the commands run linearly pushing and pulling values through a stack

#

with references to a context that stores properties, functions, traits and classes

remote goblet
#

sounds scary

topaz bay
#

Its not

#

Heres how properties work

#

It gets defined, then the expression to the right of the = is evaluated (in this case its just a single value, so the parser just makes it a literal), then the property gets assigned that value

#

Since the type isnt defined on the property, its none at first, but after the value is evaluated, the type is defined to Int

#

specifying the type gives it a value immediatly

#

which allows for strict typing

#

:D

heady birch
#

how you going to implement.. if/else when and all that though?

#

I wouldn't know how to start but sounds like an awesome challenge

topaz bay
#

All you have to do is think about it logically

#

if (condition)

#

if, (, bit, )

#

Here, I'll do it rn actually

#

Actually, I think I'm going to replace if with when as the condition keyword

#

because why not

heady birch
#

😕

topaz bay
heady birch
#

true

topaz bay
#

All I have to do is define more constants in the word enum

#

and then implement the branch of parsing for it

heady birch
#

I might have ago at this 🙂

topaz bay
#

You probably shouldn't

#

It's not as easy as I make it out to be

#

lol

heady birch
#

bet

#

actually yeah it sounds kind of hard

topaz bay
#

Now, I just have to turn those tokens into commands

#

smile

prisma wave
topaz bay
#

If the value that gets pulled from the stack is anything other than Value

#

Its just a piece of data that contains its type

heady birch
#
   void restartScoreboard();
   void restartTablist();
   void resetScoreboardGroup();
   void resetTablistGroup();

   //opt 2 GroupType.TABLIST or GroupType.SCOREBOARD
   void restart(GroupType groupType);
   void resetGroup(GroupType groupType);
#

As a developer which api would you prefer to use

#

I dont plan to add any more GroupType values.. but..

#

@topaz bay @prisma wave

topaz bay
#

Annnndddd the command for conditions

heady birch
#

bro which one

prisma wave
#

@heady birch the second

#

Open closed principle

#

@topaz bay so that exception would essentially never happen?

topaz bay
#

@prisma wave No

#

It happened before I fixed the command for pull

#

This was originally stack.push(data)

prisma wave
#

ah ok

topaz bay
#

ez

#

huge

hot hull
distant sun
#

deprecated?

hot hull
#

yes

sullen storm
frail glade
#

It's not released yet

#

It's a showcase

distant sun
#

nice job glare boy

heady birch
#

@lofty garden bro

#

Oh

#

Use @Beta

frail glade
#

Except for the fact that I have to rewrite it again

heady birch
#

Sorry beta- did not mean to tag you

distant sun
#

haha niall for real xd

#

but it's spigot, what do you expect

sullen storm
#

the spigot too?

distant sun
#

but that means we will have access to hex colors on chat? 😮

#

It's a plugin for IIJ, Chryster

#

it already has the other options, except papi

sullen storm
#

what is this plugin ?

distant sun
#

Minecraft Development

frail glade
distant sun
#

what

sullen storm
distant sun
#

maybe without space, but type just Minecraft and it should show up

sullen storm
#

i dl it on the jetbrain website

topaz bay
#

there ya go, condition statements ez pz

prisma wave
#

nice

topaz bay
#

Ok, but thats kinda hot @prisma wave

#

baby syntax highlighting

#

Thank you IJ

pale shell
#

ok, i'm at the point of being hella bored due to lockdown. I made myself a joke api with one event only:

    private void onCrash(AntiCrashServer crashServer) {
        crashServer.setCancelled(true);
    }

Would it work 🤔

prisma wave
#

@topaz bay how did you do the syntax highlighting?

#

@pale shell setCancelled(false)

#

?

topaz bay
#

@prisma wave you can create custom languages in IntelliJ

pale shell
#

o

prisma wave
#

woah

#

That's cool

pale shell
#

better alex?

prisma wave
#

With a plugin?

topaz bay
#

No... its built in

pale shell
#

idk how on earth you even make the custom languages..

topaz bay
prisma wave
#

That's pretty cool

#

@pale shell lexing

topaz bay
#

and parsing

onyx loom
#

Odin Programming Language @pale shell

pale shell
#

lexing

onyx loom
#

why didnt u tell us?

prisma wave
#

You start with lexing tho

pale shell
#

?

topaz bay
#

I think I might add a transpiler

prisma wave
#

to what?

topaz bay
#

Make it transpile to kotlin

prisma wave
#

Kotlin?

#

yes

#

make them interoperable

topaz bay
#

ABSOLUTELY fucking not

prisma wave
#

why not

pale shell
#

I mean, to be i'm fucking amazing AF that sx made that language. i always see it as a super complex thing to make lol

prisma wave
#

It's not simple

topaz bay
#

Its not like its my first time making a language

prisma wave
#

but it's not as hard as you might imagine

topaz bay
#

korm does exist

#

lol

prisma wave
#

lex, parse, run

pale shell
#

i always see it as something real hard

prisma wave
#

have you ever tried?

topaz bay
#

I wouldnt say its particularly hard

pale shell
#

I guess once you made one it's easier for the second, then third etc.

topaz bay
#

Its just tedious

prisma wave
#

Precisely

topaz bay
#

Once you know what youre doing

pale shell
#

And no I've never ever thought of attempting it lol.

#

I'm too dumb to even start

prisma wave
#

Lexing and parsing are not particularly difficult tasks, just annoying

topaz bay
#

I'd say its difficult to do it right

prisma wave
#

Probably

topaz bay
#

But it in itself, isnt

prisma wave
#

The base idea is simple

topaz bay
#

You could say the same about everything

prisma wave
#

True

#

but splitting text into different symbols isn't particularly complex

#

or rather complicated

#

With that said I've never properly made a language before

#

tried antlr once and got bored so gave up

heady birch
#

Well I mean

#

you can make a language parsed

#

Making your own compiled language, well 😬

prisma wave
#

can't be that hard

#

I'll make a friga lexer soon

heady birch
#

Lol

topaz bay
#

Can you believe I only just added string concatenation

heady birch
#

Why aren't you using . for concatenation?

topaz bay
heady birch
#

Okay that's cool

#

But as I said

topaz bay
#

Why would I use a period?

heady birch
#

how do I reading your code know your not adding "Hello" + 5 together?

#

You should adopt the superior approach using a period (seen in some extremely mature programming languages, for example, PHP)

topaz bay
#

On what fucking planet

#

Absolutely not

#

Exact same behaviour as java

#

lol

prisma wave
#

But does it have string interp?

topaz bay
#

Not yet

#

:D

prisma wave
#

That should be priority number 1

topaz bay
#

Absolutely

heady birch
#

Lol, I was messing with you

ocean quartz
#

Can't think of a good way to implement the prefix and the command in the manager ugh

solemn monolith
#

If I want to create custom mob loot tables using .json files, would I then use gson to import it? Or what would I do to import that json information?

prisma wave
#

probably gson would do

#

you could either make a DTO, or deserialize & serialize the nms objects directly (could be error prone)

solemn monolith
#

okay, I've seen a video on deserialization and serialization, cool! Thanks!

#

Would you use gson though?

prisma wave
#

There's no reason not to use it

#

minecraft uses gson internally

#

so yeah probably

solemn monolith
#

okay awesome

ocean quartz
#

Hmm, should the @Prefix annotation take a char or a string?
Do people that make bots go with prefixes like: !!?

prisma wave
#

some people do I think

#

String is probably best

heady birch
#

String

#

Your turning into me

#

Have fun

#

Finish your last project before its too late

hot hull
#

You're*

ocean quartz
#

Now a fun situation, prefixes ! and !! using message.startsWith(prefix) will trigger only the first one, so it'll ignore if the characters are the same
Gotta think of something else

#

Eh i'll leave it like that xD

prisma wave
#

Regex?

ocean quartz
#

It'd still always trigger the first one no? As !! starts with !

prisma wave
#

try !{1}

#

that only matches exactly 1 !

ocean quartz
prisma wave
#

I mean with the startsWith

ocean quartz
#

Oh, let me try xD

#

Didn't do it either

hot hull
#

Get the first string, get each char, iterrate, get ! amount, ez claps

prisma wave
#

@ocean quartz I guess since you know it will be !!commandName you could try !{1}\w+ or something similar

#

but it's a bit of a hack

heady birch
#

You should think for two months about how you will design the solution

prisma wave
#

or possibly a lookahead

heady birch
#

then implement it and find out it misses something and repeat

ocean quartz
#

Got a work around it

signal tinsel
#

LOL

pale shell
#

@signal tinsel i see no difference?

signal tinsel
#

@pale shell you ferry drunk

pale shell
#

yes

#

i actually am

signal tinsel
#

Can't say I'm surprised

pale shell
#

i'm attempting to code drunk too

#

;D

#

i somehow have photoshop now idfk how that happened lmfao

signal tinsel
#

....

pale shell
#

i also have photoshop now so i can make drunk photo edits >:)

signal tinsel
#

Bhad idea

pale shell
#

nah!

#

only banned from 1 discord for "offensive memes"

floral basin
#

@signal tinsel some people could get confused by the left and right click, you should add a confirmation before it actually performs the action

#

And what's the difference of removing the punishment and unbanning? Unban will keep it on their record while removing will unban and clear it from their record?

signal tinsel
#

Hm

#

Yeah @floral basin that's exactly it

#

Removing it will remove its existence

floral basin
#

Right

#

So I'd suggest adding another gui

#

When you try to unban or remove

#

"Are you sure you want to unban/remove?"
"yes / no"

#

Cause if you think about it, when people get familiar with things they tend to just speed through it

#

And left and right clicking are very similar since they're right next to each other on the mouse and they both just require a click, so I'd imagine some people (like me) would get hella confused sometimes and accidentally remove the punishment when I just wanted to unban them lol

signal tinsel
#

Hm

#

Maybe

#

I could add a setting for it

floral basin
#

Yeah

signal tinsel
#

I have a settings GUI in the main GUI

floral basin
#

Yeah that'd be a nice feature

#

Do you have fully configurable messages? 😏

signal tinsel
#

Mostly

floral basin
#

🌟🌟🌟🌟🌟 from me already then

signal tinsel
#

Only the GUI isn't configurable

floral basin
#

Do you plan in adding that

signal tinsel
#

Maybe

#

Idk tho

floral basin
#

Idk if it's just me but when I have a plugin I like to fully customize it

signal tinsel
#

Yeah I get the point

floral basin
#

Like I'm talking change the prefix in chat and all the colors

#

Lol

signal tinsel
#

I mean that'd be acceptable

#

maybe colors

floral basin
#

Because no offense to devs but some developers choose the most horrid color scheme in the world

#

I like the red but for my instance I'd want it to be blue to match server colors

#

You know?

#

Or match the entire theme of the server where all staff things have the prefix Staff>

signal tinsel
#

Yeah

floral basin
#

I'm sure it's probably Hella work for you, but you could definitely make that plugin premium and make people love it if you have all that

signal tinsel
#

Red matches the best with the plugins purpose

#

So I just chose red

#

But I might add it

#

Also its already a premium plugin and released into the wild

#

Idk who or why

floral basin
#

I agree with that it's just people like to match things because when everything matches and follows a theme

#

It makes everything feel more clean, organised, and professional

#

Oh sweet

signal tinsel
#

Yeah

remote goblet
#

because it's on Songoda marketplace

signal tinsel
#

@remote goblet so because mods don't like songoda they remove it?

#

That's kinda odd

ocean quartz
#

No

remote goblet
#

it should be if its on there tho :)

floral basin
#

Spigot is ass

#

Change my mind

remote goblet
#

Songoda is worse

ocean quartz
#

It was removed for now because showcase is getting very advertisy

signal tinsel
#

Ah

floral basin
#

Idk anything about songoda but I despise spigot

signal tinsel
#

Btw I actually have better experiences with Songoda than Spigot rn

remote goblet
#

I can't say the same

floral basin
#

@ocean quartz its only advertisy if you view it that way

signal tinsel
#

@ocean quartz I might make an imgur album for it sometime

#

I can post that right?

#

As long as its not the direct link

floral basin
#

People post plugins there hoping to get reviews on how the presentation is, the idea, and the entire plugin in general

signal tinsel
#

@remote goblet explain ur songoda hate

remote goblet
#

Matt will get in his feelings

#

so no

ocean quartz
#

I know i know, was just explaining why it was removed

floral basin
#

Because to be honest with you nobody really gets any benefit of gain from posting their spigot link in showcase lol

signal tinsel
#

Ori, matt doesn't care if you say why you dislike songoda

floral basin
#

Half the people just click the +1 and -1 because they see a bunch of others who did

remote goblet
#

Considering he's the marketplace manager

#

id say he probably does

ocean quartz
#

Nah, you can say whatever

signal tinsel
#

If you can't explain why you hate songoda, don't say you hate it

#

@floral basin lol ye

#

I never do that bullshit

remote goblet
#

Want me to show you why i hate songoda lmao

floral basin
#

Ya

remote goblet
#

Admins won't like it and i might get murdered but if you're consistent

old wyvern
#

O.o

floral basin
#

Lol the second you said that clip went offline

remote goblet
#

I already explained to matt some of the reasons why but sure lets throw in the rest

signal tinsel
#

You can dm me if you want

#

That's old shit

#

Lol

ocean quartz
#

No need to post images like that wtf

floral basin
#

Yikes

old wyvern
#

what the

remote goblet
#

I said you guys won't like it

old wyvern
#

Who is brianna

#

xD

remote goblet
#

owner of songoda

frail glade
#

I'd say this is pretty off-topic.

remote goblet
#

they asked for it sooo

frail glade
#

We don't need to discuss stuff like that here.

remote goblet
#

don't blame me lmao

signal tinsel
#

That's not proof

#

That's a screenshot of you claiming things

floral basin
#

Anyways I still just despise spigot cause of MD5

signal tinsel
#

What'd md5 do

floral basin
#

Did my message just get deleted

#

Bruh

#

Screw you baas

#

He's a meanie head

#

There

signal tinsel
#

What'd he do

floral basin
#

He just has a shitty attitude

#

He's in it for the money and nothing else

#

Also the spigot jar is just so far off from optimized but that's another thing

remote goblet
#

Make your own then

old wyvern
#

wdym hes in it for the money?

floral basin
#

I ain't gonna make my own

#

No thx

eager fern
#

take this into dms please

#

Not server appropriate

remote goblet
#

in other news

dry sage
#

@hot hull ive been using IJ for a few days now, I like this a lot better

remote goblet
#

lemme load up Island.java

harsh spear
#

how do i see all the spigot plugins on one page\

signal tinsel
#

not

harsh spear
#

Not what

old wyvern
#

cannot

harsh spear
#

do u no how to make a sentence

#

so your saying that there is no way i can see a list of plugins on there website

old wyvern
#

You can, but its paginated

harsh spear
#

What that mean

signal tinsel
#

I no no how to make a sentence

#

It means there's multiple pages

#

Long story short if they put all plugins onto 1 page the server and your computer would crash

harsh spear
#

O ok may u please send me a link

#

im sorry for being rude sir

signal tinsel
#

Its at the bottom of the plugins page

harsh spear
#

long day frustrated

#

Thank you kindly

ocean quartz
#

Time for the most wonderful part, the arguments

obtuse gale
#

oooo

signal tinsel
#

Nice

#

Hm I need an idea for a new plugin

#

probably a free plugin

ocean quartz
#

Keep find unnecessary code in my framework as I look at it to make this one lol

#

Literally a block of 20 lines that could probably be removed

signal tinsel
#

Lol

#

Send the code

signal tinsel
#

lul

pale shell
#

@signal tinsel you need plugin idea?

ocean quartz
#

I solved that dumb code block i had with 3 lines..

obtuse gale
#

lol I just realised I cant even use paypal webhooks since I dont have a business account

distant sun
#

F

pale shell
#

How do people make "basic" coding languages? I wanna make a basic one so I can just learn how people do it

obtuse gale
#

Woahhh, how the hell did you guys add that like hint thing for when someone joins!?

#

When I joined it gave me a list of things I can check out

deft ivy
#

how would someone go about creating an image uploading server (like funnycube uses) or the custom hastebin upload server type deal?

#

(ping me if answer)

pallid gale
#

I use sharex

deft ivy
#

oh?

#

do you use the screencapture from them as well? i'm trying to use snagit for that as well

#

so same server but using different capturer

pallid gale
#

ShareX does all the capturing and uploading

obtuse gale
#

Hey Funnycube how'd you make it so when someone joins a screen pops up and has like a list of what you can join and stuff

#

never seen that before, its crazy

pallid gale
#

We've got access cause we're a public server

#

its only new

obtuse gale
#

Public server? bruhh, thats so cool

#

Do you have to have like x amount of members for it or?

pallid gale
#

Verified/Partnered/Discord Dev have access to it

obtuse gale
#

Ahhh, I was thinking about buying Discord Dev as well, needed some of their freedom to make my bots & server more official

pale shell
#

@obtuse gale buy discord dev? You mean to sell games?

#

@pallid gale how did you setup your sharex?

dry sage
pallid gale
#

What do you mean how did I @pale shell

#

I just set up the sftp upload

obtuse gale
#

You cant sell games on Discord anymore lol

#

Which is an L

pale shell
#

Idk how everyone does it

#

I bought a domain and a Web server and I can't work out how to do it. Also how do you host your server @pallid gale

pallid gale
#

its just a ubuntu server

dry sage
#

what are you trying to do untouched?

pale shell
#

I want a custom domain thing like everyone else has lol

#

Funny has one

dry sage
#

you mean for a minecraft server?

pale shell
#

Nah

#

For image hosting

#

Like the sharex shit

deft ivy
#

@dry sage would that work with snagit do you think?

dry sage
#

@pale shell so you want to have your own self-hosted version of what ShareX does by quick access links? sorry for my confusion lol

pale shell
dry sage
#

@deft ivy Sorry im confused mate, you want to have a server that you can upload pictures to? like a pastebin but for pictures?

deft ivy
#

server i can upload pictures to using TechSmith's Snagit tool

dry sage
pale shell
#

I got a domain name

#

Domain name is sorted

#

I just need the hosting side sorted

dry sage
#

Well VPS's are cheap. $3.50 (USD) ish on OVH.com

#

so you just need a website to host pictures?

deft ivy
#

exactly

#

i have a vps already

#

and website running pterodactyl

pale shell
#

That's a portal not a website

deft ivy
#

well still

#

uses nginx

pale shell
#

Maybe

dry sage
#

So you want to run pterodactyl and a website on the same VPS?

deft ivy
#

sure?

dry sage
#

pterodactyl and your image site

deft ivy
#

website was coming later on but i wanted to get the image site setup first

dry sage
#

Bear with me, I don't have a linux VM open in front of me so im going off of memory

okay so inside of your NGINX www-sites-enabled config.... you should be able to open a different port and have that port link to a different website. I can look for a piece of software that can host your image server but I'm not to sure about the config for your NGINX or Apache on your VPS

deft ivy
#

i can probably handle the config, all i need is the software to hold the server so i can ftp transfer it to it

dry sage
#

but you might not even need docker. I would prefer it bc i love docker

deft ivy
#

docker is already in use by pterodactyl so should be fine

dry sage
#

okay so try chevereto but bind a different port for your image svr

deft ivy
#

would you prefer chevereto over sharex?

#

i notice that sharex is the favorite around here lol

dry sage
#

does ShareX have a server?

#

ive always known them for their software on windows

deft ivy
#

yeah its an all in one solution i think

#

capture upload and host

dry sage
#

what do ya know

#

not docker though

#

I would try and dockerize everything you can

deft ivy
#

yeah?

dry sage
#

this is a little out of my league though. So i'm not too sure exactly

deft ivy
#

hmm alright

topaz bay
#

I'm only slowly going insane

topaz bay
#

Wow look at that, a fully functioning program

#

And now for the transpiler

hot hull
#

Imagine having to be 21 to drink :kek:

tame jolt
#

^ xD

topaz bay
#

You have to be 21 to drink in public

#

Your parents are able to give you permission to drink in your home at any age.

hot hull
#

Here it's 18

topaz bay
#

I am aware

#

Its 18 like.... every else

lunar cypress
#

16 here lol

heady birch
#

😕

#

Nice work Sxtanna

floral basin
#

yeah in america its 21 or on private property with parental supervision

quiet depot
#

i swear to god if some poor little misinformed developer posts saying “gradle confusing” im gon rage

hot hull
#

And I quote PiggyPiglet - "gradle confusing"

heady birch
#

piggy fancy helping me a little?

distant sun
#

ManaDrop sounds cool 😮

lunar cypress
#

Gradle is complex and confusing

#

99% of its users copy their build configurations from somewhere and have a hard time doing own stuff independently

#

Including myself

distant sun
#

for real haha

hot hull
#

Gaby

distant sun
#

Frosty

hot hull
#

You got plans on adding those delays already or am I seriously gonna have to put a lil effort into it

rotund egret
#

I started using blossom with gradle, and it's been so nice

distant sun
#

I will look into it this weekend, I want to make it not create a new runnable every time and such

rotund egret
#

I don't have to specify versions in two spots anymore

distant sun
#

I might as well change everything xd

hot hull
#

I mean yea just have on runnable starting from startup

distant sun
#

what

prisma wave
#

@topaz bay what is Maper

quiet depot
#

99% of its users copy their build configurations from somewhere and have a hard time doing own stuff independently
@lunar cypress this applies to literally everything lmao. People copy and paste, or they learn the system, and once you learn the system, I promise gradle will seem less confusing than maven. Side note, you say 99% of gradle users copy and paste. 100% of maven users copy and paste. I’d be extremely surprised if people actually wrote their poms from start to finish by hand.

#

Prove me wrong, type out the xml header thing for a pom that you’d see at the top from memory

signal tinsel
#

I copy paste my pom from 1 plugin to another

#

But I did create it mostly myself

lunar cypress
#

@lunar cypress this applies to literally everything lmao. People copy and paste, or they learn the system, and once you learn the system, I promise gradle will seem less confusing than maven. Side note, you say 99% of gradle users copy and paste. 100% of maven users copy and paste. I’d be extremely surprised if people actually wrote their poms from start to finish by hand.
@quiet depot you missed the point. I am not saying that maven is any better

#

Yes, people copy for everything, but they also learn. And how many people actually learn the gradle dsl, not to mention know what exactly they're doing in their build scripts?

quiet depot
#

I’d hope 99% of that 99%

#

just takes time

lunar cypress
#

Build tools are for some reason some of the most complex applications when they should not be

#

Yeah but this is not an argument lol. You can't just move the entire responsibility to the user. It should be designed in a simple way

quiet depot
#

you’re right, but in my honest opinion, gradle is fairly simple

lunar cypress
#

Look at some of the build tools for other languages. Cargo, Leiningen, ...
Those are simple, easy and great at their job

quiet depot
#

maybe I’m inexperienced, idk

#

That may be the problem, I don’t have experience with other build tos

#

tools*

lunar cypress
#

The problem is just that build tools are very important, they're integral to a developer's workflow

#

Optimally, they should be designed in a simple way so that beginners don't have a hard time getting into it and need to copy & paste everything and you still have more advanced options

hot hull
#

How about we all just stop using maven and gradle, problem solved :))

heady birch
#

intellij artifacts

lunar cypress
#

Well that sucks too, but for other reasons

signal tinsel
#

Nice, I added a debug command to my chat plugin

#

It generates a hastebin link

#

With the configuration and a list of all required placeholderapi expansions (and whether they are installed or not)

topaz bay
#

@prisma wave I just realized I spelled that word wrong

#

And now I can't use it

prisma wave
#

Maper

#

I'm ashamed

topaz bay
#

It was very late

frigid badge
#

lmao

topaz bay
#

Gradle is not even slightly complex

prisma wave
#

It's complex but not complicated

topaz bay
#

please kill me

prisma wave
#

Can't be that hard

hot hull
#

This is a christian server, watch your profanity!!

topaz bay
#

OH YOU THINK SO?!?!?!

prisma wave
#

Recursion or something

topaz bay
#

LMFAO

#

I hate you.

prisma wave
#

A reasonable opinion

#

but I am seriousl

#

just recursion the parsing or something

topaz bay
#

Alex.

#

I know how to do it

#

I've done it before

#

That doesn't make it any less annoying

#

I also can't fucking see right now

#

I think Im dehydrated

#

My vision is blurry

prisma wave
#

Drink more water then

#

Easy

topaz bay
#

choke

prisma wave
#

I know something else that's easy

#

Using ANTLR

steel heart
#

no whats a line

#

Okay bm its ok to not like semi colons but it gives readability in my opinion

prisma wave
#

I don't dislike then

#

them*

#

but saying that no semicolons makes "scripting" code is stupid

prisma wave
topaz bay
#

@prisma wave ?

prisma wave
#

parsing works

#

at its most basic anyway

steel heart
#

but saying that no semicolons makes "scripting" code isstupid
True but thing is I am so used to it so I am mostly for it because of the personal preference and I like to go random on these types of arguments

topaz bay
#

semicolons are stupid.

steel heart
#

Naaaa

ocean quartz
#

You get used to it, like in a few weeks of Kotlin i was so used that i'd forget to do it in java

remote goblet
#

I hate it when people don't use semicolons in JS

#

although it's not required, is still lowkey annoying

steel heart
#

Haha yeah

#

Highkey

ocean quartz
#

True yeah

remote goblet
#

i'm jealous of people who have Webstorm

ocean quartz
remote goblet
#

Shut up

#

Shut up

#

i'm jealous >:(

jovial warren
#

anyone here know why some YAML configurations use |- instead of | (by specification) for multilines?

prisma wave
ocean quartz
#

As long as it works ;p

#
@Default
public void def(final String argument) {
    System.out.println("This is being printed on the default method, arg - " + argument);
}

@SubCommand("testing")
public void testingCommand(final String argument) {
    System.out.println("This is being printed on the sub command method, arg - " + argument);
}
#

Would it make sense to always pass down the User that typed the command? Like I do with the command sender?

public void command(final User user, final String argument)

Or maybe the entire message? Hmm

remote goblet
#

I just finished my CommandHandler

ocean quartz
#

Nice! How does it look like?

remote goblet
#

I was using JDA Utilities previously

#

and oh boi

prisma wave
#

@ocean quartz I think having the user would be a nice option but you shouldn't need it

#

Quite nice @remote goblet

#

You should add things like the User and the Channel to the execute method I think

remote goblet
#

Yeah i might make a new event that's exactly like that includes stuff in there

ocean quartz
#

@prisma wave Hmm, to be optional then I might do like this:

public void command(final String argument) {
    getMessage();
}

That way the sent message is always available, with the channel, user, etc

prisma wave
#

That's an option. Are you not using reflection? You could just pass the User if there's a user parameter

ocean quartz
#

Yeah but for example if they want you to introduce a user as an argument, putting one user will get the current one, it'd just create a bit of confusion imo

prisma wave
#

Oh yeah good point

#

I guess you could use an annotation but that would probably get messy

ocean quartz
#

Yeah, I might just add it to the abstract class when ever the command is executed

heady birch
#

In real life you don't listen for an event

#

why do we call them event listeners

#

maybe we could call them EventAttenders

#

Maybe the event term is flawed?

#

When in real life, we visit the event, why in software does the event visit us?

ocean quartz
#

I guess event waiter would make the most sense? Since it's waiting for the event to trigger it

topaz bay
#

@heady birch youre using the wrong definition of event

#

**Event: **a thing that happens, especially one of importance.

#

Events happen around us all the time, and we are reactive to them.

topaz bay
topaz bay
#

Ok... but thats kinda fire

pale shell
#

Is that odin?

topaz bay
#

No, its some random other language I started working on @pale shell

pale shell
#

omfg, how many?!

#

You make it look easy lol

ocean quartz
#

That is pretty cool though ;o

pale shell
#

Yeah! The push reminds me of github

topaz bay
#

omg...

#

Also, that was sarcasm.... It is Odin

ocean quartz
#

Kinda wanna join the custom programming language thing, but i shouldn't xD

topaz bay
#

@ocean quartz meh

#

its kinda fun

ocean quartz
#

Seems fun yeah i kinda wanna give it a shot

heady birch
#

@hot hull Warps

#

SafetyCheck

hot hull
heady birch
#

SafetyCheck extends AbstractCheck implements Check

#

public SafetyCheck(SafetyCheckingStrategy strategy) {
}

hot hull
#

What?

heady birch
#

CEO of enterprise

lunar cypress
#

terrible

heady birch
#

Yes boss, this man here

#

He does no agree with our enterprise apprach

stoic sail
#

just found out on npmjs' website if you click the heart in the top left the little message changes - I found this xD

prisma wave
#

@topaz bay that's pretty cool

heady birch
#

It looks like newer java versions are starting to copy kotlin features

#

namely the enhanced switch and automatic casting

prisma wave
#

the Java casting sucks though

#

Scope pollution

lunar cypress
#

automatic casting?

#

if you mean smart casts, java doesn't have that and won't get it

#

also switch expressions are not like when

prisma wave
#

I mean pattern matching with instanceof

#

I think that's what Niall means

lunar cypress
#

I was referring to niall

#

pattern matching and smart casts are not the same

#

or similar, even

hot hull
#

How would 1 go about compacting 3 for loops

         for (int x = (int) location.getX() - 1; x < location.getX() + 1; x++) {
            for (int y = (int) location.getY() - 1; y < location.getY() + 2; y++) {
                for (int z = (int) location.getZ() - 1; z < location.getZ() + 1; z++) {
                    final Location l = new Location(location.getWorld(), x, y, z);
                    final Block block = location.getWorld().getBlockAt(l);

                    for (Material mat : blacklisted) {
                        if (block.getType() == mat) {
                            safe = false;
                        }
                    }
                }
            }
        }
lunar cypress
#

1 wouldn't really

heady birch
#

automatic castings just what i called it, seems like a suitable name but yeah it was Pattern matching i was refering to

lunar cypress
#

Although you could make the innermost for loop prettier

hot hull
#

how so Johny?

#

using .anyMatch?

lunar cypress
#

well now that I think about it

#

couldn't you break; if safe = false?

#

the entire thing, i mean

hot hull
#

probably

lunar cypress
#

also why are you casting to int

#

either use getBlockX or just use double directly

#

btw, Location has a method getBlock()

#

and World has a method getBlockAt(int, int, int)

hot hull
#

It's not bukkit's location

heady birch
#

What is it

hot hull
#

WarpLocation, not relevant tho

heady birch
#

Hm

#

If it's your plugin you could makeWarpLocation extend Location

hot hull
#

Who's plugin would it be thonking

pale shell
#

1.15 seems to be the poorly made version of spigot 😬 pure issues since trying to update to it

hot hull
#

Yea cause you refuse to change your shit lol

pale shell
#

I mean, Its the enchants causing issues

#

they changed how it worked completely

prisma wave
#

for the better

#

Magic numbers bad namespaced keys good

pale shell
#

getBukkit down? edit: found it in my cache ;D edit 2: gradle to the rescue

prisma wave
#

use buildtools