#help-development

1 messages · Page 2005 of 1

lost matrix
#

Your email is right there for employers to verify. A lot of people just use their synonym on github

nova fossil
#

It’s my irl/professional one. Easier for employers to find it. I do have a unique name, it’s not like “John smith”. Also it’s too late to change it lol

young knoll
#

Do employers need to find it

#

Put it on your resume or whatever

nova fossil
#

I guess I could change my username. It was first initial last name. I’ll also have to double check all my student projects on there.

mighty bane
#

Question, for getNearbyEntities. How does it order the returned entities? It doesn't mention it in the api.

young knoll
#

Not sure

#

Probably in the order it finds them

mighty bane
#

So completely random?

young knoll
#

Which is probably from lowest point to highest

mighty bane
#

Oh this will be fun.

young knoll
#

You can always sort it

mighty bane
#

We could...

#

But we're worry about that later.

dusk flicker
#

^ every developer ever

#

who will, infact, never worry about that later

young knoll
#

It’s a future me problem

nova fossil
#

You know what

pliant oyster
#

How to check if a player is online or not

nova fossil
#

Ok so

#

Here’s the solution I think I’ll go with. I’ll upload it temporarily to my main GitHub, while job searching to have it on my resume. Then repackage it and upload it for real to a new spigot account using my alts name, which I’ll also have under my first name. My old(main) Minecraft account will remain anonymous forever

pliant oyster
#

oh lol

young knoll
#

Or

#

Player.isOnline

pliant oyster
#

alr

digital haven
#

Hey, I'm new to using NMS (this is my first time attempting to use it) and I imported the Spigot Server JAR from buildtools and I can't find the PacketPlayOutTitle class, was this removed in 1.18 or is the Spigot server jar missing stuff?

lost matrix
#

?bootstrap

undone axleBOT
#

Bootstrap Jar
The main spigot-1.18.jar is now a bootstrap jar which contains all libraries. You cannot directly depend on this jar. You should depend on Spigot/Spigot-API/target/spigot-api-1.18-R0.1-SNAPSHOT-shaded.jar, or the entire contents of the bundler directory from your server, or use a dependency manager such as Maven or Gradle to handle this automatically.

Please read the release notes for further information: https://www.spigotmc.org/threads/9-years-of-spigotmc-spigot-bungeecord-1-18-1-18-1-release.534760/#post-4305163

young knoll
#

Also you should use maven

#

And mojmap

digital haven
#

Alrighty thanks

wet breach
#

my last name is pretty cool

quaint mantle
#

How would I create a while do loop in a plugin, that constantly runs?

young knoll
#

?scheduling

undone axleBOT
quaint mantle
digital haven
#

Yeah

wet breach
#

it will run until it meets a condition to stop

quaint mantle
#

if its true

#

give everyone hunger for 5 seconds

wet breach
#

use a boolean

#

that can be updated

#

make the boolean value global

quaint mantle
#

If id just do it in a public class or not

#

If not what id do

wet breach
#

oh you want the while loop to restart is essentially what you want then?

#

well ideally you would want the boolean to be public

quaint mantle
#

Also the boolean is public

wet breach
#

yeah you can put it anywhere you want, recommend however that if its something that can be ran in another thread

#

best to do that

#

so that it doesn't affect the main thread

quaint mantle
young knoll
#

I mean a simple task checking a Boolean probably doesn’t make much different being async

quaint mantle
#

Ah

shadow owl
pliant oyster
#

How can I check if a string is a player?

#

rn I'm doing if(playerName != Bukkit.getEntity(Player)) but idk if that will work

river oracle
#

usually i do something as follows

if(Bukkit.getPlayer(name) == null){return;}
Player p = Bukkit.getPlayer(name);
pliant oyster
#

wait so if it's null then that means they dont exist right?

river oracle
#

if you don't handle the error you will get npe's thrown like crazy

river oracle
#

:P

ancient plank
#

I have a lot of questions

#

in what world are args not strings in the first place

river oracle
#

anyone know why this is returning null lol I'm so dumbfounded.
https://pastebin.com/W588vuby
[20:53:23] [Server thread/INFO]: positions.pool2.testsword
[20:53:23] [Server thread/INFO]: 2
[20:53:23] [Server thread/INFO]: positions.pool1.teststick
[20:53:23] [Server thread/INFO]: null

positions:
 pool1:
  teststicK: 1
 pool2:
  testsword: 2```
prints this even though the sections are filled in the config lol i'm thoroughly confused. I thought at first it had to do with the value being 0, but upon changing it still gives null 🤷‍♂️ i'm so confused lol
ancient plank
#

||the lack of consistency in your use of whitespace hurts my brain||

river oracle
ancient plank
#

definitely not what I'm looking at

#

you also fucked up the formatting of your msg when you moved the code to a pastebin

river oracle
#

what it looks fine on my screen lol

ancient plank
#

you say after you fix it

river oracle
#

ahaha

ancient plank
#

I posted that message before you fixed it :)

river oracle
#

uhuhuh not with my insanely high latency you didn't

river oracle
#

I just realized my error I feel so stupid now lord

#

its always the yaml files I swear to god

#

teststicK vs teststick 😭

dawn hazel
#

anyone know why im getting completely different results here?

wet breach
#

not sure why you are using String.valueOf, should be able to just send it as is o.O

dawn hazel
#

plus that doesnt rlly matter anyway. its the data its outputting that matters

kind hatch
#

Considering that your output is 0, have you tried debugging your getHealth method?

dawn hazel
#

well

#

it hasnt thrown a sql exception

#

how would i debug it

#

send its data to console?

kind hatch
limber wolf
dawn hazel
#

and we have our issue

#
if (rs.next()) {
    health = rs.getDouble("HEALTH");
    System.out.println(health);
    return health;
}``` this isnt firing
proud basin
#

What's rs?

#

ResultSet?

#

Assuming its that is there data in the database?

kind hatch
dawn hazel
#

that works for a different get function i have

#

works fine and isnt causing issues

kind hatch
#

Rly? I thought table names were case sensitive.

dawn hazel
#

they are

#

i think

#

idk

#

but its the exact same command for this one

#

just different wording for the tables

#

maybe i should check the tables itself

kind hatch
#

Well usually table names and values are lowercase. I think that's what was throwing me off.

quaint mantle
#

