#help-development

1 messages ยท Page 390 of 1

coral kelp
#

huh?

mortal hare
#

im suprised that i've noticed it ๐Ÿ˜„

#

tbh

eternal night
#

but like

mortal hare
#

ik this is minor

river oracle
#

anyone know of a nice abstraction for SQLite or H2 with java I kinda don't like writing SQL xD, and rather not make one myself tbh

mortal hare
#

this wouldnt benefit much

eternal night
#

tje JVM has pre allocated wrapper instances

#

for ints

#

which is what I was talking about

#

the IntegerCache

eternal night
#

iirc, eeeh byte sized ? so -128 to 127

#

contains Integer instances for the ints

#

so those are reused

coral kelp
river oracle
#

idk

mortal hare
#

in that case wouldnt accessing the static field be slower than just jvm using the cache

#

๐Ÿค”

sterile token
river oracle
#

well Mongo has local files they just aren't for production

#

I guess json ๐Ÿคท๐Ÿฝโ€โ™‚๏ธ lol but I'd prefer a DB for this

coral kelp
#

can anyone make this emoji png for me?

#

fully

sterile token
quaint mantle
#

Does MultiBlockChangePacket not exist in 1.16 or 1.7?

tardy delta
#

depends on a vm property

#

(VM.getSavedProperty("java.lang.Integer.IntegerCache.high"))

sterile token
quaint mantle
#

Whats it called on 1.16 and 1.7?

#

I only found on 1.8

sterile token
#

1.8 ๐Ÿ’€

#

how you can code bruh

quaint mantle
#

by skidding hcteams

sterile token
#

I mean i do it, because i get lot of usd from less projects

quaint mantle
#

exactly so shush

sterile token
#

I mean it happen the next

quaint mantle
#

english?

sterile token
#

On newer versions you need to make lot of projects to get the equipvalent from 1.8 plugins

sterile token
quaint mantle
#

misclick

sterile token
#

Thats happen because good 1.8 devs are few, while on newer versions everyone is a dev

#

basically at 1.19 the gains are on volume, while not for 1.8

#

So trying to help you with the Packet thing, i would suggest looking it in the new versions protocols

quaint mantle
#

i am tryning to support 1.7, 1.8 and 1.16

#

nothing else is worth the effort

sterile token
#

oh you were the guy asking about multi modules

#

I just remember

#

are you spanish? Because we have commons spanish friends

smoky oak
#

wasnt alex german?

sterile token
remote swallow
#

if you mean @tender shard , yes

sterile token
#

Well i live on Uruguay

smoky oak
#

ah

sterile token
smoky oak
#

mustve confused you two

#

i mean

#

both of you have alex somewhere on you

remote swallow
#

its probably easier to just remember people off their nick instead of username

sterile token
#

agree

dry yacht
quaint mantle
analog thicket
#
[22:40:04 WARN]: [Casino] Task #8947 for Casino v1.0 generated an exception
java.lang.NoClassDefFoundError: xyz/xenondevs/particle/ParticleBuilder
        at dk.banannus.tasks.crateAnimation.lambda$Animation$3(crateAnimation.java:110) ~[?:?]
        at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:59) ~[patched_1.8.8.jar:git-PaperSpigot-445]
        at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:352) [patched_1.8.8.jar:git-PaperSpigot-445]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:783) [patched_1.8.8.jar:git-PaperSpigot-445]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [patched_1.8.8.jar:git-PaperSpigot-445]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:713) [patched_1.8.8.jar:git-PaperSpigot-445]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:616) [patched_1.8.8.jar:git-PaperSpigot-445]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.ClassNotFoundException: xyz.xenondevs.particle.ParticleBuilder
        at java.net.URLClassLoader.findClass(URLClassLoader.java:445) ~[?:?]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:102) ~[patched_1.8.8.jar:git-PaperSpigot-445]
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:87) ~[patched_1.8.8.jar:git-PaperSpigot-445]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:587) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
        ... 8 more

This Warning/Error pops up when i use particleLib, anyone know why?

#

It worked earlier

#

And yes it is getting imported

remote swallow
#

relocate it

analog thicket
#

How tho?

remote swallow
#

maven or gradle

sterile token
#

?relocations

remote swallow
#

no command

sterile token
#

?relocation

#

they removed it

#

It used to be one

remote swallow
#

there never was

sterile token
#

are sure?

remote swallow
#

mhm

dry yacht
inland condor
#

I bought the plug in for async world edit but I just can't seem to find any mention of where to install the other two files they mention

#

specifically the injector

analog thicket
dry yacht
analog thicket
remote swallow
#

?paste if needed

undone axleBOT
analog thicket
#

There isnt anything i should hide in it right?

remote swallow
#

shouldnt be

analog thicket
dry yacht
#

Don't think so, depends, actually, xD

analog thicket
#

There you go

#

guess ill find out lol

remote swallow
#

the scope provided on the particle lib should be compile

analog thicket
#

I get a overlapping resource doing that

dry yacht
#

Yeah, the shade plugin isn't shading the dependency because of it's scope. I'd not use the scope to shade tho but rather have an explicit include list, as that can save a lot of headaches with shading unwanted jars.

remote swallow
analog thicket
remote swallow
#

it changes the path from being something like old.package.name to your.package.whatever

#

except you dont you need to change imports for it to work

dry yacht
remote swallow
#

smh

#

the package on that would be beter as something like your.package.libs.particle

sterile token
#

Lol

remote swallow
#

or just your.package.particle

sterile token
#

I generated an infinity recursion

#

๐Ÿคก

dry yacht
#

I like to preserve the original package, just to at least give some credit.

analog thicket
tardy delta
#

me working with varhandles cuz my code setup is weird :/

analog thicket
#

oh wait

tardy delta
#

just to set a field that gson cant set

analog thicket
#

1 sec

dry yacht
sterile token
#

what can cuase an infinity loop?

#

Specific a infinity recursion

dry yacht
#

A missing/malformed exit condition, I guess.

sterile token
dry yacht
#

Uhm, what's the concrete issue?

sterile token
#

Its related to my custom file section

#

I think the issue makes sense i realize, but im not sure the best fix

analog thicket
sterile token
dry yacht
quaint mantle
#

For custom enemy NPCS i made an invisible zombie with an NPC that copies it moves etc. for pathfinding and attacking.
Now the thing is that the hitbox of the NPC is overlapping with the zombie's hitbox, which means sometimes i cannot hit the zombie. any way how i could fix this?
video if u dont know what i mean:

dry yacht
smoky oak
flint elk
#

Is there a possibility to fill only these slots?

sterile token
smoky oak
#

also there should be a 'remove hitbox' function somewhere

quaint mantle
sterile token
flint elk
dry yacht
flint elk
#

