#help-development

1 messages ยท Page 659 of 1

vital ridge
#

yeah

wary topaz
eternal oxide
#

post teh full error

wary topaz
#

there is no error

#

i hand wrote that

#

its a try/catch

eternal oxide
#

its a switch default case

wary topaz
#

yes but its not set

#

but the code sets it

#

plugin.language.setPlayerLanguage(player1, "en");
isnt working

#

I dont know why.

eternal oxide
#

no, its saying the language for that player is not en or sp

wary topaz
#

what im saying that it is not set

#

this is not the uuid

#

this is my other account

#

idk why its not set

eternal oxide
#

add some debug to see why. perhaps teh player name adn the language it says it is

#

line 53 of your Language class

wary topaz
#

why is it not settingggg

eternal oxide
#

add some damn debug

wary topaz
#

I did

#

it shows that plugin.language.setPlayerLanguage(player1, "en");
doesnt work

eternal oxide
#

so what language does it say?

wary topaz
#

it doesnt say any

#

it doesnt say anything

#

but it works for my alt

#

which doesnt make sense

eternal oxide
#

well your sql in the setPlayerLanguage is invalid

wary topaz
#

?

eternal oxide
#

you read FROM Players.PlayerData buty write WHERE PlayerData.

wary topaz
#

ohh

#

INSERT INTO PlayerData (UUID, Lang, Player_ID, Online) VALUES ('982a8088-af48-4b7e-a06e-3ac2e079cccd', 'en', NULL, '0')

eternal oxide
#

line 24 of Language

wary topaz
#

yes ik

eternal oxide
#

update is correct, but msot of teh rest is wrong

wary topaz
#

public void setPlayerLanguage(Player player, String s) { try (Connection connection = plugin.sql.getConnection()) { PreparedStatement insertStatement = connection.prepareStatement("INSERT INTO PlayerData (UUID, Lang, Player_ID, Online) VALUES (?, ?, NULL, '0')"); insertStatement.setString(1, s); insertStatement.setString(2, player.getUniqueId().toString()); insertStatement.executeUpdate(); } catch (SQLException e) { throw new RuntimeException(e); } }

eternal oxide
#

you don;t want to INSERT if data already exists

wary topaz
#

it doesnt

#

