#help-development

1 messages · Page 433 of 1

slate mortar
#

let's take this one for instance (idk how i came up with latin, i just meant random "unused" languages)

WHO THE FUCK IS USING THIS FOR REAL

kind hatch
#

I use those symbols all the time.

rough ibex
#

yeah

slate mortar
#

ofc you do yeeeee

#

i never even saw these symbols lmfao

kind hatch
#

I use them in my plugins.

rough ibex
#

a lot of emojis are there

kind hatch
#

GUI's mostly

slate mortar
#

or these ones, what even are these

rough ibex
#

braille

slate mortar
#

what is braille

rough ibex
#

what do you mean what is braille

slate mortar
#

literally what it means

rough ibex
#

Braille ( BRAYL) is a tactile writing system used by people who are visually impaired, including people who are blind, deafblind or who have low vision. It can be read either on embossed paper or by using refreshable braille displays that connect to computers and smartphone devices. Braille can be written using a slate and stylus, a braille wri...

#

this

slate mortar
#

oh lol

rough ibex
#

unicode has a lot of cool characters

slate mortar
#

problem with my english knowledge there lol

tender shard
#

in german it's also called braille

remote swallow
#

slight oversight with that, who reads braile on their computer using eyes

rough ibex
#

french also

kind hatch
#

Braille displays that connect to computers

#

It's a separate component

slate mortar
#

also there are servers where you will almost never have ppl who use specific languages/font-sets, where you can be 99.9999999% sure it wont give any issues
and if it does, that person will have many other issues, as they cant even understand what the server is about

#

so yes, you shouldnt change chinese characters and stuff, i never said you should do that
but there are sets that are literally less important than my own shit

kind hatch
rough ibex
#

Iunno I'm pretty sure ⛄ is more important than whatever you're doing

tender shard
#

yeah ⛄ is more important than whatever you're doing, chloe

slate mortar
#

it always depends on what you are doing

tardy delta
#

isnt this the same as if active showError(new IO...)return;?

late hinge
#

Guys someone knows a yt video that teach how to do a /tag command prefix suffix etc...

rough ibex
late hinge
#

i'm searching a bit and i didn't find anything

rough ibex
#

you should always use the designated PUA characters for your own purposes

slate mortar
#

if youre not on the "do it the way you want" group, yes

#

as i stated multiple times now, i am.

rough ibex
#

except your way is wrong and you're going against the standard

slate mortar
#

except i dont care, and didnt ever care

rough ibex
#

you should

slate mortar
#

i should also go work ._.

#

still i dont

#

i never did what people expect me to do

#

and will never do lol

terse ore
#

When should I create the world? onload onenable?

kind hatch
# slate mortar it always depends on what you are doing

This is fair, but it's important to consider all aspects. Just because you don't use those characters or have ever heard of them doesn't mean that other people don't use them. It would make sense to overwrite any other character if you're planning on only making the plugin usable for a certain demographic, but when people make things like that, it goes against the standard of creating robust systems. Yes, it'll get the job done and you can call it a day, but when someone else outside of your demographic comes along, they might get lucky and see it the way you intended it to be. However, the more likely case is that they will experience it differently because it's not made to cater to everyone.

That's the reason why we have a certain set of characters designated to do whatever we want with. If you need more than that amount then yea, maybe it's time to consider overwriting different characters, but until then, why not just use the ones designated for private use in the first place?

rough ibex
#
  • I doubt you'll ever need more than the amount explicitly given
#

There's 137,000 PUA characters

tender shard
#

ugh I thought this might work lol

regal scaffold
#

How can I automatically upload the shaded jar to github release section using maven?

desert frigate
#

anyone know a solution to this?

regal scaffold
#

To like the release section yeah

tender shard
#

for github packages, you just need this

  <distributionManagement>
    <repository>
      <id>github</id>
      <name>GitHub Packages</name>
      <url>https://maven.pkg.github.com/username/repo</url>
    </repository>
  </distributionManagement>
#

and then in your ~/.m2/settings.xml you declare the username and password, like this: (1 sec)

terse ore
#

One question

#

how can I create a world with pluinyml load: startup?

tender shard
#

you only need the <servers> section in <settings>

tender shard
terse ore
#

but get this issue

#

?paste

undone axleBOT
terse ore
ivory sleet
regal scaffold
#

Wait no alex

#

I don't mean that

livid dove
#

Having a serious brain drain moment. If you set an alias for a command, why would the tab complete not show up for the alias?

ivory sleet
#

It should

regal scaffold
#

@tender shard

#

Like attach binaries to that automatically from maven

worldly ingot
#

I don't think you can push to releases automatically. There might be a GitHub Action for it though

young knoll
#

I know you can do it with GitHub actions

tranquil dome
#

How would I make an API for my plugin so other developers can run methods inside my plugin?

young knoll
#

Or workflows or whatever

regal scaffold
#

Cool

young knoll
#

Idk if you can do it with maven

regal scaffold
#

Will look into actions

worldly ingot
#

Well Actions will run your Maven stuff so that doesn't matter

young knoll
#

Actions are cool

worldly ingot
young knoll
#

They can even run buildtools

regal scaffold
#

Do you think it's worth setting that up?

#

I guess it can be used on all the projects one makes

#

To automatically have the jar be uploaded, just handy stuff

#

Do you know anyone that has an example on how to do it?

tranquil dome
worldly ingot
#

The same way you would call it

#

They just need an instance of whatever it is they need to invoke on

#

Maybe you have a getter in your plugin class

