#help-development

1 messages · Page 1127 of 1

azure zealot
#

yes!

#

thats what its meant to be!!!

#

About
Connects multiple minecraft servers via master server, cookie packets and transfers

young knoll
#

Except yknow, proxies don’t send data between backend servers through the client

remote swallow
#

plugin messaging does, most people are smart and redis it tho

azure zealot
#

yeah its not a proxy

raven pulsar
#

it's called a feature

remote swallow
#

plugin messaging uses the players connection

azure zealot
#

you have no clue how plugin messaging on bungee works

remote swallow
#

it uses the players connection

polar topaz
#

well, I thought of one thing. A server that uses coordinate obfuscation by randomly offsetting the client's coordinates -- in this scenario, transfer destination coordinates being in plaintext in the cookie would be sensitive info

azure zealot
young knoll
#

The proxy intercepts it

#

And stops it from actually going to the client

#

Afaik anyway

remote swallow
#

it borrows the players connection to send it

azure zealot
#

no

wet breach
#

plugin messaging does use the players connection, but only on the server side hence why it requires a player on a server to even use

azure zealot
#

it does not

#

it uses the backend -> bungee connection

raven pulsar
wet breach
#

if there is no players on the server plugin messaging fails

azure zealot
#

not bungee to client

raven pulsar
#

and that's nothing you would ever want to reveal

remote swallow
#

im not saying bungee to client

#

im saying it uses the connection of a player to go bungee -> server

young knoll
#

Yes

raven pulsar
#

ok

#

cool

young knoll
#

And server to bungee

raven pulsar
#

now

#

what

young knoll
#

But that data never actually makes it to the client so it’s fine

azure zealot
#

player connection indicates that its the connection of the player

#

but its not

wet breach
eternal oxide
#

I thought (pretty sure) PMC goes through a proxy, as Forge/client mods use PMC

young knoll
#

Anything can use PMC

raven pulsar
azure zealot
young knoll
#

It’s just a special packet Mojang made for custom data

wet breach
#

and that isn't useful unless you had access to the system

raven pulsar
young knoll
#

You also gotta mind the cookie size limit

raven pulsar
#

splitting

young knoll
#

5kiB isn’t a ton

polar topaz
wet breach
azure zealot
raven pulsar
wet breach
#

you asked

raven pulsar
#

you'd just leak class structures as mentioned

wet breach
#

all I am saying is what you are claiming is not secure in the least

raven pulsar
#

bro wtf u talking about

young knoll
#

5120 bytes

wet breach
#

if you want to use cookies for session verification and nothing more sure go for it, but you don't need a whole lib for it

wet breach
#

if you want to claim that storing sensitive information on a client is secure or the best idea it is not

raven pulsar
#

bro

#

i am not claiming that

#

i just want people writing plugins

#

have the possibility

#

to store data on the client

#

which is discared after a session quit

young knoll
#

Why not have a system that sends data directly from server to server

#

Via sockets or whatever

raven pulsar
#

without the client knowing whats inside and him being able to alter the data

raven pulsar
wet breach
#

that isn't secure and never will be

raven pulsar
#

a player could also just quit and join on another server via transfer handshake, you'd need to verify all of this

polar topaz
#

when doing hobbyist projects I'd rather adhere to the cipherpunk's definition of secure, which is that implementation details can be revealed to all the bug-hunters but anything that is truly sensitive must be ridiculously encrypted

raven pulsar
#

which is way more resource exhausting

#

imo

wet breach
#

however do note, the more secure you make something the slower it becomes

slender elbow
#

I prefer not encrypting anything, too much of a hassle

wet breach
#

and the more resources it takes

raven pulsar
#

you know why there's protobuf

azure zealot
#

i got you

raven pulsar
#

bc it's fast, small and??

#

doesn't leak the structure just by existing

#

or would you want the server owners themself to impl smth like protobuf

polar topaz
raven pulsar
#

like putting raw data into it and then writing "yeah ur data, it can be seen by clients? why not???"

polar topaz
#

(well... boring but necessary)

raven pulsar
#

i dont see any point in not making something as bulletproof as possible if it doesn't make any circumstances for anyone

polar topaz
#

and this attitude is shifting anyways, some companies have started intentionally exposing their API docs (for APIs only used internally or by a frontend) as a way to attract bug hunters

wet breach
#

they pay people to break stuff if you are talking about the big corps

#

microsoft is one of the firsts to do this in terms of history. But its actually quite common they have their own teams of hackers and their sole purpose is to break stuff. Then you have the so called bounty program, this enlists the help of the general public without having to pay them standard wages and instead pay if they found a valid bug or exploit.

astral scroll
#

is the commented line necesary?

#

i've always done it

#

but i never really knew if its 100% necesary to get the profile info updated

raven pulsar
#

or is it still insecure after all!

wet breach
#

you don't store sensitive information that is detrimental if its known on the client

#

that is the opposite of security

raven pulsar
#

bro

#

so

#

you are saying:

#

dont implement encryption because people should not store sensitive information in it?

#

or am i misunderstanding u?

azure zealot
#

if they store sensetive data in the cookie anyways its better encrypted lmao

wet breach
#

the connection from client to server is already secure. Its not like someone can hijack the connection. Therefore, any data you store in the cookie should be what the client already knows and is just a convenience for the client.

polar topaz
#

it's never gonna be a convenience for the client... since the claim is intended for the server!

wet breach
#

encrypted cookies exist for the web not because you don't want the client to know anything but because you don't want something else reading the cookie

drowsy helm
#

the cookie packet can and will be spoofed easily, no point relying on any sensitive data even if ecrypted in it

raven pulsar
polar topaz
#

I've seen a few plugins get released that are using unsigned cookies ._.

#

so it was a bit refreshing to see this AES implementation even if it has a small weakness

raven pulsar
wet breach
drowsy helm
#

plaintext is wild though

polar topaz
#

oh yes, @azure zealot make sure you have like a 2 minute expiration on every cookie

#

to prevent replay attacks

#

almost forgot to mention that

raven pulsar
raven pulsar
#

already impld

#

ye

wet breach
raven pulsar
#

ok ur flaws

#

list them now

#

without ur broad sense

#

and ur bread sense

wet breach
#

already did, proper security standard is to not store anything outside of your control that is detrimental if its known

polar topaz
#

part of why I'm using JWT/JWE is that it just... has everything. Expiration checking, revocation lists, public key crypto, standardized json payload, etc.

azure zealot
#

