#help-development

1 messages Ā· Page 1555 of 1

granite stirrup
#

xd

ivory sleet
#

šŸ™ƒ

haughty musk
#

Hi! I am making a team system and I noticed that when I join, I can only see that I am on red team. But others can only see that they are on blue team. Turns out that this is because it creates a new scoreboard everytime someone joins the server. I decided to check this with the last if statement in the function and sure enough, it printed out the statement. Any suggestions for a fix? Thank you.

arctic jetty
#

i wonder why syncCommands() isn't called after a command is registered

#

any particular reason?

ivory sleet
#

I mean if it was called more frequently eventual lag spikes could occur if there’s a lot of players online and if it’s called on the server thread

arctic jetty
#

tru

opal juniper
#

doing it in the worst way possible

ivory sleet
#

Holy

opal juniper
#

wait

ivory sleet
#

That’s cool

opal juniper
#

wrong vid

#

thats the right one ^^

eternal oxide
#

nice

opal juniper
#

what is the best way of moving the entity do you reckon elgarl

quaint mantle
#

how do i set an item's durability
i tried googling but theres nothing that shows an example

round pelican
#

Hello, is it normal that the only spigot maven dependency available for 1.17 is just "spigot-api" and not "spigot" ?

ivory sleet
#

Yeah

opal juniper
# eternal oxide nice

cause i am doing it in a really hacky and stupid way:

public void moveEntityToPlayer(Player player) {
    Location location = player.getLocation().clone();
    location.setY(location.getY() + 3);
    location.setX(location.getX() + 3);
    this.entity.teleport(location);
}
round pelican
#

oh okay, is it temporary?

#

and it'll be added later?

quaint mantle
#

uhhh how

ivory sleet
#

?learnjava

undone axleBOT
ivory sleet
eternal oxide
quaint mantle
#

ye i know how to cast but do u have an example

opal juniper
eternal oxide
#

I noticed a couple

ivory sleet
#

ItemStack stack = ...;
Damageable meta = (Damageable) stack.getItemMeta();

round pelican
quaint mantle
#

ahh like that

opal juniper
ivory sleet
#

Oh yeah it might not be stable enough to be published yet Mega my bad

round pelican
#

is there an ETA for it being published?

opal juniper
#

i hoped it would be a dx, dz sorta thing

ivory sleet
#

Nope

opal juniper
#

but it is like the accelleration

round pelican
#

or an alternative fix ? like installing all the included dependencies by myself ?

ivory sleet
#

Hmm just use the spigot one which you got with build tools

eternal oxide
round pelican
#

okay so i just have to build a spigot jar and add it to my dependencies manually until the whole package is published on maven, right?

ivory sleet
#

Myeah

round pelican
#

okay well thanks for your help šŸ™‚

ivory sleet
quaint mantle
#

HELP NEEDED: im using an essentials plugin for 1.17 and im trying to get it where regular players can use basic commands such as tpa and sethome and such and I cannot figure it out, gone to google and everything else and still nothing

ivory sleet
opal juniper
#

@wraith rapids u around?

lament bronze
#

But I don't see why there isn't a way to do it without the server jar or reflection

quasi flint
#

Ur supposed to do it while it's being enabled

lament bronze
#

yes

granite stirrup
#

does CommandMap.clearCommands()? clear all the commands that your plugin made?

#

or is it every command

lament bronze
#

every command

granite stirrup
#

f i just want to remove 1 command xd

quasi flint
#

A trolly thing. I see

lament bronze
#

access the knownCommands field

#

using reflection

#

and then remove it

#

its a hashmap

quasi flint
#

reflectiona

quaint mantle
#

um

lament bronze
#

xD

quaint mantle
#

luckperms?

quasi flint
#

Permissions plugin

#

So u can easily give permissions to groups of players like the default group

granite stirrup
lament bronze
#

1 sec

quasi flint
granite stirrup
#

is it in CraftServer?

quaint mantle
#

thank you

quasi flint
#

Np

lament bronze
#

its in the SimpleCommandMap class

#
            final Field knownCmds = SimpleCommandMap.class.getDeclaredField("knownCommands");
            knownCmds.setAccessible(true);

            final HashMap<String, Command> knownCommands = (HashMap<String, Command>) knownCmds.get(commandMap);
#

this will give you an unchecked cast warning

#

but you can suppress it

#

commandMap would be your SimpleCommandMap instance

quasi flint
#

Why would u even want to remove a command?

granite stirrup
#

ĀÆ_(惄)_/ĀÆ

#

just making something so i can

#

lol

quasi flint
#

;V

lament bronze
#

I'm working on a little plugin

#

Allows scripting

#

So I needed it

quasi flint
#

Just a trollplugin that removes all commands

#

And u register every listener

#

Can't go that wrong

lament bronze
#

ya know basically

granite stirrup
lament bronze
#

define some commands

lament bronze
#
            final Field f = Bukkit.getPluginManager().getClass().getDeclaredField("commandMap");
            f.setAccessible(true);
            final SimpleCommandMap commandMap = (SimpleCommandMap) f.get(Bukkit.getPluginManager());
sharp bough
#

is it possible to create a
hashmap<UUID, hashmap<Integer,Long> = kits and kit = 3 (just an example)
take the player UUID, use
kits.containsKey(playerUUID)
and then check if kit is in the second hashmap?

lament bronze
#

the commandmap contains all commands

#

so you get the commandmap, then the knownCommands field from the commandmap

#

and then you can remove commands that are related to your plugin

#

or any other command if you really want to

granite stirrup
#

k

quaint mantle
#

I've got an invisible armorstand that I want hovering over the player's head, but directly over their head while they move. As of right now, it more or less follows the player (about a 1/2 block behind) rather than sticking directly above them.

#

Is there a simple way to keep the armorstand directly above the player's head while they move?

opal juniper
#

i mean

#

are you listening to the moveEvent

granite stirrup
lament bronze
#

knownCommands.remove

#

knownCmds is a Field instance

granite stirrup
#

i have this knownCmds = SimpleCommandMap.class.getDeclaredField("knownCommands"); knownCmds.setAccessible(true);

lament bronze
#

look at the code again

#

there's an another line after those two

granite stirrup
#

?

lament bronze
#

in my code i sent

granite stirrup
#

but isnt that not gonna work

lament bronze
#

it is?

granite stirrup
#

its just gonna create a local variable?

lament bronze
#

wut?

#
final SimpleCommandMap commandMap = (SimpleCommandMap) f.get(Bukkit.getPluginManager());
#

its making a hashmap

