#dev-general

1 messages · Page 24 of 1

frail glade
#

Yeah I'm looking at the code changes.

#

Looks like we have a couple new packets too.

distant sun
#

I wonder when the first hologram plugin will be released xD

inner umbra
half harness
#

the black outline on the text won't be there anymore tho

#

so

#

idk if ppl will like it

#

¯_(ツ)_/¯

#

prob get used to it tho

crude cloud
#

what black outline?

half harness
#

not outline

#

background

#

oops

inner umbra
#

Some people have never liked that so its kinda an improvement.

#

And no more dark text when the armorstand is in a block

crude cloud
#

I'm fairly certain that is configurable

#

display entities are really customisable

distant sun
#

yeah, if you can have one single background that's 10000 times better than what we have rn

crude cloud
#

you can have literally any background colour you want with any opacity you want, full ARGB

distant sun
#

ARGB 😮

spring canopy
#

Is there a way to increase the Y for player.addPassenger(armorStand); or is there a better way to display holograms on players?

oblique heath
#

you can add entities between the player and armor stand

#

i think a common trick is to use invisible baby slimes

#

and at that point you can just get rid of the armor stands entirely and only use baby slimes

spring canopy
#

so you stack multiple to form the Y ?

oblique heath
#

yea

brittle leaf
#

ofcourse as a packet only, not an actual armorstand entity

spring canopy
#

ok, that seems like work for another day :p

#

appreciate it 😄

rugged compass
#

bruh, since when does java not allow casting boolean to int?

#

or is that just a C thing

remote goblet
#

i dont think that's ever been a thing

rugged compass
#

you tend to do it in C for branch avoidance

brittle leaf
remote goblet
#

in java i believe its mostly boolean ? 1 : 0

rugged compass
#

I guess

#

casting in theory allows the cpu to not have to make a branch which is better for processor pipelining. so in C you tend to cast a boolean to int so it doesnt need to jump in code

#

but I guess java doesnt give you that option

brittle leaf
#

java is already inefficient compared to some other languages like C afaik so i dont think this jump will matter in the grand scheme of things

hard dagger
#

Might be jitted

#

And if you are micro optimizing so much to the point youre removing as many branches as possible then dont use java

distant sun
#

I mean, using ints instead of booleans is not an optimization kek booleans are represented by 1b (true = 1, false = 0) while ints have 32b

potent nest
distant sun
#

Yeah exactly

hard dagger
distant sun
#

Ok

potent nest
prisma wave
#

yeah I think it’s implementation defined

distant sun
crude cloud
#

yeah it's very straightforward

distant sun
#

thank you github for displaying this message even though I have dismissed it 5 times already LOL

#

made me think I don't have any 2FA enabled lmao

pastel imp
#

me playing with swing panels be like

#

and to think that the actual exercice was only this lmao

pastel imp
distant sun
#

go high or go home

pastel imp
#

it's swing...

#

think it's almost impossible to do that without some stupid issues and lag

spring canopy
#