tardy delta
worldly ingot
#
YourPluginClass.getInstance().getSomething().callAMethod();```
tender shard
#

thanks, GH copilot

worldly ingot
#

The only thing they need is to add your plugin to the classpath some way or another. Whether that be Maven or Gradle, or just manually

young knoll
#

Why is the user yoghurt

tardy delta
#

concerned

remote swallow
worldly ingot
#

Well if you're not keeping your yoghurt in your spighurt class, I don't know what you're doing

tender shard
tranquil dome
worldly ingot
#

Yes

tender shard
remote swallow
#

like you need to be a contrinuter

#

contributer

#

its really annoying

worldly ingot
#

Yeah the packages are meant to be internal

remote swallow
#

if you need a free repo use repsy

worldly ingot
#

It's not a public Maven repo

remote swallow
#

it should be

worldly ingot
#

👀 but it's not

remote swallow
#

new github update when

livid dove
ivory sleet
#

Uh, mind showing us more code perhaps?

livid dove
#

what more do you need? 🙂

ivory sleet
#

Entire main + command executor to begin with I think

#

Oh yeah also

#

Do you set the tabcompleter

#

setTabCompleter iirc

remote swallow
#

if you set executor you dont need to set tab completer

livid dove
tranquil dome
#

@worldly ingot would they still be able to call the method if it is a kotlin public suspend function?

livid dove
sturdy heron
#

can you put chat components in text displays?

remote swallow
#

not every time ive done it

remote swallow
#

you set executor and imlpement TabExecutor

ivory sleet
#

You need setTabCompleter also

tranquil dome
remote swallow
ivory sleet
#

Well, you should try to avoid kotlin’s coroutine if possible in ur api for java users from what I know

livid dove
#

Lads my alias isnt working for a command that's tab completes work for the non alias'd command

ivory sleet
#

Try to expose a CompletableFuture or sth instead

livid dove
#

We can do our executor vs completer fight later xD

tranquil dome
ivory sleet
#

Yes, but you can abstract them away from ur api

tranquil dome
#

What do you mean by that?

ivory sleet
#

Dont expose coroutines in ur api

#

Sure ur implementation might use it

#

But then decouple that good enough from ur api

remote swallow
daring lark
#

why am i getting this error
java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: java.lang.Integer. Forgot to register a type adapter?
code:

ItemStack item = new CustomItemStack(Material.STICK).setRightClickAction(event -> {
            Logger.log("Witam");
        }).setDisplayName("Bajka");

        String json = new Gson().toJson(item);```
remote swallow
#

because gson doesnt know how to serialize an item stack

daring lark
#

can i change it some way?

remote swallow
#

you make a type adapter

#

do you need it readable

patent socket
#

So in my command I have this code: player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(this.word)); Player is an Entity variable so it can be @p or MyName. I get this error message for the code. How can I resolve it? no suitable method found for sendMessage(net.md_5.bungee.api.ChatMessageType,net.md_5.bungee.api.chat.TextComponent)

ivory sleet
#

toLowerCase is called upon registration

remote swallow
#

ah

#

hows the upper case alias there then

daring lark
ivory sleet
#

I mean it just calls toLowerCase there also

ivory sleet
#

Actuallty not sure epic if it does on alises

remote swallow
#

should do, i tested it before

daring lark
#

ohh yea

remote swallow
livid dove
#

Fixed chaps

#

cheers

worldly ingot
#

It has to be a Player

livid dove
#

Been realising quite a few odd ones lately in spigot.

Like there is an Offline Player object that DOESNT grab offline players, but offline and online players Without caring if they are offline

worldly ingot
#

Player extends from OfflinePlayer

livid dove
#

Im aware choco

worldly ingot
#

It's just inheritance. You can call getPlayer()

livid dove
#

but my point is its badly labeled

worldly ingot
#

Not really

livid dove
#

Can you get an online player with Offline player?

remote swallow
tender shard
worldly ingot
#

Yes, you can. getPlayer()

livid dove
worldly ingot
#

No because it still represents an offline player

tender shard
#

how is getPlayer() badly labelled if it gets you a player?

#

it's a perfect name

worldly ingot
#

You can also refer to a Player as an Object

livid dove
tender shard
#

it's a getter for a Player object and hence it's called getPlayer

worldly ingot
#

That's how inheritance and polymorphism works

livid dove
#

can grab an online player

#

because it inherets player

tender shard
#

well yeah imho they should have called OfflinePlayer Player and Player OnlinePlayer

livid dove
tender shard
#

I would assume it gets a Player object, whatever that is

#

I always assume that "getX" gets me exactly X

tranquil dome
# ivory sleet Sure ur implementation might use it

So what I could do is one of these:

    suspend fun sendImage(string: String) {
        val client = bot.client ?: return
        val guild = client.getGuildOrNull(guildId) ?: return
        val channel = guild.getChannelOfOrNull<TextChannel>(channelId) ?: return

        channel.createMessage {
            val inputStream: InputStream = images.getInputStream(string)

            addFile("discordo.png", ChannelProvider {
                inputStream.toByteReadChannel()
            })
        }
    }
    fun sendImage(string: String) {
        launch {
            val client = bot.client ?: return@launch
            val guild = client.getGuildOrNull(guildId) ?: return@launch
            val channel = guild.getChannelOfOrNull<TextChannel>(channelId) ?: return@launch

            channel.createMessage {
                val inputStream: InputStream = images.getInputStream(string)

                addFile("discordo.png", ChannelProvider {
                    inputStream.toByteReadChannel()
                })
            }
        }
    }

One is a suspend function and the other launches a new coroutinescope every time it is called. Which one should I use? Or did u mean something else?

compact haven
#

not to mention, we DO have documentation

livid dove
tender shard
#

I would assume that it turns an OfflinePlayer into a Player

compact haven
#

I wouldn’t want to work with a library without documentation ever, its fucking terrible

tender shard
#

that is why it's called getPlayer() and why its decalred in OfflinePlayer

livid dove
tender shard
#

wdym? it inherits player?

tender shard
#

So you would rather have a method name that does NOT tell me what it does?

#

I really dont get it

livid dove
#

In reality offline player looks for both online and offline players when doing getplayer

#

That make sense?

#

Call me crazy, but I see a class called "OfflinePlayer" and ima assume its purely for Offline players xD

#

and wont account for online players

tender shard
#

yeah as said, a better name would have been "Player" and "OnlinePlayer". I thought you were claiming that getPlayer() is badly named, not the OfflinePlayer class itself

#

i agree that OfflinePlayer is a weird name

livid dove
livid dove
#

Had me hair pulling for 5 mins

fluid river
#

i need free c# lessons for a second

#

actually free logic lessons

#

so java suits me too

#

anybody has free time

quaint mantle
fluid river
#

ig

remote swallow
#

give jree fava mess cree f# lessons

fluid river
#

omg

#

anybody can give free logic lessons

quaint mantle
#

C# is lateraly java

fluid river
#

tu mi

ivory sleet
fluid river
#

10:20

#

guy has to click SQUARE on controller to make Pata sound

quaint mantle
fluid river
#