How do I disenchant a potion in a itemMeta?

kind hatch
kind hatch
dawn hazel
#

that might be a little bit of an issue

young knoll
#

There is no health

#

You have dead

dawn hazel
#

its cause i didnt capitaliuze the l

#

sometimes i question my stupidity

quaint mantle
#

What about in 1.12.2

kind hatch
#

Yea, the glint on potions is hard coded. You need a resource pack to change that. Same thing with the enchanted books. Want different textures for that? Need a resource pack.

quaint mantle
#

Damn.

#

Final question: How do I get the command sent with onCommand

#

like for example:

#

if the command was "/Test"

#

it return "Test"

kind hatch
#

Command#getName()

quaint mantle
kind hatch
#

Command is one of the parameters passed with the CommandExecutor method so you can just use that instance of it.

quaint mantle
#
public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
        command#getName()
        return true;
    }
#

Am I doing that correctly?

young knoll
#

Oh boy

#

is used to denote instance methods

#

You don’t actually use # in the code

#

It’s .

quaint mantle
#

oh

young knoll
#

It’s always .

quaint mantle
#

sorry lol

#

i never knew that

kind hatch
#

Notice how I used the capitalized name. Command#whateverMethod() vs command

dawn hazel
#

considering that im still getting a value of 0.0 from gethealth i think something else is also wrong

kind hatch
#

Because that's generally how classes are named in java.

#

Did you change the column name or the code used to access it?

dawn hazel
#

nothing is being sent to the table

#

and i have a function to generate the player in the table

quaint mantle
#

Maybe do an insert

kind hatch
#

Yea, but did you update your column name? You found that was one issue.

dawn hazel
#

table creation is correct

quaint mantle
#

INSERT INTO ... on a player join event and on the health change UPDATE. Don't think you can update something that hasn't been inserted. Can be wrong on that

dawn hazel
#

health should be correct

kind hatch
#

Ok, but did you clear that table after you changed the typo? Because otherwise you are using old data.

dawn hazel
#

theres no data in the table and i changed the typo in the table itself

#

should i just completely wipe the table

kind hatch
#

How did you update the table?

wet breach
dawn hazel
kind hatch
#

IIRC, this is the way you rename column names with mysql.

ALTER TABLE <TableName> RENAME COLUMN <ColumnName> TO <NewColumnName>;
quaint mantle
#

How would I grab stuff in plugin.yml

#

getPlugin() jk no

quaint mantle
wet breach
#

uuids are never that long, such a waste of space doing that

kind hatch
# dawn hazel phpmyadmin

Hmm, I've heard of it, but never got around to to trying it. What exactly did it offer for changing the name?

dawn hazel
#

phpmyadmin

#

its like a webmanager for databases ig

kind hatch
wet breach
#

using ignore is probably the reason why you are never getting errors

#

do you even know what it does?

dawn hazel
#

nope

wet breach
#

any invalid data gets ignored instead of throwing an error, and any valid data still gets inserted

dawn hazel
#

i followed a random tutorial cause i dont know s--- about mysql

#

well

#

i know how to use mysql just not how to do stuff like inserting and all that using sql commands

wet breach
#

so this could very well be the reason you have mismatched stuff in your DB

kind hatch
#

But... that is myql...

wet breach
#

when it should have errored you told it not to

dawn hazel
#

welp

#

time to see what i screwed up

wet breach
#

your DB structure could use some fixing too

#

like double with a 30 digit precision?

dawn hazel
#

wow

quaint mantle
#
for(String cmdName: getDescription().getCommands().keySet()){
    getCommand(cmdName).setExecutor(new CommandEvent());
}
dawn hazel
#

now its actually returning the correct value

quaint mantle
#

horray for simplicity

quaint mantle
dawn hazel
#

needless to say
if (skygamez == idiot) {
return true;
}

#

and of course it returns true

#

thank yall

kind hatch
# quaint mantle wym?

Well, it's weird to say the least. I doubt that you will be putting every single command that your plugin has into one class. Unless you have one command, then alright, but even then, you don't even need the for loop.

sharp flare
#

are there any ways to optimize a runnable that makes air to a solid block when player moves just like frost walker, it runs every 2 ticks.

#

seems like #setType too heavy

wet breach
#

sounds like something you would just have in the move event listener

sharp flare
#

I ditched playermoveevent

#

cuz the runnable only runs for 10 secs

sharp flare
#

and it gets canceled

quaint mantle
#

well hmm

#

fair point

wet breach
dawn hazel
#

yup

wet breach
#

I recommend using more quality tutorials

dawn hazel
#

probably

#

it was the first result i found on google

wet breach
#

at least ones that explain what it is they are doing

#

there is a very specific use case for using ignore

kind hatch
#

There are two steps for registering a command.

  1. Put it in the plugin.yml
  2. Use getCommand().setExecutor().

That's all you really need. You can of course set multiple commands to the same class, but you could always use the alias tag in the plugin.yml and then compare the label in your command class.

wet breach
#

most people won't come across it

dawn hazel
#

welp

kind hatch
#

What's the use case?

dawn hazel
#

i probably should figure out how sql actually works

wet breach
#

if the tuple contains the primary key it will error

ancient jackal
#

😳

wet breach
#

lol

quaint mantle
#
for(String obj: Mphone.jp.getConfig().getStringList("Challenges")){
            System.out.println(obj);
        }
#

having SLIGHT trouble w/ something

inner lintel
#

How does one delete a plug-in that they made from spigot plugins website

wet breach
inner lintel
#

Ah ok

#

Thanks

glass moat
#

Looking for devs to help with a Minecraft project

waxen plinth
#

?services

undone axleBOT
young knoll
#

Looking for a minecraft project to help with devs

hybrid spoke
young knoll
#

Yes

hybrid spoke
young knoll
#

Thank you

hybrid spoke
#

red

young knoll
#

Dead

waxen plinth
sullen canyon
#

How can i check for a crit hit?

young knoll
#

I’m not too sure there is a good method for that

#

Check if the player is in the air and has negative y velocity I guess

sullen canyon
#

If player use module criticals in cheatclient its will not detect

#

I mean in minecraft sources you can cut boolean check for crit hits and every hit will be critical, without jump or anything like that

young knoll
#

Is that really client side

#

Oh Mojang you silly

#