okay so you say just the concept is invalid from security standpoint

raven pulsar
young knoll
#

Yeah that’s generally how it’s done

raven pulsar
#

and then the master server should handle expiration etc.

#

and you'd have to check if the player was transfered

#

and the target server

#

that's just trash

azure zealot
raven pulsar
#

ye

#

its completely boring

#

and mc impld such a funny thing

#

why

#

would u not use it

#

and alf

#

u can alf

wet breach
#

I would use it, but not for data that is important

raven pulsar
#

as much as u want

#

i dont give a frost about it

azure zealot
#

But thank you for your personal thoughts

#

i will add aes gcm

raven pulsar
#

if i'd transfer someone from a bw server to an endgame server i'd want to store received coins, minigame name etc. for the chat msg and title (just an example) and i dont want the client to access it

#

because i dont want to allow random clients to access more data than they are normally allowed to only because u are using that feature

polar topaz
#

one alternative to JWE that should be mentioned is PASETO

#

basically the JW standard but without all the footguns

#

but not as many languages have an implementation of it, so I'm hesitant to use it

polar topaz
# raven pulsar if i'd transfer someone from a bw server to an endgame server i'd want to store ...

yea... for stuff like inventory contents or ingame currency, I'm not sure it should even be stateless -- could be prone to dupe glitches if it isn't managed centrally via a database, and if it's centrally managed all your cookies have to do is verify that it came from a real server (which could be as simple as 256 bits of entropy stored in database or valkey pub/sub to facilitate each transfer)

wet breach
# raven pulsar if i'd transfer someone from a bw server to an endgame server i'd want to store ...

the received coins part should always be verified and is the exact thing I was talking about. Instead I would probably put in there that you earned coins so the server knows to check that otherwise if it instead said you didn't earn coins then it would just save the server from doing a check that isn't necessary. This is the convenience I was talking about. However that little bit there is not detrimental if anyone knew about it or discovered that is in the cookie

young knoll
#

Either that or you just really really hope everything is secure and people don’t start earning 99999999 coins

wet breach
#

lol

wet breach
#

keyword should

#

but you will find out its not though the hard way 😉

#

since that is really the only way you will know its not

azure zealot
#

cap

#

if its exploitable i will fix it

wet breach
#

hopefully if someone does exploit it, it doesn't cause a widespread economy problem

#

since one of the issues of economy is saturation

azure zealot
wet breach
#

ideally no because its best to not allow someone the ability to alter their coins at all

#

even if it is encrypted it only takes a single success

polar topaz
#

no one's gonna break a proper signing algorithm

wet breach
azure zealot
raven pulsar
#

we all know that it's not 100% reliable data but 99.99%

polar topaz
raven pulsar
#

but you can say this for everything

polar topaz
#

soo much stuff would be broken if you could just fake a JWT claim

#

it would be a worldwide disaster, not a minecraft server disaster

wet breach
azure zealot
#

everything can be cracked

raven pulsar
#

oops i just did one hit with my discord JWT

#

now im in ur account

#

how disasterious!

azure zealot
#

just need to be very lucky

raven pulsar
#

ffs i guess we need military grade security!

azure zealot
#

chances are 1 against 1000000000000000000

BUT ITS INSECURE

wet breach
#

according to standards it is

#

standards exist for a reason

polar topaz
#

(fedora)

azure zealot
#

oh i tried 2^255 combinations and i got the secret key now! THATS SO INSECURE

wet breach
#

recommend not letting your server use them, its actually a tactic to make a server use a less secure algo by doing an algo swap

polar topaz
#

yea, fedora has had a command for a while to banish all bad cryptography in one swoop, I have it set on my almalinux box

raven pulsar
#

i am going to checksum the data with MD5

polar topaz
#

it affects what algorithms stuff like nginx or the package manager can use

wet breach
polar topaz
#

though obviously you could still accidentally introduce bad crypto

raven pulsar
#

spoof it!

wet breach
#

its already been done over a few decades ago

#

you are free to research it

raven pulsar
#

it has collision vulns

polar topaz
wet breach
#

there is a reason why security and encryption are their own fields of study just fyi and actually fields you can go to school for specifically. There is a lot to them.

wet breach
#

because quantum computers can break any encryption standard for any standard cpu

raven pulsar
#

then go get your quantum computer

wet breach
#

and the only way to protect these systems is to utilize a third party quantum computer to implement quantum encryption

raven pulsar
#

and bruteforce the private key of some CAs

#

!!

polar topaz
#

oh I see, it doesn't disable old stuff yet, it just enables new post-quantum stuff for now ```

An experimental subpolicy enabling all the currently available

post-quantum and hybrid algorithms.

Not for production use.

May disappear with the next update.

group = +P384-KYBER768 +X25519-KYBER768

wet breach
polar topaz
slender elbow
#

thankfully I can just hack into them

raven pulsar
#

okay emily!

azure zealot
raven pulsar
#

go for it!

wet breach
raven pulsar
#

hack into the CAs buildings

azure zealot
#

so wie can stop the discussion now

polar topaz
raven pulsar
#

@wet breach if you have any security concerns at the final version please contact us oki? :)

wet breach
# polar topaz it's not like quantum mechanics is a total mystery, I'm sure the devs of kyber (...

well no that isn't what I am saying. Most encryption standards are built on top of the principal in the time length it will take due to the fact most people don't possess the processing power required to lower that time length. Quantum computers have this processing power therefore instead of billion of years we are looking at a few years or maybe even shorter. We have yet to know since no one has released any findings so far which makes sense as one entity being the NSA isn't going to do so, and the 4 others being businesses are probably not spending their time testing these things lol

polar topaz
#

quantum computers don't have extra processing power per-se, they have quantum algorithms and different time complexities for different things

wet breach
#

however what is known is that any encryption that works on x86 or related cpu's will be at risk and there isn't anything that can be done to mitigate this except to start utilizing third party quantum computers since quantum encryption would be ideal and quantum encryption can't be understood by tranditional computers.

polar topaz
#

the concern is that you can, right now, design a quantum algorithm (on paper) to half the strength of AES

#

if you have a source that says that, I'm curious

#

it's not really what the experts are saying, which is that:

  1. novel classical algorithms can be hardened to avoid quantum computers breaking them
  2. a quantum internet is really really difficult to design, so we might never have true quantum cryptography used for anything important
slender elbow
#

laughs in quantum phone

azure zealot
#

monday iphone 16 release

polar topaz
azure zealot
#

