#help-development

1 messages Β· Page 126 of 1

rocky pond
#

.

low condor
quaint mantle
#

Hi. Im trying to send HTTPS POST request to SSL domain api (https://api.example.com/v1/status) but I always getting this exception:

IOException. Message: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

I found that this exception thrown because its unable to find SSL certificate. (https://stackoverflow.com/a/36427118/13728122). I have no idea how to integrate SSL POST request to https endpoints without exporting my own certificate and moving this file to directory (I event dont have access to this directory)

Is there is a way to Send HTTPS POST request in spigot?

Also im pretty new to java, java libs and mc modding so dont hurt me

torpid sapphire
#

is there a way to create inventories with custom sizes? id love a 5x9 inventory

quaint mantle
#

im not sure tho

torpid sapphire
#

any idea how?

dusk flicker
quaint mantle
dusk flicker
#

google the error

#

I found a solution by just searching "SunCertPathBuilderException"

quaint mantle
# dusk flicker google the error

stackoverflow and other resources says to put .cer file somewhere in system directory, but i dont have access to it. I can only uplaod plugins and nothing more

dusk flicker
#

what website are you trying to go to?

snow lava
quaint mantle
#

I thiunk i found an issue...

 https://localhost/api/server/linkaccount.php

smart thoughts haunt me, but I'm faster

localhost cant be https

onyx fjord
#

?paste

undone axleBOT
onyx fjord
#

https://paste.md-5.net/odonagayej.cs

This is what first method returns
[EJailPlus] [STDOUT] 51 {5c08880c-ed9f-34fd-9dbf-528b104c33cb=51}

This is what the end one returns
[18:22:44 INFO]: {}

Any ideas why? first one is ran on join and second on leave

#

and the error

quiet ice
quiet ice
quaint mantle
#

I know

quiet ice
#

Best show us the full context (which means showing us the full error message and giving us information on how you built it)

quaint mantle
quaint mantle
#

It does not work

quiet ice
quaint mantle
#

In the minecraft chat, it always says i killed myself

quiet ice
quaint mantle
quiet ice
#

When compiling it there should be an error message, what is it?

quaint mantle
#

no errors

onyx fjord
quiet ice
#

Impossible, eclipse compiler and eclipse both use the same underlying logic

quaint mantle
quiet ice
#

Did you accidentally "delete" the error?

#

(Yes that is legal in eclipse world)

#

If not you might be running an outdated jar

quaint mantle
#

nah its fresh i just downloaded it

agile anvil
#

@quaint mantle EntityDamageByEntityEvent#getDamager represents the damager and not the damaged entity

quiet ice
agile anvil
#

So here the damager should be a Player, and the damaged entity (getEntity) an EnderCrystal

quaint mantle
#

k

quaint mantle
#

is it uptodate

quiet ice
#

Rename the method and see if it does anything

quaint mantle
#

rename the method, as in?

agile anvil
quiet ice
#

If nothing happens something is not getting updated

quiet ice
quaint mantle
#

doesn't show any errors

#

in eclipse

quaint mantle
quiet ice
#

Aren't those explosions?

quaint mantle
#

yes

quiet ice
#

If you server still breaks on onPlayerDeath, you know that either

  • a) Eclipse compiler is using outdated cache (whyever that would happen)
  • b) You are not actually running the compiler (or in layman's terms: Not exporting it)
  • c) You are uploading the wrong jar
  • d) You are not uploading a jar
  • e) You didn't restart the server
  • f) Your panel is fucked
  • g) You are reading the outdated logs
quiet ice
quaint mantle
#

Why does player.getUniqueId() is not matching namemc uuid? And which is true? (I have Bungee -> Spigot connection.)

tardy delta
#

if you get a value from that map, you can modify the internal state of that object yes

#
Map<Integer, Kingdom> map = /**/;
Kingdom k = map.get(6);
k.setName("boooo");

this will modify the name yes

quaint mantle
tardy delta
#

java works on references, so calling Map::get returns a reference to the object you're expecting

#

well except for primitives and some other stuff then

quaint mantle
quiet ice
tardy delta
#

c++ brr

#

pointers

quaint mantle
#

yea the save thing is fucked up

quiet ice
quiet ice
#

Delete all your jars, then repeat the process everywhere

tardy delta
#

havent begun learning those but they look pain

quiet ice
#

Should nothing happen some cache blew up

quaint mantle
#

anyone gonna help me :(

quaint mantle
quiet ice
quiet ice
quaint mantle
#

Someone please help me

quiet ice
#

As I said, you improperly exported and/or uploaded the jar

eternal oxide
#

if you failed a build Eclipse can show all kinds of errors. goto Project menu and select clean

onyx fjord
#

i dont understand

quiet ice
quiet ice
#

Hence I assume that it is 100% a user error rather whan an application error

tardy delta
#

how to implement 'features'

quiet ice
quaint mantle
#

my settings might have something to do with it

quiet ice
tardy delta
#

mye ik i was talking about references and values, not about generic stuff

quaint mantle
#

Someone PLEASE help

quiet ice
tardy delta
#

Map<int, double> when

quiet ice
quiet ice
tardy delta
#

me thinking what valhalla is

onyx fjord
tardy delta
#

game ig

quaint mantle
quiet ice
quiet ice
quaint mantle
#

EntityDamageByEntityEvent?

quiet ice
#

20, 21 vs 25 + 26

quiet ice
#

tndbnhe

tardy delta
#

hehe

#

geol's secret language

#

😭

onyx fjord
#

i need to slap myself in face

#

what is the diff between hashmap and map in human language

tardy delta
#

uh what? Map<K, V> is an interface where HashMap is the implementation

gray merlin
#

Is there a way to get the item that is currently picked up by a player?

balmy valve
#

Is there any way to get the player who triggered the 'InventoryClickEvent'

gray merlin
#

As in, grabbed with the mouse

balmy valve
#

thats not a method

tardy delta
balmy valve
crisp steeple
gray merlin
#

Yep. Just got the solution: player#getItemOnCursor

crisp steeple
#

ok

quaint mantle
#

aloha everyone
I wonder, is there a way to check that the plugin name I picked isn't already in use by someone else?

tall dragon
#

eh. i usuallly just google it

#

if you dont find it ur prolly fine

quaint mantle
#

yes I did too
But I am sure there are plugins that are called different than their name on the spigot or bukkit websites

#

Oh I guess I could try spiget

tall dragon
#

sure. but generally plugins are named something like they will do

#

and generally people dont use 2 of the same kind of plugins

#

like. who's gonna use 2 crate plugins

quaint mantle
#

hehe yes, ok I couldn't find one thing, neither Google nor Spiget, so I guess I am safe

#

thanks for the help

shadow night
#

Spiget? whats that? did I miss something?

tall dragon
#

its just an api where you can request data about resources

quaint mantle
#

Can anyone help me?

tardy delta
#

?ask

undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

quaint mantle
swift dew
#

can i run a plugin that i coded with deobfuscated nms (original-spigot is the file name) on a server?

#

if yes how

visual tide
#

it first has to be reobfuscated

#

you could probably do that with specialsource cli

quiet plover
#

19:34:20 ERROR]: Could not load 'plugins\LazurRace.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: Cannot find main class `lazurrace.lazurrace.LazurRace'

