#help-development

1 messages · Page 905 of 1

hybrid spoke
#

simple as that

ivory sleet
#

^

bleak eagle
#

yours too >:( wanna fight buddy huh huh !?!

ivory sleet
#

I do insist, your opinion is not really well based on facts and it just looks like you’re arguing for the sake of arguing, but you do you

bleak eagle
#

compare it to a language like golang

ivory sleet
#

in what way do you compare the two?

bleak eagle
#

also important: based on

bleak eagle
ivory sleet
#

What’s the purpose?

bleak eagle
#

to prove a point

#

:D

hybrid spoke
#

synchronized ¯_(ツ)_/¯

ivory sleet
#

This for instance is completely factless, i don’t know what to tell you

#

I mean sure not all features are that crucial to the languge

#

But that point can be given to any modern language

ivory sleet
#

Just “oh pick 2 langs and compare them” is really vague

#

is it speed?

#

stability comfort?

#

modularity?

bleak eagle
# ivory sleet This for instance is completely factless, i don’t know what to tell you

https://www.baeldung.com/java-17-new-features see pattern matching, sealed classes, vector api

https://www.baeldung.com/java-12-new-features see switch expressions, instanceof matching

Baeldung

In this article, we'll talk about the news related to the new version of the Java ecosystem, Java SE 17 - the new features and the changes in its release process, LTS support, and licenses.

Baeldung

Explore the new features implemented in Java 12.

bleak eagle
#

maintainability of code

#

readability of code

ivory sleet
#

You can write highly maintainable code and highly readable code in Java

#

as well as in GoLang

#

Simplicity java falls

bleak eagle
#

that's what I'm mostly referring to though!! having 5 ways of doing a single thing is silly and automatically leads to less readable and maintainable code

#

no matter what the language is

#

I, as a developer, should not have to know what the fuck it means when someone assigns a switch statement to a variable

ivory sleet
#

that’s true, but java is at least trying to not provide 5 ways of doing the same thing, they’re trying to provide dev ergonomics, which yes a side effect is sometimes that you get surjectivity

#

well brunnooo

#

Would you rather have java never update again?

#

Or what exactly do you value?

#

Java never pushing any new JEPs just so you don’t have to learn any new semantic feature? Or let Java try their best to ergonomically simplify the language to some extent, syntax sugar or whatever you wanna call it?

bleak eagle
#

simplify?

#

ergonomic just isn't a good word to use because it's the polar opposite of that

remote swallow
#

ah yeah instanceof pattern matching wasnt a simplification

bleak eagle
#

simplification to write and not to read and maintain

#

especially for new developers

#

you are able to preserve good ergonomics and readability while having one standard method of doing something

#

my example language, golang, kind of excels at that

#

and don't get me wrong, even though I'm criticizing java fwiw, I'm not saying it should NEVER BE USED and is USELESS GARBAGE

#

java is absolutely amazing in some aspects

#

but golang wouldn't have been created by Google "just cuz they felt like it"

#

it was created because google noticed the aforementioned flaws in java (which was along with c++ the primary language they wrote almost everything in) especially when trying to maintain huge codebases with lots of developers at different levels of experience involved

bleak eagle
#

there are constant useful updates to java

#

and also constant useless updates to java

ivory sleet
#

sure I would probably not use java anymore for a micro service, but there are def other sections where I think Java is far more applicable

if you dont consider javas features ergonomical then thats on u, the reason we for example got pattern matching was because it was largely asked for from the community, then whether you classify it as simplicity, ergonomics or what other term is up to u Ig, it is true that GoLang wins in simplicity (and other aspects), but don't you reckon its worth for java to satisfy its community and try to reduce some of its unnecessary semantics, its not like these features are shipped in a week, it has been years for them to be delivered, subsequently well established and learnt/adopted by the community (mostly)

but if you so much care about having one objective way of doing things in programming that'll surely eliminate a lot of languages from ever being touched by your hands rest assured shrug

icy beacon
#

Let's stop arguing and switch to Kotlin devious

ivory sleet
#

nokotlin :D

torn shuttle
#

make them sit on chairs with an IED under them that is hooked up to a web server and whoever writes a program to detonate the other's chair wins the argument

#

this is the only way

bleak eagle
icy beacon
bleak eagle
#

rust suffers from that issue the most

#

rust is like the exact problems I'm talking about in java amplified a thousand times

ivory sleet
#

well with rust u know u likely r gonna have to write it all urself pretty much but yea indeed

ivory sleet
icy beacon
bleak eagle
torn shuttle
#

if you don't like java go join the very long list of people who said they'd make their own java and then did

bleak eagle
#

it's important to find a balance but also stand up against EVERYTHING the community wants

torn shuttle
#

and another 5 years from now we'll just have another flavor out

ivory sleet
#

yup^^

bleak eagle
#

thanks xD

torn shuttle
#

well then either use something else or suck it up, there is no other option for you here

#

well maybe go get hired by oracle is an option

bleak eagle
#

never said there was one

#

I criticized its flaws

#

that's all!

#

don't misinterpret me

#

I never said anything about not wanting to use it

bleak eagle
lost matrix
bleak eagle
#

"the community" is a mass of people (people are mostly dumb)

#

and they follow whatever is cool and trendy at any given moment

#

so they just have to add crud to their favorite language implementing it

#

and then developers start using those new features, confusing those who still haven't picked up on them and making everything shittier and less maintainable

#

then in 10 years the feature gets deprecated and breaks tons of existing code

inner mulch
#

kotlin is bad

ivory sleet
#

@icy beacon

#

oo

#

so u dont like kotlin anymore zbll?

inner mulch
#

kotlin is just fake java still bytecode

icy beacon
#

I'm not gonna argue lol it's pointless

ivory sleet
#

lol

#

yea

icy beacon
#

Believe what you want

#

I hated kotlin until I tried it. That's all I'll say

ivory sleet
bleak eagle
#

I don't really take it as arguing but more of a convo

ivory sleet
#

it can be transpiled to javascript or sth weird

inner mulch
#

okay?

ivory sleet
#

yep, now you know its not all fake jvm bytecode

lost matrix
#

I tried it. I liked it for scripting but puked while writing a big project with 2 other devs.

inner mulch
#

java has a nicer syntax tbh

ivory sleet
#

i heard its annoying as its not rly 1-1 if u wna use it for both lets say on the jvm and the js web thingy

inner mulch
#

extends is more readable than :

river oracle
lost matrix
inner mulch
ivory sleet
icy beacon
ivory sleet
#

lol

river oracle
bleak eagle
lost matrix
icy beacon
#

Yeah I'm not letting that go

inner mulch
ivory sleet
#

"better"

inner mulch
#

yes runtime generics

#

generics that dont force me to do unsafe casts

slender elbow
#

that is not a matter of the language

#

but the platform

ivory sleet
#

java has that, no im coping now^^^

river oracle
#

Actually those are called templates nerd_glasses

lost matrix
#

Generics is a weak point in java. I prefer C#s approach for this.

bleak eagle
slender elbow
#

mfw just use clojure

icy beacon
inner mulch
bleak eagle
#

though I don't know anything about c# generics

river oracle
bleak eagle
#

skullemoji

icy beacon
#

Lmao

slender elbow
#

as if oracle wasn't a skullemoji company

river oracle
#

Unfortunately I'll have to concede that C# is pretty awesome even though Microsoft owns it

slender elbow
#

being born from the nsa

river oracle
icy beacon
#

C# is not bad though I don't want to learn a third java-esque language tbh

dry hazel
#

so sad sun is gone

bleak eagle
#

you know it's fucked when 'several people typing...'

bleak eagle
icy beacon
inner mulch
#

public void > fun

icy beacon
#

You know it's gonna get hella productive

bleak eagle
ivory sleet
bleak eagle
#

go has a func too and it sucks

icy beacon
#

But I think it's a bit less boilerplate as well

river oracle
lost matrix
#

Jeah C# also has some truly horrible features. The language is fine but the eco system of this language
lets me use Java instead, which makes the choice easy. (Other then game dev ofc)

icy beacon
#

What is dependency management like in c#?

ivory sleet
#

ye y2k and zbll, its pretty much more swag than java :c

dry hazel
river oracle
#

God the only thing that turns me off of C is fucking CMake fuck CMake

bleak eagle
#

c dependency management is miserable

#

but otherwise it's an ok language when applicable to the use case

lost matrix
ivory sleet
#

i found it just fine in most cases

bleak eagle
ivory sleet
#

😬

bleak eagle
#

ashtray carpets & starving pets

lost matrix
#

The C# eco system is littered with deprecated, outdated and incompatible resources. It can create dumpster fires quite quickly.

ivory sleet
#

oh woaw

#

i was prob lucky then when I wrote my Csharp app back in the days

bleak eagle
#

just like python! not the gamedev part though. just new devs

ivory sleet
lost matrix
#

The problem is that C# went through a lot of fundamental changes in the attempt to separate itself from Java.
And during those changes there was a lot of stuff written, which now drags the eco system a bit behind.

inner mulch
ivory sleet
#

if u really feel like it

bleak eagle
slender elbow
ivory sleet
#

lol

lost matrix
#

Python has a similar problem, but there you dont care. You already know that if you have something
that takes X and gives you Y, then you really dont want to know (and care) whats behind this function as long as it works.

inner mulch
inner mulch
bleak eagle
#

I feel like the paper people would worship it

inner mulch
lost matrix
#

They are in a weird super position where they like Gradle but dislike Kotlin mostly

bleak eagle
#

EWWWWW GRADLEEE

#

barf

inner mulch
#

maven is nice

ivory sleet
#

i think paper is using kotlin instead of groovy for gradle stuff (which is obvious why)

#

else java

#

as bruno mentioned earlier, the semantic surjectivity to solve a problem is a big issue in most kotlin code basas imo - often multiple ways of achieving the exact some thing for even the smallest code snippets

lost matrix
#

Maven is ok. As long as you dont need any custom functionality.
Gradle is more flexible, but the surjectivity is just pumped to the max there.

bleak eagle
#

what sort of fun are we talking about here

ivory sleet
#

gradle is also at like version 8.5, who knows how many more versions we're gonna get

remote swallow
#

8.6 now iirc

ivory sleet
#

mhmm yess

river oracle
ivory sleet
#

well u can use type tokens also

inner mulch
river oracle
#

Blind casting!!!!!!!

ivory sleet
#

if u want runtime type awareness

inner mulch
river oracle
inner mulch
ivory sleet
#

basicallt a
abstract class Token<T> {}

where u create a new anonymous class
Token<Map<String,Object>> myToken = new Token<Map<String,Object>>(){};

#

and the type is preserved at runtime Map<String,Object>

river oracle
inner mulch
#

yeah python is kinda slow

ivory sleet
#

the only time py isnt slow is when its not in py

inner mulch
#

i heard python is so slow because the code is interpreted at runtime, why do you make a language intentionally slow?

river oracle
river oracle
#

It doesn't need to be the next C

#

It does what it wants to do and does it well

inner mulch
#

and what does it do?

ivory sleet
#

it lets u write python code

inner mulch
#

nice

ivory sleet
river oracle
#

A fast to write interpreted language that is useful for writing scripts and modeling ML/AI models as well as CLIs

bleak eagle
#

python is easy and quick (and slow and messy and a pain in the ass)

ivory sleet
#

i mostly just hate the fake type system

inner mulch
bleak eagle
#

yeahh same

bleak eagle
river oracle
river oracle
#

Because you are a programmer you'll never actually realize the true benefits if python and it's sad but makes sense

inner mulch
river oracle
#

Some are

#

Generally you'll see python being common in other fields like machine learning, statistics (tho R is also very widely used), even biology

inner mulch
#

ok

bleak eagle
#

@river oracle plz check stash inbox

#

tell me whether i messed up the merge, there's a duplicate commit but it's just amended to sign it off since i didn't initially

warm mica
young knoll
#

Programmer socks

torn shuttle
#

also on the next episode find out why lifting weights doesn't make you a weightlifter

river oracle
#

For many researchers that just isn't the case it's a helpful side piece

torn shuttle
torn shuttle
#

I think I've forgotten how the debugger is supposed to work

#

this new intellij interface is tripping me up

#

wasn't there a play button for hotloading

#

I actually have no memory of how my hotloading setup was supposed to work, all I have is muscle memory from what used to work

#

@echo basalt packet-based async display entities, are you happy now

echo basalt
#

No

torn shuttle
#

good

#

I would've failed if you were

ornate heart
#

I'm spawning custom entities. Is it enough to tag the custom entity via a persistent data container tag, or should I store the location of each custom entity and search for them that way.

I was thinking the storing of locations is redundant because I can simply mark each entity with a custom tag in PDC and just identity them that way.

tender shard
#

pdc tag is enough

torn shuttle
#

hey @echo basalt have you ever come up with a fixed-location abstract inventory system such that interacting with a spot in a world basically opens a chest but the chest doesn't actually exist?

echo basalt
#

That's hella niche

torn shuttle
#

yeah a bit

echo basalt
#

But probably

torn shuttle
#

just wondering if it's worth bothering hacking into mc to fake a chest being at a location for this or if I just do it the potentially easier way of dumping it into a database

echo basalt
#

Nah

#

Just pdc or database

torn shuttle
#

pdc is a cute idea

echo basalt
#

Just have 1 inventory instance

young knoll
#

Interaction entity

torn shuttle
young knoll
#

Sure but you can just map it to an inventory

torn shuttle
#

yeah still need to figure out storage for that inv is all

round finch
#

i wanted to do that with different inventories

hybrid spoke
#

voodoo magic

sterile flicker
#

does anyone know how to handle a zombie spawn packet in protocollib?

torn shuttle
#

also have to figure out how I want to store the chunk entity data for this one, not an obvious one

lost mist
#

guys i installed the 1.8.8 version for fawe jar and getting this error on paper can someone help me?

#

like i cant find that jar anywhere else

round finch
#

@torn shuttle Explain how it works!

lost mist
#

oh damn

#

lol

shadow night
lost mist
#

yeah i did the same with spigot

#

i got my second server

#

on the other file

#

sec

torn shuttle
lost mist
#

i actually tried both

torn shuttle
#

guess you'll have to go read my open source code

hybrid spoke
lost mist
#

you got a link?

#

like i have been spending around 10 hours to find a solution..

shadow night
#

it pretty obviously says the plugin.yml file is invalid

lost mist
#

ikr

torn shuttle
hybrid spoke
#

have you downloaded fawe for your version? (1.8.8)

torn shuttle
lost mist
#

1.8.9

hybrid spoke
torn shuttle
lost mist
#

as they say on their website

hybrid spoke
lost mist
#

yeah

#

but i cant find

#

the spigot one

#

or its only for forge?

hybrid spoke
icy beacon
#

Sniped

lost mist
#

ong

#

im so dumb

hybrid spoke
#

agreed

lost mist
#

i thought it was saying 1.17

#

all this time

#

😭

#

thanks guys no cap

#

have a good day

gritty current
echo basalt
echo basalt
#

So does your IDE

#

On a side note, your code looks really ugly, please take a look at this

#

(It's pinned)

gritty current
remote swallow
#

dont use inventory holders to detect if its your inventory

gritty current
#

then what do i use?

remote swallow
#

?gui

remote swallow
#

and add debug statements and see where it fails

gritty current
#

ok

sterile flicker
echo basalt
#

Alright, what do you have?

#

Did you try anything yet

sterile flicker
#

I want to make the client think that a zombie is a player

#

how do I change the metadata correctly so that it is like a player's

echo basalt
#

Hm what's the objective with this?

#

Players and zombies are two very different things

sterile flicker
#

to make the zombie look like a player

gritty current
#

why doesnt this unban command work?

        Bukkit.getServer().getConsoleSender().sendMessage("7 Debug");
        BanList banList = Bukkit.getServer().getBanList(BanList.Type.NAME);
        Bukkit.getServer().getConsoleSender().sendMessage("8 Debug");
        if (banList.isBanned(Objects.requireNonNull(Objects.requireNonNull(offlinePlayer.getPlayer()).getName()))) {
            Bukkit.getServer().getConsoleSender().sendMessage("9 Debug");
            banList.pardon(offlinePlayer.getName());
            Bukkit.getServer().broadcastMessage(ChatColor.YELLOW.toString() + ChatColor.BOLD + player.getName() + " Has Revived " + offlinePlayer.getName());
        } else {
            player.sendMessage(ChatColor.RED + "Player is not Dead!");
        }
    }

}```
sterile flicker
#

I had the code for the fake player's nms but they don't have ai and goals

rotund thunder
quaint mantle
#
ItemStack nmsStack = CraftItemStack.asNMSCopy(is);
        try {
            Field f = Item.class.getDeclaredField("MAX_STACK_SIZE");
            f.setAccessible(true);
            f.setInt(nmsStack, i);

            Field f2 = Item.class.getDeclaredField("maxStackSize");
            f2.setAccessible(true);
            f2.setInt(nmsStack, i);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        nmsStack.setCount(i);```