if (plugin.language.getPlayerLanguage(player1).isEmpty()) {

#

ill add a new class calld updateLanguage

#

later

eternal oxide
#

if data is already in sql you don;t want to insert

wary topaz
#

yes ik

eternal oxide
#

ok

wary topaz
#

but the data is not

#

hows that

#

look good?

eternal oxide
#

you didn;t listen at all ๐Ÿ˜ฆ

wary topaz
#

I did!

#

the data is not in mysql

#

so im just setting it

#

if I update it it will just return an error

eternal oxide
#

you are also creating your statement inside your try/catch not in the try with resources

wary topaz
#

try with resources?

eternal oxide
#

try ( resources here) { blah

#

you only define teh connection there

#

you should do both connection and statement

wary topaz
#

but im going to be using it multible times so it will save duplicates

eternal oxide
#

doesn;t matter

wary topaz
#

i cna make it throw an exception?

eternal oxide
#

in a try with resources you put all your closables in the ().

tired marten
#

You don't mind if I ask something real quick?

wary topaz
#

everythings working thanks ElgarL!

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!

tired marten
#

Ok then

#

Does Bukkit/Spigot API support commands with spaces?
In other words, is server capable of recieving full command-line issued by player, not just args so the ' ' characters aren't reduced?

  • I issue the command: /some-command "Many Spaces"
  • Using onCommand from CommandExecutor, I am only able to recreate /some-command "Many Spaces"
    Here's my code
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    String cmdLine = label + " " + String.join(" ", args);
    plugin.getLogger().info(cmdLine);
    return true;
}

Significant spaces are gone, but I need them.

wary topaz
#

No but you can use arguments to get the same result

tired marten
#

wdym

#

show me

wary topaz
#

oncommand:
command = hi
if (args.length == 1) {
if (args[0] == "test") { do stuff }
}

the command would be /hi test (args[1...])

tired marten
#

Sorry, I don't get it

wary topaz
#

use arguments to substitude for your command args[0]

#

why do you want to do this anyway?

tired marten
#

because I input json into my command

wary topaz
#

huh?

tired marten
#

you know the vanilla /data command?

wary topaz
#

yea

tired marten
#

/data modify block ~ ~ ~ something set value "2spaces "

wary topaz
#

Wait for ElgarL to get back I dont understand what youre saying

eternal oxide
#

only the inital command is registered (no spaces)

#

anything typed after is in the args[] array

#

best not to use label as that is the command as typed and not the command that was registered. It may be the alias

tired marten
#

IKR

eternal oxide
#

What do you want to do with the json?

tired marten
#

being able to deliver it to server with all the significant spaces in it.
I know one way to do it but it's ugly.
I just hold writable_book and then run the command and then the command handler looks into my hand and reads book contents

wary topaz
eternal oxide
#

then cmd.getName() or whatever it is..

#

then as you did... if (args.length > 0) String.join

wary topaz
tired marten
#

I forgot what cmd.getName() does but I remember that it didn't do the thing for me

wary topaz
#

lobbyJoin=&e&l{Player} has joined the lobby!
lobbyQuit=&e&l{Player} has left the lobby!

eternal oxide
#

it gets teh registered command name

tired marten
#

This is not my question

#

Sorry, am I hard to understand?

eternal oxide
#

I guess so

tired marten
#

My bad

wary topaz
#

cmd.getname returns the command that was executed's name

#

its only useful if you have multible commands in the same class

tired marten
#

Thanks, but again, this is not what I need

wary topaz
#

what do you need?

mild ruin
#

I'm using Bungeecord how to make warps for players to jump servers?

tired marten
eternal oxide
#

Bungee has no clue what worlds or Locations are, it only knows servers

#

you can use plugin messaging channels to send a player between servers

eternal oxide
tired marten
#

Wait what. I'mma check that

dense blaze
#

Anyone know a good way to allows players to sleep in the day or play the sleep animation screen to a client? Most of the stuff out there I am seeing is related Protocol Lib using the removed Bed packet.

echo basalt
#

never expected to be using decorators in spigot

river oracle
eternal oxide
#

String.join passing args and a space delimiter should add in teh correct number of spaces

echo basalt
#

but here we are

river oracle
#

beautiful

mild ruin
river oracle
echo basalt
#

shit it's 5am

eternal oxide
#

yep

echo basalt
#

gotta be up at 3pm

eternal oxide
#

well 4:30

echo basalt
#

don't think imma make it

#

4:29

#

we're all blind

eternal oxide
#

I'm up with my doggie. She's old and unwell so I'm chasing her around with kitchen roll to clean up her puddles.

echo basalt
#

d o g e

#

sometimes I wonder why I'm about to visit the states to visit like 2 people if I can just fly to the uk and visit half this server

echo basalt
#

so do we

#

I've been at europa park

#

they're not that special

wet breach
#

Yeah, but the US its better ๐Ÿ˜›

echo basalt
#

clown

wet breach
#

like, we have a ride where its on a pendulum

tired marten
#

I checked that

wet breach
#

and it seats like 50 people in a circle

echo basalt
#

so?

wet breach
#

and it spins as it goes back and forth on the pendulum and then it does a whole turn around the top

echo basalt
#

We have those here

wet breach
#

and then before it stops it stops you at the top

#

and spins

echo basalt
#

but for 16 people

eternal oxide
echo basalt
#

it's ran by this family of gypsies that travel around the country and creaks all the time

wet breach
#

so you are spinning while upside down while some 150ft in the air XD

echo basalt
#

so you know you can trust it

#

I've gone to it a few times

wet breach
#

this ride also operates at night too ๐Ÿ™‚

echo basalt
#

nothing special

#

frosty thinking his american rides are special

eternal oxide
#

sysout args.length

#

then add spaces to see if args gets longer

echo basalt
#

Maybe we should move to general

#

It's been quiet for like 2 hours

tired marten
#

For some reason it doesn't work, ElgarL. Idk if it matters but I am using Forge 1.14.4 client + Optifine. Also my server is Bukkit, not Spigot

wet breach
eternal oxide
#

it can;t be trailing spaces. has to have text at the end

wet breach
#

you just have to try to the American ones

echo basalt
#

Now we can argue they're too safe

#

Where's the fun in that

wary topaz
#

pov: you are dedicated:

settings.addEnchantment(Enchantment.DURABILITY, 1);
itemmeta.setDisplayName(plugin.language.getMessageByLanguage(plugin.language.getPlayerLanguage(player), "serverSelector", player));
List<String> list = new ArrayList<>();
list.add(plugin.language.getMessageByLanguage(plugin.language.getPlayerLanguage(player), "serverSelectorOpen", player));
settings.setItemMeta(itemmeta);
return settings;

echo basalt
#

pov: you don't know oop

wet breach
echo basalt
#

intents*

wet breach
#

since no one but spigot is updating bukkit

wet breach
#

๐Ÿ˜›

echo basalt
wet breach
#

but yes you are right lol

echo basalt
#

I heard ebic ran out of nitro

#

while you're at it

#

๐Ÿ˜›

wet breach
#

yeah can't do anything about that till the end of the week

echo basalt
#

broke

#

want me to cover for it?

wet breach
#

I am not broke, but some things didn't line up like I wanted them to, spending will continue at the end of the week keep within budget

#

I went gambling on the lottery

#

๐Ÿ™‚

#

I plan to throw down some more on it XD

#

its over a bil right now

echo basalt
#

how much did you waste

wet breach
#

like $500

echo basalt
#

what the fuck

#

let me be your lottery

wet breach
#

but I won some of it back though, so it came out to like $200 wasted

echo basalt
#

I'll consistently give you 50% back

#

gotta buy new glasses tomorrow paintomato

wet breach
#

the next drawing is this Tuesday

#

I need more numbers ๐Ÿ˜›

echo basalt
#

because my homie accidentally threw a water bottle at my face and they brokey

wet breach
#

if I win, I will give you a mil

echo basalt
#

Sure

#

RIP my savings

wet breach
#

I am going to go with lump sum

#

which is like $700mil

wary topaz
#

dont you love intellij

wet breach
#

no

#

I use NetBeans its the official IDE of spigot ๐Ÿ™‚

wet breach
# echo basalt what the fuck

I was going to spend more then that, but I decided not to. Also I couldn't pull money out fast enough either to do so

#

which is probably good

echo basalt
#

Got the 5am munchies time to make a cheese pizza

#

Family's asleep with all the doors open

tired marten
quaint mantle
# wet breach no

hi bro
i will store player's server options
like toggle teleport requests or friend requests
players can always turn this off and on
this one is constantly querying the database, does this cause lag?

echo basalt
#

High risk high reward

wet breach
#

oh yeah, but its worth it sometimes though

#

as long as you don't spend more then what you will get

sweet sonnet
#

are you part of the 99 or 1%

wet breach
#

more like the 30% at the moment

#

no one has won 31 drawings in a row

#

however a lot of us have won by having some matching numbers including power ball

tired marten
wet breach
#

thats how I got some of my money back ๐Ÿ˜›

#

I should probably introduce Alex to American lottery

echo basalt
#

Y'all got too much moneys

quaint mantle
#

u guys not sleep ?

sweet sonnet
#

in new zealand lottery money goes back to the community so in a way its not that bad gambling

echo basalt
wet breach
echo basalt
#

Makin pizza rn

sweet sonnet
wet breach
#

well it depends on the lottery

quaint mantle
wet breach
#

the one that is at a bil is the mega millions, and that is split between like 6 or 7 states

echo basalt
#

I should make a DirtyMap collection for database use

wet breach
quaint mantle
#

๐Ÿ‘

wet breach
#

How all that money is split up I don't really know as I haven't looked at the ledgers for the various departments etc nor do I really have an interest to really go do that

#

mainly because I have to schedule a time to go do that

wary topaz
#

`if (Objects.requireNonNull(event.getItemDrop().getItemStack().getItemMeta()).getDisplayName().equals(Objects.requireNonNull(plugin.items.settings(event.getPlayer()).getItemMeta()).getDisplayName())) {

    }`

any better way to do this?

#

comparing itemmeta doesnt work

echo basalt
#

?pdc

wet breach
#

probably not using requirenonnull when you don't have control over something being null

wary topaz
#

ty

wet breach
#

really wish intellij would stop recommending using that

#

and some other things

#

its not that those things are not useful, but they are only useful in certain things and if you don't know what they really do or how it exactly works its best people don't touch it. not even sure why IntelliJ's IDE started recommending the use of these Java API's either

wary topaz
#
NamespacedKey key = new NamespacedKey(plugin, "settings");
        settings.addEnchantment(Enchantment.DURABILITY, 1);
        settingsMeta.setDisplayName(plugin.language.getMessageByLanguage(plugin.language.getPlayerLanguage(player), "serverSelector", player));
        List<String> list = new ArrayList<>();
        list.add(plugin.language.getMessageByLanguage(plugin.language.getPlayerLanguage(player), "serverSelectorOpen", player));
        settingsMeta.setLore(list);
        settingsMeta.getPersistentDataContainer().set(key, PersistentDataType.DOUBLE, 0.1);

        settingsMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
        settings.setItemMeta(settingsMeta);`




NamespacedKey key = new NamespacedKey(plugin, "settings");
        ItemMeta itemMeta = event.getItemDrop().getItemStack().getItemMeta();
        PersistentDataContainer container = itemMeta.getPersistentDataContainer();

        if (container.has(key, PersistentDataType.DOUBLE)) {
            double foundValue = container.get(key, PersistentDataType.DOUBLE);
            if (foundValue == 0.1) {
                event.setCancelled(true);
            }
        }```
wet breach
#

you know, it would be better if you just use code blocks

#

as it has highlighting etc

wary topaz
#

is this correct though?

wet breach
#

so right after the 3 back ticks, type java

#

and it adds the highlighting

#

if you didn't already know

small holly
#

Hey so since they removed perminante potion effects, how can I make it that the thing stays 24/7 I tried with health boost but every time it gives the effect again it just resets the HP

wet breach
#

the ones at the beginning XD

#

not at the end lmao

#

almost there

#

same line as the back ticks

#

with no space

#

ah now we went before the back ticks but still close

wary topaz
#

ay

wet breach
#

Woo

#

mission accomplished

wary topaz
#

okay so now my question

#

lol

wet breach
#

it looks correct

#

only thing I could probably recommend, is learning how to create chain methods to make it look better ๐Ÿ™‚

wary topaz
#

ty

#

could I remove the foundValue as the key is enough

#

its like having 2 passwords

#

I only need 1

wet breach
#

sure

#

pretty sure it should still work

wary topaz
#

java.lang.IllegalArgumentException: Specified enchantment cannot be applied to this itemstack

#

how can I bypass this?

#

settings.addEnchantment(Enchantment.DURABILITY, 1);

#

its a netherstar

#

i just want it to be enchanted

small holly
wary topaz
#

tys,

#

tysm*

wet breach
#

what a lovely scenery with the netherstar

wary topaz
#

lol

wet breach
#

Netherstar of returning. Returns to the user when thrown. Effects are exploding on contact

#

would be a nice weapon to use when a horde of zombies are after you

#

welp, time for me to go play some billiards now

#

some people want me to play ๐Ÿ˜„

wicked totem
#

does chatcolor not work for display name? its working fine for tab list but when i do it for display name it sends a "Chain link failed, continuing to next one
java.lang.IllegalStateException: Missing key in ResourceKey" error after i try to send a chat message. i think it was working before i moved the plugin up to 1.20 so not sure why it wont anymore

wary topaz
#

private final Map<Predicate<InventoryClickEvent>, BiConsumer<PersistentDataContainer, Player>> handlers;

sterile breach
#

I don't really see the point of a random player

slender elbow
#

well it has to pick a player

#

it might not be at random but might be indeterministic, I wouldn't rely on it picking any specific player

boreal sparrow
#

In the player interact event, I am checking if the player pressed a sign. How can I check which side the player pressed in terms of Side.FRONT and Side.BACK

echo basalt
#

It sends the message

#

through all players

wicked totem
#

how do i set a display name's color? chat color doesnt work anymore it seems

sterile breach
fast merlin
#

hey so im forking spigot and when i commit and rebuild patches for some reason the default commands or java org bukkit (something like that) isnt saving, working in git fine as i can see but when i build it nothing changes? anyone know what could be the issue

boreal sparrow
#

So I'm getting this error:

 Could not pass event PlayerInteractEvent to SpleefSign v1.0-SNAPSHOT
org.bukkit.event.EventException: null

...

Caused by: java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_20_R1.block.CraftBlockState cannot be cast to class org.bukkit.block.Sign (org.bukkit.craftbukkit.v1_20_R1.block.CraftBlockState and org.bukkit.block.Sign are in unnamed module of loader java.net.URLClassLoader @6d21714c)
    at com.sindn.speelsign.spleefsign.Events.onPlayerClick(Events.java:36) ~[?:?]
    at jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:578) ~[?:?]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]

