#help-development

1 messages · Page 1068 of 1

river oracle
#

Unfortunately no

#

CraftBukkit relocates

#

So you need to update it every version

grim hound
#

what's the best way to store an inventory into a file?

river oracle
#

It's annoying as all he'll

inland marten
#

bro

river oracle
inland marten
river oracle
#

Use the internal byte serializarization mojang provides

inland marten
river oracle
#

To rewrite the imports

grim hound
#

the item stacks need to be separated by something

river oracle
#

Mojang knows about air spigot chooses to blissfully ignore it

grim hound
river oracle
#

And serialize it too

grim hound
river oracle
#

I use internals

#

And go into bytes

#

But you can also just use config serialization api

grim hound
tardy delta
#

bukkit object output stream?

#

we serializing itemstacks?

grim hound
blazing ocean
tardy delta
#

i used to base64 them but dunno if theres a better way than the obj outstream

remote swallow
#

internals

grim hound
#

got stuck here

#

wait, is that possible?

#

converting a whole array, not just a singular serializable object?

finite garden
#

why am I getting this error when trying to compile remapped server jar

fair rock
#

Same, i thought thats only my problem 💀

finite garden
#

are mojang servers having a skill issue or smth

fair rock
#

I have the same error with my own nexus server since 2 hours, idk what the hell happend

tardy delta
#

unless writeObject changed

fair rock
finite garden
#

maybe

#

imagine if mojang like took the mappings down or smth

#

cuz they did something similar with bedrock edition apperently

grim hound
tardy delta
#

dunno what they mean with the handle is then assigned

grim hound
#

neither do I

#

nor do I know why the length is written after the contents

#

doesn't make sense for me

tardy delta
#

dunno where you even got that doc from, javadocs dont mention it

subtle folio
#

hi 🙂 how do I get the current spigot verison my server is running? e.g. spigot_1_21_R0 etc..

worthy yarrow
#

You put in the server folder

subtle folio
#

There isn't a method to get it?

#

a config is silly

worthy yarrow
#

?bt

undone axleBOT
fair rock
#

Do you mean something like Bukkit.getVersion()?

subtle folio
#

yeah exactly

#

but spigot equivalent?

fair rock
#

Idk if that exists, just asking so NuclearKat can give you the right answer

#

xd

worthy yarrow
#

You should phrase your questions better

tardy delta
#

or smth

subtle folio
worthy yarrow
#

It sounded like, how do I get a server software jar

subtle folio
#

idk how you got that but ok

subtle folio
worthy yarrow
#

Because I just woke up

subtle folio
#

i love that spigot-developement is your go to morning routine

worthy yarrow
#

It’s not my fault as soon as my phone is on spigot notifications come flying in

#

I thought someone was dying here man

subtle folio
#

hahaha

worthy yarrow
#

Buddy

#

You’re blocked

subtle folio
#

LOL

fair rock
#

Just asking, is the buildtools working fine for you guys?

subtle folio
#

yeah

#

love the new gui

fair rock
#

If i try 1.21, remapped, its not working because Artifact not found?

subtle folio
#

?paste log

undone axleBOT
subtle folio
#

i just did 1.21 remapped no issue

fair rock
#

When?

subtle folio
#

literally two hours ago

fair rock
#

Okay try again, since ~1 1/2 is not working, if its working fine okay, i can read the log its okay. Just saying he cant find it on minecraft-libraries, the other dude had the same problem xd

cold pawn
#

bump^

subtle folio
#
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.contents.PlainTextContents;
import org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import world.ntdi.api.nms.ChangePlayerNameService;