Hey, when I print the homeIDs the correct numbers show up, but when i use the (i) it just counts from 0 > max result?

        player.sendMessage("yass?" + homeIDs);
        for(int i = 0; i < homeIDs.size(); i++) {

            player.sendMessage("Noe? " + String.valueOf(i));```
#

its the loop obviuosly, but I'm silly ignorant regarding loops. I assume the 0 can't be 0?

#

the table rows returned should be 2,3,4,5,6,7,8,9 and 10. but it just counts to 10.

rotund egret
#

<=

distant sun
pastel imp
#

Anyone sees a way to optimize this?

String input = "837123123448101";
char[] chars = input.toCharArray();
HashMap<Character, Integer> map = new HashMap<>();
        
long startTime = System.nanoTime();
        
for (Character c : chars) {
    if (map.containsKey(c)) {
        map.put(c, map.get(c) + 1);
    } else {
        map.put(c, 1);
    }
}
        
long stopTime = System.nanoTime();
long diff = stopTime - startTime;
long diff_ms = diff / 1000000;
long diff_sec = diff_ms / 1000;
        
for (var entry : map.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}
        
System.out.println("");
System.out.println("Total Chars: " + chars.length);
System.out.println("Time taken: " + diff_sec + "s (" + diff_ms + "ms)");
#

(it already can do it with 65k chars in like 10ms but you never know)

#

For context, random idea my math teacher suddenly had, he wants to know how many times X number comes in PI lol

#

so input would be PI with a max of 65k digits (limited by String)

#

(didn't use doubles cause they are highly limited)

potent nest
#

well you're doing containsKey + get + put, while you only need get + put

#

but also, a HashMap might be limiting slow there

#

if it's only 0-9, just use an array

prisma wave
#

this feels like micro-optimisation but you could use an int[] instead of a HashMap

#

^

#

alternatively it might be worth investigating a parallelStream approach

#

but ehhh

pastel imp
#

yeah this looks fine enough xD

pastel imp
#

how would I use an array since I have to still store how many times it came?

#

in the hashmap K is the char and V is the times it came

#

in theory it also supports other charecters not just numbers

potent nest
#

CHAR - '0'

pastel imp
#

Also had to do this to test it with more than 65k

#

since apparently it doesn't let you set it to more than that directly

#

but you can append more lol

#

either way 50M chars in ~600ms

#

took more time to append all the text than the calculating itself lmao

potent nest
#

what does "won't work" mean

pastel imp
pastel imp
potent nest
#

ah lol

#

read it from a file

pastel imp
#

too much work

potent nest
#

one line of code

pastel imp
#

EEEHHHH

#

will do that later

#

lol

#

it works for what my teacher wanted

static zealot
pastel imp
#

gtg back to making my "space invaders" game

distant sun
#

Files#readall or something

static zealot
#

oh. I guess there's Files#readAllLines

#

I always forget about the Files class

distant sun
pastel imp
#

oh cool

#

didn't know

#

ty

#

now at 512ms

potent nest
#

just dont use a map at all

static zealot
#

array seems like a decent solution. and use the character's integer value as position or something

pastel imp
#

still don't understand how you want to do that tbh

#

and tbf, I like that it also supports other chars

static zealot
#

you use the character's ascii value as position. it will support all ascii characters

pastel imp
#

what would be stored in that array? that's what I am confused about...

#

from what I understood, you want to store all unique chars that came

#

for ex. in 13567, the chars 1, 3, 5, 6 and 7 came

static zealot
#

the number of times the characters show up

pastel imp
#

but I also want to count how many times they came

#

okay I am lost lol

static zealot
#

yeah. at position 1 the value would be 1, 3 would be 1, 5 would be 1, etc

#

well not position 1. whatever 1 is in ascii

pastel imp
#

OH

#

I think I know what you mean

static zealot
#

at position 49, value would be 1.

pastel imp
#

what about the positions below that?

#

like 0, etc?

#

would they simply not exist or what

static zealot
#

they'd have the value 0 by default

pastel imp
#

wait how would I adapt this

for (int entry : numbers) {
    System.out.println(entry + ": " + entry.getValue()); // this
}
``` to show also the char in "entry", since entry is now the value
potent nest
#

the inverse of how you got from char to index

static zealot
#

you'd probably want to use an index loop

#

if you want to print the character as well

#

since the index represents the character

pastel imp
#

yeah just did

#

only issue now is that the array isn't initalized

#

do I need to initialize one by one?

potent nest
#

no, you start at 0

pastel imp
#

but none of my chars' ascii is 0...

#

how would I start at 0

prisma wave
#

doesnt matter?

#

when you create an array all its elements are 0

#

/null

pastel imp
#

I am confused

prisma wave
#

the array is the exact same as a hashmap where index = key and value = value

pastel imp
#

I might have misunderstood what y'alls idea was

#

exactly

#

index should be the character

#

in this case in ascii

#

which 1 = 49

#

not 0

potent nest
#

look at the ascii table

#

learn about subtraction

static zealot
#

when you need to count a new character, you just do array[(int) char]++
then if you want to find how many of a character there are you just do array[(int) char]

#

if the returned value is 0, it means that character didn't show up at all

pastel imp
#

yeah but like, confusion

#

I can't set numbers to null

#

will get a null pointer

static zealot
#

you have to initialise the numbers array

#

if you want to use it

prisma wave
#

yeah lmao

#

this isn't C

distant sun
#

I see a c right there

pastel imp
#

fk, forgot this was java (worked with c yesterday)

static zealot
#

I c c right there

#

I am funny. I know

distant sun
#

And also a failure

static zealot
#

I know

#

😭

pastel imp
#

34ms now lol

#

a ton faster

potent nest
#

might be acceptable for a cold jvm

pastel imp
#

xD

#

in my defense, got offended by my teacher, he doesn't know about programming and wanted to check with a friend of his (informatics teacher) to see if my code wouldn't have issues checking 10k characters

#

sooo now it checks 50M chars in about 30ms

#

lol

prisma wave
#

is there a reason why you're doing this in java

#

might as well use C for something this simple

#

free performance

pastel imp
#

I just wanted it fast af just for the memes lol

#

pretty sure he would've had accepted the 600ms one lol

#

think he thought it would take like a bunch of seconds for 10k lol

half harness
#

use PrintWriter (so that you flush it all at once)

#

oh im pretty late

#

¯_(ツ)_/¯

pastel imp
#

yeah a bit

#

never heard of PrintWriter though

half harness
pastel imp
#

I am not printing 50m lines

#

lol

half harness
#

🥲 System.out flushes every print i think which is why it's so slow

pastel imp
#

I am printing once for every character

#

aka 10x

#

not 50m

half harness
#

oh

#

10 characters?

pastel imp
#

0-9

#

10 chars

crude cloud
half harness
#

¯_(ツ)_/¯

#

I'm 99% sure its faster

crude cloud
#

Wait until you find out what PrintStream/Writer do by default

half harness
#

it was just a guess

crude cloud
#

if you're worried about performance you wouldn't use either anyway

half harness
#

¯_(ツ)_/¯

crude cloud
#

scanner has its own great overhead

half harness
half harness
#

ig the times are combined

prisma wave
prisma wave
#

oh

#

I do not care

half harness
#

oh

#

but thank you for your response

#

it didn't mention which so i didn't know

#

which one mattered more

crude cloud
#

System.out already is a PrintWriter, and you can't magically undo the flushing without accessing the underlying writer/stream

#

Scanner on the other hand uses regex for the delimiter, it's actually a fairly decent tokenizing utility, but rarely anyone ever uses it outside of hello worlds; so skipping the regex by using the stream directly with a reader is a really good move

half harness
#

how much faster is using a separate PrintWriter?

#

rather than System.out.println

crude cloud
#

"separate"?

half harness
#

like new PrintWriter(System.out).println()

#

is there much of a difference? or is it mostly just the bufferedreader that makes up the difference

crude cloud
#

that won't make a difference, that will still use the PrintWriter in System.out inside the "outer" PrintWriter

half harness
#

huh, interesting

#

i wonder why they put that there then

#

u sure theres no difference? 🥲

crude cloud
#

Many stream/writer/reader subclasses take another stream/writer/reader and it's nothing more than a delegate

crude cloud
#

again, you won't see any improvements without accessing the underlying stream

#

or writing to the file descriptor directly which is essentially the same thing

#

That screenshot you shared is showing both sysin via Scanner and sysout, not just sysout, getting rid of the Scanner is most likely the largest difference

dire wraith
#

On my server i have items with potion effects that players can use, but the effects bypass my pvp toggle plugin, anyone know any fixes/ pvp plugins thst may fix this?

distant sun
cinder flare
#

classic javascript moment

#

looks like something funnycube would write

distant sun
#

🤣🤣

#

You don't have to attack @pallid gale like that 👊

pallid gale
cinder flare
distant sun
pastel imp
#

Yooo I am going to be doing an amazon cloud workshop in april pog

distant sun
#

nice

pastel imp
#

totally not just going for the 100$ AWS giftcard lol

#

and AWS Cloud Certificate lol

foggy pond
#

Does Bungeecord use Spigot servers instead of paper servers?

static zealot
#

bungeecord works with both spigot and paper servers

foggy pond
#

I didn't knah sorry

foggy pond
#

I'm setting up a Bungeecord server and I am confused, what exactly is the listeners section?

#

Is that just where I specify how users connect to my server?

brittle leaf
spring canopy
#

So I'm having an issue I can't seem to resolve..

Caused by: java.lang.NumberFormatException: For input string: "death"

can someone explain to me what that means and how I debug that cause I've been looking 😂

inner umbra
spring canopy
#

just saw it when u wrote it 😂

#

thank you ❤️

inner umbra
#

Np

spring canopy
#

Still can't find the error, is there a good way to put my code without flooding the chat? xd

rotund egret
#

?paste

compact perchBOT
#
FAQ Answer:

Paste Services
When asking for help with a config/menu/code issue please use our paste bin:
(we prefer it over pastebin.com)
HelpChat Paste - How To Use

spring canopy
#

The error throws when I use /home set <name> or I die, as I have a function that sets a home when you die which was recently added which may or may not cause this error. ill add that in a new paste... https://paste.helpch.at/bazitupato.java

#

It's the check for maxhomes function... still no clue how that's a string as it's fully integer?

spring canopy
#

Figured it out ~ public boolean maxHomes(Player player) { if(getMaxHomes(player) <= getPlayerHomeCount(player)) { return true; } return false; } was the fix.

pastel imp
#

Uhm so I am working with swing and I am making a component library (aka stuff like custom buttons, painted ones, not actual frames, they are painted in a panel), here's the thing what would be the best:

  • Add a way to set a consumer of that button and on click execute that consumer
  • Give the button an id and then have a class listen for the click event which then compares IDs and executes the appropriate thing
crude cloud
#

okay

pastel imp
#

that doesn't help

crude cloud
#

help with what?

#

you just stated what you're doing

pastel imp
#

no, I stated two options, and asked which would be the better option

#

I can't do both lol

half harness
#

Punctuation 😖

#

Sounded like you wanted to do both

pastel imp
#

AH fk

#

my bad

#

no, I def. didn't

#

I am just trying to decide which way to do it

#

My informatics teacher told me the second would be noice but like, knowing how the school system sucks, I trust more people here than my teacher 💀

steel heart
#

@pastel imp if u were to choose urself, which one would u choose and why

pastel imp
#

similar to how discord buttons work, with ids, etc

#

so I suppose that's what would make more sense in that sense

crude cloud
#

i mean that's basically how you abstract stuff like UI interactions, especially between remote processes, an element has an ID, you designate a callback for that ID somewhere, when the action happens, compare IDs, invoke callback

distant sun
foggy pond
#

Is anyone here using Chat-GPT for paper/bungee development

#

I find it's actually pretty decent as long as you know what you are doing

#

I had it write a method to color specific keywords of any provided TextComponent, and it's done so 90% accurately

#

And in general it's really good at explaining some parts of the API

steel heart
#

yea i tried it

#

pretty helpful at times

half harness
#

and you don't have to open up the browser

foggy pond
#

Huh i have never heard of it

#

Is that useful in this field?

#

If I had to guess, it's better than GPT-3.5 but it's not as good as GPT-4

crude cloud
#

ChatGPT is designed for conversation, while it can provide seemingly useful answers at first, sometimes it spews random bullshit, because that's what it's designed for basically

#

GitHub Copilot on the other hand lives and breathes code, it learns from your existing codebase and new ones out there, it will use patterns and classes from your current project

half harness
foggy pond
#

I mean I guess best thing would be to use both

half harness
#

it's free if you're a student fingerguns

foggy pond
#

Huh

half harness
#

but paid if you're not

foggy pond
#

okay fine i'll try it

half harness
#

:))