i wanna pre order

wet breach
polar topaz
#

yea, it's not just AES but also RSA and elliptic curve weakening

#

but work is being put in to harden everything, not just the cipher

wet breach
#

it will be interesting that is for sure

#

but as I said, good news we don't need to worry about this for at least maybe a couple more decades lmao

#

unless a magical progress happens with quantum computers that allows them to be smaller and easier to build then maybe we should be concerned XD

polar topaz
#

one interesting aspect is that hybrid encryption -- wrapping the old algorithms in the new -- is considered desirable, in case we screw up majorly and one of these lattice algorithms is defeated classically. I think that fedora setting I found enables one of these hybrid algorithms

wet breach
#

yeah that was one of the things that was proposed last time I took a read in the security stuff regarding quantum

wet breach
#

but I would be weary in using them though

#

mainly in regards to breaking stuff

polar topaz
#

yea

#

it might start being possible soon though, I think there is a proposal for post-quantum/hybrid in TLS

#

if you want to force your users to use the newest possible web browsers, that is

wet breach
#

I would recommend it

polar topaz
#

but the dnf package manager would stop working if you disabled pre-quantum crypto

polar topaz
halcyon hemlock
#

this is so good

agile anvil
halcyon hemlock
#

by windows

halcyon hemlock
#

what the fuck

blazing ocean
#

whatd you do

halcyon hemlock
#

tcp is that slow

#

?

blazing ocean
#

nah

halcyon hemlock
#

i mean im sending like half a gig of chunk data but that's besides the point

blazing ocean
#

kek

#

depends on your connection ig

#

but if its just localhost thats not fine

quiet ice
#

500 megs is quite a lot of data

#

that would take 80 seconds to download over my broadband connection.

blazing ocean
quiet ice
#

Well, possibly a bit less since the speed often tends to be more than advertised

quiet ice
#

Just some random german ISP

blazing ocean
#

which one

quiet ice
#

Actually, lemme quickly make sure I indeed have a bandwidth of 50 MBit/s and not 50 MByte/s

blazing ocean
quiet ice
blazing ocean
#

wtf is that

blazing ocean
#

less rent as well

halcyon hemlock
#

😂

#

free heating in winter too

quiet ice
#

Yep, it's 50 MBit/s

blazing ocean
#

yeah and free ac

#

but might be a bit loud

quiet ice
#

Now funnily enough my mother calls the 50 MBit/s "high speed", yeah - I'm not sure what she is dreaming about.
On the other hand, I did (albeit) briefly experience the days where the connection was so garbage that waiting for a video to buffer was the norm.

blazing ocean
glossy laurel
#

how do I get an instance of a plugin without making a static variable

sweet pike
agile anvil
#

If you talk about your own plugin instance:

#

?di

undone axleBOT
glossy laurel
quiet ice
#

Just not call that method too often

glossy laurel
#

why

quiet ice
#

It's plainly not be designed to be used without caching. It won't have terrible performance, but won't also be lightning quick (which the manual DI approach would be)

halcyon hemlock
#

am I cooked?

#

is "32 render distance" -16~16 or -32~32?

glossy laurel
halcyon hemlock
#

-32 to +32?

glossy laurel
#

I think so

halcyon hemlock
#

that's 4200 chunks

blazing ocean
#

that also has that loading effect on the player

#

so the chunks look like they're actually generating

sage drum
#

Nobody knows ?

halcyon hemlock
#

also

#

the bottleneck is the fucking tcp stream

#

it cant take too many chunks

#

maybe i should implement compression

#

💀

blazing ocean
#

yeah you should

#

xz 🧌

#

make sure to use the backdoored version

blazing ocean
#

does bro not know about the xz backdoor

glossy laurel
#

the what

halcyon hemlock
#

lmao

#

💀

#

im sending 64x64 chunks

#

but

#

the client doesnt load them

#

tf

glossy laurel
#

L client

halcyon hemlock
#

fr

#

also fuck tcp

blazing ocean
#

fuck the notchian client fr

halcyon hemlock
#

i wanna make a yt video showcasing how fast the server can send chunks

#

but the client starts lagging and doesnt load them

blazing ocean
#

lmfao

glossy laurel
#

XD

#

epic video fail

halcyon hemlock
#

imma lower the chunk radius to 16

#

wouldnt technically speaking 32 render distance be like

#

32x32?

#

instead of 64x64

blazing ocean
#

yes

#

i think

halcyon hemlock
#

so -16 ~ 16

#

ok then wait

#

250ms for 16 radius

#

let me try that

#

client is actually fucking 2fpsing

glossy laurel
#

What's the universally accepted way to do clickable text and tooltips?

#

Chat component api?