in the plugin.yml there's the perfect path to the main class

iron glade
#

Show the path to your main class

#

in your IDE

quiet plover
#

i can't post images

iron glade
#

post to imgur and send link

stray halo
#

Hello, how do you make a EntitySnowball invisible with the obfuscated methods?

chrome beacon
#

Why would you use the obfuscated methods πŸ™ƒ

swift dew
chrome beacon
#

Do you want maximum pain while coding

swift dew
#

is there any tutorial or sth

stray halo
swift dew
chrome beacon
#

Use the special source plugin for maven

swift dew
#

then what config?>

stray halo
#

so i have to use the remapped-mojang jar right?

swift dew
#

for maven?

#

mojang?

#

there packets are weird

#

you cant do for original spigot?

chrome beacon
#

Their packets aren't weird

swift dew
chrome beacon
#

You should start learning it then. It's very useful to have the same names in Forge, Fabric and Spigot

swift dew
#

oh wait fr?

stray halo
#

@chrome beacon so what is the code now?
I used to do EntitySnowball e = ((CraftSnowball)ball).getHandle();

swift dew
#

i mean in a hacked client i was making it was the same with things like c04 behind so yg

#

yh

#

aight ig ty

chrome beacon
stray halo
chrome beacon
#

Yeah

stray halo
#

Caused by: java.lang.NoSuchMethodError: 'net.minecraft.world.entity.projectile.Snowball org.bukkit.craftbukkit.v1_18_R2.entity.CraftSnowball.getHandle()'

#

with the code net.minecraft.world.entity.projectile.Snowball e = ((CraftSnowball)ball).getHandle();

chrome beacon
#

Looks like you didn't use maven like the link I sent

stray halo
#

uhh no, i was trying to use jars first cause i had it set up like this

#

but if i have to i can change

iron glade
undone axleBOT
junior flicker
#

it's not possible to set an inventory's title's font in spigot right? since it doesn't use components

willow pike
#

Hey everyone! I'm a beginner in spigot development and I have run into a problem. Can anyone help me?

hasty prawn
#

?ask

undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

hasty prawn
junior flicker
#

well ofc the resource pack would be needed, but without components I don't see how you could specify which font to use

willow pike
#

@EventHandler
public void onRightClick(PlayerInteractEvent e) {

    Player p = e.getPlayer();
    Action action = e.getAction();
    ItemStack item = p.getItemInHand();

    if ((action == Action.RIGHT_CLICK_AIR || action == Action.RIGHT_CLICK_BLOCK) && item.getType()==Material.STICK) {

        if (item == null) {return;}

        if (p.isSneaking()){

            if (item.getItemMeta().hasCustomModelData() && item.getItemMeta().getCustomModelData()==000001){

                getLogger().info("You shift right clicked with a wand");
            }
            else {
                getLogger().info("You shift right with a stick");
            }
        }
        else {

            if (item.getItemMeta().hasCustomModelData() && item.getItemMeta().getCustomModelData()==000001){

                getLogger().info("You right clicked with a wand");
            }
            else {
                getLogger().info("You right with a stick");
            }
        }
    }
}

My problem is that if I (shift) right click with a stick with custom model data of 000001 it will say that I (shift) right clicked with a stick. Can anyone help me?

stray halo
#

how can i get craftbukkit shaded jar from buildtools

eternal night
#

craftbukkit ?

worldly ingot
#

(a) You probably just shouldn't. CraftBukkit shouldn't be used under any circumstance. (b) The server .jar isn't shaded anymore. It's a bootstrap jar

eternal night
#

(c) look up the countless examples on how to developer against the server source code for spigot online (e.g. the recent update posts on the forums)

worldly ingot
#

this too

agile anvil
willow pike
worldly ingot
#

So you can depend on the Spigot server instead

#

You just have to run BuildTools, then you can depend on it via Maven or Gradle

stray halo
worldly ingot
#

Yes

stray halo
pseudo hazel
#

Is there a way to modify an item's display name that allows me to use the translated name based on the clients language

#

like for example if I want to make a item name that is its normal name but crossed out or in a different color etc

#

but still have it work with the client translation of an item

#

please ping me when replying

willow widget
#

anoyne using maven knows how to do that thing when writting version: @version@ in plugin.yml uses maven's project version automatically?

eternal night
#

${version}

willow widget
#

ty β™₯

stray halo
#

Unresolved dependency: 'org.spigotmc:spigot-api:jar:1.18.2-R0.1-SNAPSHOT'

eternal night
#

can you share your pom.xml/build.gradle.kts

stray halo
eternal night
#

the api is not the remapped one

#

if you want to depend on the server

#

you'd depend only on spigot not spigot-api

stray halo
#

so i change the dependency?

eternal night
#

Well concerning you have the reobf stuff

#

I'd imagine you wanna code against server internals

#

So yea

eternal night
#

No you didn't

#

That link has the correct dependency

#

You had the API

#

Alex blog post has the server

stray halo
#

uhh ok im getting more confused. i just need the nms methods lol

#

y is it so hard to get

eternal night
#

Yes literally just remove the -api

#

From the dependency

stray halo
#

this pops up now Unresolved dependency: 'org.spigotmc:spigot:jar:1.18.2-R0.1-SNAPSHOT'

eternal night
#

You did run buildtools ye ?

#

With the remapped flag