foggy pond
#

Might be useful for some assignments

half harness
#

also I'm just gonna mention github student developer pack

#

is pretty cool

half harness
#

really good if you're writing relatively ""repetitive"" code

#

but still really good because it can look at your project and find patterns

remote goblet
#

I genuinely have become so accustomed to using copilot

#

i hard struggle to do without it

#

and it fills in all the gaps in my memory on how to do something

#

:)

crude cloud
#

bad dev

remote goblet
#

yes

stable oar
#

.

queen saffron
#

I've heard TabNine isn't bad eitjer

#

Either*

half harness
#

doesn't that override the tab completion of the IDE tho?

#

i haven't used it before so idk

remote goblet
#

nope

#

You can press ctrl + space to force tab complete options

#

i IDE Tab compelte database connector and connect, and it finishes the rest

twilit portal
#

Hey everyone

#

PacketTooLarge - PacketPlayOutScoreboardTeam is 2097176. Max is 2097152

Anyone can help me figure out whats wrong with my server?

wind patio
inner umbra
twilit portal
#

It wasnt that easy

wind patio
#

but.. it was?

hard dagger
#

its good for writing unit tests

#

nothing else cuz it writes too many bugs

timber oak
#

Is it bad practice to generate instances of a class in a static method? And also is it fine to get user input using Scanner.nextLine etc. in a static method? I assume both are alright since they're kind of utils?

prisma wave
#

Uh what

#

can you show an example

#

broadly though static is only "bad" when it's relying on state in some way (reading or modifying)

timber oak
prisma wave
#

That’s probably fine

#

All I’ll say is you might wanna split it into small methods, potentially separating the actual logic and the input handling

potent nest
#

static factory methods are somewhat common and also Item 1 in Effective Java

drifting aspen
#

Does anyone have info about the protocolib repo being down?

rotund egret
#

Some tickets on the github, no response yet

drifting aspen
#

yep

#

that's all I could find

#

probably gonna upload it to my repo in the meantime

rotund egret
#

jitpack might work

#

Personal repo would work better if you have one handy though

drifting aspen
brisk crane
#

anyone has idea why natural mobs are not spawning in any world

graceful light
#

My Kotlin is code is just hanging on a class instantiation. Just a few variables being passed in. No init. No functions being called. Just a data class being created. No errors. Doesn't crash. It just gets stuck. The rest of the program continues to function as normal.

half harness
graceful light
# half harness kotlin won't do that by itself - show code plz

val team = Team(voice!!, text!!, teamName, leader)

