#help-development

1 messages · Page 637 of 1

shadow night
#

Whats serice

eternal oxide
#

a typo

shadow night
#

okay

icy beacon
#

goksi is cooking something slowly

shadow night
#

Sablesubaya chayka

#

Okkay bye

icy beacon
#

че

shadow night
#

:)

pseudo hazel
#

ye

upper hazel
#

hey, how is the sorting system in minecraft auction plugins? According to the material, it’s hardly because there are donated items, but they are somehow sorted separately

abstract sorrel
#

does anyone know how i would achieve something like this:

file = new ConfigFile("playerdata/world1", player.getUniqueID().toString())

Where it would create the folder path inside the default plugin folder and create a file inside named the player's id?

river oracle
#

does Command#register actually register the command to the command map I see no indication it does

#

its so weird

quaint mantle
#

Server class

tender shard
#

i have no clue what Command#register is used for

young knoll
#

I think there was a brief discussion on exposing the register method

#

Since so many people use it anyway

silver robin
#

I wanted to give an answer to my own question here
the problem was in the line where i set nametag visibility of ScoreboardTeam, it happened to send the update to every player
the way i found out is by printing the stack trace in the packet listener
anyway, peace

river oracle
#

What's a nice way to loop over a map and remove stuff without getting ConcurrentModificationExceptions

young knoll
#

Iterator

river oracle
#

alr

tender shard
#

or just simply removeIf

young knoll
#

True

river oracle
#

oh map doesn't have removeIf though

eternal oxide
#

it does

#

entrySet

river oracle
#

oh does the entry set modify the map itself

eternal oxide
#

yes

river oracle
#

ahhh makes sense

tender shard
#
        // Iterator
        Iterator<Map.Entry<Object,Object>> iterator = map.entrySet().iterator();
        while(iterator.hasNext()) {
            Map.Entry<Object,Object> entry = iterator.next();
            iterator.remove();
        }

        // removeIf
        map.entrySet().removeIf(entry -> entry.getKey().equals(entry.getValue()));

        // Second collection
        Collection<Object> keysToRemove = new ArrayList<>();
        for(Map.Entry<Object,Object> entry : map.entrySet()) {
            keysToRemove.add(entry.getKey());
        }
        map.keySet().removeAll(keysToRemove);

these are the first 3 methods that came to my mind, there's probably at least 5 more ways lol

desert loom
#

pretty sure keySet() and values() reflect changes too

#

so you can also use those with removeIf/iterator

shadow night
#

Is there a way to register a command during the runtime? Maybe by like modifying the tab completion event and the command handle event or whatever to make a custom command handling thing?

tender shard
#

just add it to the command map

river oracle
#

its really easy

young knoll
#

Dang we were just talking about this

#

:p

shadow night
young knoll
#

Yes

#

It’s just not exposed

river oracle
# shadow night That shit exists?

this is what I do

    public static void register(@NotNull final Plugin plugin, @NotNull final Command command) {
        final CommandLabel label = command.commandLabel();
        final PluginCommand pluginCommand = ReflectionUtils.newInstance(PluginCommand.class, new Object[]{label.name(), plugin});
        if (pluginCommand == null) {
            throw new RuntimeException("Creation of PluginCommand failed");
        }
        pluginCommand.setName(label.name());
        pluginCommand.setAliases(label.aliases());
        pluginCommand.setPermission(label.permission());
        pluginCommand.setUsage("/" + label.name());
        pluginCommand.setExecutor((s, c, l, a) -> command.execute(s, a));
        pluginCommand.setTabCompleter((s, c, l, a) -> command.complete(s, a));

        if (commandMap == null) {
            init();
        }

        if (!commandMap.register(plugin.getName(), pluginCommand)) {
            throw new IllegalStateException("Command with the name " + pluginCommand.getName() + " already exists");
        }
    }```
shadow night
tender shard
#

cast PluginManager to SimplePluginManager, get commandMap with reflection, done

shadow night
cinder abyss
#

Hello, how can I make a ServerPlayer (fake) join the server (I want to get the join message) in 1.20.1 with nms ?

shadow night
#

Maybe call the PlayerJoinEvent? Idk never made fake players

river oracle
#

commandMap = ReflectionUtils.getField(Bukkit.getPluginManager(), "commandMap", CommandMap.class); one liner with reflection utils uwu

shadow night
eternal oxide
#

I lie

tender shard
#

I sit

river oracle
#

I jump

cinder abyss
eternal oxide
#

Magma somethign was playing with it a few months back

shadow night
#

PlaceRecipePacket

cinder abyss
#

well LUL

shadow night
#

I will never get packets tbf

cinder abyss
#

wrong link

river oracle
#

How should I check if two plugins are the same can you compare plugin with .equals?

quaint mantle
#

hi guys can i do bungeecord api ?
i mean i will api in bungeecord server and other servers will get data from this api

shadow night
river oracle
#

i thought you could have 2 plugins with the same name

eternal oxide
#

@torn shuttle Tell us of your wizardry in logging a fake player in.

shadow night
#

the name is kinda like an id afaik

#

Like, your plugin is identified by the name in your plugin.yml, usually

#

Bedrock plugins have an UUID system

river oracle
#

lord this looks horrible

        knownCommands.entrySet().removeIf((Map.Entry<String, org.bukkit.command.Command> entry) -> {
            final String label = entry.getKey();
            if (!(entry.getValue() instanceof PluginCommand pluginCommand)) {
                return false;
            }

            return plugin.getName().equals(pluginCommand.getPlugin().getName());
        });
river oracle
shadow night
#

So, is the name like an identificator?

cinder abyss
# eternal oxide <@155920170353688578> Tell us of your wizardry in logging a fake player in.

thanks to his chat history, I found something that can also help me for another project 😄 https://github.com/MagmaGuy/FreeMinecraftModels

GitHub

Display BlockBench models in-game, for free, in an open-source way, under GPLV3 - GitHub - MagmaGuy/FreeMinecraftModels: Display BlockBench models in-game, for free, in an open-source way, under GPLV3

tender shard
#

if you have two plugins with the same name, this happens

[19:53:20] [Server thread/ERROR]: Ambiguous plugin name `Daytime' for files `plugins\Daytime-1.0.0.jar' and `plugins\Daytime-1.0.0 - Kopie.jar' in `plugins'
#

and then it only uses one of those

shadow night
young knoll
#

Can you not just fire a fake login event and then send the resulting message to everyone

#

Isn’t that basically all login is

young knoll
#

Idk what does a login event require

#

Player and join message?

quaint mantle
#

can i make api plugin ?...

  • but this api plugin will be in bungeecord.
  • and it will transfer data to the plugin inside a non bungeecord server