stray halo
#

uhhh is it the same if i run it on the desktop?

eternal night
#

Like by double clicking ?

#

No

stray halo
#

from the console

#

but like a random folder?

eternal night
#

Well how did you run it

#

That doesn't matter

#

Like where you run it

stray halo
#

i run it first with the remapped and then without, does it overwrite?

eternal night
#

No

stray halo
#

wait im rerunning it now

#

java -jar BuildTools.jar --rev 1.18.2 --remapped

#

right?

eternal night
#

Yus

tranquil stump
#

how can I make like an area where mobs spawn but if there are already mobs there it doesn't just overflow the area?

stray halo
#

how can i make a snowball invisible with nms

#

i used to do it in like 1.15/1.16 but the same method doesn't work anymore

ebon ether
#
@EventHandler
    public void onBunnyKill(EntityDeathEvent e) {

        Entity entity = e.getEntity();
        Player killer = e.getEntity().getKiller();

    }```

I have this. But the `Entity entity = e.getEntity();` is giving an error saying I provided a LivingEntity, and it is required an Entity. I am confused how I am providing a living entity?
#

If I am getting the entity that died, how is that living?

tranquil stump
#

LivingEntity entity = e.getEntity();

ebon ether
#

I supposed I could name it Entity bunny = ...

#

But its dead.

#

its not living lol

tranquil stump
#

e.getEntity() returns a LivingEntity

#

Β―_(ツ)_/Β―

ebon ether
#

So how can I get the shit thats dead

#

its the EntityDeathEvent

#

how can I get the entity that the player killed

#

I guess I need to know

tranquil stump
#

LivingEntity is like that specific entity I'm pretty sure

#

entity is just like the type of mob

#

even tho its dead, you can still use the LivingEntity I guess

pseudo hazel
#

an Entity is a boat, a LivingEntity is a bunny

tranquil stump
#

ah

#

ye so you can have a LivingEntity even if it's dead, cuz like it can be living

ebon ether
pseudo hazel
#

yes

ebon ether
#

Like the player killed it.

#

Okay

#

awesome thanks for clearing that up

tranquil stump
#

LivingEntity is just an entity that can be alive

#

like animals

ebon ether
#

ok

tranquil stump
#

I think

ebon ether
#

πŸ™

pseudo hazel
#

correct

ebon ether
#

@pseudo hazel how can I check if player killed a bunny

#

dont know how to do that

#

if (entity == ???) {..}

pseudo hazel
#

are you in the EntityDeathEvent?

ebon ether
#

yes

#

        @EventHandler
    public void onBunnyKill(EntityDeathEvent e) {

        LivingEntity entity = e.getEntity();
        Player killer = e.getEntity().getKiller();
        if (entity == ) {
            killer.sendMessage("You killed a bunny!");
        }

    }

    }```
pseudo hazel
#

try to check the cause of death first

fervent gate
#

https://paste.md-5.net/atuwexorag.cs

This is some code for a mob I'm working on but line 70 and 77 are just not doing anything. The variable sh is fine when I print it but it doesn't change the nametag.

fervent gate
ebon ether
#
if (entity.isDead() && entity.getKiller() != null && killer instanceof Player) {
            killer.sendMessage("You killed a bunny!");
        }```
fervent gate
#

without doing the Player killer = ... line because that will throw an error when the cause is not a player

ebon ether
#

is that too much? 😭

delicate lynx
#

why are you checking if the mob is dead on the death event

ebon ether
#

dont know bro. why I asked if it was too much

fervent gate
#

That should not be necessary but the two others seem fine to me

ebon ether
#

ok

#

so I have:

#
public void onBunnyKill(EntityDeathEvent e) {
        if (entity.getKiller() != null && killer instanceof Player) {
            LivingEntity entity = e.getEntity();
            Player killer = e.getEntity().getKiller();
        }

    }```
fervent gate
#

yea and then you can do killer.sendMessage("blabla");

ebon ether
#

ya i needa check if its a bunny

#

rabbit

#

same shit

delicate lynx
#

killer is used before it's defined

fervent gate
#

right, you'll need to type event.getEntity also

#

or e.getEntity

ebon ether
#
if (e.getEntity().getKiller() != null && e.getEntity().getKiller() instanceof Player) {
            LivingEntity entity = e.getEntity();
            Player killer = e.getEntity().getKiller();
        }```
fervent gate
#

think that's right

#

you can change the last e.getEntity by entity since you defined it

ebon ether
#

ok

#

and how can I check if entity that is killed is a bunny?

#

Is it just name equals "Bunny"

#

?

delicate lynx
#

no

#

instanceof

ebon ether
#

or howver they are named in game

fervent gate
ebon ether
#

awesomeee thank you guys

fervent gate
#

after LivingEntity ...

fervent gate
delicate lynx
#

no

#

you have a lot going on there, can't tell why 2 lines don't work

ebon ether
#

    public void onBunnyKill(EntityDeathEvent e) {
        if (e.getEntity().getKiller() != null && e.getEntity().getKiller() instanceof Player) {
            LivingEntity entity = e.getEntity();
            Player killer = e.getEntity().getKiller();
            if (entity instanceof Rabbit) {
                killer.sendMessage("You killed a bunny!");
            }

        }```
#

so thats what I got

fervent gate
ebon ether
#

ig I can, yeah.

#

good luck with your plugin man πŸ™‚

boreal python
#