and CIRCLE for Pon

#

so when he clicks 🟦 🟦 🟦 🔵 , the characters go forward

remote swallow
#

linus being linus

fluid river
#

and basically the game is 120BPM and 60FPS locked

#

and i need some code to force people click just in beat

terse ore
quaint mantle
fluid river
#

with like 10ms left and right

#

anybody has ideas?

tender shard
#

Is this a bug?

This compiles fine:

    public static <E extends Enum<E>> EnumCache<E> of(Class<E> enumClass) {
        return (EnumCache<E>) CACHE.computeIfAbsent(enumClass, __ -> new EnumCache<>(enumClass));
    }

But this throws an error:

    public static <E extends Enum<E>> EnumCache<E> of(Class<E> enumClass) {
        return (EnumCache<E>) CACHE.computeIfAbsent(enumClass, EnumCache::new);
    }
sick edge
#

Hi! When/how can I cast an Enchantment to an EnchantmentWrapper? (I'm trying to get the name of an Enchantment)

#

From a stored Enchantment of an Enchantment Book

echo basalt
tawny remnant
echo basalt
#

the value is Function<? extends V> while you want a ? super K

fluid river
echo basalt
#

it's odd

fluid river
#

idk what enchantment is

sick edge
fluid river
#

(EnchantmentWrapper) ench;

echo basalt
#

actually I'm an idiot

#

you want K, not ? super K

remote swallow
#

use Enchantment#getKey().getKey()

echo basalt
#

on your constructor

remote swallow
#

if you need the known name

fluid river
echo basalt
#

doing __ -> whatever passes K

#

doing Whatever::new passes ? super K

#

or in your case, E

tender shard
#

but that's correct

#

IJ also doesn't complain

sick edge
echo basalt
#

it's a weird edge case

tender shard
#

it also compiled fine on oracle jdk 17 but fails to compile on openjdk 17

echo basalt
#

then it's probably a jdk bug yeah

#

I'd honestly just use an if check and avoid such lambda hell

tender shard
#

lambda hell? 😄

tardy delta
tender shard
#

what exactly?

tardy delta
#

the whole EnumCache class

tender shard
#

it just caches a List<E> of all enum constants

#

?paste

undone axleBOT
tender shard
daring lark
# remote swallow should do, i tested it before
public static Optional<ItemStack> convertBase64ToItemStack(String data) {
        try {
            ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
            BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);

            ItemStack item = (ItemStack) dataInput.readObject();

            return Optional.ofNullable(item);
        } catch (IOException | ClassNotFoundException e) {
            Logger.error("Failed to convert base 64 to item stack.");

            e.printStackTrace();

            return Optional.empty();
        }
    }```

doesn't work
#

error

[17:40:51 WARN]:        at org.bukkit.util.io.BukkitObjectInputStream.newIOException(BukkitObjectInputStream.java:59)
[17:40:51 WARN]:        at org.bukkit.util.io.BukkitObjectInputStream.resolveObject(BukkitObjectInputStream.java:51)
[17:40:51 WARN]:        at java.base/java.io.ObjectInputStream.checkResolve(ObjectInputStream.java:1795)
[17:40:51 WARN]:        at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1744)
[17:40:51 WARN]:        at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:514)
[17:40:51 WARN]:        at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:472)
[17:40:51 WARN]:        at RDCakeLib.jar//me.placek.rdcakelib.data.persistence.nbt.Persistence.convertBase64ToItemStack(Persistence.java:57)
[17:40:51 WARN]:        at RDCakeLib.jar//me.placek.rdcakelib.RDCakeLib.onEnable(RDCakeLib.java:39)
[17:40:51 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:279)
[17:40:51 WARN]:        at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:192)
[17:40:51 WARN]:        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:104)
[17:40:51 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:507)
[17:40:51 WARN]:        at org.bukkit.craftbukkit.v1_19_R2.CraftServer.enablePlugin(CraftServer.java:560)
[17:40:51 WARN]:        at org.bukkit.craftbukkit.v1_19_R2.CraftServer.enablePlugins(CraftServer.java:471)
[17:40:51 WARN]:        at org.bukkit.craftbukkit.v1_19_R2.CraftServer.reload(CraftServer.java:1021)
[17:40:51 WARN]:        at org.bukkit.Bukkit.reload(Bukkit.java:930)
[17:40:51 WARN]:        ... 24 more```
tawny remnant
young knoll
#

Online player and Online’t player

near crypt
#

does anyone have a good itembuilder?

echo basalt
#

yo alex wanna see the dumbest collection I got

daring lark
echo basalt
#

you'll want to block me for this

daring lark
# daring lark still doesn't work

code now:

public static Optional<ItemStack> convertBase64ToItemStack(String data) {
        try {
            ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
            BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);

            inputStream.close();
            dataInput.close();

            ItemStack item = (ItemStack) dataInput.readObject();

            return Optional.ofNullable(item);
        } catch (IOException | ClassNotFoundException e) {
            Logger.error("Failed to convert base 64 to item stack.");

            e.printStackTrace();

            return Optional.empty();
        }
    }
}```
worldly ingot
#

Well... now... do you see a fundamental issue with what you've just sent?

daring lark
young knoll
#

(Don’t close the streams before you use them)

daring lark
near crypt
#

does anyone have a good itembuilder?

tardy delta
#

use a try with resources

#

just make one yourself lol

remote swallow
tardy delta
#

2 minutes work

remote swallow
near crypt
#

thx

daring lark
young knoll
#

Kek

sterile token
remote swallow
#

theres too many methods i cba to add

tender shard
#

@ Builder

remote swallow
#

for item stacks?

sterile token
tender shard
#

lomboks annotation to auto create a builder

daring lark
remote swallow
#

i would need to still add all the fields

sterile token
worldly ingot
#

Yeah, Builder doesn't delegate calls

#

Not to mention, Lombok aPES2_VomitAttack, but that's besides the point

remote swallow
#

i love being lazy

worldly ingot
#

You can use your editor to be lazy. You can generate getters and setters with 2 clicks

remote swallow
#

yeah

#

@Getter is easier

tardy delta
#

wdym empty response lmao

tender shard
worldly ingot
#

and far less readable. Also requires a Java agent to be installed in your editor

sterile token
tender shard
worldly ingot
#

Though we're getting into preferences here. I don't care. Lombok's Builder annotation would not work for delegate ItemMeta calls

tender shard
#

and again

#

and again

tardy delta
#

but they forgot to add @Getter(name = "methodname")

remote swallow
#

getMethodName is fine imo

sterile token
tender shard
#

why would you rename a getter

tardy delta
#

to change default name

#

like isX -> hasX

tender shard
#

then use "fluent = true" and rename the field from X to hasX

tardy delta
#

what if you dont want duke

daring lark
tender shard
#

well if your field doesn't have the has prefix, the field is already badly named

#

customName = true? nah. the field would be called "hasCustomName"

tender shard
daring lark
sterile token
#

Trying to save items to yaml file?

daring lark
sterile token
tender shard
daring lark
sterile token
daring lark
tender shard
#

NBT?!

young knoll
#

Just use the paper api and ItemStack#serializeAsBytes

tender shard
#

why would you ever use NBT

young knoll
#

(For legal reasons that's a joke)

sterile token
daring lark
sterile token
young knoll
#

I mean

tardy delta
#

pdc is an nbt wrapper

young knoll
#

^

sterile token
daring lark
remote swallow
#

?morepdc use this

undone axleBOT
remote swallow
#

you can save the item stack and read it directly

sterile token
sterile token
#

Also paper 💀 💀💀 ou cant go to that level

tardy delta
#

?

sterile token
tardy delta
#

bruh had to print two empty lines

sterile token
#

Instead of printing

young knoll
#

When you need something to be printed I guess, since base54 uses all writable characters

#

It's also decent for shoving into a DB

winged anvil
#

this was google gave me

tardy delta
#

somehow html.transferTo(out) doesnt work lol

tender shard
tardy delta
#

length mismatch :/

#

this looks weird

near crypt
#

does anyone has a link to a good simple item builder?

tardy delta
#

lmao

#

just create one

near crypt
#

i dont have time..

tender shard
#

I never understood the purpose of ItemBuilders.

If you use custom items, then they must be 100% configurable in the config

young knoll
#

They still can be

tardy delta
#

customizable 🤡

near crypt
tender shard
tender shard
near crypt
young knoll
#
        if (section.isString("texture") && material == Material.PLAYER_HEAD) {
            builder.skullTexture(section.getString("texture"));
        }

        if (section.isString("display-name")) {
            builder.name(StringUtils.parseToLegacy(section.getString("display-name")));
        }

        if (section.isList("lore")) {
            builder.lore(section.getStringList("lore").stream().map(StringUtils::parseToLegacy).toList());
        }

        if (section.isInt("custom-model-data")) {
            builder.modelData(section.getInt("custom-model-data"));
        }
remote swallow
tardy delta
#

mf google sending three requests

#

probably want to ignore any subsequent ones

radiant aspen
#

Greetings Esteemed Members of the SpigotMc Community

#

I am writing to you to try get some help with my code

#
switch (teamSetting.getValue().toLowerCase()){
                case "sunny":
                    player.setPlayerWeather(WeatherType.CLEAR);
                    return;
                case "raining":
                    player.setPlayerWeather(WeatherType.DOWNFALL);
                    return;
                case "thunder":
                    player.setPlayerWeather(WeatherType.DOWNFALL);
                    return;
                default:
                    player.resetPlayerWeather();
                    return;
            }
#

how can I set a player's weather to Thunder?

#

WeatherType only has Clear and Downfall?

regal scaffold
#

Does anyone have an example on how to use GH actions to automatically upload a jar to the release section of a repo?

radiant aspen
#

is it not possible to set a specific player's weather type to thunder? or am I missing another api method

tender shard
#

but not thunder

radiant aspen
#

thats kinda dumb :/

#

aight, thanks

radiant aspen
#

thunder is rain + lightning

#

I mean I guess I could fake it by creating a method to show lightning effects to a specific player

#

but that sounds like too muich work

fluid river
#

as i can see there are only 2 weathers provided by spigot

rugged fiber
#

I wonder if NMS has that feature. Never used NMS though, so 🤷

fluid river
#

raining and not

young knoll
#

Thunder is rain with an extra flag

fluid river
#

and boolean weatherState

young knoll
#

Thunder also isn't a boolean

#

It's a float

fluid river
#

true rain, false norain

tender shard
# radiant aspen thats kinda dumb :/

you can ofc just use a packet, spigot mappings:

PacketPlayOutGameStateChange packet = new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.THUNDER_LEVEL_CHANGE, 1.0F);

1.0 = thunder, 0 = no thunder. Also requires rain to work

echo basalt
fluid river
echo basalt
#

but sometimes you're making something quick like a test project and can't bother making a config file

radiant aspen
regal scaffold
#

@hazy parrot Wait that's it really? 8 lines?

young knoll
#

Yeah you could easily make a method for an itembuilder that pulls from a configsection

hazy parrot
regal scaffold
#

Does that automatically compile the jar?

echo basalt
regal scaffold
#

Right?

regal scaffold
#

Oh wait no, you include your jar

young knoll
#

You need to finish your config library first

#

kek

regal scaffold
#

From the project build

fluid river
hazy parrot
echo basalt
#

setThundering is indeed a method, too

fluid river
#

and guy goes for fake one

echo basalt
#

well not for players hmm

radiant aspen
#

I want per player

regal scaffold
#

oooo

#

I see ok

rugged fiber
young knoll
#

That is a very basic one

remote swallow
#

@return the <path to Itembuilder>.

winged anvil
#

you guys think it’d be useful for a plugin that you can alter itemstacks in game to see how they look and then to save them out to a file

#

cause i’m making on for personal use cause i’m lazy

young knoll
#

Visual configs are always nice

#

Users can be spacial

remote swallow
#

spacial

compact wasp
#

One message removed from a suspended account.

remote swallow
#

you cant stream here

#

and english only

#

?paste the code you have

undone axleBOT
compact wasp
tender shard
tender shard
undone axleBOT
fluid river
#

don't do this

remote swallow
#

make the SimpleAnnouncement simpleannouncement

#

and that is a bad command system

#

each command should get its own class

fluid river
#

he needs freejavalessons

remote swallow
#

yes

#

go

fluid river
#

5 min

tender shard
#

why are you comparing the command's name?

regal scaffold
#

@hazy parrot I cannot figure it out lol

#

Even asked chatgpt but I think it's wrong with what it's telling me

hazy parrot
remote swallow
#

create a default maven work flow and add the release stuff

regal scaffold
#

So you have multiple steps

#

Which one of the 2

#

?paste @compact wasp

undone axleBOT
hazy parrot
# regal scaffold

this part is only putting body to file because of weird formatting with \n, you don't even have to use it

remote swallow
#

you dont register the command

compact wasp
#

One message removed from a suspended account.

compact wasp
#

One message removed from a suspended account.

remote swallow
regal scaffold
#
    steps:
    - uses: actions/checkout@v3
    - name: Set up JDK 11
      uses: actions/setup-java@v3
      with:
        java-version: '11'
        distribution: 'temurin'
        cache: maven
    - name: Build with Maven
      run: mvn -B package --file pom.xml

    # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
    - name: Update dependency graph
      uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6
#

That

#

That's the default, now just add the action to add to release

remote swallow
#

needs the top part too

#

saying when to run on what etc etc

regal scaffold
#

Well yeah just didn't paste it

tardy delta
#

ig that works, its just ugly

regal scaffold
#

What's the action to push to release section? softprops/action-gh-release@v0.1.15?

tardy delta
#

im wondering how id add a callback to a runnable submitted to an executor hmm, tried overriding ExecutorService#afterExecute but that has a FutureTask instead of my runnable

sterile token
tardy delta
hazy parrot
winged anvil
regal scaffold
#

Ok ok step by step

sterile token
tardy delta
#

?

#

good enough to send a http response

sterile token
tardy delta
#

bruh in 50 lines of code

#

how would you sent a http response with netty then

sterile token
#

Which internally use Netty for handling the protocol, sockets, NIO

#

Netty is so sweaty

#

Also it has an already implemented module for working with Netty and WebSockets

regal scaffold
#

wait wtf

#

GH Actions are so cool

#

Does everyone use this already?

#

How can I deal with local maven repo libraries?

#

For GH Actions

tardy delta
#

whats github actions for?

#

i still dont understand

hazy parrot
#

everything

#

i mostly use it for lint checks and for example if i push tag that starts with v (v1.0.1)

#

it will create release with version 1.0.1

tender shard
#

anyone know how to suppress this, and ONLY this, warning?

regal scaffold
#

How can I deal with local maven repo libraries?
For GH Actions

#

I read on cache but don't comprehend

tender shard
#

you already spent so much more time on getting github actions to work, that you could have setup your own reposolite or nexus like 12 times already lol

regal scaffold
#

It's been 15 minutes hehe

#

It's nice learning new things tho

tender shard
#

idk I hate github actions, the docs are so shitty

regal scaffold
#

Well I believe my use case is simple enough but yeah, can't really understand much

tender shard
#

not really, you need to run buildtools, that's already way more complicated than the dudes at github could ever imagine

terse ore
#

it will add a command which tells IDEA to ignore the next warning

tender shard
terse ore
#

hmm

#

where is your cursor?

tender shard
#

on CombinedCOllection

tardy delta
#

wondering how id do smth like this but the task is always a FutureTask so this gives a cast ex and i should be using reflections to access the field, isnt there a cleaner way?

regal scaffold
regal scaffold
#

CMI and a local lib

fluid river
#

bruh

#

java lessons on turkish

#

@remote swallow

remote swallow
#

might need to include them in a libs folder then mvn install them with an action

opal juniper
#

how do you set the output for an artifcact with maven

#

like properly

regal scaffold
#

I thought there was something called cache for actions

#

That did that

remote swallow
#

it can cache them but it needs them at somepoint

#

i think it can cache them anways

tender shard
terse ore
#

np

tender shard
#

?paste your pom

undone axleBOT
tender shard
#

the maven-jar-plugin is the only proper place to adjust the output directory / file name

opal juniper
#

ah looks like i have compile plugin not jar

tender shard
#

you changed it in the maven-compiler-plugin

opal juniper
#

yah what i didnt get was why it was giving me symbol not found for the diff modules

regal scaffold
#

@hazy parrot If I want to include local mvn dependencies in GH Action, I see there's a cache there. How does it work though?

#

Or should I upload what I use to a repo instead?

hazy parrot
#

altrough its not persistent at all

regal scaffold
#

That's fine but

#

Do I need to include the libraries in the project?

#

I assume yes

remote swallow
#

you would probably be better uploading them to a repo

regal scaffold
#

But all repos are public

#

If I need to access it from a pom.xml

tardy delta
#

heh thid doesnt work?

#

isnt that the point of a varhandle<?

regal scaffold
#
    - name: Cache Maven repository
      uses: actions/cache@v2
      with:
        path: ~/.m2/repository
        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
        restore-keys: |
          ${{ runner.os }}-maven-
tardy delta
#

java.lang.IllegalAccessException: module java.base does not open java.util.concurrent to unnamed module @776ec8df :(

livid dove
livid dove
terse ore
#

Could I whitelist which structures to generate and which not?

tender shard
regal scaffold
#

I cannot figure it out lol. actions just refuses to copy my local mvn repo to cache

#

?paste

undone axleBOT
regal scaffold
remote swallow
#

it doesnt copy your maven local, im guessing it caches what you give it

regal scaffold
#

According to the docs it does but it does indeed not make sense

buoyant viper
regal scaffold
#

It probably caches what it can for the next release

#

I guess jitpack it is

buoyant viper
#

altho just calling trySetAccessible might fix

tardy delta
#

trying to figure out how id get a varhandle for a private field

buoyant viper
#

oh

#

u need a special lookup instance probably

terse ore
buoyant viper
#

actually not a probably-- you do need a special Lookup

#

i did it for an old event manager i had made

#

initializing it should be simple enough, i think it has a public constructor now (java 8 did not) so u can do it without needing too much reflection hackery

tender shard
livid dove
terse ore
young knoll
#

Schedule a task in onEnable

#

It will run once the task executor is active, which is late enough to make worlds

terse ore
#

oooh

#

that's smart ngl

tardy delta
buoyant viper
#

possible?

patent socket
young knoll
#

You would need to check that it's a player

#

And then cast it to one

terse ore
#

@young knoll how much time have you been with Java and Spigo tAPI?

tardy delta
#

well uh

buoyant viper
#

Hmm

remote swallow
#

boomer

terse ore
#

you seem pretty young ngl

tender shard
#

He‘s at least 10

terse ore
#

hmm

#

good observation

tender shard
#

Thanks

terse ore
#

np

patent socket
tender shard
twin robin
#

ive got this code for a super basic world gen, default minecraft biome generation afaik, is there some way to smooth out these rough biome changes? im very new to java so i might ask some stupid questions

patent socket
young knoll
buoyant viper
#

theres a command to show actionbar messages?

twin robin
#

tellraw

buoyant viper
#

oh i thought that just sent to chat lol

tardy delta
#

player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message))

buoyant viper
#

yeaaa

terse ore
worldly ingot
patent socket
worldly ingot
#

Then it will be an instanceof a Player and it will send the message

#

A player is an entity, it's just a more specific type of entity and you need to make sure that's the case

#

It's the reason you can't do entity.chat(). You have to check if it's a Player first, then cast, then call player.chat()

#

Or player.getInventory(). Same thing

remote swallow
#

i thought entities have inventories

worldly ingot
#

Not all of them

#

Only InventoryHolders do

#

Think HumanEntity, ArmorStand, Horses

patent socket
worldly ingot
#

okay how do I explain this lol

tardy delta
#

player instanceof Player 🤔

worldly ingot
#

You've named your Entity variable player. Entity player;. First of all. Bad. Call it something sensible like entity. Entity entity. It is what it is, not what it might be

#

You've checked instanceof which is good, but you're re-using that same entity (player) that is still an Entity type. You never casted it

#

Java 16 introduced in-line instanceof casts (which I used in my example) but if you're on a lower version you'll have to manually cast and you can do it in two ways

#
((Player) entity).spigot()// ...

// Or

Player player = (Player) entity;
player.spigot()// ...```
#