With items

dry yacht
#

Just iterate it's slots?

quaint mantle
sterile token
quaint mantle
dry yacht
sterile token
#

Are you using a real entity or packet based?

quaint mantle
analog thicket
quaint mantle
tardy delta
#

hmm does anyone knows whether its possible to cache a VarHandle for a field that only subclasses of a certain parent have, but the parent doesnt have that field, so i thought id have to call findVarHandle every time on the new class object but id rather cache the handle?

dry yacht
dry yacht
#

Is the lib not contained in the final jar?

analog thicket
#

Oh wait i cant send pictures -.-

dry yacht
#

:(

analog thicket
#

1 sec ill download gyazo

wet breach
#

!verify

undone axleBOT
#

Usage: !verify <forums username>

sterile token
#

Please send the native picture

tardy delta
#

?img

undone axleBOT
tardy delta
#

whatever

quaint mantle
sterile token
#

Make him sent the native capture

#

๐Ÿ˜ฌ

dry yacht
#

What weird ass provider would block prnt.sc, lol

sterile token
#

All weird uris are filtered via our ISP

#

I tell them to block because i dont like having to open a new page/tab to seing a simple capture

#

๐Ÿคก

analog thicket
#

Well ill have to verify then

#

1 sec

sterile token
#

dont check by name

#

Using custom metadata (PDC on newer versions) or isSimilar() in legacy versions

dry yacht
#

Because items without names have an empty string as their name, which every config value will contain. Contains is the issue here.

sterile token
#

๐Ÿ˜‚

dry yacht
#

You didn't provide a reason. You can check by name, nothing at all wrong with that.

analog thicket
#

!verify Banannus

undone axleBOT
#

A private message has been sent to your SpigotMC.org account for verification!

sterile token
#

Also happen the same with inventories

#

You mustnt look for them via title

analog thicket
#

There you go

sterile token
#

You must use PDC or NbtAPI on legacy versions

analog thicket
dry yacht
#

Love the way you reason, xDD

sterile token
opaque latch
#

What do I need to import in order to manipulate packets?

dry yacht
#

It's rude that you think you're in a position to judge what's bad practise.

sterile token
sterile token
dry yacht
# analog thicket

Decompile the jar, I guess it'll be Casino-1.0.jar in this case, as original will be the backup before the shading process (I assume). You can also just unzip it and check if the package is to be found in there. Hard to tell otherwise.

sterile token
#

they dont contain anymore the shad prefix

#

They called as artifact name, atleast the shaded one

#

So the one which said original, its the one with doesnt contain the shading

dry yacht
#

Depends on whether you use the shadedClassifierName property of the plugin's configuration. But yes, in this case, it wasn't used.

analog thicket
#

Nothing named shades inside any of the folders

sterile token
opaque latch
#

How would I send the brewing animation then

sterile token
#

Im getting an infinity recursion but i cant understand why

#

me?

dry yacht
sterile token
#

Unless you specify them via relocations marker

dry yacht
sterile token
#

what weird shade

analog thicket
dry yacht
# sterile token what inclusions?

Something like this. I don't like just having it decide automatically based on the scopes, as all transitive dependencies could screw me over if they use that scope.

analog thicket
#

Yep that fixed it Thanks alot!

sterile token
dry yacht
sterile token
dry yacht
dry yacht
dry yacht
analog thicket
#

Oh, and i can ignore this right?

dry yacht
#

Warnings can usually be ignored, but we should fix them if possible. Could you provide a bit more context? Are there any specific names which cause trouble?

analog thicket
#

This is the only bit i got.

dry yacht
#

Like, if you highlight the first expandable thingie there and then copy the full text on the right... could you paste that in a paste?

analog thicket
#
[WARNING] Casino-1.0.jar, particle-1.8.3.jar define 1 overlapping resource: 
[WARNING]   - META-INF/MANIFEST.MF
[WARNING] maven-shade-plugin has detected that some class files are
[WARNING] present in two or more JARs. When this happens, only one
[WARNING] single version of the class is copied to the uber jar.
[WARNING] Usually this is not harmful and you can skip these warnings,
[WARNING] otherwise try to manually exclude artifacts based on
[WARNING] mvn dependency:tree -Ddetail=true and the above output.
[WARNING] See http://maven.apache.org/plugins/maven-shade-plugin/

This is the warning in it, idk if you want the rest

sterile token
sterile token
#

Wait maybe i forget to sent it

dry yacht
dry yacht
# sterile token I sent the cap?

You've sent the method, without telling me which method caused the infinite recursion. What are you getting, a stack overflow?

sterile token
#

i can open a thread if you want

dry yacht
#

On what method. I have no way of understanding your code, so I need a name

sterile token
#

because the channel is currently a mess

dry yacht
#

It's fine, just post the whole exception in a paste

sterile token
#

I sent a cap some minutes a go

dry yacht
#

It's not calling itself, right?

sterile token
#

wait let me paste

dry yacht
#

I couldn't spot an invocation

analog thicket
#

Because that seems to fix it.

dry yacht
analog thicket
dry yacht
#

Happy to help! :) Build systems can be a huge pain...

analog thicket
dry yacht
analog thicket
dry yacht
analog thicket
dry yacht
#

Pretty much, yes! Set the previous amount minus one, there's not really another solution. You could save a method call by storing event.getItem() in a separate variable, but that's about it.

dry yacht
# analog thicket Oh so you don't have to add them manually?

I add them to the allowlist (includes) manually, but after that, I don't have to specify any other relocations if they start with my package name. It searches all starting with me.blvckbytes. and then shifts them into my root package, xD.

analog thicket
#

Another question, have you ever tried working with armor stand animations?

dry yacht
smoky oak
#

can someone explain why shulkers on armor stands retain their collision

#

nevermind im an idiot

analog thicket
dry yacht
#

Oh, are you talking about that teleport animation?

#

But sure, just share the routine in question.

analog thicket
#

Ill send it in dm's if thats okay?

dry yacht
#

Sure thing

sterile token
#

I cant understand the why

#

Im till debugging it

dry yacht
sterile token
#

I realized my self its that exception

#

Because the config is getting created like this but infinite times

#
Section:
  test-1:
    name:
      Section:
        test-1:
          name:
            Section:
              test-1:
                name:
#

And that continues to inf

sterile token
#

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: dev.alex.net.file.memory.MemorySection["parent"]->dev.alex.net.file.files

#

Thats the stracktrace

#

There is nothing else rather that

#

I can upload it to github

#

If u want

dry yacht
#

Lol, is this some sort of self referencing structure that screws up the mapper?

sterile token
#

So its easier to checkthe code

dry yacht
#

You can, sure, that would make things easier.