cinder abyss
#

something interesting

river oracle
#

When you do reflection on a field that is a collection is the field updated as things are appended to the collection

cinder abyss
#

if it works, nothing to do with nms

river oracle
#

I would assume yes I just feel like so scared it doesn't

cinder abyss
#

@young knoll I can really make an instance of a Event ?

onyx fjord
tender shard
#

the field is just like a "pointer" to your collection

tender shard
#

you can change the collection all you want, doesn't have anything to do with the field object

young knoll
#

Granted the event will only handle the join message

#

You still have to send the NPC to all the clients

tender shard
cinder abyss
young knoll
#

The join message

tender shard
#

well how aobut "mfnalex joined the game"

#

lol

cinder abyss
#

I want the default joinMessage or the join message set by a plugin

young knoll
#

I believe the default is just “X joined the game” in yellow

#

Yes plugins can then modify it when you call the event

cinder abyss
#

Event instantiation trigger the EventHandler ?

tender shard
#

no

#

you call PluginManager#callEvent

cinder abyss
river oracle
#

that fucking sucks

river oracle
#

idk I thought you said it didn't update

tender shard
#

I said the field object doesn't change

#

which is what you want

#

you want it to still point to the collection you got earlier

cinder abyss
tender shard
#

just because you're using reflection to get a field's value doesn't magically produce a clone of that value

tender shard
river oracle
echo basalt
#

Yes

#

It's returnin the same object and not a copy of it

tender shard
#

I really don't know what you mean with "synced up"

river oracle
echo basalt
#

It's no different than calling a getter

river oracle
echo basalt
#

but if the reflected list is reassigned then it desyncs

tender shard
#
myList = OtherClass.myList;
myList = OtherClass.class.getDeclaredField("myList").get(null);
// the same
cinder abyss
austere cove
river oracle
sterile breach
#

Hello, inventory.getsize return the max slot or rows?

echo basalt
#

slot

river oracle
sterile breach
#

thanks

tender shard
#

Getting a fields value through reflection is exactly like as if you‘d get it directly

austere cove
#

in that case the value obtained from reflection and the field value are the same (i.e. ==)

river oracle
tender shard
#

Think of the field as if it was a pointer

#

Kinda

austere cove
#

mutability and concurrency are headaches. I love rust

tender shard
#

Rust mc server when

#

That implements spigot api

young knoll
#

What does rust not let anything be mutable

#

Kek

lilac dagger
#

Wait actually?

#

Why?

austere cove
#

no but its safe so that it cant be modified concurrently by design

young knoll
#

Just use locks smh

#

Or synchronized

lilac dagger
#

What happens if you add an element in a collectiom in rust?

proper notch
lilac dagger
#

Are they all copyonwrite?

hazy parrot
#

That would make no sense lol

river oracle
#

I'd assume it depends how you define it, that'd be slow

quaint mantle
#

hey, how do I block creeper block damage without changing the overall explosion radius?

#

is there an event for this?

river oracle
#

rust is memory safe first and fast second, so I doubt they'd copy on write every single append

hazy parrot
#

I mean I don't know rust, but I doubt every list is copyonwrite

river oracle
#

?jd-s

undone axleBOT
young knoll
#

^ it’s mutable

#

You can just clear it if you want no blocks broken

quaint mantle
#

oh thanks. because I had the problem, I changed explosion radius to 0 but then I noticed player damage is also blocked which I dont want

river oracle
#

real question are you even using paper API if this isn't at the top of your class?

young knoll
#

That’s why I’m simply not using paper api

tender shard
#

same

cinder abyss
#

Well, it isn't working...java main.getServer().getPluginManager().callEvent(new PlayerJoinEvent(craftPlayer.getPlayer(), ChatColor.YELLOW + "Herobrine joined the game"));@tender shard

#

it does nothing

young knoll
#

You need to take the result of the event and send it to all players

#

Well, the result message

austere cove
#

what are you trying to do

cinder abyss
cinder abyss
young knoll
#

You can technically just skip the event and send the message

quaint mantle
#

someone know mysql ?
i got this error on exporting

young knoll
#

But then other plugins won’t be able to change it

cinder abyss
#

soooo ?java Bukkit.broadcastMessage(new PlayerJoinEvent(craftPlayer.getPlayer(), ChatColor.YELLOW + "Herobrine joined the game").getJoinMessage());

young knoll
#

You still need to call the event

cinder abyss
#

okay

austere cove
#
PlayerJoinEvent event = null;
Bukkit.getPluginManager().callEvent(event);
String message = event.getJoinMessage();
if (message != null) {
    Bukkit.broadcastMessage(message);
}
cinder abyss
#

and get the result inside ?

austere cove
#