I thought those crit hacks just made you move up and down very slightly

chrome beacon
#

And this is what we call mojank

young knoll
#

Indeed

brave sparrow
#

i call bullshit

#

the server decides if it's a crit in the attack process logic

#

it doesn't come from the packet

#

crit hacks do make you jump up and down slightly

young knoll
#

I figured they did

#

I can probably add an isCrit method to the damage event

brave sparrow
#

looks like a lot of BS to do it

#

but if you did do it you should also make it so that it doesn't play all these crit animations if isCrit gets set to false

young knoll
#

Hmm

#

Things are never easy, are they

brave sparrow
#

nope

sullen marlin
#

Your mom is

brave sparrow
#

LOL

young knoll
#

God dammit md

tardy delta
#

That should be pinned

sullen canyon
brave sparrow
#

your assumption is incorrect

sullen canyon
#

Sorry for the repeated question, I didnt understand very well what you meant above, English is not my native language

brave sparrow
#

the client has no control over setting something as a crit

#

if a hacked client is making you always crit then they are sending the server a very small jump

sullen canyon
brave sparrow
#

the crit calculation happens on the server

sullen canyon
#

I tested it on hypixel and everything worked well

#

Crit calculating on server side, but client side sends when crit happened

brave sparrow
#

no it doesn't

#

the server decides

sullen canyon
#

Then why can i use criticals on hypixel and it works?

brave sparrow
#

it's possible hypixel does what we do and doesn't distinguish between a critical hit and a normal hit

#

but the client does not decide when a crit happens

#

you can make the client always show the animation

#

but that's a totally different thing

sullen canyon
#

Prob you right, i'll test it a bit later, but when i played on cracked servers with anticheat that triggers on any cheat, i got banned for the first hit

brave sparrow
#

here's how it happens:

#

the player tells the server "I am attacking this entity"

#

the server then looks at the player's velocity and decides if a critical hit has taken place

#

the server then tells all the players "hey, this was a critical hit"

#

nowhere in that chain can any client tell the server "this attack is a critical hit"

ornate patio
#

I’ve seen this server with like 50+ items each one with its own custom texture, but each one is actually a diamond hoe

How is this possible?

sullen marlin
#

Recent versions have custommodeldata

sullen marlin
#

Otherwise maybe per durability texture

ornate patio
brave sparrow
#

yes

ornate patio
brave sparrow
#

you wouldn't

sullen marlin
#

Custommodeldata then

brave sparrow
#

newer versions let you map different item data to specific models

ornate patio
#

wdym by different models

brave sparrow
vocal cloud
#

Like those guns plugins

brave sparrow
#

np

ornate patio
#

also is it possible to implement a custom item that other plugins can use?

brave sparrow
#

depends on what you mean

ornate patio
#

Like my own ItemStack in which another plugin can give to players and stuff

brave sparrow
#

you can make an API method to return a specifically configured ItemStack yes

ornate patio
#

ok maybe that’s not a good description, I’ll just say what I’m trying to do

young knoll
#

Tools were the old way

#

You could have per durability textures on unbreakable items

#

Despite the fact that unbreakable items normally didn’t lose durability

ornate patio
#

I’m trying to make a custom item similar to alcohol, where if you drink it your "drunk percentage" goes up. The higher the percentage, the higher the weirdness for the player gets (random movements, nausea, vomitting soul sand). Of course all the "drunk" logic is going to be handled in my own plugin, however how would I be able to let other plugins give the alcohol item to players?

brave sparrow
#

yes

lavish hemlock
#

@tender shard You'd like this one ^

ornate patio
brave sparrow
ornate patio
#

Where would I write the API tho?

brave sparrow
#

in your plugin

ornate patio
#

Can it just be any public method in my plugin?

brave sparrow
#

pretty much

ornate patio
#

oh ok

#

Is there any special config I have to do in plugin.yml or nah

brave sparrow
#

no

#

this is just part of java

ornate patio
#

gotcha, I thought spigot would just do something weird

#

Alright thanks

#

@brave sparrow wait sorry one more thing

#

about the custom ItemStack

#

for example if another plugin wanted to go through a players inventory and check if an item is alcohol

brave sparrow
#

are you only going to have one alcoholic item?

ornate patio
#

they won’t be able to do that if I only provide a method to give players the alcohol

young knoll
#

Add a pdc tag to identify it

ornate patio
brave sparrow
#

then use pdc like coll said

ornate patio
brave sparrow
young knoll
#

?pd- oh

brave sparrow
#

oh is there a thing for that?

ornate patio
#

thanks so much

tender shard
lavish hemlock
#

alcohol plugin

young knoll
#

That does exist

brave sparrow
#

lots of them exist

#

same with drug plugins

tender shard
#

there's also a ton of poop plugins

young knoll
#

Hell yeah

tender shard
#

huh, is it not possible anymore in the discord developer portal to show existing bot tokens?

#

it only shows me an option to reset the existing token

#

guess the movie this quote is from:

"I hate manure!"

tender shard
#

anyone how to get an array of JsonObjects from a string using gson?

#

All I found on the internet uses JsonParser().parse(String) which is deprecated without any comments

brave sparrow
#

what do you want the jsonobjects for?

tender shard
#

I want to get a list of all my plugins from spiget

#

already found the solution: parse(String) is now static parseString(String)

tender shard
#

they could have at least added that to the javadocs instead of just saying it's deprecated lol

brave sparrow
#

lol

wet breach
#

heres the code I used for getting Json stuff

#

I don't use gson as it isn't really necessary

brave sparrow
#

he already found the solution

#

gson is great though

wet breach
#

indeed it can be, just I didn't need a large lib for this simple thing lol

tender shard
#

yay it works 🙂

brave sparrow
#

nice

tribal karma
hybrid spoke
tribal karma
#

what is this

#

I just added some plugins and it started crashes

#

the error is in which plugin?

tender shard
#

this is the wrong channel

dull whale
#

how can I name client side entities using rgb

kindred valley
#

hey how can i control an entity's health

tender shard
kindred valley
#

but when im using entitydamage or entitydamagebyentity, it always works when someone hit the entity. When entity fells or got damage from lava its not working

#

How can i take the death location of someone

