#help-development

1 messages · Page 397 of 1

lost matrix
#

No cacherino needed

regal scaffold
#

wym

languid tartan
#

I need to make it so others cant see durability of armor (using CIT resource packs)

regal scaffold
#

I think I missexplained

#

In the serialized class. There's a field called public int secondsLeft for example

sterile token
regal scaffold
#

That gets changed every 20 ticks

lost matrix
#

Loading data from persistent into volatile storage is not caching.
Its simply changing the state of your data from "In rest" to "In use"

regal scaffold
#

oh

#

Then I used the wrong word

#

But the idea is still the same

lost matrix
#

Wait... wasnt there...

#

?datamanagement

regal scaffold
#

I can't save the data back into the PDC every time I interact with it. I need somewhere to keep it and be able to use it

lost matrix
#

I knew i had written something for this XD

regal scaffold
#

lol

sterile token
#

Lol

languid tartan
#

can someone help with this?

regal scaffold
#

I think it's what I need just reading the first 2 lines

sterile token
#

If no one answer just wait and Wait

languid tartan
#

ok

sterile token
#

This Is a community so no one get paíd for instant help

#

😂😂😂

#

I love those of type of people who expect instant help asking it un communities where none get paíd. Hahaha

#

Shity word translatof

#

Cellphone sucks

regal scaffold
#

Before I read the entire thing @lost matrix . I have a question, Is keeping the data "in memory" once per server restart a bad idea? Can the amount of memory usage be negligible? Should you update every X time?

I know these are probably answered but still

lost matrix
regal scaffold
#

Ok you answered all questions

#

ty

sterile token
#

Because he Will be updating constantly

regal scaffold
#

It's perfect

sterile token
#

🤔

regal scaffold
#

Let me implement that brb

sterile token
#

Isn't catching used when you need to constantly update a resource?

hazy parrot
#

Opposite

lost matrix
#

^

regal scaffold
#

I thought that too. I thought it was to keep stuff before having to send it over to a longer term storage

#

Guess not

sterile token
#

Yeah today we learnt something new

#

Also smth related: PDC what persistent storage type is it?

#

Shity cellphone 😡

lost matrix
#

File. Its stored inside NBT compounds of players, entities, chunks etc

sterile token
#

right

#

But those custom files qualified as FlatFile storage?

regal scaffold
#

Ummm, I can't remove an object from a list using the actual object

#

I need a different datatype

sterile token
#

Cant u save a Map?

regal scaffold
#

I need to storage a list of objects, nothing else

#

map has more parameteres

sterile token
#

Wait, what you need to save? And how you need to retrive them?

regal scaffold
#

a list of objects

#

By Object

pallid patio
#

:v

sterile token
# pallid patio :v

You musnt do that, you can be punished. If you dont want to your message get lost you must open a thread on this channel and wait patientlly until someone answer

#

3rd guy doing the same thing 😡 It doesnt join to my head why they doing that knowing they are in a community meaning that no one will instant help them

regal scaffold
#

Would a Set be good?

sinful kiln
#

Does someone here got time right now and has already contributed to spigot at least once?
I've got a couple questions about my NMS patch, it has some weird formatting artifacts because of how the code was written and I was told to do it like that by another contributor but it kind of looks unwanted.
Would be great if this would be possible to do in a vc (solved)

sterile token
#

Because in a Map you retrive each object via a key

#

1m i will provide you something

regal scaffold
#

I know

#

But map is a key -> value format

#

I just need to store values

sterile token
#

right

regal scaffold
#

I mean

sterile token
#

You can just use a List or Set

regal scaffold
#

I guess I can do Map<MyChest,MyChest>

sterile token
#

Set is an un ordered list while List is ordered

regal scaffold
#

No, because I can't remove the item by Object, only by index

regal scaffold
kind hatch
#

Just use a List if you want to store a bunch of values. If you need the values to be unique, use a Set.

regal scaffold
#

I can't get the values from either of those using the Object itself

sterile token
#

List allow to remove entry by the object

hazy parrot
sterile token
hazy parrot
#

You are probably talking about map

regal scaffold
#

Omg

#

mthfkers

#

I just

#

Goksi ur a genius

sterile token
#

Bruh

#

Dont be rude

regal scaffold
#

I got confused

sterile token
#

we just trying to help

#

oh ok

regal scaffold
#

??? relax man I was complementing

sterile token
#

sorry

#

i thoug tu were swearing us

#

u confused to much that my brains get brokened

#

haha

#

But i recommend reading about the different collections and what re they diff - They are really important when coding. Obf not being rude

#

Ik i saved that but didnt know where

hard socket
#

I am trying to change other items lore when I click an item but its not working