how do I check for a chest's custom name?

    @EventHandler
    public void onInventoryOpenEvent(InventoryOpenEvent event){
        if (event.getInventory().getHolder() instanceof Chest chest){
            getServer().sendMessage(Component.text("Chest Opened"));
            event.getPlayer().sendMessage(chest.customName());
            if (chest.customName() == null){
                getServer().sendMessage(Component.text("Chest Opened NO NAME"));
            }
            if (CHEST NAME = RED TEAM???){
                getServer().sendMessage(Component.text("Chest Opened RED"));
            }
      }
}```

For example, I just want to execute that little statement at the bottom if that chest's name is "Red Team"
Any way I can do that?
delicate lynx
#

InventoryView has a getTitle() method

chrome beacon
#

Don't use inventory names for detecting your inventory

torpid sapphire
#

im trying to make a chest gui background with a custom font, but i have no clue how to set the font thats used for the inventory name

#

any ideas?

quiet ice
#

Not sure if that even is possible

torpid sapphire
#

i thought thats how people did it

quiet ice
#

did what?

torpid sapphire
#

thats the only good resource i found on this topic

#

and thats how they do it aparrently

shut field
#

Deserialize List

quiet ice
torpid sapphire
#

thats what im asking

quiet ice
#

Ah you got caught up there

#

The default.json font is actively being overwritten

torpid sapphire
#

but they also say you can use custom fonts

quiet ice
#

That is actually existing characters are replaced

#

You need to use paper for that

#

Or NMS

junior flicker
#

it's not possible to set an inventory's title's font in spigot right? since it doesn't use components
is there some sort of other method for it? is it possible using bungee chat components?

quiet ice
#

But paper has support for that built-in

torpid sapphire
#

well im using paper on the server anyway so thats fine

#

ill check that out, thanks

quiet ice
#

You'd need to use the aftermentioned Compontent with font (however you set it) thoug

junior flicker
#

aight so no supporting this and going paper only, got you

vocal cloud
#

lmfao

onyx fjord
#

you cancel the event right?

quiet ice
onyx fjord
#

like when player breaks block

onyx fjord
quiet ice
# onyx fjord why?

The adventure-plattform-api is only meant to retrieve audiences, but not meant to set inventory titles and that stuff

swift dew
#

r u using spigot?

quartz solstice
#

How do I check if a value exists in a persistent data container?

eternal night
#

.has

quiet ice
#

PlayerBlockBreak event most likely

#

If that does not work, PlayerCanBreakBlock (or similar) should do the trick

quartz solstice
quiet ice
#

You don't seem to cancel it

quartz solstice
#

or something else?

eternal night
#

Key and data type

quartz solstice
#

ok

quiet ice
#

Then you are using a hack client

#

You are not using a vanilla client

#

?jd-s

undone axleBOT
quiet ice
#

I know that in modern bukkit that cancelling it suffices

#

However in older versions it might be a different story, but that is something I have little knowledge of

onyx fjord
#

is /say nms command or bukkit

#

nvm

#

its nms

pseudo hazel
tender shard
#

I'd to it for 50€ πŸ˜› but

pseudo hazel
#

no

tender shard
#

?services

undone axleBOT
pseudo hazel
#

I am the dev xD

#

I want to know how to implement this feature in my plugin

tender shard
#

then please ask a proper question

pseudo hazel
#

how can I improve my question?

quiet ice
tender shard
#

erm welll

pseudo hazel
tender shard
#

you could have asked "How can I make ItemStacks have names that get translated by the client"

quiet ice
#

It involves downloading all assets and then picking the right one based on the player's reported locale

quaint mantle
#

As far as I know it's possible with Paper's adventure

#

No idea how to do it with a Spigot server πŸ€·πŸ»β€β™‚οΈ

quiet ice
#

?jd-s the translation key should be supplied by spigot

undone axleBOT
quiet ice
pseudo hazel
#

I cant put those on item names though

quiet ice
#

You can

quaint mantle
pseudo hazel
#

how?

quaint mantle
#

Instead of using ItemMeta#setDisplayName use ItemMeta#displayName

#

But, remember this is Spigot help, not papers πŸ˜›

pseudo hazel
#

okay

#

well yeah I dont have that method haha

#

im trying to make it work using spigot

quaint mantle
#

Then you are not using Paper

pseudo hazel
#

I know

quaint mantle
pseudo hazel
#

I never said I used paper

quiet ice
#

And making it work with spigot is not possible unless you want to use NMS

pseudo hazel
#

okay

#

that's too bad

quaint mantle
#

If it's possible with Spigot without needing to use adventure, I would be really interested to know how to achieve this 🀨

quiet ice
#

Spigot's API does not expose any meaningful way to use components

#

Can you use #setDisplayName with GSON components?

#

If so, that'd be it

#

But I never tried it myself, and honestly I doubt so

pseudo hazel
#

you mean like {"translate":"item.minecraft.diamond_sword"}?

quaint mantle
#

Well, there's this item. This banner that pillagers use

quiet ice
quaint mantle
#

In reality it's using a translatable component as a displayname

pseudo hazel
#

well yes

#

like I can give myself an item with a translated string just using vanilla /give commands

#

but I cant really put that into the item by code afaik

quiet ice
#

The question is whether spigot allows that

pseudo hazel
#

idk either, but its not set unless you do it yourself

#

just like the displayname and lore

quaint mantle
pseudo hazel
#

persistentdatacontainer is nbt but it says I can only change keys from my plugin

#

and not the default minecraft ones

quaint mantle
#

I was that guy who serialized objects in a String then rebuilt it in the class constructor 😒
It's not really memory efficient. Don't ever try it.

pseudo hazel
#

lmao

#

I mean everything is working great except for item name translations, its the last part I need before its done haha

#

but if its not a thing then ill just not do that

#

it just seemed like something easily doable

quiet ice
pseudo hazel
#

lmao

willow widget
dusk flicker
#

I have

quiet ice
dusk flicker
#

but honestly unless you have a ton of stuff; its not useful

#

lol

willow widget
dusk flicker
#

oh yeah its confusing lmao

willow widget
willow widget
dusk flicker
#

if I recall

#

the @plugin and other ones are mostly put on top of your main class

#

if I recall

quiet ice
dusk flicker
#

Oh here

#

Look at the example usage

willow widget
#

thanks xd

#

when does it generate the stuff tho? it just makes up the plugin.yml by itself or what?

dusk flicker
#

on plugin start iirc

willow widget
#

so basically I won't see the outcome? xd

cobalt tinsel
#

guys
i need help
someone is here? i'll dm u cuz i cant send images here

quiet ice
#

@pseudo hazel Try to invoke ItemMeta#setDisplayName with json components (which can be created through adventure for example), it probably works

#

The only issue is getting the translation key, but that should be possible

cobalt tinsel
#

geol

#

do u mind if i dm u?

quiet ice
#

On what grounds do you believe that that is permitted or at the very least acceptable?

cobalt tinsel
#

wdym

#

i just can't send images on here

#

of the error

quiet ice
#

Then you are unworthy.

pseudo hazel
#

you need to verify yourself

#

anyways I will try what you said

cobalt tinsel
#

oh

quiet ice
#

Unless the error stops when you add the -noverify flag, in that case you are worthy

cobalt tinsel
#

wtf

#

idk what u are saying

quiet ice
#

But chances are you are not transforming random classes at will

pseudo hazel
#

getting the translation keys is my next problem but if I have atleast a way to present any key to the user i should be fine

#

I will look into adventures to see what kinda json gets generated and see if I can use that

quiet ice
cobalt tinsel
#

ok

#

donE

#

so

#

idk why is that happening cuz

#

this is my code

#

how do i send the java thing

cobalt tinsel
#

´´´java

#

or what

#

!java

#

!syntax

#

-syntax

dusk flicker
#

every command we have is ? with exception of !spacex

cobalt tinsel
#

?syntax

#

?java

#

ok

#

public static void openMenu(Player player) {
Inventory i = Bukkit.createInventory(null, 9, Style.translate("&2KillEffects Menu"));

    for (int x=0; x < i.getSize() ; x++) {
        for (KillEffects effects : KillEffects.values()) {
            if (effects.getDisplayName() != null) {
                ItemStack effectIcon = new ItemStack(effects.getIcon());
                ItemMeta effectMeta = effectIcon.getItemMeta();
                effectMeta.setDisplayName(Style.translate(effects.getDisplayName()));
                effectMeta.setLore(Arrays.asList(
                        player.hasPermission("practice.killeffect.".concat(effects.getName()))
                                ? Style.translate("&aClick to select ".concat(effects.getDisplayName()).concat(" &aeffect.")) : Style.translate("&cYou don't own this effect.")

                ));
                effectIcon.setItemMeta(effectMeta);
                i.setItem(x, effectIcon);
            }
        }
    }
    player.openInventory(i);
}

}

#

do u know why is that happening?

cobalt tinsel
#

it should show every killeffect not the last one

#

some bracket should be misplaced but idk

#

what

#

that's weird x

#

d

#

bro

kind hatch
cobalt tinsel
#

do u know why is this happening?

kind hatch
# cobalt tinsel

What's the problem with this? What are you expecting to happen?

kind hatch
# tranquil stump .

Get all nearby entities and if there are more than your threshold, don't spawn in more.

tranquil stump
#

how do i get nearby entities

kind hatch
#

You've got two options.
Entity#getNearbyEntities()
World#getNearbyEntities()

#

Both work off a radius, so you would ideally want to put your search in the middle of your arena.

kind hatch
ebon ether
#

how can I create a runnable to constantly check the block under a player?

iron glade
boreal python
#

how do I check for a chest's custom name via the InventoryView getTitle() method?

    @EventHandler
    public void onInventoryOpenEvent(InventoryOpenEvent event){
        if (event.getInventory().getHolder() instanceof Chest chest){
            getServer().sendMessage(Component.text("Chest Opened"));
            event.getPlayer().sendMessage(chest.customName());
            if (chest.customName() == null){
                getServer().sendMessage(Component.text("Chest Opened NO NAME"));
            }
            if (CHEST NAME = RED TEAM???){
                getServer().sendMessage(Component.text("Chest Opened RED"));
            }
      }
}```
undone axleBOT
tender shard
tender shard
#