sterile token
#

And im not sure why

#

thats the most stupid thing, im feeling useless ๐Ÿ˜ฌ

#

Also i discover a bug too

#

The whole issue is caused directly to sections code itself

#

Because the keys are not getting correctly

#

Thats how looks, the yaml file

wet breach
#

looks like you did something wrong

#

probably made an assumption somewhere, where you shouldn't have

sterile token
#

what means assumption?

#

i hate the shity lang barrier

#

๐Ÿ˜ก

smoky oak
knotty gale
#

how do I make a wait? like if I wanted to wait 3 seconds and then make something happen?

sterile token
#

Because making thread.sleep() will make your server to freeze

#

?scheduling

undone axleBOT
knotty gale
#

ty

sterile token
#

Yes

#

Mc runs only on 1 thread

#

So when you call the Thread.sleep() you are making your server to wait, so mainly gets freazed until its finish

#

so?

#

๐Ÿค”

#

i dont like jokes sorry man

#

not wondering to be rude haha

#

Im just stressed trying to fix the section thing

#

Look how my yaml is creating the sections

knotty gale
#

I have a message sent after a countdown finishes through the action bar, but when the countdown ends, the message still appears, how do I get rid of the message?

sterile token
#

I need help implementing the section part of my config FileHandler

#

For some reason im getting an overflow exception caused by a recursive call, but i cant find where

hazy parrot
#

can you send your recursive function

#

you probably have wrong exit condition

#

or recursion is just too big

sterile token
#

i have git repo

#

Want to check there?

hazy parrot
#

can you tell me where is that recursive function

sterile token
#

ConfigSection contains the method for creating the section

hazy parrot
#

can you just send me link pls

sterile token
#

And PathUtil, contains an utilty method

#

Yes ofc

#

if you help i dont care

#

haha

kind hatch
#

Why do you have your own version of MemorySection?

hazy parrot
#

of method that throws stackoverflow

sterile token
#

All my plugins depends on bungee and spigot

#

So i dont want to code diff files

#

Just an implement one single way

sterile token
hazy parrot
#

well, this isn't recursive function

sterile token
#

hmn right

#

But its causing a overflow exception

hazy parrot
#

can you send stacktrace

sterile token
#

I cant look for it

sterile token
#

wait

#

1m

hazy parrot
#

๐Ÿ‘

sterile token
#

i broken smth

#

i will reupload code

#

i uploaded all version

coral kelp
#

Anyone know how to put a animated rainbow bold text moving to the left on a snowball?

hazy parrot
#

i have problem i can't fix in php so i would rather wait for your code then break my monitor

regal scaffold
#

?paste

undone axleBOT
regal scaffold
#

I'm trying to understand this code block but I'm getting errors where element.getValue#() is used

sterile token
#

I used to have issues related to that

coral kelp
#

Anyone know how to put a animated rainbow bold text moving to the left on a snowball?

regal scaffold
coral kelp
regal scaffold
#

This is the search funtion too

sterile token
coral kelp
#

Sorry

sterile token
#

You are not paying anyone

#

So you mustnt expect instant support

#

This is how community works

river oracle
regal scaffold
#

@remote swallow

remote swallow
#

that is me

regal scaffold
#

Good vid?

#

xd

remote swallow
#

its okay

regal scaffold
#

Check this rq if you got a second

#

Errors where element.getValue#() is used

remote swallow
#

no idea

sterile token
hazy parrot
#

this function is also not recursive

sterile token
#

right

#

Im really confused

sterile token
hazy parrot
#

also why do you have public ConfigSection newSection(String path, Map<?, ?> def) if you dont even use "def"

#

can you send stacktrace

sterile token
hazy parrot
#

?paste

undone axleBOT
sterile token
#

Caused the overflow exception

#

Also

#

I find another bug

#

The file is not created with the content from default file, hehe i will look them that issue

#

And has 100.000 lines more

#

But they are the same message

#

Yaml look like

#

Its must be a recursive call somewhere

remote swallow
#

through reference chain: dev.alex.net.file.memory.MemorySection["parent"]->dev.alex.net.file.files.YamlConfiguration["values"]->dev.alex.net.file.utilities.DataMap["Test"]->

hazy parrot
#

jackson ๐Ÿคข

sterile token
#

Because if not i need 2 diff libs

remote swallow
#

why dont you just use snakeyaml or spigots built in stuff

sterile token
remote swallow
#

what multi platform

sterile token
#

Dont want to recode everytime the same thing for bungee and spigot

hazy parrot
remote swallow
#

dont they both use snakeyaml?

sterile token
#

that makes you lost time as dev

hazy parrot
#

simple yaml is basically same api as bukkit one

quartz basalt
#

is there a way to check if a block is any type of sign without checking for every material sign

sterile token
#

๐Ÿ’€

#

that why i didnt even fork it

remote swallow
quartz basalt
#

ty

sterile token
#

So its possible to fix it or not

#

Because i need to finish this lib

#

I have been coding it whole day and i can lost more time

remote swallow
#

you could also do

if (Tag.ALL_SIGNS.contains(Block.getType()) {
    do something
}
hazy parrot
knotty gale
#

I have a message sent after a countdown finishes through the action bar, but when the countdown ends, the message still appears, how do I get rid of the message?

sterile token
#

its must be a recursive

#

because if not overflow ex is not thrown

remote swallow
sterile token
#

well, i will just recode with what ChatGPT recommend me

sterile token
remote swallow
#

this is a lib

#

what plugin is using it

sterile token
#

plugin?

#

No its a custom lib

#

Im creating

remote swallow
#

yes

sterile token
#

its a normal maven module project

remote swallow
#

this does not implement java plugin

#

you must be using this somewhere

sterile token
#

no, why'?

remote swallow
#

this is a library not a plugin

#

where do you use this library to get that error

sterile token
#

when i said it was a plugin?

#

Just for debugging it

#

Then i wiill add the FileAPI to my plugins library

#

So far the library will be meant for bungee and spigot, so it must have commong things for coding

remote swallow
#

something is calling that class im pretty sure, which causes the class to be called again

sterile token
remote swallow
#

the thing i picked from the stack over flow says, MemorySection.parent is calling YamlConfiguration.values which calls DataMap.Test which calls that sequence again

sterile token
#

oh i think the issue is specifc caused inside the PathUtil#section()

#

This method here is PathUtil

quartz basalt
#

what is the best way to check if a block is "powered" like if there is a redstone signal/lever going to it

knotty gale
#
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args ) {
        
        if (label.equalsIgnoreCase("h")) {
            if (sender instanceof Player) {
                Player player = (Player) sender;
                Bukkit.broadcastMessage(ChatColor.BOLD + "" + ChatColor.GOLD + player.getDisplayName() + ChatColor.BOLD + ChatColor.AQUA + " Has called HIKE!");
                this.getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {
                    public void run() {
                        if(Number != -1) {
                        if(Number != 0) {
                            for (Player p1 : Bukkit.getOnlinePlayers()){
                            p1.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ChatColor.GOLD + "Blitz in " + Number));
                            }
                        Number--;
                        } else {
                            for (Player p : Bukkit.getOnlinePlayers()){
                                  p.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(ChatColor.GOLD + "" + ChatColor.BOLD +  "BLITZ NOW"));
                                  
                                  return;
                                 
                            }
                        }
                        }
                    }
                }, 0l, 20l);
            }
            else {
                sender.sendMessage("Hey Console! You already know this information!");
                return true;
            }
            Number = 7;
        }
        
        return false;
    }
    
}
remote swallow
quartz basalt
#