#
            ItemMeta mobItemMeta = mobItem.getItemMeta();
            List<String> lore = mobItemMeta.getLore();
            if (lore.get(0).equalsIgnoreCase(ChatColor.YELLOW + "Click to Select")) {
                lore.set(0, ChatColor.GREEN + "Selected!");
                for (int i = 0; i < mobs.size(); i++) {
                    if (e.getCurrentItem().getType() != Material.LEGACY_MONSTER_EGG) {
                        continue;
                    }
                    if (i != e.getSlot()) {
                        ItemStack itemStack = inventory.getStorageContents()[i];
                        ItemMeta itemMeta = itemStack.getItemMeta();
                        List<String> lore1 = itemMeta.getLore();
                        lore1.set(0, ChatColor.YELLOW + "Click to Select");
                        itemStack.setItemMeta(itemMeta);
                    }
                }
            }
            mobItemMeta.setLore(lore);
            mobItem.setItemMeta(mobItemMeta);```
undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

hard socket
#

well if there was errors I will say I got errors

sterile token
#

oh ok

hard socket
#

its not replacing the itemmeta

hard socket
#

yes

sterile token
#

ok

#

okay i understand what you doing

#

You want to make an updateable button, so when you cliked it out, its lore get updated

hard socket
#

no

lost matrix
#
  1. You should not change your GUI icons like that
  2. You should never identify items by their name or lore
lost matrix
#

This gives you a good base line for GUIs

sterile token
#

In case of gui i would use an api

#

In case you dont want to code a lot and not wondering to mess a lot

hard socket
#

I made a great system I just want to fix this

sterile token
#

right

#

remember this: never compare things by name or its lore

lost matrix
#

Alright. Then print out some debug messages. Does your equalsIgnoreCase return true? etc

hard socket
#

yes

sterile token
#

shouldnt be a == ?

lost matrix
hard socket
#

no

crisp arch
#

is there a way to stop a player from using a tipped arrow as ammo

sterile token
lost matrix
tall dragon
#

you cant stop the client from showing the charging animation tho iirc

lost matrix
#

getConsumable() and check for your custom item

tall dragon
#

but u can stop the actual shot

crisp arch
lost matrix
crisp arch
#

thats a lot of arrows

#

how would i go about getting the next free arrow item in the player's inventory

regal scaffold
#

Smile Im having some issues adapting your data guide to be able to use PDCs

#

I probably need to change the way I'm doing some stuff

crisp arch
#

oh wait im stupid

#

its just arrow, spectral_arrow, and tipped_arrow

sterile token
#

discord bugs?

hard socket
#

ok I know the issue now

#

the material I am checking is wrong so its skipping all items

#

I will try something

tardy delta
#

me waiting for gson to add JsonElement#getInteger(String) instead of that stupid JsonElement#get(String)#getAsInteger()

crisp arch
#

shouldnt you be comparing inventory.getItem(i) ?

hard socket
#

yes yes

#

I am bad

crisp arch
#

npnp

regal scaffold
#

If I want to store block data inside a PDC for the same block. Like, I want to store Block

tardy delta
#

discord bugs huh?

regal scaffold
#

Is Block what I should store or which of the other variants

#

BlockData?

tardy delta
#

you sure you dont want Location?

regal scaffold
#

I have location

#

How can I convert that to a block

#

Without making it resource intensive

tardy delta
#

getBlock ig

regal scaffold
#

oh I'm an idiot

tardy delta
#

it just looks it up in the world it stores

regal scaffold
#

lol

#

So then I can cast that to whatever block I need

tall dragon
tardy delta
#

huh discord is bugging

pseudo hazel
#

wow epic spam guys

regal scaffold
#

Discord is over gg

crisp arch
#

discord bugs

tardy delta
#

me who thought people were serious

sterile token
#

Lol

tall dragon
#

😂

tardy delta
#

lmao

sterile token
#

discord is bug

#

I reinstall it and same issue

#

😡

tardy delta
#

💀

sterile token
#

lol weird things appearing on my texts

#

i will open a support ticket

weak kayak
#

i think those are called "rehaksiouhne"

#

i think that's french

tardy delta
#

remove those french from your system: sudo rm -fr /

weak kayak
#

sudo rm -rf /fr*nch

#

nasty fr*nchmen smh

crisp arch
#

would inventory.getSlot(0).setAmount(2) work or would it just set the amount to a local copy of the itemstack?

#
  1. dont consume the custom tipped arrow
  2. get another item that works as a replacement arrow
  3. remove 1 item????
tardy delta
#

is there a @Contract(mutates="this")

#

mutates it

crisp arch
#

dont think so....?

#

ok ill just try it and see what happens

crisp arch
tardy delta
#

remember kids how ugly your code looks when you wrap nms stuff

#

dunno if handle is nms but whatever

smoky oak
#

Why does this sql statement work for my main account's uuid but spits out an error for my secondary account?

CREATE TABLE IF NOT EXISTS uuid ( vaultNumber INT NOT NULL, inventory BLOB NOT NULL, PRIMARY KEY (vaultNumber), CONSTRAINT numberConstraint UNIQUE (vaultNumber) );

with the error being SQL error or missing database (unrecognized token: "uuid") and the stacktrace pointing to statement.executeUpdate(statement)

#

and with uuid being replaced by a uuid without dashes

kind hatch
#

For one, there isn’t any UUIDs being stored in that table. Secondly, if there were, they would have the dashes.

smoky oak
#

mate

crimson scarab
#
        if (pointer % 10 == 0) {
            this.cancel();
            new HomingArrowRunnable(projectile, positions).runTaskTimer(JavaPlugin.getPlugin(HomingArrows.class), 0L, 0L);
        }

what is wrong with this

smoky oak
#

i said replaced with

#
return "CREATE TABLE IF NOT EXISTS "+uuid+" ( " +
                "vaultNumber INT NOT NULL, " +
                "inventory BLOB NOT NULL, " +
                "PRIMARY KEY (vaultNumber), " +
                "CONSTRAINT numberConstraint UNIQUE (vaultNumber) "+
                ");";

and it gives as argument String uuid

#

which is player.getuuid().toString().replaceAll("-","")

#

what im asking is why does it work for one uuid but not the other

tardy delta
#

imma just going to wrap a JsonObject ig lol, tired of this crap

#

why dont they have getJsonObject

#

then saying its just a cast under the hood

kind hatch
tawdry echo
#

^

#

just one table lol

smoky oak
#

still, tables shouldnt suddenly not work because of a different combination of 0-9 a-f characters

sterile token
#

😂

#

SQL == not easy scalability

worldly ingot
#

?

kind hatch
#

?? That's not true

sterile token
#

But so far i dont use sql i dont care

worldly ingot
#

SQL can handle like millions of tables and records

#

I mean a table per user is stupid, but it could handle it lol

sterile token
ivory sleet
#

SQL is made to be scalable tho?

worldly ingot
#

I think you're just using SQL wrong 😛

sterile token
#

I dont use sql, its cringe

#

hahaha

worldly ingot
#

That adds up

sterile token
#

having to link table and those shits 🤢

ivory sleet
#

Verano you’re trolly sometimes

sterile token
ivory sleet
#

I dont remember that

sterile token
#

because someone said that mongo was shit compared with sql

kind hatch
smoky oak
#

well thats not it i found the issue

ivory sleet
#

Na mongo isnt shit, niether is sql

smoky oak
#

uuid of 2nd account starts with 6

#

database names must start with a-z

regal scaffold
#

@lost matrix How would you implement your data guide with something like a Object.

Like the part where ChunkUnloadEvent() how do I even get the data so I can then save it?

sterile token
ivory sleet
#

But on the agreeing side, a lot of cutting edge tech does take space from sql

sterile token
#

because them im always the trolling

weak kayak
#

i use yaml as my database 🧠🧠🧠🧠🧠🧠🧠🧠🧠🧠🧠🧠🧠

ivory sleet
#

“Database” huh

real fable
#

After reading your message, tried for hours, without any success...
Can you help me going trough that ?

regal scaffold
#

Data management thread

ivory sleet
#

For instance iirc even discord switched from sql to nosql to deal with scalability, (casandra or we its called)

weak kayak
kind hatch
#

Didn't discord originally use mongo?

tardy delta
#

believe so

sterile token
weak kayak
#

i put an abnormal amount of emojis to indicate that i'm being sarcastic which is what i usually do

tall dragon
ivory sleet
#

Idk exactlt

tall dragon
#

iirc

ivory sleet
#

Ye

#

Sth like that

sterile token
#

dont they store messages as hashes?

crisp arch
# tall dragon iirc

yep older messages are stored to a slower but larger db while newer messages are stored in a sort of "cache db"

crisp arch
#

how would that work

kind hatch
#

Hashes are one way, so if anything they would be compressed.

#

But even then, probably not

sterile token
#

I mean maybe not hashes, but they must use a format

#

because they store every single message

#

Obf they must be using a compression protocol because they must be having millons of new messages per day

ivory sleet
#

Ye

#

That’s natural

quaint mantle
#

In my server I’ve arena and I’m using Pvpmanager for pvp combat plugin. So whenever people fight in arena they just run to the arena spawn in between and get safer and none can hit them anymore. Can you tell me something that prevents this?
I mean that on arena we have a spawn and outside spawn you can fight, but the people just run in the spawn in between the fight, I’ve seen other servers having something that pushes the players away until they’re out of combat

ivory sleet
real fable
quaint mantle
tardy delta
#

gson slowly drivin me crazy

quaint mantle
ivory sleet
#

Olivo suggests using his own plugin basically psst

chrome beacon
#

It's not my plugin

tardy delta
#

meanwhile smth js/kotlin: json.get("count")?.getAsInteger() || 1

ivory sleet
#

Well, you’re a contributor am I not wrong?

chrome beacon
#

True

quaint mantle
chrome beacon
#

Yes it can do that

ivory sleet
quaint mantle
chrome beacon
#

Yes

quaint mantle
#

In order to make it do that?

chrome beacon
#

Yeah

quaint mantle
chrome beacon
#

Follow the documentation

tardy delta
#

might aswell make a custom json parser

chrome beacon
#

Join our discord if you get stuck on anything

ivory sleet
#

Jackson also

#

Tho very enterprisy

quaint mantle
tardy delta
#

i looked at jackson and i thought "wtf"

eternal oxide
#

?paste

undone axleBOT
tawdry echo
#

someone have link to guide about basic tablist, player tags and scoreboards

tardy delta
# ivory sleet Moshi is pretty nice

uhh im looking for smth without reflections (cuz i should write too much typeadapters otherwise), just need to manually get elements from a json file

ivory sleet
#

Yeah jackson, no?

#

Obv u have gson

#

But you sounded pretty annoyed by it

tardy delta
#

ye im using gson rn, what kinda bothers me is that it doesnt have JsonObject#getInteger(String) stuff and whatever

#

and getOrDefault

#

lemme look into jackson again

#

cant be that bad

ivory sleet
#

Its obscenely obese

#

Cuz enterprise

#

Alternatively

tardy delta
#

oh i remember

ivory sleet
#

Write your own adapter pattern fourteen

#

Yes, the design pattern

tardy delta
#

thought about writing a wrapper for a jsonelement but i would have to modify the jsonparser too then

ivory sleet
#

Adapter/bridge

#

No?

#

Just wrap everything?

#

Don’t need to re-implement the parsing logic

#

Just straight delegation

chrome beacon
#

Tbh I'd just use configurate to make things easier

tardy delta
ivory sleet
#

I mean the source of wrapping would just come from a single class?

#

But ye configurate isnt bad either

tardy delta
#

whats that

chrome beacon
#

Best config lib

ivory sleet
#

A configuration lib, which basically acts like a bridge upon config formats like hocon, yaml and json

tardy delta
#

imma just write a wrapper, kinda curious about that configurate thing tho

ivory sleet
#

It might be exposed in paper api sooner or later iirc btw

chrome beacon
#

Fourteen is working with Minestom atm

ivory sleet
#

Oh

tardy delta
#

implementing the recipe loading system rn

fallen snow
#

Hi guys, I can't seem to figure out but how do I convert a Base64 string into the URL object so I can use it in the setSkin procedure of PlayerTextures?

chrome beacon
#

I really need to bookmark mfnalexs head guide

fallen snow
#

Thanks c:

echo basalt
ivory sleet
#

Ye shadow corrected that,

sterile token
#

Dont you think that the message event from WebSocket, should have a proepr name?

hard socket
#

This method returns true but when I leave the game and rejoin it returns false

undone axleBOT
sterile token
#

Please we need full code causing the issue to try helping

hard socket
#

and no erros

tardy delta
#

dont expose collections please

#

and utils shouldnt be instantiated

sterile token
#

Also your map should be inside a Handler

hard socket
hard socket
#

its not that my problem is returning true and false

tawdry echo
#

someone have link to guide about basic tablist, player tags and scoreboard

tardy delta
#

dont compare uuids by == too, use equals

#

and uhh ensure that your map lookup doesnt return null

sterile token
#

Utils method musnt be initialized

#

Utilities should be generally statics method

#

In your case that shouldnt be an utility class

#

You should built a proper class:

  1. Can be named like SpawnerHandler
  2. You mustnt expose collections directly
tardy delta
#

am i the only one who codes like this lol?

sterile token
#

I have a 30' screen and do the same

rough drift
#

I open 97 intelli tabs

#

and alt+tab my way

hard socket
tardy delta
#

97 ij instances?

sterile token
rough drift
sterile token
#

not even open more than 1 instance

tardy delta
#

ah

#

i have a bunch of tabs open too

rough drift
#

hold and drag this

#

it will create a new tab

tardy delta
#

yah

rough drift
#

then you can do splitting on those

sterile token
#

My intellij when i tell to open another instance, just close the current instance and put it on the projects screen to select which, i really hate that

rough drift
#

so in total I have roughly ~150 classes open from org.bukkit classes to other java classes

sterile token
#

because you can open 1 project

#

i sometime want to base on other projects and it a mess closing and re opening the diff projects

crimson scarab
#
        pathfindingResult.thenAcceptAsync(result -> {

            if (result.successful() && !projectile.isDead()) {
                //player.sendBlockChange(BukkitMapper.toLocation(position), Material.RED_STAINED_GLASS_PANE.createBlockData());
                result.getPath().getPositions().forEach(position -> {
                    positions.add(position);
                });
            }
        });

how would i wait for this to finish

tardy delta
#

positions::add kek

tardy delta
crimson scarab
#

how would i go about returning positions

tardy delta
#

wdym returning positions?

crimson scarab
#
    public static ArrayList<PathPosition> pathfind(Entity projectile, Entity target) {
        ArrayList<PathPosition> positions = new ArrayList<>();

        Pathfinder reusablePathfinder = PatheticMapper.newPathfinder(PathingRuleSet.createAsyncRuleSet()
                .withStrategy(DirectPathfinderStrategy.class)
                .withAllowingDiagonal(true)
                .withAllowingFailFast(true)
                .withAllowingFallback(true)
                .withLoadingChunks(true));


        PathPosition start = BukkitMapper.toPathPosition(projectile.getLocation());

        PathPosition targetPOS = BukkitMapper.toPathPosition(target.getBoundingBox().getMax().toLocation(target.getWorld()));

        CompletionStage<PathfinderResult> pathfindingResult = reusablePathfinder.findPath(start, targetPOS); // This is the actual pathfinding.

        // This is just a simple way to display the pathfinding result.
        pathfindingResult.thenAcceptAsync(result -> {

            if (result.successful() && !projectile.isDead()) {
                //player.sendBlockChange(BukkitMapper.toLocation(position), Material.RED_STAINED_GLASS_PANE.createBlockData());
                result.getPath().getPositions().forEach(position -> {
                    positions.add(position);
                });
            }
        });
        Bukkit.broadcastMessage(String.valueOf(positions.size()));
        return positions;

    }
#

im using this function to generate a path and then return it

#

but it is returning with nothing

#

i tried with async too

hazy parrot
#

you are adding to list async

#

your function will return before anything is added to list

tardy delta
#

ah just block that future

hazy parrot
#

no point in making it async then

tardy delta
#

no clue why that lib returns a future

#

java when

echo basalt
#

just make 2 methods

#

and one calls the other

tardy delta
#

i could really use some c++ template specialisation here

ivory sleet
#

Oh yes

#

I feel u

#

We got method overloading on the plus side 😀

regal scaffold
#

Why is my ChunkUnloadEvent getting spam called

#
    @EventHandler
    public void onChunkUnload(ChunkUnloadEvent event) {
        if (!PDCUtils.has(event.getChunk(), NBTTags.ULTRA_CHEST_LOCATION_KEY, DataType.LOCATION)) return;
        System.out.println("Unloading chest data" + event.getChunk().getX() + " " + event.getChunk().getZ());
        CompletableFuture.runAsync(() -> {
            UltraChest chest = plugin.getChestManager().getChest(event.getChunk());
            plugin.getChestManager().unloadChestData(chest);
        });
    }
}
#

Spammed as in, the correct amount of locations but 10 times each

river oracle
regal scaffold
#

no it's wrong

#

if (!PDCUtils.has(event.getChunk(), NBTTags.ULTRA_CHEST_LOCATION_KEY, DataType.LOCATION)) return;

In this case, only allows it to be called 8 times

#

Cause there's 8 chests

river oracle
#

ChunkUnload is only ever called on chunk unload internally so idk what to say to ypu

regal scaffold
#

But it's getting called 8 times x10 times

river oracle
#

Your PDC utils may not be working as intended

#

Or there may be another bug in your code

regal scaffold
tardy delta
#

visited a few tech companies and they all use c# and angular 💀

regal scaffold
#

The util is also working correctly cause the locations are valid

ivory sleet
#

Angular is nice and C#

#

Now real question, did they use vim?

tardy delta
#

i want a nullsafe operator (?) thing in java

regal scaffold
#

Could it be

tardy delta
#

i believe so

regal scaffold
#

The hologram?

#

Making the chunk reload itslef

ivory sleet
#

WE HAVE OPTIONAL - Java

tardy delta
#

im not gonna create a new optional object every time

#

that crap is useless

#

do it altleast good like in rust then

ivory sleet
#

Objects.requireNonNullOrElse

tardy delta
#

smh

ivory sleet
#

Or even bettee

#

requireNonNullOrElseGet

regal scaffold
#

It is the hologram lol

#

Yikes

tardy delta
#

even js has const i = something() || defaultVal

#

but ye lets not talk about js 🥹

ivory sleet
#

TypeScript has sth similar also

#

But ye

#

Java and null is bad

#

And they dont wanna enhance null handling dev sidedly

#

Sadly

tardy delta
#

the classic billion dollar mistake

ivory sleet
#

Ye

river oracle
#

Idk why null is such a huge deal doesn't empty values basically end up with similar logic flow anyways

ivory sleet
#

The point is higher ordered null design

#

Aka, you can manage it at type level also

tardy delta
#

i look at js impl and i get typescript 🤔

ivory sleet
#

And when you can manage it at type level, adding additional operators for it becomes very nice

river oracle
#

I've never gotten the empty value thing it's just null at the end of the day basically. Though there are some situations where a default value makes sense

ivory sleet
#

Ye

tardy delta
#

ah man i really want to use c++ now

river oracle
#

I mean at the end of the day you can ensure null safety in your own code by not using the null operator and using exceptions or empty defaults instead

ivory sleet
#

Yes ofc

tardy delta
#

then one component fails to deliver work and your whole null safety is broken

#

assuming you expected that component to never return null

ivory sleet
#

Yeah

chrome beacon
#

Now send the code where the error is

ivory sleet
#

Let’s assume you have a big module, which never in theory never has to involve null from the inside, why should null be tangible there?

In Java we would have to worry about the output from that module being null because there’s no fundamental language semantic that provides reassurance. And when we write that module we would have to care whether incoming objects could be null, since yet again there’s no semantic that can assertively prevent that type of behaviour.

regal scaffold
#

Ummmm stoping the server/ saving the world does not unload the chunks

undone axleBOT
tardy delta
#

i was thinking about that, it just moves the problem

#

ever heard of getters?

#

also no need to check newFile(config.yml).exists(), saveDef will detect that and silently fail if so

river oracle
ivory sleet
#

Its not the fact that null exists, its how the language provide the developer with tools to deal with the concern of null

tardy delta
#

meanwhile rust:

if let Some(result) = takeOptional() {
  println!("{:#}", result);
}```forgot about the format lol
#