slate siren
#
                TextComponent nextPage = new TextComponent(ChatColor.translateAlternateColorCodes('&', "                                                                    &8[&d&m─>&8]"));
                nextPage.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/friend list " + (page + 1)));
                nextPage.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent[]{new TextComponent(ChatColor.YELLOW + "Go to next page")}));
                navigation.addExtra(nextPage);```

Here is a code and a new page appears on each click on the friends list.
Is it possible to disable the clicking action on the previous page when a new page appears?
There was a method but I forgot it
halcyon hemlock
glossy laurel
shadow night
blazing ocean
blazing ocean
halcyon hemlock
shadow night
halcyon hemlock
#

im not implementing that shit

#

maybe when im in uni

halcyon hemlock
#

the client just starts bugging

#

but im sending chunks relative -16~16 on both x and z axis

#

vanilla client just dies

wet breach
#

because there is indeed a queue, also due to how tcp works a packet must come back for a true completion

halcyon hemlock
#

i mean its to be expected

#

im sending almost half a gig of packets every 200ms

#

the client just lags

wet breach
#

well, a packet can't be half a gig, at most the largest a packet can be is 65535 bytes

halcyon hemlock
#

packet s

blazing ocean
#

of packets

halcyon hemlock
#

its chunks, and im sending 4200 chunks every 200ms

wet breach
#

but 500mb/s is still pretty good though

halcyon hemlock
#

its localhost

#

there should be no network delay technically speaking

#

i guess the fact that the server can even send that much is fine lmao

wet breach
#

there is still overhead from the tcp stack

#

and are you using 127.0.0.1 ?

halcyon hemlock
#

i suppose yes

wet breach
#

or the ip assigned from the router

halcyon hemlock
#

0.0.0.0

wet breach
#

then you are not using the 127.0.0.1

halcyon hemlock
#

aint it the same thing

wet breach
#

no

halcyon hemlock
#

0.0.0.0 is public and 127.0.0.1 is private

wet breach
#

0.0.0.0 says to bind to all available addresses

#

however, if the client is not connected on 127.0.0.1 its going through the router assigned ip

wet breach
#

the reason this makes a difference is because 127.0.0.1 bypasses the stack

#

since its purely local and not bound to a hardware

#

where as your router assigned ip is bound to the hardware and its going through the hardware and coming back

halcyon hemlock
#

so you're saying 127.0.0.1 should be faster?

wet breach
#

it will always be faster since its not going to be passed to the NIC

wet breach
#

there is a downside of using 127.0.0.1 as well, such as if I recall a reply packet isn't sent

#

so if you have something that relies on such things, using the loopback may not be ideal lol

halcyon hemlock
#

reply packet?

#

on the tcp thing?

wet breach
#

every tcp packet has a reply to it

halcyon hemlock
#

im not writing my own tcp protocol

wet breach
#

but on the loopback this isn't implemented if I recall. I could be wrong

halcyon hemlock
#

im using tcp provided by the tokio library

wet breach
#

thats fine, but its good to know how tcp works because its part of why something goes slow

#

however sometimes you might rely on waiting for such things in terms of your queue

#

also, ping packets don't work on loopback as well, hence if you list your server using loopback address it will show as offline

halcyon hemlock
#

huh

wet breach
#

but yeah you should see an extreme speed improvement if you forced the server to specifically listen on 127.0.0.1

blazing ocean
wet breach
#

and if you connect the client to the loopback

blazing ocean
halcyon hemlock
#

spans are my beloved

blazing ocean
#

its beautiful

halcyon hemlock
#

perfection

halcyon hemlock
#

i mean its almost similar to before

wet breach
#

loopback is 127.0.0.1

#

also, if your nic is only capable of gigabit connection

#

then 500mb/s is all you are going to be capable of for your testing

#

this is because upload will consume 500mb/s and your client download is going to take 500mb/s

#

which equals a gigabit

#

if you test using router assigned ip that is

halcyon hemlock
#

ic

#

i have a gig ethernet

halcyon hemlock
#

for release builds etc

wet breach
#

seems the lib can't handle loopback

#

probably because of what I said earlier

halcyon hemlock
#

wdym

#

i got it on 127.0.0.1

wet breach
#

I see errors

halcyon hemlock
#

what errors

#

oh the dropping connection?

#

thats just minecraft

wet breach
#

interesting

carmine oracle
#

what's the equivalent to 1.15's TextComponent for 1.21?

#

or should I use bungee's TextComponent?

tardy delta
#

isnt md5.TextComponent still applicable?

glossy laurel
#

Guys, is YamlConfiguration stupid?

#

first it errored while trying to convert it's own saved list into an itemstack array

#

now its giving me errors while trying to parse a field as a float because it decided that it should be a double

#

am I doing something wrong?

tardy delta
#

show code

slate siren
#

When i removed a offline player in friend list;
The player _SinHa_a does not exit or is invalid

tardy delta
slate siren
#

wha

glossy laurel
#

kit.setItems(Methods.getDefault((ItemStack[]) conf.get("items"), new ItemStack[41]));

tardy delta
#

getFloat

glossy laurel
tardy delta
#

and a get() will never return an array when theres a list stored there, it will return a List, and btw there a ::getItemStackList

#

getDouble then

glossy laurel
#

theres only get()

tardy delta
#

what type is conf

glossy laurel
#

YamlConfiguration

tardy delta
#

what version ur on

glossy laurel
#

im on 1.20.6

tardy delta
#

you sure conf isnt a map or smth?

glossy laurel
#

so it isnt ig

tardy delta
#

what does it say when you do getDouble

glossy laurel
glad prawn
#

getDouble?

glossy laurel
#

oh

#

💀

#

well, get double works

#

What happens when you getDouble on null?

rotund ravine
#

What does the javadocs say

#

?jd-s

undone axleBOT
rotund ravine
glossy laurel
#

found it

tardy delta
#

just getList and cast it

glossy laurel
glad prawn
glad prawn
#

uh

tardy delta
#

cast a list to a list bruh

glad prawn
#

List<?> to List<ItemStack>

#

whats wrong

glossy laurel
#
                ItemStack[] items = new ItemStack[41];
                if(objects != null){
                    for(int i=0; i<objects.size(); i++){
                        items[i] = (ItemStack) objects.get(i);
                    }
                }
                kit.setItems(items);```
#

this is better

#

trust

glad prawn
#

If you need performance over readability

glossy laurel
glossy laurel
tardy delta
#

why work with arrays in thhe first place

halcyon hemlock
#

fr

#

just use Vec

tardy delta
#

🤔

halcyon hemlock
#

use a heap array

#

fr

#

List

glossy laurel
halcyon hemlock
#

use List maybe

glossy laurel
#

does list have mutable size

halcyon hemlock
#

does it not?

#

its stored on the heap, so pretty sure it does

#

it can grow

glossy laurel
#

yeah well I dont want that

halcyon hemlock
#

why not?

glossy laurel
#

I need 41 size arrays

halcyon hemlock
#

why specifically 41?

glossy laurel
#

inventory size

halcyon hemlock
#

idk bro gl

glossy laurel
#

lmao thx

smoky oak
#

if i cancel an item despawning, does it try to despawm immediately again, or does it reset the five minute timer?

shadow night
#

?tas

undone axleBOT
halcyon hemlock
#

stealing frfr

smoky oak
#

sooo i just should sit there ten minutes and stare at an item stack

#

got it

halcyon hemlock
#

yes

#

stare at it good

hazy parrot
halcyon hemlock
#

so im not wrong then

hazy parrot
#

yeah but statement makes no sense

halcyon hemlock
#

so i shouldnt be here

#

i just like chatting with all the cool people here

pseudo hazel
#

then go to #general xD

onyx fjord
#

would using an item in cache be reliable?

#

ItemStack -> something

#

i wanna avoid frequent meta copies

chrome beacon
#

You can always just cache the meta

chrome beacon
#

caching an itemstack might also work

#

but do clone it if you do

onyx fjord
#

its like 2x more on the internet normally

wet breach
smoky oak
#

oh thats interesting
-inf or some nonsense like that?

onyx fjord
#

how much is that in usd

wet breach
#

no the number I inputed is the max negative

tardy delta
#