young shell
#
    public void hideParticle(Item particleToHide, Player player) {
        int[] particleID = {
                particleToHide.getEntityId()
        };
        PacketContainer packet = manager.createPacket(PacketType.Play.Server.ENTITY_DESTROY);
        packet.getIntegers().write(0, 1);
        packet.getIntegerArrays().writeSafely(0, particleID);

        try {
                manager.sendServerPacket(player, packet);
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }

    }```It says there is no Integer Field, but if I look at wiki.vg there is a VarInt Field, and if I'm not mistaken ProtocolLib treats Ints as the Varint. Version is  1.18.1
kindred valley
#

Guys how can i remove respawn screen

tender shard
#

which one do you people think looks better?

tender shard
#

the empty line? it's needed so that the spigotmc link is on the next line

sage patio
#

without

brave sparrow
sage patio
#

first one looks better

wet breach
#

the first one wouldn't be too bad if that line with the plugin in bold was just like slightly lower?

#

the second one is alright if you like spaced out stuff

tender shard
#

I can only add a new line, or not, I can't control the size of it 😄

wet breach
#

I see, then the first one would have to be my choice then

tender shard
#

alrighty, everyone chose the first version so far so I guess I'll use that 🙂

quaint mantle
#

how can i get list of a block on the world that player is in

brave sparrow
#

you can't get all the blocks

#

there's 4294967295x4294967295x4294967295 in each world

quaint mantle
#

no

#

not all the blocks

#

like in 100 radius

#

with specific material

solar dew
#

How ill spawn a armor stand with block as helmet, with packets?

brave sparrow
#

and get the blocks at those locations

quaint mantle
#

oh

kindred valley
#

hey im trying to tp the dead guy to his dead location and set his health to 0.5, set his walk speed 0, if someone heals him his walk speed will be 0.2F again and he will respawn.

#
    public void onDie(PlayerDeathEvent e) {

        if(e.getEntity().getPlayer().isDead()) {

            Location x = e.getEntity().getPlayer().getLocation();
            e.getEntity().getPlayer().teleport(x);
            e.getEntity().getPlayer().setWalkSpeed(0);
            e.getEntity().getPlayer().setHealth(0.5F);

        }```
brave sparrow
#

why are you teleporting him to his death location

#

and what is e.getEntity().getPlayer()

kindred valley
kindred valley
brave sparrow
#

why are you doing getPlayer()

kindred valley
brave sparrow
#

getEntity() is returning a Player

kindred valley
brave sparrow
brave sparrow
brave sparrow
brave sparrow
kindred valley
#

when he gets big damage he dies

brave sparrow
#

yes

kindred valley
#

im trying to block it

brave sparrow
#

so get rid of the if(e.getEntity().getPlayer().isDead())

#

and once again, just e.getEntity(), not e.getEntity().getPlayer()

#

id have to check that

#

id be willing to bet the event fires before they get dead

#

typically the event fires before the state actually changes

#

so they probably aren't dead

sage patio
#

for loop

#

3 for loop, each one checks for a direction ( x, y, z )

#

like

for {
  for {
    for {
    }
  }
}
quaint mantle
#

i did

