#help-development

1 messages · Page 970 of 1

quaint mantle
#

switch is faster

polar forge
#

I’m not talking about how faster it is

#

I’m talking about readability

#

How he mentioned

blazing ocean
#

yeah

rapid vigil
#

switch vs if moment

quaint mantle
#

switch is more readable in my opinion

blazing ocean
#

have you seen rust match

polar forge
#

I would think else if

quaint mantle
#

considering you're running one single method for each case

blazing ocean
polar forge
#

But guys lemme test my plugin 🙏

#

Guys

#

Textcomponent is abstract; cannot be instantiated

#

What does this error mean?

vast ledge
#

Here, you might wanna use an enum, with all the data, should make your life easier

polar forge
#

Line 45

vast ledge
#

Remove

String hoverMessage = null;
polar forge
#

I still get the problem

vast ledge
#

Line?

polar forge
#

45

vast ledge
#

what does that line contian for you?

polar forge
#

new TextComponent(event.getMessage());

#

'TextComponent’ is abstract; cannot be instantiated

vast ledge
#

Did you by chance create a class called TextComponent?

shadow night
proud badge
#

ah yes why are you making wood mod, stone mod, wood admin, etc, why not just combine it at chat time instead of pre-coding each rank?

vast ledge
#

Because im living proof that that, should work

vast ledge
#

Wat does event.getMessage() return in that case?

proud badge
#

Like instead of having 20 ranks for every combination, when a player chats check their kit (wood, stone, iron etc) and their rank (normal, mod, admin) and do the math to check what their prefix should be

polar forge
proud badge
#

it isnt, for you who doesnt know java barely maybe its more efficient

proud badge
polar forge
vast ledge
worthy yarrow
polar forge
vast ledge
#

But it works for me???

polar forge
#

I’ll just remove mine and copy paste urs

vast ledge
#

Ah

#

found the issue :D

worthy yarrow
#

I hadn’t read sorry

vast ledge
#

Wrong import

polar forge
#

Where

proud badge
vast ledge
#
import net.md_5.bungee.api.chat.TextComponent;
polar forge
vast ledge
proud badge
#

ah

vast ledge
proud badge
#

oh he used java textcomponent?

vast ledge
#

noh

proud badge
#

nvm

vast ledge
#

something from some liv

#

lib*

polar forge
#

I’m importing from net.kyori

worthy yarrow
#

Bungee lib

proud badge
vast ledge
polar forge
#

Ok done

vast ledge
#

should work now :D

polar forge
#

I’ll go further

polar forge
blazing ocean
#

he was using adventure

vast ledge
#

Now that thats fixed, imma fix my OS brb

blazing ocean
#

which is awesome

vast ledge
#

idk if my fstab is still violated

#

I want to jump off a bridge

blazing ocean
#

you can do something like Component.text("text").hoverEvent(Component.text("hi"))

vast ledge
#

Sometimes I wanna commit mu der, and today is one of those times

shadow night
vast ledge
#

Murder*

polar forge
#

When u say fromLegacyText, inside the brackets should I put my hover message?

vast ledge
#

Ye

rapid vigil
quaint mantle
#

hi, im wondering smth, a plugin wrote in 1.8 can run on a 1.20 server but not the other way?

blazing ocean
rapid vigil
polar forge
#

The text should be User, Administrator, or Moderator, or Stone

#

Etc

#

Depending on the permission

vast ledge
#

Use the string

polar forge
#

Which?

quaint mantle
vast ledge
#

The one your giving the names to?

vast ledge
#

Usually more upwards compatible

#

You could also use reflections tho

rapid vigil
polar forge
vast ledge
#

You created a variable called hover message, it a string

polar forge
#

First time working with HoverText and Messages

vast ledge
#

Just put that in there

polar forge
#

Done

tender shard
polar forge
#

Boom

#

Finished

#

Let’s see if it works now..

#

I’m curious

#

Ops I forgot to write the permission nodes

#

I’m dumb

#

Guys does the permission list look good?

rapid vigil
quaint mantle
#

default: would be better

polar forge
#

Oh yea true

#

Thx

icy beacon
rapid vigil
quaint mantle
muted otter
#

I'm trying to deal with scoreboard teams, but I don't understand the difference between a scoreboard prefix and a scoreboard suffix. Can someone explain this to me?

young knoll
#

Prefix goes before the entry

#

Suffix goes after

muted otter
#

ty

dapper flower
#

test

#

I tried using unicode characters in an hologram however there is some gibberish code that gets printed

#

that can't be removed by just deleting a part of it cuz the unicode char is made of 2 unicodes

#

\uD83D\uDEE2

#

is the char

young knoll
#

Is the encoding on your stuff right

dapper flower
#

wdym

#

"&6\uD83D\uDEE2︎️"

#

this is the string

young knoll
#

You need to make sure everything is handled properly with UTF-8 encoding

#

Otherwise it’ll get messed up

dapper flower
#

I am making a slimefun addon so i am using one of their functions to update the hologram, do you think it is an issue on their part?

tardy delta
#

any git user that knows what the diff is between merge origin/x and origin x?

#

looks like git is actually stupid and origin/x is the only valid one, wondering how it worked all other times then

wintry whale
#

Добрый день, я директор студии. Ищу себе сотрудников. Требование: Адекватность, общительность, без токсичности. Все расскажем и научим. Пишите в лс 🤝

quaint mantle
#

Anyone here who can help me make an SMP plugin? (im not paying anyone)

sullen marlin
#

english

#

and no, ask a specific development question

golden turret
#

