#help-development

1 messages ยท Page 895 of 1

wet breach
#

@young knoll is this true?

icy beacon
#

How the fuck do I publish a maven library to local gradle

#

I ran mvn install, it's in my .m2

#

But my gradle project does not recognize it

#

It's not in .gradle\caches\modules-2\files-2.1

#

And it probably should be

#

How though lmao

wet breach
#

its not like the maven install command is used for anything else but maven

icy beacon
#

Kinda hoped they would try to be at least a little compatible with eachother

remote swallow
#

add mavenLocal() to dep block

icy beacon
#

Well now I see that it does not work that way

remote swallow
#

it does

#

you just probably dont have the maven local repo added

lost matrix
#

gradle can use maven local dependencies

icy beacon
#

But I'll try

remote swallow
#

check its added and ensure that spelling + case is identical

icy beacon
remote swallow
#

on github?

icy beacon
#

No, it's a local project

#

I copypasted groupid, artifactid and versionid into the gradle striong

#

To be sure

remote swallow
#

?paste the build.gradle

undone axleBOT
icy beacon
#

Your solution helped

#

I am not this fast at typing lol

#

mavenLocal() saved the day

remote swallow
#

ah kek

icy beacon
#

Ty

wet breach
#

got to be a fast typer sometimes ๐Ÿ˜‰

#

otherwise how else you going to shave them coding times?

icy beacon
icy beacon
wet breach
#

Lol, or you could just type faster ๐Ÿ˜„

#

like 150-200

icy beacon
#

Yeah I wish lmao

wet breach
#

just get one of them small keyboards like they use in court rooms

remote swallow
#

stenography or smth

wet breach
#

stenography is also correct too I suppose

#

I am actually surprised you knew that though

icy beacon
#

I mean my keyboard is a bit weird during winters

remote swallow
#

i spent like half an hour watching stuff on it

icy beacon
#

It has like a metal case and when I get up and sit back down and touch it, it occasionally shocks me and stops fucking responding until I replug it

wet breach
remote swallow
#

i was bored

icy beacon
#

Thankfully the wire can be reattached from the front

wet breach
#

wire?

icy beacon
#

Well like

wet breach
#

so it has like exposed wires or something?

icy beacon
#

Bad wording

#

Uhhhh

#

Crod

#

Cord

#

It has like a type c cord I think

wet breach
#

ah, ok. I assume you have carpet?

icy beacon
#

Yeah

wet breach
#

and you wear socks everywhere?

icy beacon
#

Wrong wording again fuck

#

I have a big mousepad lmao

#

For some reason that came to my mind when you said carpet

remote swallow
#

is this a static moment

icy beacon
#

There's no carpeting on my floors no

#

But socks yes

rotund ravine
#

Zbll

icy beacon
icy beacon
rotund ravine
#

Colour

wet breach
icy beacon
icy beacon
wet breach
# icy beacon I am all ears

just make yourself a grounding rod and put it near your desk. Before you touch your keyboard, just touch the grounding rod first

icy beacon
#

Good idea actually

wet breach
#

however, your keyboard is flawed itself too

#

because for some reason it isn't grounded properly

icy beacon
#

Yeah it's irritating

wet breach
#

being grounded properly doesn't mean you wouldn't have that static shock, but it shouldn't actually cause the keyboard to do anything

#

I wonder if maybe if something in your keyboard is stripped ๐Ÿค”

#

the only metal keyboards I know of are mechanicals

icy beacon
#

I'll send you the keyboard 1 sec

#

Glorious GMMK 2

wet breach
#

I was right, its a mechanical ๐Ÿ˜„

#

would have been surprised if it wasn't though

icy beacon
#

It's a good keyboard, this flaw is rly annoying though

lament maple
#

my bat file worked before until i switched to java 17 and downgraded back to java 8

rotund ravine
icy beacon
wet breach
#

apparently the case of the keyboard is not grounded to the USB like it is supposed to be and is a known flawn with that keyboard of yours

#

so what you can do is add a ground wire to the keyboard case and run it to the USB ground wire

#

and it should stop causing your keyboard to do funny things

#

also, from my limited research the static electricity is known to kill that keyboard as well

wet breach
#

yeah, so whats happening is the static shock is going through the keyboard board

icy beacon
#

Frankly I've been planning to get a new keyboard since this one has been with me for a decent while and I have an addiction to buying things

#

But wow you really did your research holy cow

icy beacon
#

Like it's just the case, shouldn't be going through

#

I see

wet breach
icy beacon
#

I do crave one of them funky steelseries keyboards

#

But they are way out of my budget

wet breach
wet breach
#

lol

icy beacon
#

I do not think I can be considering anything above 80$

icy beacon
#

And I just got my biggest commission

#

So I decided I'd reward myself

wet breach
#

the second link I sent is more in your budget then

#

$74.99

icy beacon
wet breach
orchid gazelle
#
wet breach
#

red for whatever reason is the cheapest

orchid gazelle
#

I am about to buy this keyboard

wet breach
#

and you need your keyboard in korean?

icy beacon
# wet breach select red for the switch type

Either way I cannot be ordering from there because they are 100% not delivering to Russia, and on the electronics website that I use to buy, well, electronics and stuff, this keyboard is ~105$

icy beacon
wet breach
#

lol that is what made it more expensive ๐Ÿ˜›

icy beacon
#

It wasn't even a misclick it was just a hover lol

wet breach
#

they just don't like the EU it seems then

icy beacon
#

Most likely lmao

wet breach
#

its on sale in the US for $74.99

#

but normal price is $100

icy beacon
#

If you have any other recommendations I'll actually be happy to see them because I have not yet decided on what I'd be buying. Like just ping me and I'll see it when I get online lol

#

I gtg now

wet breach
#

cya later

icy beacon
#

Cya

wet breach
#

have fun building that ground wire

icy beacon
#

๐Ÿ˜›

upper hazel
#

why this error sends when i try create fake player nms

inner mulch
bleak eagle
upper hazel
#

nick length?

inner mulch
#

No Index limit

wet breach
bleak eagle
#

thx :D

#

pretty proud of it as a first good plugin xD

upper hazel
#

what do you mean

inner mulch
wet breach
bleak eagle
#

it uses PDC to store a sha256 hash of the password into the player

upper hazel
#

nick?

#

or smth else

inner mulch
#

Idk what u are doing in ur Code

#

Thats only what i can tell from the error

wet breach
icy beacon
upper hazel
#

oh wait

#

i found

icy beacon
#

I assume you don't do that rn because atm they can move freely after unregistering

bleak eagle
#

yeah i don't

#

it should be easy enough because it's constantly checked on move events which are cancelled if the player is logged out

icy beacon
#

Yup

quaint mantle
#

Seems like PlayerInteractEntityEvent doesnt work with BlockDisplays.

