#help-development

1 messages ยท Page 758 of 1

echo basalt
#

it's a problem similar enough to concurrency except synchronized doesn't exist

noble flume
#

Yea. So, multipaper recommends plugins with SQL data

#

Right?

#

But theres no guarentee it;d work

echo basalt
#

Yeah, that's so plugins can also share data with other instances of themselves

#

so if I leave on server A, that saves to the same database that server B is using

echo basalt
#

never used it

noble flume
#

I've heard its super unstable

orchid gazelle
#

You can expect a lot of plugins to straight up not work on MultiPaper

#

stuff like WorldEdit might not, because yeah it would need to message other slaves for cross-server-region-editing

noble flume
#

as well as a bunch of other forks from different plugins

#

essx

#

tab

#

etc

orchid gazelle
#

Oh okay

noble flume
#

I bought the plugin

#

And I'm just curious

orchid gazelle
#

I don't know that plugin

orchid gazelle
#

Sorry im not logged in with spigot on my smartphone

noble flume
#

idk

#

winter, summer, etc

slender elbow
#

Fortnite seasons

wet breach
#

easiest solution is to start removing stuff from the server that you don't need

#

like entities you are not making use of etc

river oracle
#

Minestom

#

Only add as little as possible

grand flint
#

What is this about? Like does spigot have something for it

slender elbow
#

Folia :aware:

river oracle
#

Genuinely curious

slender elbow
#

I mean

#

they're completely different software

river oracle
#

Though folia and minestom are very different

#

They achieve different goals

slender elbow
#

very

river oracle
#

Ig depends what person wants you could prob go crazy with minestom

#

How many did you guys get in with folia during the test

slender elbow
#

1k

river oracle
#

Dayumm

#

Makes me wonder how much minestom could handle if you threw everything you could at it

#

Considering the server doesn't do much at all base

slender elbow
#

if you keep it at a minimum then, uh, a lot lol

#

but like yeah not doing anything is cheaper than doing everything

wet breach
#

Disappointing that 1k was the benchmark

slender elbow
#

they just target different things

river oracle
#

After I'm done with my spigot PR I might try to do some funky stuff with minestom

wet breach
#

One day i will release an implementation for load balancing

river oracle
#

Impl for what

wet breach
#

For load balancing

river oracle
#

For spigot?

#

Like what platform is what I meant

wet breach
#

Well it wouldnt be spigot nor could it

slender elbow
torn oyster
#

What is the event for a cactus being destroyed from a block being placed next to it

floral drum
#

Is it blockphysicsevent or some shit?

torn oyster
kind hatch
#

Cause if it was, 1K players online on one server sounds nuts.

#

That CPU must have gone through hell.

slender elbow
#

single server single CPU, yes

floral drum
#

we just need a cpu with high clock speed + super high core count

slender elbow
#

^ blog post with all the deets

floral drum
#

cmon ryzen make a 32 core cpu with the same clocks

kind hatch
#

Damn, you did it with the 6.1 kernel? Someone should rerun it with the 6.2 kernel as there was some AMD CPU bug in 6.1.

floral drum
#

I believe in you ryzen!

kind hatch
#

Ok, there it is. 10Gbps. Was also wondering how it was managing 1K connections.

floral drum
#

gotta love system stuttering

floral drum
#

well actually on later versions... nvm maybe not

slender elbow
#

the major bottleneck was initially not giving enough threads for netty

#

so everyone joining at the same time was fun in that aspect

kind hatch
#

Hmm, any plans to do another large scale test in the future?

#

You could probably get more performance out of a threadripper.

#

Or at the very least more cores.

toxic lava
#

Hey, is there any way to change the color of the players' nametag above their head?

thin iris
#

textdisplay

slender elbow
wet breach
#

But it depends how much data is going through at any given time on those connections

somber night
#

i got the asset, pack.png, pack.mcmeta
in assets i got 2 folders, one with the textures, and one called "custom"
within "custom" there's another nmed "sound" and the .json file
within "sound" therer are the 2 custom sounds

hybrid turret
#

I'm a bit confused, the commands a player does not have permission to execute won't be shown to them/the server will say "unknown command"?

#

What is the permission message for then??

eternal oxide
#

unknown command is when a command does not exist. the command permission message is what is sent when the command DOES exist but you don't have the permission

hybrid turret
#

yeah

#

the command exists

#

but when i remove op permissions only the commands that don't have permissions assigned to them in the plugin.yml is shown

#

when i op myself again, they're all there

eternal oxide
#

you have to grant permissions

#

op gets all default permissions

hybrid turret
#

i want to test the state of not having permissions lol

#

op gets * permissions

#

if i op myself i have all permissions.

eternal oxide
#

then you need a permission plugin

hybrid turret
#

nO

eternal oxide
#
  • is not a permission
#