I have an abstract class and some classes that inherit it. I am using Jackson to serialize it into a file, but I cant deserialize it, because it throws this error: ```
Exception in thread "main" com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.wizardlybump17.resourcepackmanager.api.resource.font.provider.FontProvider (no Creators, like default constructor, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information

The problem is that I have a custom deserializer but it is not called. How can I fix this?
cinder abyss
#

Hello, how can I add something to the population of the world?

dapper flower
# golden turret I have an abstract class and some classes that inherit it. I am using Jackson to...

Searched a bit and this might help you

public class WrapperDeserializer extends JsonDeserializer<Wrapper<?>> implements ContextualDeserializer {

    private JavaType type;

    @Override
    public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property) {
        this.type = property.getType().containedType(0);
        return this;
    }

    @Override
    public Wrapper<?> deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
        Wrapper<?> wrapper = new Wrapper<>();
        wrapper.setValue(deserializationContext.readValue(jsonParser, type));
        return wrapper;
    }
}
young knoll
#

Isn’t that called giving birth?

#

Or are we talking like, world generation?

sullen marlin
cinder abyss
young knoll
#

BlockPopulator

cinder abyss
#

okay thanks

golden turret
golden turret
cinder abyss
#

and for more complexe structures, like some cut logs, should I use the same approach @young knoll ?

young knoll
#

Yes

#

Populators have access to a 3x3 chunk area

cinder abyss
#

perfect then

#

thanks

#

do you have a tutorial?

remote swallow
cinder abyss
#

I used it before but it's been like 10 months

muted otter
#
            for (int i = 0; i < lines.size(); i++) {
                Team team = normalScoreboard.registerNewTeam("" + i);
                team.addEntry("");
                normalScoreboard.getTeam("" + i).prefix(lines.get(i));
                scores.add(objective.getScore("" + i));
                scores.get(i).setScore(i);
            }

I am trying to create a scoreboard with teams, but this just puts the numbers, 0, 1, 2, & 3 on the scoreboard. Why?

remote swallow
#

do you use nms

gaunt moss
#

No

remote swallow
#

double check that you have the spigot repo on their, it should be able to find spigot-api

gaunt moss
#

When checking the logs I got a 404 error

ionic thicket
#

is looping thru every entity of the world inefficient? I have to check if some entities have a certain pdc

sterile axle
#

try to reduce your set of entities that you are going to loop through in some way

#

like get entities in a radius around a point of interest (like, around a player perhaps)

earnest lark
#

!!paste

#

!paste

#

?paste

undone axleBOT
earnest lark
#

can someone explain why nothing is printing out

#

i have never used this library beofre so i dont undertand it

muted otter
#
for (int i = 0; i < lines.size(); i++) {
                Team line = normalScoreboard.registerNewTeam("line" + i);
                line.addEntry(Character.toString(emptyCharacter));
                System.out.println(line.getName());
                System.out.println(lines.get(i));
                normalScoreboard.getTeam(line.getName()).setSuffix(lines.get(i));
                System.out.println();
                scores.add(objective.getScore("" + i));
                scores.get(i).setScore(i);
            }

Can someone tell me why this just puts numbers instead of the content of the line on the scoreboard?

earnest lark
#

because you are seting the scores to i

muted otter
#

the ones to the side of the content on the right

earnest lark
#

i dotn know exactly what is happenign but i am assuming that scores is just all of the Scores stored in an arrayList

muted otter
#

yes

#

Scores is just an arraylist

muted otter
#

so the teams arent working when I try to add the content to the scoreboard

earnest lark
#

why dont you just use String.parseString(i)

muted otter
#

will do

earnest lark
#

that may not be a method

#

wait

muted otter
#

oh

#

String.valueOf rit

earnest lark
#

nvm it is

#

yes

muted otter
#

oh

#

yea

#

k

#

normalScoreboard.getTeam(line.getName()).suffix(lines.get(i)); there's something wrong with this

#

because it knows what the content is

#

it just doesnt add it to the board

earnest lark
#

does getTeam or suffix return anything

muted otter
#

lemme see

earnest lark
#

you arent storing the value that you make there

muted otter
#

wdym?

earnest lark
#

im just curious if the methods modify variables or return anyhting

#

because if they do you arent storing that value anywhere

muted otter
#

yea they return the team

earnest lark
#

well do they modify values inside of normalScoreboard

muted otter
#

yes

#

its a builder

earnest lark
#

oh

muted otter
#

its good

earnest lark
#

i dont fully understand your problem then

muted otter
#

how do i send a picture here

earnest lark
#

printScreen

#

cntr+v

muted otter
#

but i cant attach media here

#

in the channel

#

wait ill put it on giphy

earnest lark
#

use ?paste

muted otter
#

oh

#

k

#

?paste

undone axleBOT
muted otter
#

it doesnt allow for images

earnest lark
#

what image are you trying to put in

muted otter
#

look at the text of the scoreboard

#

you see the white text

#

it says 0, 1, 2, 3

#

when it should say the content of each line in lines

#

1s

earnest lark
#

oh ok

#

put all of your code

#

?paste

undone axleBOT
muted otter
#

k

#

had to do sum

#

1s

#

there

#

be bak

copper scaffold
#

i have a problem with my config.yml i have it pre configured and i get it with getConfig():
and save it at the start with saveDefaultConfig():
after i change anything and i want to save it, it deletes everything and the only thing thats saved is what i have changed.
i save the config with saveConfig(); after changing something.

what do you mean with that?
this is my code example:
config.yml:
https://pastebin.com/hHEW2gkN
Main:
https://pastebin.com/Qvi2Fqhs
SettingsCommand:
https://pastebin.com/G9hzpLLy

sullen wharf
#

onLoad is called before onEnable, there's a chance that might change something. try to get the config after the saveDefaultConfig() method call

solemn meteor
#

what are all the events that can be triggered where an item is being moved

solemn meteor
#

I know about InventoryClick and InventoryMoveEvent

#

are there any more?

eternal night
tepid turret
#
    @EventHandler
    private void invulnerableBoats(VehicleDamageEvent e) {
        if (!(e.getVehicle() instanceof Boat || e.getVehicle() instanceof ChestBoat )) {
            return;
        }
        Bukkit.getLogger().info("Boat | ChestBoat = Hit");
        if (e.getVehicle().getPersistentDataContainer().has(keys.getClaimedKey())) {
            e.setCancelled(true);
        }
    }
#

when boat punched it doesn't log anything

quaint mantle
#

Is there any event listener for server restart?

tepid turret
#

so the onDisable() in ur main class

quaint mantle
#

I was looking for more a MOTD reset when the server restarts

blazing ocean
#

once it's on?

quaint mantle
#

That could work

blazing ocean
#

yeah just change the MOTD in your plugin then

#

you could have the vanilla MOTD set as fallback

quaint mantle
#
@EventHandler
    public void onServerPing(ServerListPingEvent serverListPingEvent) {
        serverListPingEvent.setMotd(ChatColor.GREEN + "               Development Server  " + ChatColor.RED + "[1.8]\n                     " + Util.getRandomVisibleColor() + ChatColor.BOLD + "SKYBLOCK SANDBOX");
    }```
This is when the server is pinged, I'm looking for something when the server is restarting
blazing ocean
#

i don't get what your goal is

tepid turret
#

it will say in the MOTD

#