#
private static final List<Location> blocks = new ArrayList<>();

    public static void addBlocks(Player player) {
        for (int x = -150; x <= 150; x++) {
            for (int y = 50; y < 150; y++) {
                for (int z = 0; z < 150; z++) {
                    locationList.add(new Location(player.getWorld(), x ,y, z));
                }
            }
        }
        blocks.forEach(System.out::println);
    }```
kindred valley
# brave sparrow probably because of that first if statement

it works perfect with this code but there is 1 more situation. When i kil the entity he teleports to his death location. And it bypasses respawn screen and set his walk speed and health to 0.5. But after that i dont know how to control when player's health got up to 10 and he moves again.

brave sparrow
#

@quaint mantle just checked, they aren't dead when the event fires

brave sparrow
#

as for controlling it, you'll need to keep track of that player

sage patio
#

nice

brave sparrow
#

either way, before it even gets marked the event fires

#

the event happens before anything else

tender shard
#

Yo I improved the formatting

#

what do you think?

#

:3

tardy delta
#

Damn

tender shard
#

finally I'll never forget to announce updates again

sullen canyon
#

Any way i can look in sources of jar and rewrite it?

fallen sandal
#

is there any thing exist like Bukkit.getServer().getTps() something like this?

#

for getting tps of server?

tender shard
#

ugh spiget API sucks

#

sometimes it returns the new version, then a few minutes later it returns the old version again?!

tender shard
#

or NMS

#

MinecraftServer has a field "recentTps" or similar

fallen sandal
#

oh

tender shard
#

it's a double[]

fallen sandal
#

okay i made the tps thing

#

:"))

kindred valley
#

?paste

undone axleBOT
kindred valley
#

what can be the cause of this

eternal oxide
#

too little information to even hazard a guess

kindred valley
#

my java gets error

#

i dont know how to set path

#

i accidentally deleted path location

eternal oxide
round finch
#

?bungeecord

kindred valley
round finch
#

?jars

#

EH?

tardy delta
#

How can you accidentely delete that

kindred valley
round finch
#

where i find 1.18.1 bungeecord api documentation ?

tender shard
round finch
tender shard
#

np

#

?jd

tender shard
#

this is the full list

round finch
#

Awesome!

#

noted

kindred valley
#

i dont know which path i need to copy jdk and jre

#

there is 2 path 2 java home

tender shard
kindred valley
tender shard
#

I have just added some aliases to my bash_aliases to start different java versions

kindred valley
#

i really dont know what to do

#

when typing %PATH%

#

it says C:\Windows\system32' is not recognized as an internal or external command, operable program or batch file.

tender shard
#

yeah well you're not supposed to just type %PATH%

#

it's not a command

#

you can do echo %PATH% to show what your %PATH% is currently set to

tender shard
kindred valley
#

yes

tender shard
#

what plugins do you have installed?

kindred valley
#

no plugin

#

i was setting up the run file

#

and it said my java was old i updated and changed the path and this happened

tender shard
#

did you get any hs_err_pid_XXX file?

kindred valley
#

yes

tender shard
#

upload it somewhere pls

tender shard
#

hm weird, I have no idea

round elbow
#
[ERROR] .... Error occurred while enabling SetHomes v1.0 (Is it up to date?)

java.lang.IllegalStateException: zip file closed

at java.util.zip.ZipFile.ensureOpen(ZipFile.java:831) ~[?:?]

at java.util.zip.ZipFile.getEntry(ZipFile.java:330) ~[?:?]

at java.util.jar.JarFile.getEntry(JarFile.java:518) ~[?:?]

at java.util.jar.JarFile.getJarEntry(JarFile.java:473) ~[?:?]

at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:163) ~[paper-api-1.18.1-R0.1-SNAPSHOT.jar:?]

at java.lang.ClassLoader.loadClass(ClassLoader.java:587) ~[?:?]

at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:108) ~[paper-api-1.18.1-R0.1-SNAPSHOT.jar:?]

at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:103) ~[paper-api-1.18.1-R0.1-SNAPSHOT.jar:?]

at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]

at me.rephrasing.sethomes.Core.registerCommands(Core.java:34) ~[sethomes-1.0.jar:?]

at me.rephrasing.sethomes.Core.onEnable(Core.java:21) ~[sethomes-1.0.jar:?]

this happened while trying to register a command

    private void registerCommands() {
        getCommand("sethome").setExecutor(new SetHomeCommand()); // line 34
    }
// i called this method in the onEnable method
# plugin.yml
commands:
  sethome:
    usage: sets home
  home:
    usage: teleports to home
  deletehome:
    usage: deletes a home
  
tender shard
#

zip file closed normally simply means that your .jar is corrupted

#

try building/uploading it again

round elbow
#

i tried building it like 5 times and reuploading it

#

i tried restarting the server cause i thought the problem could be biletools loading it in an abnormal way but same exception happened

#

this might seem like the weirdest thing but

#

i removed all plugins and kept only mine then it worked

#

no errors

#

i have no idea why or how

tender shard
#

can also be a class loading problem

#

maybe e.g. when you have a class with the same name as another plugin or similar, not sure exactly

round elbow
#

okay i have a question tho

#

what is the best fork type to code plugins in?
bukkit
spigot
paper

what i mean by best is what would work on all of them with the least bugs?

young knoll
#

Spigot works on all of them

#

Well it doesn’t work on craftbukkit, but who runs that

round elbow
#

alr ty

snow current
#

hey any protocolib exprert ?

quaint mantle
#

?ask

undone axleBOT
#

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

quaint mantle
#

?howtoask

snow current
#

x)

#

dont need bot for that

quasi flint
round elbow
snow current
#

im asking before cause when i tell my pb i got so many retard like omg

quaint mantle
#

Personal best moment

undone axleBOT
#

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

snow current
#

yes wait

quasi flint
#

ask already

snow current
#

how to send PacketPlayerCustomPayload with protocolib there is no documentation

quasi flint
#

for what porpuse exactly?

#

lemme guess

#

forge handshake?

snow current
#

x)

quasi flint
#

yes or no?

snow current
#

thats not that common how did you know

quasi flint
#

wrote it myself already

snow current
#

x)

quasi flint
#

lemme get it out of my repo for you

snow current
#

thx ❤️

quasi flint
#

not as easy as sending custom oayload

snow current
#

what did you use ?

quasi flint
#

for bungee tho

#

should still work

#

for 1.13 up

#

for 1.12 and lower use Forge12 class

#

if u copy code, please leave credit

snow current
#

not i will not x)

quasi flint
#

;7

fervent gate
snow current
#

copy *

fervent gate
#

How are these done?

quasi flint
#

bedrock

#

it seems

snow current
#

omg x)

fervent gate
quasi flint
#

there u got ur answer

quasi flint
snow current
#

im not going to copy thats what y mean x)

quasi flint
#

no

#

hoping my approach works for u

snow current
#

fml:loginwrapper why did you choose that channel

#

is it not modid:channel

#

wait im dumb

#

thats a vanilla one

quasi flint
#

so i can communicate with forge

snow current
#

oh you need to send that packet to be able to send packet later?

#

oh

#

i undurstand

#

you think i want to know if client use forge right ?

#

no i want to send packet to forge client x)

minor garnet
# fervent gate

do a test, Go to your .minecraft foder find server-resourcespacks and ALL files added .zip at the end of the name, Once this is done, open the files and try to find the one on this server and send me the file

snow current
#

there is no .minecraft in bedrock

minor garnet
#

This is not bedrock

#

He opened screenshots on mobile

snow current
#

hmm

minor garnet
#

If it really was bedrock it would have the icons on the side

wet breach
#

if you are messing with bedrock then why are you here o.O

snow current
#

@wet breach its not me x)

fervent gate
#

I just took a screenshot of a screenshot

snow current
#

so you never played on the server that got that

fervent gate
#

No

minor garnet
#

I believe this server used custom font to display these holograms using resource pack

snow current
#

so you dont have anything on your .minecraft

fervent gate
#

Nope

minor garnet
minor garnet
#

This can be util for you

young knoll
#

Custom fonts are great

quaint mantle
#

It just takes time tho

fervent gate
#

I wouldn't have a clue on how to begin

quaint mantle
#

Then just dont begin 😳

young knoll
#

There’s some guides online

#

I used one to make this, it’s actually fairly easy once you understand it

quaint mantle
#

Only time and dedications

young knoll
#

Doesn’t really take that long

sharp flare
#

whats the specific sound name that sounds like an error when u press a button

#

or are there any repositories for mc sounds I can listen to

hybrid spoke
#

loop through every sound with a delay between

#

and listen

sharp flare
#

sounds like great idea

#

but lol I do have CMI, i guess i gotta check it thru commands for now

quaint mantle
#

wait

#

with this code

if(as.getTargetBlockExact(1) != null && !as.getTargetBlockExact(1).isPassable()){
                        if(!as.isDead()){
                            as.remove();
                            if(player.getInventory().firstEmpty() != -1){
                                player.getInventory().addItem(itemManager.wand);
                            }
 Cannot resolve method 'getTargetBlockExact' in 'ArmorStand'

error
how can I fix dis?

#

how can i detect the block break chain(like chorus fruit)
I have the following code but it doesn't work because BlockPhysicsEvent doesn't capture new block state

    @EventHandler
    public void onBlockPhysics(BlockPhysicsEvent e) {
        // if the new block state is not air, just ignore
        if (e.getBlock().getType() != Material.AIR) return;

        // get nation/war at the location
        Vec3i vec = new Vec3i(e.getBlock().getLocation());
        Nation nation = nationRepository.findByRegion(vec).orElse(null);
        if (nation == null) return;
        War war = getWar(nation);
        if (war == null && !repairing.containsKey(nation)) return;

        // cancel event (if the nation is in war, repair that later)
        e.setCancelled(true);
        if (war != null) {
            war.getRecoveryContext().add(new BlockRecovery(e.getBlock().getState()));
            e.getBlock().setType(Material.AIR, false);
        }
    }
kindred valley
#

?paste

undone axleBOT
kindred valley
#

guys can someone help me

#

im getting this when im trying to execute java

quaint mantle
hybrid spoke
quaint mantle
#

1m

#

java version?

#

or mc version?

hybrid spoke
#

spigot

quaint mantle
#

1.8.8

#

wait no 1.12.2

hybrid spoke
#

ew, unsupported. did you check if the method exists in that version?

quaint mantle
#

how can i detect chorus fruit broken by physics?

hybrid spoke
quaint mantle
#

yes

#

BlockPhysicsEvent gets fired even if the chorus fruit block isn't broken

#

i have to find another way

#

(Also i have to deal with beds/doors/etc)

hybrid spoke
#

didnt checked and would have to research further but im not home yet, but did you tried the ItemSpawnEvent since that should get called too?

quaint mantle
#

ItemSpawnEvent doesn't provide any information about its source

hybrid spoke
quaint mantle
#

so you are telling me to cache BlockPhysicsEvent location, and if ItemSpawnEvent occurs within a tick at the cached location, cancel the ItemSpawnEvent?

glass moat
#

Looking for developers to work on a project

#

It’s pretty big

hybrid spoke
undone axleBOT
hybrid spoke
#

i just gave the clue

quaint mantle
#

Could you tell me how you would implement that?

#

because ItemSpawnEvent isn't related to BlockPhysicsEvent directly

#

I wonder how you would implement that

hybrid spoke
#

would have to look further into it then, but im still not home. can come back later to it, if i dont forget about it

quaint mantle
#

ok thanks

misty current
#

is there an event for log stripping or do i have to check for playerinteractevent

fluid nacelle
#

So I'm looking to have it snow only in particular areas of the map at particular time (I want there to be a block radius within a player and have snow follow them). What would the best course of action be for this? Have the entire map (minigame map) as a snow biome via packets then use packets to trick the clients into thinking there's barrier blocks at the highest y level everywhere except the radius within the player? Any better ideas?

hardy swan
#

is there a fast way to check whether an artifact exists without having to run buildtools to build to entire jar. For example, java -jar BuildTools --rev 1.18.2 --remapped

raw ibex
#

for death event, is there a way to see who killed the person

#

or if the knocked them into the void

raw ibex
#

ok

#

no?

#

oh wait yes

hardy swan
#

despite the method name, it gets the last player that hurts the entity

tardy delta
#

might be null

raw ibex
hardy swan
#

that's a bit too long ago isn't it

#

they might have respawned

#

if that's a player

raw ibex
#

what if they got hit by them then 4 minuntes later jumped off a cliff and missed an mlg

hardy swan
#

you should listen to death events to check the cause of their death

raw ibex
#

i have the death event

cunning crag
hardy swan
#

if death event doesn't work then EntityDamageByEntityEvent

raw ibex
#

oki

hardy swan
#

1.18.2 remapped when

eternal night
#

👀

quaint mantle
#

how can i detect chorus fruit broken by physics?
BlockPhysicsEvent gets fired even if the chorus fruit block isn't broken
i have to find another way
(Also i have to deal with beds/doors/etc)

deft forum
cunning crag
#

how to fix the problem?

kindred valley
#

what is isHealtScaled method?

deft forum
#

i have no clue

kindred valley
#

guys i cant use getAmount on entityregainhealthevent

quaint mantle
#

'runTaskTimer(org.bukkit.plugin.Plugin, long, long)' in 'org.bukkit.scheduler.BukkitRunnable' cannot be applied to '(events.Boomerang, long, long)'

#

?paste

undone axleBOT
quaint mantle
#

how do I fix this

#

?

lavish wave
#

Can someone please explain me how the Spigot Configuration System works? (save, load, MemorySections, usw.)?

solid cedar
#

Best obfuscator?

lavish hemlock
#

None of them

#

Obfuscators are easily bypassable

#

Also, you're only allowed to use the obfuscators Spigot permits

quaint mantle
lavish hemlock
quaint mantle
#

(if you don't post your plugin on spigot forum)

lavish hemlock
#

Any competent reverse-engineer doesn't really have to deal with obfuscation either way.

#

Just disassemble :)

quaint mantle
#

then md_5 doens't have to force people to use basic obfuscators

#

obfuscation really matters

lavish hemlock
#

You give me a premium plugin, I can crack it in a day even with obfuscation

#

Obfuscation follows "security through obscurity"

#

Which is one of the weakest forms of security

quaint mantle
#

ok but premium plugins are obfuscated under md_5's restrictions

lavish hemlock
quaint mantle
#

i mean under that restrictions i can do that too

lavish hemlock
#

Plugins must also be readable by staff to verify that they aren't malicious

quaint mantle
#

you can sell plugins outside spigot forum so

#

you can use more strong obfuscators

#

add some sort of "class loading mechanisms"

lavish hemlock
#

If you mean smthn where like

#

It requests classes from a remote server

#

If that server ever goes down, that plugin becomes useless

quaint mantle
#

no im talking about plugins that have encrypted real class files in their plugins

kindred valley
#

        Player p = e.getEntity();
        if(p.getHealth() < 5 && p.getHealth() > 0.5F) {
            p.sendMessage("calisiyo");
            p.setWalkSpeed(0.1F);
        }
        if(p.isDead()) {
            p.setWalkSpeed(0);
            p.setHealth(0.5F);
        }
    }```