its hardcoded in the ss i sent

onyx fjord
#

oh shit sorry wrong chat

halcyon hemlock
#

by that i mean on some good stuff

halcyon hemlock
#

28?

onyx fjord
#

lets move to #general my bad

icy monolith
#

Should i use json or a db for my miencraft plugin. if db then which one.

halcyon hemlock
#

a json or a db?

chrome beacon
#

depends on what you want to store and how much

halcyon hemlock
#

huh

#

oh

amber stump
#

Whats the issue here?
Its only getting executed once.

    private void startParticleSpawner() {
        Random random = new Random();
        Bukkit.getScheduler().runTaskTimerAsynchronously(UserTeleportPortals.getInstance(), scheduledTask -> {
            for (Portal portal : createdPortals) {
                double randomHeight = random.nextDouble(0, 1.5);
                Bukkit.getScheduler().runTask(UserTeleportPortals.getInstance(), () ->
                        portal.getSource().getWorld().spawnParticle(configDataProvider.getPortalParticle(), LocationUtils.toCenterLocation(portal.getSource()).add(0, randomHeight, 0), 1)
                );
            }
            System.out.println("Particle Timer executed");
        }, 20, 4);
    }
halcyon hemlock
#

use an embedded key-value database

#

use mongodb

#

idk

chrome beacon
#

as for which db supporting multiple options is a good idea

wet breach
#

the age of the item will not increase if its set to that negative number. At 6000 for age which correlates to the ticks AKA 5 minutes the server will attempt to remove the item. If it gets canceled it ends up being random in when the server will attempt again to remove it.

chrome beacon
wet breach
#

so in theory you could also just keep resetting the age too if you want to have a task that eventually lets it despawn

#

IE, if you wanted to let it last for 10 minutes you would just reset its age at least 1 time and then not reset it again

#

also to note, simulation distance of the player plays a role as well. If the item is outside of a players simulation distance it doesn't get ticked and render distance as well. If an item is in an unloaded chunk it also doesn't increase in age.

worthy yarrow
#

Hey frost

#

How are you doing?

young knoll
#

Pretty sure items also straight up have a no despawn tag now

wet breach
#

oh do they?

#

didn't think about tags

young knoll
#

Yeah it’s setUnlimitedLifetime in the api

wet breach
#

interesting, I don't see that tag for vanilla so is that a spigot feature then?

#

considering you can have custom tags

young knoll
#

Shouldn’t be

wet breach
#

@smoky oak well there you go, other then age you can use the api for setting it to not despawn

#

thus, no need to rely on the event

smoky oak
#

well i was planning on using the event that spawns the item to set the time to -max

#

but the dont despawn tag works too

young knoll
#

Unless it’s just a nice wrapper for setting the age to -32k

#

But I swear I remember seeing a snapshot add that tag

wet breach
#

wonder if that is it, since I can't find the tag for it =/

young knoll
#

Nope checked the source

#

It is just a nice wrapper

wet breach
#

ah well still convenient

quaint mantle
#

a?paste

wet breach
#

?paste

undone axleBOT
quaint mantle
#

for pic

eternal oxide
#

?img

undone axleBOT
#

Can't send images? That's because you're not verified! Use !verify to complete verification.
Alternatively, you can upload screenshots to any image hosting site and share the link.

Here's some screenshot utilities that you can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org

quaint mantle
#

this is the problem

#

it

#

stuck there

wet breach
#

going to assume you have some plugin that does stuff with packets

quaint mantle
#

no

#

0 plugin

wet breach
#

using a proxy?

quaint mantle
#

yes bungecord

chrome beacon
brazen badge
#

best gui api?

tardy delta
#

"best"?

pseudo hazel
#

mine

#

may be biased

halcyon hemlock
brazen badge
quaint mantle
#

There are no best gui libraries

eternal oxide
#

?gui

tardy delta
#

just make it yourself if youre biased enough to think its the best

upper hazel
#

I just found out that it is not necessary to have the plugin in the plugins folder as a Jar in order to use the plugin api. I've been told that this is not possible, but if it is, it begs the question why it is necessary to specify the required dependencies in the plugin.yml file why not just use the compile scope

young knoll
#

What

upper hazel
#

Why do you need to add dependency settings to plugin.yml and download these jar files in general if you can load a jar file via compile scope?

young knoll
#

The compile scope does not load the jar file on the server

#

Only for your IDE

upper hazel
#

jar inside plugin

young knoll
#

Dependency settings ensure your plugins loads after the dependency so the dependency is loaded first

#

That would be implementation

#

Some dependencies are designed to be shaded, others are not

#

For example you can't just shade the worldedit api

upper hazel
#

What if there are no other plugins except api and api user?

#

compile will work?

eternal oxide
#

compile does not package the lib. shade does

#

teh point of libraries in plugin.yml is to keep teh distribution size of your jar down

tardy delta
#

2024 and we care about a few megabytes?

eternal oxide
#

when you have to package multiple SQL libraries it quickly bloats

tardy delta
#

because those are also bloated 😔

young knoll
#

Plus spigot has a 4mb upload limit!

upper hazel
#

what?

upper hazel
#

my plugin use hibernate and now this 16 mb

drowsy helm
#

yeah hibernate is pretty large

tardy delta
#

what do you even need hibernate for

#

thats something you use when you dont care what happens with your db

upper hazel
tardy delta
#

ive never had a time where manually interacting with the sql api has taken me longer than setting up the whole orm thing

upper hazel
#

Well, when you use hibernate not for the first time it becomes easier than writing a lot of code.

tardy delta
#

i disagree

#

i always need fine control over my database

hazy parrot
#

u dont like hibernate making 53 queries for a single model ?

tardy delta
#

exactly

#

and i want to be able to debug thinks without having to look into the internals of it

brisk estuary
#

yea using an orm in a mc plugin doesn't make a lot of sense xd

hazy parrot
tardy delta
#

using an orm doesnt make a lot of sense anywhere

remote kernel
#

How i can modify above player's head name with ProtocolLib (or other things)? :P

#

i don't want to use scoreboardmanager

muted turret
#

Hello, I'm trying to build 1.21 with: java -jar BuildTools.jar --rev 1.21 --remapped. However, it tries always to build 1.21.1. How can I force BuildTools to build 1.21?

eternal oxide
#

1.21 is superseded by 1.21.1

#

it won;t build 1.21

dark moth
#

is block display animations added to spigot

#

?

eternal oxide
#

animations? It has transformation/translation