"Server Restarting"

#

right?

quaint mantle
#

Something like that

tepid turret
#

A little bit cheaty but just set the vanilla MOTD

#

to

#

"Server Restarting"

#

so when ur plugin disables that shows up]

#

pretty sure that should work

#

otherwise idk

quaint mantle
sullen marlin
#

There won't be any motd when the server is restarting lol

blazing ocean
#

yeah

#

what you could have is a proxy

tepid turret
#

thoughts so but wasn't 100%

quaint mantle
tepid turret
#

oh

#

when the server starts you mean?

#

just put it in ur onEnable

quaint mantle
#

Sweet, thank you

worthy yarrow
#

any particular reasons this is occurring? (creating project from existing source)

sullen marlin
#

Is that source or compiled jar lol

worthy yarrow
#

compiled

#

I need to change the teams dependencies

sullen marlin
#

You need to decompile it then

eternal night
#

Or fuck around with enigma and edit bytecode directly

worthy yarrow
#

when I copied it over:

jdgui is showing me the same thing

#

So basically I have to go through everything blind

quaint mantle
#

a, the class name though

eternal night
#

Obfuscation ✨

tepid turret
#

How would I increase the speed of a boat?

tender shard
#

Vehicle is such a funny word

#

I hope it would get more usage in actual talk

shadow night
blazing ocean
tepid turret
tepid turret
#

but how ofter would that run?

#

often*

#

if its every tick with

#
VehicleMoveEvent
#

it'll accelerate insanely fast wont it?

shadow night
blazing ocean
#

sudo code

#

sudo gradle build

tepid turret
#

Pseudo code
Happy?

#

is that how u spell it?

#

idfk

tepid turret
blazing ocean
tepid turret
#

epic

tender shard
tepid turret
#

Ok i'm stuck. I have variables for the boat speed and i have a way to check if the boat is at the max speed that i want it to be at

#

but how do i check the speed the boat is going as a float or double or int?

#

as in like what do i call?

smoky anchor
#

how do you check if the boat is at the max speed ?

tepid turret
#

basically im just saving on the boat

#

the amount of times i want to iterate over increasing the speed

#

and the amount of times it iterated

#

wait fuck that wont work 😭

#

why r boats like this

tender shard
#

boats suck

#

fr

solemn meteor
#

how does ClickType.SWAP_OFFHAND work exactly? like hovering onto a slot and pressing F?

smoky anchor
#

Do you mean SWAP_OFFHAND ?

solemn meteor
#

oh yeah

#

mb

cinder abyss
#

Hello, should I use equals or == to compare two locations ?

eternal oxide
#

comparing locations is not a good idea

cinder abyss
eternal oxide
#

you can use .equals but comparing three doubles is not reliable

cinder abyss
#

wdym by "not reliable"?

eternal oxide
#

floatign point precision on doubles is a little random

cinder abyss
#

then I'll use equals

eternal oxide
#

what are you attempting to need to compare locations?

cinder abyss
# eternal oxide what are you attempting to need to compare locations?

to retrieve an Entity from a List:```java
/**

  • Get a custom block from his Location
  • @param spawnLocation The location used to get the custom block
  • @return The found custom block
    */
    public static @Nullable CustomBlock getCustomBlockFrom(Location spawnLocation){
    return registeredCustomBlocks
    .stream()
    .filter(
    customBlock ->
    customBlock.getSpawnLocation().equals(spawnLocation) ||
    customBlock.getCoveredBlock().equals(spawnLocation.getBlock()) ||
    customBlock.getCoveredBlock().getLocation().equals(spawnLocation)
    ).findFirst().orElse(null);
    }```
#

I do a lot of checks (and I think the two lasts are useless)

cinder abyss
#

And also, I've got a big problem when adding a custom BlockPopulator:
https://paste.md-5.net/sayajukamu.pl

Here is my code:```java
public class RocksPopulator extends BlockPopulator {
@Override
public void populate(@NotNull WorldInfo worldInfo, @NotNull Random random, int chunkX, int chunkZ, @NotNull LimitedRegion limitedRegion) {
if(worldInfo.getEnvironment() != World.Environment.NORMAL) return;
int randomX = (int) (random.nextDouble()16chunkX);
int randomZ = (int) (random.nextDouble()16chunkZ);
int perfectY = limitedRegion.getHighestBlockYAt(randomX, randomZ);

    Switch button = (Switch) Material.STONE_BUTTON.createBlockData();

    button.setFacing(BlockFace.UP);

    limitedRegion.getBlockState(randomX,  randomZ, perfectY).setBlockData(button);
}

}```

lost matrix
#

This is gonna get slow quite fast. Def use a Hash based collection instead of iterating over every single custom block

sullen marlin
#

?whereami

cinder abyss
#

But I ask help for my plugin (spigot) not for my server (paper)

#

If I wanted to ask help for my server (paper) I should go to the PaperMc discord

cinder abyss
#

and no change to the method to retrieve the custom block?

granite owl
#

is it poor practice to declare nested classes if their sole purpose is to be used by the encasing class ```java
public class IniParser
{
protected class IniParserSettings
{
public Character seperator = null;
public String extension = null;
public Boolean headerMode = null;
public Character commendDeclarator = null;
public String errorValueString = null;
public Integer errorValueInt = null;
public Float errorValueFloat = null;
public Double errorValueDouble = null;
public Character errorValueChar = null;
public Boolean errorValueBool = null;

    public IniParserSettings()
    {
        this.seperator = ',';
        this.extension = ".ini";
        this.headerMode = true;
        this.commendDeclarator = ';';
        this.errorValueString = "";
        this.errorValueInt = 0;
        this.errorValueFloat = 0.0f;
        this.errorValueDouble = 0.0d;
        this.errorValueChar = '\0';
        this.errorValueBool = false;
    }
}

IniParserSettings settings = null;

public IniParser()
{
    this.settings = new IniParserSettings();
}

}

#

and never supposed to be exposed?

sullen marlin
cinder abyss
polar forge
sullen marlin
polar forge
# polar forge

I don’t understand why it can’t be accepted as a Listener Class?

sullen marlin
cinder abyss
cinder abyss
rough drift
#

does it implement listener paulem

sullen marlin
rough drift
polar forge
#

Not implemented

cinder abyss
rough drift
cinder abyss
cinder abyss
#

(no I joke, or maybe not?)

rough drift
#

Anyways, I came here to ask:

I know that loadData() and saveData ask the WorldNBTStorage for the playerdata.dat file, which is resolved from the current path plus playerdata/, however I only always seem to see the folder inside world and not other places, does it always save inside world?

sullen marlin
#

Not sure exactly what the question is but I think the answer is yes

cinder abyss
# cinder abyss (no I joke, or maybe not?)

let's try with this:```java
if(worldInfo.getEnvironment() != World.Environment.NORMAL) return;
int randomX = (int) (random.nextDouble()16chunkX);
int randomZ = (int) (random.nextDouble()16chunkZ);
int perfectY = limitedRegion.getHighestBlockYAt(randomX, randomZ);