:=

#

nah

ivory sleet
#

And while null safe operators and types is far from necessary so is much else, you don’t need statically, strongly typed semantics either to write a program.

river oracle
#

This makes me wonder how bad java optional is on performance a while back i saw its about 3x slower

ivory sleet
#

Yes its abysmal

river oracle
#

I would actually use it if they made it usable

ivory sleet
#

But so is much else in Java, Streams being another concern

tardy delta
#

average js dev: js const sum = (a, b) => a + b; sum(1); // NaN

ivory sleet
#

Yeah well a lot of their new stuff is gonna use optional

#

Like StructuredTaskScope

#

iirc

tardy delta
#

isnt that the new future thing?

river oracle
#

So are they just giving the middle finger yo performance

ivory sleet
#

Well, they consider it negligible

#

Especially since ZGC is probably gonna be able to work in synergy with concurrency stuffed

#

Assuming u use zgc

river oracle
#

I mean eventually it adds up in big projects even if originally it's just nanoseconds

ivory sleet
#

Yea

tardy delta
#

new gc?

ivory sleet
#

Na its not new, but its just targeting a different audience

river oracle
#

Lots of great new java stuff incoming. I'm excited for the future

ivory sleet
#

Yeaaa

tardy delta
#

memorysegments 😍

river oracle
#