My code is:

@EventHandler
    public void onPlayerPlace(BlockPlaceEvent event) {
        Player player = event.getPlayer();

        Block block = event.getBlockPlaced();

        Sign sign = (Sign) block.getState();

        if(sign.getType() == Material.SPRUCE_SIGN){
hybrid turret
#

Casting a state to Sign?

boreal sparrow
#

Did I understand this wrong?

getState
@NotNull
BlockState getState()
Captures the current state of this block. You may then cast that state into any accepted type, such as Furnace or Sign.

hybrid turret
#

hold on

#

maybe i'm stupid

boreal sparrow
#

Actually I'm stupid

#

I sent the wrong event

hybrid turret
#

oh lmao

#

happens

boreal sparrow
#

here's the one causing the error:

 @EventHandler
    public void onPlayerClick(PlayerInteractEvent event) {
        Player player = event.getPlayer();

        Block block = event.getClickedBlock();
        if(block == null){return;}

        Sign sign = (Sign) block.getState();
hybrid turret
#

hmm

#

I'm guessing Sign sign = (Sign) block.getState() is at line 36?

boreal sparrow
#

My import is import org.bukkit.block.Sign; which I think is correct

hybrid turret
#

Haven't used the InteractEvent yet... your best bet is waiting for someone else. i'm probably also gonna take some time to figure this out

#

having some casting problems myself rn lmao

boreal sparrow
#

One thing tho: the event does actually work fine, but that error is driving me crazy lmao

hybrid turret
#

wait, everything works even though you get that error???

boreal sparrow
#

Yea

hybrid turret
#

That's... weird.

topaz panther
#

@boreal sparrow what error?

topaz panther
#

eh

#

you can add a check to ensure the clicked block is a Sign before casting it

#

try this code hold on

#
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;

public class yourthinghere implements Listener {

    @EventHandler
    public void onPlayerClick(PlayerInteractEvent event) {
        Player player = event.getPlayer();

        Block block = event.getClickedBlock();
        if (block == null) {
            return;
        }

        BlockState state = block.getState();
        if (!(state instanceof Sign)) {
            return;
        }

        Sign sign = (Sign) state;
    }
}```
#

tell me if it works ๐Ÿคทโ€โ™‚๏ธ

boreal sparrow
#

yep launching my test server rq

#

Does seem to work!

#

Thanks!

hybrid turret
#

right! i forgot about instanceof lmao

#

bruh

#

I'm currently trying out the InventoryGUI guide... I'm a bit confused though. Currently at the step before the first example video

#

I don't get how the implementation with the subcommand works.

#

Also do I understand that right? The PersistentDataHolder stores data in items, entities and blocks (such as signs)??

#

so i can have a random sheep being the most important part of my plugin? lmao

topaz panther
#

i never knew about GUIs but ill be there soon ๐Ÿคทโ€โ™‚๏ธ

hybrid turret
#

that's sick as hell

#

and this data can be anything?
players, inventories, general objects, strings, integers etc?

hybrid turret
#

gaw damn that's sexy

topaz panther
#

Has some limitations tho

hybrid turret
#

tell me more

topaz panther
#

thats all i know bro

#

hold up

#

@hybrid turret i know i save ALOT of informations about things ill go dig some up rq

hybrid turret
#

thanks

topaz panther
#

tell me if you don't understand something and ill try finding it out

#

Thats all i know and ill go now @hybrid turret

hybrid turret
#

new man, thanks

topaz panther
#

it's like a Magical Chest

hybrid turret
#

yeah

topaz panther
#

if thats simplier

hybrid turret
#

imma keep trying to serialize inventories for gson lol

topaz panther
#

ight have a good day just ping me if you need help

hybrid turret
#

will do, thanks :)

vast junco
#

Is it possible to use an event to set keepinventory to true when certain mobs kill players? e.getEntity() in PlayerDeathEvent only returns a player or null

#

if not, is it possible with nms (i just need a pointer in the right direction)

cursive kite
#

I need help, a player figured out how to crash my server

#

I cannot figure out how

#

They died like 100 times

#

Anytime they join now it goes crazy killing them

#

Until I get this

eternal oxide
#

?1.8

undone axleBOT
eternal oxide
#

ban them

cursive kite
#

I understand 1.8 is old ๐Ÿ˜ฆ

#

I don't think it's my code

#

But they are stuck in a loop of dying

eternal oxide
#

then it's probably your code

cursive kite
#

Everytime he joins

#

he gets stuck dying

#

until the server crashes

eternal oxide
#

?nocode

undone axleBOT
#

Itโ€™s hard to answer a programming question without code
Oh no! You ran into a problem. But no worries, people are willing to help, but first they need to see your code. This is because otherwise, they would be providing help based on guesses instead of concrete knowledge. Whether it be a compile error, runtime error, or an unexpected output, I'm sure that if you were to provide code, you'd receive a quick solution.

cursive kite
#

Well - the console isn't pointing me to my code loll

eternal oxide
#

you must be running somethgin when they die

#

which is triggering itself

#

again and again

cursive kite
#

Well - I tied dying on my other test server now im stuck in dying loop

#

I realy did it now

eternal oxide
#

can't help if you show no code

cursive kite
#

My plugin is huge...

#

I need to find all my death events dont i

eternal oxide
#

only need death/damage code

#

?paste

undone axleBOT
cursive kite
#

I am trying to narrow down the code

cursive kite
#

I found the issue

#

This code is going crazy

simple schooner
#

E

quiet ice
#

BukkitRunnable really needs to get deprecated

sullen marlin
quiet ice
#

It's just not pretty compared to the lambdas (So Runnable as well as the Consumer<BukkitTask>)

ocean hollow
#

How can I best translate Material from English into something else?

#

I donโ€™t think itโ€™s convenient to manually prescribe each material

eternal oxide
#

If it's to display to the client use translatable components

ocean hollow
#

TranslatableComponent component = Component.translatable(Material.DIAMOND_ORE.translationKey()); like that?

remote swallow
#

thats adventure components but close enough

ocean hollow
#

that is, I can safely use it if I would not be on paper?

eternal oxide
#

no

old totem
#

Hello everyone. Why does it crash? What's wrong with my code?

eternal oxide
#

arrays start at an index of zero

#

why are you using packets to equip items?

#

yeah not touching that.

muted dirge
#

How to set a style for a component in 1.19.4 NMS?

lilac dagger
#

i hate the ender dragon, it's so badly written

#

everything is hardcoded

#

even the node paths

#

that lead to 0, 0, 0

opal juniper
muted dirge
#

import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style;

muted dirge
eternal oxide
#

why are you using nms components?

muted dirge
eternal oxide
#

Not an explanation.

#

Why?

muted dirge
eternal oxide
#

Still no reason to use nms

#

Spigot api has Component support

muted dirge
remote swallow
#

bungee chat components

muted dirge
timid hedge
#

Is it possible to make so you can tab complete args in a command? if i have a command that is /Gamemode and there is /gamemode creative, survival, spectator and adventure, can i do so you can use /gamemode c and when you tab its completing it to creative?

timid hedge
#

How?

tall dragon
#

you can use virtualy the same as CommandExecutor

remote swallow
#

use TabExecutor

tall dragon
#

ah mb

quiet ice
smoky anchor
muted dirge
#

why there is getStyle method but no setStyle

remote swallow
#

just use interactive chat

muted dirge
muted dirge
lunar wigeon
remote swallow
#

so go decompile and remap the server software, then just look at the methods

#

or go look at the mappings site

#

?mappings

undone axleBOT
muted dirge
#

but didnt find anything

smoky anchor
#

If you're trying to figure out how to build chat component with nms I suggest you look at /tellraw
My guess is that there is some way to transform the json to java components, that could give you what you need.

native bramble
#

I have this functions - https://pastebin.com/DrKSFDHk
And this code where i use this funcs:java if(!PlayerDataHandler.doesPlayerExists(e.getUniqueId())){ PlayerDataHandler.savePlayerData(e.getUniqueId(), DEFAULT_FULLNAME, DEFAULT_CITY) .thenRun(() -> logger.log(Level.SEVERE, () -> "ะ˜ะณั€ะพะบ ะฑั‹ะป ะดะพะฑะฐะฒะปะตะฝ ะฒ " + PlayerDataHandler.getDatabaseName())); }
Cant understand why savePlayerData is not saving data. Connection is valid. I use CompletableFuture not to load the main thread in which the plugin runs.

gleaming brook
#

how i can promote my plugin?

remote swallow
native bramble
#

i have exceptionally in savePlayerData

#

Is it problem if i have two connections to different databases?

muted dirge
muted dirge
#

why there is no such method

#

is that hard?

remote swallow
#

its nms, if they dont need the method they wont add it

smoky anchor
#

Have you tried looking at mentions of the styles parameter(s)
I would help you more, but I don't have nms code at hand

muted dirge
#

only found item#getStyle() method

remote swallow
#

make it in bungee components first, then convert to nms components

#

even though there is 0 reason to use them

smoky anchor
# muted dirge y

look what the method returns and look how it could be set
in a constructor or via a builder for example

smoky anchor
#

So where is your problem?

smoky anchor
muted dirge
#

but its only for MutableComponent objects

#

maybe i can convert it

#

@smoky anchor

#
MutableComponent mutableComponent = component.copy();
#

you think it would work?

remote swallow
#

?tas

undone axleBOT
muted dirge
#

omg

#

it has eevrything i want

muted dirge
smoky anchor
vital ridge
#

?paste

undone axleBOT
vital ridge
#

This throws a null pointer at line 6

#

Idk why thought, player-experiences configuration section exists

smoky anchor
#

bet the error tells you exactly what is null

vital ridge
#

It doesnt tell me exactly what is null

#

it tells me

#

which line it happens at

smoky anchor
#

what version are you coding for

vital ridge
#

1.8

smoky anchor
#

ah

muted dirge
#

didnt work

eternal oxide
#

guaranteed your getConfiguration().getConfigurationSection("player-experiences") is returning null then

smoky anchor
eternal oxide
#

as he creates a new PlayerExperience object above line 6 it can only be the section is null

smoky anchor
#

well the PlayerExperience could be wrongly created and getPlayerUUID() could just not work

eternal oxide
#

it could be a very broken class, yes

vital ridge
ivory sleet
#

I mean just find whatโ€™s null

vital ridge
#

Yeah the configuration section is null

remote swallow
#

would it be a "suitable" way to keep user data loaded by cafine by every like 5 min just loop over onlineplayers and access the data so it doesnt get removed but does get removed if they log out and dont rejoin?

#

or what would be the proper way to use caffiene in spigot

#

figured it out

pseudo hazel
#

put it in your coffee instead

twin venture
#

Hello there , i have a question so iam trying to make a expired items system , saving it into a mysql with uuid, item , expired_date (long)

is there a better way rather than saving the item name?

remote swallow
#

we need a caffiene tap

#

caffiene spigot

#

@tender shard get on that

pseudo hazel
#

or just use pdc for the spoilage anyways

twin venture
#

oh so i can use NBT API?

smoky anchor
#

?pdc

pseudo hazel
#

no just pdc

twin venture
#

iam on old version .

pseudo hazel
#

oh

smoky anchor
#

so update smh

pseudo hazel
#

well either way should be the same idea

twin venture
#

yeah i think it will work with nbt?

pseudo hazel
#

save the expiration date on the item

twin venture
tender shard
pseudo hazel
#

then you dont need that databae mess in the first place, atleast not for this feature

twin venture
#

i made a shop system for him , so its a timed items shop , when you buy it , it will for example have 1 hour expire date

#

check for expired items when :

  • player join
  • player hit another player
  • player use item
  • player place item
  • player consume item
pseudo hazel
#

I would link the date to the shop and not the item, but thats an implementation detail

#

the way you save it in this file would be how you save it in nbt too

twin venture
#

alright

#

there is where iam saving it into the mysql

#

and giving the item to the player

pseudo hazel
#

insert hadouken meme here*

smoky anchor
#

please use guard pattern instead of spagetti

pseudo hazel
#

so how are you deleting the item if its expired

twin venture
#

?>?

wide coyote
hazy parrot
#

Why not generate random uuid and assign it to item nbt data if you want ensure that item is unique

pseudo hazel
#

ty

smoky anchor
remote swallow
#

early returns

smoky anchor
#

is that how it's called ?

pseudo hazel
#

guard clause/ early returns

#

same thing

smoky anchor
#

ah ok

pseudo hazel
#

de-indentation

smoky anchor
#

oh no, is this your GUI ?
What happens if I place a chest named "Shop"

#

your shop might then break...

pseudo hazel
#

not might, it will xD

#

unless thats the goal

smoky anchor
#

getitem -> getItem

pseudo hazel
#

to place shops anywhere

quaint mantle
#

I can make 2 hikari connections in a java project, right?

twin venture
remote swallow
tender shard
remote swallow
#

i just tried to remove the embed on that ๐Ÿคฆโ€โ™‚๏ธ

tender shard
#

why do people always wanna remove the embeds lol

#

i think they are useful

eternal oxide
#

embeds take up 3/4 of my screen

remote swallow
#

theres not really much useful on it

#

and they're huge

tender shard
#

3/4 ?!

quaint mantle
# pseudo hazel why

i have two database first one getting player settings
second one getting player infos

smoky anchor
#

half for me

remote swallow
#

on the same db

quaint mantle
#

yes

#

so i can connect ?

remote swallow
#

you only need 1 connection pool

#

you can query both from the same one

quaint mantle
#

oh how ?

#

ah

#

wait

#

i know

tender shard
#

by simply using getConnection() again on the same DataSource

remote swallow
quaint mantle
#

i know ๐Ÿ˜„

tender shard
#

ofc you have to close your connections once you used them

quaint mantle
#

but

remote swallow
#

FROM table_name

quaint mantle
#

can i do two connect for database ?

remote swallow
#

sure, its entirely pointless and its more hassle than needed

#

cant stop you

tender shard
#

why would you do that? hikari handles your connections

quaint mantle
#

aight

#

ty

pseudo hazel
#

yeah alex, not everyone has a giant screen xD

tender shard
#

I'm on my laptop with 16 inches

remote swallow
#

this connection will get closed by try with resources right

eternal oxide
#

boasting

smoky oak
#

your dms are worse than mine lol

flint coyote
#

too many fans

remote swallow
eternal oxide
#

63 notifications on PornHub ๐Ÿ˜„

remote swallow
#

hes a mod there kek

eternal oxide
#

or a star ๐Ÿ™‚

remote swallow
#

true

#

but 15 pings in his own server

#

that should be none

flint coyote
#

not everyone always checks his/her messages

smoky oak
#

honestly the most annoying thing about pings is that even servers you marked as muted still ping you

flint coyote
#

If you respond to 1 all 15 want a response, so you keep not responding until you got time

eternal oxide
flint coyote
#

at least the ping does not make a sound then

remote swallow
#

i cant send the tony sticker

#

if i have a db, would it be correct to have a Queue<> of data that needs updating in the db

#

or do i just resave my entire cache

eternal oxide
#

flag things in your cache that change

remote swallow
#

everything but the keys in my cache can change lol

eternal oxide
#

either queue and flush yoru queue at a set interval or flag each with a boolean

#

can, but may not

remote swallow
#

im already gonna need probably like 2 queues for all the different changes, creation, updating

#

but thats doubled because theres 2 data sets

#

this is most likely wrong but the i think the concept is the same

#

might change it to be Pair's instead

sage patio
#

can i create an armor (chesplate or ...) which it does not have any damage protection?

hybrid turret
#

Can I add a hyperlink in player.sendMessage() instead of just the link being displayed?

remote swallow
#

you have to manually do it with components

austere cove
#

ClickEvent.Action#OPEN_URL is the action you need

upper hazel
#

minecraft color encoding not working in 1.20.1
what to do

remote swallow
#

show ur code

tender shard
#

?notworking

undone axleBOT
#

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

upper hazel
#

Chat.color depended

tender shard
#

can you please describe your issue in full sentences

remote swallow
upper hazel
#

yes

remote swallow
#

ur using paper

#

go ask paper not us

tender shard
#

you're using deprecated server software / api

upper hazel
#

yes

hybrid turret
#

what's the correct TextComponent to import?

tender shard
#

ChatColor is NOT deprecated

upper hazel
#

in 1.20.1 in paper deprecated

remote swallow
#

we are not paper

#

go ask paper

#

not us

upper hazel
#

not work now

hybrid turret
#

?whereami

tender shard
remote swallow
sage patio
hybrid turret
remote swallow
#

and send it with player.spigot().sendMessage

upper hazel
#

were paper decrod)

tender shard
tender shard
remote swallow
remote swallow
sage patio
#

no this is not my question xd

remote swallow
sage patio
#

thanks

hybrid turret
smoky anchor
# remote swallow oh this, do it with attributes

Correct me if I'm wrong, I don't usually use attributes but, would there not be 2 attributes then ?
1 of the base protection and 1 to remove the base protection
in which case, you would have to hide them with ItemFlag

remote swallow
#

probably

#

@tender shard will this miss the first collumn and should it be a do while

tender shard
#

no, it starts off before the first row

#

so you always have to call next() at least once

remote swallow
#

ah

young knoll
#

Ha epic is blue

remote swallow
#

shut up

#

frost is trying to win the lottery

shadow night
#

Wait fr, epic is blue now

#

Life will never be the same

cunning crater
#

I'm coding a permission/groups plugin, how can I make a permission like plugin.something.* work? The * seems to be something the permission plugin has, not a default spigot thing. I'm using Spigot 1.8.8.

quaint tapir
#

` private int extractNumberFromString(String input) {
// Remove color codes from the input string
String strippedInput = ChatColor.stripColor(input);

    // Remove all non-digit characters from the string
    String digitsOnly = strippedInput.replaceAll("[^0-9]", "");

    // Parse the remaining digits as an integer
    int extractedNumber;
    extractedNumber = Integer.parseInt(digitsOnly);

    return extractedNumber;
}`
#

this gives me an error in the console

#

the line with the problem is

#

extractedNumber = Integer.parseInt(digitsOnly);

#

does anyone know the issue

hybrid spoke
#

?paste the exception

undone axleBOT
median berry
#

How can I get a random player who won't be the one who used the team?

hybrid spoke
#

no idea what you are on about

smoky anchor
#

[^0-9]
^ negates the set
why is it called digitsOnly then

median berry
hybrid spoke
median berry
#

how can i get a random player who won't be the one who used the command?

smoky anchor
hybrid spoke
young knoll
#

^

young knoll
#

Just make sure to handle it being empty

hybrid spoke
#

then get a random one

smoky anchor
hybrid spoke
smoky anchor
#

it dies
So probably just test for empty (or blank) string and handle it somehow

hybrid spoke
#

thats why i want him to send the exception

magic glacier
smoky anchor
#

create custom font
put that texture into the font as a character
use that character in the scoreboard and change the font
would require components

young knoll
#

You can also just replace a character in the default font

#

Donโ€™t need components for that

smoky anchor
#

I would advise against that tho
It is not the "right" way to do this

#

BUT it is a possibility

young knoll
#

I mean you can just use the unused blocks

smoky anchor
#

not future-proof since 1.20 iirc

young knoll
#

?

smoky anchor
#

I think they could update the unicode and thus the unused block would then become used, no ?

young knoll
#

E000 to F8FF is specifically designated as a private use area

kindred sentinel
#

I have an error when i'm using the command without arguments, how could i catch it?

Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
young knoll
#

Which means Unicode will not designate anything in that section

smoky anchor
#

oh I see, didn't know about that

tender shard
hushed spindle
kindred sentinel
#

oh ok i got it

hushed spindle
#

args[0] takes the FIRST argument since arrays start at 0, if the length is 0 it'll throw that exception

#

https://paste.md-5.net/qoketilayu.txt can anyone make sense of this error? one of my users is getting it and i can't reproduce it on the same server software. "type" is null but what does that even refer to and how could i prevent that, all it does is saving/loading itemstacks

kindred sentinel
hushed spindle
#

add a return true statement after that otherwise its just gonna keep going

tender shard
kindred sentinel
#

oh yes

hushed spindle
#

ive got the same build as him

kindred sentinel
hushed spindle
#

so its out of my control?

tender shard
#

ask them to send their config

hushed spindle
#

they're using default configuration because i asked them to clean install the plugin

tender shard
#

seems like they have an old version of ItemMeta in their config

#

it's definitely related to the datafixerupper converting an "old" itemmeta to the current format

hushed spindle
#

that could be true yeah, the configs are made with 1.16.5 item metas

#

typically that should convert to newer versions just fine

young knoll
#

Maybe they have a plugin or something that yeets the dfu

tender shard
#

how does the config look like?

upper hazel
hushed spindle
#

one entry looks like this for example

  craft_sharpening_stone:
    ingredients:
      '0':
        ==: org.bukkit.inventory.ItemStack
        v: 2586
        type: STONE
      '1':
        ==: org.bukkit.inventory.ItemStack
        v: 2586
        type: FLINT
    result:
      ==: org.bukkit.inventory.ItemStack
      v: 2586
      type: GRAY_DYE
      meta:
        ==: ItemMeta
        meta-type: UNSPECIFIC
        display-name: '{"extra":[{"italic":false,"color":"light_purple","text":"<lang.material-sharpening-stone>"}],"text":""}'
        custom-model-data: 8892300
    require_custom_tools: false
    use_meta: true
    unlocked_for_everyone: true
    improve_center_item: false
    shapeless: true
    tool_id: -1
    tool_requirement_type: 0
    allow_material_variations: false
tender shard
quaint mantle
#

There will be 3 features in my 1 plugin, how should I divide them into packages?
What should the naming conventions be?

hushed spindle
remote swallow
#

looks correct

quaint mantle
#

example

#

for me brb

hushed spindle
#

like i wouldnt make a folder for each feature you got, tends to get messy quick

#

so try to sort it all in more broad terms

remote swallow
#

it entirely depends on the features

quaint mantle
#

am i do like this ?

remote swallow
#

no

quaint mantle
#

well i need idea for that

remote swallow
#

if they have no link to combine them they should each be seperate plugins

tender shard
#

Package names are written in all lower case to avoid conflict with the names of classes or interfaces.

hushed spindle
#

i wouldnt do it like that either, you're basically doing a triple plugin in 1

remote swallow
hushed spindle
#

try to sort your stuff in broader terms

quaint mantle
#

well

hushed spindle
#

like if you got a FriendManager and a ManaManager put those in a managers folder or something

slender elbow
echo basalt
#

maybe I was looking at an old version

tender shard
#

then you might have to create a bungee plugin that listens to incoming plugin messages and executes it manually there

slender elbow
#

unless you're thinking the other way around, sending a message to the bukkit Server from a bukkit plugin,, that'll broadcast the message to all players but that goes upstream, not downstream (and it's in bukkit, not bungee lol)

echo basalt
#

Yeah maybe it was in bukkit

#

it is a thing in bukkit

twin venture
#

any idea why this does not work , nothing happens , and the runnable does not even run ..

#

this is onEnable

tender shard
#

do you really create one task per item?

#

how does the runnable even look like

twin venture
quaint mantle
#

Can someone teach me the naming conventions for packages ?
well this is my list

for:

  • databases
  • commands
  • events
  • objects
  • configs
  • and for others
twin venture
#

i added it in the onEnable so it will only be 1 runnable only running .. or did i got it wrong?

remote swallow
tender shard
#

you loop over the inventory contents and then create one runnable per item

#

so you'll end up with like 45 runnables

twin venture
#

ok , that's not what i want

quaint mantle
#

that true ?

#

and for database:
repository

twin venture
#

how i can make it only 1 runnable?

remote swallow
#

you append Command to the end of the class, and where the fuck did you hear database should be repository

#

hold on ill show you what i do

quaint mantle
remote swallow
#

it doesnt matter

#

either command or commands

quaint mantle
#

what is repository package ?

remote swallow
#

repository is something different

quaint mantle
remote swallow
quaint mantle
#

what is handlers ?

#

am i create package for this ?

#

wait u create package in package ?

#

why ur storage package icon different is this plugin ?

tender shard
quaint mantle
#

btw can i add my database methods to storage ?

twin venture
tender shard
#

loop over the inventory in your runnable, instead of creating one runnable per item

twin venture
#

alright bro thanks

quaint mantle
tender shard
#

dude packages don't do anything

quaint mantle
#

i know

#

i just wanna learn

#

naming rules

remote swallow
#

because i use a plugin

remote swallow
tender shard
#

you don't "need" to create any specific package names, you can call them however you think it's appropriate

remote swallow
#

so each storage type gets a handler

quaint mantle
#

aight ty

twin venture
#

Alright thank you i got it working ^_^ , only 1 problem left to fix its easy

simple schooner
#

Hi, can anyone give me an instance where I could use abstract classes. I'm having troubles understanding them. Really sorry bout this

smoky berry
#

sometimes getLastDamageCause doesn't seem to update?

hybrid spoke
#

if its not a package full of databases, commands etc.

quaint mantle
#

aight

hybrid spoke
#

also try to be more specific

#

f.e. what is objects

#

databases could be everything

#

configs for what

tender shard
# simple schooner Hi, can anyone give me an instance where I could use abstract classes. I'm havin...
public abstract class Vehicle {

    private int distanceTravelled = 0;
    private final int speed;

    protected Vehicle(int speed) {
        this.speed = speed;
    }

    public void moveForward() {
        distanceTravelled+=speed;
    }

    public abstract String getName();

}

public class Car extends Vehicle {

    private final String brand;
    private final String model;

    public Car(String brand, String model) {
        super(5);
        this.brand = brand;
        this.model = model;
    }

    @Override
    public String getName() {
        return brand + " " + model;
    }
}

public class Bicycle extends Vehicle {

    protected Bicycle() {
        super(1);
    }

    @Override
    public String getName() {
        return "Bicycle";
    }
}
hushed spindle
#

kinda

simple schooner
tender shard
#

yeah e.g. like an LivingEntity - they are abstract because you cannot just create a new "living entity", you can only create new actual existing subtypes of it, e.g. Creeper, Zombie, ...

simple schooner
#

My understanding for them is still kinda vague.

hushed spindle
#

why you would use an abstract class here as opposed to... what?

young knoll
#

Honestly the main difference these days is that abstract classes can have variables

hushed spindle
#

like just an instance?

young knoll
#

Since interfaces can now have default methods

remote swallow
#

likenot even default methods

simple schooner
hushed spindle
#

yeah

#

well

#

i mean no abstract keyword but yes they cant be defined

tender shard
hushed spindle
#

abstract classes can have predefined methods though

slender elbow
#

mfw default methods

simple schooner
#

So one way to organize my code is to use abstract classes and have sub classes for it?

tender shard
#

default methods are great

public interface NMSHandler {

    // This method only needs to be overridden in versions that don't support this through API (1.8)
    default void sendActionBar(Player player, String message) {
        player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));
    }

    // ...

smoky berry
#

anyway to add the hover text to a print out of an entity, like the entity that gets printed out in death messages?

hushed spindle
#

but for example if you want to have a registry for all the vehicles you want its a bit absurd to make a new mapping for each type of vehicle, like a cars map or a bicycles map or a busses map or whatever. its far more convenient to have a single map for vehicles, which has this abstract vehicle class. of course you could use an interface but in this case, for vehicles, we want this abstract class to have properties

remote swallow
#

if you only have 1 subclass, its pointless

#

if you have mutliple yeah

simple schooner
#

I often overuse stuffs that I newly learned

hushed spindle
#

it doesnt have to be, it allows you to more easily expand upon that code later down the line

tender shard
#

interfaces only define contracts (which methods this class must have) while abstract classes can also implement them

simple schooner
hushed spindle
#

like all vehicles travel, so you want them to share that behavior

remote swallow
#

also before you get confused of what the super(1) is, the super means superclasss so the abstract vehicle and calling super(params) would call the abstracts constructor

tender shard
#

yeah super(1) basically says "call the constructor of Vehicle with 1" so a bicycle has a speed of 1, the car here has a speed of 5

simple schooner
#

Aight thanks yall

young knoll
#

:p

tender shard
#

it was already possible in java 8

young knoll
#

What

#

Lies

young knoll
#

Wtf

#

Why did I never see them back then

tender shard
#

idk

simple schooner
#

The dude I watched on youtube mentioned that too

smoky berry
tender shard
#

did a poet write those javadoc

young knoll
#

It was Shakespeare

tender shard
#

also funny: the javadoc of Material.FIRE

smoky berry
#

anyway to hook into when the player gets set to spectator mode after they die in hardcore?

tender shard
#

it was the javadocs of the Fire blockdata

remote swallow
#

whewres the squeeeee eee eeek

#

one

tender shard
#

this one is cursed

young knoll
#

Smh why isnโ€™t it FurnaceorDispenser

sterile breach
#

Hey, I have a question about pluginmessages

To send a bungee message, we do this
player.getServer().getInfo().sendDataMeassage()

And in the plugin to retrieve the message, it looks like this

onPluginMessageReceived(String channel, Player player, byte[] bytes)
{

What does the player parameter correspond to? The same player used to make player.getServer?

sage patio
#

does getConfigurationSection("default").getKeys(false) return 1 - 3 as string or i have to put the numbers in ""?

default:
  1:
    name: "Default 1"
  2:
    name: "Default 2"
  3:
    name: "Default 3"
tender shard
sage patio
#

thanks

tender shard
#

But why dont you use a list?

sage patio
#

wdym

tender shard
#

Do you actually need the 1,2,3 numbers?

sage patio
#

i thought if i put numbers it will return an empty list because they're not String

young knoll
#

Yeah but why do you need keys at all

#

Just use a string list

sage patio
#

it has more values than name, it was an example

tender shard
#

that way you can get rid of the useless 1,2,3 (In case you don't actually need those numbers but only used them to get a valid yaml)

sage patio
#

for some checks which they're using numbers it has to be 1, 2, 3 ...

tender shard
#

ok

sage patio
#

thanks

tender shard
#

just wanted to mention the map list because so many people don't know that it exists lol

#

same for yaml anchors

smoky berry
#

is there any way to set the players health to zero but for them to not die?

#

basically i want spectators health to show as zero on the scoreboard

shadow night
smoky berry
#

how would i do that? Scoreboard objective is read-only

shadow night
#

hmm, didn't know read only scoreboard objectives were a thing

young knoll
#

Itโ€™s one of the built in ones

#

Not a dummy one

smoky berry
tender shard
#

can't you set it to 0.0001 or sth

young knoll
#

Depends if the game rounds or ceils

#

But yeah

#

You could also just use hidePlayer to remove them entirely from other players

smoky berry
shadow night
tender shard
#

then you could send a playerinfo packet

#

or sth

#

idk

tender shard
shadow night
#

boom

tender shard
#

the father of forrest gump was killed by bananas in the book

young knoll
#

Hey a banana can pack a good punch if yeeted

shadow night
#

it can hit like a boomerrang prob

young knoll
#

Bananarang

#

Terraria weapon

shadow night
#

terraria

#

I thought of the same lmao

tender shard
#

terraria's controls are so annoying

shadow night
#

I agree

#

why can't I press escape to open settings and E for inventory

young knoll
#

Canโ€™t you change em

shadow night
#

yeah but inv and settings are always same button

#

to open the settings menu you need to open the inv

tender shard
#

the controls are so annoying, I never managed to play it more than 10 minutes. like, how do you even place down a door

shadow night
#

I play on controller sometimes

#

imo best controls, just that it isn't quite for speedrunning and generally being quick

smoky berry
twin venture
#

updating lore every 1 second , thatcwill create a client bug , how i can get rid of ?

tender shard
#

don't update the lore

#

it's not a bug btw

#

the item changes, the client shows the animation

twin venture
#

well it should be update to show how much time left for each item

#

i have an idea (show action bar) ..

#

for the specfic item in hand .

smoky berry
#

how can you localize entity names eg turn CraftSkeleton into Skeleton?

young knoll
#

get their key and use that

tender shard
#

entities implement Translatable

#

so yeah get the translation key and throw it into a translatable component

young knoll
tender shard
#

or the entitytype does

young knoll
#

Ah

#

Ye

tender shard
#

smh I cannot remember my own pull request

young knoll
#

Granted if you need to use the key somewhere other than chat

#

Well

#

rip

tender shard
#

yeah @smoky berry what do you need it for

smoky berry
#

chat

tender shard
#

then you're lucky

young knoll
#

Choco pr plz

smoky berry
#

i asked this before but is there any way to get the hover text on entities and players

#

like the hover text you get in death messages

young knoll
#

?jd-bcc

young knoll
#

Yes you can use a hover event with Action.SHOW_ENTITY

smoky berry
#

sweet ty

tender shard
#

oh wow it actually works

young knoll
tender shard
#

lol "I want help"

young knoll
#

Figure out the equivilent packet class

#

And send it

chrome beacon
#

It would be easier for you to just update to 1.19.4

young knoll
#

Does 1.19.4 have stuff for that?

chrome beacon
#

Citizens supports 1.19.4

#

not 1.19.3

young knoll
#

Ah

remote swallow
#

get the owner to update then

chrome beacon
#

Coll did

#

Updating

#

You do have to realize that when working with NMS you're on your own most of the time

#

We're not going to spoon you every step of the way

tender shard
#

why not just update and use citizens?