Switch button = (Switch) Material.STONE_BUTTON.createBlockData();

button.setFacing(BlockFace.UP);

limitedRegion.setBlockData(randomX, randomZ, perfectY, button);```

sullen marlin
#

Player data is in the main world

rough drift
#

Ah, okay thanks

#

I am trying to load data per-world for some things I'm working on, I guess I should just have a copy of the player.dat file in each world under a playerdata folder, and just move the files around?

valid burrow
#

first makes more sense

#

that way when the user deletes a world

#

the data will be gone aswell

#

oh it says and lo

#

thought it say or

blazing ocean
rough drift
#

i.e.

world/
  playerdata/
    world_nether/
      playera.dat
    world/
      playerb.dat
    playerb.dat # symlink
    playera.dat # symlink

iirc mc supports symlinks for playerdata

#

and I just edit the symlinks

#

or

#

wait

#
world/
  playerdata/
    data/
      playerb.dat
    playerb.dat # symlink
    playera.dat # symlink

world_nether/
  playerdata/
    playera.dat
#

hm no that won't work

#

also mc doesn't allow symlinks so that won't work

valid burrow
#

why do u even need this though lol

rough drift
#

it's for a project I'm working on

#

or I can just say fuck it

valid burrow
#

what kind of data r u saving

rough drift
#

literally the player's data

#

inv, health, hunger, etc

sullen marlin
rough drift
# sullen marlin ?

He's saying that player data should be stored ideally in a per-world manner if requested (my interpretation)

#

i.e.

server/
  playerdata/
    playera.dat
    playerb.dat

world/
  playerdata/
    playera.dat # Overrides global one
    # uses global playerb.dat
valid burrow
cinder abyss
sullen marlin
#

They're trying to waste our time

cinder abyss
sullen marlin
#

?whereami

cinder abyss
#

...

#

okay

#

so I'll use spigot to run my server too and It'll be the same error

valid burrow
sullen marlin
blazing ocean
rough drift
rough drift
#

basically, if a world has a player.dat for a specific player, it will load that, otherwise it will load a global one

valid burrow
rough drift
#

would allow plugins to have different player datas per world easily

valid burrow
#

thats a whole other story

blazing ocean
#

thought paper did that but they don't

rough drift
cinder abyss
blazing ocean
rough drift
#

It wouldn't even be that hard to

blazing ocean
#

go ahead lol

valid burrow
rough drift
cinder abyss
#

I'm not english native, so I'm a bit lazy with it

rough drift
cinder abyss
#

biome specific rocks with buttons

valid burrow
#

Alright ill look into it

#

wait

blazing ocean
rough drift
#

Actually, once I get time I'll add the ability to load offline players maybe

#

I need both per world data and offline player data

#

so

valid burrow
#

Caused by: java.lang.IllegalArgumentException: Cannot set property BlockStateDirection{name=facing, clazz=class net.minecraft.core.EnumDirection, values=[north, south, west, east]} to up on Block{minecraft:stone_button}, it is not an allowed value

#

@cinder abyss

#

read this

vast ledge
#

Ehh

#

Tf is that

rough drift
#

an error

vast ledge
#

Ik that but it's like impossible to read on mobile

valid burrow
polar forge
#

So, I’m making that if a player.hasPermission(“example”), has the named coloured to red

#

But when I test it, it doesn’t work

sullen marlin
#

Because youre setting the message not the name

polar forge
#

I want to precise that I have op

sullen marlin
#

You don’t need to do this every time, just Player.setDisplayName on join

polar forge
#

So I should remove all this and say, but I don’t understand, how does it work then with permissions?

#

If I use Player.setDisplayName

rotund ravine
#

Check permissions in onJoin event

polar forge
#

Oh u mean, I should change event.setMessage to player.setDisplayName?

rotund ravine
#

No.

polar forge
#

So like this?

rotund ravine
#

sure

peak depot
#

you guys think ?gui is needed for a lobby plugin? no right since the user can not create one of his own so the problem with view Title is no applicable

drowsy helm
#

Wot

#

Depends on the use case

polar forge
#

Doesn’t work

#

I got op permissions

rotund ravine
#

What plugin ya got

polar forge
#

It’s hover + chatColor nicknames

chrome beacon
#

Follow the GUI guide

polar forge
#

The hover works, but it fucks the LuckPerms prefixes

#

This is the hoverListener Class

#

Here in line 30, I think it’s that the cause of why LuckPerms does not let me choose a prefix

peak depot
slender elbow
#

? you're just getting the player name, straight

#

you aren't using the display name or getting the prefix anywhere

umbral ridge
#

hi Emily

polar forge
#

Thats the HoverListener

slender elbow
#

yes

polar forge
#

Here is where I code for the Username Color

#

With Permissions

slender elbow
#

in your hover listener you are not using the player's display name or the luckperms prefix anywhere, you are just using the player name

polar forge
#

Do u mean, that this might be the cause why LuckPerms does not work?

umbral ridge
#

Where do you set the hover event for group prefix

slender elbow
#

LuckPerms only stores the prefix, it does not put it in chat or anywhere, it's your chat plugin (or you) the one that is responsible for getting that prefix from LP and putting it somewhere like chat/tab etc

#

if you don't use it, it won't show up

polar forge
polar forge
umbral ridge
#

You can use Vault

solemn meteor
#

how does ClickType.SWAP_OFFHAND work exactly? like hovering onto a slot and pressing F?

polar forge
#

It’s not installed on my server

solemn meteor
polar forge
#

So what’s a solution?

cinder abyss
#

So it's strange

rotund ravine
#

what

polar forge
#

Here is all the code

#

I implemented LuckPerms

#

But when I try the code

#

This is what I see in the console:

echo basalt
#

is Luckperms on the server

#

Also your code is pretty unscalable

polar forge
polar forge
echo basalt
#

If you want to add more ranks you need to add more if statements

polar forge
#

Uea

#

Yea*

#

Else if statements

#

But why is this.luckperms = null?

vestal pumice
#

cuz you never assigned it any value

polar forge
#

Like which value should I even assign?

rotund ravine
#

I would check the luckperms developer docs

#

They are good.

#

Also i would go to their discord server for help.

#

You should do what i said above.

solemn meteor
#

in InventoryClickEvent, if I press offhand or number key, and I hovered over a slot that isnt either, and pressed the corresponding button, how do I get both items that got exchanged? I assume its e.getClickedItem and e.getCursor but wouldn't the cursor be empty since I just changed the items? or does the item that got moved become the cursor one

gaunt moss
#

Hello, I have a problem with Spigot during a Dependabot check. It cannot detect if there is an update to be done...
My plugin works on Maven.

rotund ravine
#

k

#

There won't ever be an update to 1.20.1

gaunt moss
#

To update to 1.20.4

rotund ravine
#

Not a required update

gaunt moss
#

You didn't read the message

rotund ravine
#

hmn??

gaunt moss
#

It does not detect the current version

lost matrix
gaunt moss
#

In the logs he searches the Spîgot and Maven repo but I get the 404 error on both

eternal oxide
#

?paste your pom

undone axleBOT
gaunt moss
eternal oxide
#

looks fine

gaunt moss
#

I only have this problem on projects that use Maven. On Gradle it works correctly

raw copper
#
    public static void makePlayerInvisible(Player player) {
        PacketContainer packet = ProtocolLibrary.getProtocolManager().createPacket(PacketType.Play.Server.ENTITY_EFFECT,
                true);

        packet.getIntegers().write(0, player.getEntityId());

        packet.getBytes().write(0, (byte) 14); // 14 is the ID for invisibility effect
        packet.getBytes().write(1, (byte) 1);

        packet.getIntegers().write(1, -1);

        for (Player p : Bukkit.getOnlinePlayers()) {
            if (p.equals(player)) continue;
            ProtocolLibrary.getProtocolManager().sendServerPacket(p, packet);
        }
    }

I am tryin to add INVISIBILITY effect to a player, but some reason I get this error

Internal Exception: io.netty.handler.codec.EncoderException: java.lang.IllegalArgumentException: Can't find id for 'null' in map Registry[ResourceKey[minecraft:root / minecraft:mob_effect] (Stable)]

rough drift
#

you know you can just add the invisibility effect right

raw copper
rough drift
raw copper
lost matrix
#

Do you want the invisibility potion effect or completely hide the player?

rough drift
raw copper
#

For the transparent bukkit teams effect

lost matrix
#

the transparent bukkit teams effect...

lost matrix
rough drift
#

hey smile I need a diff type of help, can you make me stop procrastinating rq

raw copper
rough drift
lost matrix
lost matrix
raw copper
rough drift
gaunt moss
cinder abyss
raw copper
#

Well, I just ended up sending the packet directly via nms, it does say i have the effect but the effect does not register visually

#

I can still see the player, but in the hud it says invisbility duration

lost matrix
# cinder abyss Oh

If you want to store live data for Blocks, then you should have a Map<Block, YourData>. This way you can retrieve the data in constant time, no matter how big the map gets. Just make sure to save the data when the Chunk it us currently in unloads.

echo basalt
#

Not a huge fan of storing craftblock refs

#

It is only a blockpos and an nms world

#

but even then

#

icky

cobalt vigil
#

how 🙏 i really need a negative height passenger for something im trying right now but i cant figure out how

slender elbow
lost matrix
peak depot
#
    @EventHandler
    public void onWorldLoad(WorldLoadEvent event) {
        event.getWorld().setGameRule(GameRule.ANNOUNCE_ADVANCEMENTS, false);
        event.getWorld().setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
    }
``` Why are there still Advancement Annnouces and it does daylight cycle?
#