Is there any other event for that?

bleak eagle
#

@wet breach bukkit.commands.whatever still works - but i'm on paper

#

don't think that makes a difference but oh well

wet breach
#

no it don't make a difference

#

I figured as much they would still work lol

bleak eagle
#

NVM doesn't

wet breach
#

@rotund ravine they still work

bleak eagle
#

i spoke too soon

wet breach
bleak eagle
#

i thought they did for a sec xD

#

it might be because they ditched their own implementations in 1.8 to use the vanilla ones under the minecraft: namespace

#

dunno how it's done now

wet breach
#

I will have to this weekend load up a server and see

bleak eagle
#

i was thinking of also making a plugin to restore skins on warez servers

wet breach
#

warez servers?

bleak eagle
#

would that need some extra tinkering like nms or could it just be done from spigot api?

#

offline-mode=true server :P

wet breach
#

you should be able to do it with the api

bleak eagle
#

nice

#

i have to study how that texture server shenanigan works

#

maybe an api request with a uuid to get it?

#

oooo capes can be set too

bleak eagle
wet breach
#

yep

rotund ravine
slender elbow
#

discord is dying fr

broken stirrup
#

hey does anyone how to register a loot table so i can use it in commands, mobs and chests?

rotund ravine
#

Datapacks

broken stirrup
#

no other way?

tender shard
#

is sth like this possible in java too?

chrome beacon
#

Not sure what that does

dapper flower
#

how to checkif item has different name than default one?

rotund ravine
#

On the meta

tender shard
dry hazel
#

well you can make an util method that takes that generic type and functional interface

slender elbow
#

the fact it's an extension function kinda shows it has to be not a function "of" the type

tender shard
#

but with a normal util class it'd only have access to visible members while like this it can also see private members, isn't that correct?

slender elbow
#

not if it's in the class itself

#

static methods in the class can access its private members when given an instance

native thorn
#

hi whats up

#

i got a question

rotund ravine
#

?ask

undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

native thorn
#

i was typing it

#

chill

dapper flower
native thorn
#

i have a spawn with the multiverse core plugin but how do i make it that they cant break blocks?

#

cause now they can just grief spawn

rotund ravine
#

Use worldguard or smth

worldly ingot
#

That's all extension methods are is static methods that accept the object as the first arg, so if the first arg has a specific generic, then you can't use it for any other generic type

slender elbow
#

that's basically what it compiles to

native thorn
worldly ingot
#