/* is not a permission

hybrid turret
#

yes it is. i've been doing this for quite a long time. i just changed some things

#

before i checked for permission in the command and sent a permission message

eternal oxide
#

* is not a permission that is recognised by Spigot/Bukkit

hybrid turret
#

now i have the permission added in the plugin.yml

#

why does it work then?

eternal oxide
#

what permission plugin?

hybrid turret
#

idk if LuckPerms parses it or sum but it does work

eternal oxide
#

yes LP parses * as a wildcard

hybrid turret
#

anyway, that's not really the problem. The problem is:
The command exists 100%, if i have the needed permission, it's there, if not it's now shown

eternal oxide
#

thats teh correct behavior

hybrid turret
#

why tho

#

why does the permission message exist then?

eternal oxide
#

if you don;t have the permission it's not sent in teh command tab packet

#

you are confusing op and permissions

#

teh command message works just fine

hybrid turret
#

i tested it with op, i tested it with permissions.

#

is it bc i set the permissionMessage in the onEnable?? That wouldn't make sense but it's the only thing i can think of

eternal oxide
#

possibly

#

set it in your plugin.yml and test

#

if it works in your plugin.yml and not when you set manually, test it without LP

#

its probably LP reading the permissions before you set teh command message

#

as LP uses reflection to set/process the Permissible object

hybrid turret
#

oh can i set the load order?

#

iirc lp is loaded before my plugin

eternal oxide
#

not really

hybrid turret
#

damn it

eternal oxide
#

lp shoudl load before your plugin

hybrid turret
#

oh okay

eternal oxide
#

what you could do...

hybrid turret
#

same thing when i set it in plugin.yml :/

eternal oxide
#

set your command message in onLoad not in onEnable

hybrid turret
#

hmm that's an idea ig

eternal oxide
#

if you set teh message in your plugin.yml and it still didn;t work then setting in onLoad will not work either

#

from the sounds of it you have an LP issue

hybrid turret
#

b r u h, shit plugin then xD

#

imma unload luckperms and try again

vast raven
#

mhhh performant

hybrid turret
#

damn, luckperms wasn't the issue either

vast raven
vast raven
# hybrid turret -->

So you're problem is the presence of an existing command that doesn't work and says unknown command, isn't it?

hybrid turret
#

yesnt

#

everything works fine, as long as i have the permission to execute the command

#

once i take the permission away it's like the command is removed

#

and that doesn't make sense

hybrid turret
#

wym by that?

#

it's a command in my plugin, yes

vast raven
#

Ok, send the plugin.yml

hybrid turret
#

i mean it does the same with minecraft commands

#

i imagine it's intended

#

but it's dumb

vast raven
#

?paste

undone axleBOT
hybrid turret
#

eeh

#

all commands are made the same way

#
  heal:
    aliases: [ ]
    description: "Heal yourself and other Players."
    usage: "/<label> [Player]"
    permission: "serversystem.heal"
vast raven
#

send the whole file

hybrid turret
#

why do u need the whole file?

vast raven
hybrid turret
#

mh fine

vast raven
#

jez

#

which is the command you are having issues with?

hybrid turret
#

all of em ig? lol

#

even if i add the permission-message in there it does the same thing

vast raven
#

btw why would you put an empty array of aliases?

hybrid turret
#

layout reasons idk

#

copy-paste

#

does it matter tho?

vast raven
#

I would never do it

#

Btw

hybrid turret
#

they are all written the same (except the last to, forgot the permission)

vast raven
#

Did you registered them?

hybrid turret
#

yes.

vast raven
#

And does the plugin starts too?

hybrid turret
#

yes.

#

as i said, if i have the permission, it works fine

vast raven
#

Any exceptions?

hybrid turret
#

nope

#

none

vast raven
#

so you're trying to change the insufficient permission message?

hybrid turret
#

yes

vast raven
#

Ok

#

Try this:

permissions.
the.permission:
message: "you don't have the required permissions bla bla"

hybrid turret
#

before i tested it in the command with

if (!sender.hasPermission(<permission here>)) {
  sender.sendMessage(<permission message here>);
  return true;
}

Now a couple weeks ago, I asked here on the dc if I can remove those checks and just add the permission: "<permission>" and I set the permission Message onEnable bc of colors

vast raven
#

Idk how to use code format on discord mobile sorry ๐Ÿฅฒ

hybrid turret
#

backtick

#

same as on pc

#

```
code
```

vast raven
#

try mine

hybrid turret
#

i mean that won't make sense really, would it?

eternal oxide
#

Seems you are correct. Somthign changed. You no longer receive the usage message when you don;t have the permission

hybrid turret
#

bc i set the permission custom

vast raven
hybrid turret
vast raven
#

If you still want to use the plugin.yml approach try that

hybrid turret
#

and the permission message is always the same

#

which is set onEnable

eternal oxide
#

you don;t need a permission check at all, just set a command executor

hybrid turret
#

huh?

vast raven
hybrid turret
#

that sounds unneccesarily complicated

eternal oxide
#

so long as each command has it's own executor you don;t need any permission check

hybrid turret
#

yeah i know, if you add the permission in the plugin.yml

eternal oxide
#

if you are using a generic onCommand in your plugins main class you do

hybrid turret
#

aint no way ppl do that

eternal oxide
#

the correct way is each command has its own executor

vast raven
#

try my snippet

hybrid turret
#

i mean i could just change it back to the permission check but yeah mh idk if i want to lol

vast raven
#

btw I heard folia has a constructor in the main plugin and not a onEnable method

hybrid turret
#

it's just stupid, that it was changed

eternal oxide
#

I guess it changed when they added updateCommands()

vast raven
hybrid turret
#

i mean fine

eternal oxide
#

if you add the permission in the plugin.yml on the command your onCommand will never be called if they don;t have the permission

#

thats how its always worked

eternal oxide
#

the only thing that has changed is the usage message is no longer sent

vast raven
#

I've heard you can change its permission message

hybrid turret
#

there is no message key ๐Ÿ’€

eternal oxide
#

usage is only sent if you error in the onCommand or return false

hybrid turret
#

is it a bug tho?

vast raven
#

ok just use a commandExecutor

#

forget about that

hybrid turret
#

i- what

vast raven
#

if it is actually that bad you can still use a command library such as acf

eternal oxide
#

if you have no permission it treats you as not having teh command so you get no help on it either

hybrid turret
#

i mean ig i'll just set it back to the permission check

vast raven
eternal oxide
#

the way it is now is correct behavior

hybrid turret
#

which is kinda stupid :(

eternal oxide
#

it's working perfectly

vast raven
hybrid turret
#

i want clean messages and not a pure red message like this

vast raven
#

and each subclasses has an own permission

eternal oxide
#

that red message is correct

hybrid turret
#

yeah but not what i want lmao

#

fck spigot ngl ๐Ÿ’€

eternal oxide
#

if you don;t have the permission you shoudl not get any informational messages on that command

#

if you fake it then players can discover commands they should not know about

hybrid turret
#

i mean they can discover it, they will just receive the permission message every time

eternal oxide
#

until they find it, use a hacked client and access the command anyway

hybrid turret
#

so also, i'm guessing

command.setPermissionMessage(<permission message>) is just useless now?

eternal oxide
#

exploits exist

hybrid turret
#

i mean i can imagine that a hacked client will find all the commands anyway, no?

#

or is this prevented by not even sending the info that the command exists

eternal oxide
#

unknown

#

well yes

#

no permission these days means the client is never informed of the command

hybrid turret
#

hmm i gues fine then, for security reasons i will just remove the permission message :(

vast raven
eternal oxide
#

know like?

vast raven
#

it is very clear actually but I can't achieve my result sometimes due wrong raytrace results

#

such as very close players

eternal oxide
#

um rayTraceBlocks doesn;t detect players

vast raven
#

yep but I use it to create a NametagHider plugin

#

If it finds a block midway it doesn't show the player tagname

eternal oxide
#

you'd need to explain your issue

solar mortar
#

Anyone know why I canโ€™t import the hickaricp library? I added it to my Pom, and reloaded and clean my project and still wonโ€™t import

solar mortar
#

Developing

vast raven
solar mortar
#

And yes I have

#

Wait what

undone axleBOT
solar mortar
#

What repository?

vast raven
#

I don't remember actually

solar mortar
#

Hmm

#

Iโ€™m lost to why this isnโ€™t loading

upper hazel
#

i try save inventory in string format but some reason items not loads

#

i was get empty inventory

pseudo hazel
#

and the data?

upper hazel
#

data not null

#

inventory too

#

but items in data

#

not exists

#

i mean

#

exists but not loaded

#

I had to come up with my own serialization

pseudo hazel
#

which is what

#

like what does data look like

lost matrix
lost matrix
# upper hazel i was get empty inventory

Write inventory to FileConfig:

    FileConfiguration configuration = ...;
    Inventory inventory = ...;
    List<ItemStack> items = Arrays.asList(inventory.getContents());
    configuration.set("some.items", items);

Load inventory from FileConfig:

    FileConfiguration configuration = ...;
    Inventory inventory = ...;
    List<ItemStack> items = (List<ItemStack>) configuration.getList("some.items");
    inventory.setContents(items.toArray(new ItemStack[0]));
molten hearth
#

Does anyone know what the client expects as reply to the handshake here

lost matrix
#

I think handshake just tells the server to get into login state for this connection

wet breach
molten hearth
lost matrix
#

Just an TCP ACK

wet breach
#

It only should be an ack

#

What smile said

molten hearth
#

Alright ill figure out how to do dat tx

wet breach
#

It should be automatic

lost matrix
#

I mean... yeah

#

What frostalf said

molten hearth
#

Yeah well that's what I thought

wet breach
#

Server doesnt do anything until step 3 lol

molten hearth
#

But idk even in the status handshake apparently the client didn't expect anything yet I found out it in fact wanted something

wet breach
#

Well handshake should be tcp protocol level. If ack comes back client should set state to 2 and proceed

#

It wouldnt make sense to implement a handshake at packet level unless you wanted to tell the client something. But server doesnt say anything until client sends step 2 and step 3 is server response

molten hearth
#

I mean the handshake has a custom packet so I don't see why not implement it on a protocol level

#

Yeah well i need to implement their protocol lol

#

atm I implemented the pinging and now im implementign the login sequence

wet breach
molten hearth
#

where does one find the vanilla jar src?

wet breach
#

Mojang has their auth lib on their github as open source

molten hearth
#

oh tx

#

yeah but

#

the vanilla client seems to hang at handshake.sendPacket for me

#

it seems to be waiting for something

#

im quite sure node automatically sends acks but ill have a look

lost matrix
#

Are you implementing a client or a server?

molten hearth
#

yeah I mean your client seems to follow a similar login sequence anyway

#

it should be 1) Send Handshake, 2) Send Login Start, then continue

#

but atm im receiving 1) Send Handshake, ๐Ÿ˜ด

quaint mantle
#

Mobile coding? Bruh......

molten hearth
#

yeah I mean I have the login packet decoded

#

I can detect the client changed states to login

#

then the client just goes to sleep

#

lol

lost matrix
#

Then you dont properly end the TCP conv

molten hearth
#

but then I just disconnect the client

#

lol

lost matrix
#

Usually this happens automatically *If you properly use the socket or whichever lib you are using

molten hearth
#

that doesnt seem like an epic gamer move

#

hmm

#

ill have a look

#

yeah no im pretty sure the ack is sent

lost matrix
#

Are you sure the next packet isnt sent by the client? Maybe its a problem further down the chain.

molten hearth
#

yeah i mean not even the wireshark dump is showing any further communication

#

o wait

#

im just dumb hold up

#

i sent the wrong dump

#

LOL

#

o shit theres quite a bit of shit going on

#

wait what now im receiving the packet

#

okay then

#

thanks i guess ๐Ÿ˜ญ

#

or am I

#

yeah well its a bit hard when the minecraft client shits itself one second

#

yeah no okay it works now

#

i guess i was gettign scuffed results

#

thankz

#

lol ty

#

I need blessing to get through this ๐Ÿ’ฏ

errant narwhal
#

hi i want to create the AttributeInstance to put it with attributeBase to my AttributeMap but i don't know what is consumer<AttributeInstance> somebody help

#

i am using nms mojang remapped 1.20.1

halcyon hemlock
#

What the hell is that light mode editor

full laurel
#

Eclipse

halcyon hemlock
halcyon hemlock
# full laurel Eclipse

I'd recommend using intellij unless you are using eclipse because of preference or something

full laurel
molten hearth
eternal oxide
errant narwhal
eternal oxide
#

a lambda

shadow night
#

How do lambdas work

#

In js lambdas are just the same as making a function, because function is a type there

eternal oxide
#

a lambda is an anonymous function

shadow night
#

And that means

eternal oxide
shadow night
#

void lambda

wet breach
#

first answer breaks it down really well

lilac dagger
#

what i didn't understood yet is how java can treat lambda methods as objects

wet breach
#

() -> 2 for example makes sense to treat as an object because it returns a primitive or integer if you want it in object form. Also can be typed as () -> {return 2;}

lilac dagger
#

i see

wet breach
#

thing you have to be careful with lambdas is that Java infers the context of what it is you are trying to do

#

so you can for example go wrong with a chain of lambda's because java chose the wrong context XD

frank kettle
#

Has anyone played around with custom items and "buffs" they may give to the player and can tell me which way to track this items would be the best?

I'm now implementing something on my server that will play around craftiny custom weapons and tools that will increase damage towards the world boss, and toold that can collect more stuff when breaking ores or trees.

So what would be the best way to check for this items? Like, everytime someone does damage to the world boss, I ran a for on the Lore Item and check if the weapon used had a lore like "+1 Extra World Boss Damage" or something like that

My problem with this is worrying if with every spam clicking damage and many players this will have some impact on the server and cause lag.

My other idea was creating an enum of items and their damage, and when a person damages something, a specific line of lore has an ID for this enum list of items and gets their damage output right away.

Or is there different better ways? ๐Ÿค”

hybrid spoke
#

now where i read to end, not probably

#

thats your way to go

echo basalt
#

Ehh somewhat

#

I've done it through multiple ways before

wet breach
echo basalt
#

a recent one was having an "effects" system where, for example, a "BossDamageEffect" just registers a listener that checks if the target matches our criteria and adds however much it needs to

#

I've also made itemstack wrappers

lost matrix
# frank kettle Has anyone played around with custom items and "buffs" they may give to the play...

Iterating over all items in each event is a bit more expensive than having a class which tracks your buffs and
changes when the player changes his armor or active item. The main problem with this approach are dynamically
updated items. It requires you to precisely check when any equipment changes and do a recalculation of your stats.

Other than that: Do what the others suggested and tag items with a PDC. Never use player-visible properties for custom
item detection.

echo basalt
#

I used to exploit the fuck out of slimefun by using /rename commands to make myself alloys :)

wet breach
#

lol

echo basalt
#

think I got banned like 9x on that server

frank kettle
#

The item will still have the Lore informing the buffs it has, I was just worried about using it as a check.

#

I'll look into PDC, looks like what I need

#

Thanks for the info

echo basalt
#

I honestly like doing client-sided lore for stuff like this

#

allows you to easily change it across the entire server in case you want to rename stuff

frank kettle
lost matrix
echo basalt
#

For client-sided lore there are a few points to keep in mind

frank kettle
#

Need to think really well on what exactly I want

echo basalt
#

You have 2 packets to handle:

  • Window items (list of all the itemstacls + cursor, make sure to handle the cursor)
  • Set slot

If you're on creative and you make a copy of the item, it actually copies the lore (go figure)

#

So what I've done in the past was to build the lore list, remove it from the real item if needed and apply it to the fake item

lost matrix
#

One thing right away:
Just dont touch the items in creative. You will create a mess bc the client has authority and will create scuffed lores/names.

echo basalt
#

just process it :p

frank kettle
#

I think for what I want to do, I won't need to do client side lore

lost matrix
#

Nah. Creative was out of question on production servers so we didnt bother.

frank kettle
#

Since the items will be costumizable, every item can be unique

echo basalt
#

last time I did this was on a youtuber server so sometimes they want to record videos on creative or copy items

frank kettle
#

The buffs can be applied, improved and removed.

echo basalt
#

it was also like 3 years ago

frank kettle
#

I think client side lore seems to not be what I want

lost matrix
#

I was thinking about getting into the youtuber scene. Seeing your work in videos must be very rewarding.
Not sure how to get connections going tho. There are probably some teams for hire out there.

echo basalt
#

it's not that great

frank kettle
echo basalt
#
  • pay is mediocre, deadlines are tight sometimes
  • you don't really have fun in the job as it's all very visual and there are no data structures, no databases no nothing
  • you usually start over on every project
  • little job security, I've had youtubers do multiple breaks after a couple projects
  • no credit for your work, no one knows it was you
#

I've done work for 10-20 vids

wet breach
hybrid spoke
#

cool for the first few things but then it gets boring and monotonous

#

i find it cooler when random big ass servers are using your plugins

#

since they are usually very supportive

wet breach
# frank kettle I saw some youtubers post on the forum asking for devs to create custom mods and...

typically in this scenario neither party pays because its a mutual benefit. However, I have never had anyone ask me to specifically make something for doing youtube or whatever. Rather both plugins I mentioned above some were just doing reviews of plugins they thought were interesting or cool and occasionally we got asked some questions when they couldn't figure something out in regards to setting it up.

echo basalt
#

I personally enjoy doing large-scale projects

#

If you're working on a team you get great contacts with lots of experience

#

and if you're doing by yourself you learn a lot beyond spigot that can be applicable in other niche industries

#

Also people respect you because you're not doing monkey work, you're actually bashing your head against the wall and you become irreplaceable

frank kettle
#

I wish to work on large-scale projects to improve my knowledge but every forum post I see asks for "great knowledge of NMS" and I'm kinda new to it and afraid to message at all

echo basalt
#

nms isn't hard, ppl have no clue what they're saying when they ask for it

echo basalt
#

we use it maybe like 2% of the time

#

Or well

#

You write a big system that needs it and never touch it again

wet breach
echo basalt
#

That's for big big servers

#

I hate working on forks

#

the process is always annoying

quaint mantle
#

Hi is there a way to get all nms

#

Names

#

Per version ๐Ÿน

hybrid spoke
#

ah wasnt there this sandal link

echo basalt
#

pull these 2 scripts, wonder why it needs that one specific jdk version, repatch etc

#

?mappings

undone axleBOT
quaint mantle
#

No

#

I want to get it, not make a list manually

echo basalt
#

just like

#

what you need this for

quaint mantle
#

Reflection

quaint mantle
echo basalt
#

bro wants to pull the mappings file directly from mojank's cdn and make magic

#

what's stopping you from making a multi-module project

slender elbow
#

reflection-remapper in shambles

quaint mantle
#

Yes

lilac dagger
#

Is this a thing?

#

Sounds pretty cool

quaint mantle
#

Canโ€™t use the thingy

#

Of spigot nor paperweight

wet breach
#

thingy o.O

slender elbow
#

not paperweight

#

nvm it isn't

#

cool

wet breach
worldly ingot
#

Everything else is pretty much a downside. The tight deadlines are abysmal. Content brain is so bad to work with

young knoll
#

Content brain?

worldly ingot
#

Has to be done in < 1 week time, if you're lucky, and then they make last minute changes

wet breach
worldly ingot
#

lol no

#

Never once

young knoll
#

Nah why would they do that

worldly ingot
#

Only time I see devs shouted out is if it's a dev-run channel, because it's them KEKW

wet breach
#

well if its just purely money you are after then sure I guess that works, otherwise I wouldn't bother with such channels

#

waste of time if they don't properly give credit for whatever it is

young knoll
#

Smallant tends to shout out his devs

lost matrix
#

Meh

worldly ingot
#

The tight deadlines and last minute changes make it a terrible job

young knoll
#

I think heโ€™s the only one Iโ€™ve seen do it

worldly ingot
#

They usually have no concept of how long it takes to make something worth presenting

#

No matter how many times you tell them

#

content brain

slender elbow
worldly ingot
#

You would think huh?

slender elbow
#

sure

wet breach
# young knoll I think heโ€™s the only one Iโ€™ve seen do it

There is plenty that do, but I guess it depends on your purpose if you want to cater to them. If its money, as Choco said typically not an issue. However, if I was to do anything for a youtube channel it would be purely for the free advertisement to make connections later

worldly ingot
#

I have yet to have that experience KEKW

slender elbow
#

yeah i mean

young knoll
#

Wonder how much money you could make with a marketplace team

#

Just shoving random shit on the bedrock marketplace

slender elbow
#

you'd think that they have gone through the experience of spending weeks if not months to create a really good video, but that just depeds on the type of content they want to present

#

if it's just a content farm channel, ๐Ÿคฎ

#

something something quality quantity

young knoll
#

gamefreak has entered the chat

echo basalt
#

I have a friend doing work for smaller ~1-50k sub youtubers and they take weeks to pay

worldly ingot
#

I've worked for creators with 6 million and with 3 million

echo basalt
#

I've worked for creators between 1 - 15M

worldly ingot
slender elbow
#

oh yeah ofc

echo basalt
#

There's a lot of money flowing but you can never really take pride in your quality

#

Had to make like 20 custom items with particles and vector math in like 2 days for 150 bucks

#

Or sometimes they ask for stuff that you know will just blow up the server

#

like an item that when clicked makes a 200x200 hole or something

#

bro thinks I work 24/7

#

other times the content is super easy and boring and pays well

#

I've made 100$ for a plugin where you'd die if you touched the floor

#

so it was just a material whitelist

wet breach
#

can thank India and Brazil for this

hushed scaffold
echo basalt
#

unrealistic expectations everywhere

#

"you heal if you're looking at the sun" and I'm like

subtle folio
#

imillusion where the hell do you get jobs

#

i made a whole minigame for 20$ ๐Ÿ˜ญ

hushed scaffold
echo basalt
#

you do realize the sun looks bigger when straight ahead and smaller when directly above you, with a really annoying picky mathemathical model

echo basalt
subtle folio
#

im going to built by bukkit

wet breach
#

I mean I guess, but I would never do this because my reputation I have built is based on quality and you can't guarantee quality like this

echo basalt
#

I've also made like this minigame event core for like 600 bucks

wet breach
#

nope

echo basalt
#

nah

wet breach
#

I have too much integrity for that

slender elbow
#

bahahaha

echo basalt
wet breach
#

I mean I guess if it was easy or simple sure

subtle folio
#

im a straving child

hushed scaffold
#

Money is money

subtle folio
#

incredibly

echo basalt
#

So if you want 20$/hr, you'd estimate the number of hours and aim to go over at most, 20%

#

or however many you need to still be over 16/hr

wet breach
echo basalt
#

BBB is a hella toxic hypercompetitive environment

#

I avoid it

subtle folio
#

ohok

echo basalt
#

5$ ploogin with like 8 replies in 2 hours

#

where they ask you for your website n shit in order to make a /help command

#

with a ton of people with more marketing experience than development experience

#

Everyone I know that has a proper budget runs their own team

subtle folio
#

where

echo basalt
#

And reach out to devs they like with real offers

wet breach
# subtle folio ohok

and don't under sell yourself or try not to. However do note the more you intend to charge you should at the very least ensure quality matches. Doesn't have to be perfect but it should match whatever they are paying XD

echo basalt
#

this is how I get 80% of my work now

wet breach
#

in the business world, favortism is the game

hybrid spoke
# echo basalt

"So do you know how to make a bedwars plugin? I can give you a vouch for that!"

hushed scaffold
young knoll
#

You work for exposure right?

hushed scaffold
wet breach
#

doesn't matter, businesses make it obvious all the time. The way you compete with such things is connections. Connections are important. The more people you know that others also know, the better off you will be and your favortism starts to increase especially if you produce results ๐Ÿ™‚

echo basalt
#

I have my own little minigame core so bedwars is probably ~5-10 hours of work to impl

worldly ingot
# echo basalt

"You know coding languages?" Oh dear. Please tell me you didn't accept this

echo basalt
young knoll
#

Yeah I know a coding language or 2

echo basalt
#

they had bad experiences with other devs before so I gave them a little deal

hushed scaffold
young knoll
#

Skript and Byteskript

echo basalt
subtle folio
#

anyone going to github universe?

echo basalt
#

it's like 2 hours away and I got free developer tickets

wet breach
young knoll
#

What's that guys name

#

With the plugin course

echo basalt
#

tickets there are going for 1.3k now

#

tommyinnit is giving a talk clown_2

subtle folio
#

stephen @young knoll

echo basalt
#

kangarko lmao

subtle folio
young knoll
#

Yeah that

subtle folio
#

oh

young knoll
#

Kangaroo man

wet breach
echo basalt
#

cringe ytber

#

I'm thinking of doing like a little bingo game for fun

subtle folio
#

you should

echo basalt
#

with challenges such as "steal 8 pens" or "draw an evil moustache on someone"

subtle folio
#

"unrelated old comment"

echo basalt
#

"sneak into a stage"

hushed scaffold
young knoll
#

"Commit arson"

echo basalt
#

p sure binance was giving out free hoodies last year

wet breach
subtle folio
#

whats wrong with jetbrains??

#

we โค๏ธ jetbrains

echo basalt
hushed scaffold
#

Jetbrains made intellij right

echo basalt
#

about my work and stuff

worldly ingot
#

lol, pretty sure JetBrains will partner anyone that uses their products and has a company

subtle folio
#

yes

young knoll
#

I'll use their products if they partner me

echo basalt
#

had like 3 different CEOs add me on their app

wet breach
#

I hope you did

echo basalt
hushed scaffold
#

Id Die without intellij

echo basalt
#

about to blow my paycheck next week on housing

wet breach
hushed scaffold
#

What that

echo basalt
#

they work a lot with AI

wet breach
#

that too

hushed scaffold
#

Is it better than intellij

wet breach
#

that is what the general channel is for

hushed scaffold
#

How what why

echo basalt
wet breach
#

and if you really wanted you could create a thread in here too

#

if you really want a dev general lol

echo basalt
#

yeah right now we're helping me develop connections with all the CEOs

#

I've had like 3 or 4 add me on their app

wet breach
#

maybe next year I will attend some conferences

echo basalt
#

see if you can get free tickets

#

I got mine by literally just linking my github to their website

hushed scaffold
#

I was about to Google it

wet breach
#

uh no, waste of time

hushed scaffold
#

Nope

eternal night
#

not that minecon still exists

wet breach
eternal night
#

nah lol

wet breach
#

especially if you do it in advance

echo basalt
#

CEO of mozilla, VP of AI at amazon, mayor, prime minister, president, hotel chain ceos

eternal night
#

they announced minecraft festival in 2020 but it got clapped by covid and has yet to return

echo basalt
#

lot of ppl that are really good contacts

echo basalt
#

and after the conference they do exclusive parties at night "where deals get done"

wet breach
#

the others I don't care about, except maybe the hotel chain one

#

hotel chain one is good if you want to do network related things as they always need someone to go repair that stuff lmao

echo basalt
#

CEO of neo4j

#

wtf is neo4j

#

lmao people talking about development in #general

wet breach
#

ACID compliant transactional database with native graphing storage and processing. basically its handy for anything involving graphs that are created or need to be created from the data or you need to combine graphs etc

echo basalt
#

oh fun they have roundtables where ppl talk about their product for an hour and you can ask them questions directly

wet breach
#

other times can be boring if you get stuck at a table with boring products or stuff you really don't care about XD

echo basalt
#

thing is that I need to pick and choose what talks I want to attend because there's one every like 5 minutes in six different stages in this huge arena

wet breach
echo basalt
#

uhh

wet breach
#

that is just examples

echo basalt
#

I'm attending one where dude talks about how we went from a minecraft youtuber and diversified into all sorts of industries

wet breach
#

I personally wouldn't prioritize that unless at that specific time there isn't anything else interesting lmao

echo basalt
#

well it's the one that most hits home

wet breach
#

well, idk who it is but its basically the audio version buy my book so I can tell you how to make millions

#

or sometimes they advertise their book on this topic during the talk

#

and don't really say all that much during the talk and just say generic things

#

hence why I said personally I wouldn't prioritize it, but if you want to go hear it then go for it ๐Ÿ™‚

#

maybe it turns out to actually be interesting

#

however, I am going to laugh if they convinced you to buy a book XD

echo basalt
#

Nah there are no books, dude's legit going to talk about his side ventures

#

most of the schedule looks like this

wet breach
# echo basalt

I would probably choose the social media one and the skills gap one

echo basalt
#

How to fix your shitty pitch

#

lmao

#

def going to that one

#

grr all the goofy ones are at the same time

wet breach
#

lol

wet breach
#

but I generally just ask my older brother since he has experience in marketing ๐Ÿ˜›

echo basalt
#

Added a few to my schedule

#

I should get to work if I want to afford this trip lma

wet breach
#

the two in the middle are probably boring

echo basalt
#

Filler content, there was nothing better

wet breach
#

the integrating your brand into games is actually pretty straight forward or should be. If you are having issues in how to integrate your brand into a particular game then odds are it probably doesn't belong there to begin with

echo basalt
#

I'm thinking of like having a destinct branding to your games that makes them peculiar type deal

#

Y'know your unique style

#

Rather than trying to mash two things together

wet breach
echo basalt
#

eh if it's boring I can just get up and leave

wet breach
#

I was just pointing out the irony ๐Ÿ˜›

wooden hearth
#

Hey with duration of being mute should I save the date and time and when they try and type keep checking until there time is up?

quiet ice
#

And what alternatives are out there?

#

Isn't that the same thing?

wooden hearth
#

Perfect just checking before I start doing anything as Iโ€™ve never done anything with duration lol

quiet ice
#

Like there is little difference between long, Instant and LocalDateTime

#

The main diff is OOP and Timezones, but that is negible

wooden hearth
#

I would get the time from the server

quiet ice
#

Hm? Shouldn't System.currentTimeMillis()/Instant.now()/LocaleDateTime.now() with </.isBefore suffice?

uncut needle
#

I figured out why

#

That tasks sometimes dont work

#

Dont cancel tasks on player leave event

#

it sometimes breaks

wooden hearth
#

Have you ever released a premium plugin before?

#

Just wondering if I need to do things in a certain way as Iโ€™m making a premium plugin

subtle folio
#

theres a level of quality that is expected

#

grules

wooden hearth
#

Thank you

#

Thank you, itโ€™s not too bad then Iโ€™m guessing mcm is roughly the same

river oracle
wooden hearth
river oracle
#

?premium these ones

undone axleBOT
wooden hearth
river oracle
#
8 week old account
80 messages (forum posts) + 20 positive ratings
3 free resources
Two-step verification enabled
#

I'm more insinuating the forums requirements

#

lots of people forget about them

wooden hearth
#

Il have to check my messages but I have 3 free plugins already

quaint mantle
#

Hello im having an issue rn, i cant quite find a solution

    public void onBlockExplode(final BlockExplodeEvent event) {
        Material ExplodedBlock = event.getBlock().getType();
        Bukkit.broadcastMessage(ExplodedBlock.toString());
    }```


i cant actually find a way to check what the block that was exploded was
#

Like bed, respawn anchor

#

it just returns air

wooden hearth
slender elbow
#

that leaves a lot of room for false positives tho

#

this sucks lol

wooden hearth
#

I have another question if you brought a server core would you want a built in permissions system or use an external so like luckperms etc

slender elbow
#

i mean luckperms is extremely flexible, whatever "built in" means

river oracle
#

you're best off Using Vault

#

or Luckperms API

#

you really shouldn't need to touch permissions a ton though

wooden hearth
river oracle
#

what are you doing that needs permissions anyways?

#

you can always just check Player#hasPermission

#

the only time you'd need an API is if you need to add and remove permissions which in most cases I can't see a reason a plugin would need to do this

#

unless well you're a permissions plugin

chrome beacon
#

I wouldn't rely on a single core plugin handling everything

wooden hearth
chrome beacon
#

Personally I think core plugins are a bad idea

orchid trout
#

plugins that are like apis?

river oracle
wooden hearth
vital sandal
#

hmm how could I do the math here?

chrome beacon
icy beacon
#

Can I somehow see all subinterfaces of a class with IntelliJ? I think there was such an option, but I don't have it rn

wooden hearth
orchid trout
chrome beacon
#

Yes

orchid trout
#

uh

#

dont look at my github

chrome beacon
#

?paste

undone axleBOT
chrome beacon
#

^^

orchid trout
#

'''

river oracle
#

he keeps post andkeeps deleting lol

icy beacon
wooden hearth
#

I know lol

river oracle
#

?codeblocks

#

well whatever

#

paste is better

icy beacon
#

?codeblock

undone axleBOT
#

You can use the discord code block format to display code or just text in a more pleasing way:
```java
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {

}

}```
Becomes:

public class MyPlugin extends JavaPlugin {
    @Override
    public void onEnable() {

    }
}```
warm crater
#

Hi what's wrong my code ```@EventHandler
public void Halรกlok(PlayerDeathEvent e) {
Player player = e.getEntity().getPlayer();
int deaths = 0;

    if (this.data.getConfig().contains("players." + player.getUniqueId().toString() + ".deaths"))
        deaths = this.data.getConfig().getInt("players." + player.getUniqueId().toString() + ".deaths");

    data.getConfig().set("players." + player.getUniqueId().toString() + ".deaths", (deaths + 1));
    data.saveConfig();

}

}```

wooden hearth
#

I use google before asking in here because thereโ€™s load of help using the spigot forum

warm crater
#

spam console with error message

icy beacon
chrome beacon
undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

icy beacon
#

I'd assume that e.getEntity().getPlayer() is nullable

#

Maybe I'm wrong

#

Check the docs

wooden hearth
#

Could be the this.data is null

icy beacon
#

Yeah barely any info

warm crater
chrome beacon
#

Don't write to the file every player death

wooden hearth
icy beacon
#

If you really want to track it without using statistics, cache it in some map that you load on startup and save on shutdown

chrome beacon
#

Just use statistics ^^

warm crater
#

Could not pass event PlayerDeathEvent to WorldCraft v1.0.0
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
at org.bukkit.craftbukkit.v1_20_R1.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:899) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
at net.minecraft.server.level.EntityPlayer.a(EntityPlayer.java:820) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
at net.minecraft.world.entity.EntityLiving.a(EntityLiving.java:1484) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
at net.minecraft.world.entity.player.EntityHuman.a(EntityHuman.java:936) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
at net.minecraft.server.level.EntityPlayer.a(EntityPlayer.java:978) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
at net.minecraft.world.entity.Entity.au(Entity.java:696) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]
at net.minecraft.world.entity.Entity.ao(Entity.java:623) ~[spigot-1.20.1-R0.1-SNAPSHOT.jar:3871-Spigot-d2eba2c-3f9263b]

undone axleBOT
icy beacon
#

But if not, then absolutely statistics

icy beacon
#

Also

wooden hearth
#

Maybe debug each variable aswell

warm crater
#

i fix it

#

ty

icy beacon
#

๐Ÿค”

#

Good

wooden hearth
warm crater
#

e.getEntity can be a mob

wooden hearth
river oracle
#

If you haven't changed your hotkeys seems like Ctrl+H would work

icy beacon
#

I've seen this thread, but I'm not sure if this applies to also showing it in the docs so I haven't tried it

#

Ones ec

#

This only seems to be showing the superinterfaces, and it's also not in the docs (Ctrl+Q)

#

Nvm these are subinterfaces

#

Still not the most convenient placement haha

river oracle
#

unfortunately its not as esay as in the docs ๐Ÿ™

icy beacon
#

I remember being able to see the subinterfaces in the docs window. Maybe I'm remembering it wrong ๐Ÿ˜„

#

So there's this cool shortcut Ctrl+Alt+B

#

Closest thing I could find

river oracle
#

will keep that one in mind

#

especially since I changed my CTRL+H keybind lol

icy beacon
#

Identical behavior to this is holding Ctrl+Alt and LMBing the class, in case you need to do that multiple times on multiple classes ๐Ÿ˜›

river oracle
#

that's what I do currently

icy beacon
#

Alrighty

glad prawn
vital sandal
river oracle
#

forgot I use a modified combination of VSCode and Eclipse hotkeys

#

its f3 for me xD

next stratus
#

Hey, is there any reason why

    final Title.Times times = Title.Times.times(Duration.ofMillis(500), Duration.ofMillis(3000), Duration.ofMillis(1000));
    final Title title = Title.title(mainTitle, subTitle, times);

    audience.showTitle(title);

Isn't showing any titles?

young knoll
#

Hey that's not the spigot api

#

๐Ÿ‘€

next stratus
#

It's all the same ๐Ÿ‘€

glad prawn
#

no?

lilac dagger
#

looks like the problem comes from Title.title

#

or showTitle

young knoll
#

Spigot doesn't have adventure stuff

#

Our title system is much different

lilac dagger
#

i see

#

so someone is asking for help about paper on spigot

young knoll
#

In fact ours is just sendTitle(String, String, int, int, int)

lilac dagger
#

the Times class looks ugly

slender elbow
lilac dagger
#

except it isn't on spigot

#

or is it as a lib?

slender elbow
#

lib yes

lilac dagger
#

oh i see

slender elbow
#

still the wrong place to ask lol

lilac dagger
#

ye

#

i mean people ask about help with plib

#

so not out of this world

dire marsh
glad prawn
#

lol

orchid trout
#

i use components for clickable chat

#

very cool

lilac dagger
#

to be honest most of the time people only pass a testcomponent

#

so why should we be forced is beyond me

#

waste of objects

icy beacon
#

Can anybody help me create a regex? I'm struggling to come up with one. I want to capture <c>, <e>, <h>, <k> (so basically any value encapsulated in angle brackets) with Regex, because I'm working on placeholders.
I've tried [.]*((<.+>)+)[.]* but it just captures everything between the first & last angle brackets (see screenshot, test case was a b <c> d <e> f g <h> i j <k> l m)

lilac dagger
#

alex could help you

icy beacon
#

I believe Alex is not available rn

lilac dagger
#

well, you can find him when he's online

slender elbow
#

.+?

orchid trout
#

isnt he in the hospital

lilac dagger
#

or guess emily knows

icy beacon
lilac dagger
#

he's back isn't it?

icy beacon
#

If that's what you are asking

slender elbow
#

no, with the '?'

icy beacon
orchid trout
#

it

icy beacon
#

What does it do

slender elbow
#

something something lazy parsing

#

non greedy or whatever

icy beacon
#

Haha, alrighty, thanks ๐Ÿ™‚

glad prawn
#

? matches the previous token between zero and one times

slender elbow
#

not in that ctx

icy beacon
#

When together, they are combined it seems

glad prawn
#

ah this one

slender elbow
orchid trout
#

idk

#

check his about me

#

surgery or smt

slender elbow
#

oh

icy beacon
slender elbow
#

oh

river oracle
#

he's back now :3

#

@tender shard hiaaaa

echo basalt
#

avg mfnalex moment

icy beacon
#

Thx ๐Ÿ™‚

wet breach
icy beacon
wet breach
#

so maybe do a split on that character or the character before it

#

so it retains the diamond

#

then iterate the array with the regex

icy beacon
wet breach
#

unfortunately don't think regex has anything to split the strings for you

#

or to do some kind of counting XD

icy beacon
#

I hope I'll figure it out swiftly haha

young knoll
#

That's what matcher is for

slender elbow
#

Pattern.split in shambles

young knoll
#

Ah

#

Yeah that works too

icy beacon
#

Actually last time I've used Regex was like 2 years ago so I forgot everything and I have 3 tabs open that have the kotlin regex & java regex docs lmao

#

Ok Baeldung let's see what you're cooking

shadow night
#

uh guys, a friend is asking me to make a plugin that adds cities with stuff, how possible is that considering the spigot api?

covert valve
icy beacon
icy beacon
shadow night
icy beacon
covert valve
# icy beacon Kotlin's syntax sugar is lovely ๐Ÿ˜„

its my favourite feature of the language. some people hate kotlin because there's fifteen ways to do the same thing but the stdlib is so nice that i can write code without having to think about how the language wants me to do things

shadow night
icy beacon
covert valve
#

other languages i always feel i have to worry about how the language wants me to write, kotlin bends to how I want to write

tidal marlin
#

Hello !
I try to use the PlayerInteractEvent event but when i right click on air with a fishing rod, i get two events :

  • One with the action RIGHT_CLICK_AIR (correct)
  • the other with the action LEFT_CLICK_AIR, but i don't left click and this second event comes only with a right-click on air with a fishing rod.
    Someone know if it's a bug or not ? And if it's not a bug, somebody knows how suppress this second event please ?
covert valve
#

that being said they absolutely could implement reified class generics with a bit of compiler hacks and they haven't. that pisses me off

river oracle
#
    public Inventory createInventory(InventoryHolder holder, MenuType<?> type) {
        if (type == MenuType.ANVIL) {
            return new CraftInventoryAnvil(null, new CraftInventoryAnvilSubContainer(2, holder), new InventoryCraftResult());
        }
        return null;
    }
``` this is so unbelievably cursed can't wait to expand this
icy beacon
# shadow night how hard is it tho

I mean different aspects are harder than others. E.g. depending on what type of AI you need, it can take you a long time or a couple minutes/hours. The basic concept of cities should be easy, and as you add layers to it, it becomes more and more complex

shadow night
covert valve
#

well

river oracle
covert valve
#

you could improve it by making each MenuType have an inventory factory

icy beacon
icy beacon
river oracle
#

considering that minecraft doesn't do that

#

they only have a containerFactory

covert valve
#

is MenuType a default MC thing?

shadow night
river oracle
covert valve
#

could make a big hashmap mapping meu types to factories and do it that way? would avoid doing a million if-else statements

river oracle
#

I already did that with Menus

covert valve
#

or wrap menu types and just use a decorator

river oracle
covert valve
#

probably

river oracle
#

still it will be nice trying to get rid of CraftContainer

#

that class is actually cursed

warped basin
#

quick Q: how is world.getPlayers() sorted? is it by login order or something more arbitrary?

river oracle
#

depends what kind of list it is

#

let me look quick

wet breach
icy beacon
#

Yep, I tested it with regex101 as soon as you sent it

#

It should be working fine

wet breach
#

so you could use the regex to then create a string array and that array should be all the content you are looking for ๐Ÿ™‚

river oracle
wet breach
#

its by login

warped basin
#

doing it myself is pretty easy anyway so no biggie

river oracle
#

it might be pretty reliable actually

#

I don't think anything else adds to it

warped basin
#

oop

#

interesting

wet breach
#

well, doesn't return a mutable collection that is

river oracle
#

bukkit copies the list

wet breach
#

ah well there you go

#

yeah nothing else should really touch that list, only thing is I believe fake players may show up in it?

#

don't remember

warped basin
#

but there's still a chance there's something at a lower level that might affect it, I take it?

river oracle
#

only if there are fake players

young knoll
#

I think there is a setting to shuffle players

wet breach
#

?

young knoll
wet breach
#

didn't know spigot added that

river oracle
#

@warped basin either way the proper way to track player turns should be kept by you i'd say its initially adventageous for you to use the player list given the aformentioned setting isn't on

icy beacon
#

Can't figure out the fallback

lost matrix
#

Like...

warped basin
#

I think I'm gonna use my own system to determine the turn order just to be ultra safe, don't wanna run into any weird bugs later down the line because of it

icy beacon
#

Oh

#

Lmao

#

Yeah I think I need some sleep

#

Thanks smile

icy beacon
covert valve
#

probably better to implement it by making an enumValueOfOrNull<T>(name) and defaulting with ?:

icy beacon
#

Oh yeah perhaps

#

Is that a thing though? I don't see it

covert valve
icy beacon
#

Lucky me

#

Yeah this looks cleaner

#

And how about safeValueLenient which capitalizes your string automatically lmao

#

I don't need it rn but it sounds funny

covert valve
icy beacon
#

It does?

covert valve
#

did you just write that

icy beacon
#

Yeah

covert valve
#

i thought it was stdlib nevermind

icy beacon
#

Lol

#

I wrote safeValue like a week ago

#

And today I decided I needed a fallback method as well

covert valve
#

also for KDoc you dont use @param and stuff like that you use [paramName]

icy beacon
#

For sheer convenience