(Listener is properly Registred)

river oracle
rotund ravine
#

It's called a Block

young knoll
#

We have joml for that

rotund ravine
#

Fairly certain a Block is just a BlockPos until ú call shit

lost matrix
river oracle
river oracle
#

So not exactly

lost matrix
rotund ravine
peak depot
young knoll
lost matrix
#

Wait, it has a hard reference? I was almost sure that the world was stored in a weak reference there

echo basalt
#

Nope, only on Location

lost matrix
#

Meh. Then a joml Vec3i is probably better. If it has a nice hashcode method that is. Otherwise a custom BlockPos record would be nice

cobalt vigil
#

is there any way to achieve the equivalent of a negative slime? i need a passenger with a negative height but i cant find a way to do it since negative slimes have been removed

eternal oxide
#

a DisplayEntity with a translation?

cobalt vigil
#

it messes up with a centered billboard

eternal oxide
#

I didn;t say a billboard. Try a BlockDisplay with a Translation

green prism
#

What's the best alternative to Jitpack for Github-based maven repos?

eternal oxide
#

why do you want an alternative?

green prism
eternal oxide
#

You know you don;t need an account on Jitpack to use it with any repo

green prism
#

Ik but it's a private repo

eternal oxide
#

ah ok, then pay 😉

green prism
eternal oxide
#

or host your own build server

green prism
#

I'll bring my Raspberry Pi 4 back to life haha

eternal oxide
#

perfect for the job

young knoll
#

Oracle free tier :p

green prism
cobalt vigil
young knoll
green prism
lost matrix
cobalt vigil
#

lets say i wanted a second nametag type thing but underneath the player, so i would have the translation set to like -1.5 y or something, if another player were to look down at someone from above, the second nametag would be moved next to the player, it wouldnt be under them anymore

#

i dont have access to send images so i cant send what i mean

eternal oxide
#

then you don;t want a centered billboard, you want a fixed billboard and a Translation

cobalt vigil
#

the problem is that i want to use a centered billboard, or well i need to

eternal oxide
#

or at minimum a Verticle one

#

you can;t

#

a centered billboard will pivot about both horizontal and vertical

cobalt vigil
#

thats a shame

cobalt vigil
eternal oxide
#

you want Vertical with a translation

#

control the up/down with the translation

cobalt vigil
#

that wouldnt work with what i was trying to achieve but i guess its impossible then

eternal oxide
#

why is it impossible?

cobalt vigil
#

once again, with what i am trying to do, i need a centered billboard

eternal oxide
#

You havn't told us what you are trying to do

#

why do you absolutely HAVE to have a centered billboard?