class Team(val voiceChannel: VoiceChannel, val textChannel: TextChannel, val name: String, val leader: User) {

I can show you more if you like. I find this very weird too. Not my first time using Kotlin, never had issues before. That class just has a few methods I’m not running on init.

queen saffron
#

Uhhh

#

Please for the love of God, use ```

#

Makes everything so much more readable

inner umbra
#

if(user.wantsCodeInMarkDown)
donnot();
elsejava markdown();

queen saffron
#

Lmao

inner umbra
#

It didn't even do it right lol

#

There we go

queen saffron
distant sun
#

@radiant basalt wrong channel

ruby dew
#

@private Gaby TM(Chad Country); :modhammer:

Wrong access modifier

crude cloud
#

lol

ocean quartz
#

Lol what

static zealot
#

stupid

crude cloud
#

it's very silly and lame

static zealot
#

how many you get? 4 per month?

crude cloud
#

lol no

static zealot
#

hmm? I swear I saw that somewhere

crude cloud
#

you get two per week, but i don't know if you can accumulate them, i got started with 5

static zealot
#

found this

crude cloud
#

classic still a thing?

static zealot
#

idk. it is from discord's official faq tho

crude cloud
distant sun
#

100% you can not

distant sun
agile galleon
#

i have basic and 5

crude cloud
#

yeah but they "give you" two per week

#

which is why i'm asking if you can accumulate them

agile galleon
#

oooh

#

i think up to 5

#

at least for me

crude cloud
#

ig we'll find out eventually

ocean quartz
#

How do you even add a "super reaction"?

agile galleon
ocean quartz
#

Oh lol

#

That's so dumb

agile galleon
#

ikr

crude cloud
#

it also shows up in the reaction menu thing

agile galleon
#

thats why i spend them on useless shit cause its funny

#

but generally its not the reason i throw money and this company

queen saffron
#

Damn i got 4 left 😭

hazy widget
#

I got nitro but for some reason it doesn't pop up for me

#

the super reactions

crude cloud
#

are you on mobile?

hazy widget
#

nope, on pc

crude cloud
#

restart discord ig

hazy widget
#

Ty, that fixed it

queen saffron
#

So why are super reactions a thing???

ocean quartz
#

So it's 5 super reactions per week per emote

#

No, it's total lol

#

So it's not "this", discord smh

queen saffron
#

On your own message

ocean quartz
#

It's a different emoji

queen saffron
#

oh yeah slightly different name

static zealot
#

names don't matter

still portal
#

can't even do a super reaction per day of the week 😭

static zealot
#

they're different IDs.

still portal
#

oh damn i'm already out of super reactions

graceful light
crude cloud
#

yeah seeing more code would be ideal

rotund egret
#

Not using !! would probably be a good start, but yes more code please ❤️

brittle leaf
#

when removing items from an inventory, im not sure if doing left to right or right to left looks better

half harness
remote goblet
#

Me when !! NOOO

graceful light
graceful light
#

Even though it was in this case 💀

remote goblet
#

i hate you barry

#

using ?: and actually doing nullchecks

#

using !! is completely throwing the purpose of kotlin out the window

#

(most of the time at least)

delicate sedge
#

I use the plugin SimpleGems.
I want to use deluxemenu with the requirement that if they have enough gems. They can buy certain stuff.

How can I do this?

hard dagger
prisma wave
#

That’s not really a good excuse

#

because clearly !! can still cause problems as we’re seeing

hard dagger
hard dagger
distant sun
#

Fails ?

hard dagger
distant sun
#

It can either be null or not kekW

wind patio
remote goblet
#

value ?: return NOOO

hard dagger
remote goblet
#

because we write in a stupid language

#

if a variable is marked as nullable, its nullable for a reason

hard dagger
wind patio
#

what's the big issue of writing a null check
if you "know" it's not null, then it "won't reach" the 'return'

#

or if you wish you can add a log message there
System.out.println('uh oh this was not supposed to be null weewoo')

remote goblet
#

we're talking about kotlin here, a language with the purpose of sending NPEs to the shadow realm

#

WEE WOO

distant sun
wind patio
#

K 🤮 tlin

distant sun
wind patio
#

true ogs code in jython

remote goblet
#

true gigachads code in brainfuck

wind patio
#

moolang anyone???

hard dagger
#

and its doing nothing

#

thats why its silent

wind patio
#

what are you trying to achieve

distant sun
#

<null>!! will probably throw a big ass exception if thats what you mean

hard dagger
#

im just saying that if u think something cant be null, doing nothing when it is null is worse than throwing an exception because at least you know that ur assumption is wrong

hard dagger
#

how??

distant sun
#

Null check and do whatever you want if it is null

half harness
#

Btw

hard dagger
#

exactly

wind patio
half harness
#

It's still better to do like illegalstate

distant sun
#

I guess they create the channels and they are considered null by kotlin because the methods are either @solid flaxable or the nullability is unknown so kt considers them nullable

half harness
#

But having an npe should be better than silent fail

#

Rip null

#

Lol

hard dagger
distant sun
#

Nobody said to make it fail silently, just to do a null check, and then you can do whatever you want inside the if lol

half harness
#

Studf

#

Stuff

half harness
#

Said return

#

So I continued it with that

half harness
#

👍

wind patio
#

anyways, lunch break over, back to work

#

😩

hard dagger
half harness
#

:))

#

If its not annotated then u don't need!!

wind patio
#

sch😩 😩 l

half harness
#

🥲

half harness
remote goblet
#

reminder if you dont want code to fail silently in kotlin, .let exists for a reason

hard dagger
wind patio
hard dagger
#

how does that stop smth from failing silently

remote goblet
#

its a fancy if (value != null) do something

hard dagger
#

but the receiver is non null?

remote goblet
#

a shorter less wank version of Optional#ifPresent Optional#orElse

#

i believe

#

im lying about the or else

#

and you can add a ?: next to it for the or else

prisma wave
#

Exceptions can get suppressed sometimes by funny things

hard dagger
#

oh lol

hard dagger
ocean quartz
#

JDA has nullability annotations setup and Kotlin understands it well and should be handled correctly, using !! is going to cause NPE
Even when you are sure it is not null, it's always better to use the safety, for example this "sure it's not null" ended up not being so sure

crude cloud
#

i mean yeah instead of blindly doing !!, how about, you properly handle null values lol

wind patio
#

no, the value is surely not null

#

it's only an accident that he got a null value there

brittle leaf
tranquil crane
#

java class name hell moment

ocean quartz
#

Beautiful

tranquil crane
#

You know what else is beautiful?

#

somehow this has not yet caused any issues in production servers

rotund egret
#

Hasn't caused any reported* issues

ionic gust
#

@mental trench i made the file auto-updater pog

#

altho i havent tested so uh famous last words :DDDDDD

mental trench
#

xddd

#

my config updates since the first release

#

i just decided to remove comments xd

long dagger
#

Does anyone understand shader code? I want to update SEUS PTGI E12 to support 1.19 glow blocks.

lavish notch
#

It's been ages since I touched anything resource pack related, is it still not possible to validate a sound from a resource pack?

ie. I have a plugin config where a sound is specified as a string and it could either be vanilla or resource pack based.

brittle leaf
#

afaik the server isnt aware of a sound actually existing or not and just sends a packet with a sound id so id assume not

#

well, aware of a sound existing in a resource pack, since vanilla sounds are predefined

ionic gust
mental trench
#

Amazing!

ionic gust
#

and theres no way to fix it since bukkit yml doesnt save comments in any manner :DDDDDDDDDDD

#

and i cant switch to another yml library cause that'd be so annoying for developers to have to learn :DDDDDDDDDDDDDD

mental trench
#

afaik it does, in latest version of snakeyaml or something (paper i think)

ionic gust
#

i dont think bukkit uses snakeyaml tho

#

yeah :(

half harness
#

bukkit uses snakeyaml

ionic gust
#

???????

half harness
#

behind the scenes

#

im pretty sure

ionic gust
#

i dont think so

mental trench
#

hence why it appears

#

snakeyaml package

#

when you break your config

ionic gust
#

i only see that with paper configs

crude cloud
#

bukkit config uses snakeyaml

ionic gust
#

what version of bukkit

#

all?

crude cloud
#

yes

#

I mean i don't know about 1.3 lol but it's certainly used in the unnameable version

ionic gust
#

im using 1.11 api

crude cloud
#

it depends on the version the server is running anyway, but it'll be there in 1.11

ionic gust
#

how would i use a later version of snakeyaml that bukkit is using tho?

#

can i just add it to my own dependencies and call it a day (i assume no)?

crude cloud
#

no

#

if anything you'd have to shade + relocate + use a separate config framework rather than bukkit's

ionic gust
mental trench
#

whats that?

ionic gust
mental trench
#

mm

ionic gust
#

so if i ran /hello, the plugin would say "srnyx said hello" in chat or something

mental trench
#

mmm i dont get the question

#

i mean, that depends on the plugin

#

if i want it to return i replace the variables

ionic gust
#

sorry wait let me rephrase

#

how do u communicate the placeholders available for a message and their description inside of ur msgs file?

#

for the end-user to understand

#

for me i just do this:

hello-command: "%player% said hello" # %player%
goodbye-command: "%player% said goodbye to %target%" # %player%, %target%
```which is why i need comments
mental trench
#

what?

#

ahhhhh

#

i get your question now lol

#

it would be better to ask

#

"how the users know which placeholders are available in a message?"

#

xdddd

#

well, easy

ionic gust
#

yeah sorry lmao im rly bad at explaining

mental trench
#

the ancient technique

#
  1. Default messages have everything they need to know
#

Kill: "&6Player %killer% killed %killed% using a %armor%. (%weapon%)"

#

they decide to remove it or not

#
  1. additionally my default configs are on github
#
  1. really important things
#

have their own seection

ionic gust
mental trench
#

Important-option:
Warning:
- "Enabling this blah blah will reset your world"
#Instead of doing it like this
Enabled: true

ionic gust
#

ah so u use a separate key as the comment (sometimes)?

mental trench
#

only for really important things

#

like once or twice

#

but for anything else

#

i reply

#

"read default config"

#

my plugins are plug and play

#

so they dont even need to change sounds or materials

#

no one asked what placeholders they can use

#

lol

ionic gust
#

same i try to do that too but also add as much customizability possible

mental trench
#

I make them customizable

#

issue is config file ends being 1000 lines

#

and people find it hard to translate

ionic gust
#

o sry sry i didnt mean to say that u dont make urs customizable lmao

remote goblet
#

reminder that this is what a wiki is for

mental trench
#

exactly

ionic gust
#

wikis are annoying to maintain tho fr

mental trench
#

tutorials are on wiki

#

havent touch my wikis in a long time

#

i make them before releasing the plugin

#

so no nneed to maintain unless i add something completely new

remote goblet
#

but at least they're updated knowledge on the plugin

#

instead of outdated config files

ionic gust
#

thats why ive been trying to make file auto-update with comments

#

but ig its not possible

mental trench
#

waste of time

#

honestly

#

¯_(ツ)_/¯

ionic gust
#

i just dont wanna make ppl have to open up wiki pages and such

mental trench
#

they need to

#

so they learn they must search

#

and not evething will be given to them

#

otherwise they come like some people here

#

"how to use multiverse???"

#

they must learn themselves

#

tell them to read your wikis

#

you wrote them for a reason

remote goblet
#

if people are so unwilling to find the information themself

#

they shouldnt be making servers

#

hot take

crude cloud
#

having a wiki also allows you to make changes to it without having to release an update of the entire plugin

ionic gust
#

i think i actually started to make wikis for all my plugins so ill just finish them (as in actually add the content)

remote goblet
#

not encouraging people to find wikis and information for themselves is how you end up with the absolute baboons in #general-plugins

mental trench
#

pretty sure people read it

remote goblet
#

how to set material type for item in deluxemenus

mental trench
#

so, thats good

#

ofc it helps naming your config sections correctly

ionic gust
mental trench
#

and im not perfectionist?

#

i make my own banners so all of them fit

#

the same pattern xd

ionic gust
#

ooo can i see

#

r they on github

mental trench
#

even plugin icons follow the same pattern

ionic gust
#

i suck at icons so i just match the names of the plugins, they all have alliterations

mental trench
#

me too, but still, i guess they look "good"

ionic gust
#

wow i love ur banners, they're all the same size 😍

mental trench
ionic gust
#

this is a perfect time to shout barry

#

how'd u make those?

mental trench
#

¯_(ツ)_/¯

ionic gust
#

o i was gonna look into discordsrv's auto-updater

#

cause i remember they used to have the same comment delete issue but then they magically fixed it

mental trench
#

you were told already to waste your time in more important stuff

#

up to you

#

¯_(ツ)_/¯

ionic gust
#

ye not gonna mess with it anymore ig sadge

rotund egret
#

Tfw json spec doesn't support comments 😔

ocean quartz
#

Jsonc moment

remote goblet
#

took me a good second to remember who scarsz was

rotund egret
#

I don't know of them

remote goblet
#

they're the discord srv dev

#

i knew i recognised the name but didnt know where from

rotund egret
#

Ah that makes sense

broken imp
#

Hello super smart developers. I'm wondering if it is possible to display a box in the bottom right corner of the screen (with hotkeys so the user can remove the box) that will show some basic info I need, with other hot keys that will switch tabs basically showing different boxes with different information. That's kinda the best information I can give without giving away my project ideas lol.

#

I should add this box should be reachable from Papi, or other plugins, to use to display updating information about a player

distant sun
#

You can use some texture pack tricks and shift the text of a bossbar to the right

#

I think they use actionbar for this, but it is the same concept

broken imp
#

Hmm. Can I make the bar whatever shape and size I want? And display icons on it from the same texture back and display information on it from Papi placeholders?

distant sun
#

yeah, pretty much

#

keep in mind that this works only in like 1.18+

broken imp
#

Oh cool. I thought I'd have to have a whole plugin made. Without giving out too much information my idea is basically a skills tab in the bottom right screen, hotkeying will display other information like magic skills, skill levels, stats, etc. So I would need to hide one bar and display another when they hotkey. That's possible also?

distant sun
#

no, you can not listen to custom hotkeys

#

so unless they are like Q, left/right click and other buttons used by the game, it is impossible in vanilla sadly

broken imp
#

Think of RuneScape. I'm trying to make something similar with how they show skill levels, magic skills, prayer skills, etc.

distant sun
#

Oh cool. I thought I'd have to have a whole plugin made.
Well, you do, I'm just saying that the text shift part and icons are handled by the texture pack, but you need the plugin in order to display the info which is then rendered to the client in the corner

inner umbra
#

Without a mod you can't send the server specific key presses.

distant sun
#

Unless you want this 'project' to be a custom plugin, id suggest to take a look at HappyHud, looks nice

broken imp
#

Right. So I guess what I'm getting out is if someone could point my in a specific direction of someone that would be willing to help me create this, or somewhere I can learn how to do this specific thing.

broken imp
distant sun
#

#minecraft would be a better channel to ask in about texture packs

broken imp
#

I can do the texture part. I'm stuck on the plugin part. I've never made a plugin and this is so specific I'm not sure to begin learning to be able to accomplish this myself. Might have to just outsource a paid dev to make it because idk anything about coding tbh

broken imp
#

Right. I can do that easy. But I still need a custom plugin to keep track of the stats and stuff anyway

distant sun
#

Ah ofc

broken imp
#

And idk how to make stuff like that I can code html and css that's about it. So I guess I'm looking for a developer now that won't bankrupt me 🤣

#

Where can one outsource a trustable non expensive plugin developer?

remote goblet
#

me, i'll write any plugin for $50/hour and then resell it on spigot for free

#

but genuinely if you're wanting good developer for any project

#

you absolutely should be paying these people their worth

#

but

#

#1080586241684291635 is probably best and saying what your rates are but if they're too low, expect to either not get request or people to react negatively

distant sun
#

typing RS expert is typing...

ocean quartz
#

Bottom right of the screen is very complicated with actionbar, because it is moved from the center, which means people with lower resolution will have it cut-off, most things using actionbar and bossbar need to be wary of space away from the center
A better alternative would be shifted down scoreboard and a shader to remove the actual scoreboard, this would always be on the right side, though you still would have resolution issues if you put it too far down

distant sun
#

well, sucks to play on a microwave

distant sun
lavish notch
#

Did you see the part where they grilled the guy about some harmful videos being on the platform for 41 days and then just didn't let him respond and moved on the next topic?

distant sun
#

No, but nothing surprises me kek

lavish notch
distant sun
#

What? LOL

lavish notch
#

Let me get a pic.

lavish notch
static zealot
#

it is the G305

#

from Logitech

distant sun
#

mouse?

#

ah lol

remote goblet
#

the guy in the video shows a mouse at the end

quick flume
brittle leaf
#

lets say i dont have a domain currently but im hosting the project on github, what should my groupid be, cus currently its io.github.lunaiskey but im not sure if thats what its supposed to be or not

static zealot
#

that's fine

brittle leaf
#

right, just making sure

ocean quartz
cinder flare
ocean quartz
#

Not ditching, but adding static as well

#

Biggest benefit is static extensions for Java classes

cinder flare
#

Are they not functionally equivalent? I figured if you had a companion object it would just be equivalent to everything being static to any Java impl

rotund egret
#

Pretty sure companion objects are created as singletons, which static doesn't do in java.

cinder flare
#

Well yeah but I mean like to a Java API

rotund egret
#

Like using Kt code in Java?

cinder flare
#

yea

ocean quartz
#

No, it's slightly different, for example to extend a "static" function in Kotlin you need to target the companion:
fun MyClass.companion.myExtension()
Since Java classes don't have a companion you can't do it for those
If you are using Java calling kt code it'd look like MyClass.Companion.function()

rotund egret
#

Matt will likely have a better answer, but it would have to be annotated with jvmstatic to work that way I believe

ocean quartz
#

Yeah, if you add jvmstatic then it would turn into MyClass.function()

pastel imp
#

Matt do be the kotlin pro here

cinder flare
#

interesting

ocean quartz
#

Which is funny because you can name companions

#

While in Kotlin it wouldn't matter the name

#

Interesting, if you make it jvm static, it works both ways

#

Huh, it creates a copy of the function inside MyClass that returns Companion.myFunc(); lol

wind patio
#

K

#

🤮

#

Tlin

static zealot
#

how about you go suck an onion?

ocean quartz
wind patio
#

😋

#

On a scale from 1 to 10, how likely would you recommend Kotlin to a friend???

static zealot
#

a solid 6

wind patio
#

And to not a friend???

pastel imp
#

I personally don't use it but as blitz said, 6

#

Kotlin is pog, but decently harder to learn than java

wind patio
#

Haven't used kotlin at all, that's why I don't like it 😎

pastel imp
#

if a friend just started out, I would def. go for java, not too easy like python but also not too hard

rotund egret
#

I actually found it easier to learn than java, and actually helped to increase my understanding of Java.

pastel imp
#

I would say java is quite in the middle

wind patio
#

I like my comfort zone, java 😳🙏

pastel imp
#

even better when it's the language we do at school lmao

#

so I can flex the 100% tests

wind patio
#

But its in my plans to try it out someday, just too lazy to start out setting up all the stuff

pastel imp
rotund egret
#

IJ makes it super easy

#

I think by default there's templates for webservers with reactjs even, fair bit of work pre-done

pastel imp
#

Zod if M0dii is like me, that was just an excuse to not leave his comfort zone lol

#

which is understandable I think

wind patio
#

Yeah well we use Java at work too

#

There was a bit of talk about kotlin

pastel imp
#

a wise man once said "it's not the plane that defines if you win a fight, it's the pilot"
translated to nerd language, "it's not the language that defines if it's good, it's the coder"

wind patio
#

But with the scale the project is it'd be pain in the ass to migrate

rotund egret
#

Not very wise, what if your plane is out of gas

pastel imp
#

👀

#

n- n- not what it meant

#

pretty sure it's speaking about a plane's age/model/guns/whatever

#

not fuel

#

what would fuel even be in a programming language?

wind patio
#

Fuel is my sanity

#

There aint much left

pastel imp
#

F.

#

welp time to go sleep, enough for today

#

adios and gn

wind patio
#

🫡

torn kite
#

im stuck, im trying to figure out how to rotate the damned display entity, I have this code right here https://paste.helpch.at/awuboroviy.java but whenever I rotate 90 degrees on the Y, it rotates unexpectedly and scales down for some reason. Using -270 gives the same angle but without the scaling issue. rotating on the z without other rotations seems to rotate on the y, backwards. And countless other issues.

worthy violet
#

Any forge devs here that can tell me if I can use mixin in my mod to edit other mods code like add an armor into my mod that modifies damage for spells of ars nouveau

rotund egret
#

While mixin can technically setup to edit a mods code in certain scenarios, that's not the ideal step to whatever you're likely attempting to do.

#

I would divert to the Spongepowered guild to the mixin channel so you can discuss more directly with support that will be familiar with your woes

#

Since they make the tool after all

crude cloud
#

oh that's nothing special, it can be done naturally, just, you can't mixin into mixin classes, because they aren't real classes, you'd need to mixin into the target or find some other workaround

rotund egret
#

Oh maybe that was it, it's been awhile. Ty for correction

pastel imp
#

yo @eager fern sorry for the ping, just curious, why do you have 8 shards on levely while only having less than 1k? It also looks like your website shows quite some incorrect stats lol

eager fern
#

I never released the new landing page

#

I couldn’t bother everything is under a new recode

pastel imp
#

why 8 shards?

#

lol

eager fern
#

It’s static

#

Random data

pastel imp
#

ah gotcha

split lintel
#

Hello

#

Can someone help meee?

oblique heath
#

no

#

we have no idea what you need help with so it's next to impossible for us to help 😔

wind patio
#

I would have helped you as of now and your issue would've been fixed, but since you asked without providing your problem, you won't be hearing from me again and your problem will never be fixed

remote goblet
coarse kelp
#

hi , does anyone know if its even possible to port a flans mod pack to 1.12.2 (the pack is 1.7.10)

naive ingot
#

Anyone know how to use NMS to update the title of a gui in 1.19.3? Or is there any guide for NMS?

foggy pond
#

how do you apply for the developer role again?

static zealot
#

you can't anymore. there used to be a channel for it

foggy pond
#

F

#

I remember trying to apply like 3-4 years ago

static zealot
#

cube said he was going to remake it but idk when that's going to happen

foggy pond
#

But getting rejected cause i was dum dum

#

So the role is unachievable now

static zealot
#

pretty much

pastel imp
#

f

obtuse gale
#

my message was deleted

#

Why?

static zealot
#

because you spammed multiple channels

obtuse gale
#

I didn't know which channel to ask for help on, sorry.

rotund egret
#

Channel topics will help

brittle leaf
#

still working on a prison core plugin, trying to create a decent economy is difficult and im currently headbanging cus of it :)