I mean what's the problem?

#

you can ofc just do "new Runnable() { ... }" ?

last swift
#

What is the default code for knockback? I'm trying to recode it and wish to know how the default system works. Ex. knockback based on sprinting, item in hand, etc. Would I just use something similar to this?
https://bukkit.org/threads/get-knockback.118745/

tender shard
#

it's probably spread up in 50 classes or so

#

e.g. zombies etc probably have normal knockback

#

while the ender dragon has none

last swift
#

Ah that's unfortunate. What about just for player vs player?

#

I'm essentially canceling the event in EntityDamageByEntityEvent then recoding the knockback.

tender shard
#

i am not sure, but I guess that each entity class has something about it :/

last swift
#

ah okay. thanks anyways

tender shard
#

I might be totally wrong though

last swift
#

yea nw ill look into it

tender shard
#

oki

quaint mantle
#

Are plugin channel names still max 16 characters or has that changed since 2014?

tender shard
#

they can be longer IIRC

#

I think the limit is 127 now?

#

but not sure lol

quaint mantle
#

Oh that would be wonderful thanks

#

I guess I will have to evaluate that once I am back at my computer

#

(also wished there were proper resources on these kind of things)
protocol wiki doesn't tell that much either

tender shard
#

I guess you'll just have to try it :/

quaint mantle
#

Ye I guess

#

I feel like I have to explore all of this and make a document about all of the inner workings
If nobody has it done yet someone has to do it

shut field
#

I am deserializing a list list using config.getList() and for some reason all the values are null?

#

but it is still the same size/has the same amount of indexes. Just the values are being turned into null

heavy swan
#

How do I reduce fall damage with the Player variable?

shut field
heavy swan
#

Does someone have a class that when the lore or the type of item changes, also the name, or the attribute of the ItemStack, it can be updated in the player's inventory without having to keep it every so often, what I want is that when Do they change any lore or anything that is also updated to the player?

iron glade
tender shard
tender shard
#

you dont have to listen to anything for this

iron glade
#

GN8 every1, going 2 bad early 2night, 3am lmao

tender shard
#

md_5 was drunk again, it seems

#

I mean

tender shard
#

and why does setItemMeta call this

#

it's 100% useless

#

it just returns the input ahaha

tender shard
echo basalt
river oracle
echo basalt
#

like it served a purpose before and it's now purely kept for api purposes

thin delta
#