wraith coyote
#

make item unbreakable only if it is damageable

kindred valley
#

hey guys im trying to control the situation if the player's health got under 5 but its not working

lavish hemlock
#

Probably in the classloader that loads said encrypted classes

quaint mantle
#

i made a minecraft mod that decrypts itself using their HWID as a encryption/decryption key with ASM

#

nobody cracked that

lavish hemlock
#

HWID?

quaint mantle
#

hardware id

lavish hemlock
#

So basically the mod is locked to a single system then? :)

quaint mantle
#

yes

#

every player get different jar file that was built by a installer/remote server

lavish hemlock
#

I have a gut feeling that that is a terrible idea

quaint mantle
#

that depends on purpose

lavish hemlock
#

imo all forms of DRM fall short

quaint mantle
#

if you are an opensource contributor you might not have to obfuscate your premium plugin at all

solid cedar
lavish hemlock
quaint mantle
lavish hemlock
#

So your DRM is only strong because not enough smart people are trying to break it?

quaint mantle
#

yes

lavish hemlock
#

That isn't strength

quaint mantle
#

that's enough, right?

lilac dagger
#

it'll sure stop the vast majority

quaint mantle
#

also it was strong enough at that moment because it was self-made obfuscators/authenticators and nobody knew how to crack

lavish hemlock
#