Unfortunately if I ever get a job using java I'll be coding legacy java 1 systems probably lol

ivory sleet
#

Lol ye

#

Well, java 21 lts hype

river oracle
#

Companies still find upgrades expensive

#

Lol

tardy delta
#

me who is stuck at java 17 💀

river oracle
#

Java 8 will never die

river oracle
tardy delta
#

college is using java 16 cuz 17 is not stable enough 💀

#

idk if it sucks, atleast it doesnt suck to write plugins with

chrome beacon
#

Meanwhile Java 4 bool at school:

river oracle
#

Lol

tardy delta
#

lol

ivory sleet
#

I want to say kotl…

tardy delta
#

dont

river oracle
tardy delta
#

kotlin lambdas cmon man

ivory sleet
#
  • the solution to every…
#

Lmao

#

What u have against them

tardy delta
#

that it looks cursed

#

also the reason i stopped doing rust

ivory sleet
#

Oh just like java’s non-sealed keyword

weak kayak
tardy delta
#

didnt know that existed till i started looking through jdk internals 💀

hybrid spoke
tardy delta
#

xactly

#

exactly

river oracle
tardy delta
#

cuz plugin.queue is null?

weak kayak
ivory sleet
#

Oh yeah the language is overbloated as fuck that will make you indecisive as ever, but dw, its supposed to replace java with its broken interoperability