orchid wagon
#

can someone help me with lands config ?

rough drift
#

We found this issue at my work, reported it to mojang as a bug and it was marked as "Works as intended"

#

no luck

cobalt vigil
rough drift
eternal oxide
#

they are not

#

they do exactly what they are supposed to do

rough drift
young knoll
#

Interesting

quaint mantle
#

How to send an action bar message?

eternal oxide
#

Shows as resolved

cobalt vigil
young knoll
eternal oxide
#

yep

cobalt vigil
eternal oxide
#

thats correct as a non centered billboard is rotated around its origin, which is not it's center

young knoll
#

I mean you can still kinda do it

cobalt vigil
#

how so

rough drift
#

TELEPORTATION

#

or well, editing the rotation

rough drift
#

coll how did you do that

young knoll
#

Uhh

#

Let's see if I can recreate it

slender elbow
#

teleport in player move event :kappa:

rough drift
cobalt vigil
#

that would lag behind though

rough drift
slender elbow
#

teleport ahead of time

#

predict the player's movements

glad prawn
#

he's lagging btw

cobalt vigil
rough drift
young knoll
#

It isn't teleporting

cobalt vigil
dawn flower
#

how possible is it to make a changeable hashmap but a specific key cant be changed

rough drift
#

and do your checks in .put

#

and .remove ig

dawn flower
#

what name would it have doe

rough drift
#

¯_(ツ)_/¯

dawn flower
#

i suck at class naming 😭

slender elbow
#

HashMapWithKeyThatCannotBeChanged

dawn flower
slender elbow
#

SingleUnchangeableKeyHashMap

glad prawn
#

nahh ImmutableKeyHashMap

dawn flower
#

ImmutableKeyMap

glad prawn
#

if it's interface

dawn flower
#

what does hash even mean in hashmap

rough drift
#

it is because a HashMap is a type of map that uses hash codes to index keys

young knoll
#

Those are the settings

#

Add as passenger to player, adjust scale as needed

ancient plank
#

hashbrownmap

young knoll
#

Do note it looks a bit weird with view bobbing

glad prawn
#

no

cobalt vigil
#

ah okay so its just the primitive solution, move it further away so the difference isnt as noticable

young knoll
#

Sadly no perfect but not bad

cobalt vigil
young knoll
#

The one I sent just does that

quaint mantle
cobalt vigil
#

maybe its my client, im gonna try vanilla

young knoll
cobalt vigil
young knoll
#

Oh how we love clients breaking things

ancient plank
#

this is why I always
👏 work 👏 in 👏 vanilla 👏

cobalt vigil
#

feather client renders the player over other things for some reason

blazing ocean
#

this is why i'm not a fan of clients

#

they just change a bunch of random shit and often times without a valid reason

tall dragon
#

i meannnn. same could be said for server software

blazing ocean
#

true

#

but most people use spigot/paper/fabric/forge

#

and they have actual docs

#

rather than like ten clients which don't explicitly say what unnecessary changes they made

hot dune
#

Hello! Is there any way to store data inside block like dirt/cobblestone/other placeable blocks (I mean something like persistent data container)?

blazing ocean
#

?pdc

eternal oxide
#

?morepdc

undone axleBOT
eternal oxide
#

?blockpdc

undone axleBOT
eternal oxide
#

^

hot dune
#

okay, thanks, will check

quaint mantle
#

hello, in AsyncPlayerChatEvent, how could i prevent the message from being sent, event.setCancelled(true) doesn't do anything

eternal oxide
#

clear recipients

young knoll
#

setCancelled should work

slender elbow
#

cancelling the event will work if you don't use shitty chat plugins

young knoll
#

Provided other plugins aren't being weird

valid burrow
quaint mantle
#

ok it works with only my plugin installed

#

so yea it's a chat plugin issue

#

can i use event priority or smth to make it bypass other plugings?

valid burrow
#

well

#

you could set the priority to be executed first yh

quaint mantle
#

i set it to highest

#

and it didn't work

eternal oxide
#

lowest

quaint mantle
#

ooh

#

lowest is executed first?

eternal oxide
#

yes

valid burrow
#

yes

quaint mantle
#

ok thx lemme try

#

ok it works thxxx

dawn flower
#

how does packet logging before join event is called really work

polar forge
#

Hey guys

blazing ocean
#

hey

polar forge
#

Could anyone please help me in this?

blazing ocean
#

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

polar forge
#

I’m just asking politely

#

But

blazing ocean
#

then ask your question

polar forge
#

I need to set the luckPerms instance field to the provider

#

How do I do that

slender elbow
#

this.luckPerms = provider.getProvider()

#

you need to assign the LuckPerms instance given in the provider to the luckPerms field

polar forge
#

Thx!

polar forge
#

I need now to use the plugin field to access the getLuckPerms method and get the player's prefix

#

How would I do it?

slender elbow
#

you have a field in some other class of your plugin type, you can call getLuckPerms() on that field

you were explained for 4 continuous hours how to assign a variable to a field and it seems you still don't understand it, i am sorry but i don't have the time to teach you java from day 1, you really should look into doing a basic java course that is dedicated to that

#

?learnjava

undone axleBOT
#

For Beginners:

Codecademy - Learn Java: Interactive Java programming course from basics to more advanced concepts. Perfect for absolute beginners.
https://www.codecademy.com/learn/learn-java
JetBrains Academy - Java Developer Track: Learn by doing with projects and challenges. It covers Java fundamentals to advanced topics.
https://www.jetbrains.com/academy/
Udemy - Java Programming Masterclass for Software Developers: Updated courses that cover Java 8 to Java 17 features. Suitable for those who prefer structured learning.
https://www.udemy.com/course/java-the-complete-java-developer-course/

For Intermediate to Advanced Learners:

Oracle Java Tutorials: The official guides by Oracle for Java programming—great for understanding the depth of Java.
https://docs.oracle.com/javase/tutorial/
Baeldung - Learn Java and Spring: Focus on Spring Framework and modern Java technologies. Best for intermediate learners aiming to expand their knowledge.
https://www.baeldung.com/

Practice and Hands-on Learning:

Exercism - Java Track: Solve exercises and get feedback from mentors. Great for practicing coding skills.
https://exercism.io/tracks/java
LeetCode: Practice your coding skills and prepare for technical interviews with Java.
https://leetcode.com/

Free Resources and Documentation:

Java Programming and Documentation: A comprehensive collection of Java programming guides, tutorials, and API documentation.
https://docs.oracle.com/en/java/