Again, security through obscurity

quaint mantle
#

i've seen so many projects that have strong obfuscation but have only 1 authentication method that returns boolean

#

in that case obfuscation doens't matter

lavish hemlock
#

No form of obfuscation is strong, still

quaint mantle
#

if they have to spend 30 days for a $20 software to crack, nobody's gonna crack it

buoyant viper
#

and yet obscurity != security 😎

lavish hemlock
#

Obfuscation does one thing: Make it harder to read decompiled code

#

Looking at obfuscated assembly gives you a lot more to work with, as almost all obfuscators use "patterns"

#

AKA they take something, return an output with X kind of obfuscation

quaint mantle
#

some obfuscation does more than that: class loading, authentication, class decryption, class loading order...

lavish hemlock
#

I would also argue that that isn't obfuscation ^

#

That is just DRM

lavish hemlock
lilac dagger
#

some sort of drm is better than none

#

and as long as the drm is creative it's very difficult to trace

lavish hemlock
#

I mean, if manual deobfuscation wasn't possible, we wouldn't be here today ;)

#

And, in the modern age, there exist some great tools for this too (i.e. Fabric's remapping toolchain)

lavish hemlock
lilac dagger
#

why?

#

it definitely prevents the average joe from straight up selling your work for a discount

lavish hemlock
#

Outside of the Minecraft world, there is a lot of proprietary DRM software used to "protect" games from copyright infringement.

#

Said software is well-known for causing many problems.

#

Example: Denuvo

lilac dagger
#

as long as the drm isn't intrusive

#

denuvo is a lot more intrusive

lavish hemlock
#

Most DRM is intrusive lol

#

Another example, one I find quite personal: EasyAntiCheat

#

EAC is not so much DRM

#

but, y'know, an anticheat

#

Still, it serves as a bit of a DRM as it stops pirated copies iirc

quaint mantle
#

if they don't know what they are using sure it will happen

lavish hemlock
#

Aaaand it breaks most games on Linux

#

The DRM prevents players from playing the games offline, even if the game is single-player only. If a Denuvo-enabled game's DRM servers are down due to internet outage or a company going bankrupt, the game will become literally unplayable for anyone!
Sounds familiar ;)

quaint mantle
#

that depends on type of DRM

vocal cloud
#

Any plugin with protection against people stealing it are fairly easy to crack depending on the amount of work

lavish hemlock
#

Hell, some games get cracked on their launch day

lavish hemlock
#

In my opinion, people should contribute their work to open-source and use a "pay for support" sort of model.

quaint mantle
#

(just make obfuscator yourself)

lilac dagger
#

people don't really pay for support

#

or they undervalue it

lavish hemlock
#

iirc Citizens 2 as well

quaint mantle
lilac dagger
#

those plugins well

#

i grew with them

quaint mantle
#

e. g. Duels ArenaRegen, Citizens

lavish hemlock
lilac dagger
#

they are helped by nostalgia

lavish hemlock
#

A lot of server owners don't understand build tools

#

And will just pay to download artifacts

#

So, here we're relying on a common human trait:

#

Stupidity ✨

#

Although it can also just be kindness, if they want to support the dev

lilac dagger
#

i think i got citizens from their jenkins server

#

for a test

quaint mantle
#

can't believe 14,700 ppl have paid $10 for that open-source plugin(maybe less because some ppl must have downloaded more than once)

lavish hemlock
#

TL;DR: DRM is dumb and can be broken easily given the right person.

#

imo people rely too much on obfuscation and such

#

Some people pay for obfuscators

#

(And then proceed to use said paid, unsupported obfuscator for Spigot)

#

(And then get rejected lol)

#

But whatever I won't stop someone from like, using ProGuard, as long as it doesn't take you a full day to set up

lilac dagger
#

i like proguard

lavish hemlock
#

ProGuard is cool

lilac dagger
#

i have this

quaint mantle
#

Proguard is the obfuscation that is the easiest to crack

lilac dagger
#

but i haven't managed to make it work with multiple projects/modules

lavish hemlock
#

Alsoooo

#

Obfuscators are anti-open-source

quaint mantle
lavish hemlock
#

And plugins are required, by GPL, to be licensed under GPL, which requires you to distribute source if requested

lilac dagger
#

it's not illegal to not accept the request

#

it only means that they can remove it from the public places

lavish hemlock
#

Yeah but you don't want that, do you?

quaint mantle
lilac dagger
#

i don't think md5 or the resource staff cares

lavish hemlock
lilac dagger
#

afterall their license is much worse

lavish hemlock
#

If you use Bukkit, you must use GPL

quaint mantle
#

but CraftBukkit is LGPL

lilac dagger
#

complete ownership over anything you post

quaint mantle
#

it's just stupid

lavish hemlock
#

Either way you're still using Bukkit's code

#

Annnd I think the original copyright owners can relicense if they want + GPL takes priority over LGPL

quaint mantle
#

I just realized that they have multiple license files

lavish hemlock
#

Oh that probably means it's dual-licensed or someone forgot to remove one

#

With dual-licensing you get to pick which license you want to follow

quaint mantle
#

I might have to read Spigot contribution agreement to understand the license

#

and I forgot where to read

lavish hemlock
#

?cla