tardy delta
#

i heard we gotta do android development in the "best language for that"

#

man i dont want kotlin

chrome beacon
#

You're creating the instances in the wrong order

tardy delta
weak kayak
#

kotlin and kryptonite both start with k
koincidence????

ivory sleet
#

oh god

#

We have krypton also

tardy delta
#

whas that

tardy delta
#

example

ivory sleet
#

Krypton is a chemical element, but also a kotlin mc serv impl

tardy delta
#

heehee

chrome beacon
#

You're creating the QueueEvents instance before QueueSetup

#

So QueueSetup is null

weak kayak
tardy delta
#

those are just access specifiers

tardy delta
#

probably just a single scalar

ivory sleet
#

Even const??

weak kayak
#

still keywords innit

tardy delta
#

const isnt even used 🥹

rough drift
#

yeah

#

there are also some other keywords claimed

ivory sleet
weak kayak
#

waiting for goto to be implemented

ivory sleet
#

Fr

#

Idk maybe

tardy delta
ivory sleet
#

But by nature of how java’s structured concurrency api will work

weak kayak
#

new java stuff is so complicated smh i'm sticking to java 1

rough drift
#

nah I am sticking to OAK

tardy delta
#

doesnt that look much better?

ivory sleet
#

I mean I like fluent naming

#

So

#

.asArray()

#

fullJson.get("values").asArray()

#