dark moth
#

yes

#

that one

muted turret
eternal oxide
#

No one should be running a 1.21

tardy delta
#

just looking at craftbukkit, im wondering how much code would be gone if we used kotlins delegate feature 🤤

#

sadly

muted turret
#

Ok, then the next issue I'm facing is this:

org.eclipse.aether.resolution.ArtifactResolutionException: The following artifacts could not be resolved: org.spigotmc:minecraft-server:csrg:maps-spigot-members:1.21.1-R0.1-SNAPSHOT (absent): Could not find artifact org.spigotmc:minecraft-server:csrg:maps-spigot-members:1.21.1-R0.1-SNAPSHOT in minecraft-libraries (https://libraries.minecraft.net/)

Running with: java -jar BuildTools.jar --rev 1.21.1 --remapped

eternal oxide
#

use java 21

muted turret
# eternal oxide use java 21
$ javac -version
javac 21.0.4
$ java -version
openjdk version "21.0.4" 2024-07-16
[..]
$ update-alternatives --list java
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
/usr/lib/jvm/java-21-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
$ update-alternatives --list javac
/usr/lib/jvm/java-17-openjdk-amd64/bin/javac
/usr/lib/jvm/java-21-openjdk-amd64/bin/javac
/usr/lib/jvm/java-8-openjdk-amd64/bin/javac

$ java -jar BuildTools.jar --rev 1.21.1 --remapped
[--rev, 1.21.1, --remapped]
Loading BuildTools version: git-BuildTools-5411f5b-186 (#186)
Java Version: Java 21

So as far as I see, I'm using 21? not 17 or so...

stuck oar
#

is player.sendTitle() the only way to send a title?

#

because subtitles dont work for me

torn badge
torn badge
stuck oar
#

p.sendTitle(" ", ColorTranslator.colorize("&3+1 Mining Skill - " + prcnt + "%"));

torn badge
#

Try sending ChatColor.RESET as the main title instead of just a whitespace

stuck oar
#

alright

#

still sends as title

torn badge
#

Wdym still sends as title

stuck oar
#

big title

#

not subtitle

torn badge
stuck oar
#

of what

#

mc?

#

1.20.4

#

java

#

17*

pseudo hazel
#

yes I think it does isEqual on the stacks to see if its the same item

glossy laurel
#

what happens if you save a player into a variable but then he leaves the server? Can I somehow check if he is still on the server or something like that?

chrome beacon
glossy laurel
chrome beacon
#

yes

#

It's a memory leak if you don't clean it up

pseudo hazel
#

then you probably have to loop over the inventory yourself

#

for item in inventory, etc

#

but what else is there besides the material and data

#

yeah

#

no becasue it depends on what you wanna look for

#

like why not use the remove function

#

what else is there to compare besides a material and the data

muted turret
dark moth
#

how do i make someone glow with a specific color

#

like red, green, dark green, aqua or sum

#

is there a way ?

slender elbow
#

the glow colour is the team colour

slate siren
#

To delete an offline player from the friend list, we get the player's uuid from friend.yml, and thus we find the player and delete him.

#

But there is a problem, when I delete a player from the friends list, it is deleted from the list of the player who deleted it, but not from the other player's list.

#

It remains registered in friend.yml

#

This only works when the player is offline.

dark moth
slate siren
#

If we delete when the player is online, this problem is gone

grim hound
#

how can I achieve PersistentDataContainer's functionality for ItemStack for versions where it didn't exist yet?

#

so pre 1.14

kind hatch
#

NBT

grim hound
#

yeah, but how can I manipulate the nbt?

#

I don't think spigot allows that by default

eternal oxide
#

NBT-API plugin

torn badge
#

Or NMS

kind hatch
#

And the data for both of them so you can remove them from each others friend list

dark moth
#

do i have to create a new scoreboard for teams ?

#

or i can use main scoreboard

#

idk

#

which should i use

pseudo hazel
#

doesnt really matter, but keep in mind that the main scoreboard is the one being used for all the scoreboard commands

vague solstice
#

Morning everybody, guys I need some help here, I'm trying to get an armorstand with a player passenger move but I was trying to teleport the armorstand without the player and then add the player as passenger again (Looks buggy) so I want to smooth it Idk how. Thanks

wet breach
vague solstice
wet breach
#

if you want it to be smooth, spawn a new armorstand at the teleport location, dismount the player, teleport player, mount them back on armorstand already waiting, remove the old armorstand

vague solstice
#

Looks buggy

wet breach
#

you said you teleported the armor stand

#

I am saying don't teleport it

vague solstice
#

The point is, if I did that, player camera would be changing when teleported

#

Like if someone moved ur mouse or smth

wet breach
#

you can change their yaw and pitch

vague solstice
#

Now my question is, if I keep removing the last stand, wouldn't it look weird when my 3d model dissapears right behind and then appears in front?

#

I mean I've seen some plugins that use this same thing and look so good, the stand moves towards the players looking direction and that

#

Not sure if they do it with an armostand tho but that's what came to my head

wet breach
#

not sure what you mean, but in regards to removing the last stand you would do it after they have teleported

#

so it appears as though the stand instantly teleported since their vehicle will be there already since you made a copy of it and spawned a new one there before they even teleported

ivory sleet
#

?ban @scarlet osprey ban evasion

undone axleBOT
#

Done. That felt good.

pseudo hazel
#

great now it looks like i was talking to myself :p

vague solstice
slate siren
#

?paste

undone axleBOT
slate siren
#
test:
  player-list:
    9226563f-1b48-38e4-b2d1-b4b400e0b646:
      playername: _SinHa_
      player-uuid: 9226563f-1b48-38e4-b2d1-b4b400e0b646


_SinHa_:
  player-list:
    530fa97a-357f-3c19-94d3-0c5c65c18fe8:
      playername: test
      player-uuid: 530fa97a-357f-3c19-94d3-0c5c65c18fe8

when i deleted SinHa in my friend list.

test:
  player-list: {}


_SinHa_:
  player-list:
    530fa97a-357f-3c19-94d3-0c5c65c18fe8:
      playername: test
      player-uuid: 530fa97a-357f-3c19-94d3-0c5c65c18fe8

RemoveCommand
https://paste.md-5.net/saxagiwode.js

FriendsDataManager
https://paste.md-5.net/qogaxinute.cs

When I remove a player from my friends list, if the removed player is offline, only my name is not removed from their friends list, and it still appears in the "friends.yml" file; the offline player's list isn't updated, and I'm struggling to find a solution for this issue.

#

When I remove a player from my friends list while they are online

#

everything works correctly, and the player is removed from both friends' lists However

#

if the player is offline when I remove them

#

they are only removed from my list

#

but not from the offline player's list in the "friends.yml" file

tidal finch
#

Hi, could someone please recommend some particle effect libraries for plugin development? I am making plugin for MC 1.21 and having trouble finding any.

quaint mantle
halcyon hemlock
#

^

dim rampart
#

Hello does anyone know how I can maintain playertime without it resetting when I change worlds?

eternal oxide
#

play time is per world

dim rampart
#

How can I do that?

#

never used one before

eternal oxide
#

just forEach all worlds and add up play time

dim rampart
#

does it save under the %playertime% placeholder?

eternal oxide
#

thats a plugin so no clue

#

actually, what time are you trying to read?

dim rampart
#

I am trying to get the play time from papi

#

the placeholder is this: %playertime_time%

#

This is essentially the integrated time not that of a plugin

eternal oxide
#

it doesn;t sound like you are writing a plugin then

dim rampart
#

im not writing a plugin just trying to get the playertime to work correctly through the config files of the server

#

im using essentials for the playertime rn

eternal oxide
dim rampart
#

ahh gotcha!

#

Thank you!

brisk estuary
tardy delta
#

🤨

iron rivet
#

how do i get access to the netty instance running on the server ?

anyone know?

before anyone says why would u need that blah blah balh i need it so if anyone knows how please tell me if not dont matter

halcyon hemlock
#

Nms maybe

iron rivet
#

and thta i coudlnt find it

halcyon hemlock
#

Spigot is a bad api keep ur expectations low

#

Oh and btw I haven't use spigot in a while either

#

🤒🤒

iron rivet
#

rip i rlly need this functionailty my entirer plugin is based of it and as moth forks use spigot i was hopign they carry the same method over

#

anyone else iw ill stay active for a bit see if i can get somoen with high experience/knowledge

blazing ocean
iron rivet
#

i prefer the fork of the fork of the fork of the fork of the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the forkof the fork called ForkMC

#

of bukit

iron rivet
#

lol there is a gif for that

#

no way

blazing ocean
#

yup there's an emoji

#

syscraft moment

#

finally found a use for it

blazing ocean
iron rivet
halcyon hemlock
iron rivet
halcyon hemlock
#

Just need a add more shit to the server itself

#

U should totally contribute to ferrumc

iron rivet
#

breh

#

breh

#

breh

#

breh

#

brehbreh

#

oops

blazing ocean
iron rivet
#

wrong discord

blazing ocean
halcyon hemlock
blazing ocean
upper hazel
#

what wrong with serilization

blazing ocean
iron rivet
halcyon hemlock
blazing ocean
upper hazel
halcyon hemlock
upper hazel
#

i getting air

iron rivet
#

oh itys in jitpack

#

YAYAYYAYAYAYAAYAYAYAYAYAYAYAYAYAYAAY

#

FINALLY I CAN FINISH MY PLUGIN

#

SKIBIDYTOILET

#

mb

upper hazel
#

wth man

iron rivet
#

bro i have been trying to find out this for like a month

#

1 because i am dumb

#

2becasdue i am blind

#

3 because i am gay

#

that wa snot homophobia mods i acc am gay

blazing ocean
upper hazel
#

cool

remote swallow
#

nuke his house

blazing ocean
#

fr

iron rivet
#

there aint room for 2 gays here

halcyon hemlock
blazing ocean
iron rivet
#

LMAO THATS ME BUT WITH CHAT GPT

#

except it doesnt work 80% the time

blazing ocean
#

why does the irl night sky look like someone just ran a noise function

#

chat is my brain cooked

remote swallow
#

go look at the floor in the end

#

its black concrete powder

blazing ocean
#

true

remote swallow
#

its literally just black concrete poweder its funny

tardy delta
blazing ocean
iron rivet
#

there is 0 documnetantion ith this library ;-;

#

i have to read'

#

brehbrehbrehbrehbrehbrehbrehbrehbreh

blazing ocean
#

deprecates an enum used in 32 classes with no deprecation message or alternative

iron rivet
#

vanilla is so goofy i wonder what niotch was on when he first made it and what all thje microsoft devs are on when coding this game

blazing ocean
#

real

iron rivet
#

when microsof t bought it they should hasve just rebuilt it from the ground up better

blazing ocean
#

bedrock:

iron rivet
#

it would have 500x the fps

#

im on abt java

worthy yarrow
#

Why do you need fps for Minecraft

#

Above at least 60 I mean

quaint mantle
#

"PvP"

blazing ocean
#

just use optimisation mods

iron rivet
#

if i dont get over 1500 fps i get sadge

#

i do i use all of them

blazing ocean
#

use something like adrenaline, great modpack

quaint mantle
iron rivet
#

to get 2k consitentl but it aitn enough

blazing ocean
worthy yarrow
#

The human eye really can’t tell a difference past about 150

iron rivet
#

no

#

144hz at 1440 fps

blazing ocean
#

what kinda monitor does bro have

blazing ocean
iron rivet
#

next gen samvida monitor

blazing ocean
#

144hz = only shows 144fps

iron rivet
#

its very secret no one knows abt it

#

ik #

quaint mantle
iron rivet
#

but the game does not hitch

#

i am aware

#

of how montior frequencies work

#

however ideally u should run ur fps double ur monitor refresh rate

#

for the smoothest gamplay (if ur pc can handle it)

blazing ocean
iron rivet
#

EWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

#

VSYNC

#

aint no way

#

that increases ur

blazing ocean
#

are you even aware of what it does

iron rivet
#

response time by like 10x

#

yeah its in its name

blazing ocean
iron rivet
#

:skullislandEmoji:

blazing ocean
iron rivet
#

BRO THIS LIBRARY IS ONLY TESTED ON 1.13 AS ITS HIGHEST VERSION

#

U LIL SKIBIDY TOILET

#

istg imkma steal the source of github and update it

blazing ocean
#

steal the source of github
gg buddy

iron rivet
#

it was a joke ;-;.

blazing ocean
#

banhammer github lawyers:

iron rivet
#

wait what is the apahce 2 lisence

#

i havent used it before

#

oh i can edit it gg

#

i think

#

do i need to hier a lawyer brehb

#

yews i can edit it gg

#

bruh i have to edit an entiter plugin just so my plugin will work :>(

blazing ocean
#

just copy its code

iron rivet
#

and paste it within my own plugin?

#

and th en edit to work

#

ik i can within the lisence but it doent seem okay yk

sage drum
#

Nobody?

iron rivet
dawn flower
#

Can you change the max stack of potions without NMS?

eternal oxide
#

in 1.21+ yes

dawn flower
#

What about 1.20.4

dapper flower
#

How do i get all items of double chests in an area? I am worried that the entries get duplicated

deft locust
#

how do i set persistent entity on spigot 1.8?

ivory sleet
#

i think u need nms

mellow edge
#

you must inject NBTTagCompound

deft locust
#

Like this?

        net.minecraft.server.v1_8_R3.Entity nmsEntity = ((CraftEnderCrystal) enderCrystal).getHandle();
        NBTTagCompound tag = new NBTTagCompound();
        nmsEntity.c(tag);
        tag.setByte("PersistenceRequired", (byte) 1);
        nmsEntity.f(tag);
    }```
mellow edge
#

depends on if this is a custom tag only you will use?

mellow edge
#

well yeah something like that, but please check what these obfuscated functions (c and f) actually do in code before using them for granted!

deft locust
#

This is what happens

mellow edge
#

based on the video you provided I cannot seem to find the connection between your video and your question

urban trout
#

how could i store player data through restart,quit,etc

#

would i have to make a file for it

sullen marlin
#

yamlconfiguration; persistentdatacontainer; database - take your pick

urban trout
#

thanks

pseudo hazel
#

or be insane and make your own system

#

not like anyone would actually do that though 😅...

deft locust
sullen marlin
#

for (chunk : nearbyChunks) for (tile : getTileEntities) if (chest) // check if double, get items

sullen marlin
dapper flower
#

I mean there are 2 tiles double chests no?

sullen marlin
#

well just get the half inventory corresponding to that half of the chest

mellow edge
sullen marlin
dapper flower
#

I hope i remember incorrectly but i remember in the past one block had all the items of a double check and the other it had a reference to the main chest

eternal oxide
#

Why do you want ALL double chests in a chunk? It may be better to only get specific ones when you need them

dapper flower
#

Will need to test regardless

sullen marlin
#

getInventory vs getBlockInventory, see above

deft locust
sullen marlin
#

wdym disappear, dont they come back when the chunk reloads?

mellow edge
#

^

#

if the chunk gets unloaded why would you want the ender crystal to still render

deft locust
mellow edge
#

this doesn't make sense

deft locust
#

I want to have the guarantee that the entity will always be in the location I spawned

mellow edge
#

the crytal shouldn't normally disappear when you unload it (and reload it)

quaint mantle
#

Hi

#

Is someone good aat math?

#

i have this problem

#

In server-side, player has X health (40 for example), and i'm showing in client-side 20 hearts,

#

I have to make an operation to calculate how much health i have to give in the sendHealth packet

#

Anyone knows how?

young knoll
#

There’s the health scaling api

#

But idk how well it behaves

#

Anyway you just calculate the ratio

#

If the player has 35/40 health that’s 35/40 or 0.875

river oracle
#

Anyone know what could be causing this? I'm very confused

This is the code that is run

        event.isCancelled = true
        if (event.message == escapeSequence) {
            forceEnd()
        } else {
            onAnswer.invoke(event.message.replace("/", ""))
            timeoutTask?.cancel()
        }```
```kotlin
    fun forceEnd() {
        timeoutTask?.cancel()
        onExit.invoke()
    }```
young knoll
#

Take 20 * 0.875 and you get 17.5

mellow edge
#

Afaik you can set scaled health via Player#setScaledHealth

quaint mantle
#

thx everyone

river oracle
pine elbow
#

Okay this got me a little stumped. Works fine in 1.20.6 but silently fails in 1.21

Plugin is pretty simple

public class EventHandler implements Listener {

    public Map<Material, Material> itemMap = new HashMap<Material, Material>();

    public EventHandler(){
        itemMap.put(Material.NETHERITE_HELMET, Material.DIAMOND_HELMET);
        itemMap.put(Material.NETHERITE_CHESTPLATE, Material.DIAMOND_CHESTPLATE);
        itemMap.put(Material.NETHERITE_LEGGINGS, Material.DIAMOND_LEGGINGS);
// ... etc
    }

    @org.bukkit.event.EventHandler(ignoreCancelled = true)
    public void onPlayerItemMend(PlayerItemMendEvent event) {
        // Make mending not work on netherite
        if(itemMap.get(event.getItem().getType()) != null){
            event.setCancelled(true);
        }
    }

    @org.bukkit.event.EventHandler(ignoreCancelled = true)
    public void onPlayerItemBreak(PlayerItemBreakEvent event) {

        ItemStack item = event.getBrokenItem();
        Material type = item.getType();

        if(itemMap.get(type) != null){
            item.setAmount(2);  //Set amount to 2 so the break event still goes trough but we're not left with 0 items.
            item.setType(itemMap.get(type));
        }
    }

}```

the PlayerItemMendEvent does get fired and handled correctly, but the PlayerItemBreakEvent never gets fired when server is 1.21 (but it does on 1.20!)
deft locust
undone axleBOT
quaint mantle
#

?whereami

deft elm
#

Hi, im trying to use protocolLib to detect a left and right click on a nms npc does anyone know how to get the data on whether it is a left or right click directly from the packet itself?

edit : figured it out

            public void onPacketReceiving(PacketEvent event) {

                PacketContainer packet = event.getPacket();

                PluginPrint.println(packet.getEnumEntityUseActions().read(0).getAction().name());
            }

packet.getEnumEntityUseActions().read(0).getAction().name() should return you ATTACK, INTERACT, or INTERACT_AT in string form.

grave lagoon
#

yessir

vague swallow
#

I'm still using paper

grave lagoon
#

o shit mb i accidentally pinged u

vague swallow
#

How did you accidentally ping that old message? XD

grave lagoon
strong parcel
#

I am having an issue compiling my plugin. com.jeff_media:CustomBlockData:jar:2.2.0 was not found in https://hub.spigotmc.org/nexus/content/repositories/snapshots/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of spigotmc-repo has elapsed or updates are forced

#

I am not sure why it is looking for CustomBlockData in the spigotmc repo since I included Jeff's repo in my pom. <repository> <id>jeff-media-public</id> <url>https://hub.jeff-media.com/nexus/repository/jeff-media-public/</url> </repository>