#

its just getting the knownCommands field

#

wait wrong

#

one

#

this one

#

this line

#
final HashMap<String, Command> knownCommands = (HashMap<String, Command>) knownCmds.get(commandMap);
waxen barn
#

btw, i tried to make every vanilla command require at least op level 2, but it does nothing

                if (command instanceof VanillaCommandWrapper) {
                    CommandNode<CommandListenerWrapper> cmd = ((VanillaCommandWrapper) command).vanillaCommand;
                    LiteralArgumentBuilder<CommandListenerWrapper> builder = (LiteralArgumentBuilder<CommandListenerWrapper>) cmd.createBuilder().requires((p) -> p.hasPermission(2, "minecraft.commands.give") && cmd.getRequirement().test(p));
                    AddNodeChildR(cmd, builder);
                    VanillaCommandWrapper VanillaCMD = new VanillaCommandWrapper(server.getServer().commandDispatcher, cmd);
                    VanillaCMD.register(server.getCommandMap());
                    return VanillaCMD;
                }
                System.out.println(name);
                return command;
            });```
quaint mantle
#

The problem is, it is about a 1/2 block behind the player

waxen barn
#

AddNodeChildR is btw

private static void AddNodeChildR (CommandNode<CommandListenerWrapper> cmd, ArgumentBuilder<CommandListenerWrapper, ?> builder) {
        for (CommandNode<CommandListenerWrapper> child: cmd.getChildren()) {
            ArgumentBuilder<CommandListenerWrapper, ?> childBuilder = child.createBuilder();
            AddNodeChildR(child, childBuilder);
            builder.then(childBuilder);
        }
    }
granite stirrup
lament bronze
#

...

#

but you want to remove a command?

granite stirrup
#

i want to remove a command

lament bronze
#

yes?

#

well then

opal juniper
lament bronze
#

what's confusing you

#

I can try explaining it

#

All we're doing here is getting the commandMap which is an instance of SimpleCommandMap

#

then getting the knownCommands field of the commandMap which is a HashMap<String, Command>

#

the knownCommands hashmap is what actually holds the commands

quaint mantle
#

@opal juniper

        if (location.getX() == p.getLocation().getX()
                && location.getZ() == p.getLocation().getZ()) {
            return;
        } else {
            
            bounty.teleportBountyText(this);
            checkAndUpdateState(p);// Updates the state based on the player's position.
        }

^ Method that checks if the player has moved at all (I don't want to run this code when the player simply moves their screen)

    /**
     * 
     * A simple teleportation method for moving the player's holographic bounty
     * 
     * @param nPlayer - The NationPlayer object
     */
    public void teleportBountyText(final NationPlayer nPlayer) {
        
        if(stand == null)
            return;
        
        stand.teleport(getStandLocation(nPlayer));
        
    }
    
    
    private Location getStandLocation(final NationPlayer nPlayer) {
        
        double x = nPlayer.getBukkitPlayer().getLocation().getX();
        double z = nPlayer.getBukkitPlayer().getLocation().getZ();
        double y;
        
        if(nPlayer.getBukkitPlayer().isInsideVehicle())
            y = nPlayer.getBukkitPlayer().getLocation().getY() + 1.75;
        
        else
            y = nPlayer.getBukkitPlayer().getLocation().getY() + .8;
        
        
        return new Location(Bukkit.getWorld(Statics.worldName), x, y, z);
        
    }

^Code that teleports the armorstand

lament bronze
#

since it's a hashmap you can just remove/add stuff from/to it

regal lake
#

Is it possible that the buildtools don't work right now ?

Attempting to build version: 'java' use --rev <version> to override
Could not get version java does it exist? Try another version or use 'latest'
java.io.FileNotFoundException: https://hub.spigotmc.org/versions/java.json
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1981)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1577)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)
    at org.spigotmc.builder.Builder.get(Builder.java:728)
    at org.spigotmc.builder.Builder.main(Builder.java:322)
    at org.spigotmc.builder.Bootstrap.main(Bootstrap.java:27)

As https://hub.spigotmc.org/versions/java.json returns 404.

granite stirrup
#

so the hashmap there is a reference to the actual hashmap?

waxen barn
lament bronze
#

objects are always passed by reference

opal juniper
quaint mantle
#

no

#

only while moving

granite stirrup
lament bronze
#

šŸ‘

opal juniper
#

there is nothing you can do

#

unless u want to try and predict where they are gonna move

#

it is just it is only called 20 times per second max

#

which causes the delay

quaint mantle
#

I see

calm whale
cold tartan
#

how do you set motion in the direction you are facing? like i want an armor stand to move in a line in the direction it is looking, how would i do that?

sharp bough
#

is it possible to get the value of the key which is linked to another Key in a hashmap?
hashmap<Key, hashmap<Key, Value <-- what im trying to get>>

quaint mantle
#

Is there a way to make an armorstand "unhittable"?

chilly compass
#

hi! I want to teleport people from an Async task. I know that this isnt possible but is there a way to make it possible?

In my plugin the calculation of the location is kinda complicated and using this in a sync context it brings down my server to 18 tps. So it would be great if there is a way to do it

quaint mantle
#

I don't mean invulnerable.

quaint mantle
quaint mantle
chilly compass
quaint mantle
#

Then same concept applies for the next hashmap

opal juniper
cold tartan
quaint mantle
#

setMarker - i'

#

I'

#

I'll give it a ttry

cold tartan
#

it just makes it so you can't interact with it

#

or u could check entitydamageevent

quaint mantle
#

Nope I think this is what I want

#

Thanks Defiant!

chilly compass
opal juniper
#

It will call it on the main thread the next tick

sharp bough
#

like that?

#

usign a buffer hashmap

#

that hold the value of the key

chilly compass
#

But isnt my event called in the main thread anyway?

opal juniper
#

U just said that u are doing stuff async right?

#

which means that it will not be on the main thread

chilly compass
#

Okay now I see

cold tartan
sharp bough
#

xd

#

saw it

quaint mantle
granite stirrup
#

lmao

sharp bough
#

wait does this work
kitsUsed.get(playerId).get(kitID)

#

like is it a thing?

#

i cant test it

granite stirrup
quaint mantle
quasi flint
#

Dumb Question: Registered ze Code?

#

/ called it

waxen barn
#

yep, it is called 100 ticks after the plugin gets enabled

#

(originally it was 1 tick after it, but i tried to increase this number, but same result)

dusk flicker
#

You do know you need op lvl 2 to do commands arleady right?

#

The default commands atleast

#

Lvl 1 is just bypass spawn protection

waxen barn
#

nope, some commands as /me do't require op at all

dusk flicker
#

Well that's because it's a default permission

#

If you use a perm plugin just remove the perm for it if you dont want it to be run

eternal oxide
#

oddly you can't remove base MC command permissions

#

Well you can remove the perm but the command will still show in tab-complete and will be usable.

dusk flicker
#

Odd

eternal oxide
#

Bukkit commands you can, just not base MC commands

waxen barn
#

the code for modifieng the command is 100% working, because what i edit the command in command dispatcher, it works for the tab complete

#

but the registration isn't working

#
for (CommandNode<CommandListenerWrapper> cmd: ((CraftServer) Bukkit.getServer()).getServer().vanillaCommandDispatcher.a().getRoot().getChildren()) {
                 root.removeCommand(cmd.getName());
                 LiteralArgumentBuilder<CommandListenerWrapper> builder = (LiteralArgumentBuilder<CommandListenerWrapper>) cmd.createBuilder().requires((p) -> p.hasPermission(2, "minecraft.commands.give") && cmd.getRequirement().test(p));
                 AddNodeChildR(cmd, builder);
                 cd.a().register(builder);
             }

(^^^^ this works, but only for the tab complete, bec it doesn't affect the map)

chrome beacon
#

If you're doing this for a private server creating a patch could be easier

waxen barn
ivory sleet
#

🄲

cinder timber
#

can you edit the server jar and fuck about with stuff

earnest sonnet
#

if you're brave enough

opal juniper
#

I mean - yeah sure you can

granite stirrup
arctic jetty
#

which IDE is best suited for plugin development?

cinder timber
#

notepad++

granite stirrup
silk hamlet
#

notepad++ gang wya

arctic jetty
#

i'm currently using eclipse but i wanna know the pros and cons of each ide

#

i also rarely see netbeans being used for plugin dev, any particular reason why?

granite stirrup
#

eclipse cons is shit ui and sometimes buggy
intellij cons is you have to really get used to that ui and its kinda hard to

ivory sleet
#

I use IntelliJ

#

Mainly because of UI

silk hamlet
#

Yeah

arctic jetty
#

i've used intellij before but it was kinda slow

ivory sleet
#

As slow as eclipse for me

silk hamlet
#

its performance heavy

#

intellij

#

for me eclipse is fater

granite stirrup
silk hamlet
#

faster

arctic jetty
ivory sleet
#

I don’t think so

#

Why would it

#

Maybe webstorm does

unreal quartz
arctic jetty
#

o

unreal quartz
#

intellij's performance depends on your disk speed mainly, otherwise you're gonna be sat there for 5 minutes waiting for it to index

ivory sleet
#

IntelliJ probably caches a lot more stuff like the indexing it does for instance

waxen barn
arctic jetty
#

lol since i've heard intellij so much i'll try using that instead of eclipse and see if it's better or not

unreal quartz
#

because most people here use IJ

ivory sleet
#

Better is very subjective

arctic jetty
#

better for my purposes*

ivory sleet
#

Mye

opal juniper
#

Looks nicer - IntelliJ

#

Imo

ivory sleet
#

Handles kotlin better - IntelliJ

arctic jetty
#

holy damn it's pretty slow

ivory sleet
#

You can set a higher max ram allocation limit

opal juniper
#

So I would expect it

waxen barn
ivory sleet
#

That’s why it’s so good /s

waxen barn
#

even it was made for them to make it easier to develop intellij idea

#

but personally, i don't like kotlin so much

ivory sleet
#

I will convert if it gets union types

sharp bough
#

HashMap<UUID, HashMap<Integer, Long>> kitsUsed = new HashMap<>();

#

im trying to add values to the second hashmap inside that hashmap

ivory sleet
#

You might wanna adjust the load factor

sharp bough
#

whats a load factor

ivory sleet
#

Also for the record Tables would help you abstract away the awkwardness of nested maps

waxen barn
ivory sleet
#

Lucas a
Table<UUID,Integer,Long> is equivalent to Map<UUID,Map<Integer,Long>>

#

Only difference is that it automate creations and destruction

#

Myeah I guess it’s good if you need type erasure

sharp bough
#

tf is a table and why cant i find docs about it

ivory sleet
#

Guava

#

Table<R,C,V> table = HashBasedTable.create();

grand coral
#

How can I get the fields in Crafting Table (items in fields)

ivory sleet
#

Probably through CraftingInventory

whole stag
#

šŸ™ƒ

hexed hatch
#

Is there any way to inject a basecomponent into a chat message?

#

I know I could cancel the event and create my own chat system but that's a last resort since there are other plugins at work

ivory sleet
hexed hatch
#

That'll work? I thought that only supported strings

#

Nope

#

Not working

granite stirrup
hexed hatch
#

I tried converting it to legacy but that doesn't preserve the hover or click events

granite stirrup
#

some dickhead dmed me a scam discord

#

pretty sure its a scam

hexed hatch
#

How do I even get the message as components?

#

I'm just using the AsyncChatEvent

#

Oh, I think you're thinking of the Paper chat event

#

Man, that looks a hell of a lot better

#

Time to use the paper api instead

arctic jetty
#

isn't the paper api pretty much the same as the spigot api?

untold gazelle
#

^^

hexed hatch
#

Not the AsyncChatEvent

arctic jetty
#

ah ok

untold gazelle
#

ah ok

hexed hatch
#

Paper API adds a lot of shit and adds a lot of events

digital plinth
#

are datapacks just a bunch of in-game vanilla commands?

#

i dont see how commands like /summon zombie can be packed into a java class

digital plinth
#

okay then lol

obtuse basin
#

Is there a way doing custom textures for own blocks and items?

waxen barn
#

but for blocks, you must use some block, that already exists

#

for item, you still must use some existing item, but you can set its custom model data nbt tag, so this texture won't be obtainable ingame

young knoll
#

Noteblocks and mushroom block are good choices

#

As they have a ton of unused states

waxen barn
#

or logs if you need to make it rotateable

obtuse basin
waxen barn
#

yep, but blocks can't have custom nbt tags

#

some have, but you can't define your own including custom model data

obtuse basin
waxen barn
#

it can't use custom models, bec op saied, that there were no texture packs on the client

opal juniper
#

And yes

#

The big models were laggy

waxen barn
#

and problem is, that minecraft doesn't have any link between entities that supports offset in all directions

#

so you must send packet for each armor stand when you want to move them

#

oh, i didn't know this, thx for correcting me

compact haven
#

wait what the hell?

#

that literally makes no sense kekw

whole stag
#

Makes sense to me

waxen barn
whole stag
#

You need to keep the state of the server and client in state

winged ridge
#

Hello, I am making a plugin in Java for my minecraft server, basically it spawns a custom sword inside a chest and when a player opens it, it gives him effect, I'm having some issues with trying to prevent players from re-having effects when opening the chest multiples times, I've tried putting player names into a HashMap which worked but I needed to make the HashMap permanent so I tried converting its data to a JSON then getting it back after a reload, but that didn't work.
Is there any other way I can let a user have effect only one time when they open a chest and then no effects when they re-open it?

btw I already set the plugin to check if the chest contains the custom item, so that not all chests get the effect.

waxen barn
whole stag
#

Kinda, but not really

#

There's no foolproof way of detecting package loss

waxen barn
#

for private server, I'd go with MySQL, for public plugin, save it to binary file

winged ridge
#

It’s a private server, so you’re saying I need to store players name in a MySQL database ?

winged ridge
clear galleon
#

idk if its the right use case but i think it can get the job done

waxen barn
winged ridge
waxen barn
clear galleon
#

does not reset upon anything im pretty sure

dusty sphinx
#

Is there a place to read the BungeeCord javadocs?

dusty sphinx
#

Thanks

waxen barn
glass sparrow
#

How come?

dusty sphinx
#

Is there a list of Bungeecord API versions?

ivory sleet
#

Check the repo

winged ridge
#

I’ve never used MySQL so I might try persistentdatacontainer first

clear galleon
winged ridge
#

But MySQL can work for only stocking UUIDS?

#

I thought it was for bigger things

ivory sleet
#

I mean use pdc if needed, it’s very context dependent whether it’s a bad or good solution to a problem

waxen barn
# winged ridge I thought it was for bigger things

it is database, so you can store there almost anything you want, you need to create a table there, that contains columns, each column has some datatype and then each row is some players data in this case

waxen barn
#

con is, that you must setup the database server

ivory sleet
#

If you can, use something like mariadb or postgre

#

Reinventing the wheel without any significant justification is probably somewhat naive yeah

compact haven
ivory sleet
#

🄲

compact haven
#

ignorant fellow

ivory sleet
winged ridge
#

Hmm I think I will try persistent data containers then

#

Seems easier to set up

ivory sleet
#

I am sorry but I haven’t joined kkk yet and will probably not do that unless I get a zillion dollars or something

compact haven
#

yet and probably not

#

im not very satisfied with your answers

dusk flicker
#

yet

compact haven
#

dig a hole and bury yourself please

dire marsh
#

dig a whole

compact haven
#

yes a whole hole

#

i only fixed it because I thought it was too wordy

#

sorry but I know the CEO

#

and COO

#

and CFO

#

anll the CO's

#

and you arent oen

#

oh

#

oh

dusk flicker
#

NNY how many NNY accounts for you have

dire marsh
#

md banned like 6

ivory sleet
#

Did he? Lol

dusk flicker
#

Lmao

dire marsh
#

or kicked, not sure

ivory sleet
#

He hasn’t been banned on a single nny account

compact haven
#

every combination of NNY with 17 characters after is owned by him

ivory sleet
#

lol

dire marsh
#

but why

compact haven
#

including every discriminator, so NNYaKNpGms0eUVpiSdHx#5618, NNYaKNpGms0eUVpiSdHx#5619, NNYaKNpGms0eUVpiSdHx#5620, etc

ivory sleet
#

Lmfao

compact haven
#

lmfao

shut field
#

how can I cast an Inventory to an InventoryView?

clear galleon
#

inventoryview contains inventory

ivory sleet
#

You don’t cast it

clear galleon
#

for example #getInventory or #getBottomInventory

shut field
#

I have an Inventory but I am trying to get it's title/name

#

and to my knowledge you need an InventoryView to get it's name?

ivory sleet
#

Yes

#

Legacies have the title attached to the inventory itself

shut field
#

Legacies?

ivory sleet
#

1.8

#

For instance

#

Legacy version

granite stirrup
#

Wait pretty sure on 1.16 you can get the title by the inventory

shut field
ivory sleet
#

Then InventoryView

shut field
clear galleon
#

Did you create the inventory>

#

?

shut field
#

oh your right, thank you

cold tartan
#

could someone help me with this?

next stratus
#

There should be a way to hire devs here ngl

tired dagger
cold tartan
#

the way i set motion for the player:

player.setVelocity(player.getVelocity().add(player.getLocation().getDirection()).multiply(5));

isnt working for an armor stand , but im not sure why

next stratus
#

I mean, there should be a channel for it

cold tartan
#

but there could be like a role

#

like "Up for Hire"

next stratus
#

Like I gotta find someone else to help me fix some things

cold tartan
#

what do u need help with?

next stratus
#

I am rewriting a mines plugin I paid for

cold tartan
next stratus
#

And I am struggling with some things like the upgrading part

#

Nah another, want me to grab link?

cold tartan
#

is it similar in complexity tho?

next stratus
#

You can say that yes

#

Yes

#

I think it's 2mb

cold tartan
#

3 - 4 mb

tired dagger
cold tartan
next stratus
#

Wait, there's a limit on file size?!

#

Oh crap.

cold tartan
#

but u can link like a dropbox

next stratus
#

I'll sit on it and squash it down

cold tartan
#

🧠

cold tartan
granite stirrup
#

F well hope my plugin doesn't go over 3mb

#

Rn it's like 20 something kB or idk something like that

cold tartan
tired dagger
#

Ah, nvm then

dusty sphinx
#

This is probably way, way beyond the scope of this channel, but can anybody point to some good resources on learning SQL commands? Trying to get into SQL messaging but I'm not quite sure where to start.

quaint mantle
#

Any events for when a player changes the item in their hand?

#

PlayerItemHeldEvent

#

Found it šŸ™‚ thanks

#

Or is that only when they change slots? Guess I'll have to test it to find out. I'll reply if it works or not.

#

Ah it only seems to fire when changing slot

#

Would you say the only way to do it is to make my own events for InventoryClickEvent, PlayerDropItemEvent, etc

#

not own events but check inside of them events

tired dagger
cold tartan
#

now that im thinking about it the arrow was better for what i needed anyway

candid galleon
#

hey guys

#

is there any way to generate a book from json, like with the /give command?

#

eg: {pages:['{"text":"Minecraft Tools book"}'],title:Book,author:"http://minecraft.tools/"}

whole stag
#

Yup

idle tulip
#

?

hollow pasture
#

A question, I have this code from version 1.16 but when I move it to version 1.8.8 the code comes out with an error. Bukkit.getServer().getScheduler().runTaskLater(plugin, (bukkitTask) ->

glossy scroll
#

That API did not exist in 1.8.8

shut field
#

what is List<?> def

#

(I use it after a getConfig() )

compact haven
#

its just the default parameter

#

u dont need it pretty sure

waxen barn
#

where did you find the source of this function, I am trying to find it, because I need to look at what it is doing, but I don't see it anywhere

shut field
#

I am also wondering how you can get an ItemStack[] from a config file

hollow pasture
glossy scroll
#

I cant help

tired dagger
candid galleon
#

i want to do it in source

#

i have the json, i need to convert it to a book without the give command

glossy scroll
#

bookmeta.spigot()

candid galleon
#

the only method I see is deprecated

candid galleon
glossy scroll
#

yes

candid galleon
#

how would i convert json to basecomponents then?

candid galleon
#

interesting

#

so I'd have to manually support the author/description/title

glossy scroll
candid galleon
#

both

#

since BookMeta.Spigot only supports component page

glossy scroll
#

nono

#

The text of the book

#

Or the book itself

#

Because there is a way to deserialize items, i just forgot where the method is

candid galleon
#

i want the book itself

#

which includes the text

glossy scroll
#

This is the closest i could get

candid galleon
#

gross

#

i think i'll just use the deprecated method

#

ty for the help

glossy scroll
#

Whats that

candid galleon
#

Bukkit.getUnsafe().modifyItemStack(book, json);

glossy scroll
#

Its only deprecated because it may not be safe in the future

compact haven
#

oh my

#

getUnsafe and deprecated

tired dagger
cursive glen
#

Hello1

#

Need help with getting a player by number with Bukkit

#

So basically

#
Player p = Bukkit.getOnlinePlayers()[player_num];
#

doing something like this

tired dagger
shut field
#

how do I get an ItemStack[] from a config file

tired dagger
# shut field how do I get an ItemStack[] from a config file
BukkitWiki

The Configuration API is a set of tools to help developers quickly parse and emit configuration files that are human readable and editable. Despite the name, the API can easily be used to store plugin data in addition to plugin configuration. Presently only YAML configurations can be used. The API however was designed to be extensible and allow ...

shut field
#

there is no getItemStackList

tired dagger
#

Show me the values you want from the config

shut field
tired dagger
#

getItemStack()

#

ohh, but as a list

shut field
tired dagger
#

Mmm, one sec

#

You may just have to use a loop and add them to a List of type ItemStack

compact haven
#

ok so say I have a custom library, and 2 plugins on the server shade it, would they both have separate instances of it or would it be 1 instance

compact haven
#

if I dont relocate ^^

tired dagger
tired dagger
shut field
tired dagger
#

a for loop

#

or for each

shut field
#

well yes that

tired dagger
#

Haha

shut field
#

do I just set an ItemStack to the "getItemStack" and then loop through that?

tired dagger
#

I believe you so

#

Just make sure you're adding the values to a list so you can iterate through them later

shut field
tired dagger
#

Mm

#

That's unfortunate

#

Let me think

shut field
#

also don't ItemStacks usually only contain 1 value?

#

how can it also store a list of them?

tired dagger
shut field
quaint mantle
#

how can I also store a list of them?

tired dagger
#

That's the list you will add the values to. Now just gotta figure out how to grab the values

quaint mantle
#

@shut field what are you trying to do

shut field
#

and this is the config file

#

I am trying to make a backpack system using a config file

shut field
# shut field

but I don't know how to grab (and use) the info saved in this

quaint mantle
#

get the list of itemstacks from the config

shut field
quaint mantle
#
FileConfiguration config;
String path;
// ...

List<ItemStack> itemStackList = (List<ItemStack>) config.getList(path);
tired dagger
quaint mantle
#

?learnjava

undone axleBOT
shut field
#

well less of "what is it" and more of why would you use it there

tired dagger
shut field
quaint mantle
#

because it's a wildcard <?>

shut field
#

ohhhhhhhhh

#

I get it now, I was confused by the indentation

#

List<ItemStack> itemStackList = (List<ItemStack>) config.getList(path);

#

that is all 1 line!

quaint mantle
#

it wasnt indented?

shut field
#

I thought these were two diffrent lines:

#

List<ItemStack> itemStackList = (List<ItemStack>)

#

config.getList(path);

quaint mantle
#

no

shut field
#

cause I see this:

quaint mantle
#

what client are you on

shut field
#

I know how to cast stuff, I just was confused by the indentation (that my minimised discord caused)

cursive glen
#

Basically I would like to add all the players to a listr

#

list**

#

and get the player by doing list_name.get(1)

#

and then having that be a player object

silk mirage
#

Hm

#

How about you store serialized data

quaint mantle
#

whats your original problem @quaint mantle

#

Nothing, just asking if theres any more events I need to check for an ItemChangeEvent

#

when do you want it to be called

#

When a player swaps items the event ItemChangeEvent will be called

#

And I checked, no event for that so may as well just make it

tired dagger
# cursive glen Basically I would like to add all the players to a listr

So, you can get a list of all players like this and go through one using a for each loop. Or you could just use the .get(0) if you only wanted the first entry

List<Player> onlinePlayers = new ArrayList<>(ERInstance.getServer().getOnlinePlayers());

for (Player player : onlinePlayers)
    player.sendMessage("Hey");
#

@quaint mantle That would work too. I'm not familiar/comfortable with lambdas yet so my code is a little more expanded

quaint mantle
#

Isn't it .get(0) for the first entry?

#

@tired dagger

tired dagger
#

True

quaint mantle
#

true != true

tired dagger
#

You caught me

#

!false

quaint mantle
#

!true

#

!!!!!!!!!!!!!!!!!!false

#

ezW

tired dagger
#

!(0)

quaint mantle
#

oh no

tired dagger
#

xD

quaint mantle
#

lmao

tired dagger
#

Gotta love programming language

quaint mantle
#

boolean sentenceMakesSense = false;

tired dagger
#

haha

high pewter
#

I can't figure out for the life of me how to use NMS in Maven. I have ran BuildTools so I should have it in my local repository but no matter what I try this dependency doesn't work. Any ideas?xml <dependency> <groupId>org.bukkit</groupId> <artifactId>bukkit</artifactId> <version>1.17-R0.1-SNAPSHOT</version> <scope>provided</scope> </dependency>

rain pendant
#

I am trying to make a Phineas and Ferb trivia plugin but I am having a prob with getting chat messages this is my code

     @EventHandler
     public void onPlayerChat(AsyncPlayerChatEvent event) {
         Player player = event.getPlayer();
         player.sendMessage("yes");
     }
#

am I just a idiot

quaint mantle
#

is it registered

rain pendant
#

I am just a idiot

quaint mantle
#

😢

fair island
#

how do i compile a jar (Im trying to get PlotSquared V6)

quaint mantle
#

add the extension .jar to the file

fair island
#

to the ZIP? @quaint mantle

quaint mantle
#

yes

#

no

#

instead of .zip make it .jar

#

thats not how it works

fair island
#

uh

quaint mantle
#

@dusty herald enlighten this man

#

download the zip, then compile the contents using gradle (since its a gradle project)

summer scroll
#

Does Citizens NPC count as Player object? Like If I cast (Player) onto the entity will it cause errors?

fair island
#

may have figured it out on the gradle thing

#

hold on

fair island
#

ok so i got gradle, Now how do i use it

candid galleon
#

EntityDropItemEvent is very poorly named

#

makes me think it's a more up to date version of PlayerDropItemEvent

fair island
#

when i click the Gradle.bat it says build failed

fair island
#

I can't get gradle to work :/

#

im trying to compile it

tired dagger
#

@ivory sleet @opal juniper @jade perch @summer scroll I have absolutely no idea what happened but after trying to figure out the ACF Command API for an hour I gave up and deleted it. I literally typed the same code from last night and decided to test it for the hell of it and it worked...

forest path
#

Is it possible to increase the time it takes for copper to weather?

tired dagger
#

Probably

#

I'm going to assume it has an NBT tag named "Age" or something that gradually increases and once it gets to a certain age the block state changes (similar to how a baby entity transforms into an adult as it gets to a certain age). This is just a guess though.

#

Actually, a block is not an entity so probably scratch that

summer scroll
#

Although i'm not really sure how that works because it's new.

compact haven
#

"debugging what event is being called when copper is weathered"

#

do you exactly know how many events are called a tick

summer scroll
#

lots of event

torn frost
#

Hi when i set soft dependency of multiverse for my plugin?
do i set it like this :
softdepend: [MultiVerse]

I mean the name...

compact haven
#

go onto your server

#

do /plugins

#

find multiverse and copy the exact characters of the plugin name from /plugins

#

to the softdepend array

summer scroll
torn frost
#

ty....but sometimes it runs before multiverse finishes the loading custom worlds

deep tiger
#

Do you know if it is possible to change this message ?

summer scroll
tired dagger
deep tiger
mystic tundra
#

So I have the value and signature of a player’s minecraft skin, how would I overlay part of another skin .png texture over that? For example, if I want everyone’s skin to wear a hat on my server, I have the hat as the skin texture file with evertything but the hat erased

quaint mantle
#

Trying to recreate some of hypixel's uhc things but rn im trying to make a recipe book? is there any way its easier than to give ALL the materials even the air ones? this is my code rn:

public class RecipeInventory {
    public static Inventory newInv(Material[] mats, ItemStack result) {
        ItemStack clearGlass = new ItemStack(Material.GRAY_STAINED_GLASS);
        clearGlass.getItemMeta().setDisplayName("");

        Inventory inv = Bukkit.createInventory(null, 53);
        inv.all(clearGlass);
        // ROW 1
        inv.setItem(11, new ItemStack(mats[0]));
        inv.setItem(12, new ItemStack(mats[1]));
        inv.setItem(13, new ItemStack(mats[2]));
        // ROW 2
        inv.setItem(20, new ItemStack(mats[3]));
        inv.setItem(21, new ItemStack(mats[4]));
        inv.setItem(22, new ItemStack(mats[5]));
        // ROW 3
        inv.setItem(29, new ItemStack(mats[6]));
        inv.setItem(30, new ItemStack(mats[7]));
        inv.setItem(31, new ItemStack(mats[8]));
        // RESULT
        inv.setItem(24, result);

        return inv;
    }
}
mystic tundra
#

Is tgere a way to get a .png from a value and signature, overlay two .pngs and then get the value and signature of the final .png?

mystic tundra
tired dagger
#

So in a way, you can

mystic tundra
#

So if anyone could help me I would appreciate it

deep tiger
tired dagger
quaint mantle
#

idk how lmao

tired dagger
quaint mantle
#

Would be nice if u could just Turn a shaped recipe into an inventory

deep tiger
#

I know but i would like to show it even if the sender didn't add any argument

tired dagger
#

Like?

#

/command

deep tiger
#

yes but without any argument

#

just the command name

quaint mantle
#

you can

deep tiger
#

so that when he started to type the command name he receive a custom tooltip

quaint mantle
#

like this?

deep tiger
#

I know but i would like to do the same without any argument

quaint mantle
#

i didnt type anything and it just shows that

deep tiger
quaint mantle
#

Oh for commands?

deep tiger
#

yes

quaint mantle
#

just press tab

#

and find ur command

deep tiger
#

No but what if i type an unknown command ?

#

I would like to change this message

quaint mantle
#

wdym?

deep tiger
#

I would like something like that

quaint mantle
#

what do u want after that?

tired dagger
#

Literally what I sent xD

deep tiger
#

i already dit it with arguments but it doesn't work when you just type the command name

tired dagger
quaint mantle
#

but then i would have to make my recipe abcdefghi

#

is there an easier way

quaint mantle
#

so i can just get the letters

deep tiger
tired dagger
#

Oh yeah, that's right

fair island
#

I can't get gradle setup and I need to compile a plugin, someone help

opal juniper
deep tiger
#

I'm trying to remove this message

#

I'm trying to change or to remove this message when a player starts typing an unknown command

opal juniper
#

Can you? Afaik you would need to register it or do some packet fucknuggetry

lament bronze
#

pretty sure that's clientside

opal juniper
#

What makes you say that?

lament bronze
#

you gotta sync commands

#

the client doesn't know about any command until you sync

#

why would it do a packet to get a command on every keystroke

opal juniper
#

Right - well I imagine that there are packets sent about it yes

#

Idk if it stores a registry of commands

#

@deep tiger do you know what a directed graph is?

deep tiger
#

Nop :/

opal juniper
#

Clientbound packet ^^

deep tiger
#

Yes i've seen this too !

lament bronze
#

well thats what sync does i'd imagine

quaint mantle
#
// ROW 1
        inv.setItem(11, recipe.getIngredientMap().get('A'));
        inv.setItem(12, recipe.getIngredientMap().get('B'));
        inv.setItem(13, recipe.getIngredientMap().get('C'));
        // ROW 2
        inv.setItem(20, recipe.getIngredientMap().get('D'));
        inv.setItem(21, recipe.getIngredientMap().get('E'));
        inv.setItem(22, recipe.getIngredientMap().get('F'));
        // ROW 3
        inv.setItem(29, recipe.getIngredientMap().get('G'));
        inv.setItem(30, recipe.getIngredientMap().get('H'));
        inv.setItem(31, recipe.getIngredientMap().get('I'));
        // RESULT
        inv.setItem(24, recipe.getResult());

made it like this but then i would have to make the recipe each slot an different key
how would i do that

#

how to fix*

deep tiger
#

Means we can't do anything right ?

opal juniper
#

U could send it urself

lament bronze
#

removing/editing

opal juniper
#

Cause if he registers the command - it isn’t invalid

#

Thats my thought process anyways

lament bronze
#

but how do you know what command the user is currently typing out

#

i'm 99% sure its client side

deep tiger
#

The idea is : when he started typing, we sent him a custom packet with the command he is typing ?

lament bronze
#

because something like that doesn't really make sense to be server side

lament bronze
deep tiger
lament bronze
#

Well yeah

#

You can't

#

that's the problem

deep tiger
#

But some servers can do that

lament bronze
#

<args> is a default thing

#

after you type a command it shows <args> if you haven't declared what each argument is

deep tiger
#

mmh

tired dagger
#

@deep tiger I think I'm onto something here 🤣

hardy swan
#

That's honestly the best thing to see while debugging

tired dagger
#

Fax

lament bronze
#

that's tab complete

#

he's asking for the popup help thing

tardy delta
#

huh

tired dagger
lament bronze
#

don't think how that works

#

but if you can do it then gg ig

tired dagger
deep tiger
opal juniper
#

he said

#

Yeah, since the pop-up message can't technically be replaced, you could override it with tab complete

tired dagger
#

I went on a semi-big server (bc they usually have good devs that know how to block things) and did some testing to see if they were able to do it

lament bronze
#

but that's not the wanted result

#

:/

#

<args> cannot be changed

tired dagger
#

Why you say that?

lament bronze
#

because it can't be removed?

tired dagger
#

?

patent spoke
#

I want to spawn a Villager at predifined cordinates, but i dont know how to set them in code. Can someone help me?

tired dagger
#

How do you want the Villager to spawn? Command?

patent spoke
#

No when the server starts the Villager should spawn

tired dagger
#

I mean like for initial setup

#

But ig you could just do that

#

Well, @deep tiger I tried but am not sure it is possible. This is the closest I could get. The errors suggest both packets and brigadier are in use so yeah... 😦

hybrid spoke
tired dagger
subtle kite
#

fix the null part

#

and then if it doesn't work

#

ĀÆ_(惄)_/ĀÆ

hybrid spoke
#

ĀÆ_(惄)_/ĀÆ

#

giving up: the best solution for your problems

tired dagger
hybrid spoke
#

5head

mystic tundra
#

Whats the mojang website which has all the player skins, that you can search by the skin signature?

lament bronze
#

if the base server is 1.8 and you can join with a 1.13 or later then the auto complete won't exist at all

#

and will only show <args> for every command

deep tiger
lament bronze
#

because the base version is under 1.13

tired dagger
lament bronze
#

if that's not the case then they just don't have auto complete on the commands

mystic tundra
#

Anyone know where minecraft stores the skin files? I have a player’s skin’s signature and value and I’d like to download their skin

#

For a plugin I’m making

quaint mantle
waxen plaza
#

Can someone explain what owner means and what it does?

chrome beacon
waxen plaza
chrome beacon
#

Not sure but you can just set it to null

summer scroll
waxen plaza
#

I quess it doesn't matter then

summer scroll
#

yup, it doesn't really matter

tardy delta
#

should this play a timer for the player?

    private void startReadyCounter() {
        Bukkit.getScheduler().runTaskTimer(plugin, new Runnable() {
            int time = 5;
            @Override
            public void run() {
                if (time == 0) {
                    return;
                }
                for (Player p : getTraders().values()) {
                    p.playSound(p.getLocation(), Sound.ENTITY_TNT_PRIMED, 2, 2);
                }
            }
        }, 0L, 5L);
summer scroll
tardy delta
#

never used it : )

summer scroll
#

Just replaced new Runnable() with () ->

tardy delta
#

i got an error now

waxen plaza
#

I think you need to remove run

granite stirrup
#

It's 69%

tardy delta
#

ah yea

#

never worked with it before so ugh

granite stirrup
#

If you use BukkitRunnable I think it would work

ivory sleet
granite stirrup
#

Wait is that saying every 0 ticks ??

#

Or is it 5 ticks ?

tardy delta
#

ah yes i think šŸ¤”

granite stirrup
#

I think you should give your server some time to breathe lmao

#

Probs wouldn't want to do 0 ticks

summer scroll
#

It's every 5 ticks, the delay is 0

tardy delta
#

i want every second

#

so that would be 20 right?

ivory sleet
#

It will still be scheduled the next tick, mye 1 tick = 0.05 seconds

#

Best case

waxen plaza
#

Is the bukkit runnable better??

ivory sleet
#

Depends

waxen plaza
#

I have a scheduler to save data in my database every 20minutes

granite stirrup
ivory sleet
#

Not like using the BukkitRunnable over BukkitScheduler or vice versa is a performance win. Only reason you would choose the one or the other is cause of lambdas being syntactically cleaner or the fact that BukkitRunnable is impure.

summer scroll
granite stirrup
#

Idk

ivory sleet
#

The parameter names are really bad

#

First one is initial delay in ticks, second one is interval in ticks

granite stirrup
#

Lol

#

Is that mojangs fault?

#

Or spigot/bukkit

ivory sleet
#

Probably spigots

rugged topaz
#

derives from the bukkit class, so.

ivory sleet
#

Normal java scheduledexecutorservices actually have it that way (initialDelay and interval)

granite stirrup
#

Lol

#

Md_5 fix it

rugged topaz
#
if (p.getInventory().firstEmpty() == -1 || p.getInventory().addItem(item2) != null) {
    p.getLocation().getWorld().dropItem(p.getLocation(), item2);
}

is this how you check to see if addItem successfully added an item and that their inventory isn't full?

summer scroll
#

addItem is annotated @NotNull

granite stirrup
#

:/

rugged topaz
#

oh then

#

.isEmpty instead of null

#

but with a ! so

#
if (p.getInventory().firstEmpty() == -1 || !p.getInventory().addItem(item2).isEmpty) {
    p.getLocation().getWorld().dropItem(p.getLocation(), item2);
}
#

yea?

granite stirrup
rugged topaz
#

if it's annotated @notnull by the dev, it'll never return null.

eternal oxide
#

it can't

rugged topaz
#

isn't that how it is?

#

rather in my case, it returns an empty hashmap

#

but always returns a hashmap, empty, or filled

granite stirrup
ivory sleet
eternal oxide
#

It would not compile

ivory sleet
#

It certainly would

granite stirrup
#

Oh lol

rugged topaz
ivory sleet
#

Annotations are just annotations

eternal oxide
#

I thought those annotations implemented compile checks?

ivory sleet
#

Hmm maybe certain ones like ides supporting checkerquals or something

summer scroll
#

lombok 🄶

ivory sleet
#

Mye lombok is annotation processing I think

#

Probably throws if you try anything impossible with it

summer scroll
eternal oxide
#

Just did some reading and it does seem the annotions are blind

rugged topaz
eternal oxide
#

It will give warnings at compile time.

waxen plaza
#

Is it possible to show like in the picture [<level>] without being a tab completion?

eternal oxide
#

no

#

completions are simple string lists

rugged topaz
#

crashing with OutOfMemoryError: GC Overhead Limit Exceeded is the result of a memory leak right?

ivory sleet
#

Yup

rugged topaz
#

okay and is there a way to like, see the memory values of a java program?

ivory sleet
#

Or u have some bad gc jvm flags

rugged topaz
#

ill send them

ivory sleet
#

Profiler

eternal oxide
#

my guess is an unending loop

rugged topaz
#

java -Xms3686M -Xmx3686M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar craftbukkit.jar nogui

#

taken off the interent

eternal oxide
#

craftbukkit?

rugged topaz
#

just the name

chrome beacon
#

craftbukkit.jar :kekw:

ivory sleet
#

Yanlol

#

Why is ur min allocated ram set to ur max allocated ram

rugged topaz
#

is that an issue?

#

always used that

rugged topaz
ivory sleet
#

It’s immensely stupid, kinda defeats the point

rugged topaz
#

what's a recommended value?

#

like, 200MB less than the max

#

or

ivory sleet
#

Well how much ram do u have available

rugged topaz
#

well uh, 16gb on the system

#

running a bungeecord server, and 2 other paperspigot

hybrid spoke
#

why do you want to keep your ram that high if you don't need it

ivory sleet
#

1G, 3G maybe then

rugged topaz
#

immensely stupid of me but

#

i couldn't get to the bottom of it at all

hybrid spoke
#

with what memory leak?

ivory sleet
#

Also send the memory errors full stacktrace

rugged topaz
#

that's if i can get it, i made a plugin to auto restart the server to prevent data loss when memory is less than 700 off the max. so i'll have to check logs or whatnot

calm whale
rugged topaz
#

so setting the minimum flag isn't gonna be the answer to my solution?

ivory sleet
#

Probably not if it’s a memory leak you’re dealing with

#

But optimizing jvm flags isn’t a bad idea nonetheless

hybrid spoke
#

doesn't seem like a memory leak. more like that you are creating new instances of an object frequently

rugged topaz
#

instantiating an object isn't collected by the garbage collector inside a function?

ivory sleet
#

It is

rugged topaz
#

or do you mean i'm looping it

#

okay

rugged topaz
ivory sleet
#

Sure

rugged topaz
#

well for some reason that caps it at a gig

ivory sleet
#

Yes because it has only allocated that 1G

rugged topaz
#

so what's the meaning of the xmx3G?

ivory sleet
#

Max allocation

granite stirrup
#

When is it gonna be the future where spigot uses like 1mb of ram on its own

#

Probs not possible

ivory sleet
#

Technically possible with a lot of sacrifice like not caching stuff etc

eternal night
calm whale
#

I didn't know that github offers it's own maven host

tribal sparrow
young knoll
#

You might be able to do something with packets

#

I think wynncraft does it with the end gateway beam

hybrid spoke
quiet ice
#

Could evt.getEntity().getNearbyEntities(1, 1, 1) also include dead/removed entities?

calm whale
#

I don't think so

young knoll
hybrid spoke
quiet ice
#

not even if the method is called in the same tick?

hybrid spoke
#

not if you remove it before

#

if you remove it after getting nearby entities, its not dead or removed yet

#

just afterwards

quiet ice
#

I am performing a #remove before and after (the method may be called multiple times). Yet, I am getting some form of exploit that could only be caused if the entity is still considered alive but was already killed by my plugin

hybrid spoke
quiet ice
#

wiki.vg does not mention anything of beacon beams - so protocol side they aren't anything special (if they exist)

young knoll
#

Could be

hybrid spoke
#

those beams are clientside, so it have to be

hybrid spoke
#

and what type of "exploit" is it?

quiet ice
#

can't - I cannot reproduce the issue so I have just to go by words

wild marten
#

is there a way to add a new update checker to my plugin

opal juniper
weary geyser
#

There is a tutorial on spigot

hybrid spoke
weary geyser
#

For it

opal juniper
#

I think Choco has made one

quiet ice
# hybrid spoke and what type of "exploit" is it?

XP being added far more than usual. The only code that would explain this would be

                    evt.getEntity().teleport(Grab.grabLocs.get(grabLoc));
                    evt.getEntity().setPickupDelay(0);
                    for (Entity e : evt.getEntity().getNearbyEntities(1, 1, 1)) {
                        if (e instanceof ExperienceOrb) {
                            // Grab.grabLocs is a Map<Location, Player> map 
                            Grab.grabLocs.get(grabLoc).giveExp(((ExperienceOrb) e).getExperience());
                            e.remove();
                        }
                    }
weary geyser
#

I believe

umbral pagoda
#

hi all ihave proplem with my skypvp plugin when i hit any one with bow it give me error in consol and when i hit with rod the same error

umbral pagoda
hybrid spoke
#

but

#

?paste

undone axleBOT
hybrid spoke
#

pls

opal juniper
#

Yep^^

umbral pagoda
#

.

hybrid spoke
#

.

weary geyser
#

.

quiet ice
#

.

umbral pagoda
#

ican't send it why ?

weary geyser
#

????

#

Send it in a paste

young knoll
#

I’m going to guess trying to cast a projectile to living entity