Community and Support:

Stack Overflow: A vast community of developers. Great for getting help with specific problems or understanding concepts.
https://stackoverflow.com/questions/tagged/java
r/learnjava on Reddit: Join the community of Java learners and get advice, share resources, and discuss projects.
https://www.reddit.com/r/learnjava/

Remember: Learning to program takes practice and patience. Don't hesitate to experiment with code and participate in community discussions. Happy coding! 🎉

worthy yarrow
#

So I've got a decompiled jar, created a new project from it, yet the file is still read only?

#

I've literally just got to change a single command alias D:

eternal oxide
#

alias is in teh plugin.yml so why decompile?

sand spire
#

If I want to make something configurable but through a GUI (to save time writing), should I still use a .yml file or should I use a database

worthy yarrow
#

I wasn't aware of any other way to edit

eternal oxide
#

if you are only making a change to the plugin.yml you can edit just that file

#

a jar is just a zip archive

worthy yarrow
#

right I guess I always be trying to make it 100x more difficult on myself

eternal oxide
#

open with 7zip, edit plugin.yml, close file and done

dawn flower
#

winrar >>>>>>

eternal oxide
#

eww winrar

worthy yarrow
dawn flower
#

use winrar not 7zip!!!!!!!!!!11

eternal oxide
#

7zip super duper. Winrap poo poo!!!!1

worthy yarrow
#

Last time I switched to another ui was simply because of the ui, they do the same thing D:

dawn flower
#

winrar better tho

#

better compression

#

better ui

#

better everything

eternal oxide
#

totally incorrect. they use teh same compression

dawn flower
#

prove it

eternal oxide
#

its just a different UI

dawn flower
#

7zip looks shit tho

eternal oxide
#

prove it, lol

polar forge
#

How do u use your plugin instance field to access the getLuckPerms method?

slender elbow
#

🥲

polar forge
#

I’m not understanding it

slender elbow
#

which is why i strongly suggest you do a java course

polar forge
#

But could u help me on this?

slender elbow
#

you have a field in your listener class
that field is your plugin instance
your plugin class has a getLuckPerms method
in your listener class, you call getLuckPerms on your plugin field whenever you want to access it

#

fields and methods are day 1 java material, i strongly, boldly recommend you do a java course

slender elbow
#

clearly

polar forge
#

But I mean, how would u code it

slender elbow
#

._.

polar forge
slender elbow
#

no, those are types, those ones specifically are primitives

#

a field is a "variable" that lives in a class rather than locally in a method

polar forge
#

Could u make me an example code so that I can schematically have an image of the situation?

dawn flower
#

luckperms have docs

slender elbow
#

you say you know but you lack knowledge, hence why i keep suggesting you do a course, plugin development requires a minimal amount of knowledge

dawn flower
polar forge
dawn flower
#

they have examples

slender elbow
#

my guy

#

you are only making this painful for yourself

#

for no reason

dawn flower
#
RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class);
if (provider != null) {
    LuckPerms api = provider.getProvider();
    
}```
this is how you get a luckperms instance
#

u don't need "getLuckPerms"

dawn flower
#

then why do u need getLuckPerms?

polar forge
#

That’s what they want me to do in the luckperms dsc srv

slender elbow
#

there are no downsides to doing a course, only upsides, you will gain knowledge and understand what people mean when they say "field", "class" and "method"

dawn flower
polar forge
#

So I’m trying to implement luckperms prefixes

#

And colored username

dawn flower
#

so your code broke something in luckperms and ur trying to copy what luckperms is doing

#

just fix what ur plugin broke..

polar forge
#

Should I send the code?

dawn flower
#

send the chat listener where u add hoverable text

slender elbow
#

how do you usually call a method? let's say you have a variable called response and it has a method called getText(), how do you call that method?

rough drift
#

getText()

#

?

#

Am I dumb

slender elbow
#

not you .....

rough drift
#

aight

polar forge
#

Here’s my chatlistener

high arrow
#

🧐

slender elbow
#

bru

#

okay

#

response.getText()

#

do a java course....

polar forge
slender elbow
#

you are only making this hard for yourself for literally no reason

high arrow
#

Hello, I have a problem concerning bungeecord, when i try sending a player through bungeecord's plugin channel, it works on another plugin but not the one I'm currently on, there's no error anywhere and i registred the outgoing channel, thanks for your help.

#

here's the code

#
@Override
    public void onEnable() {

        if(!getDataFolder().exists())
            getDataFolder().mkdir();

        getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
}
#
public void teleportToServer(Player player, String server)
    {
        ByteArrayDataOutput out = ByteStreams.newDataOutput();

        out.writeUTF("Connect");
        player.sendMessage("Writing Connect...");
        out.writeUTF(server);
        player.sendMessage("Writing Server...");

        player.sendMessage("Executing last line...");
        player.sendPluginMessage(this,"BungeeCord", out.toByteArray());
        player.sendMessage("Teleport has been executed");
    }
#

I also tried DataOutPutStream

peak depot
#

what item for gui as an "info" item what a state currently is

high arrow
#

what

polar forge
#

@dawn flower u found anything?

dawn flower
#

not really, i'm confused how that broke it

polar forge
#

They told me this

dawn flower
#

oh wait

#

ic the issue

#

luckperms was never set

peak depot
# high arrow Hello, I have a problem concerning bungeecord, when i try sending a player throu...
public static void sendPlayer(Player player, String serverName) {
        ByteArrayOutputStream b = new ByteArrayOutputStream();
        DataOutputStream out = new DataOutputStream(b);
        try {
            out.writeUTF("Connect");
            out.writeUTF(serverName);
        } catch (IOException eee) {
            Bukkit.getLogger().info("You'll never see me!");
        }
       player.sendPluginMessage(Main.getInstance(), "BungeeCord", b.toByteArray());
    }
im Main:
 getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); 
dawn flower
#

add this method to ur main class

dawn flower
#
public LuckPerms getLuckPerms() {
  return api;
}```
polar forge
eternal oxide
#

bungee channel is incorrect

#

You shoudl be seeing errors in your startup log

polar forge
high arrow
eternal oxide
#

The error in your logs should tell you

#

unless I'm thinking of custom channels

worthy yarrow
#

possible to create a "shop" from deluxemenus?

dawn flower
high arrow
eternal oxide
#

I guess I'm thinkong of custom then

dawn flower
#