#

either some parts are too fast and easy, some parts are too slow and painful

#

😤

kind ravine
#

not related to PAPI but can anyone link me to an actually functional Bungeecord-Spigot bridge plugin?

distant sun
#

What plugin?

quaint isle
#

What's the best protocol for transfering large files (2-40GB) from a windows PC to a remote server using the Powershell command line?

cinder flare
#

SFTP

remote goblet
distant sun
rotund egret
#

I see you're a fan of maven

copper fossil
#

Hello

#

Anyone good at deluxe menu

wind patio
#

no im not

distant sun
#

"Who breaks the pipeline is failing the class" kek

quiet sierra
#

you might need to re-send the container data too

#

I wrote this, if you want to have a read

#

or just

naive ingot
# quiet sierra send a packet to re-open the same container ID but with a different title

Ok, ill read over this shortly. This is what i have currently i couldn't figure out another way to get the container ID.

        EntityPlayer ep = ((CraftPlayer)p).getHandle();
        int containerID = ep.nextContainerCounter();
        String message = "test";
        IChatBaseComponent chatTitle = IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + message + "\"}");
        PacketPlayOutOpenWindow packet = new PacketPlayOutOpenWindow(containerID, Containers.f, chatTitle);

        // Send the packet to the player
        ((CraftPlayer) p).getHandle().b.a(packet);```

However it doesn't actually update it.
#

I think the issue is with the container id as i do send the packet.

inner umbra
naive ingot
#

I get the handle the first time to get the Entity player and the second for the craft player.

#

Im not sure about the space.

inner umbra
#

Well. CraftPlayer extends EntityPlayer

naive ingot
#

Ah

brittle leaf
naive ingot
#

I changed that, the space didn't change anything. It makes it past that point, but im not sure how to confirm that the packet is sent.

brittle leaf
#

since your still getHandle()ing them

#

if your doing Player.send(packet) yhen yeah theyre being sent

naive ingot
#

Im doing EntityPlayer.b.a() as im using the unmapped version atm.

brittle leaf
#

imma assume thats the obfuscated version of PlayerEntity.connection.send() or whatever

naive ingot
#

Yeah

inner umbra
#

Doesn't spigot have TextComponent? Try using that

brittle leaf
#

found a resource on the spigot website for this

public void update(Player p, String title){
        EntityPlayer ep = ((CraftPlayer)p).getHandle();
        IChatBaseComponent invTitle = new ChatMessage(title);
        PacketPlayOutOpenWindow packet = new PacketPlayOutOpenWindow(ep.activeContainer.windowId, Containers.GENERIC_9X6, invTitle);
        ep.playerConnection.sendPacket(packet);      
        ep.updateInventory(ep.activeContainer);
    }
naive ingot
#

I think so, but the PacketPlayOutOpenWindo wants a IChatBaseComponent

brittle leaf
#

this is from jun 2020 so probably a bit different

naive ingot
#

Alright, let me try updating it how he does.

#

That still didnt work, I think im going to try to do it a different way as I dont have a whole lot of experience with NMS

inner umbra
#

Are you actually able to change the GUI name without closing? I thought the client doesn't allow that.

naive ingot
#

I feel like iv seen it done before im not too sure. But im making a Matching game so im trying to stay away from closing/opening as it resets the cursor.

#

I have a gui that has "gameslots" and i thought about updating the lore of those with the timer, however i dont want that to be super intensive updating items constantly

inner umbra
naive ingot
#

so id be ok to do it that way if its all Async?

prisma wave
#

Just because it doesn’t throw an exception doesn’t mean it’s safe

inner umbra
#

Anything inside the inventory is safe

prisma wave
#

Proof?

inner umbra
#

Custom inventories. Not chest or other world based containers

prisma wave
#

Yeah still, proof?

inner umbra
#

Prove other wise xD

#

I've been doing it for years

prisma wave
#

Modifying any mutable variable without locking or some other protection isn’t safe, other threads don’t always see the changes, there might be double modifications, writes might get ignored, etc

#

Just because it doesn’t throw an exception or immediately blow up, doesn’t mean it’s safe

#

In fact most concurrency issues are more insidious, they work 99% of the time but will blow up eventually and be near impossible to debug

#

besides you shouldn’t be doing that async anyway, it’s a fairly simple operation that doesn’t justify the multithreading overhead

inner umbra
#

In his case maybe 1 inventory with a few items. In my case hundreds of inventories, thousands of items Async is the way to go.

prisma wave
#

no it’s not

inner umbra
#

It is

prisma wave
#

if you need to update thousands of items per second that’s indicative of a larger problem

#

But inventory updates are not intensive operations

#

They don’t need to be asynchronous and by doing so you’re guaranteeing some problems later in the future

#

I’m curious how you think just saying “it is” is somehow invalidating all the objective reasoning I’ve given to why it’s a bad idea

distant sun
#

nice, nice

stone linden
#

Looks hot

lavish notch
#

When was the Namespace key introduced, was it 1.11?

#

More specifically, the stuff to do with resource pack sounds with the likes of packname:example.sound.name?

crude cloud
#

in minecraft? uh i think they were first introduced in like 1.6?

#

then in 1.7 you were able to use stuff like minecraft:stone in commands, instead of the numerical id 1

lavish notch
#

I am looking to get the full sound name and path from a string. Eg. CLICK -> random.click (in 1.8).

crude cloud
#

oh you mean on spigot lol, should've figured

lavish notch
#

I am able to get the Sound object from CLICK but cannot seem to get random.click which is what is needed to play a sound from a string.

crude cloud
#

I think it was added in 1.12, but it wasn't adopted everywhere it should have been, so there will be some places where you'll find a getKey() wasn't added until, like, 1.14 or whatever

#

Sound#getKey() was added in 1.16.4 💀

half harness
#

oh

#

ic

crude cloud
#

that's another thing

half harness
#

yeah

#

interesting

#

woah example 3
spigot backwards compatibility!!!

lavish notch
#

I am heavily sleep deprived btw

crude cloud
#

tbh, i would keep it that way

lavish notch
crude cloud
#

i mean keep the sounds as a string, that's.. basically what the client receives anyway, and if this is able to run on multiple versions then they should properly search for the sound they want to use for that version (available in the minecraft fandom ofc)

lavish notch
#

I am only provided the Sound name such as CLICK via a config.

crude cloud
#

right

#

so you're using the enum name rather than the sound key, right?

lavish notch
#

correct?

#

Sound.valueOf("CLICK") does successfully get the sound object, but there is no like getPath() method to retrieve random.click.

crude cloud
#

right

#

or you can tell your users to use the sound key rieYEP

lavish notch
crude cloud
#

uh i know there's a plugin with that name

#

you made that addon, right?

lavish notch
#

An addon, yes.

#

However, I am directly contributing to the source code of the plugin.

#

...and BRC has used the enum names since day 1 in the configs.

#

So we're having to consider "legacy" configs here.

crude cloud
#

yeeaa

#

good luck lol

crude cloud
#

There's probably some internal CraftBukkit function to map between the Bukkit Sound and the key

#

But, like, no idea

lavish notch
#

It's 1.8, what can you expect?

#

I'd honestly say fuck 'em but you can't exactly fuck paying users.

oblique heath
frail glade
#

Mood

oblique heath
#

no ban pls

#

or at least give dev role before ban

lavish notch
prisma wave
#

ivan is a very trustworthy individual

frail glade
#

I never said that

#

The voices in my head is a mood

#

But instead of my head it's people telling me to do stuff 😦

hard hare
#

Hey, why i cant see the request channels?

hard hare
eager fern
hard hare
eager fern
hard hare
eager fern
distant sun
lavish notch
distant sun
#

no, I mean, would be that much of a deal if you switch from bukkit names to sound keys?

remote goblet
#

i wanna know why they got services muted now

#

oh well that'd do it

remote goblet
#

me with nitro themes having those gifs ruined

quiet sierra
crude cloud
distant sun
#

Or csgo's fade

ocean quartz
#

Reminds me of this music video
https://www.youtube.com/watch?v=lyjgw3gczgM

Listen to the album here: https://OMAM.lnk.to/FEVERDREAMYD

►Download “Wild Roses"" here: https://OMAM.lnk.to/WildRosesYD

► Get tickets for the FEVER DREAM TOUR here: http://www.ofmonstersandmen.com/

►Exclusive Merch: https://www.ofmonstersandmenofficialmerch.com/

►Follow Of Monsters and Men Online
Instagram: https://www.instagram.com/ofmonst...

▶ Play video
remote goblet
#

remember that time where all of them were just ass

crude cloud
#

not really

#

i don't even remember what the one before this new one was already

remote goblet
#

they were all like this for a bit

rotund egret
#

I don't mind the bubblescape

naive ingot
#

Hey guys, so i figured out a way to get the gui title to update without closing/opening the gui. However the only issue now, which is the reason i did it this way, is the flash each time it updates.

This is my current code:

                    EntityPlayer ep = ((CraftPlayer)p).getHandle();
                    int containerID = ep.bU.j;
                    System.out.println(containerID + " container ID <-");
                    String message = "Time remaining: " + time + "s";
                    IChatBaseComponent chatTitle = IChatBaseComponent.ChatSerializer.a("{\"text\": \"" + message + "\"}");
                    PacketPlayOutOpenWindow packet = new PacketPlayOutOpenWindow(containerID, Containers.f, chatTitle);
                    // Send the packet to the player
                    ep.b.a(packet);
                    p.updateInventory();```
I tried doing it a tick later but it still looks the same.
frail glade
#

Ooo new backsplash startup for IJ?

#

Did 2023.1 just release?

crude cloud
#

yeah yesterday

frail glade
#

Ez

spring canopy
#

Hey, using PlayerMoveEvent seems like a lot of instances being called. I'm simply just checking if a hash exists but are there better ways? It's a cancel teleport if move thing. want to know if there are more resource friendly ways of doing it

brittle leaf
#

actually, you could change your teleport delay task to check the player's location, clone it and then on the next tick check it again to see if its the same

#

tho wouldnt the playermoveevemt only fire once oer tick?

#

per