#help-development

1 messages · Page 1946 of 1

earnest gyro
#

then i guess it would be good

#

com.test.test.Base

#

like this

blazing scarab
#

Do not override the constructor

velvet dragon
#

thats based on the directories ?

delicate lynx
#

what is your package name

velvet dragon
#

so for

src
--Base.java
plugin.yml

it woukd be src.Base ?

delicate lynx
#

why are you not using a package?

velvet dragon
#

didnt know that i needed too

delicate lynx
#

you should

#

and why do you have the constructor in the main class that is literally empty

velvet dragon
#

cause i got the error message "no public constructor" so i tried adding one ^^

velvet dragon
delicate lynx
#

try making the class public

woeful crescent
#

hey, can I send the same packet twice?

blazing scarab
#

Why not

woeful crescent
#

idk

#

like metadata complications or smtn maybe?

velvet dragon
#

that was it thank you...

delicate lynx
#

oh awesome, yw!

velvet dragon
#

it was just fine without a package

woeful crescent
#

I want to cache a "clear equipment" packet set for a certain player and send it when I need to

#

will that work?

delicate lynx
#

I figured it would of be fine without being in a package but just wanted to double check

blazing scarab
#

iirx packets are immutable so yes?

#

Tho protocollib can fuck it up

woeful crescent
#

is there a way to detect (without injection) when a player will rerender another player (eg. sendEquipmentChange will be reverted)

#

like, what's the "faraway" distance?

#

70 blocks?

#

is there any way to know?

woeful crescent
#

really?

#

not just PME < 70 blocks or smtn

blazing scarab
#

Idk that sounds unreliable

#

What if player teleports, for example?

woeful crescent
#

ahhh because of render distance?

blazing scarab
#

just use protocollib

woeful crescent
#

ok

#

honestly i've learned my lesson after being stubborn against these big changes so many times before haha

#

just gonna switch over so i don't have to deal with it later

blazing scarab
#

Packets are not the best idea either and i rarely recommend messing with them.. But in this cass it seems reasonable

woeful crescent
#

how do i send equipment packets

#

i got the type, what next?

worldly ingot
#

I think there's API for that

#

No need for packets there

#

oh you were using that originally. Not sure what you're trying to solve by using packets. Bukkit just sends that same packet so you're going to do the same thing just with ProtocolLib instead. You'll run into the same rendering issues

woeful crescent
#

1.8 :/

worldly ingot
#

ic

woeful crescent
#

what happened to all the numbered packets

#

ohh nvm, that's not protocollib

#

also where is the maven address for packetwrapper?

alpine urchin
#

choco dissapointmemt

#

we put in effort to provide a sick api

#

and people use 5+ year old versions

neon minnow
#

I made my first Listener in bungeecord, but how can I register this listener in my main class?

Thanks EventHandler

alpine urchin
#

getProxy().getPluginManager().registerListener(this, listener);

#

@neon minnow

neon minnow
#

ty

alpine urchin
# worldly ingot ic

thats like seeing people use code you wrote when you just got in highschool and now you’re entering uni

#

i know the pain of people using your outdated stuff

#

😢

woeful crescent
neon minnow
alpine urchin
woeful crescent
neon minnow
alpine urchin
woeful crescent
#

complications

alpine urchin
neon minnow
alpine urchin
#

what is it called

#

the class you made

#

?learniava

#

!learnjava

neon minnow
#

bruh

alpine urchin
#

No offence

woeful crescent
#

retrooper how'd you learn

#

just asking

alpine urchin
#

but it will help you further in your career

neon minnow
#

@alpine urchin im trying to do it inside of @Override
public void onEnable() { } so i need to mention the class name of the other file to enable the listener

cant just write "this"

alpine urchin
#

Its like trying to write english essays when you don’t know englis that well

#

knowledge needs to be applied

woeful crescent
#

well maybe that's how you LEARN english

#

lol

#

in coding, writing essays is how you learn english

#

it's pretty much the best way there is

alpine urchin
#

Yes, and i’m guiding him to search up his question.

woeful crescent
#

asking stupid questions is how you learn tho

alpine urchin
#

If he doesn’t know what an instance is, I can’t give him a crash course in java

#

you learn by googling

woeful crescent
#

just tell him to do new X() and it'll click later

alpine urchin
#

too

alpine urchin
#

and “listener”

#

replace that with

#

new X()

#

X is name of class name(the listener)

neon minnow
#

Yeah

woeful crescent
#

make sure it's public too

woeful crescent
#

also where's the maven adress for PacketWrapper?

past vapor
#