You're going to need to revise on some of the basics here. Types and casting are something you need to have a firm grasp of before making plugins.

terse ore
#

is there a way to decide which structures to generate or not?

opal juniper
#

how do i use plugin annotations without shading the entire of bukkit

buoyant viper
#

what

#

dont u not have to shade anything

opal juniper
#

hmm lemme try restarting again then. I got ClassNotFound's the first time

quaint mantle
#

How worldguard works? I dont think it check every region location to check if players in X region.

opal juniper
tender shard
#

paste your pom

opal juniper
#

?paste

undone axleBOT
opal juniper
#

currently looking like that but it is not provided

tender shard
#

the scope for the annotations should be "compile"

#

at least that's what the wiki says (they use no scope there which is "compile")

buoyant viper
opal juniper
#

sorry, 1.13*

#

in the annotation pom

buoyant viper
#

oh

#

interesting

opal juniper
#

i probs have to enable annotation processing or something

buoyant viper
#

wtf does it need to even use bukkit api for ... never looked at the src

tender shard
#

to me, using "provided" as scope works fine

#

this works fine for me

opal juniper
#

do you have annotation processing on

tender shard
opal juniper
#

eh true

#

choco fix pls

#

idk how worky

pure dagger
#

What should i use to "mark" inventories? I see in many tutorials that people check if inventory title is equal to something, but it doesnt make sense, player can use anvil to change name, there is something called CustomName but i dont know what this is, should i use it or what?