I'm brand new to Maven, and I'm having issues building a shaded .jar file. Here is my error: [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.052 s [INFO] Finished at: 2022-09-10T21:11:05-05:00 [INFO] ------------------------------------------------------------------------ [ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]

#

How do I fix my error? I'm trying to build and shade to include the org.apache.commons.io.jar

slate mortar
tender shard
#

only beer

slate mortar
#

lmfao

tender shard
#

why does this dude ask me for my reddit account name now

#

why do insecure people always ask me for my reddit account's name

river oracle
tender shard
river oracle
#

I don't have reddit but im insecure in myself so I might as well

warm mica
thin delta
#

Forever unanswered

tender shard
river oracle
tender shard
#

if you really wanna know, DM me lmao

quaint oriole
#

any1 know how to make this code more efficient? It's just that Im repeating myself and I think this can be shorter

thin delta
#

Can someone help me solve a Maven build issue?

lost matrix
lost matrix
quaint oriole
thin delta
#

Let me know what else I can show/provide

lost matrix
#

How do you compile?

thin delta
lost matrix
#

I see... use the maven tab on the right side. With install you cover pretty much everything.

thin delta
#

Hmmm, I don't have that tab... Let me see if I can find it

kind hatch
lost matrix
#

Ah missed that part

thin delta
#

^ Yes

#

Sorry, I should have mentioned

lost matrix
#

Then create a new run configuration mvn clean install

#

Dont remember. Dropped eclipse 4 months after i started out.

thin delta
lost matrix
#

5 looks good

rugged topaz
#

I've got a pretty big self-made plugin for my sever, and want to start keeping logs of player actions catered to my plugin. Is there a better way to go about this than to keep a .json created for each session and appended to - if anyone has any experience w this. thought about using MongoDB too because of its object based database system

eternal oxide
#

Right click pom, Run As -> run configurations

thin delta
eternal oxide
#

I do goals: clean package

lost matrix
eternal oxide
thin delta
#

So should I make my own configuration? Or just run 5 Maven install

rugged topaz
river oracle
#

mongo or some flavor of sql I'm more apt to use mongo though

lost matrix
#

I dont see why you would need redis for this. You dont query this data often so its just wasted memory.

thin delta
lost matrix
#

If you want to group by sessions -> MongoDB
If you want to build it relational -> SQL

eternal oxide
#

Not a JRE

ornate patio
#

more of a java question:
I have a long list of objects stored in cache, and each of them have two ids stored in them. (A minecraft UUID and a twitch id)

Usually I would just store all the objects in a concurrenthashmap and with the key being the id. But theres two keys that will be used often here, what do you guys think is the best design choice?

thin delta
eternal oxide
lost matrix
#

The ids are stored in the value which means you can get both in O(1) if you have either of them

ornate patio
#

and both maps will have references to the same object?

lost matrix
#

Sure

ornate patio
#

as in, one value in map 1 will point to the same object as another value in map 2?

thin delta
eternal oxide
thin delta
#

Yeah

eternal oxide
#

you can;t compile with that

#

Install an Adopt JDK

thin delta
#

Gotcha... I normally was exporting jars with just eclipse, but needed to shadow something which is why I'm now using Maven

lost matrix
thin delta
eternal oxide
#

everyone uses it due to licensing

lost matrix
#

Because oracle sucks

ornate patio
#

just making sure that thats what you meant by two maps

thin delta
#

This fine?

eternal oxide
#

yes

thin delta
#

Just want to make sure I'm downloading from the correct source

lost matrix
thin delta
#

Should I always work with the latest? Or version 11 because it has LTS

ornate patio
eternal oxide
#

depends on what you are building for

#

I have 16 and 8 installed

thin delta
#

I'm building for minecraft version 1.16.5

eternal oxide
#

my IDE is set to 16 and I can configure the pom to build for any lower version I want

lost matrix
ornate patio
#

how does that even work

lost matrix
#

Hash tables

ornate patio
#

πŸ€”

#

ill read up on that

lost matrix
#

Not easy to understand. I really only properly understood them after implementing them by hand in C++

ornate patio
#

I've touched C++ before duke

lost matrix
# ornate patio πŸ€”

Just think about them as a lookup table.
You have an array [...] and the index of your stored object is the hash code.
Every Object in java has a hashCode method which produces an int which can be used
as an "index" in this array.

#

So the lookup is instant.

ornate patio
#

ohhh

#

wait i see yeah

lost matrix
#

Like in an array

#

Its a bit more complicated than that but thats the quint essence

ornate patio
#

alright

#

thanks

#

also another question

#

Im making a spigot library if you couldnt tell by now

#

I plan on publishing this on maven and Im gonna start worrying about javadocs later

#

Is it possible to "hide" certain methods and classes from other developers? I don't want their IDE to be autocompleting certain classes or methods

lost matrix
#

JitPack is the simplest way for publishing dependencies

lost matrix
#

Not possible. Use the right design and access modifiers.

ornate patio
#

I'm wondering how other libraries create a static class thats used to interact with their class though

#

For example LibsDisguises has a neat static class thats used to interact with their plugin. But none of the actual classes used to implement the plugin itself are visible

rigid drum
#

Well that would really be an example of an API not a library

#

he setup one module with all his interfaces and what not

lost matrix
#

Then they have an api or facade pattern over their implementation

rigid drum
#

and then he implemented that and probably exposed it as a service

thin delta
#

I'm trying to add my JDK but I'm only seeing places for installed JRE?

rigid drum
#

in his plugin... so if you depend on the API and ask bukkit to give you the service instance

eternal oxide
rigid drum
#

it gives you the plugin (which is the implementation)

ornate patio
thin delta
rigid drum
#

Also is lib still alive? It would be fun to talk to him again

lost matrix
thin delta
rigid drum
#

@lost matrix well I mean the way he is doing it he may have given you a static helper

#

something like

#

static Implementation getImplementation() { return Bukkit...... };

lost matrix
thin delta
#

Also, this dropdown is for installed JREs

rigid drum
#

But I mean that part doesn't really matter, bad design begets bad design.

ornate patio
eternal oxide
thin delta
#

Everything is JRE

#

I don't think this is the right tab to add

eternal oxide
#

yes it will work

#

click directory

thin delta
#

Ok, I will trust

eternal oxide
#

and browse to your JDK

lost matrix
thin delta
#

This is fine: C:\Program Files\Java\jdk-18.0.2.1?

lost matrix
#

missing bin

thin delta
#

Or does it need to be like in the bin folder

lost matrix
#

You need the binaries folder

eternal oxide
#

it will find the bin folder

thin delta
#

Ok yeah, it errored when I selected the bin folder. Its asking for the root

lost matrix
#

Pretty sure that it doesnt scavenge deeper for the binaries

eternal oxide
#

for Eclipse yoou target the top folder

thin delta
#

Any Default VM arguments?

lost matrix
#

Interesting

#

Eclipse moment

eternal oxide
#

no, click finish

ornate patio
thin delta
ornate patio
eternal oxide
#

yes, select the JDK

thin delta
#

Oh

#

this blew up

#

I could be wrong, but I'm pretty sure I need that JRE selected

#

And my JDK needs to be elsewhere....

eternal oxide
#

?paste your pom

undone axleBOT
thin delta
#

Like I mentioned, I built all this fine with just eclipse. But I needed to use Maven to shade a dependency

eternal oxide
#

you have no dependencies

thin delta
#

I'd like one

#

I need org.apache.commons.io.jar

#

for FileUtils

eternal oxide
ornate patio
# ornate patio I don't understand how my project would be "bad design" though.. I just don't wa...

This is my current file structure. A lot of these classes should only be used my my own plugin, like TwitchHandler, Database, or everything in the command package.

There's select few that I want to be public, like LinkedAccounts which is a class thats used to store info about linked Minecraft and Twitch accounts. Or MineTwitchApi, which is supposed to be a static API helper.

What's the correct way to do what I'm trying to do?

eternal oxide
#

ignore teh comment, it was a copy paste

#

This also means you have a manually imported spigot jar in yoru project. Remove it

#

all your dependencies need to be in the pom

thin delta
#

This?

eternal oxide
#

yes, they all need to be mavenised

thin delta
#

ughhhhh

#

Ok

eternal oxide
#

to start delete teh spigot.jar

#

and add teh dependenciy in your pom from my paste

thin delta
#

Also, errors

#

Is that your full POM?

eternal oxide
#

1.16.5-R0.1-SNAPSHOT

#

and I hope you have the rest of yrou pom

thin delta
#

I replaced it with yours

#

But

#

I can revert

eternal oxide
#

I didn;t give you a full pom. only teh parts you needed to add

thin delta
#

Ok, I fixed

#

But Missing artifact org.spigotmc:spigot-api:jar:1.16.5-R0.1-SNAPSHOT

eternal oxide
#

not quite

thin delta
#

Sorry... I am brand new to this lol

#

Well, to Maven

barren peak
#

If I have this code:
Dispenser disp = (Dispenser)b.getState();
disp.getFacing()

How can I get the block directly infront of the dispenser? Is there a way I can turn a blockface into an X, Y, or Z easily?

thin delta
#

And wouldn't really call myself a plugin dev

eternal oxide
#

Have you run buildtools to create yoru spigot.jar?

barren peak
eternal oxide
#

added the spigot repo so maven can find the api

thin delta
#

Sweet

eternal oxide
#

now you have to add dependencies for all your libs

#

vault etc

thin delta
#

This aught to be fun

#

Can I add dependencies for local jars?

eternal oxide
#

its not hard, just takes a little time

#

you can, but its not recomended

#

always use the correct repositories

#

ie Vault xml <dependency> <groupId>com.github.MilkBowl</groupId> <artifactId>VaultAPI</artifactId> <version>1.7</version> <scope>provided</scope> </dependency>

thin delta
#

Because one is a .jar that a friend purchased whom I am making this for

eternal oxide
#

but to use github you have to add a repositoryxml <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository>

thin delta
#

and the other is a really old .jar that I updated to 1.16.5 verison of minecraft

eternal oxide
#

you can add local dependencies

tender shard
#

Vault has their own repo

#

did they switch to jitpack?

eternal oxide
#

no clue, I just pulled that from an old pom I had

tender shard
#

oh okay. I am pretty sure that Vault uses their own repo

#

but I might also be wrong

eternal oxide
#

github works so I'll stick with that πŸ˜‰

tender shard
#

sure, if it works, no need to change it πŸ™‚

#

you are right

#

they actually suggest to use jitpack

#

so yeah, I was wrong

thin delta
eternal oxide
#

add the repository

tender shard
#

if so, please send your COMPLETE pom.xml

#

?paste

undone axleBOT
thin delta
tender shard
#

as @eternal oxide said, you didnt add the repository part

#

you only added the spigot repository (lines 7+)

#

you also have to add the jitpack repo

thin delta
#
<dependency>
    <groupId>com.github.MilkBowl</groupId>
    <artifactId>VaultAPI</artifactId>
    <version>1.7</version>
    <scope>provided</scope>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</dependency>
tender shard
#

ooh no that's not how you do it

eternal oxide
tender shard
thin delta
#

Oh I see

eternal oxide
#

doing it step by step so you learn how each bit works πŸ™‚

tender shard
#

also, are you using IntelliJ?

thin delta
#

eclipse

thin delta
tender shard
#

oh okay

#

Eclipse probably has some "reload the maven file" button

eternal oxide
#

now see if you can find and add a dependency for LuckPerms

tender shard
#

in intelliJ it looks like this

#

but eclipse probably has a similar button

#

it's important that you click this after changing your pom

thin delta
#

Probably this

eternal oxide
#

yes

tender shard
#

yeah that should do it

eternal oxide
#

but no need yet

thin delta
#

πŸ‘

eternal oxide
#

add all yoru dependencies first, and remove teh jars you added manually

tender shard
#

oh wait

eternal oxide
#

so spigot and vault can go now

tender shard
#

is this person switching from "manual builds" to maven rn?

eternal oxide
#

yep

tender shard
#

oh okay, you also have to remove the whole .project folder

#

or whatever eclipse calls their files

#

otherwise you got a fucked up mix between "maven/eclipse project"

#

eclipse always prefers its own files, even when it knows that it's actually a maven project

#

and that can fuck up things VERY BADLY

eternal oxide
#

yep

#

classpath is a nightmare in eclipse if you added anything

tender shard
#

yeah it's a night mare 😒

#

I still remember when someone introduced me to maven

#

and nothing worked because of this

eternal oxide
barren peak
eternal oxide
#

it might be b.getLocation().getRelative I forget

barren peak
thin delta
eternal oxide
#

to build with Maven it has to know all your dependencies

echo basalt
#

Quick concurrency question

#

I'm working on a system that will probably need to be run across multiple servers, with GUIs and all

#

Players are grouped n such

#

Should I make the API purely interact with redis, or should I make a caching layer that's synchronized across all instances with pubsub

#

or should I do something weird

#

I'm talking about multiple people managing multiple users on multiple groups across multiple servers

thin delta
#

My apache does not like it ```xml
<repository>
<id>commons-io</id>
<url>https://github.com/apache/commons-io</url>
</repository>

<dependency>
<groupId>org.apache.commons.io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>

eternal oxide
#

remove the repository bit. its in maven central so needs no repository

tender shard
#

what's the error you get?

#

btw you cannot just add github URLs to your repos

#

as Elgar said, commons is on maven central anyway, so theres no need for any repository for this

thin delta
tender shard
#

no problem haha

#

take your time

barren peak
#

Does anyone know why (b.getState() instanceof Dispenser) is returning false when I place down a dispenser?

b.getState() = (shown below in the image), but
b.getState() instanceof Dispenser = false

b.getState():

eternal oxide
#

what import is your Dispenser?

barren peak
eternal oxide
#

theres 3 and you are probably checking against the wrong one

barren peak
#

import org.bukkit.block.data.type.Dispenser;

eternal oxide
#

you need Block as you are not using BlockData

barren peak
#

yea wait no I need the block data one, the one I was using

#

how can I compare it to that

#

because I need to use .getFacing

eternal oxide
#

then you need to get BlockData not state

#
if (b.getState() instanceof Dispenser dispenser) {
    dispenser.getBlockData()...```
barren peak
eternal oxide
#

yes

#

with the correct import for BlockData type

lost matrix
#

You can probably get aways with just a static helper class.

ornate patio
lost matrix
#

Just... dont worry. Write a helper class and let everything how it is. Write a short documentation.
If the user uses your internals then thats their problem.

ornate patio
#

Is that how most other APIs do it?

#

And if so how come I don't see their implementation classes in autocomplete?

echo basalt
lost matrix
#

*If all servers run on the same machine

echo basalt
#

what about guis that should update in real time

#

What if I have multiple machines on the same datacenter πŸ€”

lost matrix
echo basalt
#

okay yeah seems fine

#

I guess I've been going on the right track

lost matrix
#

Redis also supports locks if you want to ensure consistency

echo basalt
#

Uhh I don't think I need locks

#

I can see like 20 people managing roles in a single tick, not 2000

#

this is gonna be hell to sync up but ok

vital sandal
#

i use PersistentDataContainer String type to contain encoded Stats of my items

#

is there another way to use a Object instead of a String ?

lost matrix
# echo basalt Uhh I don't think I need locks

If you edit data then the data cycle looks like this

S << Pull from redis
S || Edit (+= 200 for example)
S >> Push to redis

What if

SA << A pulls from redis
SA || A Edit (+= 100 for example)
SB << B pulls from redis
SB || B Edit (+= 200 for example)
SA >> A push to redis
SB >> B push to redis

Then the result wont be +300 but only +200

echo basalt
#

I've faced this problem way too often

#

I know how to handle it

#

It's mostly tiny things that don't really matter

#

I'm thinking on making a GUI where "admins" can configure pre-made permissions for their own roles

#

a bit similar to discord's role permissions setup

lost matrix
#

There is only one solution to this. Locks.
How else could you solve this?

lost matrix
#

You can store whatever in pdcs

echo basalt
#

It won't really matter if you need to allow the permission twice, the GUI will always represent the status in redis

#

I might have to make a local cache for currently open guis tho

lost matrix
#

*the last known status

echo basalt
#

Yeah

#

The last known status

#

then redispubsub would resync stuff eventually

lost matrix
echo basalt
#

I'd need a hella complicated database if multiple people are editing multiple roles at the same time

rigid drum
echo basalt
#

By local cache I mean not waiting the insert however long it takes for a redis operation to run ms for the gui to update

ornate patio
#

Well my main issue is that I just dont want my own implementation classes to be autocomplete by an IDE or visible on javadocs or whatever

echo basalt
#

I really wanted to abstract this a ton but I feel like I'll have to do a lot more raw database operations than I expected

lost matrix
echo basalt
#

Yeah

#

Like a middle-layer

lost matrix
#

You should not have to use any db ops for this.

echo basalt
#

so it'd update in real time, yet still send a redis packet

#

ehhhhhhhhhhhhh

#

this is hella complex

#

My idea is like

lost matrix
#

persistence layer should be completely unknown to redis

echo basalt
#

Persistence is mongo/sql

lost matrix
#

I hope one of them

echo basalt
#

It goes

Persistence -> Redis cache layer

lost matrix
#

And not both

echo basalt
#

Then I do all ops on the redis cache layer

#

until I unload it back into persistence

lost matrix
#

Ok thats the default cache setup. But what db ops do you need besides simple read and write?

echo basalt
#

not much

#

I mean I have invite codes

#

similar to discord

#

so I could make a simple relational table for that

#

I kinda abstracted everything into UUID <-> Object operations

#

so for invite codes, I generate a UUID from the string (hashcode + length, go figure)

#

and fetch the target id from that but whatever

#

I feel like the cache layer will get extremely complex tho

#

Not only do I have to handle persistence, I also need to handle guis in real time n all

lost matrix
#

I have abstracted a system like this away. And i can say that its one of the more complicated things ive worked on.

echo basalt
#

I guess this is extremely similar to discurd in a way

echo basalt
#

flattens a Map<String, Object> into sql tables, if I'm using sql

#

or stores as a pojo for mongo

#

also serializes it for redis so that other servers don't have the fetching delay

lost matrix
#

It led to methods that are really fun to read...

echo basalt
#

that's the most complex db

#

wtf

#

am I tripping or is map.keySet() the same as keys because you end up tossing keys regardless

#

or do you call keyset again due to concurrency πŸ€”

lost matrix
#

Its pretty much the same. Shouldnt matter tho.

echo basalt
#

tiny tiny little performance niche I'd obsess about lol

#

it's like 5:30am I'm already obsessing

lost matrix
#

keySet() has no overhead

#

But yeah one could argue for usign keys

echo basalt
#

I guess it's a lazy singleton

#

or just regular idk

tranquil stump
kind hatch
lost matrix
#

The best thing which originated from all this was my TypedMongoStorage<K, V> which let me
use MongoDB as a key-value map with any object i want.

tranquil stump
kind hatch
#

Yes, it should at least. I'm not sure if it's inclusive or exclusive, but if you aren't getting the results you are expecting, just add 1 to the coords.

echo basalt
#

I guess I hate this a bit

tranquil stump
#

like shouldn't I just keep the same coords but change x to change the radius?

severe oak
kind hatch
lost matrix
#

In queries

echo basalt
#

it gets converted to byte[] don't worry