Hello! I'm having issues using the ItemStack.deserialize function. It seems that item meta is not being deserialized

    public static KitContents from(String s) {
        String[] contents = gson.fromJson(s, String[].class);
        if (contents == null) {
            return null;
        }
        ItemStack[] inv = new ItemStack[41];
        Type type = new TypeToken<Map<String, Object>>(){}.getType();
        for (int i = 0; i < contents.length; i++) {
            if (contents[i] == null || contents[i].length() < 1) {
                inv[i] = null;
            } else {
                inv[i] = ItemStack.deserialize(gson.fromJson(contents[i], type));
            }
        }```
However it is being serialized correctly, here is an example of a serialized ItemStack string:
#

{"v":2730,"type":"DIAMOND_SWORD","meta":{"enchantments":[[{"target":{"a":["MAINHAND"],"b":"RARE","e":"WEAPON"},"key":{"namespace":"minecraft","key":"fire_aspect"}},2],[{"target":{"a":["MAINHAND"],"b":"UNCOMMON","e":"WEAPON"},"key":{"namespace":"minecraft","key":"knockback"}},2],[{"target":{"d":0,"a":["MAINHAND"],"b":"COMMON","e":"WEAPON"},"key":{"namespace":"minecraft","key":"sharpness"}},5],[{"target":{"a":["MAINHAND"],"b":"UNCOMMON","e":"BREAKABLE"},"key":{"namespace":"minecraft","key":"unbreaking"}},3]],"attributeModifiers":{},"repairCost":0,"hideFlag":0,"unbreakable":false,"damage":0,"placeableKeys":[],"destroyableKeys":[],"unhandledTags":{},"persistentDataContainer":{"customDataTags":{},"registry":{"CREATE_ADAPTER":{},"adapters":{}},"adapterContext":{"registry":{"CREATE_ADAPTER":{},"adapters":{}}}},"version":2730}}

alpine urchin
#

id use pastebin

woeful crescent
alpine urchin
#

to not flood the chat

alpine urchin
woeful crescent
#

if you can find it please tell me

alpine urchin
#

afaik there isn’t, its common for projects to just copy what they need from there

woeful crescent
#

huh

#

are you sure?

alpine urchin
#

I’m sure many projects just copy the packet wrappers they use

#

There is no official maven dependency for those

woeful crescent
#

hmm ok

alpine urchin
#

Or atleast its not on their page

#

they only link to protocollib

#

I think it might be possible somehow using JitPack.io

#

idk if you are familiar with that

#

Lets you get maven/gradle dependencies for open source projects

#

so thats not good news

#

So yes, copy them into your class @woeful crescent

neon minnow
#

when i build my bungee it just says
[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing C:\Users\x\IdeaProjects\Bungeeproxy\target\core-1.0-SNAPSHOT.jar with C:\Users\x\IdeaProjects\Bungeeproxy\target\core-1.0-SNAPSHOT-shaded.jar

but there is no jar

alpine urchin
#

@neon minnow where are you looking

neon minnow
#

its gone

#

nothing shows up

#

i cant even build bungee anymore..

alpine urchin
#

what build command

neon minnow
#

it just says

#

Running Ant tasks...

#

forever

alpine urchin
#

have you tried package

#

are you using maven

neon minnow
#

im clicking build at the top

#

im using maven

alpine urchin
#

show me what it says

#

at the top

#

whatever youre clicking

#

show that

neon minnow
#

built output says build finished up to date but no new files

#

ctrl+f9 i press

#

build green icon

alpine urchin
#

screenshot

woeful crescent
#

how do i just straight up download the file on github

alpine urchin
#

actually click edit @neon minnow

#

edit the run task

#

and show me what it really euns

#

runs

#

what command

alpine urchin
#

zip

woeful crescent
#

ok

neon minnow
alpine urchin
#

screenshot this green button

alpine urchin
#

make them swap places

#

first comes

#

this

#

then new testListener()

neon minnow
#

same

#

thing

#

Cannot resolve symbol 'listener'

alpine urchin
neon minnow
alpine urchin
#

cant open ur ss

neon minnow
#

one sec

alpine urchin
#

getProxy().getPluginManager().registerListener(this, new testListener());

alpine urchin
#

click the arrow down

neon minnow
#

But it doesnt work

#

ok

alpine urchin
#

click the button

#

left from build

neon minnow
#

ye

alpine urchin
#

edit configurations

neon minnow
#

yeh

alpine urchin
#

screenshot

alpine urchin
#

hmm why isn’t that working

#

ok

#

close it

#

its probably cause your plugin doesnt compile

#

did the error fix with the snippet i showed you

neon minnow
#

ye

wild reef
#

Hey guys, quick question. Is there a way to find out when the weather will change? Like is it a thing to randomly happen or is it more like, on day 3 it will rain, on day 5 there will be a thunderstorm and it's stored / calculated somewhere?

ivory sleet
#

I believe it used to be a bug

alpine urchin
ivory sleet
#

Where rain would be encountered frequently

#

But afaik it’s random

wild reef
#

okay, thank you

neon minnow
#

i think i fixed it

#

Guys is waterfall better then bungee

alpine urchin
#

i fixed it

#

Lol

alpine urchin
#

i havent used it

#

cant comment on it

neon minnow
#

now it says java.lang.ClassNotFoundException:

#

when loading server

alpine urchin
#

but i heard it supports minecraft clients as old as 1.4

neon minnow
#

the jar is empty

alpine urchin
#

Lol

neon minnow
#

wtf

alpine urchin
#

send full error

#

is jar 0KB

neon minnow
#

java.lang.ClassNotFoundException: server.bungee.core.Core
at net.md_5.bungee.api.plugin.PluginClassloader.loadClass0(PluginClassloader.java:103)
at net.md_5.bungee.api.plugin.PluginClassloader.loadClass(PluginClassloader.java:59)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at net.md_5.bungee.api.plugin.PluginManager.enablePlugin(PluginManager.java:340)
at net.md_5.bungee.api.plugin.PluginManager.loadPlugins(PluginManager.java:250)
at net.md_5.bungee.BungeeCord.start(BungeeCord.java:271)
at net.md_5.bungee.BungeeCordLauncher.main(BungeeCordLauncher.java:67)
at net.md_5.bungee.Bootstrap.main(Bootstrap.java:15)

#

meta inf and bnungee yml

cursive loom
#

Hey someone know how I can get the number of Zombie I have killed with player.getStatistic() ?
or another method without config

neon minnow
#

@alpine urchin is the command supposed to be clean package???? cus thats what it runs.

#

shouldnt it be compile??/

ivory sleet
past vapor
#

clean package

ivory sleet
#

You basically have to manage the ItemMeta yourself

neon minnow
#

so why is it empty jar

#

when built

alpine urchin
#

clean package is fine

ivory sleet
#

Yeah lol

past vapor
#

No pre built stuff out there? Smh

ivory sleet
#

MattMX, well Idk, I believe there is but I don’t know any sources

#

Anyhow it’s not complicated

neon minnow
#

it also says

#

Class 'Core' is never used

ivory sleet
#

That’s just the static analyzer

past vapor
neon minnow
#

my jar build is empty, only meta inf and Bungee.yml

past vapor
#

It's probably not but sounds grueling

neon minnow
#

this is bs

ivory sleet
#

breh, sadly I don’t use maven, but gradle

#

And btw why switch away from kotlin

ivory sleet
cursive loom
ivory sleet
#

You pass the EntityType.ZOMBIE

#

Like

#

getStatistics(type,EntityType.ZOMBIE);

neon minnow
#

wtf

#

java.lang.IllegalArgumentException: Plugin already initialized!

#

what the hell does this mean!

ivory sleet
#

Uh

alpine urchin
#

you have 2 plugins

tall dragon
#

you have 2 jars ?

alpine urchin
#

with same name

neon minnow
#

No i only have 1

#

in error it says

#

at bungee.core.Core.onEnable(Core.java:10)

#

which is my line where i enable my listener

#

??

cursive loom
ivory sleet
#

What’s not working?

cursive loom
#

Oh no sorry its good I'm just attard

ivory sleet
# past vapor How so

I believe there is a method to retrieve a type adapter for whatever type you use

#

Like without manually implementing

alpine urchin
neon minnow
#

getProxy().getPluginManager().registerListener(this, new testListener());

#

there is 2

#

original core and core jar

alpine urchin
#

use core

#

have you been using core

#

on bungee server

#

as bungee plugin

#

not on spigot

#

on bungee

neon minnow
#

it wants me to make core implement listener

alpine urchin
#

yes

#

do it

neon minnow
#

getProxy().getPluginManager().registerListener(new testListener(), this);

alpine urchin
#

noo

#

put back

#

okd code

#

wait

neon minnow
#

at bungee.core.Core.onEnable(Core.java:11)

#

23:35:51 [WARNING] Exception encountered when loading plugin: Core
java.lang.IllegalArgumentException: Plugin already initialized!

alpine urchin
#

ok

#

can you send

#

both classes

#

send its code here

ivory sleet
#

@past vapor basically you do the map thing

When you serialize it:

  • get the map of the ItemStack instance from ConfigurationSerializable::serialize
  • get the ItemMeta instance
  • get the map of the ItemMeta instance
  • put the map of the ItemMeta instance back to map of the ItemStack instance
alpine urchin
#

basically map the map

ivory sleet
#

Ya

tall dragon
ivory sleet
#

Believe you can figure out the other way around Matt

alpine urchin
#

?pastebin

neon minnow
#

?pastebin

alpine urchin
#

?hastebin

#

bruh

neon minnow
#

!pastebin

#

?hastebin

tall dragon
#

?paste

undone axleBOT
alpine urchin
#

nice

neon minnow
alpine urchin
#

bungo

#

bingo

neon minnow
#

what then

alpine urchin
#

you cant have both classes extend Plugin

#

why

#

only one can

#

let Core extend Plugin

neon minnow
#

Ok so how do i add listener

alpine urchin
#

and remove it from other

neon minnow
#

so i can listen to the event

alpine urchin
#

listener should still implement Listener

#

but dont extend Plugin in it

neon minnow
#

ohh

neon minnow
#

it wants to make it plugin......

#

getProxy().getPluginManager().registerListener(new testlistener(), this);

alpine urchin
#

swap them

#

as i told you

#

before

neon minnow
#

Ok

neon minnow
#

thanks

#

worked

alpine urchin
#

first it wants the plugin

#

then the listener

tall dragon
#

and once again, use proper capitalization, e.g. testlistener should be TestListener

alpine urchin
#

ok build it

#

@tall dragon yea i wanted to mention, but i think t will lead to more issues at this rate XD

tall dragon
#

😉

alpine urchin
#

Thanks

#

lets wait for a ClassNotFoundException

#

or something to sneak in

brave trellis
#

how would you "add" a texture onto a placed player head block

alpine urchin
#

texture?

brave trellis
#

yeah for ex, a player head and applying a corn texture on it

pulsar zenith
#

I think that you can use https://minecraft-heads.com/ to find a head

#

and then apply it to the skull

brave trellis
#

much appreciated

golden turret
#

does the EntityDamageByEntityEvent got fired when calling LivingEntity#damage(double, Entity)?

alpine urchin
neon minnow
#

Is there any way to check how much cpu usage the server is using

#

It’s always ram that is talked about but how much cpu does spigot use

lost matrix
neon minnow
#

Hm, maybe ?

#

I’d like to know your thoughts

lost matrix
#

Because the TPS is what you actually want to know.
The server will take 100% of a single core if it needs to.

neon minnow
#

Is there a way to limit how much a spigot server can use in cpu

lost matrix
#

If you want to get some information about the system anyways then you can look into
the OperatingSystemMXBean.

willow stream
#

hey, I rewrote my speed calculation from calculating it on PlayerMoveEvent to only when interacting with the slime (soccer ball) but when comparing methods (new and the old one) I'm getting lower values on the new one

lost matrix
neon minnow
#

Okay thanks

willow stream
#
// old method
@EventHandler
public void onMove(PlayerMoveEvent event) {
  Location to = event.getTo();
  Location from = event.getFrom();
  double x = Math.abs(to.getX() - from.getX());
  double y = Math.abs(to.getY() - from.getY()) / 2.0D;
  double z = Math.abs(to.getZ() - from.getZ());
  this.oldSpeed.put(event.getPlayer().getUniqueId(), Math.sqrt(x * x + y * y + z * z));
}
// new method
private double getSpeed(Player player) {
  return player.getVelocity().setY(player.getVelocity().getY() / 2.0).length();
}
#

old: 0.34 new: 0.21

#

it's so close so I'm wondering if the new method is just more accurate and thus the difference

#

or is it because the old one updates when the player moves so it has more up to date information?

golden turret
#

do someone know the value for each armor piece for the DamageModifier?

lost matrix
#

Hm not too sure about that one. The length of a vector is calculated the same way as in your "old" method.
It could be that the new method is already slowed down because of a collision.

golden turret
#

basically i want to set the defense of each armor to the defaults

golden turret
#

🤔

#

i think i will just test each armor

lost matrix
golden turret
lost matrix
golden turret
#

thanks

willow stream
#

because of a collision? I should mention that it's only used to calculate the "kick" vector java kick = player.getLocation().getDirection().normalize().multiply(total).setY(0.3D);
total being (0.4 + (Player#getSpeed * 2.0) + 0.4 * ..

#

I don't see a big difference though, it's mostly ~0.15

past vapor
#

However its not working for me

#

Oh wait i think its deprecated

#

Anyone know if this should still work?

lost matrix
past vapor
lost matrix
past vapor
#

Only found out through testing that it doesn't work very well

#

Are there any alternatives?

lost matrix
past vapor
#

Just be able to serialize and deserialize items to and from json

lost matrix
#

BukkitObjectOutputStream

past vapor
brave trellis
#

how would you invoke a method without a parameter and get the returning object/class using reflection, ex clazz.getMethod("methodHere").invoke etc

drowsy helm
#

doesnt invoke return Object

#

just cast that to the class

willow stream
#

should I do some calculations async since they are per player?

minor otter
#

How do i get the number of entities on a location

drowsy helm
willow stream
#

just a second

willow stream
#

looking at following methods:

private double getSpeed(Player player) {
  return player.getVelocity().setY(player.getVelocity().getY() / 2.0).length();
}
public double getDistance(Location start, Location end) {
  start.setY(-0.25);
  start.subtract(end).setY(-1.25);
  if (start.getY() < 0.0) start.setY(0.0);
  return start.length();
}
drowsy helm
#

eh its not really a super taxing calc

#

how often are you getting it?

willow stream
#

first one on every EntityDamageByEntityEvent hit (for one entity only)

drowsy helm
#

second one?

willow stream
#

it's used again with the second one in a runnable

dusk flicker
#

Doesn't subtract create a clone? Not actually update the original location

willow stream
#

wait really?

drowsy helm
#

eh you're not really using it super often

dusk flicker
#

Thought so, as it returns a location

drowsy helm
#

it should be fine

dusk flicker
#

Not sure to be honest, I somewhat remember it creating a clone but I cant find anything specific saying that

#

If it works as is, then it must not

willow stream
#

it works as intended

willow stream
dusk flicker
#

Guess it doesn't create a clone then, I might be thinking of a different object

drowsy helm
#

oh every tick?

willow stream
#

yep

drowsy helm
#

yeah might be a good idea to do it async

#

depends on the context

#

what is it used for exactly

willow stream
#

getSpeed goes on to be added to another calculation down the line in the EntityDamageByEntityEvent to calculate a "kick" vector, and in the scheduler to get reduced and used in yet another calculation, getDistance is used twice in the scheduler to compare distances

drowsy helm
#

well getDistance is literally only subtracting values

#

its not a super taxing calc

willow stream
#

isn't length taxing?

drowsy helm
#

oh yeah thats sqrt isnt it

willow stream
#

yep

brave trellis
willow stream
#

sqrt(x^2 + y^2 + z^2)

drowsy helm
#

hmm yeah i'd probs say do it async

#

especially if thats per-player

willow stream
#

yep, going to do it

drowsy helm
willow stream
#

thank you

brave trellis
#

can you give an example

dusk flicker
#

?learnjava

undone axleBOT
drowsy helm
#

MyClass obj = (MyClass) reflectionstuff.invoke();

spiral bramble
#

Hey there, I've got this event here, I'm trying to create custom blocks with NOTE_BLOCK but whenever I break the block the octave of the instrument changes by 1 (Because I've interacted with it), I've tried running PlayerInteractEvent with event.setCancelled(true) although this prevents breakage of the block entirely. What is my best course of action?

drowsy helm
#

set the octave back by 1 when the hit it

#

give me a bit and i can see what i did with my code

#

    
    @EventHandler
    public void PlayerInteractEventNoteblock(PlayerBlockInteractEvent e) {
        FactionClaimManager claimManager = ClusterCore.getInstance().getFactionClaimManager();
        if(!claimManager.canInteractBlock(e.getBlock().getLocation(), e.getPlayer())){
            e.setCancelled(true);
            return;
        }
        
        Block block = e.getBlock();
        if(e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
        if(e.getPlayer().isSneaking()) return;
        if(block == null) return;
        if(block.getType() == Material.NOTE_BLOCK){
            e.setCancelled(true);
        }
    }    ```
give PalyerBlockInteractEvent a try
#

thats my code and i dont remember it failing me

spiral bramble
#

Alright thanks I'll try it out

spiral bramble
drowsy helm
#

oh coudl be actually lol

#

lemme see

#

yeah it is im dumb gimmie a sec

#
@EventHandler(priority = EventPriority.HIGHEST)
    public void PlayerInteractBlock(PlayerInteractEvent e) {
        if(e.getHand() == EquipmentSlot.OFF_HAND) return;
        
        if(e.getAction() != Action.RIGHT_CLICK_BLOCK && e.getAction() != Action.LEFT_CLICK_BLOCK) return;
        Bukkit.getPluginManager().callEvent(new PlayerBlockInteractEvent(e.getPlayer(), e.getClickedBlock(), e.getAction(), e));
    }``` 
thats all it is
#

just only passes block interactions

spiral bramble
#

Alright sweet

drowsy helm
#

if you're going with noteblocks i'd suggest making your own block breaking system

#

especially if you are doing custom blocks

spiral bramble
#

I'm only using Noteblocks as I saw plenty of examples. its a pretty useless block, and has plenty of different states.
Is there any other block you suggest?

drowsy helm
#

nah noteblocks are your best choice

#

it's just if you want to integrate them into survival play you'll need to handle block breaking

#

for example if you have an ore, you have to make it break faster with picks etc

young knoll
#

Pretty sure cancelling the interact event will stop block breaking? I don’t remember

drowsy helm
#

yeah i dont remember getting that effect

spiral bramble
drowsy helm
#

does it completely change the texture if you dont cancel it?

young knoll
#

It’ll change the note

spiral bramble
young knoll
#

Which will change the texture

drowsy helm
#

yeah my only idea is change it back to it's original state

minor otter
drowsy helm
#

pretty sure interact event is called before the block change so you will need a delayed task

young knoll
#

I wonder how something like ItemsAdder does it

drowsy helm
#

try just cancelling NotePlayEvent

#

I'm reading through my old code trying to figure out how i did it

young knoll
#

I think that’s only for right clicking

drowsy helm
#

i should start commenting on shit

young knoll
#

But you can try it

drowsy helm
#

yeah could be actually

spiral bramble
drowsy helm
#

oh also don't forget noteblocks update their state when the block underneath them is changed aswell

young knoll
#

Yeah you gotta cancel a lot of events and send packets and whatnot

spiral bramble
#

Oh... When I break the block it gets converted to PIANO 0

#

hmm

drowsy helm
#

when you cancel NotePlayEvent?

spiral bramble
#

No just in general

young knoll
#

I think you have to resend a packet for that

#

I remember trying to just cancel the physics event and it didn’t seem to work

#

Might be client side?

drowsy helm
#

this is my code if you wanna check it out

#

for physics i just had a runnable

young knoll
#

Ehhh

#

That’s not good when you have thousands of blocks

drowsy helm
#

yeah

#

theres probably a better approach

young knoll
#

If you just want to handle the block underneath being broken you can use the break event

#

But pistons and stuff exist too, so you could listen for a bunch of events or you could try the BlockPhysicsEvent

#

However that event is quite intensive

#

I hope Mojang does data driven blocks soon™️

drowsy helm
#

i would love them forever

#

i just want to see more features that allow us plugin creators to do more creative things

young knoll
#

The changes in yesterday’s snapshot look promising

drowsy helm
#

you have to do REALLY hacky methods to do some stuff

#

haven't had a look yet

#

would be really nice if we could apply nbt to anything

young knoll
#

Like what

drowsy helm
#

like right now we can only apply nbt to container blocks

#

just any block would be cool

young knoll
#

Well yeah, having normal blocks hold NBT would take a lot of space

drowsy helm
#

yeah

drowsy helm
#

ou i've never seen that before

young knoll
#

It’s a nice wrapper for using the chunk pdc for block data

drowsy helm
#

I've been contemplating making a resource for easy custom block & item creation which generates a resourcepack automatically

#

but sounds like alotta work aswell lol

#

and inventory menus

young knoll
#

Sounds like Oraxen

#

Or ItemsAdder

drowsy helm
#

like i have all the code for it, its just compiling it together and making the api easy

spiral bramble
drowsy helm
#

yeah oraxen is great

hasty prawn
spiral bramble
#

Is it all pre-made blocks & items or can I configure my own?

drowsy helm
#

all your own stuff

#

its like 20 bucks or something

#

oh its open source

spiral bramble
#

Bought.

#

I don't think I've bought a plugin faster

drowsy helm
#

lmao

#

well think about it this way

#

you saved at least 10 hours

spiral bramble
#

And my mental sanity

hasty prawn
#

I always wondered why so many servers had the same custom rank badge

#

It's Oraxen doing that lol

drowsy helm
#

only downside i see is you wont have as much customisability as you would if you coded it yourself

#

but i wouldn't doubt it if oraxen had an api anyway

hardy swan
#

Oraxen and ItemsAdder are pretty customisable and mature

#

and it is not an easy task to achieve such extendability

#

It is actually a downside if you code it yourself

narrow sphinx
#

Ello friends is this the proper place to ask about problems in coding plugins?

hardy swan
#

Generally, yea

drowsy helm
narrow sphinx
#

Alright in that case, trying to do a GUI thing in my plugin right now but when I have the createinv method for my new GUI included in my main, the plugin ceases to work completely

hardy swan
narrow sphinx
#

If I comment out the create inventory method though everything else works again

hardy swan
#

It even has custom mobs

drowsy helm
#

can you show us some code

#

hard to tell without seeing what you are doing

narrow sphinx
#

Ofc

drowsy helm
#

and when do you call createInv()

narrow sphinx
#

In the onEnable of my main class

drowsy helm
#

do you get a stacktrace?

narrow sphinx
#

Just checked and it says the problem is at line 31 in createInv()

#

"lore.set(1, ChatColor.GRAY + "Click to close the menu.");"

#

Maybe the problem is that I used 1 as the index instead of 0?

young knoll
#

Why set and not add

sterile token
#

Hi i need recommendations about this:

#

Im doing a simple http library. Im a bit mixed or i dont know how i should return the response

hardy swan
#

It depends on the response's encoding

sterile token
#

Do you wanna see full code?

hardy swan
#

Sure

sterile token
#

Ok

#

So you understand more how im trying to do it

sterile token
#

I need recomendations how i would do the request itself

hardy swan
sterile token
#

Hmn i follow the format because looks really great

hardy swan
#

then why dont you actually use it

sterile token
#

I use Java 8 that why im doing it

terse panther
#

is there a way to install NMS with mojang mapped on a GRADLE project?

ancient jackal
#

I can't figure out why I keep getting the error Could not pass event PlayerJoinEvent to AltAlerter v1.15-SNAPSHOT org.bukkit.event.EventException: null

#

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private java.lang.Object java.lang.ref.Reference.referent accessible: module java.base does not "opens java.lang.ref" to unnamed module @2a642394 and has something to do with gson

#

couldn't find anything online except for a github issue that was closed by the repo owner saying gson comes with minecraft 1.18

sterile token
ancient jackal
#

I've added a dependency

#

the 2.8.9 version of gson but the console uses 2.8.8 so it uses the one that comes with spigot

#

I only did this in an attempt to resolve the issue but the dependency changed nothing

pearl bloom
#

Morning!
Anyone wanna try on a very interesting issue?

stray crescent
#

guys

#
rewards:
 
  - if:
      group: Premium
    commands:
    - eco give %player% 2000
    broadcast-message: "&a%player% voted and received $2000."

  - if:
      default: true
    commands:
    - eco give %player% 1000
    broadcast-message: "&a%player% voted and received $1000!"
#

how would I make this SuperbVote give people with the premium rank 2000?
it just seems to give 1000 to everyone anyways
https://github.com/astei/SuperbVote/wiki/Configuration

its supposed to work with essentials through vault
but "group: Premium" seems to be a valid command, but now what im looking for apparently
my rank name is called premium

pearl bloom
stray crescent
#

premium

#

or

#

"premium"

#

@pearl bloom

pearl bloom
#

premium

stray crescent
#

omg yay

#

it works

#

1 problem

#

so yes

#

the if statements work

#

but

#

broadcast-message

#

won't work

#

no errors

#

got any ideas?

pearl bloom
#

Is your broadcast setting enabled?

stray crescent
#

yes

#

it worked before

#

tahts why its strange

#

like

#

before i changed out all the default stuff

#

strange

#

here's that part of the script

pearl bloom
#

Configs can be very sensetive to spaces and tabs, make sure that all is correct

stray crescent
#

my script

#
# Rewards. This is the main section you will need to edit. Ordering is important.
rewards:
  - if:
      group: premium
    commands:
    - eco give %player% 1000
    
    broadcast-message: "&a%player% voted and received $1000."

  - if:
      default: true
    commands:
    - eco give %player% 500

    broadcast-message: "&a%player% voted and received $500."

# Whether or not players need to be online to vote. If set, offline player votes are queued for when the player next logs in.
require-online: true

# Whether we should queue votes if players aren't online. Requires the above option to be set to true.
# If this is disabled, the user won't get any rewards if they aren't online, even if they login afterwards.
queue-votes: true

# Broadcast settings:
broadcast:
  # Should we broadcast votes at all?
  enabled: true

  # Should we tell players if they voted?
  message-player: false

  # Should we broadcast queued votes?
  queued: true

  antispam:
    # Should we add a minimum time in between global broadcasts to prevent spam in chat?
    enabled: false

    # How many seconds should be between broadcasts?
    time: 120
#

does it check out for your eyes?

pearl bloom
#

Does the broadcast message work if you're not in the premium group?

stray crescent
#

yes

#

just tried it

#

then it gives me 500

#

what ive learnt about yml files

#

is that it just doesnt care abotu code it cannot run

#

and stops there

#

so

#

everything is running

#

just not

#

the broadcast lines themselves

#

super weird

pearl bloom
#

Can you please type your message in one go? 😄 It's really annoying watching 200 messages going with 1 word xD

stray crescent
#

Haha sorry, if you knew xqc, then you'd know why haha

#

But yeah, I am super bummed right now :/

pearl bloom
#

Just copy the working broadcast message to the non-working and see if it works.

stray crescent
#

u mean the default code?

pearl bloom
#

Copy the defaults broadcast message and put it in the premium broadcast message, just to make sure it works.

stray crescent
#

yeah

#

it works

#

the defauly works

#

default

#

it broadcasts :/

#

im gonna try to reedit the default

pearl bloom
#

Perfect. Then you're good to go?

stray crescent
#

and be careful

#

well i did changes

#

thats the thing

pearl bloom
#

From what I can see, all you did was change 500 -> 1000?

quaint mantle
#

what is the different between sending a PacketPlayInDestroyEntity packet vs CraftPlayer.hidePlayer

#

really interesting me lately

stray crescent
#

nono i changed much more

#

i think i got it though

quaint mantle
#

hidePlayer is jusr easier

#

really?

#

there's got to be a difference

blazing scarab
#

hidePlayer is more reliable, yoy dont have to listen for packets to re-hide player

quaint mantle
#

yea ok

#

i used packets to destroy the player and then in a runnable respawn the player, but the player's custom gameProfile username will not appear above their head

#

it only appears if you use hide and show player

#

very weird

blazing scarab
#

I hope player profile api will be added soon

quaint mantle
#

yea

#

do you have any idea why the above happened btw?

#

im trying to work out logically why packets won't update the player's username but hiding the player and reshowing it with CraftPlayer will

blazing scarab
#

idk

quaint mantle
#

later on im gonna do some experimenting

#

ill see if i can work out why

blazing scarab
#

To change name, you actually need player_info packet

quaint mantle
#

cause that's odd

#

yeah i know

#

i used those

blazing scarab
#

HidePlayer also sends that packet5

quaint mantle
#

yea fair enough

#

i'll try again later

#

thanks for your help 😄

#

to spawn in a player npc would it be NamedEntity?

quaint mantle
#

thanks 😄

pearl bloom
#

Anyone 😢

tiny mural
#

I'm running 17 SDK and trying to write basic 1.17.1 hello world minecraft plugin...
However I encounter this error:

Error:Internal error: (java.lang.IllegalAccessError) class com.intellij.util.io.FileChannelUtil (in unnamed module @0x4034c28c) cannot access class sun.nio.ch.FileChannelImpl (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x4034c28c
java.lang.IllegalAccessError: class com.intellij.util.io.FileChannelUtil (in unnamed module @0x4034c28c) cannot access class sun.nio.ch.FileChannelImpl (in module java.base) because module java.base does not export sun.nio.ch to unnamed module @0x4034c28c
    at com.intellij.util.io.FileChannelUtil.setupUnInterruptibleHandle(FileChannelUtil.java:26)
    at com.intellij.util.io.FileChannelUtil.<clinit>(FileChannelUtil.java:18)
.....

Any help?

glossy venture
#

How are you running it?

tiny mural
#

Through artifacts

pearl bloom
#

Are you not running it on your MC server?

glossy venture
#

Whats the rest of the stack trace

tiny mural
#

    at com.intellij.util.io.ReadWriteDirectBufferWrapper$FileContext$1.execute(ReadWriteDirectBufferWrapper.java:42)
    at com.intellij.openapi.util.io.FileUtilRt.doIOOperation(FileUtilRt.java:945)
    at com.intellij.util.io.ReadWriteDirectBufferWrapper$FileContext.<init>(ReadWriteDirectBufferWrapper.java:42)
    at com.intellij.util.io.ReadWriteDirectBufferWrapper.create(ReadWriteDirectBufferWrapper.java:27)
    at com.intellij.util.io.DirectBufferWrapper.getBuffer(DirectBufferWrapper.java:24)
    at com.intellij.util.io.ReadWriteDirectBufferWrapper.getBuffer(ReadWriteDirectBufferWrapper.java:16)
    at com.intellij.util.io.PagedFileStorage$StorageLock.createValue(PagedFileStorage.java:631)
    at com.intellij.util.io.PagedFileStorage$StorageLock.get(PagedFileStorage.java:558)
    at com.intellij.util.io.PagedFileStorage$StorageLock.access$500(PagedFileStorage.java:466)
    at com.intellij.util.io.PagedFileStorage.getBufferWrapper(PagedFileStorage.java:407)
    at com.intellij.util.io.PagedFileStorage.getReadOnlyBuffer(PagedFileStorage.java:375)
    at com.intellij.util.io.PagedFileStorage.getInt(PagedFileStorage.java:155)
    at com.intellij.util.io.ResizeableMappedFile.getInt(ResizeableMappedFile.java:217)
    at com.intellij.util.io.PersistentEnumeratorBase.<init>(PersistentEnumeratorBase.java:212)
    at com.intellij.util.io.PersistentBTreeEnumerator.<init>(PersistentBTreeEnumerator.java:73)
    at com.intellij.util.io.PersistentEnumeratorDelegate.<init>(PersistentEnumeratorDelegate.java:47)
    at com.intellij.util.io.PersistentHashMap.<init>(PersistentHashMap.java:149)
    at com.intellij.util.io.PersistentHashMap.<init>(PersistentHashMap.java:138)
    at com.intellij.util.io.PersistentHashMap.<init>(PersistentHashMap.java:129)
    at com.intellij.util.io.PersistentHashMap.<init>(PersistentHashMap.java:121)
    at com.intellij.util.io.PersistentHashMap.<init>(PersistentHashMap.java:114)
glossy venture
#

It doesnt seem like youre running it on a server

tiny mural
#

Could this be that my intellij does not support SDK 17?

chrome beacon
#

?paste Also please

undone axleBOT
tiny mural
#

oh ok

glossy venture
#

Are you trying to use PersistentHashMap in your code

tiny mural
pearl bloom
#

Have you exported it to a jar file and running on your MC server?

chrome beacon
#

That error does not come from your plugin

glossy venture
#

Yeah are you running it on a server

tiny mural
#

I've done some research, and it says that my intellij could be outdated to support SDK 17

pearl bloom
#

It certainly looks like you are trying to run/debug it in Intellij

glossy venture
#

Is it while building the jar

tiny mural
#

Yes

glossy venture
#

Ohhh

tiny mural
#

It's not even compiled 😄

glossy venture
#

Bro we thought you were talking about at runtime

#

Yeah def jdk 17 thing

pearl bloom
#

🤯

glossy venture
#

With intellij

chrome beacon
#

Highly recommend Paper Userdev plugin for gradle. It works great

tiny mural
#

So I just need newer version of intellij?

glossy venture
#

I dont know if newer versions support newer java but you could use gradle 7.3

pearl bloom
#

I use Eclipse, There's a bunch of alternatives 🙂

tiny mural
#

I only use IntelliJ 😛

chrome beacon
#

Take a look at wiki.vg and decompiled NMS code

blazing scarab
#

Why packets

glossy venture
#

Maybe so the server doesnt have to process the entities idk

chrome beacon
#

Eh just put a no ai tag on it should disable the most intensive stuff

blazing scarab
#

There was even benchmarks

glossy venture
#

Oh wait setCanTick(...) is a thing?

blazing scarab
#

.

blazing scarab
glossy venture
#

Ah

celest isle
#

Any idea why java.lang.NullPointerException: Cannot invoke "org.bukkit.command.PluginCommand.setExecutor(org.bukkit.command.CommandExecutor)" because the return value of "argus10q.qol.QOL.getCommand(String)" is null ?

#

nvm my dumbass didnt put it in plugin.yml

hollow bluff
#

spigot.yml?? what

celest isle
tiny mural
#

Guys, why I can't see a normal green color but instead I see this in my console:

[09:58:01] [Server thread/INFO]: ºaHello Minecraft!

The code:
Bukkit.getLogger().info(ChatColor.GREEN + "Hello Minecraft!");

celest isle
#

¯_(ツ)_/¯

#

works fine for me

tiny mural
#

huh wut

celest isle
#

probably a console window thing

tiny mural
grizzled pollen
#

what lol

celest isle
#

shh didnt see anything

grizzled pollen
#

don't use Bukkit? lmfao

celest isle
#

getLogger().info(ChatColor.GREEN + "Hello Minecraft!");

#

try

grizzled pollen
#

what the difference

#

just plugin prefix

tiny mural
celest isle
#

I use paper so I never had this issue D:

pearl bloom
#

It's probably just the terminal window you're using that doesn't have the support. The code itself runs, that's why you get a "a" infront of it

grizzled pollen
pearl bloom
#

I'm sure that if you'd use ChatColor.GREEN in-game it would work

tiny mural
#

Yeah, it is console thing..

celest isle
#

I remember this problem when I was using multicraft

hollow bluff
crimson terrace
#

I have a problem where my plugin spawned a mob and it multiplies over night even though there should only ever be one. I set the option to remove the entity when no player is nearby to false, could that be it?

#

I respawn the mob by checking inside the entityDeathEvent. Could that get called randomly?

tardy delta
tiny mural
tardy delta
#

Ye

hybrid crest
stray crescent
#

omg

#

guys

#

why does not /vote work

#

it doesnt do shit

eternal oxide
#

/vote

#

yep, it does nothing 🙂

stray crescent
#

omg

hybrid crest
#

/vote

#

can confirm

stray crescent
#

I set it all up literally

#

And then it just stopped working

#

so sadge

#

@crimson terrace When I type /vote, the plugin just won't be responsive and print everything. Yet it is installed perfectly fine.

shy wolf
#

how to set player yaw and pitch? without teleporting the player

stray crescent
#

depends

#

how do you want to set it?

#

via a command?

#

What's the purpose

shy wolf
#

i am trying to do whan you step on the emerald block it YEET you and set your yaw & pitch to like: (yaw: -89,ptich: -2)

#

i did all the YEET staff

#

?paste

undone axleBOT
shy wolf
#

this is my code

shy wolf
stray crescent
#

You have to send PacketPlayOutEntityHeadRotation and PacketPlayOutEntityLook packets when whenever that specific circumstance changes (when u step on the emerald block) Though modifying packets would be enough

#

Pretty sure you can do so with protocollib

#
        try {
            byte yaw = (byte)(int)(player.getLocation().getYaw() * 256.0F / 360.0F);
            byte pitch = (byte)(int)(player.getLocation().getPitch() * 256.0F / 360.0F);
       
            Constructor<?> EntityLookConstructor = NMSManager.getInstance().getNMSClass("PacketPlayOutEntity$PacketPlayOutEntityLook").getConstructor(new Class[] { Integer.TYPE, Byte.TYPE, Byte.TYPE, Boolean.TYPE });
            Object EntityLook = EntityLookConstructor.newInstance(new Object[] { player.getEntityId(), Byte.valueOf(yaw), Byte.valueOf(pitch), Boolean.valueOf(true) });
            Object PacketHead = NMSManager.getInstance().getNMSClass("PacketPlayOutEntityHeadRotation").newInstance();
         
            NMSManager.getInstance().setField(PacketHead, "a", player.getEntityId(), true);
            NMSManager.getInstance().setField(PacketHead, "b", yaw, true);
         
            NMSManager.getInstance().sendPacket(player, PacketHead);
            NMSManager.getInstance().sendPacket(player, EntityLook);
        } catch (Exception e) {
            e.printStackTrace();
        }
tardy delta
#

hey why is the setsomedata method returning a new snapshot too?

#

Trying to implement it rn

shy wolf
tardy delta
#

A class he made probably

#

Which includes methods to send packets and gets classes

shy wolf
#

probably

#

artyom what is NMSManager

stray crescent
#

It's a Network Management System

shy wolf
#

can you send me it?

#

the class

stray crescent
# shy wolf the class

NMS is undocumented. It's decompiled server code. The closest you'll get to documentation is reading methods / class names for yourself.

shy wolf
#

uh ok

shy wolf
#

its way to complicated

#

but nvm

grim ice
#

teleport him

#

to his location

#

but with a different pitch and yaw

shy wolf
#

(without teleporting the player)

#

bc tp will reset the velocity

glossy venture
#

theres nothing wrong with teleporting the player

#

then set the velocity back to what it was

grim ice
#

^

opal sluice
#

Hi, what's the best way to set an element out of bound into a list ?

glossy venture
elfin atlas
#

Quick question what MC protocol can I'll use to remove a player from a client side armorstand?

glossy venture
#

what do you mean by remove a player from a client side armorstand

elfin atlas
glossy venture
#

with a player on it?

#

you mean a player head?

#

or like a player riding the armor stand

spiral light
elfin atlas
glossy venture
#

oh

#

no clue

elfin atlas
#

Ohh okay

ivory sleet
#

@tardy delta

glossy venture
#

i dont know the name in code for it

#

but its something with passengers

#

and you can look at how to construct the packet there

#

in the wiki

tardy delta
#

Ok

glossy venture
young knoll
#

Oh

#

Interesting

elfin atlas
pearl bloom
#

Custom recipe issue

glossy venture
#

that would make sense

#

it sets them, not adds or removes, so if you set the list to empty it should dismount it

#

and i cant find a dismount packet

mellow edge
#

can spigot plugins access files outside jars, comp. files

tardy delta
blazing scarab
next stratus
#

How do you import net.minecraft.world using gradle? I've tried craftbukkit and just spigot but no luck 🤔

tardy delta
#

wdym with side effects?

#

and cloning

blazing scarab
tardy delta
#

oh, right..

#

but if you construct a new object with weird parameters isnt it broken too?

blazing scarab
tardy delta
#

ah i see

quaint mantle
#

so in my server when players leave and join again they lose thier inv

spiral bramble
#

Not sure if I'm dumb but the 'missing package' isn't missing?

spiral bramble
vale ember
spiral bramble
vale ember
spiral bramble
#

I'm using this plugin if that makes a difference

vale ember
#

i don't see you include anything beside spigot in your pom.xml, do you use alternative method for including jar?

spiral bramble
buoyant viper
#

uh oh

vale ember
spiral bramble
vale ember
#

yep thats the right way

#

just reload pom.xml

#

there is an icon at the top-right in intellij

spiral bramble
#

Yeahh I don't see that.

#

I reloaded the maven project from another panel and got this

next stratus
vale ember
vale ember
next stratus
#

oh

#

btw, does anyone know a way to set per player world borders? I tried using an api but it won't work because I set my spigot version to 1.8 to support 1.8 -> 1.18 and the dev won't help in the slightest

tardy delta
#

worldapi?

next stratus
#

worldapi?

tardy delta
#

border

next stratus
spiral bramble
#

Should I just ditch the setup plugin and do it manually?

vale ember
pearl bloom
vale ember
#

uhh, i guess the repo isn't valid anymore, where did you get jar you put in intellij?

vale ember
#

probably it's changed

spiral bramble
vale ember
#

yeah, the repo just changed

spiral bramble
#

Thanks for your help! Wasn't aware I needed to edit the pom.xml

vale ember
#

np

tardy delta
#

is it a good idea to work with profile classes for my users?
like thishttps://github.com/FourteenBrush/MagmaBuildNetworkReloaded/tree/master/src/main/java/me/fourteendoggo/MagmaBuildNetworkReloaded/user/profiles

vale ember
#

not related, but why this happened?

#

it's weird

blazing scarab
tardy delta
quaint mantle
#

how could you tell

tardy delta
#

ah i see

#

fixed

vale ember
#

but why would that even happen???

tardy delta
#

did something stupid with git

#

git rebase or something

vale ember
#

ohh

pearl bloom
wheat compass
#

I tried looking at the spigot forums for advice, but the responses appear to be using depriciated methods.

ScoreboardManager manager = Bukkit.getScoreboardManager();
Scoreboard board = manager.getMainScoreboard();
Objective objective = board.getObjective("lives");
Score lives = objective.getScore(player.toString());
player.sendMessage( ChatColor.GREEN + "" + lives + ":");```

I'm trying to get and set the player's value of the scoreboard `lives`, but I'm not really sure how to do that. The message that the game is sending appears to be the memory location and not the numerical value of the score. What have I missed here?
I understand there are better ways of storing data than a scoreboard, but I need the scoreboard method atm.
vale ember
#

best way to make 1.8-like combat in 1.18? (with specific weapons)

quasi flint
#

oldcombatmechanics

vale ember
wheat compass
#

so read the source code and work from that?

vale ember
#

oh ok

celest nest
#

I was just wondering if when you cancel a chat message (sent by a player) would other plugins get that message?

vale ember
#

depend on how they get it

#

depends on if they're using NMS or api, and on event handler's priority ig

#

cuz if they're interacting with protocol directly they will probably get the message even if you cancel AsyncPlayerChatEvent

celest nest
#

oh thanks

tall dragon
#

other plugins will get the event regardless

#

the cancelled field will just be set to true

wheat compass
elfin atlas
undone axleBOT
hardy swan
#

Java 9 moment

sterile token
grand venture
#

I want to prevent the player from getting hunger but when I cancel FoodLevelChangeEvent nothing happens. Help?

sweet lance
#

Hi all, I can't understand why the itemMeta of non-damageable objects triggers my println. If I break a block with a bedrock block in my hand, I can see my System.out.println.
Why?

    @EventHandler
    public void onBlockBreakEvent(BlockBreakEvent event) {
        if (!event.isCancelled()) {
            ItemStack itemInMainHand = event.getPlayer().getInventory().getItemInMainHand();
            if (itemInMainHand.getItemMeta() instanceof Damageable damageable) {
                System.out.println(itemInMainHand.getType());
            }
        }
    }
tardy delta
#

Why Damageable damageable if you don't use it

sweet lance
sterile token
#

Is it a bug or im fogotting smth? Builder its a inner static class from Message

tardy delta
#

No new

#

I guess

sterile token
#

Builder its a inner static class from Message

tardy delta
#

Idk

tardy delta
#

Message.newBuilder()

#

That's what i said

sterile token
blazing scarab
#

the new keyword

sterile token
#

yeah thanks it was that

#

I dont know why

blazing scarab
#

you create a new Instance of.. method??

sterile token
tardy delta
#

🧐

#

New Method() lol

lost matrix
sweet lance
lost matrix
grim ice
#

your score is being casted to string

#

there should be a method for getting an int value from it

grim ice
#

well java 8 from oracle is paid right?

#

thats prob why

blazing scarab
#

nah

grim ice
#

or not idk

blazing scarab
#

maybe the support is paid

young knoll
#

Why would I not use 17

sweet lance
sterile token
#

Let say you cannot use Java 17 to compile a plugin for runnint it 1.8x to 1.12x for example

lost matrix
sterile token
#

Plugins in theory should be multi version

lost matrix
young knoll
#

Heck legacy versions

lost matrix
lunar python
#

Is there an event called when a player lands?

sterile token
young knoll
#

If I recall correctly all ItemMeta is actually damagable

#

Because yes

sweet lance
#

Blocks should not be Damageable as the definition of the class itself.
Same error with STICKS

young knoll
#

Yeah like I said

#

I think all ItemMeta is damagable

sterile token
spiral light
#

isnt the Damageable for all items just because ancient versions had items with durability that were different items then ?

lunar python
#

ok thanks

sweet lance
wheat compass
young knoll
sweet lance
#

1.18.1

lost matrix
#

Maybe Blocks are damageable for legacy reasons 🤷

sweet lance
#

This code snippet was written in the past and it worked. So it's not for legacy

#

for this I think it is a bug

young knoll
#

Got your API version set

sweet lance
#

YEah, 1.18, why?