buoyant viper
#

is ur problem like Bukkit overriding Spigot import?

opal juniper
#

OH WAIT

#

nvm it is working

#

i just stoopid

tender shard
buoyant viper
opal juniper
#

i was tryna access the version from the annotation

#

hence the no class error

buoyant viper
#

nice

pearl seal
#

Can I delete 'test' directory from project or that directory is required?

opal juniper
#

can delete

pearl seal
#

thanks

urban trout
#

hey, how would i put out a campfire in code?

opal juniper
#

get the block and cast to Campfire

kind hatch
#

Campfire#setLit()

urban trout
#

yeah i dont have setlit

young knoll
urban trout
#

i think ive done something wrong

young knoll
#

Campfire BlockData

opal juniper
#

wrong campfire

young knoll
#

Not the BlockState

buoyant viper
#

get lit 🚬

opal juniper
#

tut tut tut

buoyant viper
#

tutorial? none. just gotta experience it, yknow?

twin robin
#

is there some way to smooth out these biome transitions? ive been searching online and cant really find anything that helps

young knoll
#

More noise

#

And interpolation

opal juniper
#

@Command(name = "islands", desc = "Islands command")
doesnt work :(

#

what am i annotating with that btw?

#

thought it would just be the main class

worldly ingot
#

Man, I want to PR just a little "<o/" to the end of that method Javadoc now

urban trout
#

ok it says Cannot resolve method 'setLit' in 'Campfire'

kind hatch
#

Show code

worldly ingot
#

Just make sure you're importing the correct Campfire

#

There's also a BlockState of it

urban trout
#

oh

#

i imported the wrong one

#

thank you

tardy delta
#

bruh bitch

tender shard
tardy delta
#

actually have the wrong field name too but it didnt even reach that

#

--opens whatever?

lost matrix
buoyant viper
#

yeah

#

--adds-opens or whatever

tardy delta
#

smh

young knoll
#

Use the inventory instance itself

#

Or the view

lost matrix
pure dagger
#

yed

lost matrix
pure dagger
#

yay

tardy delta
#

--add-opens java.base/java.util.concurrent=ALL-UNNAMED ig

pure dagger
#

thank you

tardy delta
#

where even can i add cl options in ij?

lost matrix
buoyant viper
#

^

lost matrix
tardy delta
#

thought it was somewhere there

opal juniper
#

DAmm command annotation isnt working

fluid river
#

as it's like super simple

pure dagger
#

But does it work when i have 2 inventories with the same name ?

fluid river
#

ofc lol

#

but

tardy delta
#

uh its clearly not in the program arguments section

fluid river
#

it's better to use the guide above

#

but i always used inv holders

#

i can show how to if you want

pure dagger
#

ok

fluid river
#

dm ig

tardy delta
#

aight got it, thanks 7smile

lost matrix
#

The idea of using inventory holders is fine but you might block
some functionality if an actual holder is needed.

#

For purely virtual guis it works

tardy delta
#

not only wondering what this means

#

its on the line where i call runnableField.get(runnable)

lost matrix
signal kettle
#

Hello, Is there any way to make that if player break some kind of block near the SculkShrieker then let it scream/set warning level +1?

signal kettle
#

Ohh thank you very, that's what I was looking for but do not know where is it hiding

tardy delta
#

trying to get the exact runnable i submitted to a threadpool

ivory sleet
#

Why don’t you create a proxy instead

tardy delta
#

thr "Runnable task" parameter is a FutureTask created in the executor

#

and how would that work?

ivory sleet
#

For the thread pool itself

tardy delta
#

dunno a proxy in what kind?

lost matrix
#

Yeah just implement ExecutorService and proxy another impl

ivory sleet
#

Or well what exactly are we doing, the current solution looks so hacky

serene sigil
#

can i rely on Bukkit.getOnlinePlayers for the exact player count?

tardy delta
#

uhh so i overwrote that method, and the task parameter has a field "Callable<T> callable" which is actually a RunnableAdapter<T> and that holds the actual runnable i submitted 💀

#

then casting it to my own client handler thingie

#

ah man

lost matrix
#
public class ProxyExecutorService implements ExecutorService {

  private final ExecutorService proxiedService;

  public ProxyExecutorService(ExecutorService proxiedService) {
    this.proxiedService = proxiedService;
  }

  @Override
  public void shutdown() {
    this.proxiedService.shutdown();
  }

  ... etc
serene sigil
#

okay..

fluid river
#

i mean it might differ in several milliseconds after, but still

serene sigil
#

ye ok

ivory sleet
#

Still foruteen what the heck r u doing

tardy delta
#

hmm imma try that

ivory sleet
#

If u need reflection for the std lib then something isn’t right

lost matrix
ivory sleet
#

Yea lol

young knoll
#

I love jank

fluid river
#

fourteen is just fourteen

#

no worries

#

being himself fourteen minutes straight

tardy delta
#

uh well after a clienthandler runnable gets executed into a threadpool, it should get removed from a collection but i dont really see a way to bind a callback to the runnable

#

so i thought lets override that afterExecute method which looks up the exact runnable submitted and removes it

#

the clienthandler isnt aware of its surroundings so it has no reference to the collection or smth

ivory sleet
#

Sounds like a delegation design is much better off here

tardy delta
#

sounds like i have no clue what im saying

#

sounded good in my head

ivory sleet
#

Joys of code

tardy delta
#

lemme see if i can do anything with a proxy

#

uh oh lets extend threadpoolexecutor instead

ivory sleet
#

That’s also better

regal scaffold
#

Smile

#

Are you here

#

ACF assistance needed

ivory sleet
#

Just no reflexción

lost matrix
#

Lets see it

tardy delta
#

yesterday i was using reflection to access suns classes 🤡

#

not my code though

regal scaffold
#
    @Subcommand("revert")
    @Description("Reverts all the changes")
    public void onRevert(OnlinePlayer sender, ProtectedRegion r) {

I'm trying to have a command called "/maincommand revert"

I have a Context that converts ProtectedRegion into the object or gets the possible region from the location of the sender. So far so good

#

Why does this happen

lost matrix
#
  @Subcommand("here")
  @CommandCompletion("@ActiveCollegeUser")
  @Syntax("<Target>")
  public void onTpHere(Player sender, @Values("@ActiveCollegeUser") ActiveCollegeUser target) {
regal scaffold
#

I actually just removed the syntax

#

It was there before

#

I have a question tho

#

Ummm

#

I assume the syntax and command completion

#

Work as the actual parameters in the function

#

The order, I mean

lost matrix
#

Yes

regal scaffold
#

Ok that's good

#

I see you have <target> as the syntax

#

I did it completely wrong before then

#

@Syntax("/house revert")

#

I had that

#

So yeah, very bad

lost matrix
#

If you want to complete nothing then you need to throw in a @Nothing

regal scaffold
#

Oooooo ok ok that's like a space in completion

#

Ok fantastic

tardy delta
#

well the issue is, this Runnable is of type FutureTask and not the runnable i submitted

#

maybe i could just listen for ::execute too

#

java.util.concurrent.FutureTask stores the callable field (which wraps the runnable i want) so i thought to use reflection

regal scaffold
#

And last question @lost matrix

  @Subcommand("here")
  @CommandCompletion("@ActiveCollegeUser")
  @Syntax("<Target>")
  public void onTpHere(Player sender, @Values("@ActiveCollegeUser") ActiveCollegeUser target) {

If I have my ActiveCollegeUser.class context set to either provide a name or if no name provided, getlocation.

Meaning the user can either specify a specific name or the region they are standing on

#

Do I set my CommandCompletion to @CommandCompletion("@ActiveCollegeUser") but how can I not force the player to specify it if they don't want. Even though it will always be used.

#

Is that when I should use a @sick swan?

lost matrix
#

Im not sure if i understood that sentence.
But you can annotate a parameter with @Optional
This way it will be null if the player doesnt provide it

regal scaffold
#

nono so

#

Let me show

#

My ProtectedRegion context:

acf.getCommandContexts().registerContext(ProtectedRegion.class, context -> {
            String regionName = context.getFirstArg();
            ProtectedRegion region //Will either get the value from regionName IF it was provided, or will get the region where context.getPlayer().getLocation() is at. Null checks are working correctly

            return region;
}
#

So if I have a command like test region

Which can either be

test region <name> //Will get the region with the name from the context
OR
test region //Will get the region from the location of the player ( if exists )

#

That's what I want to do

tawny remnant
#

How do i open a different inventory for each player every time?

tardy delta
#

create a new one?

#

🤔

tawny remnant
#

'how'

tardy delta
#

Bukkit.createInv bla bla bla

lost matrix
lost matrix
regal scaffold
#

uuuu

rough drift
#

Should I use length or lengthSquared in a vector to use it as a radius for a circle

regal scaffold
#

Ok ok I like that

tawny remnant
tardy delta
#

ah fun my callable returns a Void 💀

tardy delta
#

i cant handle this anymore

tawny remnant
#

What?

regal scaffold
#

Ah Several ways of doing that You can

lost matrix
tawny remnant
warm mica
#

Can somebody explain what exactly "NBT storage API" refers to? I am currently am dealing with the annoyance of wanting to being able to restore exact copies of entities etc. and there is no way to do that using Bukkit's normal API. I have been doing that using NMS in the past, but I would like to prevent it in the future. This I have been thinking of an API that allows the serialization and deserialization of NBT tags of certain objects, such as entities, items, etc.
I am very certain that this would get great use as NBT libraries are quite popular for good reason.

To be clear, I simply want a few classes with which I am able to access and modify certain NBT tags of certain objects without having to rely on a library or NMS. I don't want to implement actual File IO stuff

lost matrix
tawny remnant
warm mica
warm mica
#

BukkitObjectOutputStream simply serializes whatever ConfigurationSerializer outputs, that could be anything

lost matrix
tawny remnant
#

why

lost matrix
worldly ingot
regal scaffold
#

Can I add conditions to showing command completions to a specific player using ACF

young knoll
#

Maybe we should add a method to serialize an entity to bytes

lost matrix
young knoll
#

Would be nice

worldly ingot
#

Wouldn't really know what to do with that

#

What happens when you deserialize it?

buoyant viper
#

BukkitEntityOutputStream when? /j

regal scaffold
#

Oh... there's literally c.getPlayer()

#

great

#

Thanks

fluid river
#

create it and store somewhere

#

open when certain player needs

young knoll
worldly ingot
#

Well we're circling back to virtual entities lol

regal scaffold
#

What about hiding default commands for a specific condition @lost matrix

young knoll
#

It all goes back to virtual entities

regal scaffold
#

Like, aliases and such

warm mica
lost matrix
buoyant viper
#

Priavte

worldly ingot
#

It's an implementation detail

young knoll
#

You know who has virtual entities

buoyant viper
#

my MOM

young knoll
#

Pap-

worldly ingot
#

Your mom should contribute to Bukkit

tardy delta
#

thats gotta be a lovely piece of code

regal scaffold
lost matrix
regal scaffold
#

/house is the default command name category

If a player doesn't meet a specific condition

/house won't show up when a player types at the start

#

No subcommand stuff yet, just the entire thing won't show up

warm mica
#

just that you are also able to apply the snapshot

worldly ingot
#

There's still deliberation on how to use that sort of API for spawners and spawn eggs

young knoll
#

Hey choco

#

Who's Marvin

worldly ingot
young knoll
#

I see

#

Not much of a talker

tardy delta
#

am i the only one that realizes how to do smth when i lay in my bed

terse ore
#

is ther ean equivalent to 7locate structure ancient_city with spigot aip?

terse ore
#

tysm

urban trout
#

can i have multiple different events in 1 class and register the class once

#

or do i need multiple classes for different event types

tardy delta
#

can be in one class

kind hatch
#

You can do either or.

tardy delta
#

the server will look through that whole class for methods with @EventHandler

warm mica
# worldly ingot ^

I don't really understand what you think of a virtual entity. What I'd think of that term would be an entity that continues to exist even after you remove it with the ability to always respawn it. My idea of the EntitySnapshot would be an object that basically just holds a copy of all the attributes of the entity. By itself, it shall not spawn any of them. NMS actually already has methods for exactly that

urban trout
#

alr thanks

young knoll
#

A virtual entity is just the equivalent of NMS's Entity

#

Which does not have to exist in the world

regal scaffold
#

If I want to add a condition to every command inside a Class that extends BaseCommand in ACF do I need to add @Conditions on every single command or can it be applied to the class?

young knoll
#

Where as a bukkit entity has to exist in a world (except for that one case where it doesn't)

terse ore
#

Could you change the color of a portal without resource packs (like you do with leaf and grass)

young knoll
#

No

warm mica
#

Ye my idea would be different. The EntitySnapshot should simply only hold all the getters and setters that you have with an Entity

urban trout
#

i have this

    @EventHandler
    public void onPlace(BlockPlaceEvent event) {
        if (event.getBlockPlaced().getType().equals(Material.CAMPFIRE) || event.getBlockPlaced().getType().equals(Material.SOUL_CAMPFIRE)) {
            Campfire camp = (Campfire) event.getBlockPlaced().getBlockData();

            camp.setLit(false);
        }
    }```

and you can probably guess that im trying to put out campfires when theyre placed, but it doesnt seem to do anything and im not getting any errors
young knoll
#

Kinda wish mojang kept that feature from the infinite snapshot tbh

terse ore
#

custom portals would be much better

young knoll
#

Welp i'll add it to the list of things I need to smack them over

terse ore
tardy delta
#

dont you need to update the block state or smth?

urban trout
#

oh ye

kind hatch
terse ore
young knoll
#

You need to use block.setBlockData

urban trout
#

forgot to set the data

#

thanks

terse ore
#

k nvm

#
Minecraft Wiki

The funky portal is a block introduced in Java Edition 20w14∞ that allows entry into randomly generated dimensions. It is a colored variant of the nether portal block with the color being determined by the destination dimension.

tawny remnant
#

How do i prevent players from inserting an item to a certain slot in a gui

tardy delta
#

cancel click event

tawny remnant
#

tried, didnt work if player was dragging an item

terse ore
#

InventoryMoveItemEvent?

young knoll
#

That's for hoppers

terse ore
#

mb

tardy delta
#

inv drag event too then ig

regal scaffold
#

If I want to add a condition to every command inside a Class that extends BaseCommand in ACF do I need to add @Conditions on every single command or can it be applied to the class?

@lost matrix

tardy delta
#

uh are you calling config.save() cuz that config is loaded into memory?

compact wasp
#

One message removed from a suspended account.

tardy delta
#

im too tired to read but does that task keep reading the value?

sterile token
#

How do you replace color codes using MiniMessage api, without getting the output as Component ¿?

remote swallow
#

legacy serializer

sterile token
remote swallow
#

one sec

sterile token
#

right really thanks man

sterile token
#

Someone told me that

compact wasp
tardy delta
#

LegacyComponentSerializer.builder().character('&')
.hexCharacter('#').hexColors().useUnusualXRepeatedCharacterHexFormat().build(); lmao

sterile token
#

Atleast now i realize i cant use thats shits anymore, working with them is a huge headache

tardy delta
#

uh wdym fixed

sterile token
#

wrong reply?

tardy delta
#

that thing just keeps reading config values from memory

tardy delta
#

youll have to reload it

sterile token
#

But only return the component which i cant use it tho

remote swallow
#

return Minimessage.miniMessage().deserialize(text);

sterile token
urban trout