Or if you want to further scope it, give the method a generic type and extends something, public static <T extends Whatever> void doSomething(TheObject<T>

rotund ravine
native thorn
#

i suck at this so yeah sorry

#

i couldnt find anything about it

rotund ravine
dry hazel
rotund ravine
worldly ingot
dry hazel
#

you can still access properties of the enclosing class within an extension as a member

worldly ingot
#

Sure. You can do that if the static method is within the class as well

rotund ravine
#

Kotlin is special

native thorn
#

in help-server

worldly ingot
#
public class MyObject {

    private int privateMember = 1;

    public static void example(MyObject object) {
        System.out.println(object.privateMember);
    }

}```
#

Just as an example :p

dry hazel
#

but the extension method is a member of the class in that case

#

non-static

rotund ravine
#

No

#

Only in the view of kotlin

dry hazel
#

I'll make an example of what I mean

worldly ingot
#

Yeah, that's just how Kotlin works :p

rotund ravine
#

Itโ€™s compiled to a static method

worldly ingot
#

but Kotlin doesn't exist. It's still JVM bytecode at the end of the day

#

It has to be supported by the JVM

slender elbow
#

kotlin doesn't exist is my favourite sentence ever

tender shard
#

but how would this work in java? wouldn't both static methods have the same signature?

slender elbow
rotund ravine
#

Think he meant on use Emily

worldly ingot
#

One of two likely options. Either named something differently with a generated name at runtime, or generates a new class for each extension method

quaint mantle
#

Compile then decompile

slender elbow
#

the type needs to be statically accessible

rotund ravine
#

Iโ€™m wondering which extension itโ€™ll go for. Cause u can extend clases to use an extension

worldly ingot
#

All I'm saying is that Kotlin is black magic, and back in the day we used to burn people at the stake for that kind of thing

#

Maybe we should take the hint ๐Ÿ‘€

slender elbow
#

true

worldly ingot
rotund ravine
river oracle
#

Kotlin is pretty good

#

ngl

tender shard
#

yowza

river oracle
#

there is some weird black magic shit in there tho lol

tender shard
#

would be boring if it'd be the same as java lol

slender elbow
#

it basically is

#

just funny syntax

rotund ravine
#

Fake news my jdgui decompiler canโ€™t decompile half my kotlin classes and it can decompile all my java classes /s

worldly ingot
#

If you think about it, it is java

river oracle
#

I rememeber someon saying in here there was a better decompiler GUI out their than JDGui I am extremely skeptical cuz I forgot the name of it :P

rotund ravine
#

Just not used as one in kotlin

slender elbow
#

that's so cursed wtf

dry hazel
#

it works even if the property is private

rotund ravine
#

Yes

dry hazel
#

jesus this is pain to do on mobile

#

I wanted to throw it into compiler explorer

bleak eagle
# minor junco interesting

I weirdly haven't seen any auth plugins do that and they instead use an external database file for storing passwords which is overcomplicated

#

the only thing I can think of is security since the sha256 password hash of someone is visible when you /data get them

#

but /data can only be used by ops and it's a hash either way

slender elbow
#

you know that

proud badge
#

is Location1.equals(Location2) not true if they yaw/pitch are different?

dry hazel
river oracle
eternal night
#

I don't really deal much with UI based decompilers ๐Ÿ˜… ยฏ_(ใƒ„)_/ยฏ

#

its certainly usable tho

#

so just โœจ give it a try โœจ

river oracle
#

gui based decompilres are very important to me

#

how else am I supposed to decompile CMarcos plugins easily

eternal night
#

my condolences

rotund ravine
#

All extension methods are static

proud badge
#

Wait how come its always true?

#

i dont understand

eternal night
#

you never modify the hashset

#

it is empty

proud badge
#

Yeah but im looping this thing multiple times

dry hazel
eternal night
#

it is still empty

bleak eagle
eternal night
#

empty set will never contain user

proud badge
#

Ok wait ill write the other lines, maybe it'll understand

bleak eagle
#

you've created users set but never added anything to it

#

so it will of course never contain any user

proud badge
#

ok it fixed itself but how come its unnecessary? I dont want the set to have multiple values

bleak eagle
#

it will go away when you write the rest if the code

tender shard
#

wtf is wrong with my IJ

tender shard
proud badge
#

look at the tip

#

Why does it say it is unnecessary?

proud badge
#

Can those not have duel values?

eternal night
#

no

proud badge
#

Ok I see thanks

eternal night
#

that is the whole point of a set

rotund ravine
proud badge
#

I thought set = no order

bleak eagle
#

yeah no need to check

#

duplicates will already be ignored

proud badge
#

Ok thanks I see

tender shard
#

what's wrong with my IJ ๐Ÿ˜ฟ already invalidated caches 3 times

rotund ravine
#

It died

#

Not sure how to fix.

#

Could remove project without deleting it

#

Restart ij and reimport it

tender shard
#

auto formatting turns it into this nasty mess

tender shard
worldly ice
#

Is that supposed to be kotlin? The file extension is .java

rotund ravine
#

Oh

tender shard
#

thanks

rotund ravine
#

Ahaha

tender shard
#

that also explains why it compiled

worldly ice
tender shard
#

because it ignored the file lol

rotund ravine
#

I only checked if it was empty not if it was java

tender shard
#

damn why is Java Class still at the top of IJ's menu even in src/main/kotlin kek

sacred mountain
#

hey how do i create a mining fatigue (entity effect) packet with protocollib?
I've been trying to write to the integer/byte fields from the wiki.vg
But i keep getting index out of range errors when i write to the fields

effectAdd.getIntegers().write(0, player.getEntityId());
effectAdd.getIntegers().write(1, 4);
effectAdd.getBytes().write(0, (byte) (255));
effectAdd.getIntegers().write(2, 1);
effectAdd.getBytes().write(1, (byte) (1));

https://wiki.vg/index.php?title=Protocol&oldid=18256#Entity_Effect

#

im tired so it might be stupid

river oracle
river oracle
tender shard
#

it finally works! and it can even infer the type from down there to the context<..> part o0

river oracle
#

noooo I use java to get away from ASM pepesob

#

atleast its just JVM asm lol

rotund ravine
sacred mountain
young knoll
#

You should use the new api for that :p

sacred mountain
#

ah

proud badge
#

Is there a simple way to compare if two locations are the same? .equals wont work if the yaw/pitch are different (or will they)?

young knoll
#

just compare xyz then

#

or toVector them and compare those

sacred mountain
young knoll
#

probably

sacred mountain
#

i'm just unsure as to what i've done wrong, in the documentation it says there are 3 varint fields and then when i add them, it tells me index out of bounds

proud badge
#

Hmm how would I check if a hashmap which key is Location containsKey Location but ignoring the yaw/pitch

young knoll
#

Make your own class to use as the key

#

And make sure to implement hashcode and equals

quaint mantle
#

is it possible to assure the data and metadata class are the same

#

from a method like this

#

setMetadata(Class<?> metadataClass, Object data)

#

cause using generics doesn't assure it

rotund ravine
#

Donโ€™t use metadata

quaint mantle
#

nah it's not for spigot lol

#

it's for smthing else

eternal night
#

I mean, metadataClass.isInstance(data)

quaint mantle
#

yeah that's what I was doing

#

but idk just wanted a way to assure it compile time

eternal night
#

you won't get further than <T> method(Class<T> metadataClass, T data)

quaint mantle
#

alr

river oracle
#

if you want a specific class you can add more data to that too e.g. extends or super

quaint mantle
#

super is the most specific I can get

#

but how do I even apply that in the data

river oracle
#

well it depends what you want to do

#

e.g. are we constricting data to a single class?

#

if so you should add a generic to the greater class

quaint mantle
#

the data has to be the same class as the param metadataclass

#

even if I have Class<? super T> metadataClass it's the same

#

ykw im prob wasting my time with this lmao

#

ima just add the 1 singular condition

quaint mantle
#

Hello, I tried using my plugin for 1.2.5 CraftBukkit server that sends a webhook message when player joins or leaves but I keep getting error 403, what could be the cause of this? Yes, the url is correct

warm mica
#

1.2.5?

quaint mantle
#

yes

warm mica
#

You're lucky that your problem isn't related to the Bukkit version

#

403 means forbidden, try to add a user agent

quaint mantle
#

Not really sure how to do that since I dont know how to code in java and the plugin wasn't made by me

warm mica
#

Then the next best thing you can do is to disable the Cloudflare proxy, if you use one. Apart from that, you'll likely not have much luck. It's very much possible that the old Java version that you use isn't even able to connect with your web server

#

If it does, you'd have to update the code

quaint mantle
#

add user agent like this? connection.setRequestProperty("User-Agent", "Mozilla/5.0");

warm mica
#

Yes, something like that

quaint mantle
#

ok will try that

warm mica
#

There are better ones on the internet if that doesn't work

quaint mantle
proud badge
#

is HashMap.containsKey faster than looping through all of the keys?

proud badge
#

Ok

ivory sleet
#

best and average case yea

river oracle
river oracle
#

an unsigned int is usually 32 bits on x86-64 implementations of C right?

young knoll
#

I would imagine so?

rough ibex
#

always use sizeof if you need to know.

#

or use uint32_t

river oracle
#

I knew I wasn't crazy and it is system dependent

young knoll
#

0/10 arson the school

next plume
#

I used a C compiler where a char was 32 bits.

young knoll
#

The new UTF-32 format

rough ibex
#

You should bring it up with whoever made it.

river oracle
#

so I'm guessing it could be 8bits

rough ibex
#

it could be any bits

river oracle
#

luckily this isn't graded, but I'll bring it up if something like this is on the test

rough ibex
#

the real answer is sizeof

river oracle
#

the real answer is whatever the assembly instructions for sizeof are xD

rough ibex
#

since its implementation dependent and while most embeds are 32b, cant be sure.

rough ibex
#

Or just disassemble it yourself

river oracle
#

well on my arduino its 8 bits because our registers are only 8 bits

#

but on my x86-64 processor its 32

rough ibex
#

yep.

river oracle
#

likewise on x86-32 it'd be 16

next plume
#

A TMS320C3x/C4x Byte Is 32 Bits

The ANSI [C] definition specifies that the sizeof operator yields the number of bytes required to store an object. ANSI further stipulates that when the sizeof operator is applied to type char, the result is one. Since the TMS320C3x/C4x char is 32 bits (to make it separately addressable), a byte is also 32 bits. This yields results that you may not expect; for example, sizeof (int) == 1 (not 4). TMS320C3x/C4x bytes and words are equivalent (32 bits).

young knoll
#

So char is always one

#

Weird

next plume
#

Get out K&R and look up sizeof.

dense blaze
#

Anyone have a good tutorial /pseudo code/ guide for the best practice to having multiple config files? I know I can use a simple read/write to get it to work, but I'm sure if there was a better way to handle it. I've been using the built in config management in the JavaPlugin class.

next plume
#

Found on Stack Overflow: "in the context of the ANSI C standard, a 'byte' is actually defined to be the smallest unit of storage that can store a char."

austere bane
#

hiya!

#

can I get some help trying to find an error in compiling

young knoll
#

?ask

undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

austere bane
#

thanks

#

um

#

how can I find an error in compiling?

dense blaze
austere bane
#

thats the thing

#

I dont know it

#

nor how to find it

dense blaze
#

What is the stacktrace?

austere bane
#

the what

#

I am new to this

proven flame
#

do you use maven?

austere bane
#

no

#

Im using buildtools

rough ibex
#

How do you know you have an error

austere bane
#

because it says Task exited with error code 1

rough ibex
#

And nothing else?

austere bane
#

nah

proven flame
#

there should be the stacktrace above it

young knoll
#

Are you compiling spigot

austere bane
austere bane
young knoll
#

Buildtools should generate a log

#

The gui even has a copy log button

rough ibex
austere bane
#

ok I hit copy log

austere bane
chrome beacon
#

?paste

undone axleBOT
chrome beacon
#

Send it here in a paste

river oracle
#

So it adds up pretty quick

young knoll
#

But like

#

Is it charged based on how long it takes me to send the dm

rough ibex
#

my rates are very competitive

young knoll
#

How long it takes you to reply?

rough ibex
#

"may we see them?"
...no

remote swallow
young knoll
#

So thaaaaaatโ€™s what the wakatime discord plugin is for

rigid loom
#

This code throws a ConcurrentModification Error. Is there any way for me to make it so that it doesn't?

#

Im just replying to it cuz i dont feel like transfering the code to a new md5 page

rigid loom
rigid loom
#

@rotund ravine

#

i think i modified it slightly from the thing i replied to

rotund ravine
#

If u remove this line

#

plugin.getClaimedChunks().remove(claims.getKey(), kingdom);

#

Does it work

slender elbow
#

(yes)

rotund ravine
rigid loom
# rotund ravine Smh spoonfeeder /s

the problem is that it doesnt save the data to the config.yml (ie remove it) when i reload the server or anything even if theres more than one kingdom

rotund ravine
#

Well letโ€™s see ur save method

rigid loom
#
public void saveClaims() {
        for (Map.Entry<String, String> claimedChunks : claimedChunks.entrySet()) {
            this.getConfig().set("claimedChunks." + claimedChunks.getKey(), claimedChunks.getValue());
        }
        this.saveConfig();
    }```
rotund ravine
#

savePluginData calls that?

rigid loom
#

amongst other save things, but yes

#

they all have the same format

#

i guess i would make a separate method that would nullify the values? i cant think of a way to do it properly

slender elbow
#

thing is you are iterating over the existing values

#

so the values in the config that were removed from the map stay there

#

you could set the whole claimedChunks to null and then fill in the values

rigid loom
slender elbow
#

yeah

rotund ravine
#

With โ€œโ€ ofc

rigid loom
#

ye

#

i missed that by accident

grave vigil
#

Would this work both if the player is offline and the player is online?

data.set(new NamespacedKey(plugin, "UUID"), PersistentDataType.STRING, Bukkit.getOfflinePlayer(playerName).getUniqueId().toString());
#

trying to store the UUID inside of a player head from a playerName string

grave vigil
#

ty

golden turret
#

what is the best way to fix this?

worldly ingot
#

Your CommandSenderFactoryRegistry#get() is going to need to return an actual generically typed object

grand verge
#

is there any good double jump plugin?

worldly ingot
#

If your generic types are ?, it's going to want ?

golden turret
worldly ingot
#

No, I just mean

// This:
CommandSenderFactory<?, ?> factory = CommandSenderFactoryRegistry.INSTANCE.get(sender.getClass());

// Needs to be:
CommandSenderFactory<CommandSender, YourCommandSender> factory = CommandSenderFactoryRegistry.INSTANCE.get(sender.getClass());
golden turret
#

i tried that ig

#

only with the 1st ?

#

same error

#

i even tried to use the bukkitSenderClass.cast but it did not work either

river oracle
remote swallow
#

do you have build depending on shadow jar

river oracle
#

nope

#

I just realized CH_SmhFacePalm

remote swallow
#

theres the issue

river oracle
#

is there any way to filter minimization to not minimize certain packages with gradle?

trim quest
echo basalt
#

actually no clue about minimize

river oracle
#

yeah but that takes in a "ResolvedDependency" or "Dependency"

remote swallow
#

minimze and excluding is weirdly like annoying

river oracle
#

not sure how I could get those from my strings

trim quest
rare rover
#

hmm, what would be the best way to make a serializer for an sqlite database?

#

Currently making an API which i need to serialize types of objects somehow

#

and i honestly dont know that to serialize to, string, byte array ๐Ÿคทโ€โ™‚๏ธ

#

json just defeats the purpose of sqlite so

orchid brook
#

hi Does somebody have a GitHub repository with a multi-module project for NMS supporting multiple versions, as an example for me? (with gradle)

trim quest
#

You have another option to use orm, but this is generally not recommended for spigot.

rare rover
#

does JDBC have serialization?

trim quest
#

yeah you can

#

but with much effort i guess.

rare rover
#

i mean, my current system is just using a string but its inefficient imo

#

also more storage being used

trim quest
#

java I/O stands for that.

#

u can do manual serialization with java io + jdbc.

orchid brook
trim quest
#

implement hibernate instead of that i gues

#

or eclipselink orm idk

rare rover
#

well i gotta serialize 1 object, since im making an annotation based system

#
@Table
data class Test(
    @PrimaryKey val id: Int,
    @Column val name: String,
    @Column val age: Int,
    @Column val list: List<String> // Which needs to have a defined custom serializer
)```
#

as of rn

dry hazel
#

could serialize into a byte array

rare rover
#

yeah, that's what i was thinking

trim quest
#

#Java 22 brings multi source-file execution to the platform. It allows us to run programs consisting of multiple source files and even dependencies with just a simple java command. For experienced developers, this will make exploration and experimentation simpler but it's a real game changer for people just learning Java or even just to progra...

โ–ถ Play video
drowsy helm
#

then have it transient if not serialized

quiet ice
#

However build tools are guaranteed to stay alive - especially for loom and co

trim quest
quiet ice
#

With before I mean like a year ago

#

It was still in my slbrachyura days

inner mulch
#

when is set a scoreboard's objective to a completely different one, will it change the scoreboards appearence?

near mason
#

why do we make private fields with public getters and setters which is same as making the field public?

drowsy helm
#

its not

near mason
#

why not

drowsy helm
#

you can have buffers on those getters and setters

#

its called encapsulation

#

whereas the variable being public, it can be editted without any monitoring

#
public class Test{
  private int x = 0;

  public void setX(int val){
     if(val < 0) return;
    x = val;
  }
}```
#

if that variable was x then I could set it to less than 0, obviously a simple example but you can get why it's important

near mason
#

yes but we use setters and getters even if its like```java
private int x;
public int getX(){return x;}
public void setX(int x){this.x = x;}

drowsy helm
#

still good practice

#

use lombok anyway

#

makes life easier

#
@Getter @Setter
private int x;
near mason
#

ok ty

short raptor
#

Is there a way to get the drops of a block break event? I can only see a way to get the drops of the block that was broken in isolation, not what drops actually occurred as a result of that specific event

short raptor
drowsy helm
#

Block.getDrops(item used)

#

that aswell

short raptor
#

Is that in isolation or does it actually report what happened? E.g. if they mined a gravel, and it dropped a flint, will that function return a flint dropped? Or does it reroll the calculation

short raptor
#

Didn't know about this

drowsy helm
#

not sure about Block.getDrops tbh

#

i think its all possible

proud badge
#

Ok, despite the locations being equal, why is the HashSet.containsKey not being true?

            for (int y = minY; y <= maxY; y++) {
                for (int z = minZ; z <= maxZ; z++) {
                    Location blockLocation = new Location(l.getWorld(), x, y, z);
                    for(Location i : homes.keySet()) {
                        System.out.println("dakey "+i);
                    }
                    System.out.println("lookin4dis "+blockLocation);
                    if(homes.containsKey(blockLocation)) {
                        System.out.println("foundit");
                        HomeLocation h = homes.get(blockLocation);
                        String user = Bukkit.getOfflinePlayer(h.getUUID()).getName();
                        users.add(user);
                    }
                }
            }
        }```
flint coyote
#

they are not equal

#

yaw and pitch differ

proud badge
#

I did some research, Location.equals(Location2) will return true if x y z and world are the same, it does not care about the yaw or pitch

drowsy helm
#

check if location follows hashset contract

flint coyote
#

it clearly checks for yaw and pitch

drowsy helm
#

hashset doesn't use equals also

flint coyote
#

it does not?

rough drift
#

it does, it's backed by a hashmap

#

wrong person

#

@drowsy helm

drowsy helm
#

ah mb

rough drift
#

It properly computes the hash & equals

drowsy helm
#

uses pitch and yaw for hash

proud badge
#

ok, whats the best way to store the location as a hashset key, and be able to check if containsKey

drowsy helm
#

vector if you dont care about world and rot

proud badge
#

Ok so vector is just location without world or rotation?

drowsy helm
#

can be used as it, yeah

#

but if its a home plugin you probs care about world right?

proud badge
#

im making a homesnear command, shows which players have homes in a radius of 20 blocks

#

and im doing that by loading the homes into a HashMap<Location, Home> and looping through blocks in a radius of 20, and checking if the hashmap contains the key

flint coyote
#

You could either make a subclass of Location and override the equals (and hashcode) method to ignore yaw and pitch or you just set it to 0 in order to compare

proud badge
#

so MyClass extends Location and then make new equals and hashcode?

flint coyote
#

yes

drowsy helm
#

if only java had implicit cast overriding :/

flint coyote
#

You can make it more futureproof when setting yaw and pitch to 0, then calling super.equals or hashcode and then setting it back

#

Although I doubt Location will get adjustments to those methods in the near future

proud badge
#

ok how would you do it then

eternal night
#

you'd probably be faster to check every damn home location with a distanceSquared

#

like

#

a cube of 20 blocks in width would be 8000 contains checks

drowsy helm
#

i feel theres a threshold

rough drift
#

you could also store homes per chunk

drowsy helm
#

would be interesting to see what is more efficient

rough drift
#

and then just get nearby chunks and access them that way

eternal night
#

yea ^

#

probably a better call

#

sub-section them somewhat

#

tbf, could even do it by region (so 32x32 chunk block)

drowsy helm
#

or just store by location and bitshift the extremeties

#

no need to store per chunk

rough drift
#

nah, a region is 1024 blocks sq ig

drowsy helm
#

just get all ebtween those extremeties

proud badge
#

bruh I thought this would be a simple command id get done in 20 minutes and its turned into this

eternal night
#

no like

#

section off the homes

rough drift
#

Ah

eternal night
#

so you only iterate over like "potential ones"

#

but yea, tbf, storing them by chunk key is probably good enough

#

and a lot faster given you can adress chunks in int keys

#

but 8000 contains checks against a map sounds pretty terrible and well

#

scales horribly

rough drift
#

you could even pack the chunk coords into a long, and then do a Long2ObjectHashMap

drowsy helm
#

dont think you can with a single int key

eternal night
#

Well yea, you'd pack into long ^

rough drift
#

since chunk coords are 2 ints (4) bytes, they fit perfectly into 1 long (8 bytes)

#

granted you should be using a DB of some sort instead of a hash map but you know

lost matrix
#

Or use relative chunk coords. Those could be stored in an int.
But long and absolute makes more sense.

#

But honestly for a command this is completely fine. Its not like he is iterating the map every tick.
And even 8k locations with a distanceSq check are just a few arithmetic operations. Probably still <1ms

proud badge
#

ill just .setYaw and pitch to 0 in the map and when comparing

rough drift
#

I mean yeah but it is faster, and honestly making performant plugins is just better

lost matrix
#

Didnt read the rest. What is faster than iterating over the locations?

flint coyote
#

There's almost always room for improvement of some sort. Commands don't have to be that optimized since they usually don't run often.

rough drift
proud badge
#

is a new Location without specified yaw and pitch always have those as 0?

flint coyote
#

yes

lost matrix
#

Ah grouping locations in chunks. Sounds overkill to me unless the server has to scale for several thousand players.

proud badge
#

nah theres only like 350 total sethomes rn

#

actually maybe a little more

drowsy helm
#

probably easier to iterate over all homes

#

than all potential locations in radius

rough drift
drowsy helm
#

or just have an if statement

if total homes < blocks in radius lol

rough drift
#

seems easier to make homes per chunk

drowsy helm
#

yeah per chunk is probs best

quiet ice
#

Orrr use my RegionatedIntIntToObjectMap lol

drowsy helm
#

that doesnt sound real

teal venture
#

I'm trying to involve myself more with developers and get active in voice calls so that I can learn with others, are there any communities or people interested in this please let me know I am somewhat new to Java and Spigot so I know we all get lonely sometimes and enjoy others company while coding๐Ÿฅน

flint coyote
#

There are some voice sessions from time to time. You can just hop into the general or verified voice chat and wait for company. Right now it's probably too early and most of us are still at work/school

teal venture
inner mulch
teal venture
tardy delta
rough drift
#

Though this I love

dusk moth
#

Help, how can I make 1.8.8 plugins in intellij, there are only versions till 1.13, also I can't find a good tutorial on YouTube for 1.8.8 plugin programming

ivory sleet
chrome beacon
#

And if you don't know Java yet, you should start with that

#

?learnjava

undone axleBOT
#

For Beginners:

Codecademy - Learn Java: Interactive Java programming course from basics to more advanced concepts. Perfect for absolute beginners.
https://www.codecademy.com/learn/learn-java
JetBrains Academy - Java Developer Track: Learn by doing with projects and challenges. It covers Java fundamentals to advanced topics.
https://www.jetbrains.com/academy/
Udemy - Java Programming Masterclass for Software Developers: Updated courses that cover Java 8 to Java 17 features. Suitable for those who prefer structured learning.
https://www.udemy.com/course/java-the-complete-java-developer-course/

For Intermediate to Advanced Learners:

Oracle Java Tutorials: The official guides by Oracle for Java programmingโ€”great for understanding the depth of Java.
https://docs.oracle.com/javase/tutorial/
Baeldung - Learn Java and Spring: Focus on Spring Framework and modern Java technologies. Best for intermediate learners aiming to expand their knowledge.
https://www.baeldung.com/

Practice and Hands-on Learning:

Exercism - Java Track: Solve exercises and get feedback from mentors. Great for practicing coding skills.
https://exercism.io/tracks/java
LeetCode: Practice your coding skills and prepare for technical interviews with Java.
https://leetcode.com/

Free Resources and Documentation:

Java Programming and Documentation: A comprehensive collection of Java programming guides, tutorials, and API documentation.
https://docs.oracle.com/en/java/

Community and Support:

Stack Overflow: A vast community of developers. Great for getting help with specific problems or understanding concepts.
https://stackoverflow.com/questions/tagged/java
r/learnjava on Reddit: Join the community of Java learners and get advice, share resources, and discuss projects.
https://www.reddit.com/r/learnjava/

Remember: Learning to program takes practice and patience. Don't hesitate to experiment with code and participate in community discussions. Happy coding! ๐ŸŽ‰

chrome beacon
#

uwu new learn message

dapper flower
#

i made a server using spiggot/paper, but when i do /pl on my paper server it shows as bukkit, is there an explaination for that?

slender elbow
#

ask paper

quiet ice
#

With fine I mean stupidly fast

#

But eh, that class was written when I was much younger than I am at this point in time so errors are to be expected

bleak eagle
#

anyone know how to make fancy tab completion and argument handling

#

coloring an integer value green and having those <---[HERE] error messages, etc, like the vanilla commands do

#

could I theoretically directly use brigadier or sth similar? is this possible without external libs?

smoky anchor
#

You can def. use brigadier (I've done it)
But there might be a problem with command permissions.
I have a thing that does this https://github.com/steve6472/Brigit
(My plugin also has some support for reloading)

But if there are API ways to do this, you should probably go with those.
Also, different command libraries exist.

ivory sleet
wide coyote
#

treemap<int(x), treemap(int(y), object)>

proud badge
#

is treemap hashmap with order?

wide coyote
#

would be smth like this

proud badge
#

I forgor, ive never used it before

wide coyote
#

not just order

#

in this case, you would use floor methods it provides

vagrant girder
#

Has anyone played with packets in 1.20.4 yet? If so how do you send out the PacketPlayInBlockBreakAnimation or what did it update to?
I have this but it does the flashing animation. If anyone can help please @ me when replying
player.sendBlockDamage(location, (float) (damage));

slender elbow
#

TreeMap is like a binary tree

chrome beacon
slender elbow
#

it's sorted, and does not use hashes

young knoll
#

You need to give the player mining fatigue to stop them from breaking the block client side

#

You can even do client side mining fatigue

vagrant girder
vagrant girder
chrome beacon
vagrant girder
#

Disclaimer: This is not my upload in the attachment
https://imgur.com/X8LHUrU

this is the same issue im having but the forum post i got it from is a little outdated
and Olivo yes

#

i think the third block broken in the attachment is the best example of what im having

young knoll
#

I don't see how packets would change anything

#

The method literally just sends a packet

smoky anchor
#

I think the API can do exactly what you want without the flickering

vagrant girder
young knoll
#

You can specifiy an entity id with the api method

#

idk if that'll help

smoky anchor
#

The one with no entity parameter uses the player as the one breaking which might be confusing the client

bleak eagle
#

this isn't what I want, re-read the question

vagrant girder
dusk moth
#

Does anyone know to make a fastbridge plugin like mcplayhd has

smoky anchor
#

what exactly is fastbridge ?

dusk moth
#

Well, it's kind of a minigame where you have to bridge from one island, to another island, and between the islands is void, where if you fall off, you teleport to the starting island.

smoky anchor
#

That sounds possible with a single command in a repeating commandblock lol

dusk moth
#

Ok but how can I learn it to do? Is there some kind of documentation?

smoky anchor
#

logic for the plugin would be:
if player in area -> teleport, give items

tender shard
dusk moth
#

Ye, classes, generics, packages ye

dusk moth
#

Well I want to make a 1.8.9 server, where the server is based off of that minigame, similar to McPlayHD's server.

#

That's what I want lol

#

My plan is, there will be a command where the player can join an island, for example: /fb join short,
Where the short argument is the mode of the minigame, and the gap between two islands is, as per the name, short.
But if the player does /fb join long, it would teleport to the long mode.
I have seen some worldedit schematic manipulation docs. But none of them have met my requirements, including the 'coding the plugin in 1.8.8 spigot'.

#

And whenever they execute the command, manipulating multiverse core, it would send the player to the island.

#

Oh?

#

I've never heard of that

#

Also is there a way where the player islands are parallel to eachother, in the sense that when they are bridging, they can also see their friends islands?

#

Like spawning the islands next to eachother in a specific gap

river oracle
#

Is there a way to increment scoreboard critera like NMS does it with API?

#

CriterionTriggers.USED_TOTEM.trigger(entityplayer, itemstack); this is the NMS stufv

worldly ingot
#

No you cannot trigger specific criterion

young knoll
#

boo

river oracle
#

boooooo ๐Ÿ‘Ž AngryAwooGlitch

#

xD

worldly ingot
#

Some of them are just statistics though so, bumping the statistic should work fine

river oracle
#

lemme give a look

young knoll
#

I think most of them are

river oracle
#

but I think I can award that manually?

young knoll
#

yes

worldly ingot
#

Yeah, AdvancementProgress

river oracle
#

alr

#

nothing but changing vanilla mechanics pepeLaugh

worldly ingot
#

I don't think that would work though because you're only able to award the advancement criterion, not increment its progress

#

So if you have like "mine 64 cobblestone", you can't +1 it

#

You can only give the whole criterion

river oracle
#

not custom advancements so its fine

#

I'm fulfilling a vanilla one

worldly ingot
#

๐Ÿ‘

shadow rover
#

Ho Hello, I'm searching help for a bug of minecraft i've founded on the life bar of the player. Someone can help me ?

undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

tender shard
shadow rover
#

I'm checking to change the damage of an EntitydamageEvent but, i've made a mistake and my player is in the situation of constantly dying without health bar, and I want to change it (stop dying indefinitely and make my health bar reappeared).

#

1.8

#

It's not the code apparently, i've just set the damage to NaN, and the game didn't block it. It's beacause of this problem, i'm in trouble.

tall dragon
#

so u can just disable ur plugin and ur fine no?

shadow rover
#

Ok, I will try it

smoky anchor
agile hollow
#

in 1.20 for get an inventory title it'snt event.getView().getTitle().equals("Name")
because i'm doing it but nothing appen

young knoll
#

?gui

tall dragon
#

you should not check for custom inventories in this way anyway

#

vulcan flashbacks

agile hollow
peak depot
#

anyone got some next level cooding idea?

tall dragon
peak depot
#

nah plugin themed for spigot or bungee

pseudo hazel
#

there is nothing next level about coding a plugin

tall dragon
peak depot
#

drop one

tall dragon
#

danggg thats craazy

peak depot
#

but whats like the focus of that team like custom orders or what

shadow rover
#

tks

pseudo hazel
#

wow those are some varied fields of development

tall dragon
#

well thats not that top secret anymore now

rough ibex
#

and also not exactly an esteemed position

minor junco
#

I mean I'll be very interested to see a bytecode obfuscator made from scratch with no libraries

#

ยฏ_(ใƒ„)_/ยฏ

rare rover
#

What would be the best solution for reducing the amount of networking while processing thousands of client side blocks. Everyone's ping goes bye bye when I set lots of blocks

#

I'm just doing player.sendMultiBlockChange()

river oracle
#

how many blocks are you sending

#

and how often

#

cuz if you're sending like a couple thousand blocks every tick like yeah would make sense

inner mulch
#

can i change an interfaces methods access modifier?

river oracle
#

well you can have private static methods but that's about it

inner mulch
river oracle
#

because that'd be an abuse of what a Interface is

#

private methods have no place in design with interfaces

inner mulch
#

oh true, after thinking about this i might wanna have an abstract class

river oracle
#

boooo ๐Ÿ‘Ž

inner mulch
#

why an interface is not made for my problem ?

river oracle
#

interfaces are the best get gud pepe_laugh

#

I'm joking ofc

rare rover
#

Lmao

inner mulch
#

what r u doing bro?

#

300k???

river oracle
rare rover
#

I'm making my own mining system

#

Which only the client needs to see

river oracle
#

and this required 300k spoofed blocks for what reason?

inner mulch
rare rover
#

So dont use packet blocks then? Lol

river oracle
inner mulch
#

i think you should try and reduce the amount of blocks

river oracle
#

don't spoof 300k blocks at once lmfao

rare rover
#

Yes that's why I'm asking what should I do? Split it into multiple seconds

#

Or what

river oracle
#

you should only spoof the immediate area around the player eye sight which would be at max a couple hundred or so

#

maybe if they're really getting in there a couple thousand

#

300,000 screams YOLO fuck you guys CH_DanceBoi

rare rover
#

I'm just saying overall I'm setting 300K blocks and ik that's terrible lol

#

I'll prob just split it into multiple tasks for the client to process

young knoll
#

You can send multiple block changes as one packet

rare rover
#

And I am doing that

#

By doing player.sendMultiBlockChange(Map) although it still has to process all of them

#

Which is still sending 1 packet just its hella long prob

shadow night
#

Oh gosh

river oracle
#

Lmfao

young knoll
#

Okay but that's not the multi block change packet

#

And I am doing that
By doing player.sendMultiBlockChange(Map) although it still has to process all of them

river oracle
#

I think either way you can't argue spoofing 300,000 blocks isnt completely ridiculous and needs to be revisited

young knoll
#

Well, you save all the extra 4 byte length values + 4 byte packetIDs

river oracle
#

But it'll save you the burden of DDOSing your players

rare rover
#

Alr

#

I'll do that

#

Or just dont use packets ig, not the end of the world but I'd much rather do it

#

๐Ÿ‘

#

Ty

young knoll
#

Mutli block change is apparently now Update_Section_Blocks

worldly ingot
#

Yes

#

sendBlockChanges() will send more than one packet. I had it break up into multiple packets if the states span multiple chunks

#

sendMultiBlockChange() is Paper API btw, we have sendBlockChanges()

young knoll
#

Tbf the map is kinda nicer than a bunch of BlockState

#

:p

worldly ingot
young knoll
#

But then I have to call getState!

echo basalt
#

chunk packet

young knoll
#

Muh cpu cycles

shadow night
#

Isn't HumanEntity a thing just because nms stuff?

young knoll
#

Pretty much

echo basalt
#

mojank

young knoll
#

Player is the internal class that matches HumanEntity

#

It's abstract

shadow night
#

Where EntityPlayer

young knoll
#

ServerPlayer extends it, and it's what matches Player

#

Presumably there is also a client version on the client

worldly ingot
#

BlockData#createBlockState()

#

Actually that state isn't bound to a location so it's not relevant nor useable lol

young knoll
#

And there is no way to bind it

#

๐Ÿ˜ฉ

#

At least we can add virtual entities to the world now

chrome beacon
#

Yeah I still have to depend on Paper for what I need

#

Can't create my own block states

young knoll
#

Custom biome api when :c

worldly ingot
#

PR when?

young knoll
#

I don't think MD would approve of

 public static void unfreezeRegistry(Registry<?> registry) {
    try {
        Field intrusiveHolderCache = getField(MappedRegistry.class, Map.class, 5);
        intrusiveHolderCache.set(registry, new HashMap<>());
    
        Field frozen = getField(MappedRegistry.class, boolean.class, 0);
        frozen.set(registry, false);
    } catch (ReflectiveOperationException e) {
        e.printStackTrace();
    }
}
worldly ingot
#

no absolutely not lol

#

I would also take issue with it

civic sluice
#

Lifecycle API, Bootstrap phase. ๐Ÿ˜›

young knoll
#

If it's stupid and it works it's not stupid!

#

Yeah rewriting the plugin loader without breaking old plugins is... not easy

#

Sure we can just move plugin loading to be super early... but then plugins would explode if we init their main class that early

civic sluice
young knoll
#

And then you try to depend on an old plugin

#

And then it explodes

civic sluice
young knoll
#

I mean I guess that could kinda work

#

But what if you want to do registry stuff based off another plugins registry stuff

civic sluice
young knoll
#

Idk

#

Devs like to do things

civic sluice
young knoll
#

True

#

Idk I might poke at redoing the plugin loader

#

For the funz Not a masochist

river oracle
young knoll
#

I'll load you

eternal night
#

a kotlins syntax wants me to purge my eyes out

icy beacon
#

This is readable ๐Ÿฅฒ

tardy delta
#

please add a CommandSender.sendMessage(Message) extension instead of message.sendToSender(sender)

#

the urge to clone it and do some cleanup

river oracle
#

๐Ÿ’ฏ

eternal night
river oracle
icy beacon
#

Do you do

var classLoader: ClassLoader? = null
try {
  classLoader = ModuleJarClassLoader(file, javaClass.classLoader)
} catch (e: Exception) {
  throw InvalidModuleException(...)
}
classLoader!!
#

Because if you do then you might reconsider the whole using kotlin thing lol

river oracle
icy beacon
#

Fair enough, still kinda eh

river oracle
#

So you never need to check nullability

#

I don't think not liking one but of syntax should be a consideration on the entire language also

icy beacon
#

Nah I'm just comically exaggerating

river oracle
#

There are things I like and don't like about Java likewise with killing

icy beacon
#

Ofc it's a preference thing but I'm powered by sarcasm and 4 hours of sleep

dry hazel
#

real kotlin fans do runCatching { ModuleJarClassLoader(file, javaClass.classLoader) }.getOrElse { e -> throw Exception("dead", e) } /s

river oracle
#

It's really effective

#

๐Ÿ’ช๐Ÿ’ฏ๐Ÿ‘

dry hazel
#

yeah it is but nothing wrong with using the try-catch either

tardy delta
#

then it doesnt need to be nullable

hazy stirrup
#

GUYS

#

how to make velocity plugin

chrome beacon
#

as in the proxy

#

?

hazy stirrup
#

yes

#

no duh

rough ibex
#

What?

#

Don't be so fickle, what do you want?

chrome beacon
hazy stirrup
#

who tf is paper

chrome beacon
#

The people who're developing Velocity

hazy stirrup
#

ohhhh yea

#

do i go on their web

chrome beacon
#

Join their discord and ask for help

wet breach
#

I see, we have a new wave of people asking for help in a place that has nothing to do with the thing they are wanting help with >>

chrome beacon
#

Do read the documentation first :p

hazy stirrup
#

ok

hazy stirrup
#

wait

#

for the intellij part can u use community edition and ultimate?

chrome beacon
#

both will work

hazy stirrup
#

ok

chrome beacon
#

if you've never worked with Java before you should learn that first

#

?learnjava

undone axleBOT
#

For Beginners:

Codecademy - Learn Java: Interactive Java programming course from basics to more advanced concepts. Perfect for absolute beginners.
https://www.codecademy.com/learn/learn-java
JetBrains Academy - Java Developer Track: Learn by doing with projects and challenges. It covers Java fundamentals to advanced topics.
https://www.jetbrains.com/academy/
Udemy - Java Programming Masterclass for Software Developers: Updated courses that cover Java 8 to Java 17 features. Suitable for those who prefer structured learning.
https://www.udemy.com/course/java-the-complete-java-developer-course/

For Intermediate to Advanced Learners:

Oracle Java Tutorials: The official guides by Oracle for Java programmingโ€”great for understanding the depth of Java.
https://docs.oracle.com/javase/tutorial/
Baeldung - Learn Java and Spring: Focus on Spring Framework and modern Java technologies. Best for intermediate learners aiming to expand their knowledge.
https://www.baeldung.com/

Practice and Hands-on Learning:

Exercism - Java Track: Solve exercises and get feedback from mentors. Great for practicing coding skills.
https://exercism.io/tracks/java
LeetCode: Practice your coding skills and prepare for technical interviews with Java.
https://leetcode.com/

Free Resources and Documentation:

Java Programming and Documentation: A comprehensive collection of Java programming guides, tutorials, and API documentation.
https://docs.oracle.com/en/java/

Community and Support:

Stack Overflow: A vast community of developers. Great for getting help with specific problems or understanding concepts.
https://stackoverflow.com/questions/tagged/java
r/learnjava on Reddit: Join the community of Java learners and get advice, share resources, and discuss projects.
https://www.reddit.com/r/learnjava/

Remember: Learning to program takes practice and patience. Don't hesitate to experiment with code and participate in community discussions. Happy coding! ๐ŸŽ‰

hazy stirrup
#

a

#

and do i just choose one?

chrome beacon
#

I recommend following more than one

hazy stirrup
#

how long do they take

rough ibex
#

As long as it takes.

chrome beacon
#

Depends on you

#

if you're in a hurry hire someone to make you a plugin

hazy stirrup
#

i tried that

#

no one will

wet breach
#

probably didn't offer enough

rough ibex
#

or the idea is impossible to implement for 1 dev

hazy stirrup
#

wsg6uvfystgvusghsyssvysvsyt

wet breach
#

or just impossible to begin with or just dumb XD

hazy stirrup
wet breach
#

ok, that is fine, fortunately I guess you can acknowledge you are I suppose, the rules state others can't fix dumb but it says nothing about you fixing it yourself

#

so I guess there is hope yet

hazy stirrup
#

e

tall dragon
#

does any1 know why changing durability of an item would cause the texture to go all purple black blocky?
using this:

public static void damageItemInHand(Player player) {
        ItemStack hand = player.getItemInHand();
        int durability = hand.getDurability() + 1;
        hand.setDurability((short) durability);
    }

odd thing is, it only happens with items ive given the player, when i give myself an item using minecraft:give, this does not happen

wet breach
#

not sure why you are using statics

#

guess we are back in the trend of people using statics everywhere >>

tall dragon
#

its a util method?

#

would you have me type this method out everywhere i wish to use it

ivory sleet
#

looks a bit clumsy

#

but yea, suppose it might be of utility, tho I would rather call it a static helper method

wet breach
foggy cave
#
FileConfiguration regionsData = RPJobs.getPlugin().getRegionsData();

        ConfigurationSection trashmanSection = regionsData.getConfigurationSection("trashman");

        if (trashmanSection == null) {
            regionsData.createSection("trashman");
        }

        List<String> regionIds = trashmanSection.getStringList("regions");

regionIds is null, how do i add stuff to the trashman section as a list

wet breach
#

however, you are not the only one here lately that has issues with code, and ironically using a method that is static

tall dragon
#

i feel like this case is perfectly fine to use static

wet breach
#

I didn't say it wasn't ๐Ÿ˜›

tall dragon
wet breach
#

sure take it however you want, a trend is a trend whether you agree with it or not

#

lately there has been quite a bit of people who have issues with their code and it being static

tall dragon
#

yet im very sure it being static is not my issue

#

what i dont know is why it does happen

ivory sleet
wet breach
#

No unfoturnately or maybe its fortunate that I haven't?

chrome beacon
tall dragon
#

that is still null

#

ig

ivory sleet
#

hmm well it was like 3 years ago frosty

wet breach
#

ah too long ago then for me to remember details like that

#

there has been countless others that came after you with the same issues XD