(1.20.1 paper)
How to make the number of items exceed 64?
When I run the above code, I see 64 items in my inventory and when I click, I pick up 100 items in my cursor.
chrome beacon
#

Changing the stack size isn't recommended

#

It will cause problems like desync

quaint mantle
#

I think I don't have to consider the item duplication issue because it's just to be displayed in the GUI?
(I don't know if I understood it correctly)

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.

gritty current
#

it doesnt unban the player

#

but it doesnt output an error

#

i dont know whats wrong

warm pine
#

Is there a obfuscator plugin in IntelliJ?

chrome beacon
#

?

#

What exactly are you looking for

#

if you're trying to obfuscate while building with artifacts that's just a bad idea

quaint mantle
#

I'd like to display 100 of nether stars on the GUI

gritty current
shadow night
proud badge
#

What would be the event priority that runs slightly before monitor?

quaint mantle
kind hatch
#

Don’t you have to change the max stack size as well?

shadow night
#

I remember in old bukkit you could set the item amount to anything, even tho it it limited by mc itself to 127

#

I wonder if you can do -128

kind hatch
#

I think mc patched stack sized over 64.

quaint mantle
shadow night
quaint mantle
#

but if you pick up an item, it'll be picked up as 100

#

And when I put it back in the inventory, it turns into 64.

shadow night
#

the client doesn't like stacks above 64

proud badge
#

is HIGHEST event priority called first, or last?

#

Because it doesnt really explain in the documentation what "important" means

remote swallow
#

last

#

lowest first, monitor last

#

dont modify the event on monitor

proud badge
#

ok thanks

#

So the priority just before MONITOR would be HIGHEST?

remote swallow
#

yeah

proud badge
#

Ok thanks

shadow night
remote swallow
#

we will come for you

shadow night
#

@icy beacon you say you live in my walls, come, fight me for this

icy beacon
#

Well almost

proud badge
#

What decides which plugins are loaded first?

icy beacon
#

I have yet to fill the database

#

But since I'm extremely happy

#

I hereby free you from your debt

shadow night
shadow night
icy beacon
#

You do not have any fact debt anymore

#

And as such you can opt out from being a fact provider now

#

You have 2 hours to decide

shadow night
#

I will do one thing

#

one fact, and then I opt out. Is that an option?

icy beacon
#

You can do that, or you can just opt out with 0 facts

#

Sure

twin venture
#

Hi uhh, i have a question what is a good structure to create a KitEditor system? :

  • KitEditorProfile (UUID,KIT)?
  • a database with UUID, SWORD INT,BOW INT ... etc?[i will get more problems with this system what if kit have consumable items , or thorwable items..]
    .. any other ideas?
#

the user will execute /KitEditor , it will open the gui with the current kit items only , and he can manuplate the slot of the kit items .

ivory sleet
#

Are you ever gonna query or insert just the sword, or just the bow etc

#

If not, maybe it could be worth while to blob it, altho yes - it does defeat the point of sql

charred blaze
#

Hey so i was just trying to load old project from eclipse to intelij. i failed so i moved out the old project folder out of the IdeaProjects. now im trying to create new project and im getting stuck on this screen each time. i tried invalidate and restart, deleted kotlin plugin. please help

twin venture
dawn flower
#

how do i disable vanilla criticals?

granite owl
#

does the java synchronized keyword enforce atomic access to the instance referenced in its parameter when invoked like ```java
synchronized(foo) {}

#

i found the docs only mentioning synchronized methods but it "appears" to work like this too

tender shard
#

it only enforces atomic access to any code block that is synchronized on foo too. other code would still be able to access foo without being synchronized ofc

granite owl
#

i expected as much that i would need to wrap every access to foo in the synchronized scope then

#

that is not thread safe

#

🙏

dawn flower
mortal hare
#

am i the only one who hates smooth scrolling

#

it slows down your scroll for no reason

#

to just look good

ivory sleet
#

Tho I rarely touch synchronized since usually you got better tools to work with that make ur design more robust or are lighter in terms of performance

ivory sleet
eternal night
#

spamming it across everything to solve concurrency is a smart move 5Head

ivory sleet
#

you need to be put in jail for that

eternal night
ivory sleet
#

⛓️

river oracle
#

Guys my multi threaded number adder is broken

umbral ridge
#

how do you create a redstone lamp but change its state so its turned on or off

#

is it possible for torch too?

wet breach
eternal oxide
#

unless it's a wall torch

#

Torches are a mess

umbral ridge
#

really

#

so torch that isnt placed on a wall can be turned off but a wall torch cant

#

wait nvm

zealous osprey
#

Sad, I was reading through that code in the image

inner mulch
#

okay i can send it again, if you want

zealous osprey
#

In which kind of context would you use this?

inner mulch
#

i have a few data objects instead of one big one, when i want to access data this would be helpful, so i have it all in one class instead of getting it from some weird place

zealous osprey
#

I'm having a hard time imagining it. I assume you will use some class Foo with some data and store it in the dataManagers map.
Then when you want to get Foo from that specific data holder you'll use #get?

inner mulch
#

and it became tedious working with them

zealous osprey
#

So it's a manager for storing managers?

inner mulch
#

no its a registry storing all instances of said managers

#

it doesnt manage anything

#

it just stores them

zealous osprey
#

true, my wording there was not precise

inner mulch
#

yes, i was going to use classes as keys, but javas cool feature type erasure makes that really not enjoyable

zealous osprey
# inner mulch

Wouldn't #getCanonicalName be safer? Tbh, probably doesn't matter

inner mulch
#

i dont know what these all even return tbh

#

it would be safer probably as i might in some extremely rare case have 2 classes with the same name in the register

zealous osprey
#

iirc #getName returns the Name of the class, as is defined; #getCanonicalName returns the "path" to the class with the packages, e.g. com.conorsmine.net.Foo with Foo being the class.

#

Don't quote me on that, best to read the docs or just test it out

inner mulch
#

okay

minor junco
zealous osprey
inner mulch
#

would this return a random uuid always, or would i generate it once?

chrome beacon
#

it's a static field so once

inner mulch
chrome beacon
#

no

inner mulch
#

dont tell its tied to the class

#

:(

chrome beacon
#

That's exactly what static does

zealous osprey
chrome beacon
#

Display entities and resource pack

mellow pebble
#

?paste

undone axleBOT
inner mulch
mellow pebble
#

So basically i am making plugin that will replant fully grown crops if harvested after 3 seconds of being harvested but it doesnt really replant it to be fully grown it doesnt even replant it at all so there is no errors or anything like that in console but if someone could check it out

https://paste.md-5.net/cuqisanaci.java

inner mulch
#

or do i need to add to every class manually

chrome beacon
#

use an abstract class instead

inner mulch
chrome beacon
#

You can only extend one class at a time

inner mulch
charred blaze
chrome beacon
charred blaze
#

and this one

#

how do i set path to git executable

#

theres no button in there

charred blaze
charred blaze
#

nvm found that too

chrome ferry
inner mulch
chrome ferry
#

Incredibly dirty, its your choice todo so. I suggest you do change your code structure though.
You could store a map, with the instance as the key and the value being the uuid. when executing getUUID it grabs the instance and saves it. if it exists in the instance, get it.

Once again, its incredibly dirty. I recommended you change your code structure

river oracle
#

@worldly ingot am updating epic's TranslationKey PR and I'm confused is there some specific way you are supposed to get translation keys from registry backed things? I've noticed with 2 of your mentions notably, Biome and MusicalInstrument their registry backing, BaseBiome and Instrument have no mention of a msgId or descriptionId which have been the internal names I've come across for translations

inner mulch
quiet ice
bleak eagle
river oracle
bleak eagle
#

oh yes and then the class that implements it should do it

#

I was thinking of extends instead

quiet ice
#

More often than not you should be using the default keyword instead

river oracle
bleak eagle
inner mulch
river oracle
quiet ice
#

And fields on interfaces are also rather rarely appropriate (the exception that comes to mind to this rule is ASM's Opcodes class, but that is just an interface for the sake of brevity rather than OOP reasons)

inner mulch
quiet ice
river oracle
#

no way in hell I'm helping with that xD
what are you trying to make?

bleak eagle
#

KVKVT<><>>><<>>>>>>><

quiet ice
#

Looks like a generic registry

inner mulch
#

i need to somehow get them without having the object

#

i need a key

bleak eagle
#

:nokotlin: :P

quiet ice
river oracle
#

though the fact you are making a RegistryRegistry from the looks of it is quite funny

#

unless DataManager isn't really a manager

inner mulch
inner mulch
river oracle
inner mulch
river oracle
#

eyes_sus why do you have more than 1 player data class

inner mulch
#

i have it split up for when i load it offline so i dont load it all

quiet ice
inner mulch
#

i dont know :(

inner mulch
#

i dont need to load the coins if i want to see their rank

bleak eagle
#

I don't understand, are you trying to get an object by a key when you don't have said key..?

quiet ice
river oracle
river oracle
#

no complex generic fanagaling required!!!

quiet ice
#

But, honestly if the only reason you cannot use java/lang/Class is generic hell - then you actually can make use of java/lang/Class

bleak eagle
#

blargh :P

river oracle
inner mulch
river oracle
#

just going raw on that good OL SQL and java.sql

inner mulch
#

i dont know what you mean

#

im just splitting the data

#

so its more effiecient and also cleaner

river oracle
#

cleaner eyes_sus

#

you did not just send me this and say its cleaner

quiet ice
inner mulch
inner mulch
river oracle
#

managing your data is not a "God Class" its just called managing your data

#

if you have data relating to 1 plugin in your plugin

#

there is no god its just like idk basic data management

#

write some SQL queries you need and such

inner mulch
#

but its 1 class for coins and ranks and everything else?

#

thats a god class

quiet ice
#

God classes are perfectly fine

inner mulch
#

no

quiet ice
#

Anyone that disagrees is an enemy of progress

inner mulch
#

they arent readable

river oracle
quiet ice
#

That is what IDEs are fore

quiet ice
river oracle
river oracle
#

lol

slender elbow
inner mulch
#

yo guys why are you bullying me :(

river oracle
#

@inner mulch anyways putting each piece of data in a separate class is absolutely wild as fuck and is not efficent not any more readable. I'd argue its just dumb lol

inner mulch
#

I suppose, I think it better to have a EconomyData, RankData etc.

bleak eagle
#

have you tried pdc? (/j)

river oracle
#

the real solution here is to make what you call a "God Class" for your data and you'll want to make some SQL queries that are able to fulfill your requests e.g. pull top 10 richest players you can write a query for that

inner mulch
#

and the loading and unloading mechanims can be modified to the needs

inner mulch
river oracle
#

please

bleak eagle
#

xD

inner mulch
river oracle
#

or database data

quaint mantle
#

Why do algorithm impls on tutorial websites have the worst names possible

#

Like the variables are like I l j

river oracle
bleak eagle
#

@river oracle well, usually what I do is spawn a pig and give it a name so it doesn't despawn, then get its pdc and store all my data in nbt there

quaint mantle
#

like p q r

#

tf

bleak eagle
#

it's quite clean but sometimes I have to have an alt online next to it so it doesn't unload and keep it in an enclosure so it doesn't escape

river oracle
flint warren
#

any idea why this doesn't work? doesn't make any sense

                String slot = hand_data.get(new NamespacedKey(this, "slot"), PersistentDataType.STRING);

                Bukkit.broadcastMessage(slot + "");
                //slot broadcasts "MAINHAND", it works every time                

                if(slot == "MAINHAND"){
                  //somehow this doesn't work? the code doesn't get here
                    return hand_data.get(new NamespacedKey(this, "health"), PersistentDataType.DOUBLE);
                }
bleak eagle
#

.equals

#

not ==

flint warren
#

okay ty

bleak eagle
#

a bit of java weirdness for you

flint warren
#

ive used c before

#

thats probably why

bleak eagle
#

yeah it must feel like a mess coming from a simple language like that lol

flint warren
#

yh lol

bleak eagle
#

but c has its downsides too

#

/shrug

flint warren
#

anyways ty o/

bleak eagle
#

don't speak too soon, test that first xD

dry hazel
#

== is reference equality, .equals is value equality; you'd have to call .intern() on slot for it to work with ==

bleak eagle
#

yeah the two Strings are actually different

#

their text might be the same but they can't be directly compared

#

because String is not a primitive type in java like boolean, int, or byte, the two Strings are different separate objects

#

it's a whole class, iirc in java.lang

flint warren
#

it works its alr

silk ore
#

I want MMO core support to be added to a plugin. Is there anyone who can do this?

quaint mantle
#

What's the price

bleak eagle
#

for someone coming from any other programming language ever, no it (initially) doesn't

silk ore
#

I wanted theSkills plugin to detect the ids of myhticmob creatures, who can I get this done?

mellow pebble
#

So basically i am making plugin that will replant fully grown crops if harvested after 3 seconds of being harvested but it doesnt really replant it to be fully grown it doesnt even replant it at all so there is no errors or anything like that in console but if someone could check it out

https://paste.md-5.net/cuqisanaci.java

bleak eagle
undone axleBOT
bleak eagle
neat wolf
#

Hello ! I have this error in my console with spigot 1.17.1 when I attack a giant and I move too far away. There are no other plugins on the server and the plugin only spawns the mob.

#

My Code :

public class TestMob extends EntityGiantZombie {
    public TestMob(final World w, String name, float health, double speed, double damage, double range, boolean grief, boolean projectile) {
        super(EntityTypes.G, ((CraftWorld)w).getHandle());
    }

    protected void initPathfinder() {
        this.bQ.a(1, new PathfinderGoalMeleeAttack(this, 0.5, true));
        this.bQ.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, false));
    }

    public TestMob spawn(final Location loc) {
        this.setLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
        ((CraftWorld)loc.getWorld()).getHandle().addEntity(this, CreatureSpawnEvent.SpawnReason.CUSTOM);
        return this;
    }
}

#

And the giant is removed from the world

#

anyone know why?

delicate obsidian
#

Does anybody know I can make players unable to extinguish themselves with water? EntityConbustEvent doesn't trigger for this interaction and a constant check wouldn't work at all

umbral ridge
#

¸ok

#

is this fish not a WaterMob

#

what tf

#

on PlayerFishEvent

#

this is also false for fishes

#

then what tf is a WaterMob

remote swallow
#

probably squids and fish

mellow pebble
umbral ridge
#

what is Fish

#

is it Raw Cod? or what

#

i guess it isnt? xD

young knoll
#

Itemstacks are not entities

umbral ridge
#

since instanceof gives me false

delicate obsidian
remote swallow
mellow pebble
#

can someone help me with java in general i dont understand something with setting environment variables for java

mellow pebble
wet breach
umbral ridge
#

would be better

young knoll
#

No

#

Because the caught entity is always Item

umbral ridge
#

getCaught is an entity

hazy sail
#

Hi, i'm trying to make bot with node-minecraft-protocol

how can i join bungeeserver with packets ?

can't use /server command

umbral ridge
#

Entity

young knoll
mellow pebble
umbral ridge
#

thats really interesting lol

hazy sail
young knoll
#

I mean you always catch items when fishing

#

So

mellow pebble
delicate obsidian
mellow pebble
#

🤷🏻‍♂️

hazy sail
mellow pebble
# hazy sail I can't add a plugin to the server

well really i have never tried to do this but i believe it shouldnt be much different than just following tutorial on how to communicate with bungeecord server for example to send player to another server

#

you most likely just need to send 2 parameters like shown in tutorial

delicate obsidian
mellow pebble
#

here

delicate obsidian
#

😂

mellow pebble
mellow pebble
#

this one

#

try to use this as you can see how it is writing utf to ByteArrayDataOutput connect and then server name which is from config of bungee

umbral ridge
#

is there an event for this? when show creates these piles of sand?

eternal night
#

wild guess would be BlockFormEvent

umbral ridge
#

ahh that's probably it

#

thanks

granite owl
#

and have the 2 threads communicate via a shared data structure

remote swallow
#

async be like

granite owl
#

and thats where id use atomic operations

granite owl
remote swallow
#

no?

#

async is off the main thread

granite owl
#

if its in the context of spigot

remote swallow
#

no its still a different thread

#

idk where you got that idea

eternal night
#

I mean, coms with a DB are hard off the main thread if you need to ensure e.g. order

#

or you need the value back

young knoll
#

yay cache

eternal night
#

yay cache indeed

young knoll
#

Pee is stored in the cache

granite owl
#

ive been told awhile back by alot of ppl that the bukkitrunnable is sheduled but not actually multithreaded

eternal night
#

depends entirely on how you run it

young knoll
#

Regular tasks are run on the main thread

eternal night
#

tho I'd argue, BukkitRunnable is not what you want to use anyway

young knoll
#

Async ones are run in a thread pool

granite owl
eternal night
#

I mean, what would that give you tho ?

young knoll
#

CompletableFuture my love

slender elbow
#

a Thread

eternal night
#

A thread that works away on a queue for DB tasks ?

eternal night
eternal night
#

I mean, sure ?

#

fire and forget isn't the worst idea I guess but becomes ugly for reads

#

then you just end up smacking CompletableFutures into it

granite owl
#

i didnt think about how the threads communicate yet

#

the closest idea i have are pipes

#

but

#

i dont even know if java has access to that

slender elbow
#

threads themselves don't communicate

umbral ridge
slender elbow
#

they just perform some work

#

you do the communication (or use a framework that provides the communication means)

remote swallow
#

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
    // DO SOMETHING
    return "HHELLO";
}

future.whenComplete((result, ex) -> {
    if ex != null theres error handle it cancel
    
    result is now HHELLO and your back on the main thread
});
eternal night
#

at which point, yea you'Ll just end up with a weird impl of CompletableFuture

#

and can probably just use that from the get go

slender elbow
#

there is rarely any benefit if at all in using Threads and queues directly

#

unless you are the one building the framework lol

granite owl
#

if database querys get large and the db gets large the load on the mainthread will increase enough to cause lag spikes

young knoll
#

Mhm

remote swallow
#

thats why you do it off the main thread, eg with futures

young knoll
#

And if it’s some nerd with a MySQL database in another country then… yeah

umbral ridge
#

I love mySQL

#

and im a nerd

#

🤓

vocal cloud
#

Insert delay at 150ms

umbral ridge
#

[insert meme here]

minor junco
#

and I'm a nerd too

#

🫠

ivory sleet
#

yea

#

same

#

postgre so nice

cedar pine
#
    @EventHandler
    public void onMenuClick(InventoryClickEvent menuClicked) {
        Player player = (Player) menuClicked.getWhoClicked();
        ShopData shopData = playerShopData.get(player);

        int clickedSlot = menuClicked.getSlot();
        boolean sendMessage = true;

        ShopSetupStage setupStage = this.playerSetupStage.get(player);

        if (clickedSlot == 3) {
            // Currency setup
            this.playerSetupStage.put(player, ShopSetupStage.CURRENCY_INPUT);
            player.sendMessage(ChatColor.YELLOW + "Enter the item type for currency in the chat. Valid currencies: " + validCurrencies);
        } else if (clickedSlot == 4) {
            // Price setup
            this.playerSetupStage.put(player, ShopSetupStage.PRICE_INPUT);
            player.sendMessage(ChatColor.YELLOW + "Enter the amount for the price in the chat. (Maximum: 64)");
        } else if (clickedSlot == 6) {
            // Finalize Shop button
            if (shopData != null && shopData.isShopComplete()) {
                // Check if the shop is complete
                this.playerSetupStage.put(player, ShopSetupStage.COMPLETE);
                player.sendMessage("Shop created at: " + player.getLocation());
            } else {
                // Notify the player if the shop is not complete
                this.playerSetupStage.put(player, ShopSetupStage.NONE);
                player.sendMessage(ChatColor.RED + "Shop is not complete. Please set currency and price first.");
                sendMessage = false; // Set to false to prevent sending the message twice
            }
        } else {
            sendMessage = false; // Set to false for other cases where no message should be sent
        }

        if (sendMessage) {
            menuClicked.setCancelled(true); // Cancel the click event to prevent issues
            player.closeInventory(); // Close inventory to avoid potential issues
        }
    }
#

Anyone know why the messages are being sent twice when I click currency input or price nput items?

#

Nothing else in the class sends twice, I think it's enums or I'm somehow calling it twice

foggy cave
#

hi

slender elbow
#

hello

drowsy helm
#

also keep in mind that method iwll be called for every inventory

cedar pine
#

It’s just one gui menu

cedar pine
#

Other buttons don’t send duplicate messages

drowsy helm
#

thats not what im asking

#

does the onMenuClick method get called twice per click

cedar pine
#

No, no reason to

#

That’s what I meant by saying I triple checked

drowsy helm
#

how come you are closing the inv for slot 6 but not the others

#

when it prompts a chat input

#

the hwole sendMessage boolean doesnt seem necessary

silent tendon
#

Hello, I'm starting to despair, I made a scoreboard, but I have the problem that as soon as I join, my rank is no longer displayed above my head and in the tab list.

Scoreboard:

public static Scoreboard getBaseScoreboard(Player player) {
        String display = "#0021E0A#0F30E3v#1E40E6e#2D4FE9r#3360EEu#3072F3m#2C84F8M#2996FDC";
        Scoreboard s = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective objective = s.registerNewObjective("test", "dummy", Color.formatHexColor(display));
        objective.setDisplaySlot(DisplaySlot.SIDEBAR);
        objective.getScore("§7 ").setScore(12);
        objective.getScore("§8▶ §9Name").setScore(11);
        objective.getScore("§8➜ §e" + player.getName()).setScore(10);
        objective.getScore("§1 ").setScore(9);
        objective.getScore("§8▶ §9Rang").setScore(8);
        objective.getScore("§8➜ §rAdmin").setScore(7);
        objective.getScore("§6 ").setScore(6);
        objective.getScore("§8▶ §9Coins").setScore(5);
        objective.getScore("§3 ").setScore(3);
        objective.getScore("§8▶ §9Shop").setScore(2);
        objective.getScore("§8➜ §eTesting").setScore(1);

        Team team = s.registerNewTeam("Coins");
        team.addEntry(ChatColor.AQUA + "" + ChatColor.RED);
        objective.getScore(ChatColor.AQUA + "" + ChatColor.RED).setScore(4);

        team.setPrefix("§8➜ §e" + "TEst");
        return s;
    }

To set it I do this in the join event

player.setScoreboard(ScoreboardUtils.getBaseScoreboard(player));
drowsy helm
#

you will have to use the same team

silent tendon
#

Even when I remove teams I have the same problem

drowsy helm
#

when you remove the teams are you restarting the server

#

or just reloading

silent tendon
#

Restart

drowsy helm
#

weird

#

but either way it is the team

silent tendon
remote swallow
#

oh boy i love type erasure

dry forum
#

when targeting a movingblock over a certain y value it just wont go there like its too high or sm, how do i fix this

halcyon hemlock
#

what won't

dry forum
#

the falling block is being shot from a location, 1, 1, 1 for example, and im shooting it to the location 10, 50, 10, for example, the fallingblock just wont go above a certain y level

quaint mantle
#

Hi guys

candid inlet
manic delta
#

Is there any way to disable the particles generated by the rockets when used together with the elytras or when used with right click? I've been looking for how to do it and I can't find any way.

silent tendon
solid apex
#

How can I set an Item in Stonecuter (In the "input" slot)?

vocal cloud
#

Using the inventory you can set the input slot item

spare mason
#

Is It possible to create spheres using block displays?

buoyant viper
#

oh, fucking LABYMOD ?

junior anvil
#

does someone know how to apply force towards a player? for example shoving them away from a position

candid inlet
#

if you meant how to get the vector that would be the opposite of a specific position, just get the delta difference of the player's location and the position you want him to get away from relative to the position.

charred blaze
#

how do i save defaults of custom config?

rare rover
#

why tf does bukkit decide to do this?

charred blaze
rare rover
#

its supposed to be <= not <

silent tendon
valid burrow
#

would’ve probably been more efficient to use Vektors but

#

this works

rare rover
#

cuz its only accurate for the min values

#

should be <=

#

had to make my own method to fix that issue 😦

valid burrow
#

did u at least use vektors

#

vectors

#

german autocorrect got me

rare rover
#

i did not 😦

#

legit just did this:

#

same thing just with <=

valid burrow
#

well

#

it works

#

but if u want a better solution use vectors

#

they almost double in speed i tried

candid inlet
valid burrow
#

btw what class is that anyways

rare rover
#

BoundingBox

valid burrow
#

ah

#

?paste

undone axleBOT
valid burrow
#

ah you use cords

#

well same thing

valid basin
#

Guys does someone know how to send explosion packet on latest spigot using packets?

#

Not nms

inner mulch
orchid brook
#

Hi im trying to learn pdc.
Im using this https://github.com/mfnalex/MorePersistentDataTypes
to store ItemStack and more in pdc without to have to encode my itemstack to base64 etc.

My question is about namespaceKey. If i have an item with a level, a player owner, a storage of item (list<ItemStack) do i need to register one namespacekey for each variable, so one namespacekey for my level, another one for the owner etc. Or just one namespacekey with a String as PersistentDataType

drowsy helm
#

Yes one per

orchid brook
#

Ok thx, and is it good if i register all my namespacekey as a static variable in my main class of the plugin?

proud badge
#

Yo does anyone know if gson saves strings with “ with a \ ?

drowsy helm
#

Wait no you need plugin instance

orchid brook
# drowsy helm Wait no you need plugin instance
private static MyPlugin instance;
public static NamespacedKey GENERATOR_NAMESPACE;

@Override
public void onEnable() {
    instance = this;
    GENERATOR_NAMESPACE = new NamespacedKey(this, "generator");
}

Yep like this ?

drowsy helm
#

Yeah pretty sure thats fine

proud badge
#

Ok so theres no reason to block quotes in commands where players are promted to enter a string?

orchid brook
#

thx 🙂

drowsy helm
#

Double check tho

#

Worse come to worse just encode it

quasi flint
umbral ridge
hazy sail
#

Hi, i'm trying to send a packet to server (bungeecord)

to connect to a specific server

my console

  minecraft-protocol writing packet play.custom_payload +14s
  minecraft-protocol {
  minecraft-protocol   channel: 'BungeeCord',
  minecraft-protocol   data: <Buffer 43 6f 6e 6e 65 63 74 00 38 31 37 36 32 33 38 32 2d 62 32 30 35 2d 34 36 65 65 2d 38 33 33 64 2d 34 66 62 65 35 66 39 62 35 31 34 64>
hybrid spoke
hazy sail
#

my code :

        client.write('custom_payload', {
            channel: 'BungeeCord',
            data: new Buffer(['Connect', '81762382-b205-46ee-833d-4fbe5f9b514d'].join('\0'))
        })
#

The problem is that the bot doesn't connect

lost matrix
hazy sail
lost matrix
#
  1. Client sends a button click to the server
  2. Server sends a connect packet to bungeecord
hazy sail
#

oh ok

#

do you know button click packet ?

#

GUI looks :

lost matrix
#

There is def some utility by prismarine for this

hybrid spoke
azure zealot
#

its not that hard

hazy sail
#

click item → open gui → click on gui → connect to fac

azure zealot
#

what you mean by item click?

#

rightclick the item in your hand?

hazy sail
hazy sail
#

and click on fac serv to be connected

azure zealot
#

i didnt know there i an V keybind

azure zealot
hazy sail
#

it's modded server

azure zealot
#

Do you have an mcp bot or a protocol lib?

#

or do you send everything raw?

hazy sail
azure zealot
#

you need to send the windows click packet

#

with the specified slot id

hazy sail
hazy sail
azure zealot
#

there is

#

you just dont see it because of the texture pack

#

internally its a slot

hazy sail
azure zealot
#

are you 100% sure

#

if so you need to send the packet that the mod is sending

#

but if it has a custom packet for it you also need to impl that custom packet

#

but as its a gui it would likely be a inventory click packet as well

#

you could lookup the network

#

but you would need to decrypt everything

#

or you could debug it in you client

lost matrix
hazy sail
azure zealot
#

deiobfuscate it

hazy sail
azure zealot
#

100% rat

hazy sail
azure zealot
#

send me the mod

lost matrix
slender elbow
#

If anything they use the custom payload packet (as they should, it is for custom payloads for mods to use)

#

but if it's a regular menu with funky fonts and offsets, then it's just common inventory stuff

azure zealot
#

but as its a kind of gui impl its probably just a custom gui iml with custom slot ids

hazy sail
wet breach
#

obfuscation never stopped anything nor does it prevent someone from reading anything either

azure zealot
hazy sail
#

The server is: Paladium

#

biggest pvp-fac french server

wet breach
#

don't care about the server

#

I am probably one of few people here who don't care about MC servers

#

I never played on hypixel if that should tell you anything 😉

azure zealot
#

bro nobody plays on hypixel expect american people

hazy sail
wet breach
#

no it doesn't

#

goes to show how much you know about it

azure zealot
#

i would kill myself before playing bedwoars with 300ms ping

azure zealot
#

depends

wet breach
#

I can use a hexeditor to read java class files just fyi, your obfuscation only changes the class names, method names and variables, but it doesn't change how the program works, how java works or even change the bytecode

azure zealot
#

if they make a native obfucation and than also obfucate the natrive code or crypt it its very hard

wet breach
#

doesn't change the bytecode

azure zealot
#

obfuscators normaly do change the bytecode

slender elbow
#

I mean it depends on the obfuscator

#

and the settings

azure zealot
#

the most obfucators do change everything in the bytecode

wet breach
hazy sail
azure zealot
slender elbow
#

some do

wet breach
#

so they introduce bytecode that the JLS doesn't have?

#

show an example please

azure zealot
#

there are also obfucators that remove als java bytecode translate it to native code and runs everything natively

slender elbow
#

why would the JLS have any bytecode?

wet breach
#

then I will believe the arbitrary introduction of unkown bytecode

slender elbow
#

JLS cares about the language, the VM about the bytecode

wet breach
#

either way, point is, there is no introducing random bytecode that java doesn't know unless you running a custom JVM

azure zealot
#

also yobfuscator can use bytecode instructions that are not allowed in default compilers

wet breach
#

but if you want to say there is, show me an example

azure zealot
#

but in jvm internals

wet breach
#

otherwise I call BS

slender elbow
#

no-one said it's introducing bytes the JVM doesn't know about

azure zealot
#

you can just remove all bytecode and make everything native

slender elbow
#

you just have to change the bytecode in a way that it performs the same logic in the end

wet breach
azure zealot
#

not really

wet breach
#

yes really

#

I do it all the time

azure zealot
#

if you replace string equality checks with hashcode of the string equality checks

wet breach
#

but what do I know bytecode must be magic as much as X86 instruction sets are

azure zealot
#

you couldnt tell what string is checked

#

also as i just said you can use jvm internal instructions that nobody realy knows xd

wet breach
#

but good news for me, as long as you keep believing your fantasies I continue to have a job charging as much as I want for security 😛

azure zealot
#

ARE YOU SURE!?!?!

wet breach
#

yes, other then fact its open source as well

slender elbow
#

yes lol

azure zealot
#

show me the docs of all jvm internal instructions

slender elbow
inner mulch
hazy sail
azure zealot
#

i dont think they are documented

slender elbow
#

"internal only instructions" is no such thing lmao

#

there are instructions

azure zealot
wet breach
#

wells its open source, so even if there isn't like hard documentation you could just look at the code

azure zealot
#

you just downt know xd

azure zealot
wet breach
#

there is docs

#

Anyways, continuing on, most of the JVM internals is instructions to native

slender elbow
#

there are no "internal" or "hidden" instructions

#

it's all publicly documented

wet breach
slender elbow
wet breach
#

lmao

slender elbow
#

what isn't?

azure zealot
#

FAST_INVOKEVFINAL

#

as an example

slender elbow
#

that is not a bytecode instruction, that's a hotspot optimisation

#

hotspot, linked above, is also highly documented

azure zealot
#

no its also an bytecode instruction lmao

slender elbow
#

not

azure zealot
#

you can use it in bytcode

#

ofcourse

dry hazel
#

what's the opcode then

azure zealot
#

int FAST_INVOKEVFINAL = 227;

#

seems like your stupid now hahaha

slender elbow
#

calling people stupid now

#

are you like 13?

azure zealot
#

yes

slender elbow
#

shoulda known

azure zealot
#

i like if it people have no idea but telling me i have no clue

slender elbow
#

I think we do have one or another idea of what we're talking about

undone moon
#

how to get input from sign in spigot 1.20

azure zealot
#

yes but all of you telling me i cant use FAST_INVOKEVFINAL in bytecode