public class spigot_1_21_R0_1_SNAPSHOT implements ChangePlayerNameService {
    @Override
    public void updatePlayerUsername(String p_username, Player p_player) {
        CraftPlayer craftPlayer = (CraftPlayer) p_player;

        craftPlayer.getHandle().setCustomName(MutableComponent.create(PlainTextContents.create("Test")));
    }
}
``` no errors in my intelliJ, but when I go to package my plugin,
#

not sure what I did

meager hill
#

So I'm probably in the wrong place, as this isn't a question about plugins

I am a server developer for an old version of Minecraft. The wiki.vg has incomplete documentation for some of the old server structure so I'm running into issues with packet order and ID.

I am creating a server on limited hardware for 1.7.2 so I'm attempting to create a server that only has the basics (i know the computer cant handle max render, tons of players ect...) After finishing login success (packet id 0x02) I try to send the world spawn position (packet id 0x05) however I get a crash "Bad packet Id 05". I have tried several other packets with no success.

Is this likely an issue with the content of the packet, or its expecting a different packet id than what i have tried (0x03, 0x05, 0x00 keep alive).

Most issues i have seen online were due to mod or plugin conflicts but I'm trying to build for a vanilla friendly client.

Any help or direction would be immensely appreciated.

inner bridge
#

Hi, I would like to know how I can have the levels sorted in ascending order in the order? Because currently it's a bit random

    @Override
    public List<String> onTabComplete(CommandSender sender, Command command, String msg, String[] args) {
        List<String> completions = new ArrayList<>();
        if (args.length == 1) {
            if (sender instanceof Player player) {
                int playerLevel = player.getLevel();
                if (playerLevel > 0) {
                    for (int i = 1; i <= playerLevel; i++) {
                        completions.add(String.valueOf(i));
                    }
                }
            }
            return completions;
        }
        return List.of();
    }
subtle folio
river oracle
subtle folio
#

that would prob do it

#

i mean jdk 17 but

#

let me update everything

#

@river oracle changing project sdk from 17 -> 21 fixed it!!!

#

😄

river oracle
#

Np

grim hound
kindred valley
#

?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
#

Use #bot-commands

#

instead of flooding the channel with that everytime you want to check links

kindred valley
#

i dont want to

#

maybe

worthy yarrow
#

Love it

chrome beacon
#

._.

kindred valley
#

i want to put it on here

#

i dont flood i dont spam

worthy yarrow
#

...

meager hill
#

Q: new to server. Is it ok to link question i have asked previously after ~15-20 min due to it being buried.

chrome beacon
#

yes

#

Though if no one's answering you can create a thread

worthy yarrow
#

You can reply to your original with like a "bump" or something

chrome beacon
#

so it doesn't get lost

kindred valley
#

no it is ok

#

it i s ok

meager hill
worthy yarrow
#

I thought wiki.vg had version pages as well? Maybe I'm just dumb

kindred valley
#

yeah ig

meager hill
#

the old versions are incomplete

worthy yarrow
#

Ah

#

Right the issue with a wiki

meager hill
#

i have been following it for the last 2 weeks building my server. The new versions are better so I have been following that structure. Problem is too much has changed to apply that structure to old versions

kindred valley
#

?paste

undone axleBOT
meager hill
worthy yarrow
#

This guys a troll

worthy yarrow
kindred valley
#

dumb fk

worthy yarrow
#

...

grim hound
grim hound
#

you ain't helping no one

#

just being annyoing

#

so stfu

blazing ocean
#

yup

worthy yarrow
#

rad

#

I got use out of the gif already

#

imagine that

blazing ocean
#

kek

kindred valley
#

crybaby

meager hill
#

1.7.2 is after the netty rewrite. The server code is simpler and has less to manage while still being a "Modern" version. My goal is to create a server that is still minecraft but has the least number of features I need to manage

grim hound
worthy yarrow
#

@young knoll you wanna help out ❤️

meager hill
#

also can we mute this fool

blazing ocean
#

i'm sure coll agrees with them

grim hound
blazing ocean
#

he's the typa guy for that

worthy yarrow
#

Should I have gone with choco then kek

#

Maybe steel?

blazing ocean
#

kek

worthy yarrow
#

They're all green tags right now so..

worthy yarrow
blazing ocean
#

1.7 is 10yrs old kekw

meager hill
#

i know, i didnt want to do a prerelease version

grim hound
meager hill
#

i could move up a few versions but dont want to have to deal with things like armor trim and other massive NBT stuff

worthy yarrow
#

Idk point is if wiki.vg doesn't have your packets then you might be kinda cooked until some 1.8 era chad comes along

meager hill
#

thats what i was hoping for. The reason i didnt do 1.8.x was that i remember the old servers being finicky

worthy yarrow
blazing ocean
#

protip for writing server: no version requirement but just huge switch statementd everywhere

worthy yarrow
#

kek

meager hill
#

should i move to 1.13?

meager hill
#

i could rebuild my stuff in less than a day

worthy yarrow
meager hill
#

I tried for recent versions the main issue is i have no idea how to work with the registers

worthy yarrow
#

The minecraft registries?

meager hill
#

wrong word. let me find it in the wiki, gimme a sec

worthy yarrow
#

I don't remember if we're more modern now, but reflection and unfreeze registries then you can do what you need

meager hill
#

its the "Known packs" and "Registry Data" that i was having issues with

#

btw im doing this in C

worthy yarrow
#

oh dear

meager hill
#

so i have to translate every java thing

#

i have experience (low) in java but can read it. Im a ton better at C and C++

worthy yarrow
#

Well oop is oop so

meager hill
#

I have the TCP stuff done and can save packets from the user, i get to "Loggin in" for the client after i send the login sucsess packet. My issues is what packet order i need.

#

i thought it was "Handshake stuff" -> "Set world spawn" -> "send world data" -> "spawn player" -> "Play logic"

worthy yarrow
#

It should say on the wiki, or was that the incomplete part?

meager hill
#

for 1.7.x yes

worthy yarrow
#

erm

meager hill
#

1.20.x is clear but i tried following that order (not using packets that dont exist in 1.7.x) but to no avail

worthy yarrow
#

Try the 1.8 format perhaps?

#

I'm not sure how much protocol changed between them but I can't imagine it to be enough to matter

#

Take that with a grain of salt

meager hill
#

1.9.4 has entered the chat

#

i know that 1.9 does some wierd stuff hence me avoiding it

worthy yarrow
#

Yeah 1.9 was an odd time kek

meager hill
#

ill try 1.8 logic and see what breaks

worthy yarrow
#

If anything it'd be pvp related aspects I'd think

#

So maybe writing for native 1.8 would be better?

meager hill
#

Im not worried about pvp atm... If i can get it working, i can do a rebuild for 1.8 and just handle the changes

worthy yarrow
#

Fair enough

slender elbow
worthy yarrow
#

Yeah sorry

#

I wrote that right after taking my morning toke

#

Should think more before I speak for real

kindred valley
#

ye its

meager hill
worthy yarrow
#

Ith me suggesting 1.8

#

But the point is that you were trying with 1.7.x

meager hill
#

well when im talking about 1.7 it seems resonable

worthy yarrow
#

And wiki vg is incomplete so

meager hill
#

ye

subtle folio
#

can I update entity locations in an async runnable? or does it have to stay sync

worthy yarrow
#

Sync iirc

subtle folio
#

kk ty

meager hill
#

btw the reason im doing this is a bet between a friend and I. We are both using "Ancient/limited" hardware and have 4 months to build a working Minecraft server. Whoever's server can mine, craft, and build while using the least resources wins. Im writing it in C so i can try to keep it under 64kb of memory. I have the world (one chunk) player data and about half the server logic at 35kb. If i can fix my packet issue I should win.

This is why im using 1.7.x and keeping everything i can in C

worthy yarrow
#

Interesting bet

meager hill
#

his server is currently at 800kb but he hasnt done his TCP stuff yet. he is doing it in C# so its easier for him but needs a ton more resources

worthy yarrow
#

@alpine urchin wanna give this guy some helpful insights perhaps?

worthy yarrow
meager hill
#

barely playable but by definition its still minecraft

worthy yarrow
#

retro is doing something similar right now

#

Netty / something that I forgot only too

#

Hopefully he's not too busy and can help

meager hill
#

I still have 1.5 months to finish and just need to fix my tcp logic. Unless my friend switches to C or rust i should be good

#

my tcp logic is in a massive switch statement right now (tcp packet index 1) then i handle the packet from there.

Im about ready to try every single possible packet and see what gives me a tcp return packet. Im using Wireshark to read what packets make it and what get dropped. If i could disable encryption on a normal client i would also be able to read the order

#

I have both a working java 1.7.2 server and a 1.7.2 client but cant figure out how to remove the encryption packet with IntelliJ

alpine urchin
#

im too lazy to read all that

worthy yarrow
#

kek

alpine urchin
#

yap yap yap

#

just whats the issue

meager hill
#

tldr : need packet order for 1.7.2

#

wiki incomplete

alpine urchin
#

wtf

worthy yarrow
#

(I already suggested a rather modern version)

alpine urchin
#

you use 1.8+, and my ears are open

digital nova
#
Encountered error while processing failure consumer: java.lang.NoSuchMethodError: 'void net.md_5.bungee.protocol.packet.BossBar.setTitle(java.lang.String)

Any clue whats up, my plugin is trying to create a bossbar, this is bungee

alpine urchin
#

atleast 1.7.10

#

and that's as far as my kindness extends

meager hill
#

or 1.8.x if needed

alpine urchin
#

and why do you care about 1.7.2?

#

ok packet order is extremely vague

#

whats wrong

slender elbow
alpine urchin
#

do you have code

worthy yarrow
meager hill
#

Not super attached to 1.7.x. Current issue is after Login Sucsess packet the client is waiting for another packet but every packet i send is "Bad packet id XX"

slender elbow
#

oh okay so i did read it incorrectly

#

ignore my comment then lmao

meager hill
#

I can post but more than half is in Hex

worthy yarrow
#

?paste

undone axleBOT
meager hill
#

i dumped it into that pastebin

#

idk how this works

worthy yarrow
#

save button and send the link

meager hill
#

ah

#

i know half is hardcoded hex, gotta keep that ram usage down

blazing ocean
#

question

meager hill
#

possible answer

blazing ocean
#

why are you writing an mc server in arduino

subtle folio
#

@meager hill are you running this on an mcu?

subtle folio
alpine urchin
#

note that This (also known as Join Game) is then in the PLAY state

meager hill
#

the bet is minimal hardware. i have external memory and the 64kb eeprom is where the world is saved

blazing ocean
#

oh god

#

glhf

meager hill
#

Im using offset hardcoded chunck data to populate the client side

alpine urchin
#

you're just gonna disregard my comment

#

ok

meager hill
#

currently reading

alpine urchin
#

Make sure it's in the correct format for your version

#

I hope your version is 1.8 or newer

#

or 1.7.10 still doable

#

so not all fields will match with whatever you are targetting

meager hill
#

Pretty easy change at this point. I have another file already made with that packet coded, i will import

alpine urchin
#

what were you doing instead

alpine urchin
#

that's the packet you must send after LoginSuccess

#

what version is that

#

1.7.10 or 1.8

meager hill
#

shoot wrong one that was the 1.7.2, gimme a sec

alpine urchin
#

just pick a version brother

#

which will you develop for

#

accounting for changes are simple later, but pick something first

alpine urchin
#

Does your system account for connection states

meager hill
#

ill try this then get back to you

#

kinda?

#

one sec

alpine urchin
#

well, that is the first packet in the PLAY state that you send

#

which means, the IDs reset

#

so account for that

coarse linden
#

how can i view

#

.schem

#

files

worthy yarrow
#

elaborate

meager hill
#

I keep track of the current connection and what the previous state was. If a client goes back a state i should be able to handle it as long as the logic dosent jump

coarse linden
#

like

#

mcedit

#

i need to debug

#

my .schem file

#

cuz worldedit is having a stroke saying it cant identify it

worthy yarrow
#

The schem file you created was created with the version of WE you're using correct?

#

I've some issues like this before

coarse linden
#

no

worthy yarrow
#

Try that

coarse linden
#

litematica

topaz kestrel
#

is there a way to upate npc's skin without adjusting the game profile textures? because if i change the texture of game profile, it will change for everyone

coarse linden
#

with world edit?

remote swallow
#

-e

coarse linden
#

im fucking stupid

#

im trying to save

#

a litematic schematic

#

like the preset

#

that isn't even loaded in

#

now it works

#

yeah no it still doesn't work

alpine urchin
#

haha

coarse linden
#

its fucking world edit

#

ClipboardFormat clipboardFormat = ClipboardFormats.findByFile(schematicFile);

#

returns null

#

so i've changed it

#

to every single enum to test

#

and it wont work

#

and i've saved the schem using world edit, litematic and converted it to schem

#

im having a mid life crisis

peak depot
#

sorry for ping

worthy yarrow
#

Try searching by file name (string) btw, this is how I'm currently doing it and it works fine, I'm not sure why the file is returning null but idk try something like this I suppose?

coarse linden
#

its a valid file

#

something is wrong

#

with the actual data

#

in it

worthy yarrow
#

Hmm

coarse linden
#

wdym

worthy yarrow
#

The file you're trying to use, was it created with the version of world edit you have on server & are depending on in your plugin?

coarse linden
#

it was created with world edit

#

and yeah im depending it

#

i also tried

#

7.3.0

#

and 7.3.4

#

still the same error

worthy yarrow
#

Ok so the schematic file you've created and are using was created using the same version of world edit that's on your server?

coarse linden
#

yes

digital nova
#

Does anyone have the slighest clue how to send a bossbar on bungee, i've tried using the Packet and all i get it

Encountered error while processing failure consumer: java.lang.NoSuchMethodError: 'void net.md_5.bungee.protocol.packet.BossBar.setTitle(java.lang.String)'
worthy yarrow
coarse linden
#
// Closes automatically when in try block like this
        try(EditSession editSession = createEditSession(location.getWorld())) {
            ClipboardFormat clipboardFormat = ClipboardFormats.findByFile(schematicFile);
            ClipboardReader clipboardReader = clipboardFormat.getReader(new FileInputStream(schematicFile));

            Clipboard schematic = clipboardReader.read();

            Operation operation = new ClipboardHolder(schematic)
                    .createPaste(editSession)
                    .to(BukkitAdapter.asBlockVector(location))
                    .build();

            Operations.complete(operation);
        }catch (final Throwable e) {
            e.printStackTrace();
        }
#

ClipboardFormat clipboardFormat = ClipboardFormats.findByFile(schematicFile);

#

is nullable

#

and thats causing all the issues

#

i've looked into the source and tested out all the enums

#

for it just in case it was broken or smth???

#

and it still doesn't work

slender elbow
#

litematica schematics are not compatible with worldedit afaik

coarse linden
#

yeah

#

i converted it afterwards

#

but even the .schem from the world edit isn't working

slender elbow
#

how are you saving it?

coarse linden
#

using world edit

#

i've tried downloading other schematics

#

and they dont work either

coarse linden
#

is anyone able to help me

#

im starting to this is a worldedit problem

#

im on 1.21

slender elbow
#

are you able to load and paste the schematics via commands?

coarse linden
#

yes

#

im going to reverse engineer it rq

slender elbow
#

then the problem is in your code

coarse linden
#

to see what its doing

slender elbow
#

it's open source lol

coarse linden
slender elbow
#

i mean

#

it is

coarse linden
#

its not my code first

#

and i've tested it

#

like

#

it finds an enum

slender elbow
#

if it works via commands then the schematics and worldedit are fine

coarse linden
#

there are 4 enums

#

and it finds it

#

through the file

#

which enum to use

#

so i manually

#

checked each enum and it still

#

isn't working

slender elbow
#

i mean

#

i can't see all of your code, but if it works with worldedit commands, then your code is wrong

coarse linden
#

clipboardFormat is null

#

it checks the format

#

like version of the schematic

#

and if it can't find a right version its null

#

file is not null and exists

slender elbow
#

how do you know it's null? are you getting an exception?

coarse linden
#

yes

slender elbow
#

stack trace

coarse linden
#

java.lang.NullPointerException: Cannot invoke "com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat.getReader(java.io.InputStream)" because "clipboardFormat" is null

slender elbow
#

and is the File pointing to the right file?

coarse linden
#

yes

#

it wouldn't say

#

clipboardFormat is null

#

if it didn't return null

#

the check throws an exception

slender elbow
#

yes, so maybe the file isn't pointing to the correct file, a file that is not a schematic or doesn't exist

#

thus it returns null

coarse linden
#

no

#

it will throw

#

it wont return anything

#

the file

#

exists

slender elbow
#

that does not mean that the file exists

coarse linden
#

its very

#

confusing

slender elbow
#

print file.exists()? idk

coarse linden
#

its true

slender elbow
#

i have code that loads schematics and works fine ¯_(ツ)_/¯

coarse linden
#

yh

#

its weird

#

its making me

#

very made

#

mad

shadow night
#

classic

coarse linden
#

im just

#

making

#

a simple luckly block plugin

#

so i can practice yk

#

and i gotta deal w this

#

ok i give up for now

umbral ridge
#

😿

tardy delta
coarse linden
#

I didn’t write it

#

It’s the world edit api around

#

Source

tardy delta
#

guess they are not really smart

coarse linden
#

that’s not how you judge people

tardy delta
#

glad im not torvalds

river oracle
#

Does anyone know how craftbukkit includes Minecraft's assets within its jar

#

nvm

olive compass
#

Is there a way to change a chest’s inventory size to something of size >=27?

inner mulch
#

?

#

you can set it to multiples of 9

olive compass
#

Ik, itried it like this:

Inventory chestInv = Bukkit.createInventory(player, 5 * 9);
customChest.getBlockInventory().setContents(chestInv.getContents());
#

left some code out between the 2 lines where i add stuff to the chest

inner mulch
#

okay and whats the issue?

olive compass
#

Got an "java.lang.IllegalArgumentException: Invalid inventory size (45); expected 27 or less" error

inner mulch
#

and which line causes that? according to the error?

remote swallow
#

your trying to set the contents of a larger container to a smaller chest

olive compass
remote swallow
#

if you want to change the size of a chest you have to handle the opening the inv, and saving the contents

olive compass
remote swallow
#

listen to block place event and give the chest a pdc tag if its yours, listen to player click event and check pdc for if its your chest, if it is open an inv from the stored contents in the chest and save when it closes

young knoll
#

How you gonna store 45 items in a 27 item inventory tho

worthy yarrow
#

Alter stack limits :p

young knoll
#

What if I store 45 different items

worthy yarrow
#

cooked

olive compass
#

well😂

muted otter
remote swallow
#

tile entities have pdc

young knoll
#

Uhh aktually they are called block entities

young knoll
remote swallow
#

tile entity

quick jay
#

armorStand#isValid can return false and the armorstand be spawned in the world?

coarse linden
#

did you check what its actually doing

young knoll
#

It checks if it’s alive and loaded

#

And spawned in the world

quick jay
chrome beacon
#

How are you gettint the entity instance

quick jay
#

1sec

coarse linden
#

lol

coarse linden
#

while you're here

#

can u help me

#

big time

#

🙏

young knoll
#

With what

coarse linden
#

worldedit api

#

and loading schematics

quick jay
# chrome beacon How are you gettint the entity instance

I'm saving it in Minion Object.

method on minion object:

public ArmorStand createOrMoveArmorStand(MinionPlot minionPlot, Location currentLocation, Location newLocation) {

    if (armorStand != null && armorStand.isValid()) {
        Location teleportLocation = getTeleportLocation(currentLocation, newLocation);
        armorStand.teleport(teleportLocation);
        return armorStand;
    }

    ItemStack chestplate = new ItemStack(Material.LEATHER_CHESTPLATE);
    LeatherArmorMeta itemMeta = (LeatherArmorMeta) chestplate.getItemMeta();
    itemMeta.setColor(Color.LIME);
    chestplate.setItemMeta(itemMeta);

    ItemStack leggings = new ItemStack(Material.LEATHER_LEGGINGS);
    LeatherArmorMeta itemMeta1 = (LeatherArmorMeta) leggings.getItemMeta();
    itemMeta1.setColor(Color.LIME);
    leggings.setItemMeta(itemMeta1);

    ItemStack boots = new ItemStack(Material.LEATHER_BOOTS);
    LeatherArmorMeta itemMeta2 = (LeatherArmorMeta) boots.getItemMeta();
    itemMeta2.setColor(Color.LIME);
    boots.setItemMeta(itemMeta2);

    Location teleportLocation = getTeleportLocation(currentLocation, newLocation);
    ArmorStand armorStand = (ArmorStand) MinionPlugin.PLOTWORLD.spawnEntity(teleportLocation, EntityType.ARMOR_STAND);

    armorStand.setHeadPose(new EulerAngle(Math.toRadians(18), 0, 0));
    armorStand.setHelmet(new ItemStack(Material.SKULL_ITEM, 1, (byte) 3));
    armorStand.setChestplate(chestplate);
    armorStand.setLeggings(leggings);
    armorStand.setBoots(boots);
    armorStand.setItemInHand(minionPlot.getHandItem());
    armorStand.setGravity(false);
    armorStand.setBasePlate(false);
    armorStand.setSmall(true);
    armorStand.setCustomName("master-minions");
    armorStand.setCustomNameVisible(false);

    this.armorStand = armorStand;

    return armorStand;
}
coarse linden
#

i literally

#

cannot figure out

#

what's wrong

#

basically

#

this

#

is null

chrome beacon
coarse linden
#

but it shouldn't be

chrome beacon
#

Track the entity uuid

young knoll
#

Can’t say I’ve had issues using find by file before

chrome beacon
#

Not the entity instance directly

coarse linden
#

well

young knoll
#

Can you not just hardcode a format?

coarse linden
#

the schematic

#

yeah i did

#

i tried all the formats

#

and it doesn't work

chrome beacon
#

Are you providing a valid schematic

coarse linden
#

yes

#

world edit itself loads it

#

the file isn't null

#

it passes all of it

#

is there a way

#

to check the type

#

of the schematic

#

without going through hell

quick jay
young knoll
#

Well yeah

#

If the chunk is unloaded the entity is unloaded

#

So you can’t do anything with it

chrome beacon
#

It won't return false since you won't get an entity

#

If it isn't loaded

coarse linden
#

so

#

does anyone

#

have an answer

viscid carbon
#

Hello peoples, is there a way to remove the couldn't remove message from saveResource()?

young knoll
#

No

#

Easiest just to check if it exists first yourself

viscid carbon
#

Figured, thanks

coarse linden
#

can nobody

#

help

#

me

#

i know its very

quick jay
coarse linden
#

confusing

viscid carbon
#

please stop messaging every word, its very annoying

chrome beacon
#

And thus the instance is invalid

coarse linden
#

lil bro

viscid carbon
#

sounds like someone needs a nap.

coarse linden
#

you would be a pain

#

to deal with

#

irl

quick jay
coarse linden
#

i just know it

quick jay
#

do u mind accepting fq

coarse linden
#

everytime you talk

#

people probably sigh

viscid carbon
#

You'd be in a grave, little boy.

chrome beacon
coarse linden
chrome beacon
#

If the chunk is unloaded and loaded again

#

A new instance will represent the entity

#

And thus the old one will have isValid be false

quick jay
#

do you mind accepting fq

chrome beacon
#

Done

quick jay
#

ty

grim ice
coarse linden
#

literally

#

nobdy has helped me

#

nobody

grim ice
#

of course

coarse linden
#

1 bit

grim ice
#

because you're seemingly a pain in the ass to talk with

young knoll
#

I mean, worldedit does have a discord

coarse linden
#

yeah im joining it right now

young knoll
#

Presumably they might know more about their api

coarse linden
#

because some of you guys are fucking jerks

viscid carbon
coarse linden
#

When did i demand respect

#

i just wanted to fix this

#

i dont care about respect in a discord server

#

i treat everyone how they treat me

#

grow up

viscid carbon
#

This isn't your friends discord server, try again.

coarse linden
#

?????

#

holy fucking cringe

young knoll
#

Please take your arguments elsewhere

viscid carbon
#

@young knoll 🫡

subtle folio
#

What’s the best way to change the players overhead name to a hex color?

#

right now I’m limited to chatcolors by the teams api

#

thinking of maybe NMS

viscid carbon
#

teams is the way ive done it

young knoll
#

Pretty much all you can do with the vanilla name tag

#

Your best bet is to hide it and make your own with display entities

subtle folio
#

wait i’m so out of the loop

#

what are display entities

eternal oxide
#

Entities you use to Display things 🙂

young knoll
#

It’s a 1.19.4 feature

#

Specifically text displays are perfect for names

void grove
#

I’m looking to get a sponge plugin ported into a spigot version, is this something that’s terribly difficult to do?

drowsy helm
#

and are you trying to port it to the same version?

delicate gust
#

hey, i have a database with player's stats in it, is it a bad idea to get the stat from the database everytime i wanna use the stat or is there a better way to do it?

young knoll
#

Cache it

young knoll
#

Generally when the player joins

delicate gust
#

how would i do it?

drowsy helm
#

save the data on memory while you are accessing it/when the player is online

#

then when they leave, save it to database

#

also occasionally save it (every minute or so)

delicate gust
#

so like hashmap?

drowsy helm
#

yeah, hashmap works

delicate gust
#

okay thank

eternal oxide
#

What stats are you wanting to store? as Bukkit already has some stats

delicate gust
#

they're custom i dont think bukkit has them

eternal oxide
#

do you need to access them when the player is offline?

delicate gust
#

not really just online so i think the solution above is fine

eternal oxide
#

then I recommend not using a database

#

Store them on the Player Object

drowsy helm
subtle folio
#

Whats the best way to hide the player's nametag?

eternal oxide
#

?pdc

delicate gust
#

wait so persistent dataholder is better than database?

eternal oxide
#

If you store teh stats in PDC you can leave it upto Spigot to save/load them

delicate gust
#

will it be better performance than using a database with hashmap?

eternal oxide
#

If you don;t need them when offline then yes PDC is perfect for storing stats

drowsy helm
#

do you not plan on doing leaderboards etc?

delicate gust
#

like i wanna store player's skills levels in it then get the stat when breaking a block for example

drowsy helm
#

ah yeah pdc is great for that

eternal oxide
#

then PDC is perfect for your use case

delicate gust
#

okay

drowsy helm
#

database is overkill

delicate gust
#

which things would need database for example?

#

just so i know in future

eternal oxide
#

database for if you need access when teh player is not logged in

drowsy helm
#

or across multiple servers

delicate gust
#

so if i wanna transfer the skills to other server would database be a better option?

drowsy helm
#

yes

delicate gust
#

okay

#

got it thanks

young knoll
#

I would still consider caching from pdc if you are going to be accessing it a lot

#

Since it does a bit of work to translate to and from NBT

subtle folio
young knoll
#

Scoreboard teams might work

#

Or stacking an entity on them

viscid carbon
#
            sendChat(player, String.format("&a%s &7Created.", home));
            return;
        }
        sendChat(player, String.format("&a%s &7Updated.", home));```