(:

tardy delta
#

oh ye

delicate lynx
#

very beautiful

tardy delta
#

dunno why google did it that way

ivory sleet
#

Opinionated tho but ya

tardy delta
#

lets see how much of my code breaks when i change this param

weak kayak
#

fullJson.getObjectMap().asJavaMap().get("urmom").get().builderThingIG().array().build() 🧠

rough drift
worldly ingot
rough drift
tardy delta
#

mfw?

weak kayak
#

my facebook wine

tardy delta
#

mfn is not here

worldly ingot
#

My face when

rough drift
ivory sleet
ivory sleet
rough drift
#

bleeding edge building

#

I like it

ivory sleet
#

Lol right

weak kayak
regal scaffold
#

Hey, I'm having issues when writing/reading data from PDC but it's weird

weak kayak
#

i am a bit of a software dev myself 😎

weak kayak
tardy delta
#

depression

regal scaffold
#

I just typed that sentence and had a lightbulb moment

#

I figured it out lol

tardy delta
#

daily brainfuck, thank me later

ivory sleet
tardy delta
#

the day chatgpt isnt free anymore, some people are going to die

tardy delta
#

im a bit of a git history destroyer myself

weak kayak
#

only thing i destroy is the taco bell toilet

tardy delta
#

disgusting

remote swallow
#

americans

#

smh

#

fuck you and your about me

weak kayak
tardy delta
#

bri'ish

remote swallow
#

i say my t's

weak kayak
#

did you get got by mine

#

if so, good
my genius is doing its work

tardy delta
#

bri'ish be like: har'uh pot'ah

weak kayak
#

imagine bri'ish

#

or american

regal scaffold
#

Ok no the issue is still there

#

So

#
 PDCUtils.set(ultraChest.getLocation().getChunk(), NBTTags.ULTRA_CHEST_LOCATION_KEY, DataType.LOCATION, ultraChest.getLocation());
 PDCUtils.set((Chest) ultraChest.getLocation().getBlock().getState(), NBTTags.ULTRA_CHEST_STORAGE, UltraChestUtils.getDataType(), ultraChest);
tardy delta
#

have you thought about you being the issue?

#

||/j||

weak kayak
regal scaffold
#

When I save the data to the PDC. I checked that it saves the correct data and it does

#

But when I load it, it doesn't save the changes I made to it

#

So it resets everything

weak kayak
#

that's odd af

regal scaffold
tardy delta
#

bruh wrapping json stuff was a bad decision

regal scaffold
#

What could it be

tardy delta
#

atleast i have been able to load 545 files

#

minecraft is having like nearly 1000 recipes bruh

#

im already at 300ms for loading them all

versed canyon
#

Just noticed something odd. I'm upgrading a 1.16.5 world to 1.19.3. I did --forceUpgrade to 1.17.2, then 1.18.2, but when I did it on 1.19.3 it didn't work. It said "Counting chunks" like the other did, but did nothing. 1.19.2 worked fine. Did they leave that out of the latest version or something?

regal scaffold
#

When I save the data to the PDC. I checked that it saves the correct data and it does
But when I load it, it doesn't save the changes I made to it
So it resets everything

https://paste.md-5.net/egifulotah.makefile

tardy delta
#

after vs before

remote swallow
#

you need ==:org.bukkit.Location iirc

delicate lynx
#

yeah that's not a valid location saved in yml

remote swallow
#

save a loaction there and see what it looks like

remote swallow
#

did you remove the ==: org.bukkit.Location

#

world, pitch, yaw

remote swallow
regal scaffold
#

it should work right?

#

I have so many checks to make sure it's actually getting saved

tardy delta
#

the debugger is your best friend

rotund ravine
#

How are you saving

regal scaffold
#
PDCUtils.set((Chest) ultraChest.getLocation().getBlock().getState(), NBTTags.ULTRA_CHEST_STORAGE, UltraChestUtils.getDataType(), ultraChest);
#

And I checked if there was anything going on with the lib and no. It literally just calls the normal way

regal scaffold
remote swallow
#

one sec

rotund ravine
#

States are weird

#

That’s not a valid location for yml

delicate lynx
#

this is a valid location:

test:
  ==: org.bukkit.Location
  world: world
  x: 0.0
  y: 73.0
  z: 0.0
  pitch: 0.0
  yaw: 0.0
remote swallow
#

yeah

rotund ravine
#

Yes

remote swallow
#

it says how to deserialise it

delicate lynx
#

it tells java what type of object you saved it as

regal scaffold
#

Oh so indeed, somehow

PDCUtils.set((Chest) ultraChest.getLocation().getBlock().getState(), NBTTags.ULTRA_CHEST_STORAGE, UltraChestUtils.getDataType(), ultraChest);

Is not saving the updated version. How is that possible

rotund ravine
delicate lynx
#

snakeyaml yeah

#

couldn't remember the name

rotund ravine
#

@regal scaffold idk the set method

regal scaffold
#

"ultraChest" has the correct data

rotund ravine
#

Does it need a state save?

regal scaffold
#

No

#
    public static <T, Z> void set(@Nonnull PersistentDataHolder holder, @Nonnull NamespacedKey key, @Nonnull PersistentDataType<T, Z> type, @Nonnull Z value) {
        holder.getPersistentDataContainer().set(key, type, value);
    }
#

It just calls the same thing as without it

#

And it works for other stuff

tardy delta
#

damn it actually worked

rotund ravine
#

@regal scaffold most likely needs a state save

regal scaffold
#

Well, only reason I did getState() is cause you can't cast Block to Chest

#

Has to be state

#

What even is a state save

weak meteor
#

?paste

undone axleBOT
regal scaffold
#

Like that makes sense, I guess i'm saving the PDC to a very slightly different Chest state therefore it's not the same one

rotund ravine
#

Just updating the block to represent the new state

#

It’s probably just .update on the state that has the new pdc. Maybe even update(true)

regal scaffold
#

update after the save?

rotund ravine
#

Hm? Yeha after setting smth in the pdc

tardy delta
#

dealing with mojang stuff is always fun

rotund ravine
#

Call update on the state that has the changed pdc

#

Like a itemmeta

regal scaffold
#

yeah

#

Doing it test

#

But

#

I'm 99% sure

#

you're right

tardy delta
#

circular references are always fun

#

none is even loaded 🥹

regal scaffold
#

UR INSANE JAN

#

THANKS

rotund ravine
#

Ikr am so smrt

regal scaffold
#

Ok buddy

river oracle
tardy delta
#

yes

#

implementing crafting

#

looks like a fun thing to do

river oracle
#

sounds "fun"

flint elk
#

How can I add servers to by bungeecord config while the proxy is running?

#

best with a spigot plugin

sullen marlin
#

cant with only a spigot plugin

#

proxy has createServerInfo or whatever

flint elk
#

Channeling ofc

#

Okay! Thanks I will check it

crystal flax
regal scaffold
#

Is declaring a

Map<Material, Integer> items = ultraChest.getItems();

inside an eventHandler a bigger waste of memory than just doing

ultraChest.getItems() #returns Map<Material, Integer>

?

brisk estuary
#
protected boolean takeCharge(@Nonnull Location l) {
        if (!isChargeable()) return true;
        final int charge = getCharge(l);
        if (charge < energyPerTick) return false;
        else setCharge(l, charge - energyPerTick);
        return true;
}

protected boolean takeCharge(@Nonnull Location l) {

        if (isChargeable()) {
            int charge = getCharge(l);

            if (charge < getEnergyConsumption()) {
                return false;
            }

            setCharge(l, charge - getEnergyConsumption());
            return true;
        } else {
            return true;
        }
}```
#

Which one looks better for you guys?

#

both do the same thing

regal scaffold
sullen marlin
regal scaffold
#

Oh, alright thanks

crystal flax
tardy delta
#

what symbol

#

var?

zealous osprey
#

Is there a method to get the ticks since the start of the server? Or rather any number which increments every tick?
Cause Server#getFullTime is only giving me 3...

tardy delta
#

ManagementFactory.getRuntimeMXBean().getUptime()

crystal flax
tardy delta
#

for the amount of millis that the server runs

tardy delta
sullen marlin
#

World#getGameTime

#

oh

weak meteor
crystal flax
weak meteor
#

Im in a cellphone actually

#

And well, i just miss the auto-xml of Minecraft Development plugin

tardy delta
#

well the var keyword was introduced in java 10

#

as google says

crystal flax
#

ok

hazy parrot
#

parse it as yaml

tardy delta
#

cmon man dont make everything public

sullen marlin
#

someone wanna test something real quick for me?

regal scaffold
#

Sure I will get a virus for you

sullen marlin
#

does Bukkit.getEntity(uuid) return players?

rough drift
#

yes

sullen marlin
#

you sure

rough drift
#

Pretty sure

#

It's how I get players when parsing UUIDs

native gale
#

In what version the library thing was added?

rough drift
#

1.17.1 iirc

native gale
#

Sorry for interrupting

native gale
rough drift
#

check the patch notes though

sullen marlin
#

it does

#

cookie for you

crystal flax
native gale
twin venture
#

for some reason the random item is not working perffectly , i did allot of tesitng :

i set up a lootbox for testing, like this:

Diamond Sword: 13 chance
Netherite Helmet: 20 chance
Netherite Chestplate: 21 chance
Netherite Leggings: 22 chance
Netherite Boots: 23 chance
Bedrock: 1 chance

these equals 100 chances, so easy to calcute the chance to percentage.

i opened this lootbox 100 times, and i got:

Netherite Boots: 76
Diamond Sword: 12
Netherite Helmet: 12

this is the code i used :

https://paste.md-5.net/oqasisiruv.java

onyx fjord
#

whats the most optimal way to check if java executable is ran by root?

#

doesnt need to be multi platform just linux

native gale
wet breach
onyx fjord
#

cant that be fooled?

wet breach
#

but you might not always get to see root processes though

wet breach
twin venture
native gale
#

Give me a sec

onyx fjord
twin venture
#

check the

#

"item-chance":

#

this is a diffrent one from what i sent in ym first message , diffrent items but the bug is still there .

wet breach
#

pgrep -u {USERNAME} {processName}

//get java process id's
jps -v
//check pid's to get user
ps -u -p (process id)
onyx fjord
#

oh i tried getting pid

#

i get random numbers

#

even if done as root

#

oh wait

onyx fjord
wet breach
#

you would just use pgrep

regal scaffold
#

Does no one do clickable holograms anymore

wet breach
#

to get the id

onyx fjord
#

cant i do that in java code?

regal scaffold
#

There's literally 1 plugin that has it

remote swallow
#

no one realises they can

#

if they do its a custom plugin

regal scaffold
#

I mean

#

Only trash CMI has it

#

Annoying

#

I was hoping some others did too

wet breach
#

ps -eo pid,euser | grep java

#

this will give you the pid and user of all java processes

#

however as I mentioned, on some distro's you can't see root processes unless you are root

#

or have permissions that allow you to see root processes anyways

onyx fjord
#

oo it werks

#

i used whoami tho

#

not sure if its safe

#

but tbh do i need to care?

#

the process requires root anyway

#

im just making a safe check

wet breach
#

a process shouldn't require root to work generally

#

but its your system do what you will with it, wouldn't recommend allowing java root access at all

onyx fjord
#

its adding a iptables rule

#

so yea

wet breach
#

why do that from java when a script will do it

onyx fjord
#

itll be pretty expanded

#

and built as a native image hopefully if i figure out how

wet breach
#

native image?

onyx fjord
#

graalvm

wet breach
#

that isn't native

#

that is just another VM similar to that of the JVM

onyx fjord
crystal flax
onyx fjord
#

it reduces memory footprint

native gale
fervent panther
#

Loading yaml

native gale
#

It's in python but I think you'll understand the general idea, I hope

wet breach
onyx fjord
#

making it in bash will be a mess ¯_(ツ)_/¯

wet breach
#

only because iptable rule scripts in that directory will be executed first before any java process will be allowed to do anything

wet breach
#

and not sure how it would be a mess to execute iptable rules

onyx fjord
#

thats just one part of the program

#

im making a general security program

wet breach
#

ok, doesn't mean it has to be strictly java, you could use java to manage the installing of the iptable rule scripts in the appropriate place 🙂

onyx fjord
#

that catches bots and stuff

#

im using what i know the best

#

can u even make web servers in bash?

#

not sure

wet breach
#

Technically could but it wouldn't be optimal

native gale
wet breach
#

since bash scripts are single threaded by nature

onyx fjord
#

yeah and itll have a web panel

#

i mean i cooulddd split it

#

but is it worth it?

#

maybe if i was better at bash

wet breach
#

even if you were it wouldn't be worth it

#

bash has no specific optimizations for it

onyx fjord
#

thanks for the advice tho

#

ill figure out a way to avoid requiring root

wet breach
#

it is a scripting language where you instead make use of what the system has to do what you are wanting

twin venture
native gale
#

You can adapt it how you wish

#

As they say, give a poor man a fishing rod instead of a fish

wet breach
#

however, its also wise to ensure you implement protections where if it is reading ip addresses it doesn't just add addresses of say the host itself

#

or some others

wet breach
native gale
twin venture
#

i suppose something like this?

native gale
#

Looks about right

twin venture
#

gonna test it

native gale
#

Idk, test it first

twin venture
#

oh my god

#

looks promosing

wet breach
twin venture
#

it didn't give me the same item!

onyx fjord
#

I refuse the concept of failure

#

U should too

native gale
#

You refuse the concept of failure

#

I refuse the concept of success

#

We're not the same

wet breach
#

you can refuse the concept if you want lol, but I mean it isn't quite a success either if you make something that doesn't do what you want

tardy delta
#

clean code ¯_(ツ)_/¯

onyx fjord
native gale
# twin venture

The only tiny issue I have with your code is using int acc instead of double acc and < instead of <=

#

You put yourself into ultra-tiny but still possible chance of getting null as result

twin venture
#

yeb i already fixed it

#

still testing ..

native gale
#

I'd also suggest not returning null, but the last item in the list instead

twin venture
#

alr

native gale
#

This algorithm treats "chances" here as relations

#

If one item has a chance of 2 and another chance of 1, that would mean that the first one is twice more likely to appear than the second one

#

They not necessarily have to add up to 100

twin venture
#

oh i see

tardy delta
#

bruh mojang are you serious, mixing items with a random array

#

how tf am i gonna implement that in here, it expects json objects

twin venture
#

ok now its broken daaaam

tardy delta
#

goddammit mojang

twin venture
#

the funny thing is there are items in the lootbox :

rare rover
#

Is there an event for whenever you click ("damage") a packet entity?

#

I'm aware its possible but i can't find anything

twin venture
#

the next double is getting over 100

#

Good luck

native gale
misty creek
#

ok i need help, I am using essentialsx, luckperms, and luckperms chat and luckpermschat over writes the nickname option in essentials and i dont know how to change it

twin venture
hazy parrot
#

I think there are methods which have bukkit task as consumer

#

So just have condition in your lambda, if met, cancel()

twin venture
#

testing ..

#

it does work , but something feels off

misty creek
#

ill venmo someone $5 if u can tell me how to fix my nickname issue

onyx fjord
#

@misty creek what is it

misty creek
kind hatch
misty creek
#

ok ill try posting it there thanks

crystal flax
quaint tapir
#

raid_token.addEnchantment(Enchantment.SILK_TOUCH,1); I want to implement silk touch on an iron ingot but it creates an error
how can I make my iron ingot silk touch

remote swallow
#

#addEnchantment(Enchantment.ENCHANT, level, true)

hazy parrot
#

iirc they removed it to protect user privacy

#

not sure if they added any replacement for current name

crystal flax
#

Ok

crimson mulch
#

Does anyone've listed all the method that changed between 1.8 to 1.19 ?

remote swallow
#

doubt it, theres so many changes all over the game and spigotapi

echo basalt
#

Just look at changelogs individually

crimson mulch
echo basalt
#

no :)

crimson mulch
#

Fun 🙂

dry yacht
#

Bruh, PacketPlayInItemName was a PacketPlayInCustomPayload before 1.13? I thought that one was there since literally forever. Well, I guess not.

crimson mulch
#

lol

dry yacht
crimson mulch
dry yacht
#

Uhm, what exactly do you want to make version independent?

crimson mulch
#

wdym

dry yacht
#

Well, you want to build your own API which operates on every version, if I understood that correctly. What exactly is the responsibility of that API's implementation?

crimson mulch
#

responsibility ?

dry yacht
#

Okay, let's just forget that conversation, xDD

crimson mulch
#

My english is pretty bad

sullen coyote
#

I drag my jar file into my plugins folder in filezilla and it is not creating a folder for it

remote swallow
#

reload filezilla, restart the server and do you have saveDefaultConfig or mkdirs for getDataFolder

analog thicket
#

Any easy way to remove 1 item from inventory named something instead of looping the entire inv?

#

(its the players held item)

rough ibex
dry yacht
#

Wow, since when does the mysql connector take up so much space? That sucks, I really wanted to shade it into my plugin.

analog thicket
#

But yeah that would work too

rough ibex
#

Yep

analog thicket
#
                if (!openingCrate.contains(player)) {
                    ItemStack itemStack = player.getItemInHand();
                    if(itemStack == null || itemStack.getItemMeta() == null ) {
                        player.sendMessage(prefix + Chat.colored(Casino.configYML.getString("casino.noKey-msg").replace("%key%", key)));
                        e.setCancelled(true);
                        player.sendMessage("test2");
                        return;
                    } else {
                        e.setCancelled(true);
                        player.sendMessage(prefix + Chat.colored(Casino.configYML.getString("casino.noKey-msg").replace("%key%", key)));
                        player.sendMessage("test");
                    }

How would i check the else if? it needs to only send if the item is named "&c&lENDER KEY?

#

i could probs just add a single if instead

rough ibex
#

Check the else if?

#

I'm only seeing an else

analog thicket
#

yeah thats where i need to check the item name.

#

i forgot to add the if

#

oh i fixed it navm

#

nvm

analog thicket
rough ibex
#

Yeah, you can't set 0

#

It would be better to just do Inventory.removeItem(player.getItemInHand()), I think

analog thicket
#

Yeah

#

i need to check if null

#

using that method

wet breach
wet breach
#

oh outdated stuff got it

analog thicket
#

exactly

#

lol

wet breach
#

then it isn't going to help to use the javadocs that are linked

analog thicket
#

Well most of them still work.

#

Just some that dont which always have a workaround

wet breach
#

true they may still work, but they may not work exactly

analog thicket
wet breach
#

updated versions don't have quite the same implementation is all I am saying

#

so what may be expected to happen, may not be quite the same in older versions

#

or happen exactly the same way

analog thicket
#

Yeah the worst thing is using item data

#

you cant used BLACK_STAINED_GLASS_PANE fx

#

you need to use normal STAINED_GLASS_PANE

#

then do some byte stuff

wet breach
#

damage values as they are called

fervent panther
#

Hi I don't like asking twice but I'm afraid the thread I created a bit ago might've gotten buried so if anybody knows anything about snakeyaml I'd really appreciate if you'd take a look :)

quaint mantle
#

when making a hologram system can armor stands have multiple lines?

rough ibex
#

the nametags?

quaint mantle
#

yes

rough ibex
#

Try it and see.

#

I think so.

wet breach
quaint tapir
#

can I increase the reach of a zombie
like can I make a zombie that has 8 block attack range

rough ibex
#

You could select all zombies within an 8 block radius of the player and then apply damage.

icy beacon
quaint mantle
#

does Bukkit.getPlayer(); only work for players online on the server or does it also work for players that may not be online?

wet breach
quaint mantle
#

does it return null if the player is offline?

rough ibex
#
Returns:
    a player if one was found, null otherwise```
#

So, I would say it should

charred blaze
#

no? opponent is supposed to execute commands normally after i leave

wet breach
#

but what I explained is a way where you could obtain either or

#

if you first start with OfflinePlayer object, you can check if that player is online, if so, cast to a Player object, if not you have a OfflinePlayer object still to work with

quaint mantle
#

i need the player's username.

#

and i have the player's uuid.

#

how would i go about doing this?

#

do i have to make a separate api call to the mojang api itself?

#

the OfflinePlayer object seems to return "null" when i use the .getName() member function.

#

and "null" as in null as a string.

sterile axle
#

OfflinePlayer#getPlayerProfile will give you a PlayerProfile

If they're online, then you're done. You can getName() from there.

If they're offline, then you need to call PlayerProfile#update which returns a CompletableFuture<PlayerProfile>

You wait for it to complete with something like thenAccept or thenAcceptAsync which will get called back when the API call is finished getting their data from Mojang, at which point you can then call getName() on the updated profile

quaint mantle
#
public static String getPlayerUsername (String uuid) throws Exception {
        OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(uuid);
        PlayerProfile playerProfile = offlinePlayer.getPlayerProfile();

        if (offlinePlayer.isOnline()) {
            return playerProfile.getName();
        }

        CompletableFuture<PlayerProfile> completableFuture = playerProfile.update();

        playerProfile = completableFuture.get();
        
        return playerProfile.getName();
    }```
quaint mantle
rotund ravine
#

Will block the thread, but sure

quaint mantle
#

i know that