undone axleBOT
quaint mantle
#
What the CLA does, is instead of licensing your code under [L]GPL, BSD, or whatever other licenses our projects may use, it licenses your code to us instead. This is a good thing, and in implementing it, we hope you will see the benefits behind our key reasons:```
lavish hemlock
#

That applies to PRs rather than plugins afaik

quaint mantle
#

so they can license CraftBukkit under LGPL instead of GPL because of the Bukkit contributors gave their rights to Spigot

#

I still don't believe Bukkit plugins have to be GPL beause it's considered as "dynamic linking"

maiden thicket
quaint mantle
grim ice
#

Imagine caring about this shiy

opal juniper
#

Probably stupid but is there a way to include a module to compile without actually depending on it

grim ice
#

Extremely uninteresting and pointless for me at least

young knoll
#

@tender shard did a blog post about GPL

quaint mantle
#

how can i detect chorus fruit broken by physics?
BlockPhysicsEvent gets fired even if the chorus fruit block isn't broken
i have to find another way
(Also i have to deal with beds/doors/etc)

eternal needle
#

Can some one help me i don't now how titels work anymore beacus i need it to show up on the screen to the player when they join but it don't work tag me pls

grim ice
#

@eternal needle google it

#

?google

undone axleBOT
eternal needle
grim ice
#

Actually

grim ice
#

You can't find something that you think isn't wrong

#

Show me what you found in google

eternal needle
grim ice
#

@tender shard that isn't how it works, you should let him learn how to use google for basic searches

#

@eternal needle "How to send a title to a player spigot"

#

Google that.

#

If you don't understand what you see in there then ask here

#

Which is probably due to your lack of java if so but I bet you've already been told that so I guess you don't want to learn it

#

No spigot dev learned java itself, most of them learned it with spigot, and unsurprisingly all of us recommend not doing what we did / are doing

eternal needle
grim ice
#

Also, just wondering, where are you from?

#

I'm Algerian

eternal needle
sinful musk
#

Hello can someone tell me whats the best way to remove items from a player?

#

for example i have a shop where if you buy something it would take 1 of an item in your inventory

sharp flare
#

You can try mainhand only or scan the inventory contents

sinful musk
#

Scanning using a loop>

#

?

tardy delta
#

player.getInventory().removeItem(item);

#

if (player.getInventory().containsAtLeast(item, amount))

sinful musk
#

only removes specific

sharp flare
#

Ur shop using chest gui?

sinful musk
#

no

sharp flare
#

Sign?

sinful musk
#

yes

tardy delta
sinful musk
#

if you have an item stack with 16 iron ingots it wouldnt take any

sharp flare
#

Loop the inventory contents if u want, haven't tried #removeItem but I guess u can check it out it may have overloaded methods ig

tardy delta
#

it worked with me

quaint mantle
#

I moved my project to 1.18.1, and it states that ItemStack is deprecated.

sinful musk
quaint mantle
#

What do I use in replacement?

sinful musk
#

how is itemstack deprecated?

#

i use it fine

vocal cloud
#

Are you using paper?

quaint mantle
#

It might just be the application im using however

#

API version: 1.18

vocal cloud
#

If you use either of those they're deprecated

quaint mantle
#

Yea

sharp saffron
#

hey when making custom crafting recipes how do you add custom materials?

quaint mantle
#

Try making a mod instead possibly?

sharp saffron
#

so it wont work on spigot

sinful musk
#

or custom model

sharp saffron
sinful musk
#

and when you make a recipe make it so it checks for the custom metadata tags or whatever

tardy delta
#

you cannot create custom materials

sage patio
#

Hi, I've this event and this code for canceling picking up a item in inventory, but there is a problem, when player pickups the item for first time, plugin cancels, in second time plugin does nothing, and 3th time cancels 4th does nothing and to the end ..., where is the problem ?

sinful musk
sage patio
#

its a custom class, forgot that

#

item stack is 1 thing at all

quaint mantle
#

Is there a replacement for ItemStack?

#

or

sage patio
#

and gives me a item stack

tardy delta
#

you know about private right?

sage patio
#

that not solve my problem but

#

so ?

tardy delta
#

idk

sage patio
#

lemme record a video

#

cancels first time, and ignores in second time

quaint mantle
#

minecraft server takign up ALL my cpu

#

holy crap

tardy delta
#

time to buy new pc

quaint mantle
#

ITS A 2 THOUSAND DOLLAR GAMING PC HOW

tall dragon
#

Sounds like cap

quaint mantle
#

not cap ill send the specs

tall dragon
#

Did you buy a 1600 dollar case?

quaint mantle
#

oh.

#

its cause it was generating the terrain n shit

#

its fine now

tall dragon
#

8 gb mem for a 2k dollar budget?

sage patio
#

@quaint mantle is ur pc lower than me ?

quaint mantle
#

idk

sage patio
#

check the screen shots

sage patio
quaint mantle
#

nope id rather buy an actual mc server

jagged thicket
#

how can you open intelij on that

quaint mantle
#

then deal with my cpu killing itself

jagged thicket
#

impressive

sage patio
jagged thicket
#

my i3 laptop cant open lol

quaint mantle
#

i have all the addons on lol

#

i can use intelJ fine

#

thats the weird thing

#

1.18.1 server however

#

kills my pc

#

for some reason

sage patio
#

disable addons u don't know what is that or ur sure u don't need that

tall dragon
jagged thicket
#

i jus have to use my PC it iz good r5 3500x

tall dragon
#

wops. wrong reply

sage patio
#

low spec programmer lol

jagged thicket
#

lol

quaint mantle
#

whats sad is that a 1.12.2 server was completely fine

#

yet this isnt

#

what logic is that

sage patio
paper geode
#

the logic is that the game has more features

quaint mantle
#

im buying a mc server

#

i cant deal with this

#

shockbyte is cheap and it works fast

raw ibex
#

how do i remove all types of an item from the floor

tall dragon
#

its pretty usefull to have at least 16gb ram for developing too

waxen plinth
#

Do you mean all items of a certain type?

sage patio
#

I recommend u to get a linux vps, running a server and use RUoDeT
RUoDeT is a java program automaticly grabs the .jar file on project build and uploads to ur server, then use BileTools for automatic plugin reload too

jagged thicket
sage patio
jagged thicket
#

i can barely open 4

tall dragon
#

i commonly run 3 servers too

waxen plinth
#

world.getEntities().stream().filter(e -> e instanceof Item).map(Item.class::cast).filter(i -> i.getType() == Material.SOME_TYPE).forEach(Item::remove)