the block can be a dirt block though doesnt need to be a block like a redstone lamp

knotty gale
remote swallow
remote swallow
remote swallow
quartz basalt
remote swallow
#

add their uuid and true/false if its running

knotty gale
remote swallow
#

my brain isnt working

remote swallow
knotty gale
remote swallow
#

my brain just brained

#

you dont need a map but a set

knotty gale
remote swallow
#

at the top of the class after the public class stuff.... add private Set<UUID> playersRunning = newnew HashSet<>(); then before you call the scheduler call playersRunning.add(player.getUniqueId())

remote swallow
#

would look something like


public class MyClass implements CommandExecutor {
    private Set<UUID> playersRunning = new HashSet<>();

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        //code
        playersRunning.add(player.getUniqueId());
        //scheduler

``` then when it finishes call `playersRunning.remove(player.getUniqueId())` and check if that player is in the set to tell if its running already
knotty gale
#

and when I do it, the timer still runs really fast sometimes

#

is there a way to end the code after it gets to 0?

warm mica
warm mica
warm mica
warm mica
warm mica
warm mica
sterile token
#

How would look a simple example class for creating a Config Section ?

#

I want to see a simple example if its posible so then i can base on it my FileHandler config section system

warm mica
#

If that's what you mean

sterile token
#

i mean internal code

#

Im confused about creating the section code, the keys mapping

#

Not using spigot api ust to clarify

#

If you are lost you can check on my github what i mean with FileHandler

graceful oak
#

Im currently playing around with note blocks and using them for custom textures and im stopping the left click event on them but its also causing them not to be mineable is it possible to correct that or is there another way to go about it?

warm mica
#

I am confused, are you asking how you use the library that you wrote yourself?

warm mica
sterile token
#

I having a section issue

#

Which is creating the section recursivly, so when you call the MemorySection#newSection() it create the section until an overflow exception is throw, so im trying to see if there is any simple example about a config section implementation where i can base, to find my issue

warm mica
#

If yes, get rid of values.forEach((key, value) -> section.set(path, key));

#

or replace it with
section.getValues().addAll(values)

sterile token
#

sorry i typed what ever

warm mica
#

Look at the exception it throws

#

It should tell you exactly where it is at

#

Go from bottom to top and imagine what it is doing

#

you should find the issue pretty quick

sterile token
#

no

#

It doesnt really tell much

#
Exception in thread "main" dev.alex.net.file.exception.ConfigException: [FileHandler] File config.yml couldn't be saved
    at dev.alex.net.file.files.YamlConfiguration.save(YamlConfiguration.java:45)
    at dev.alex.net.file.test.Test.main(Test.java:19)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: dev.alex.net.file.memory.MemorySection["parent"]->dev.alex.net.file.files.YamlConfiguration["values"]->dev.alex.net.file.utilities.DataMap["Test"]->dev.alex.net.file.memory.MemorySection["parent"]->dev.alex.net.file.files.YamlConfiguration["values"]->dev.alex.net.file.utilities.DataMap["Test"]->dev.alex.net.file.memory.MemorySection["parent"]->dev.alex.net.file.files.YamlConfiguration["values"]->dev.alex.net.file.utilities.DataMap["Test"]->dev.alex.net.file.memory.MemorySection["parent"]->dev.alex.net.file.files.YamlConfiguration["values"]->dev.alex.net.file.utilities.DataMap["Test"]->dev.alex.net.file.memory.MemorySection["parent"]->dev.alex.net.file.files
#

And then it has like 100k lines more saying exaclty thr same

#

I have asked other devs here, and they told there is not recursive function

#

Thats why im really confused trying to look in the code

thin delta
#

is voice chat achievable with plugins?

sterile token
#

Plugins are only server side

#

For doing something like that you must use a custom mod (which represents the client side) and also you will need a backend for it (a plugin or smth else)

#

haha i see you

#

I have said what u were trying to say haha

kind hatch
#

Actually, I was going to say the opposite.

sterile token
#

oh lol

#

you can with server side only?

kind hatch
#

It's possible if you use Fabric or Forge, but the plugins that already exist use a middle man and have integration with discord.

sterile token
#

Because the client doesnt already implement something like that, if he is refering to voice chat, not only texting

thin delta
#

Is there any way for a vanilla client to connect and utilize voice chat in-game?

sterile token
kind hatch
sterile token
#

What i was saying

#

๐Ÿค”

#

He must use a custom mod and a backend, i said it from the start

kind hatch
sterile token
#

๐Ÿคฃ

#

Actually i say 4 times now

#

hahaha

vocal cloud
#

Voice chat is achievable with plugins but you'd need a mod (fabric would probably be best) for the client to utilize it.

sterile token
#

๐Ÿคฃ

#

We can have a 5th round if you want

round finch
#

or just make custom mod and plugin

sterile token
#

๐Ÿ˜ก

#

And then people tell im trolling, haha

round finch
#

bruh that is stupid people saying that

sterile token
#

Another one please mention the same, so its 7th i say the same

round finch
#

there ain't no legit way to do it

sterile token
#

Yeah

lost matrix
sterile token
#

That why you need a mod and a plugin

sterile token
#

i specfied that

#

too

lost matrix
#

But

round finch
#

that too other applications

sterile token
#

For doing something like that you must use a custom mod (which represents the client side) and also you will need a backend for it (a plugin or smth else)

lost matrix
#

Did you know its client side only?

round finch
#

there isn't Minecraft clients

sterile token
#

i love config sections

#

Also recursive issues generating shity oferflow

lost matrix
#

Well you dont need a mod percรฉ

sterile token
round finch
#

config sections get keys helps thb

sterile token
#

Ofc

lost matrix
#

You could make a web application and let people have the website open in the background

sterile token
#

Well thats another option

vocal cloud
#

Yeah but then you might as well use discord lol

sterile token
#

You can use opus lib

#

And own audio handling

#

๐Ÿ˜‚

round finch
#

there is also Minecraft Server Sync with Discord plugins

moves you to channels etc

vocal cloud
#

Because if you're making a web app then what's the point in having to host your own. So much work

sterile token
#

Same if you use a plugin instead of a web

#

๐Ÿค”

lost matrix
#

But discord doesnt allow amplification, or pitch, or reverbs or anything else thats cool.
All you can do is move people into conversations. And thats fking lame.

vocal cloud
#

Then make it lol

sterile token
#

I was told from my family that if you will make something you have to it in the best way

#

๐Ÿ‘

#

LMAOO fucking overflow excpetion

#

๐Ÿ˜ก

lost matrix
#

I already made it. It even detects if you are in caves and adds reverbs.
It also uses the stereo channels and relative locations to add a direction to your sound.

sterile token
#

I actually dserving it

round finch
#

Sockets?

sterile token
lost matrix
#

Just a website. It uses the IP of the user for identification with the mc client.

ancient plank
#

๐Ÿคค now I want Arma 3's tfar mod to have more depth

sterile token
#

You must be using a an audio codec

#

Because if not audio quality goes br, or its good?

#

I mean i never worked with audio before on sites

lost matrix
sterile token
#

Also i suppouse you must be using WS rather plain sockets?

#

But you havent answered to me tho

#

Im really interested

#

Would you sell something like it in a future future? Yes / No Price?

lost matrix
#

lol neither. I did not touch any low level components...

sterile token
#

๐Ÿค”

#

You breaking my brains

#

Dont tell you use native JavaScript audio components

#

๐Ÿ’€

#

But i dont judge the system looks pretty well

sterile token
lost matrix
#

Just asked, i cant disclose. Just one buzzword: *streaming protocol

sterile token
#

Streaming protocol doesnt work allone internally use codecs for audio

remote swallow
#

sign in with their mc account? on your own site? sounds like a pain

sterile token
#

Its really easier with oAuth

#

oAuth was best thing they could developed

remote swallow
#

you a) have to register with microsoft to even allow it b) you have a lot to do to make sure that you dont store any of their data

sterile token
#

Im planning to make a custom authorization and authentification protcol, based on oAuth protocol but with extra things and not dependable on Google limited backend

sterile token
#

It takes more work yes, but depends what you doing

remote swallow
#

all minecraft accounts are now tied to a microsoft account

sterile token
remote swallow
#

to me it sounds like you might be better using uuids and timestamps or just asking people to put their name in is better

sterile token
#

But idk, i prefer all life micro services pattern while making this type of things

regal scaffold
#

How can I get data on a placed invisible armor stand

#

Custom

lost matrix
#

Just get the PDC of the Armorstand

#

Is it a physical one or is it packet based?

regal scaffold
#

I have no clue. I'm trying to figure out how it was made

#

A plugin placed a armorstand like this

lost matrix
#

Alright. Can you destroy the armorstand with your hand?

regal scaffold
#

He was able to load a custom texture onto the head of it

lost matrix
#

Ah ok. Then its probably packet based.

regal scaffold
#

Do you know of any plugins that allow for that?

#

Non-custom

#

Cause like

#

If I can understand where this data is saved I can edit it

#

Oh wait

lost matrix
#

Yeah this is possible. You just need a resourcepack.
They created a custom model in probably BlockBench or something else
and then set it as the head of an ArmorStand.

regal scaffold
#

You gave me the answer with packet pased

#

It's actually

#

DecentHolograms

#

It's literally just a hologram. that's so sick

lost matrix
#

Yeah DecentHolograms will work.

regal scaffold
#
  - content: '#HEAD: BLACK_STAINED_GLASS{CustomModelData:3}'
#

So I assume I make my resource pack interact with that directly

lost matrix
#

Sure. Just set the CustomModelData and you are good to go

remote swallow
#

if i need a gson instance, in my type adapter, how would i actually pass an instance in if i initalize the type adapater in the gson instance

quaint mantle
#

Who can make a plugin for โ‚ฝ currency?

#

Iโ€™m talking about payment

rotund ravine
quaint mantle
#

Iโ€™ll pay 90โ‚ฝ for the plugin

rotund ravine
#

Oh

#

?services

undone axleBOT
orchid gazelle
eternal oxide
#

I'd make one for $1. It wont do anything other than load

quaint mantle
#

How to make a player in a 100hp hot bar?

lost matrix
quaint mantle
#

Yes

lost matrix
#

oof

regal scaffold
#

xd

molten hearth
#

HE'S BACK

#

THE MAN

#

THE LEGEND

#

THE BROKE BANANA

lost matrix
#

Wait is this the spam banana guy who wants everyone to program his rust server?

molten hearth
#

Oh idk I just know he was told to go to services like 30 times and he kept insisting on paying someone here 1 euro

lost matrix
#

XD

#

Well 1โ‚ฌ for now. In like a year its probably more like 40ct

glossy venture
lost matrix
paper viper
#
public class OnEvent implements Listener
{
    Player player;
    CustomGUI instance;
    ActionPerformedGUI handler;


    public OnEvent(Player player, CustomGUI instance, ActionPerformedGUI handler)
    {
        this.player = player;
        this.instance = instance;
        this.handler = handler;
    }

    @EventHandler(priority = EventPriority.HIGHEST)
    public void onInventoryClick(InventoryClickEvent event) {
        if(event.getWhoClicked().getUniqueId() == player.getUniqueId()&&event.getCurrentItem()!=null)
        {
            if(event.isLeftClick())
            {
                handler.actionPerformed(instance, ActionPerformedGUI.ActionPerformedGUIType.LeftClick, event.getCurrentItem());
            }
            event.setCancelled(true);
        }
    }

    @EventHandler(priority = EventPriority.HIGHEST)
    public void onInventoryClose(InventoryCloseEvent event) {
        if(event.getPlayer().getUniqueId() == player.getUniqueId())
        {
            if(instance.getState() == 0)
            {
                MCMania3.getInstance().getServer().getScheduler().scheduleSyncDelayedTask(MCMania3.getInstance(), () -> {
                    HandlerList.unregisterAll(this);
                }, 10);
            }
            else
            {
                MCMania3.getInstance().getServer().getScheduler().scheduleSyncDelayedTask(MCMania3.getInstance(), () -> player.openInventory(instance.inventory), 0);
            }
            handler.actionPerformed(instance, ActionPerformedGUI.ActionPerformedGUIType.Close, null);
        }
    }

    @EventHandler(priority = EventPriority.HIGHEST)
    public void onInventoryClick(InventoryDragEvent event) {
        if(event.getWhoClicked().getUniqueId() == player.getUniqueId())
        {
            event.setCancelled(true);
        }
    }


}

I dont know how to fix the Bug which appears when you close the GUI (ESC) and press on a item inside the GUI (Hover over a itm and press a number)

lost matrix
#

First of all: Dont compare UUIDs using ==. Compare them by calling .equals()

#

Next: Make all your fields private (player, instance, handler)

paper viper
#

that is not the problem

lost matrix
#

We will get there after im done pointing out everything that will lead to failure sooner or later.
Like referencing a Player in your class. Dont do that. Use a UUID instead.

lost matrix
paper viper
#
public class OnEvent implements Listener
{
    private UUID player;
    private CustomGUI instance;
    private ActionPerformedGUI handler;


    public OnEvent(UUID player, CustomGUI instance, ActionPerformedGUI handler)
    {
        this.player = player;
        this.instance = instance;
        this.handler = handler;
    }

    @EventHandler(priority = EventPriority.HIGHEST)
    public void onInventoryClick(InventoryClickEvent event) {
        if(event.getWhoClicked().getUniqueId().equals(player)&&event.getCurrentItem()!=null)
        {
            if(event.isLeftClick())
            {
                handler.actionPerformed(instance, ActionPerformedGUI.ActionPerformedGUIType.LeftClick, event.getCurrentItem());
            }
            event.setCancelled(true);
        }
    }

    @EventHandler(priority = EventPriority.HIGHEST)
    public void onInventoryClose(InventoryCloseEvent event) {
        if(event.getPlayer().getUniqueId().equals(player))
        {
            if(instance.getState() == 0)
            {
                MCMania3.getInstance().getServer().getScheduler().scheduleSyncDelayedTask(MCMania3.getInstance(), () -> {
                    HandlerList.unregisterAll(this);
                }, 10);
            }
            else
            {
                MCMania3.getInstance().getServer().getScheduler().scheduleSyncDelayedTask(MCMania3.getInstance(), () -> Bukkit.getPlayer(player).openInventory(instance.inventory), 0);
            }
            handler.actionPerformed(instance, ActionPerformedGUI.ActionPerformedGUIType.Close, null);
        }
    }

    @EventHandler(priority = EventPriority.HIGHEST)
    public void onInventoryClick(InventoryDragEvent event) {
        if(event.getWhoClicked().getUniqueId().equals(player))
        {
            event.setCancelled(true);
        }
    }
}
lost matrix
#

Better. Now try to explain the problem a bit better because i dont see how you would ever click an item in a closed GUI

paper viper
lost matrix
#

Move this here and try again

#

Wait how do you delegate the events

paper viper
#

that would cancel it for all players

lost matrix
#

oh my god dont tell me you create a listener for every GUI...

lost matrix
# paper viper that would cancel it for all players

Anyways try this

        if(event.getWhoClicked().getUniqueId().equals(player))
        {
            event.setCancelled(true);
            if(event.getCurrentItem() == null) 
            {
                return;
            }
            if(event.isLeftClick())
            {
                handler.actionPerformed(instance, ActionPerformedGUI.ActionPerformedGUIType.LeftClick, event.getCurrentItem());
            }
        }
#

*I hope you dont plan on having many players on your server if you register listeners like that.

paper viper
#

Bug still there

lost matrix
# paper viper Bug still there

wtf is this bug. I have never seen this.
Ok cancel all click events (by moving the cancellation out of you if clause) and tell me the result.
Im suspecting something really bad here.

paper viper
#

still there

#
public class CustomGUI
{
    Player player;
    Inventory inventory;
    ActionPerformedGUI handler;
    int state;
    public CustomGUI(int slots, String title, Player player, ActionPerformedGUI handler, Plugin plugin)
    {
        state = 0;
        inventory = Bukkit.createInventory(null, slots, title);
        this.player = player;
        this.handler = handler;
        Bukkit.getPluginManager().registerEvents(new OnEvent(player.getUniqueId(), this, handler), plugin);
        player.openInventory(inventory);
        handler.actionPerformed(this, ActionPerformedGUI.ActionPerformedGUIType.Init, null);
    }
lost matrix
#

Alright then this problem stems from your handler being unregistered.
You unregister your listener and therefor prevent the cancellation of the click event.

paper viper
#

i have already mad it so it unregisters after 10 ticks

lost matrix
#

Here thats how a listener for GUIs is supposed to look like:

#

Register it once when the server starts and use it for all guis.

#

Never un/register listeners constantly. Its expensive and breaks many edge cases.

#

Alright thats it... i need to write an article for writing proper GUIs...

regal scaffold
#

Can I make a library for my own plugins and include a dependency in that library itself that will then shade automatically onto a plugin I make using that library?

lost matrix
#

Yes

regal scaffold
#

Like if I wanna straight up include

#

AnvilAPI

#

In my library will then just having maven shade my library also include AnvilAPI

paper viper
#

@lost matrix not unregistering fixes it

lost matrix
paper viper
#

I guess i will have to rewrite the eventhandler then

regal scaffold
#

How would I decide which one I want to do?

#

Does it really matter if I shade my lib into every one of my plugins?

lost matrix
lost matrix
# paper viper I guess i will have to rewrite the eventhandler then

One moment ill give you a kick start:

public interface InventoryHandler {

  void onClick(InventoryClickEvent event);
  
  void onOpen(InventoryOpenEvent event);
  
  void onClose(InventoryCloseEvent event);

}
public class GUIManager {

  private final Map<Inventory, InventoryHandler> activeInventories = new HashMap<>();

  public void handleClick(InventoryClickEvent event) {
    InventoryHandler handler = activeInventories.get(event.getInventory());
    if (handler != null) {
      handler.onClick(event);
    }
  }

  public void handleOpen(InventoryOpenEvent event) {
    InventoryHandler handler = activeInventories.get(event.getInventory());
    if (handler != null) {
      handler.onOpen(event);
    }
  }

  public void handleClose(InventoryCloseEvent event) {
    InventoryHandler handler = activeInventories.get(event.getInventory());
    if (handler != null) {
      handler.onClose(event);
    }
  }

}
public class GUIListener implements Listener {

  private final GUIManager guiManager;

  public GUIListener(GUIManager guiManager) {
    this.guiManager = guiManager;
  }

  @EventHandler
  public void onClick(InventoryClickEvent event) {
    guiManager.handleClick(event);
  }

  @EventHandler
  public void onOpen(InventoryOpenEvent event) {
    guiManager.handleOpen(event);
  }

  @EventHandler
  public void onClose(InventoryCloseEvent event) {
    guiManager.handleClose(event);
  }

}
paper viper
#

and my gui would have to implement InventoryHandler then right?

lost matrix
#

Yes

#

Then you put the Inventory and the handler of that Inventory in your map and open it for a player.

regal scaffold
#

Smile answer mah question bby

lost matrix
#

When he closes it you just remove it from the map again.
Unless the inventory is for all players and doesnt change.
Then you can just create it once and leave it in the map.

lost matrix
regal scaffold
#

Hmmmm ok I see

#

Do you have a lib that you use?

lost matrix
#

Yes but my public lib is pretty bad and my private lib is... private ๐Ÿ˜„

regal scaffold
#

Is there no chance I can peak at the priv one?

#

I wanna start making my own but don't have much of a base on it. Jefflib confuses me a bit too

lost matrix
#

There is your peak

regal scaffold
#

Ok I see. I kinda get an idea

regal scaffold
#

Show me some class file names in a picture if you can too

#

Like for example Actionbar and data. no code just names

lost matrix
#

Start by adding 1 feature. Either GUIs or Holograms or something else you could need in every plugin.

regal scaffold
lost matrix
#

Like a custom config handler thats reusable

regal scaffold
#

Gui implementations are always so damn annoyinhg

lost matrix
#

If you have written some plugins then you should think about everything you have
to write twice or more often. Thats what a lib is supposed to prevent. Your lib should
provide reusable code so you dont have to repeat yourself in every plugin.
Eg. translations. Or GUIs. Or Holograms. You dont want to re-write those in every plugin.

regal scaffold
#

Are libs just full of static methods?

#

I'm pretty confident no

lost matrix
#

For GUIs im writing a tutorial at this moment

regal scaffold
#

I need that cause GUI's are painful

#

And probably GUI needs to be my first module for lib

lost matrix
regal scaffold
#

Wait so it is just full of static methods then?

#

Man besides stuff like creating holograms easier and stuff like that I find it hard to wrap my head around how much they would help

lost matrix
#

I meant that the use of static is limited to the few util classes within your lib.
And most classes are not pure util classes.

regal scaffold
#

And like the typical Utils.HEX()

mortal hare
lost matrix
#

Yes 1.20 will be cool. I already got some ideas ๐Ÿ˜‰

mortal hare
#

they should add alpha channel for the entities

#

imagine semi transparent entities

#

or blocks

lost matrix
#

You will actually be able to tint the screen of a player by just displaying a huge colored block in front of their face

mortal hare
# paper viper

that's actually a normal behaviour that only works with creative mode inventories

chrome beacon
#

Minecraft is already bad at transparency

#

So they'd need to work on that

mortal hare
#

they should implement this type of blur as a vanilla feature

#

it looks cool

analog thicket
#

Does anyone have a link to how to upload stuff to github using IntelliJ Idea?

analog thicket
regal scaffold
#

VCS = Version Control System

lost matrix
#

VCS = Version Control System

regal scaffold
#

1-0

lost matrix
#

sniped...

mortal hare
#

literally create git repository is above the github selection ๐Ÿ˜„

regal scaffold
#

Alright smile I have another question'

#

Both those resources have a bunch of packages for each minecraft version. Now I know this has to do with nms

#

Wait nvm I don't remember my question now

lost matrix
#

f

regal scaffold
#

I have a different one tho

#

Does alex write these clases per version manually?

#

For each damn version?

lost matrix
#

Yes

regal scaffold
#

bRuH

lost matrix
#

They usually dont change that much so its fine

regal scaffold
#

So what, you make a base one then go making the changes needed as you go?

#

Would you look at that. Just talking about @tender shard and he updated his repo 10 seconds ago while I was browsing it lol

#

What your thoughts on IF smile

#

When your tutorial on GUI coming? ๐Ÿ‘€

pseudo hazel
#

gui is easy

regal scaffold
#

Is hikariCP best practice atm/

vocal cloud
#

I mean it's good to use

#

If you don't want to handle connections yourself

eternal oxide
#

hikari is nice. It takes a lot of teh work off you

regal scaffold
#

So i'm trying to figure out how to structure a lib on intelliJ.

Lets say I want to include my library to have Hologram functionality

#

Should I make a separate module for it and use maven to combine them? Is that better organization wise?

tardy delta
#

why dont i need a default here?

regal scaffold
#

Man I'm looking at other peoples libraries and it's so different from eachother... 10000000 ways of doing the same thing...

#

Some of that looks so bad but idk if it's the best way or not

quaint mantle
eternal oxide
#

You have created a packet NPC. It doesn;t exist anywhere but on the client so no event will be triggered on the server

quaint mantle
#

or a way to create a non packet npc

eternal oxide
#

no

#

yes

#

follow teh tutorial I linked you yesterday

quaint mantle
#

didnt get it holdup

#

around when did u send it?

eternal oxide
#

just had the same requests

quaint mantle
#

alright thanks

quaint mantle
eternal oxide
#

I liked it. He made a few mistakes but it's clean

quaint mantle
#

yea ig

#

it worked, half

eternal oxide
#

and its entity based so you have all event triggered

quaint mantle
#

also which packet gets rid of the npc on the tablist

eternal oxide
#

info packet remove

#

I don;t know the exact one for 1.19.3 as it changed from 1.19.2

quaint mantle
#

ofc they did

quaint mantle
#

for the tutorial

eternal oxide
#

I'd read all the tutorial and decide for yourself

quaint mantle
#

alright

tardy delta
#

heh var not working for static constants

dry yacht
mortal hare
tardy delta
#

what will it return when none of the cases matches then

mortal hare
#

null probs

tardy delta
#

:/

#

mojangs files probably arent broken so that shouldnt happen

#

deserializing this goes kinda brr

dry yacht
#

It's still funny how switch case statements on enumerations don't seem to be satisfied if all constants are accounted for, and they still force the stupid default case on you, which then kills the aid of the compiler when the enum is extended later on. At least I couldn't get it to work as expected.

dry yacht
quaint mantle
tardy delta
#

mojang also keeps it interesting to sometimes include the "group" key in the json and sometimes not ๐Ÿคก

dry yacht
#

Would be too easy otherwise, :)

tardy delta
#

smh

#

gson also gave up

molten hearth
#

abandon all hope, gib up

tardy delta
#

the only thing i could do was writing typeadapyters

#

cuz the reflection didnt help in any way

quaint mantle
#

getting this error:

Caused by: java.lang.IllegalAccessError: class quac.funnystuff.Entity.Custom.New.NPC (in unnamed module @0x74a18be0) cannot access class com.sun.tools.javac.util.List (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.util to unnamed module @0x74a18be0

this is the line:

   ClientboundRotateHeadPacket headRotation = new ClientboundRotateHeadPacket(entityPlayer, (byte) ((location.getYaw() * 256f) / 360f));
eternal oxide
#

Looks like you imported the wrong List

quaint mantle
#

fixed it all

quaint mantle
eternal oxide
#

yes his rotation code is wrong

#

one sec

dry yacht
#

This might help as some inspiration.

eternal oxide
#

this is what I use for my NPC

quaint mantle
#

what about the show all function?

#

it changes it there aswell

quaint mantle
eternal oxide
#

ClientboundRotateHeadPacket(npc, (byte) Math.floor(npc.getYHeadRot() * 256f / 360f))

#

that with the above method works for me for head rotation

quaint mantle
#

alright

#

i also saw some1 in the comments post about AI and pathfinding, ill look into that

#

except if u got smt better

quaint mantle
#

also, when i reload my plugin and an npc existed before the reload, when i hit it my server crashes. any way to fix?

#

like i could delete all npcs before reload but idk if thats a good idea

swift pumice
#

@eternal oxide can you help me dude

eternal oxide
#

yes remove and respawn. Its the connection which is killing your server. If you don;t prevent packets being sent to the fake Player the server will crsh

#

Its really a Player so the server expects a client to be on the other end

quaint mantle
eternal oxide
#

you could

#

at least a getter

quaint mantle
#

i cant think of other ways rn

ancient plank
quaint mantle
eternal oxide
#

I'v not done PF

quaint mantle
#

oh alr

#

for now ill put this on the side and work on smt else

#

whats the best way to create a scoreboard? an external api or just the spigot api?

eternal oxide
#

spigot

mortal hare
#

bukkit api is the best, since using raw packets could lead to some plugin conflicts

#

since there could be only one scoreboard per player

#

in the minecraft client

lost matrix
small hawk
#

What will be the best option, to check if myPlaceBlock is in range of water, cause water destroy PlayerHeads and i need to block it

dry yacht
opal juniper
#

cool

vocal cloud
#

That looks like JavaScript parsing scareDog

mortal hare
lost matrix
lost matrix
dry yacht
dry yacht
vocal cloud
weak meteor
#

Can someone help me?

        if (!config.exists()){
            getLogger().warning("[Void-Core] Config file not found!");
            return;
        }
        config = YamlConfiguration.loadConfiguration(configFile);```
#

So im getting this error at the last line in config = YamlConfiguration.loadConfiguration(configFile);

#

"Cannot resolve method 'loadConfiguration(File)'

small hawk
weak meteor
#

at the first line isnt i?

alpine narwhal
#

Also why all that extra work for the default config?

small hawk
lost matrix
#

Because this should work

echo basalt
#

My menu system works in a similar way, but instead of just calling setItem(slot, button), you can create a selection which returns a List<Integer> slots

#

You can then make classes for geometrical selections (like rectangles or hollow rectangles, etc) or masks

#

I'd use an interface instead of a Button class

#

and make the button class impl the interface

#

Other elements can be for example, cyclic switches

lost matrix
terse ore
#

One Java question

#

if I have a Class for a command named Event

#

and I would like to have another class named Event for having the properties like event location, event name, etc

#

how could I do so

#

should I rename the Event commadn class to EventCommand?

quaint mantle
#

is there a way to save data in a block

lost matrix
#

?blockdata

#

?blockpdc

undone axleBOT
quaint mantle
#

thx

lost matrix
quaint mantle
#

well the only thing i need to save is an id or smt so i can use tilestates ig

#

Is storing data in the PDC of a player safe?

#

Can an exploiter modify modify it?

lost matrix
#

No its server side only

quaint mantle
#

Ah, thanks

#

I don't want to mess with .yml files or sqlite databases to store data

tardy delta
#

Please dont store your whole playerdata in the players pdc

quaint mantle
#

Why not?

#

Is it slow?

tardy delta
#

There are better solutions for bigger data, not talking about some small values here

quaint mantle
#

Well, I just need to store a few items

tardy delta
#

you better be kiddin me

#

object is not a functional interface smh

untold stirrup
#

can plugins spigot or bukkit working on software NuckitX ?

smoky oak
lost matrix
tardy delta
#

thats interesting, whatever i was just trying if it would work

#

im using gson to not use the reflection ๐Ÿค”

chrome beacon
#

So the answer is no

#

Nukkit runs nukkit plugins

tardy delta
#

ugh im bad at regex, whould would be a pattern to match both @NotNull and @Nullable? @[NotNull,Nullable] i thought

chrome beacon
#

huh why are you regexing annotations?

tardy delta
#

ugh i gotta remove annotations from a bunch of files and id rather not do that manually in ij

#

can always do replace twice but that still takes twice as long

remote swallow
#

it takes like 2 seconds

zealous osprey
pseudo hazel
#

you can also just do a direct string replace instead of using regex if you arent sure

#

or use some site to check the regex

tardy delta
#

@NotNull|@Nullable works ig

#

smh some places actually require the param, this is fun

icy beacon
#

but you do you xd

tardy delta
zealous osprey
icy beacon
#

shouldn't it be .+?

#

or is it the same

#

yeah it is the same

#

regex101 says so

zealous osprey
#

.+ would assume there is something in the braces, but they can be empty, right?

icy beacon
#

wait nvm

#

yeah

#

+ is one to unlimited

#

* is zero to unlimited

#

wow, good to know

tardy delta
#

used to have some regex knowledge but its all gone

zealous osprey
#

And then {x|y} for anything between x and y

quaint mantle
#

how do i make a database to store player data in

icy beacon
quaint mantle
#

fair

icy beacon
#

first choose the database you want to work with

#

i normally do mysql/mongodb

#

then just find any guide to create a database and connect there

#

and i guess you gotta learn how to make requests to those databases

quaint mantle
#

ill do mysql since im going to have to work with that in my course for a java certificate

icy beacon
#

alrighty then, mysql is very popular so you'll find a ton of guides

#

if you use linux you can create your database from the terminal

#

if you want it to be hosted somewhere else, well, find a hosting duh

lilac dagger
#

where can i find the latest craftbukkit source?

chrome beacon
#

?stash

undone axleBOT
icy beacon
#

sniped

lilac dagger
#

thank you

quaint mantle
chrome beacon
#

Yes

icy beacon
#

yeah but it's a bit more scuffed imho

chrome beacon
#

eh not really

icy beacon
#

well it's not but i find it a more awkward approach

lilac dagger
#

for some reason my intellij crashes while opening CraftItemStack

chrome beacon
#

Just grab the installer

icy beacon
#

for my preference

quaint mantle
#

mysql aint free?

chrome beacon
#

It is

quaint mantle
#

ohh community download

#

wasnt on the main download page for some reason

#

the msi installers are only x86, 32bit is that fine?

chrome beacon
#

Yes

quaint mantle
#

also the database function in intellij, can i use that to create a database or only access it?