Would a switch statement be better for this?
eternal oxide
#

just for that? No

viscid carbon
#

didn't think so

#

thanks

cursive kite
#

I’d like my NPCs to look at the closest player and then reset to default when no player is within the specific range, which solution is better…. 1. using player move event - update yaw/pitch and calculate who is closest
2. A loop calculating and updating every second

drowsy helm
#

will be more efficient

cursive kite
#

Interesting how exactly would that work

#

Like loop NPC > Chunk then find the players?

drowsy helm
#

yep

#
public static Entity[] getNearbyEntities(Location l, int radius) {
        int chunkRadius = radius < 16 ? 1 : (radius - (radius % 16)) / 16;
        HashSet<Entity> radiusEntities = new HashSet<>();
        for (int chX = -chunkRadius; chX <= chunkRadius; chX++) {
            for (int chZ = -chunkRadius; chZ <= chunkRadius; chZ++) {
                int x = (int) l.getX(), y = (int) l.getY(), z = (int) l.getZ();
                for (Entity e : new Location(l.getWorld(), x + (chX * 16), y, z
                        + (chZ * 16)).getChunk().getEntities()) {
                    if (e.getLocation().distance(l) <= radius
                            && e.getLocation().getBlock() != l.getBlock()) {
                        radiusEntities.add(e);
                    }
                }
            }
        }
        return radiusEntities.toArray(new Entity[radiusEntities.size()]);
    }```
#

thats what I use

cursive kite
#

Got it imma mess with that and see how it goes 😂

#

When do you hide and show them?

void grove
cursive kite
#

This is my current way of handling this

    public void onPlayerMoveNPCHandler(PlayerMoveEvent event) {
        Player player = event.getPlayer();
        
        if(!event.getFrom().getBlock().equals(event.getTo().getBlock()))
        handleMoveIntoRange(player);

    }

    @EventHandler
    public void onPlayerWorldNPCHandler(PlayerChangedWorldEvent event) {
        Player player = event.getPlayer();
        handleMoveIntoRange(player);
    }

    public void handleMoveIntoRange(Player player) {
        Location loc = player.getLocation();
        User user = Server.getUser(player);
        for(NPC npc : NPCManager.getNPCs()) {
            
            if(loc.getWorld().equals(npc.getLocation().getWorld())) {
                double distance = loc.distance(npc.getLocation());
                if(distance <= DISTANCE) {
                    if(!user.getShownNPCs().contains(npc))
                        npc.spawn(user);
                    
                    if(distance < 10) {
                        npc.lookAtPlayer(user.getPlayer());
                    }
                }else {
                    if(user.getShownNPCs().contains(npc))
                        npc.destroy(user);
                }
            }else {
                if(user.getShownNPCs().contains(npc))
                    npc.destroy(user);
            }
        }
    }```