and replace private LuckPerms luckPerms; with private LuckPerms luckPerms = plugin.getLuckPerms();

polar forge
#

Where is that?

#

Could u tell me the line?

eternal oxide
high arrow
#

ah bruh

eternal oxide
#

at what point in teh player connecting?

high arrow
#

what ?

peak depot
#

are you sending him while he is still connecting?

eternal oxide
#

in player join event, or while online and playing?

high arrow
#

while online and playing

eternal oxide
#

I see no issue then

#

other than

#

you are writing to out, but getting a byteArray from b

high arrow
#

i tried also this

public void teleportToServer(Player player, String server)
    {
        ByteArrayOutputStream b = new ByteArrayOutputStream();
        DataOutputStream out = new DataOutputStream(b);

        try{
            out.writeUTF("Connect");
            out.writeUTF(server);
        }catch (IOException er){
            er.printStackTrace();
        }

        player.sendPluginMessage(this.main,"BungeeCord", b.toByteArray());
eternal oxide
#

yes

high arrow
#

and this works in another plugin but not this one

eternal oxide
#

you are writing to out and getting the array from b

high arrow
#

yes

#

but out is initialized from b

eternal oxide
#
ByteArrayDataOutput out = ByteStreams.newDataOutput();
try{
    out.writeUTF("Connect");
    out.writeUTF(server);
}catch (IOException er){
    er.printStackTrace();
}
        player.sendPluginMessage(this.main,"BungeeCord", out.toByteArray());```
worthy yarrow
#

elgarl I'm curious to see the size of your local repo (intelliJ generated repos)

high arrow
#

theres two possibilities that i know

#

that are supposed to work

#

but doesn't in the plugin im on

worthy yarrow
#

like

#

/users/user/.m2/repository/somerepo

eternal oxide
#

9.54 GB (10,251,460,193 bytes

worthy yarrow
#

dear god

#

I'm only up to 800mb D:

eternal oxide
#

Mine is not all SPigot/MC stuff though

worthy yarrow
#

I'd assume not, mine is however

eternal oxide
#

I've written game engines and simulations.

#

as well as a bit of AI

worthy yarrow
#

ooo

#

My experience is 100% in minecraft framework so I'm still a noob D:

worthy yarrow
#

not fun

high arrow
#

solved, i wasn't even using the right string lol

peak depot
#

whats the event for nametagging an entity?

polar forge
#

Can anyone please just tell me How u do use your plugin instance field to access the getLuckPerms method?

#

I’ve been stuck here since 3 days

peak depot
#

Bungee or spigot?

polar forge
#

Spigot

rapid vigil
peak depot
# polar forge Spigot

<dependencies>
<dependency>
<groupId>net.luckperms</groupId>
<artifactId>api</artifactId>
<version>5.4</version>
<scope>provided</scope>
</dependency>
</dependencies> add this to your pom, onEnable or where ever: RegisteredServiceProvider<LuckPerms> provider = Bukkit.getServicesManager().getRegistration(LuckPerms.class); if (provider != null) {
LuckPerms api = provider.getProvider();

}

polar forge
peak depot
#

send your code

polar forge
peak depot
#

doesnt exist

polar forge
#

Ops

polar forge
eternal oxide
#

at luckperms as a softdepend to your plugin.yml

peak depot
#

ah nvm

peak depot
#

add softdepend: [LuckPerms] to your plugin.yml

blazing ocean
#

pretty sure it's this:

softdepend:
  - LuckPerms
remote swallow
#

both work

blazing ocean
#

not sure if that's some fancy yaml

#

yaml having array syntax is crazy

peak depot
blazing ocean
#

ag

#

aj

peak depot
#

but yeah both should work

blazing ocean
#

ah

tall dragon
#
foo: [bar, foo]
foo:
  - bar
  - foo

these are the same

blazing ocean
#

yaml being wild again

#

i hate yaml so much

rapid vigil
#

I prefer the second one 😜

blazing ocean
#

yeah same

polar forge
#

I prefer the first one

#

But this is a matter of opinions

blazing ocean
#

yeah

peak depot
#

like yeah I use the second but I just copy pasted the docs and changed the plugin name

blazing ocean
#

can we all agree that yaml kinda sucks

polar forge
#

^

#

Btw I added it

#

Anything else?

peak depot
#

try it and see what happens

polar forge
#

Let’s see

ivory sleet
blazing ocean
undone axleBOT
rapid vigil
blazing ocean
#

yessss

rapid vigil
#

I was never informed of his return 4592skeletondancin

high arrow
#

hello, is there anyone that knows how to return a task with the class extended ? Like this please

#
public BukkitTask getTask(){
        return this;
    }
#
public class Scheduler extends BukkitRunnable {
#

so when the class has been initialized it runs the runnable, but how to get it please ?

polar forge
#

Guys again????

#

Like how is it possible

#

I’ll post a complete code

high arrow
#

initialize luckperms in the onenable

remote swallow
#

do you actually have luckperms on your server

polar forge
#

Obviously yes

#

U can see it in the console being loaded

high arrow
#

to make sure it has been initialized after the plugin enables

onyx fjord
#

is it possible that methods can clash with each other in two different implementations of a clash even tho they are static?

glad prawn
#

he just doesn't initialize his fields xd

onyx fjord
#

or its some bug

polar forge
eternal oxide
undone axleBOT
rapid vigil
# high arrow so when the class has been initialized it runs the runnable, but how to get it p...

I suppose you mean something like this:

public class MyRunnable extends BukkitRunnable {
    
    @Override
    public void run() {
        // whatever
    }
}```
```java
public class MyMain extends JavaPlugin {
   
    private MyRunnable myRunnable;

    @Override
    public void onEnable() {
        this.myRunnable = new MyRunnable();
        this.myRunnable.runTaskTimer(this, 0L, 20L);
    }

    public MyRunnable getMyRunnable() {
        return this.myRunnable;
    }
}```
high arrow
#

bruh

glad prawn
polar forge
#

Ops

#

Wrong file

eternal oxide
#

?paste your HoverListener

undone axleBOT
polar forge
#

This is my main class

eternal oxide
#

ChatListener

polar forge
#

Chat or Hover?

granite owl
#
public Character getKeySeperator()
    {
        return Character.valueOf(this.settings.keySeperator);
    }
``` does this still return a reference to the encapsuled object or a new instance?
eternal oxide
#

chat

onyx fjord
#

or cached

#

if its a character between 0 and 127 i believe