(except don't use null obviously)

cinder abyss
#

okay thanks

tender shard
cinder abyss
young knoll
#

Nah event calls are never responsible for actually performing the event

#

That comes after

cinder abyss
#

perfect thanks 😄

quaint mantle
#

yes i do

#

(sorry for necroposting)

terse bough
#

How to code a PacketReader in a version higher than 1.19.4?

#

Does anyone have a ready class they would like to share

quaint mantle
#

Hi , how to connect to mysql in easy way and short code ?

austere cove
#

DriverManager#getConnection(String)

austere cove
terse bough
#

I know but how do I get this pipepline from a player since the 1.19.4 changed something

quaint mantle
#

i mean a connection event for mysql

dawn plover
#

why is everything givingan error for some reason, i littaraly build it a minut ago without even opening this file. so the code is correct

#

bruh this makes my brain hurt
it littaraly build succesfull with all these errors

worldly ingot
#

Most likely just an IDE cache issue or something

dawn plover
#

thats the .idea folder right

terse bough
#

Guys, how do I get this pipeline from a player since the 1.19.4 changed something

young knoll
#

pipeline?

sterile breach
#

Hello, in the inventory object, if i open the same inventory for two players, thes two inventory are considered like equals?

young knoll
#

Yes the inventories will be equal

#

But the views will not be

dawn plover
terse bough
lilac dagger
#

packet listener?

sterile breach
worldly ingot
dawn plover
sterile breach
quaint mantle
#

What can I use instead of ChatColor, because it is deprecated? is there an easy method?

young knoll
#

It's not

#

Ur using the paper api

river oracle
#

paper user spotted

young knoll
#

Can we get a ?paperapi command

river oracle
#

?fork

undone axleBOT
#

SpigotMC maintains the Spigot server. If you are using a fork of Spigot (such as Paper, Airplane, Purpur, or other derivative works), you should seek support in the appropriate Discord servers.

umbral ridge
worldly ingot
vast ledge
#

If tree has been setup to torcher user, let me know when we should start

#

torture**

sterile breach
dawn plover
# sterile breach https://www.spigotmc.org/threads/a-modern-approach-to-inventory-guis.594005/ we...

(btw that thread is way to long so i am not reading that, also Cntr+f searching for "inventory key" gives nothing lol)
but its really simple
if you have a method simular to openInventory(...) and it creates a new instance of a inventroy every time, then yes, its a seperate inventory, and people wont see any changes appart from themselves
if instead you constantly open the same instance (created once, and then constantly reffered) then and people will see every change you make to it

because you are using hashmap i dont think its even posible to make the first senerio
so key X will always reffer to inventory X, and verse visa
(its because you made the inventory instance once, and saved it at the key. thatway the key has only 1, and always that same 1 instance)

lost matrix
river oracle
#

How do I decide whether I should use a registry or enum

quaint mantle
#

idk I only use registries when I have like a item registry and a bunch of classes that extend item or smth and then use enum when its like Permission.XYZ

eternal oxide
#

registry if you have a LOT of entries or you need to be able to add/remove entries on the fly

river oracle
#

👍

sterile breach
quaint mantle
green plaza
#

Help please

quaint mantle
grand saffron
#

lol

quaint mantle
#

You/your plugin is trying to create a team on a scoreboard, but that team already exists

quaint mantle
#

Or modify the existing one

sweet sonnet
#

Is there anyway to not show the users inventory at the bottom?

echo basalt
#

n o

lilac dagger
sweet sonnet
#

Thought so

quaint mantle
#

Has anyone here implemented a grafana dashboard to moniter stuff in a spigot plugin before?

if so did u use prometheus or influxdb?

quaint mantle
#

You will need to create a mod or a modified client version (which will be most difficult to do than a mod)

cinder abyss
#

Hello, two questions :
how can I hide ServerPlayer (nms 1.20.1) nametag with spigot or nms ?
Is player PDC persistent after player disconnect ?

quaint mantle
#

Always remember, non server side controlled modifications requires client side modifications

chrome beacon
cinder abyss
chrome beacon
#

I made a plugin that hides player nametags when they're not visible

#

Like behind a wall for example

#

It's not that hard to do

cinder abyss
quaint mantle
#

Is it worth switching over to library loading instead of shading dependencies?

young knoll
#

I mean

#

It keeps the jar size down

echo basalt
#

apparently someone found my github project through youtube

#

the fuck

young knoll
#

TIL you can see that

echo basalt
#

I get all the google ones

#

because if you search skyblock core spigot my result's just below ssb2

quaint mantle
#

hi guys i have a question
i will do stats plugin but this plugin depends api
if i upload this api to bungeecord
my stats plugin will work ?

hazy parrot
quaint mantle
#

what in the world

hazy parrot
#

There are two ways to create instances:
Using the new Keyword
Using Static Factory Method
But tf is this

bitter rune
#

I'll look up new keyword thanks

hazy parrot
#

You have to pass it, either using Di or static getter

#

?di

undone axleBOT
shadow night
#

How do you make a static getter?

bitter rune
#

Main class = current class I'm in?

hazy parrot
bitter rune
#

Okay

hazy parrot
#

First argument in runTaskLater should be instance of your main class

shadow night
hazy parrot
shadow night
#

Ohh that's what copilot suggested me

hazy parrot
#

So you can get instance of your class with getPlugin(YourClass.class)

shadow night
#

That's interesting

green plaza
#

Anyone know how to fix this error and can provide some simple solution?

cinder abyss
#

(it is already created)

green plaza
bitter rune
#

Thanks, appreciated

green plaza
#

And where should i put that? Because the error occur only in BungeeCord

cinder abyss
#

using Bukkit.getScoreboardManager().getMainScoreboard().getTeam("YOUR_TEAM_NAME");

green plaza
cinder abyss
cinder abyss
worldly ingot
#

Come on, man. Use at least a little bit of critical thinking ;p

#

The error says in plain English why it's being thrown. So you need to find some way to check if a team already exists on a scoreboard before you register it

#

Look at the Javadocs or use your IDE to see if there's any method whatsoever that might possibly give you some indication of whether or not a team exists

#

In this case PauLem is correct, getTeam()'s nullability will tell you if a team exists. But in the future, at least pretend to have put in a little bit of effort

cinder abyss
#

same answer

worldly ingot
#

Or, yeah, some simple Google-fu

twin venture
#

what event is triggered when i use a lava bucket?
it will turn it into a bucket??

worldly ingot
#

BucketEmptyEvent

#

D: What's with the "I don't want to use Javadocs" people today?

twin venture
#

that's not a real thing is it xd?

twin venture
#

oh its real event , never heared of it

#

thanks :p

worldly ingot
#

Javadocs have a search bar, just fyi in the future

pale hazel
#

What is the difference between Enttity and EntityType is an EntityType more specific to an entity type?

river oracle
#

EntityType is just a list of all possible Entities

#

they don't really have anything in common

#

?jd-s

undone axleBOT
river oracle
#

Represents a base entity in the world from Entity

opal juniper
quaint mantle
remote swallow
worldly ingot
near mason
#
for (int i =height; height<=10;height++){
    for(int x=-width/2;x<=height;x++){
        for (int z=-width/2;z<=height;z++){
            Location loc = topPos.add(x, - height, z) ;

//spawn the particle from loc
}

}

}

#

been writin for 10 mind

#

*10 mins

#

Writing at phone is pain

#

Updated

#

topPos id the top corner of pyramid

tender shard
#

they are probably client side. which blocks are you talking about?

raven fern
#

How would i create a random number for a minecraft seed?

wet breach
#

Well i think the only limitations for the seed is character limit and alphanumeric

#

So you could just use a generator from online to make you a seed from those limits

raven fern
#

generator from online?

wet breach
#

Yeah there is plenty of web generators to generate random strings with whatever limits you impose

#

And then you can plug that into the server.properties file for seed. Then delete or move old world and let it make a new one

#

Server only uses new seed when creating new worlds

raven fern
#

yeah im trying to create new worlds on the fly

#

just random seed mineecraft survival worlds

#

cant i just do Math.random() i just dont know what are the restrictions to Minecraft seeds

#

ig ill just try Math.Random idk

#

oh that gives a double

warm light
#

I want random float from 0.01 to 100
so what will be the bound?
I am doing new Random().nextFloat(101.0F); rn. but look like its choosing from 10-100

wet breach
#

If you use any alphabet characters or the character limit exceeds 20 characters. The limit is a 32bit int. Negative and positive is allowed. If instead you use only numbers and dont exceed 20 characters the limit is a 64bit long negative or positive

#

Cant use doubles or floats. Has to be an int or long

raven fern
#

nvm they want to take in a string as the world seed idk how that works but ig i can generate 20 random letters for it

#

"seedString - The seed in the form of a string. If the seed is a Long, it will be interpreted as such."

wet breach
wet breach
#

If the string is nothing but numbers it will treat it as such

raven fern
#

i mean then i can creeatea random string of 20 letters that will bascailyl create a random number

wet breach
#

It should yes

young knoll
#

You can use any long value for the seed

raven fern
young knoll
raven fern
#

so create a random long in the form of a string?

lost matrix
quaint mantle
#

anyone know any good inventory api's for 1.18.2+?

young knoll
quaint mantle
#

cuz i found a few that imo are pretty good but some how are broken so im still on the hunt

raven fern
lost matrix
raven fern
#
long leftLimit = -2147483648;
        long rightLimit = 2147483647L;
        long seed = leftLimit + (long) (Math.random() * (rightLimit - leftLimit));
#

@young knoll i think i did it right

young knoll
#

Just use ThreadLocalRandom

lost matrix
young knoll
#

^

raven fern
#

ty

wet breach
#

There is methods to create a range to input in for picking a random value

lost matrix
#

Was just thinking about that. I would honestly just multiply the random by 2 and multiply with the long max value.
Then overflows will take care of the negatives.

warm light
#

it always start from 1

lost matrix
#
  public static void main(String[] args) {
    int belowOne = 0;
    for (int i = 0; i < 1_000_000; i++) {
      float random = randFloat();
      if (random < 0.9F) {
        belowOne++;
      }
    }
    System.out.printf("Generated %d numbers below 0.9%n", belowOne);
  }

  private static float randFloat() {
    ThreadLocalRandom random = ThreadLocalRandom.current();
    return random.nextFloat(0.01F, 100.0F);
  }

Out

Generated 9040 numbers below 0.9

Process finished with exit code 0
#

9000 is about 0.9% of 1_000_000 so this sums up

young knoll
#

Oh good the laws of math are still working

wet breach
#

Time to keep that info tucked away for later now

#

I only remember it generating values from 0 to max positive

spark lynx
#

is there any ways to make npc(fake serverplayer) class instanceof Player?

lost matrix
#

Thats a weird question. NPC is an interface which extends Creature iirc.
What are you trying to do?

spark lynx
#

my fake player extends ServerPlayer , but it doesn't instanceof Player

lost matrix
#

It is

#

Its an instance of net.minecraft.world.entity.player but not org.bukkit.Player

chrome beacon
#

Gotta wrap it with CraftPlayer if you want a bukkit player

lost matrix
#

If you want to check for instanceof for the bukkit player then you need to get the bukkit player from your nms player.
So

if(nmsPlayer.getBukkitEntity() instanceof org.bukkit.Player) {

}
tender shard
#

ok tbh "nmsPlayer" could be anything

lost matrix
#

There is none

#

Unless the overwrite the getBukkitEntity method

#

Or yeah, nmsPlayer could be some nmsEntity

tender shard
#

yes and no

lost matrix
#

It wont look like a circle. Even with interpolation you are limited by the clients framerate

tender shard
#

1st: are you fine with a 20FPS spinning cube being considered a circle?

#

maybe you could show us a video

#

of what you want it do be, and what it currently is

lost matrix
#

What are you trying to do?

tender shard
#

7smile I recently bought a bratwurst and it stank like hell

#

and I had to think of you

lost matrix
#

That was me

tender shard
#

is this not weird?

#

take your time

#

it's only 7 am here

lost matrix
#

Why you already up?

tender shard
#

me, or the other person?

lost matrix
#

You ofc

tender shard
#

i hit the sweet spot of 1.25mg lorezepam and 4 beers

#

hard to explain, just trust me, it's the sweet spot

#

tbh that looks great, what's the issue with that?

lost matrix
#

Hm i think a flying ice block that rotates slowly + a few of those particles in the end will look nice

#

Doesnt need to be a circle

tender shard
#

yes

tender shard
#

but don't trust me. you gotta decide for yourself if you like that current animation

#

yes

#

teleport it

lost matrix
#

You could also interpolate the movement

tender shard
#

?xy

undone axleBOT
tender shard
#

gestanksbratwurst pls do me one favor, tell me your favorite song and I'll vanish from this chat for at least 20 minutes

lost matrix
#

Ill dm you some

spark lynx
spark lynx
lost matrix
#

Hmm. Quaternion fkery coming in.

lost matrix
sterile breach
#

hi, when I query the database, do I always have to do it in async?

lost matrix
lost matrix
sterile breach
lost matrix
chrome beacon
#

Also do regular saves from time to time to prevent data loss during crashes

sterile breach
austere cove
#

..yes

sterile breach
#

and just async at login?

daring schooner
#

This looks like Humble Vr in minecraft

#

Looks fun

lost matrix
sterile breach
lost matrix
sterile breach
#

asyncPreQuitEvent exist?

lost matrix
lost matrix
sterile breach
lost matrix
#

But make sure that your "cache" is thread safe or else you will get ConcurrentModificationExceptions

sterile breach
#

I have a hashmap, so instead I make a concurrenthashmap?

lost matrix
#

IO is short for Input/Output.
Some examples for IO are:

  • Writing/Reading to/from a File
  • Database access
  • Requests to Websites
lost matrix
sterile breach
lost matrix
#

You can keep the sleeping in if you want to annoy your players

#

Let them wait in a limbo for minutes on end /s

chrome beacon
#

They will timeout

sterile breach
#

and in case of any problem with the db, I can refuse them the connection and display a message to them?

lost matrix
sterile breach
rotund ravine
#

Huh?

#

Depends

tame bay
#

Yo. In the near past I saw a quite a lot of servers (1.20 etc.) which show an image of the players head in there scoreboard as an image. How does this works?

#

Is this also accomplished by texture packs or is there another way?

lost matrix
#

Screenshot?

tame bay
#

sec

#

currently not on my main pc so I had to screenshot it from a youtube video xD

lost matrix
#

Hmm. Do they appear somewhere else as well? Like in the chat or tab list?

tame bay
#

I´m not 100% sure since its been a while when I was on the server. But if I remember correct its only in the scoreboard

lost matrix
#

The only thing i could think of are resourcepacks. But that does scale horribly.

tame bay
#

They do have a custom server texturepack. But they cant probably replace everysone player head with a custom graphic and then automaticly reinstall the texture pack, I guess

wet breach
eternal night
#

@tame bay each pixel is its own char

#

negative space/back space magic is just enjoyable af

wet breach
eternal night
#

yea

lost matrix
#

I thought about that but then you would need a ton of chars for that.
Imagine a 256 bit color depth then you would need 256 x 8 images

eternal night
#

its 8bit iirc

wet breach
#

Well with 1.20 i think the easier way is display entities giving the appearance of a scoreboard

lost matrix
#

Thats what i mean. 8 bit is 256 colors

wet breach
#

This way you can use whatever images you want

eternal night
#

from the looks of it, they have 64 different colours ?

lost matrix
#

But wont this cause quite a bit of client side lag?
One image being 8x8 custom rendered chars...
10 head being 640 chars. And the network traffic as well if
you update this too often.

eternal night
#

eh ¯_(ツ)_/¯

wet breach
#

More of a reason to believe its a display entity and not an actual scoreboard

eternal night
#

Maybe its a fun shader

#

who knows

#

download the resource pack and check

wet breach
#

Assuming there is one lol

eternal night
#

I mean

#

server resource packs are still downloaded

#

there is a resource pack on that server

wet breach
#

I know they get downloaded but that is if the server specifies one

eternal night
#

that server does.

wet breach
#

Oh ok well i cant tell from the image lol

eternal night
#

just gotta know all servers in minecraft smh

lost matrix
#

Without a resourcepack this wont be really possible. They also removed the numbers from the scoreboard
and i think this requires a resourcepack as well

wet breach
#

And the missing numbers makes me think that as well

#

Just make the display entity move with the player at an offset and it gives the appearance of a scoreboard

lost matrix
#

Even with interpolation this could look whacky

#

Also writing on display entities is hard

wet breach
#

Why is it hard? No different then your typical hologram stuff

#

Just a new entity with a bit more features

lost matrix
#

The alignment and rotation is waay harder

wet breach
#

Well it may have more freedom in those regards that old holograms didnt have. But it shouldnt be an issue. But because it can rotate and align in more ways is nice because it does make for a better scoreboard replacement

#

But without more info or images though its hard to say one way or thr other but i believe its a display entity. Only makes sense because you dont need to bother with the resource pack for every player that joins

lost matrix
#

Ive tried writing UIs with the new display entities and i think its poopy

#

And it doesnt help that its resolution/FOV dependent

wet breach
#

Well that is how holograms always worked

eternal night
#

The scoreboard numbers are usually removed with core shaders these days

quaint mantle
#

?whereami

ivory sleet
#

Well

#

The server discards the info about the events when applying the component to the item

lilac dagger
#

add to yaw

#

nevermind

#

your issue is this

#

getLocation always sends a new location

#

@quaint mantle

#

reuse location

#

Location location = livingEntity.getLocation();
//do your stuff on location
//teleport using location

hazy parrot
#

getLocation return location copy, don't actually mutate players location

#

That is what he wanted to say

hazy parrot
#

Should work ig

lilac dagger
#

yeah

#

it's a camera rotation

#

i suggest you reuse this too

shut mauve
#

Hi, I was a 1.8 Minecraft Spigot plugin developer, and I want to learn to code 1.20 plugins, which places do you advise for me to learn ?

quiet ice
#

there isn't much to learn except perhaps PDC

shut mauve
#

What is PDC ?

quiet ice
#

?pdc

shut mauve
#

ty

quiet ice
#

There is also the new fancy Material API but you'll stumble on it soon enough to the point that is makes little sense to raise notice to it

drowsy helm
shut mauve
#

Thanks, I'll check it out rn, I'm reassured for my knowledge

quiet ice
#

Yeah thankfully it isn't as bad as 1.8 vs 1.20 in modding space

shut mauve
#

In 1.8 I couldn't do anything (e.g. custom villager, I had to use NMS, it was horrible), but now it sooooo easier

tame bay
#

@wet breach @lost matrix @eternal night thanks for your ideas. Im gonna try to hit up someone from there dev team. If I find something I let you know

buoyant viper
#

bukkit is a pretty huge abstraction layer

quiet ice
#

thank god

buoyant viper
#

yeah

#

if someone had a mod engine that used an approach similar to craftbukkit itd defo be much less aids than dealing with stupid little things like mappings changed

#

some people did attempt that but not on the scale that bukkit did :v

quaint mantle
#

what do I use instead of the deprecated org.bukkit.ChatColor?

#

(paper, if that makes any difference)

#

is org.bukkit.ChatColor deprecated in spigot?

icy beacon
#

no

#

paper deprecates it

#

in favor of components I reckon

quaint mantle
#

hmm

icy beacon
#

you can still use it

quaint mantle
#

thanks

quaint mantle
wet breach
abstract sorrel
wet breach
#

one of these days I will make one of my implementations where basically I strip out the majority of Mojang code and implement the bukkit api

buoyant viper
#

im just talking about the abstraction of Minecraft to create a version-independent workspace

#

where stuff like Mappings dont play much of a part

#

they DO matter internally, but not for the actual development of plugins

abstract sorrel
#

is that a paper related error then?

wet breach
#

well that is because mappings are done already really

#

but yeah

#

my implementation will basically not be dependent on updates

buoyant viper
#

in a personal experience, client mappings played a key role in why a mod stopped working despite no significant changes to internals happening :P

#

on Forge

wet breach
#

in other words, the moment an update comes out I could in theory already be updated since it wouldn't rely on the mojang code

#

its not going to be a clean room implementation either

buoyant viper
# buoyant viper on Forge

meanwhile u can download a bukkit plugin thats 10+ years old n itll probably still work mostly as intended :p

wet breach
#

probably not unless its something that is simple and doesn't touch the player objects

#

player object stuff got moved around a little in the API

#

or the methods in the object

buoyant viper
#

true, it was an arguable example but mostly true for something like an MOTD plugin or announcer

wet breach
#

then you have that api version enforcement in the plugin.yml lol

#

which that is easy to add for your example

quaint mantle
#

hey anyone good with server optimazations

buoyant viper
#

the api-version tag is for like forward compat tho isnt it? like a "this plugin uses api of at LEAST this version"

kind hatch
#

It is.

wet breach
#

which I am not a particular fan of

#

if a plugin has to use legacy api, already its unoptimal and cause your plugin to use more resources just because of it

#

or make the server work harder

#

since it has to translate

golden turret
buoyant viper
#

skill issue, just dont use Lombok DogJA

dull goblet
#

I am using NMS, I want to create a custom glowstone dust, but make it so that the dust is not stackable. So I want to set the maxStacksize to 1. I'm new to NMS and have been looking through the code, but Item seems to be deprecated and I don't know what to do.

wet breach
#

this would prevent it from stacking

dull goblet
#

Yeah but the item will be used in for example crates, so then it will always be the same copy of the item

#

Which will make it stack

quaint mantle
wet breach
#

but you didn't change it

#

config never changed

grizzled oasis
#

Hi, i need to take randomly the x and z between two coordinate one min and max, i tried with random but it didn't go that well

wet breach
#

second assigning getConfig() to a variable makes little sense as it doesn't do anything different

#

I think you were wanting it to save?

#

if so, you need to call getConfig().save()

quaint mantle
#

nope, i'm trying to load the config again incase of a change

wet breach
#

then null it out

#

and then re-assign it

quaint mantle
#

alright

#

why would just straight up reassigning not work?

#

Alright, so just tested it out:

    public void reloadConfigValues() {
        config = null;
        config = getConfig();
    }

It's doing the same, not changing at all

dull goblet
# wet breach I don't follow

So imagine if I create an Item with unique id 123, like by doing a command. I will have the unique glowstone dust. If i do the command again this time I will get glowstone 456 for example, these don't stack. Then when you want to use for exampmle a crate plugin or shop plugin (external), you input the item 123 into the rewards section. If someone wins that item it will also have unique id 123 which causes it to stack anyway.

wet breach
grizzled oasis
#

so in that way the wont stack but if the have the same nbt they works just fine

quaint mantle
#

so you have any idea?

dull goblet
#

but i want to prevent them ever having the same id, they can never stack

wet breach
#

forgot there is a method for reloading main config 🙂

grizzled oasis
#

or if you already made it

#

create a list that you keep track with the ids inside

quaint mantle
#

alright imma try it out

grizzled oasis
#

like 101, 102, 103, 104.2

#

etc

wet breach
#

and for the not stacking part

#

it is what you asked, you said you didn't want them to stack

#

so now you do want them to stack?

quaint mantle
#

it finally works!

dull goblet
#

No i never want them to stack, no matter the situation

quaint mantle
#

thank you so much

wet breach
#

you are welcome uwu

grizzled oasis
#

something to ask, really stupid and probably fast i need to take a X and Z and generate a number between the min and max of a region

dull goblet
#

Kind of like debug stick, it looks like a stick but it will never stack because the maxstacksize is 1 (because debug stick is a custom material, which you can't create i think). So I want to create an itemstack with a custom max stack size but idk if that's possible either

wet breach
#

if it only cares about the type then the custom data doesn't matter

#

and then all you have to do with your plugin that handles these custom items, is check if they have these things in their inventory

#

and if they do, apply random id

#

this takes care of the receiving part of the item from the shop

#

or crate or whatever

wise mesa
#

?gui

last abyss
#

Someone know why (1.8.8) even.setExpToDrop in BlockBreakEvent doesn't work or it's just for me pls ?

wise mesa
#

What’s that article about how to make inventory uis the right way

#

I doubt you’re gonna get much 1.8 help here

#

?command

#

?commands

#

Is there a list somewhere of all of the bot commands

#

?ui

#

?inventory

#

?chests

#

Damn

#

This is tragic

last abyss
#

but i think it would work like the same in my situation

chrome beacon
#

?

wise mesa
#

YES

#

appreciate it

#

Who needs cafebabe when all of the discord members already know what I’m talking about

faint harbor
#

Is there a way to change an ItemStack in a player's hand without showing the little swap item animation?
Trying to change enchantments for context

eternal oxide
#

no

buoyant viper
#

nah

faint harbor
#

Ah well, thanks

wise mesa
#

Make a mod?

#

Hahaha

glossy venture
#

wait does that not propegate to the lambda

warm mica
river oracle
remote swallow
#

poor y2k

#

he no pink

eternal oxide
#

he'll be $10 richer than you 🙂

remote swallow
wet breach
river oracle
quaint mantle
#

bro what is hikariconnection pool ?
is like hibernate and jpa ?

young knoll
#

It's a connection pool

quaint mantle
#

Hello help me I need deluxe combat addons
World guard

sterile breach
#

Hi, what is the differences between AsyncPlayerChatEvent and PlayerChatEvent ? except one is async

quiet ice
#

None

#

Except chances are you do not need PlayerChatEvent

#

Because uh, if you do that you add lag

dim adder
#

Hello guys,

could you tell me, how i can spawn snowparticles in the whole world?

eternal oxide
#

don't

sterile breach
#

so for modifications on the chat, I do an AsyncChat or just the chat event and I put the "loudres" things in async after canceling event

lost matrix
#

Spawn them in a distance around each player.
But let the player only see their own particles.

#

Is that the full exception?

sage patio
#

EntityDamageEvent triggers each tick?

abstract sorrel
dim adder
#

im nut a pro, but i think it could mean a package loss

sterile breach
quiet ice
#

Do everything in AsyncChat

#

If you cannot do something async - think twice

lost matrix
#

Are you doing anything with packets or protocollib?

sage patio
#

when they do not have armor (the second check does not return;) its fine

daring schooner
#

Is there a way to access ServerboundInteractPacket Action?

lost matrix
#

Cant think of anything that could cause this. The exceptions looks pretty useless on its own.

daring schooner
#

I tried getting the declared field, but could't get the class type

pseudo hazel
#

show code

sage patio
lost matrix
abstract sorrel
lost matrix
abstract sorrel
#

just the word "test"

lost matrix
abstract sorrel
#

OH that causes the error?

lost matrix
#

Yes

abstract sorrel
#

thanks

lost matrix
sage patio
#

using event.setDamage() fixes that

lost matrix
#

Btw you should give your InventoryHolder classes an onClick(InventoryClickEvent) method. Let it implement some interface HandledInventoryHolder.
Then you can do

InventoryHolder fromOpenInv = topInventory.getHolder();
if(fromOpenInv instanceof HandledInventoryHolder handled) {
  handled.onClick(event);
}

This way you wont have to touch your listener ever again.
Simply implement your interface and it works. Prevents you from
doing endless if-else clauses.

sterile breach
young knoll
#

You shouldn't use holder in general

abstract sorrel
#

is it worth storing data from a config file into something like a hashmap so you don't need to access the config every time or is it just more efficient to access the config?

lost matrix
#

Try delaying by 2 or 3 ticks and see if that changes anything.

eternal oxide
lost matrix
abstract sorrel
#

ok thanks

lost matrix
# abstract sorrel ok thanks

But you should def load everything into concrete classes when the server starts.
Dont randomly access configs within your code on runtime.

young knoll
#

You can't

#

You have to send a chat message

lost matrix
#

This is only possible through chat iirc

#

^

sage patio
#

because canceling FoodLevelChangeEvent makes foods doesn't feed the player

sage patio
#

well i don't want players hunger get changed by health regain

#

i'm making it -1 each minute

lost matrix
#

Alright, i think you found the GameRule for that already, right?

sage patio
#

yes

#

getServer().getWorlds().forEach(world -> world.setGameRule(GameRule.NATURAL_REGENERATION, false));

lost matrix
#

And whats the problem with your FoodLevelChangeEvent?

#

You want it to be cancelled, but not if the player eats something?

sage patio
#

I'm codding this plugin for my Roleplay server
if player gets damaged by guns or whatever they have to fill their health in medic, not by foods

#

and hunger doesn't affect by anything, for example health regain, because health regain event is already canceled

#

if i don't cancel FoodLevelChangeEvent somehow server does not understand the health regain event and rapidly takes hunger for health regain

#

and if i cancel the food level change, the Food items do not fill the hunger

#

so i want to fill the players hunger when they eat a food (using PlayerItemConsumeEvent)

lost matrix
# sage patio thats why i need this

One solution

@EventHandler
public void onFoodChange(FoodLevelChangeEvent event) {
  // Cancel every food lvl change which is not caused by food
  if(event.getItem() == null) {
    event.setCancelled(true);
  }
}

Another solution

  @EventHandler
  public void onFoodChange(FoodLevelChangeEvent event) {
    int before = event.getEntity().getFoodLevel();
    int after = event.getFoodLevel();
    int delta = after - before;
    // Only cancel event if the player loses food, but not when he gains some
    if(delta < 0) {
      event.setCancelled(true);
    }
  }

Or you can define custom food levels if you want to

  @EventHandler
  public void onConsume(PlayerItemConsumeEvent event) {
    Player player = event.getPlayer();
    ItemStack consumed = event.getItem();
    if(!this.isCustomFood(consumed)) {
      return;
    }
    int customFoodLevel = this.getCustomFoodLevel(consumed);
    player.setFoodLevel(player.getFoodLevel() + customFoodLevel);
  }
river oracle
#

https://paste.md-5.net/gipebenixe.cs so I'm a tad confused why... I can't add MineDown as a dependency. Gradle is complaining about missing repo, but I literally added the correct repo and double checked too

remote swallow
#

do you have minedown as a dep in other modules

sage patio
#

so if he held a food in his hand everything changes

#

the second one is better, i'll use that, thanks again

quaint mantle
#

or hikaricp has maven for self

remote swallow
lost matrix
quaint mantle
remote swallow
#

doubt it

quaint mantle
#

I searched them, they all talk about spring boot

remote swallow
#

yeah you dont need spring for hiberante

quaint mantle
#

for jpa ?

lost matrix
#

You will find it as well when looking for tomcat, jetty, undertow etc
But you wont need spring boot for anything, ever

quaint mantle
#

jpa is for vanilla java ?

remote swallow
quaint mantle
#

alright

lost matrix
#

Hibernate implements the jpa standard

quaint mantle
#

but jpa is spring feature ?

lost matrix
#

No

quaint mantle
#

or vanilla java ?

lost matrix
#

Neither

quaint mantle
#

oh

#

so custom

lost matrix
#

Its a java enterprise standard like jcache

#

It simply defines a standardised approach to persistence

daring schooner
#

I was hoping for some workaround 😂

quaint mantle
#

ah i was think jpa is maven depencency

daring schooner
#

aight, lets get to coding

#

🥲

#

In old spigot mappings it was accessible, wasn't it?

quiet ice
lost matrix
river oracle
quaint mantle
lost matrix
quaint mantle
lost matrix
#

You should not check custom items by their name or lore.
Rather use the persistent data container of itemstacks and tag your items.

#

?pdc

quaint mantle
#

i mean data object methods

#

nvm i got this

#

thx

lost matrix
#

Sounds like a custom item to me...

#

Anyways.
EntityDamageByEntityEvent -> get attacker -> get item of attacker -> get ItemMeta of item -> check name, check lore

#

That is. So weird.

#

Wait are you on 1.8?
Because then i wouldnt be surprised.
Buggy ass, crumbling, ancient spigot version from last decade.

#

It changed a ton

sage patio
#

each public static method is access able from other plugins via Class.method?

quaint mantle
# lost matrix It changed a *ton*

bro sry for my ping and i wonder this
im developing api plugin for my other plugins
this plugin will store some datas player_rank, player_money
but this plugin will be only for bungeecord
so could servers under bungeecord depend this api?

lost matrix
sage patio
#

thanks

lost matrix
#

You can write your api platform independent

timid hedge
#

I am trying to check if the attackers held item is a stick with knockback 2 named §c§lSTICK but i dont know how to check the enchanted

if(((Player) attacker).getItemInHand().getItemMeta().equals("§c§lSTICk")
lost matrix
remote swallow
#

?learnjava!

undone axleBOT
remote swallow
#

once again

quaint mantle
lost matrix
quaint mantle
#

sry i changed

#

google translate

#

😄

#

Thanks, I won't keep you busy

lost matrix
#

Take it slow. Split this into multiple lines.
Create one variable for each step.

dawn plover
#

hey, simple question

with the @EventHandler

if you have 2 of these with the same name, will they override eachother, or will they just live happy ever afhter
(inside the same or in different classes, with same or different events)

lost matrix
#

They can have the same name as long as they dont have the same event type (obvsly)

dawn plover
#

also when they are not in the same class

lost matrix
#

Thats fine. The Method objects are different.
In memory you will have the full path of your Method as identifier
com.beeme.kitpvp.listeners.CombatListener#onDamage(EntityDamageByEntityEvent)
So if you have another class or another parameter type, then the methods wont clash

dawn plover
#

oh wait, that is totally right, didnt think about it

#

aha, that makes it a lot more comfortable to work with lol, dont have to check the names anymore

bitter rune
#

If (memory.boolean > 0) this is under the block break event, it should fire if the boolean is greater than zero right?

icy beacon
#

huh

young knoll
#

You can just do if (boolean) or if (!boolean)

icy beacon
#

can java booleans be compared to numerical values?

eternal oxide
#

yes

bitter rune
#

Sorry it's a double not boolean

icy beacon
#

for some reason i thought they couldn't lol

icy beacon
lost matrix
bitter rune
#

I'm learning... And very slow

icy beacon
#

title & subtitle

#

there are also fadeIn, stay and fadeOut values, but you don't have to change them

#

leave it blank

#

""

lost matrix
#
    if(Boolean.TRUE.equals(memory.bool) == true != !false) {

    }
bitter rune
#

Let me show what I actually have may help

icy beacon
#

thought they were using a booleanfactory 😦

#

ok there is one

bitter rune
icy beacon
bitter rune
river oracle
#

https://paste.md-5.net/gipebenixe.cs so I'm a tad confused why... I can't add MineDown as a dependency. Gradle is complaining about missing repo, but I literally added the correct repo and double checked too

bitter rune
#

Oh imgur link isn't even opening through discord anymore

lost matrix
chrome beacon
#

You need to be verified for embeds

bitter rune
#

I think I understand I need to put <= not just < trying it now

#

Yeah working now. I just guessed made sense in my head

icy beacon
#

is it a bad practice to use <version>LATEST</version> for a dependency? specifically it's a private api that i think i'll be updating frequently, but i will thus know exactly when and what is updated

hazy parrot
#

In general, yes

#

I mean if its private you would know when you make breaking change

#

But I wouldn't use latest anyway

sterile breach
#

Hi, to get the prefix for a player. The best method is using vault placeholder?

young knoll
#

In code you can use the vault api

river oracle
small current
#

what is the event for a block being broken due to another block

#

like a torch or redstone

onyx fjord
#

physicsevent?

small current
#

can you show an example

river oracle
#

?jd-s

undone axleBOT
lost matrix
river oracle
#

yeah I can't find an even regardless

young knoll
#

BlockPhysicsEvent

small current
#

@lost matrix can i have a code

lost matrix
#

Sure

small current
#

tnx

lost matrix
#
    if(Boolean.TRUE.equals(memory.bool) == true != !false) {

    }

Here is "a code"

small current
#

tnx

#

helpful

#

fr give an example

lost matrix
#

You didnt even continue your question

small current
#

my friend needs it

#

the code

#

what is the event for a block being broken due to another block

#

the code for it

lost matrix
#

There is none. Blocks cant break other blocks.

small current
#

if i break a block

#

and redstone is on top

#

or water breaking it

fervent prawn
#
final String username="root";
        final String password="root";
        final String url = "jdbc:mysql://127.0.0.1:3306/?user=root";

        try {
            Connection connection = DriverManager.getConnection(url, username, password);
            PreparedStatement stmt1 = connection.prepareStatement("USE ladno");
            PreparedStatement stmt2 = connection.prepareStatement("SELECT * FROM points WHERE nickname LIKE '?'");
            stmt1.execute();
            stmt2.setString(1, player.getName());


            ResultSet results = stmt2.executeQuery();
            if (!results.next()) {
                Bukkit.getServer().getConsoleSender().sendMessage("Failed");
            } else {
                Bukkit.getServer().getConsoleSender().sendMessage("Success");
            }
        } catch (SQLException e) {
            Bukkit.getServer().getConsoleSender().sendMessage(e.getMessage());
        }```

This interrupts the work on the line "```stmt2.setString(1, player.getName());```" 
and I see in the console  ```Parameter index out of range (1 > number of parameters, which is 0)```.
What did I do wrong?
icy beacon
#

i don't think you should do '?' when escaping parameters in preparedstatements, just do ?

young knoll
#

^

icy beacon
#

i had a similar problem

fervent prawn
icy beacon
#

np

lost matrix
small current
#

can you give an example code

#

both of my hands are in cast

#

i cant search or try myself

#

i need the code for a friend who is not fluent in enlish

cinder abyss
#

Hello, how can I make a player send a message ?

young knoll
#

player.chat

cinder abyss
icy beacon
small current
#

left hand

#

is not broken, badly damaged

icy beacon
#

so you can just send the events to your friend and he can figure it out?

small current
#

why wont you helpp

#

ahhh

icy beacon
#

because i'm busy working on my own project and i don't know why i spend time distracting

lost matrix
#

Because thats not help, its spoon feeding

  @EventHandler
  public void onWaterFlow(BlockFromToEvent event) {
    if(event.getToBlock().getType() == Material.REDSTONE_WIRE) {
      System.out.println("> Redstone was broken by flowing block.");
    }
  }
icy beacon
#

agree

small current
#

i need spoonfeed now

icy beacon
#

?spoon

undone axleBOT
#

Spoonfeed a newbie for a day and they'll come back with more questions. Teach them to find their own answers and you'll both be better off: you won't get stuck answering the easy questions and they'll be much more productive than before.

small current
#

also i need for block under breaking

icy beacon
#

looks like it's not your friend after all

small current
#

MY HANDS ARE IN CAST

icy beacon
#

you can still type quite fast it seems

#

so many flaws in these obvious lies

small current
#

left hand

lost matrix
icy beacon
#

speaking as a professional liar ^^ (dark past)

small current
icy beacon
#

limit the conditions

small current
#

dont know what to check

icy beacon
#

to what you're seeking

chrome beacon
#

Might be worth helping them get better at English

icy beacon
#

ok this is bye

lost matrix
chrome beacon
#

You won't get very far with programming if you can't understand English well enough for documentation

#

or how to find help

small current
#

do you know the spoonfeed answer

icy beacon
#

olivo, can i ask you for some creative ideas? i'm trying to come up with the gui items for muting a player for: foul language, spam, and advertising

#

no idea what to use

small current
#

language use barrier

#

advertise use sign

#

spam idk

icy beacon
#

sign is a good one, foul language is i don't think so

small current
#

language use paper

#

or a map

icy beacon
#

good one

small current
#

spam use pork

#

as the food

icy beacon
#

i thought of it yeah

#

but idk

#

i want to resemble actually spamming

small current
#

hmm

#

arrow

#

sword

#

or rod

vast ledge
#

Snowball

small current
#

as in spamming it in pvp

icy beacon
#

i'll use a water bucket\

#

as in flooding

small current
#

snowball is a good one

icy beacon
#

i think water bucket works best for me, snowball is good too

eternal oxide
#

COme on Mojang, when do we get multi texture packs

chrome beacon
#

?

#

Like multiple server resource packs?

eternal oxide
#

yep

#

each plugin able to assign their own

#

Keyed resource pack system

icy beacon
#

ooo

young knoll
#

Someone really needs to make a auto merger

eternal oxide
#

7smile7 did

young knoll
#

Oh?

eternal oxide
#

sorry alex not smile

young knoll
#

Nah that's a program tho

eternal oxide
#

yep

#

we need support for multiple keyed packs

#

@tender shard Make your resource into a plugin

young knoll
#

And make it automatic at runtime

eternal oxide
#

it could even read a resource pack info from the plugin yml

young knoll
#

Just catch them as they are sent

#

And merge them then

eternal oxide
#

plugins would have to be compatible

#

perhaps a registry system for plugins

#

register their RP

echo basalt
#

plugins can register resource packs?