lilac dagger
#

looks good

dawn flower
#

it keeps yapping about heightmap or whatever (i changed the build limit using a datapack)

#

i did manually change the datapack so i mightve broken somethign

{
  "ultrawarm": false,
  "natural": true,
  "piglin_safe": false,
  "respawn_anchor_works": false,
  "bed_works": true,
  "has_raids": true,
  "has_skylight": true,
  "has_ceiling": false,
  "coordinate_scale": 1,
  "ambient_light": 0,
  "logical_height": 1088,
  "effects": "minecraft:overworld",
  "infiniburn": "#minecraft:infiniburn_overworld",
  "min_y": -512,
  "height": 1088,
  "monster_spawn_light_level": {
    "type": "minecraft:uniform",
    "value": {
      "min_inclusive": 0,
      "max_inclusive": 7
    }
  },
  "monster_spawn_block_light_limit": 0
}```
agile anvil
#

Which datapack did you change?

torn badge
dawn flower
agile anvil
#

What about trying 1024 first?

dawn flower
#

?

agile anvil
#

Max height

dawn flower
#

oh

#

ok

agile anvil
#

I'm not sure but for some time the max height was 1088 blocks

dawn flower
#

i fixed it

#

i jsut had to change the height and logical height to fit the new negative y

agile anvil
#

Oh

#

I'm still not familiar with datapacks but I feel I should learn

#

Especially for the world gen

dawn flower
#

this is my first time even using a datapack

urban crest
#

Can someone tell me if my code would work?

#

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class NoDamagePlugin extends JavaPlugin implements Listener {

@Override
public void onEnable() {
    // Register the event listener
    getServer().getPluginManager().registerEvents(this, this);
}

@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
    // Cancel the event if the entity is a player
    if (event.getEntity() instanceof org.bukkit.entity.Player) {
        event.setCancelled(true);
    }
}

}

dawn flower
#

format plz

#

?tas

undone axleBOT
agile anvil
urban crest
#

oh ok

dawn flower
#

i'd love it if u change org.bukkit.entity.Player to Player and import it

#

cuz that's triggering me rn

mortal vortex
#
public class NoDamagePlugin extends org.bukkit.plugin.java.JavaPlugin implements org.bukkit.event.Listener {

    @Override
    public void onEnable() {
        // Register the event listener
        getServer().getPluginManager().registerEvents(this, this);
    }

    @org.bukkit.event.EventHandler
    public void onEntityDamage(org.bukkit.event.entity.EntityDamageEvent event) {
        // Cancel the event if the entity is a player
        if (event.getEntity() instanceof org.bukkit.entity.Player) {
            event.setCancelled(true);
        }
    }
}

so elegant

blazing ocean
#

PLEASE step on a lego brick

mortal vortex
#

nuhuh

#

this is how I write classes now

dawn flower
#

😭

#

i'm gonna change your discord theme to light mode tonight ⚪

shadow night
dawn flower
#

abbev must be holding u hostage to say that

shadow night
#

But if you decide to update a package and it renames one single package... You are immediately in the coffin

dawn flower
#

no sane person would say that

tough umbra
#

yall dont do that too

shadow night
#

nms before 1.17:

blazing ocean
# shadow night Lmao

always gotta do a ctrl-shift-r when using CB without paper (they removed that version package name thing 🙏)

blazing ocean
#

they use mojmaps at runtime too

shadow night
#

Ik

#

But that's kinda shit because paper is now cvn basically, remapping plugins at runtime

blazing ocean
#

kek

#

they've done that before you started cvn

shadow night
#

ik

#

I've seen it happen

blazing ocean
#

but that also makes it harder to use yarn maps

shadow night
#

nah, we just remap to spigot and paper does its job to remap to mojmaps

#

and then we profit

peak depot
#

Whats the smartest way to make a functional block like to right click and then a gui opens and then to also save it

blazing ocean
peak depot
#

No like I right click a eg sea lantern and then a gui opens

urban crest
#

Can someone help me? my eclipse isnt launching because it says I need JDK 21 but I have JDK 22

blazing ocean
mortal vortex
#

The block doesnt matter either.

peak depot
peak depot
blazing ocean
#

?blockpdc

undone axleBOT
urban crest
blazing ocean
#

if it tells you to use jdk21, use jdk21 lol

#

that's about as much as i can tell you about eclipse

mortal vortex
#

@peak depot anyways this is pretty simple, idk about Blcoks but I did this with Items before.

#

Hang on I can show you what it may look like

blazing ocean
#

with items you can just pdc it

mortal vortex
#

yeah

#

also rad, I feel like I've seen u somewhere before

blazing ocean
#

🤷

mortal vortex
#

ohhh

#

unixporn

blazing ocean
#

o right

urban crest
#

can someone compile a 1.21 plugin for me

#

i have the code

blazing ocean
#

no just compile it yourself

urban crest
#

bro i cant

#

my eclipse is broken

#

i tried it with jdk 21

blazing ocean
#

use IJ lol

urban crest
#

my free trial expired

blazing ocean
#

use community edition

urban crest
#

ok

hollow lily
#

hello, I'm new to plugin creation, and I've developed a The Towers plugin to play with my friends. It's a bit of a lot to ask, I think, but I was wondering if someone with a bit of experience could give me some advice on the architecture of my plugin. I have a basic knowledge of Java, but I think my plugin could be greatly optimized. What's more, as it's a mini-game plugin, I wanted to know if there were some ways of doing things that were more widespread than others. Thanks for your help!

agile anvil
#

Feel free to share your project on a github repo and share the link here. Many will love to leave some critics !

hollow lily
#

thanks !

smoky anchor
#

?codereview time perhaps ?

undone axleBOT
hollow lily
#

sure i'll post it there

hollow lily
#

it's pretty old and i wanted to play with friends so i coded it

tribal sky
#

Tower? Never heard of it

hollow lily
undone axleBOT
quiet ice
alpine urchin
#

anyone have project ideas

smoky anchor
#

Recreate the chisel & bits mod

blazing ocean
#

use block displays for that

alpine urchin
#

look sgoofy

#

give me something interesting

eternal oxide
#

I used chisel mod all the time

blazing ocean
#

you look goofy

eternal oxide
#

back in the day

smoky anchor
#

wdym, it would be interesting to see how you would tackle the performance issue and the UV mapping issue :)

#

The hitboxes would probably be scaled down shulkers with some "culling"
Sounds fun!

slender elbow
#

profile and version management n all

#

ms auth :kappa:

blazing ocean
#

he does c++ a lot so wouldn't surprise me

alpine urchin
#

i dont use c

#

hawk tuh

#

only c++

alpine urchin
#

im the guy who would have a launcher powered by a game engine ahh

slender elbow
alpine urchin
#

why

#

when c++ is better

slender elbow
#

because it's a challenge

alpine urchin
#

making ui is already enough of a challenge

eternal oxide
#

do it all in asm if you want a challenge

alpine urchin
#

dude

#

UI is already the challenge

subtle folio
#

make it portable with WASM 🧌

slender elbow
#

just use js

alpine urchin
#

ew

#

wtf

blazing ocean
#

make it in rust

#

oh wait that's modrinth launcher

alpine urchin
#

thats even worse

#

what

#

NOO

#

😭

#

modrinth

#

why?

drowsy helm
#

this looks a bit.. empty or is it just me?

subtle folio
#

how did you do that

drowsy helm
#

money bar

#

not hunger

subtle folio
#

mb mb

#

monkey bar

drowsy helm
#

just font magic and aligning maths nothing fancy

blazing ocean
#

rust backend, vue frontend

subtle folio
blazing ocean
drowsy helm
blazing ocean
#

i feel like the hearts could be a bar instead

subtle folio
blazing ocean
#

no

alpine urchin
#

anyone use modrinth executable?

drowsy helm
blazing ocean
#

oh

drowsy helm
#

and i feel 10 hearts won't be able to accurately display it

subtle folio
#

just add more!!

#

pull a skyblock

blazing ocean
#

you could make it an actual bar

#

like percentages

subtle folio
#

wif some math

drowsy helm
#

yeah i tried that aswell, looked eh

blazing ocean
#

i would slap the text onto some background tho

#

it's what i always do

#

and make it a bit more inwards

#

not at the edged there

drowsy helm
#

#general message

#

2 years ago lel

#

and had a darker background before but idk looks funky with it on both sides

blazing ocean
#

should be more towards the center

drowsy helm
#

like this?

blazing ocean
#

make the background shorter too

#

only a bit of padding

#

das too much

#

and remove that xp level

drowsy helm
#

yeah xp removed

#

old pic

torn shuttle
#

make it display your social security number

drowsy helm
#

I dont have an SSN 😦

torn shuttle
#

no problem, ssn doesn't exist here

drowsy helm
#

neither lol

torn shuttle
#

change the heart font to a 0 width space

#

?

drowsy helm
torn shuttle
#

by replacing their unicode to a 0 width space?

drowsy helm
#

Nah hearts are just a texture

#

Made them invis

languid briar
#

Did u use nms or something? @drowsy helm

drowsy helm
#

Nah just resource pack

torn shuttle
#

oh really now

#

I thought they were unicode for some reason

#

yeah I guess that tracks

languid briar
#

Can u guys give me a idea for plugin. Im stuck

torn shuttle
#

just too used to working with fonts at this point

#

if you don't have a good idea for a plugin don't make a plugin

languid briar
#

But i want to 😭

drowsy helm
#

Ask chat gpt

torn shuttle
#

then spend a longer amount of time thinking what would be a good plugin

languid briar
#

Feed plugin

#

I alr make these 5 yr ago

#

Lmao

torn shuttle
#

I don't understand people who can't come up with projects

drowsy helm
#

I can only focus if it’s a really large projecty

languid briar
#

True

#

Same

torn shuttle
#

I literally do this more than full time and have done so for years and the amount of projects I want to do has only ever gone up

humble lynx
#

There's so many ideas that haven't been explored

torn shuttle
#

they pop up so much faster than I can work on anything

humble lynx
#

Make a harry potter plugin

languid briar
#

Lmaooo

humble lynx
#

Or lord of the rings

languid briar
#

🤣

#

Good idea

humble lynx
#

I thought devs were creative 😵‍💫

drowsy helm
#

Make a herobrine plugin

torn shuttle
humble lynx
#

Well I'm halfway with making a spell plugin lol

torn shuttle
#

you need to pay more attention

drowsy helm
#

Like he pops up when you arent expecting

#

Then poof

torn shuttle
#

I could probably spend the next 20 years working just off the backlog of ideas I've already had and not even be halfway through executing them

humble lynx
#

True

torn shuttle
#

fun ones too

humble lynx
#

I've got so many half finished plugins

torn shuttle
#

I'm still planning to make an infinite city plugin

#

I don't have half finished plugins

humble lynx
#

Some of which actually had a decent amount of code

#

I stopped because the scope was getting too big

torn shuttle
#

I do them in full almost every single time

eternal oxide
#

I have MANY ideas but I'm better at procrastinating

languid briar
#

I have more than 100 projects and half of them are not finished frfr

humble lynx
#

I started a nation plugin, got the claim land sorted, started adding upgrades to my nations, then added achievements, and it just kept growing

torn shuttle
#

you people need to learn some focus and self-control

drowsy helm
#

Man im loving gradle

#

Feels so much more flexible than maven

languid briar
#

I love maven more

humble lynx
#

Very true, my current plugin is a spell plugin, quite a lot of the core is done, but I want all the spells editable by admins in game

drowsy helm
#

This is my first project with gradle and it’s a lot better for multi module

torn shuttle
#

that reminds me of why I even opened this chat

drowsy helm
#

And you dont need to mvn install for internal modules

torn shuttle
#

what is the more convenient way of doing a shared internal library for something like a shared utils bunch of classes

#

the thing that comes to mind is shading such a project in but that's a little bit of a hassle

#

is there a more convenient solution

drowsy helm
#

I mean if it’s utils shading isnt that bignof a deal

#

Unless you want to host the module on a repo then dl it with lib loader

torn shuttle
#

I would have to

#

since these are open source

#

hence the hassle

#

are there any other potential solutions

drowsy helm
#

Only problem with shading is differing class parhs

#

If you plan on having classes being shared between plugins using the utils

#

If that makes sense

torn shuttle
#

hm that shouldn't be an issue

#

I think

#

I'm pretty sure

keen charm
#

Hey

#

How do we send UPDATE_LISTED in 1.18.2?

#

I couldn't find it

torn shuttle
#

chatgpt is saying something about git submodule, what's that

#

that sounds interesting

drowsy helm
#

I ran into an issue today where I have. PlayerData class in my commons module and since both my plugins were shading it, it was a different PlayerData and couldnt be interchanged

dawn flower
#

how do i make elytra boosting faster

torn shuttle
#

shouldn't really be a problem for my use case because I was only planning to do self-contained utilities with no cross-communication but I can see how that's something you can accidentally write yourself into

#

as an example one thing I would really like to dissociate is the logic for handling commands and handling config files

#

I have a whole infrastructure for both and I just kinda keep copying some core classes around

#

which ain't great

drowsy helm
#

I think that would be fine to shade

subtle folio
#

why does teleportation break with I add a passenger to a player?

eternal oxide
#

break?

subtle folio
#

Like it no longer works? When I comment out the code of adding a text entity as a passenger to the player, i get no issue teleporting the player, but uncommenting out the code of spawning the text display entity and adding it as a passenger, teleportation ceases to work

eternal oxide
#

You have to dismount before tleport. I thought it did it automatically

subtle folio
#

The passangers?

eternal oxide
#

yes

subtle folio
#

alr thx

eternal oxide
#

mount again after

subtle folio
#

mhm

subtle folio
#

is it possible to hide a text display from only one player?

subtle folio
#

OMG! how did I not see this earlier

#

ElgarL you a real one

#

is there an event for when the player changes their perspective?

#

like F5?

eternal oxide
#

not that I know of. There may be a packet though

subtle folio
#

Will look into nms then, thanks!

dawn flower
torn shuttle
#

remind me real quick, if I'm just making a lib there's no reason why I should have that in a plugin format right

#

there's no reason to have a plugin.yml

#

or even a resources folder

eternal oxide
#

nope

subtle folio
#

just shade it ™️

torn shuttle
#

that is the plan

#

the other options do not spark joy

#

none of these options spark joy

#

if I were a crazier person I might be tempted to literally just symlink the files in

delicate gust
#

hey, i have a playerdata class that i store memory in it, is there a way that i can access it from a different plugin or how else would i do that

eternal oxide
#

create an API for access

fiery cedar
#

i need good combat log for my smp

cold pawn
#

Does anyone understand why I'm receiving this error? For context, I recently switched from 1.20.2 to 1.20.6, I didn't believe there were any code-breaking changes and everything seems to be fine except this. Any explanation? https://pastebin.com/GQBhhHeX

torn shuttle
#

is there some api thing that tells me when a mob starts charging an attack like a bow shot or trident pull

keen charm
#

Hey guys, what would happen for me to get this error?