#help-development

1 messages ยท Page 200 of 1

tardy delta
#

3 input params?

#
@FunctionalInterface
interface TriFunction<T, U, V, W, R> {
  R apply(T t, U u, V v, W w);
}```
fluid river
#

void doSomething(Type1 param1, Type2 param2, ...) {} ๐Ÿ™‚

slow oyster
#

Yeah it's just a very easy way to store info and is very performant since it's just stored in memory. Compared to dealing with a database it's theoretically less of a headache ๐Ÿ˜„

tardy delta
#

caches exist

fluid river
#

i see

slow oyster
#

Yep which is basically how I was using PDC. As each chunk gets loaded/unloaded it's data from the PDC gets cached/indexed in memory

golden turret
#

yes

sharp verge
#

So it doesn't really inform me what plugin causes the issue. I removed the plugin that was right before the first error message, but that solved nothing

chrome beacon
#

Try replacing PacketEvents

#

or the plugin containing it

knotty ruin
#

Is it possible to get the player who manually ignited a creeper? I'm on 1.8.8, and yes I know its API is outdated but I'm doing work for someone else.

tardy delta
#

playerinteractAtEntityEvent?

knotty ruin
#

Does the creeper entity object store the data? Or will I have to use that event + hashmap to do this?

tardy delta
#

check if someone rigtclicks with something burnable on a creeper

sharp verge
#

You think it might be ViaVersion that isn't working properly?

chrome beacon
#

Is PacketEvents installed

sharp verge
fluid river
#

zip file closed?

chrome beacon
#

Okay then one of your plugins includes it

sharp verge
#

yup

#

i have no clue

fluid river
#

probably something related to Discord/VK/Files integration

sharp verge
fluid river
#

Send your plugin list or smth

sharp verge
#

sure

fluid river
#

do you use PlugMan/PlugWoman or do /reload instead of /restart?

sharp verge
#

I only use restart

fluid river
#

hmm

sharp verge
#

I think reload was used one time like a few days ago

#

But this didn't occur before a couple hours ago

#

like 1 hour ago

fluid river
#

try removing LiteBans for a test run, if not -> all things related to Skript(SkQuery) + Bande

sand vector
#

do players get kicked before or after the plugins disable?

nimble hill
fluid river
#

wdym

nimble hill
#

like the ghost place

fluid river
#

you just cancel the BlockPlace?

nimble hill
#

yea i am

#

but it still flickers

fluid river
#

hmm

nimble hill
#

For example, When you are holding an item i want to deny that you are able to place it at all

#

like you cant place a Hoe for example

fluid river
#

you can try also canceling PlayerInteract

#

if it's a right click block with torch

nimble hill
#

i cant Cancel any event that im aware of, Playerinteract block place or anything because the client still sends to the server that it attempted to place and that player still places it

#

technically anyway, the server then just undoes it

fluid river
#

well you can try sending blockchange

#

if this doesn't help then only packets i guess

nimble hill
#

im already canceling it

#

Like have you ever played in adventure mode?

fluid river
nimble hill
#

you cant place anything even if you have it in your hand

nimble hill
#

yes ping the message as many times as you want

#

thats not what im trying to do

fluid river
#

you said you are trying to make players not see flickering

nimble hill
#

thats a side effect of what im trying to prevent

fluid river
#

alr

nimble hill
#

im trying to prevent the whole sutuation

#

and i dont think i can do that

fluid river
nimble hill
#

like i want to tell the client that they cant even place the block to begin with

#

psudo adventure mode if you will

sharp verge
fluid river
#

yes

sand vector
#

nah dw i figured it out

sharp verge
#

Huh?

#

I meant whether you were asking me a question related to MY problem

sand vector
#

ah

fluid river
#

hehe

sharp verge
#

Rifty do you have any idea to why i get this error?

fluid river
#

there is also something like this

#

@nimble hill

#

setBuildable(false);

sharp verge
#

There is no specific plugin info related to the error message, and the only thing usefull is that "PacketEvents" is used or smth. But that could be so many different things

sharp verge
#

How did you conclude those three plugins?

fluid river
#

also some of the plugins can be corrupt, so you need to reinstall/remove them to get the answer

fluid river
sharp verge
fluid river
#

and your Skirpt.jar is doing the work under the hood

sharp verge
#

Alright i found the problem

fluid river
#

i guess it's connected to skript

sharp verge
#
#

It wasn't

fluid river
#

[23:28:02] [Server thread/WARN]: [skript-reflect] Loaded class dk.plexhost.bande.BandePlugin from Bande v1.2.8.138 which is not a depend, softdepend or loadbefore of this plugin.

languid flare
#

Any Brazilians here?

fluid river
#

skript somehow loaded and used BandePlugin via reflection ๐Ÿ™‚

sharp verge
#

Yea skript-reflect is an addon allowing use of Java import in skript :)

sharp verge
fluid river
#

Well since it's gonna use ClassLoader it can cause zip file errors too

sharp verge
#

Well since the error had to do with PacketEvents, i feel kinda stupid not realising that the anticheat was using packetevents

#

which makes alot of sense tbh

fluid river
#

So well with outdated ProtocolLib you can have a NoSuchField/NoSuchMethod

#

which leads to giant error

sharp verge
#

If i were to guess protocollib implements the PacketEvents api/lib idk

#

anyways shit works now xd :D

fluid river
#

next time be aware of plugins like ProtocolLib and ViaVersion

sharp verge
#

Well actually protocollib was not outdated

#

but i think the version of Karhu relied on a test version of ProtocolLib

fluid river
#

And plugins which depend on them

fluid river
sharp verge
#

hmm yera

fluid river
#

Reminds me of Skyrim Modding...

#

Since last version 1.6.640 came out

sharp verge
#

never played skyrim, can't relate

fluid river
#

everything is broken

sharp verge
#

xd

fluid river
#

All mods depend on some libraries for old skyrim

#

which means old c++ game code

#

and when these libraries updated, mods which depended on them started causing CTD's

#

It's nice that Java has very informative errors

#

and minecraft server prints stack traces

#

cuz skyrim just crashes and leave no log

nimble hill
wary topaz
#

how can I place redstone blocks on my map at -45, 82, -49 through -41, 82, -45

nimble hill
wary topaz
#

also how can I detect when it's nighttime

#

in events

nimble hill
#

like -45, 82, -49
from -49 to -45

Then the next row,
Then the last and you just keep iterating

#

with a loop in a loop in a loop

wary topaz
nimble hill
#

Loop from -45 to -49
{
Loop From 72 to 82
{
Loop from -49 to -45
{
get world.get time and return time < 12300 || time > 23850;
set code here
}
}
}

wary topaz
#

thanks ๐Ÿ˜„

#

public void OnTimeSetNoon(worldtime evnt) {
if (evnt.getPlayer().getWorld().getWorldFolder().getName().equals("world")) {
if (!(evnt.getPlayer().hasPermission("permissions.dropitem.inlobby"))) {
evnt.setCancelled(true);
}
}?

wary topaz
#

What would world time be?

fluid river
nimble hill
#

literally

novel kite
#

anyone know what class in the bukkit API listens to commands sent in the console?
im curious as to what method bukkit is using

wary topaz
#

@EventHandler
public void OnTimeSetNoon((time < 1200) evnt) {
if (evnt.getPlayer().getWorld().getWorldFolder().getName().equals("world")) {
if (!(evnt.getPlayer().hasPermission("permissions.dropitem.inlobby"))) {
evnt.setCancelled(true);
}
}
}

??

fluid river
#

PlayerCommandSendEvent

#

and this two

novel kite
#

unfortunately its not an event which im looking for.
im looking for what bukkit is using in order to call those events. like, when a message is sent in console how does bukkit identify that in order to send those events?

nimble hill
wary topaz
#

is there a gettime event?

nimble hill
wary topaz
#

in events yes

fluid river
#

does it work with ladders tho

#

and simple torches

#

try ladder and yellow torch

#

and lever

nimble hill
#
public boolean isNight(){
if(time > 12500){ //12500 is the beginning of sunset.
return true;
} else {
return false;
}

And

public void Nighttime(){
if(isNight = true){
// code
}
nimble hill
#

lol

wary topaz
#

Thank you.

nimble hill
#

webbs yes

#

normal torch no

#

repeater/comp yes

fluid river
#

and for lever

nimble hill
#

yes for lever

fluid river
#

hmm

nimble hill
#

seems to only NOT work on torches lol

fluid river
#

i guess that's cuz they can be placed sideways

#

but nah

kind hatch
fluid river
#

ladders and levers are placed so ๐Ÿ˜ญ

nimble hill
fluid river
#

i have a cringe solution

#

try setting block to air

#

and cancel after this

#

tho would be inventory flickering

wary topaz
#

how do I get it in a specific world?

fluid river
#

so nah

kind hatch
#

Fair enough. :PP

fluid river
wary topaz
#

how do I import that specific world?

nimble hill
fluid river
#

@nimble hill try blockform event on torch

wary topaz
#

Id? You mean like "World"

#

Cannot resolve symbol 'getWorld'

fluid river
#

Bukkit.getWolrd("worldname")

nimble hill
#

ill try the form

#

Called when a block is formed or spreads based on world conditions. lmaoo

fluid river
#

idk

#

just check

nimble hill
#

yea pulling for straws

wary topaz
#

Cannot resolve symbol 'getWorld'

robust sinew
#

When I spawn an Entity in a BukkitRunnable, I get an error

#

how would I fix that?

nimble hill
robust sinew
#

how should I fix that?

nimble hill
wary topaz
#

wait I got it

#

World world = Bukkit.getWorld

fluid river
#

instead of async

#

runTaskLater()

robust sinew
#

I'm using it to delay the spawning by 2 ticks

fluid river
#

scheduleSyncDelayedTask() on Scheduler

robust sinew
#

and runTaskTimer() runs constantly

#

like you can't stop it right?

fluid river
#

yes

#

i mean you can but not realted

kind hatch
#

runTaskLater()?

robust sinew
#

I only need to spawn like 3 entities

robust sinew
fluid river
#

send your code then

nimble hill
robust sinew
#
BukkitTask task = new BukkitRunnable() {
                @Override
                public void run() {
                    loc.add(0D, .01D, 0D);
                    Arrow arrow1 = (Arrow) entity.getWorld().spawnEntity(arrowLoc.add(loc), EntityType.ARROW);
                    arrow1.setVelocity(velocity);
                    entity.getWorld().playSound(entity, Sound.ENTITY_ARROW_SHOOT, 1, 1);
                    arrow1.setShooter(entity);
                    arrow1.setDamage(arrow.getDamage());
                    arrow1.setPickupStatus(AbstractArrow.PickupStatus.ALLOWED);
                }
            }.runTaskLater(Main.getPlugin(Main.class), 2L * i);
            Thread t = new Thread((Runnable) task, "bowTask");
            t.start();
        }``` this is in EntityShootBowEvent
fluid river
#

BRUH

#

What works with torches..

nimble hill
fluid river
#

why...

kind hatch
robust sinew
#

ah

#

how should I fix that?

kind hatch
#

Remove it

#

It's not needed.

robust sinew
#

I just used the same code I used for something else earlier

#

remove the new Thread thing?

kind hatch
#

The Bukkit scheduler takes care of BukkitTasks

nimble hill
#

yea you dont need to multithread that for anything

robust sinew
#

ah ok

wary topaz
#

World world = Bukkit.getWorld("World");
Long time = world.getTime();

public void getTime(time) {
    if (time == 12500) {
        
    }
}
fluid river
#
new BukkitRunnable() {
    public void run() {
        loc.add(0D, .01D, 0D);
        Arrow arrow1 = (Arrow) entity.getWorld().spawnEntity(arrowLoc.add(loc), EntityType.ARROW);
        arrow1.setVelocity(velocity);
        entity.getWorld().playSound(entity, Sound.ENTITY_ARROW_SHOOT, 1, 1);
        arrow1.setShooter(entity);
        arrow1.setDamage(arrow.getDamage());
        arrow1.setPickupStatus(AbstractArrow.PickupStatus.ALLOWED);
    }
}.runTaskLater(Main.getPlugin(Main.class), 2L * i);
#

that's all you need

robust sinew
#

yeah I did that

#

thanks

wary topaz
#

???

fluid river
#

nice parameter with no type

wary topaz
#

it was because Long was capitalized

fluid river
#
World world = Bukkit.getWorld("World");
long time = world.getTime();
if (time ...) return;
nimble hill
#

SO i cant cancel it

#

im going to have a stroke

#

where's MD_5 or Choco when you need em

#

i hope Choco's pupper is doing good too.

wary topaz
#

Can you just tell me the error that I made?

kind hatch
#

You've got two errors that I see.

#

Actually 3

echo basalt
#

why the fuck are you initializing a static block

wary topaz
#

intellij

kind hatch
#

I uhhh, don't think IntelliJ put it there.

wary topaz
nimble hill
#

Intelij is the Smartest platform for development and software engineering with zero flaws and is perfect.

echo basalt
#

ohh..

#

he isn't running it inside a code block

#

๐Ÿคฆ

wary topaz
#

idk what event to set it to

echo basalt
#

make a runnable or something

#

the code needs to be contained somewhere

wary topaz
#

in what?

echo basalt
#

a code block

kind hatch
#

A method

wary topaz
#

alr

fluid river
#

12500L tho

echo basalt
#

Method, constructor, static block (probably not)

#

Just somewhere

nimble hill
fluid river
#

>> Your code is BAD, when uderline is RED

kind hatch
echo basalt
#

checking java docs is mid

#

just check the javadoc comments inside your IDE

#

much easier

fluid river
#

>> Sometimes your code's disgusting, when you do Raw-Type casting

wary topaz
#

thanks mate

echo basalt
#

example

fluid river
#

ahahahahha

echo basalt
fluid river
#

Ethan just trolling us i guess

echo basalt
#

?learnjava

undone axleBOT
wary topaz
#

;-;

fluid river
#

@echo basalt read my message

echo basalt
#

pinging someone that has blocked you won't result in anything nuker

#

stupid mf

nimble hill
#

its honestly not the best place to look to learn java in a place where prerequisite knowledge of fundamentals is expected

fluid river
nimble hill
fluid river
#

i'm asking for help

nimble hill
#

mom and dad are fighting

#

im scared

fluid river
#

psycho can you tell him that i need help

echo basalt
#

ehh the usual

fluid river
#

he blocked me

echo basalt
#

my mom was flipping shit at me while I was watching yt

#

so I just did what any man fears the most

glad prawn
echo basalt
#

and kept watching yt

nimble hill
fluid river
#

psycho please

nimble hill
#

What i really want is to know why a TORCH IS NOT A BLOCK or why a TORCH BEING PLACED IS NOT A THING A SERVER CAN SEE

kind hatch
#

Probably just an oversight.

fluid river
#

BlockCanBuildEvent-related ^^

echo basalt
#

does it just not fire any events?

echo basalt
#

sounds like a packet interception time

nimble hill
fluid river
#

@echo basalt read this, i need ur help

nimble hill
#

im trying to prevent the client from thinking it can place a block

echo basalt
#

uhh

fluid river
#

unhide the message go on

nimble hill
#

Psudo Adventure mode

echo basalt
#

I would help

#

but like

fluid river
#

finally

echo basalt
#

this looks like garbage

fluid river
#

he read my message

#

i spent a week i guess

chrome beacon
echo basalt
#

I mean

chrome beacon
#

I can zoom just fine

echo basalt
#

just resolution-wise

nimble hill
kind hatch
nimble hill
#

there was context also

echo basalt
fluid river
#

shit it wasn't mine

#

dumbass imllusion โค๏ธ

#

bro why

#

can't you read mesasges where i ping you

#

and only read unrelated stuff

nimble hill
#

because he blocked you, leave it be

kind hatch
#

I would hope that's not how it works if you are blocked.

echo basalt
#

@nimble hill found it

fluid river
#

i need his help

nimble hill
fluid river
#

he blocked me cuz he dislikes me helping noobs

echo basalt
#

BlockItem has this method

#

which calls canPlace

#

that fires the event n all

nimble hill
echo basalt
#

StandingAndWallBlockItem doesn't call it

#

because getPlacementState is overriden

nimble hill
#

ok

kind hatch
fluid river
#

yes

nimble hill
#

Is there anyway to force the client to not be able to place an item it should be able to

#

(so there is no flicker)

echo basalt
#

uhhhhhh

#

can't you use like adventure mode

chrome beacon
#

Yeah just use adventure mode

echo basalt
#

the flicker is a client-sided prediction and pretty much unavoidable

nimble hill
#

i COULD but they still need to be able to hit and break things, just not place

nimble hill
echo basalt
#

You can guarantee it's client-sided if you just Thread.sleep while still sending keepalive packets

#

and notice that placing blocks updates on the client

nimble hill
#

the only ways around that seem like Adventure mode or inplaceable

echo basalt
#

but interrupting that sleep makes all the blocks go back

echo basalt
#

As for the placement state thing

#

open a PR on jira saying that the event doesn't fire

#

and just list my explanation

#

it should get added pretty quick

nimble hill
echo basalt
echo basalt
#

but yeah what could nuker possibly need

#

because I'm not unhiding messages for the next 2 business days

wary topaz
#

[19:12:14 ERROR]: [BetterEvents] BetterEvents v1.0-SNAPSHOT attempted to register an invalid EventHandler method signature "public long BetterEvents.Events.Customevent.Time()" in class BetterEvents.Events.Customevent

#

I removed event handler and it worked

#

nvm

sharp verge
#

Hello another question. So im using this API https://github.com/Gecolay/GSit/blob/main/core/src/main/java/dev/geco/gsit/api/GSitAPI.java To create a sleeping pose for a player. I have a PlayerInteractEvent that checks that you right click a bed. What it is supposed to do is make you lay in the bed, but the problem im getting is shown in the screenshot. My question is how do I make sure that the player sleeps laying the correct way, no matter where they click the bed from

GitHub

GPlugin - GSit - Relax with other players on nice seats! - GSit/GSitAPI.java at main ยท Gecolay/GSit

wary topaz
#
        World world = Bukkit.getWorld("World");

        assert world != null;
        Bukkit.getConsoleSender().sendMessage("" + world.getTime());
        return world.getTime();
    }


    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        sender.sendMessage("" + Time());
        return true;
    }```


How can I automatically detect if the time hits 12000?
nimble hill
#

@Override
public void onTick() {
}

wary topaz
#

ty

robust sinew
#

how do I set a Skull to have a certain skin if there's no player using that skin

#

like if I have a link to the skin's image file thing

#

wait nvm

#

found a tutorial on the spigot forums

crude crystal
#

What is the packet used to teleport players?

nimble hill
#

try their discord

nimble hill
crude crystal
#

On 1.19, I am using a() in (NMS) Entity to overwrite a players location, but the server is sending PacketPlayOutPosition packets to fix the problem that I am making. That was why I was asking...

crude crystal
#

But I don't know how to prevent that without having my player be out of sync.

#

I might know an alternative...

nimble hill
#

what are you trying to do?

crude crystal
#

I am trying to make to make a minigame that swaps the worlds blocks with different ones by reading the chunk data and modifying it before it gets sent out

nimble hill
#

why not just modify the chunkgenerator

#

or the palette

#

if thats what you are doing

#

or use schematics

crude crystal
#

Well, I want to keep the world data the same without overwriting it...

nimble hill
#

ok i see, you are trying to do packet magic

crude crystal
crude crystal
nimble hill
#

if im understanding you, you want to for example have a player be in a world in their home, then be able to start a minigame and have it fake it

crude crystal
#

Kinda, I just want to have a day night cycle that makes the game "nightmare-ish" when the nightmare event is called

crude crystal
languid flare
#

How can i change slot server (bungeecord) with command?

crude crystal
quasi patrol
#

How does one untranslate color codes basically turning back a translated &e back into a normal &e?

quasi patrol
kind hatch
#

Oh, you actually want it converted back?

quasi patrol
kind hatch
#

I'm not sure a method exists, but you could just take the existing implementation and convert it to switch out the section symbol for the ampersand.

#

I believe that converted strings will contain the section symbol in console and whatnot, but it obviously won't be displayed in game.

#

Could be wrong about it though.

noble lantern
#

Has someone ever got special source plugin working on gradle yet? (For mappings 1.19.2)

drowsy helm
#

pre sure everyone just uses paperweight

noble lantern
#

Never used it cause i use spigot api

#

always hear about it but never used it

#

Assuming theyre both compat with each other or no? (EG, when theyre on a spigot/paper server)

I know nothing about paperweight so i prolly sound stupid asf lmao

drowsy helm
#

iirc yes

hasty prawn
#

I just use the manual commands with Gradle

wet breach
noble lantern
hasty prawn
#

There's manual ones, they're provided in the thread

noble lantern
#

?nms

#

uhm

#

forgot the thread link

hasty prawn
noble lantern
#

Ah i see so the top line takes my built jar file and remaps it, and bottom reverts?

quasi patrol
river oracle
brazen surge
#

how to do lay? (1.12.2)

quaint mantle
#

for some reason this code is only registering the first custom item, and not the 2nd custom item and so on and so forth, so i was wondering what i was doing wrong and how i can fix this? Been at this all day. i really need the help and i would appreciate it a ton!

My Code: https://pastebin.com/2XrHcEBd

Ping me if u know a solution to this, going to sleep

hoary wing
#

How can I create a plugin that the sheep have the name jeb_ and that name is invisible

brazen surge
hoary wing
#

On spawn sheep

desert loom
#

if the item doesn't match your first/second condition, it breaks out of your loop.

quaint mantle
#
Recipes:
  testItem:
    firstItem: stone
    secondItem: diamond
    itemResult: emerald
    levelCost: 0
    name: '&aTest Item'
    lore:
    - '&8Test Item'
    - ''
    - '&d&lCool Item forged by gods.'
    - '&9I think..'
    - ''
    - '&c&lSPECIAL ITEM'
  testItem2:
    firstItem: emerald
    secondItem: diamond
    itemResult: totem of undying
    levelCost: 0
    name: '&aTest Item 2'
    lore:
    - '&8Test Item 2'
    - ''
    - '&d&lCool Item forged by gods.'
    - '&9I think..'
    - ''
    - '&c&lSPECIAL ITEM 2'
#

it only lets me do the first recipe

#

and not the 2nd one

desert loom
#

it's likely because you exit the for loop with return

quaint mantle
#

so should i remove the else statements?

#

and give that a try?

desert loom
#

yeah

quaint mantle
#

ok it works now

#

Thank you so much

#

i appreciate this a ton! :)

desert loom
#

np

quasi patrol
#

Ello. Small brainer here, in setformat(), I get the error saying it cannot conversion โ€œ?โ€ even though the string doesnโ€™t contain โ€œ?โ€.

jagged monolith
#

Show the code

wet breach
#

?paste

undone axleBOT
quasi patrol
eternal oxide
#

pretty sure you forgot to add %2$s or whatever the field is

#

%1$s gets replaced with name, %2$s gets replaced by the message

#

you need at least the %2$s on the end for the message

quasi patrol
#

I did that now, but same thing.

eternal oxide
#

you just have %s twice

quasi patrol
eternal oxide
#

then post yoru full format code and the full error

eternal oxide
#

need full error

eternal oxide
#

I see nothing wrong with your format, but debug the final format you are setting after you call Placeholder. Your code should work fine on Spigot, can't advise on Paper

quasi patrol
#

Well lmk if yall find the issue before I do.

quaint mantle
#

Guys Do you know max length of Item display?

crimson terrace
#

i think its like 30 characters?

wet breach
#

Full code means at minimum the entire method. Preferably the entire class to be shown

dim palm
#

why my spigot plugin doesn't run on paper, paper wasn't fork of spigot?

quaint mantle
eternal oxide
#

all spigot plugins run on paper, unless you did something silly

quasi flint
#

smth very silly

#

we would need a error

#

to give a definitive answer

jagged monolith
dim palm
jagged monolith
#

There would need to be an error.

dim palm
#

nothing

jagged monolith
#

Did you add the plugin to the plugins folder?

quasi flint
#

does it show up under /plugins

dim palm
jagged monolith
undone axleBOT
jagged monolith
#

Paste the full startup log

dim palm
quasi flint
#

selfmade plugin

#

or downloaded one

#

if itโ€™s downloaded

#

whats the plugins name,

nimble hill
#

@fluid river I know this is comming from left field but this was my solution:

    @EventHandler
    public void on(PlayerItemHeldEvent e) {
        Player p = e.getPlayer();
        ItemStack hand = p.getInventory().getItemInMainHand();
        if (!hasAdaptation(p)) {
            if (p.getCooldown(Material.REDSTONE_TORCH) > 0) {
                p.setCooldown(Material.REDSTONE_TORCH, 0);
            }
            return;
        }
        if (isBound(hand)) {
            p.setCooldown(Material.REDSTONE_TORCH, 50000);
        }
    }

    @Override
    public void onTick() {
        for (Player p : Bukkit.getOnlinePlayers()) {
            ItemStack hand = p.getInventory().getItemInMainHand();
            if (!isBound(hand)) {
                J.s(() -> p.setCooldown(Material.REDSTONE_TORCH, 0));
                continue;
            }

            if (!hasAdaptation(p)) {
                continue;
            }

            if (isBound(hand)) {
                J.s(() -> p.setCooldown(Material.REDSTONE_TORCH, 50000));
            }
        }
    }
glossy venture
#

J.s()

tardy delta
#

Damn bro

tender shard
#

damn, variables called "p", fields called "J", methods called "s()" o0

glad prawn
#

XD

twin venture
#

Hello , anyone used Calender or TimeZone utils before ? iam having a problem i dont know how if its fixable ..

#

so this is the code iam using ,
check for if the day that quest started is the same as today && week of quest started is the same week

#

that's all what iam trying to do .. but it seems to not working ..

#

ofc , i set when a quest start i set this in mysql

#

ideas will be great [i have been suffering from this for weeks , could not fix it ..

#

๐Ÿ˜ญ

tender shard
twin venture
# tender shard wdym with "not working"?

i will try to explain it :
ok so when i finish a daily quest today , and i log out , and log in tomorrow , it should reset it and i can do it again right?
but no its not doing that .

#

i hope this explained the problem .

#

and i use the method in 2 places
1- when i load the user :

2- when i give him the

twin venture
#

when i finish it this week , i login next week it should be reset

#

and i can do it again

#

but now , its not hapening .. it keep on you already started this quest .. xd

knotty meteor
eternal night
#

I mean, how are you registering that ๐Ÿค”

grim ice
#

honestly i kinda disagree with the fact that you need annotations for event listeners

twin venture
#

how i can convert miliseconds to seconds?

#

long seconds = starteddate / 1000;

#

right?

grim ice
#

it wouldve been more convenient to have a method to register methods as listeners as well

twin venture
echo basalt
twin venture
#

well , i have been trying to remake the code :
and it still send me the miliseconds

#

and not the seconds

#

i know i have 3 variable for seconds , long seconds , long l , and l / 1000

#

forgot to remove them

tender shard
#

that's why it's called MILLIseconds ๐Ÿ˜›

twin venture
quaint mantle
#

Hey guys, I want to get Item Name in inventory by slot, It works well, but It always return AIR when It's getting 1.19.2 items

#
public void saveInventory(String path, Inventory inv) {
        for (HumanEntity viewers : inv.getViewers()) {
            InventoryView OpenInv = viewers.getOpenInventory();
            if (OpenInv.getTopInventory().equals(inv) && !inv.getType().equals(InventoryType.CRAFTING)) {
                yaml.setString(path + ".inv.title", OpenInv.getTitle());
                yaml.setInteger(path + ".inv.size", inv.getSize());
                yaml.getConfig().createSection(path + ".inv.items");

                for (int i = 0; i < inv.getSize(); i++) {

                    ItemStack item = inv.getItem(i);
                    if (item != null)

                        System.out.println(item.getType().name());
                    if (item != null) {
                        setItemStack(path, item, i, i);
                    }
                }
            }
        }
        yaml.saveConfig();
    }
#

How can I get the Item Name on 1.19.2 ?

chrome beacon
#

I recommend using a translatable component is possible

chrome beacon
#

Yeah discord didn't load all the messages for some reason

quaint mantle
#

Still unloaded?

chrome beacon
#

Try setting your API version in the plugin.yml

quaint mantle
#

K. I'll try

quaint mantle
quaint mantle
chrome beacon
#

It's just so Spigot knows your plugin isn't an old one

quaint mantle
#

Ahh so if I put on version like 1.13 spigot will know every version upper 1.13?

chrome beacon
#

If you put 1.13 Spigot will know that the plugin was designed for the major changes that happened in 1.13

#

If you don't specify it Spigot will try to maintain backwards compatibility

earnest knoll
#

anyone by chance making a plugin about custom emojis in minecraft chat?

#

stuff like using the discord emojis ingame

chrome beacon
#

This is the wrong place to look for plugins

#

This channel is for help with development

tender shard
#

api-version 1.14 will work for 1.12 and below, and 1.14+

#

etc

#

versions below 1.13 do not care about the set api-version, and versions equal or above 1.13 only work if the set version is equal or below the currently running version

glossy venture
#

how do i fix this in gradle

ivory sleet
glossy venture
#

how do i set the language level higher in gralde

#

gradle

#

ive done it in the ide

#

but im pretty sure it resets

#

after reloading

ivory sleet
#

java.toolchain.languageVersion.set(JavaLanguageVersion.of(x))

#

iirc

sterile token
#

Conclure!!! Nice to see you alive!! I thought something had had happen to you

ivory sleet
#

Hi

#

Im all good

sterile token
#

Oh nice

#

What happened with us?

ivory sleet
#

Us?

sterile token
#

U*

ivory sleet
#

Not much

#

Been doing other stuff put simply

sterile token
#

Oh ok

#

I really miss u

#

I remember all that great mommwnts with have had together

glossy venture
native ruin
#

does spigot have built in clickable chatmessages

#

or clickable text in general

remote swallow
native ruin
#

so nothing built in?

remote swallow
#

thats built in

#

you just need to use it

#
TextComponent message = new TextComponent("Click me");
message.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://www.spigotmc.org"));
message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Visit the Spigot website!").create()));
native ruin
#

oh ok ty

native ruin
#

can you use the clickevent to run another function?

#

do you have to declare that command in the plugin.yml and onenable?

tardy delta
#

if its a plugin command yes

native ruin
#

then is there a parameter or something that makes it so it can only be executed by the textcomponent?

tardy delta
#

wha

#

no

native ruin
#

maybe a check if the sender is a player who has a book opened?

tardy delta
#

wondering what the point is of using hikaricp and then only closing the db connection every minute or smth vs calling datasource::getConn every time and closing it every time?

quaint mantle
#

Does anyone here happen to remember the SOLID principles full form off the top of their heads?

next plume
tardy delta
#

ye thats what i was thinking but whats the point of using hikaricp then

#

if you only have one connection open all the time

vocal cloud
#

Preferably a pool is the best option

tardy delta
#

would you have to close a pooled connection then?

vocal cloud
#

Don't believe so. IO should be handled by the pool

tardy delta
#

im not sure but calling ::close on a connection that hikaricp returns does not actually close it iirc

next plume
#

HikariCP handles the connection pooling for you. It simplifies the coding even if you only have one connection (like for SQLLite).

tardy delta
#

im always used to close connections right after a statement

vocal cloud
#

Why not try with resources

tardy delta
#

thats what im doing

next plume
#

It also covers using HikariCP.

grizzled oasis
#

hi a question on how could use interface to make a sort of config who change like

Mode: Teleport
Uses the Teleport interface
if i select the Mode: Random
Uses the random

Having something clean

echo basalt
#

interface paired with an enum

grizzled oasis
tardy delta
next plume
#

If you're using HikariCP and try with resources, I don't think you care.

ornate mantle
#

is there a way to calculate the xp cost of combining 2 items on the anvil without using the anvil?

twin venture
#

for the third time , any one used Calander or Date utils before?

ornate mantle
#

yes

twin venture
#

you answered me right ?

ornate mantle
#

yes

#

ive definitely used it before

twin venture
#

yes

ornate mantle
#

wait

twin venture
#

this is the current code ..

next plume
#

You can see, that we don't close our stuff here, because we don't need it. Any object you assign inside the braces of the try braces will be closed when you exit the code block. This will return the connection to our connection pool. Free the blocked memory for the result cache and statement and we are happy and ready for the next request.

ornate mantle
#

@twin venture i think you should store System.currenttimemillis() + 24 hours after a quest is done

#

and when the player tries to do the quest again and its after that stored value

#

then it should reset and let you do the quest

crimson terrace
#

is it that smelly kind of smell that smells... smelly?

#

aboooooooos

tardy delta
#

bruh

crimson terrace
#

there we go again with the static abooz

undone axleBOT
crimson terrace
#

trust me with this, a few months ago I was using static left and right, I was able to get away from that tho. code is now much more readable and extensible... remember to use interfaces for main functionalities aswell

#

if you have questions feel free to ask me

#

np

verbal slate
#

Guys, does anyone know how to do such a placement of items by slots in the GUI?

#

At the moment, my items are placed like this:

#

That is, how to do auto-centering?

late sonnet
#

looks like a math issue (?

verbal slate
#

yes!

tardy delta
#

mc server start script go brr

verbal slate
tardy delta
#

use continue to cleanup that mess

late sonnet
#

to early for thing maths xd
you need calc the "/2" of the row for know where is the best place... but dont know the "formula"

quaint mantle
#

does Location.getBlock.setType(Material.YOUR_TYPE_HERE); not work if the chunks aren't loaded

chrome beacon
#

It should load the chunk and set the block

quaint mantle
#

well its not spawning any blocks

#

it has the coordinates

#
public static void markPlot(Location loc, World w, double radius) {
        double x = loc.getX(), z = loc.getZ();
        for(double i = x - radius; i < radius; i++) {
            for(double j = z - radius; j < radius; j++) {
                Location tempLoc = new Location(w, loc.getX() + i, loc.getY(), loc.getZ() + j);
                tempLoc.getBlock().setType(Material.GREEN_CONCRETE);
            }
        }
    }
``` and I'm setting it like this :/
#

and yes i know im calling the line to edge of square a radius ๐Ÿ’€

chrome beacon
#

Make sure that tempLoc is what you want it to be

#

It does look a bit odd

quaint mantle
#

well it works with spawn

#

i can take a screen recording if u want

chrome beacon
#

Why are you using hacks ๐Ÿ’€

quaint mantle
#

i play on an arnarchy smp

#

anyways

#

and as u can see here at 256 0 0

#

nothing

chrome beacon
#

Are you in a void world or smth?

quaint mantle
#

u can see there it registers the coordinates

#

but doesnt spawn any blocks ๐Ÿค”

late sonnet
#

i dont test this.. but in NMS exists a boolfor know if the settype work..

#

but maybe only works for loaded chunks

chrome beacon
#

I thought Location#getBlock loaded the chunk

#

It does make sense for it to do so

quaint mantle
#

somethings going wrong

#

not chunk loading error

#

cus i tried telporting player right before loading second one

#

at 256 0 0

#

which would 100% load the chunks

#

๐Ÿค”

#

but it didnt spawn

chrome beacon
#

I'll just say it again your loop code does look off to me

#

Try printing where it's placing the blocks

quaint mantle
#

hm i just had a thought

#
loc.getBlock().setType(Material.RED_CONCRETE);
#

I added that

#

to the end of markPlot

#

and it spawns

#

so its something about the 256

#

and the for loop

chrome beacon
#

Like i = x - radius; i < radius; i++ ??

#

Is your first working position perhaps at 0, 0

quaint mantle
#

is there a template thing for filling an area

#

clearly i did it wrong

late sonnet
quaint mantle
#

void

#

its the way im filling the blocks

#

thats the problem

#

does anyone have a pre made function to fill blocks using 2 locations?

quaint mantle
#
public static void fillBlocks(Location loc1, Location loc2, World w, Material block) {
        for(double i = loc1.getX(); i < loc2.getX(); i++) {
            for(double j = loc1.getY(); j < loc2.getY(); j++) {
                for(double k = loc1.getZ(); k < loc2.getZ(); k++) {
                    new Location(w, i, j, k).getBlock().setType(block);
                }
            }
        }
    }
``` came up with this, but it doesnt work. does anyone see why?
#

i think i figured it out

#

when Y is 0

#

it breaks

#

now to figure out how to fix it...

#

anyone have any idea?

icy beacon
#

is it possible to replace enchantmentoffers in prepareitemenchantevent? i am going to try reflection, but i am not able to test my code at this given moment, so i just wanted to get a second opinion:

    public void preEnchant(PrepareItemEnchantEvent ev) {
        // ...

        EnchantmentOffer[] offers = Utils.generateOffers(
            Triple.of(ench1, random.nextInt(ench1.getMaxLevel()) + 1, oldOffers[0].getCost()),
            Triple.of(ench1, random.nextInt(ench1.getMaxLevel()) + 1, oldOffers[0].getCost()),
            Triple.of(ench1, random.nextInt(ench1.getMaxLevel()) + 1, oldOffers[0].getCost())
        );

        try {
            Field offersField = ev.getClass().getDeclaredField("offers");
            offersField.setAccessible(true);
            offersField.set(ev, offers);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

do i need to update the inventory somehow after this, or anything?

quaint mantle
# quaint mantle now to figure out how to fix it...

so I fixed this:

Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "fill " + (int) loc1.getX() + " " + (int) loc1.getY() + " " + (int) loc1.getZ() + " " + (int) loc2.getX() + " " + (int) loc2.getY() + " " + (int) loc2.getZ() + " minecraft:green_concrete");
``` but now I need to load the chunks
tardy delta
#

tf

quaint mantle
#

ok I fixed my problem by teleporting the player there

#

right before spawning blocks

#

that way chunks loaded ๐Ÿ˜„

serene sigil
#

how do u break from a runTaskTimer loop?

#

u cant use break; obviously

hasty prawn
#

Cancel it

late sonnet
#

this.cancel or this.stop?
not remember the runnable commands

hasty prawn
#

cancel

serene sigil
#

doesnt work

#

btw there is an if() in my runnable and if thats true i wanna cancel it

hasty prawn
#

You can only call this.cancel() inside if you're not doing

Bukkit.getScheduler().runTaskTimer()

#

You have to do new BukkitRunnable(() -> {}).runTaskTimer() I think is what it is

serene sigil
#

i have this

hasty prawn
#

Yeah so change it to new BukkitRunnable

serene sigil
#

okay

#

what is the difference tho?

hasty prawn
#

In Spigot there's absolutely no difference

#

they do the same thing

#

The 2nd one just allows you to access this in the Runnable itself while the other one is easier to write

late sonnet
hasty prawn
#

wot

#

I did not know you could do that tbh

serene sigil
#

gives error

hasty prawn
#

You dont have the 2 longs for period and delay

serene sigil
#

oh nvm

#

lol

serene sigil
#

right?

hasty prawn
#

if you want it to run every tick yes

late sonnet
#

so fast...

serene sigil
#

but still cant cancel

late sonnet
#

you call bukkittask.cancel()?

serene sigil
#

oh nvm i did this.cancel

#

ye now it works

tardy delta
#

there a scheduler method that takes a Consumer<BukkitTask>

glossy venture
#

isnt that new year listener in spanish

late sonnet
dense laurel
#

Can someone help me with this piece of code?
I'm trying to make a Chat-Color GUI plugin, where i can toggle Bold effect on or off. I can toggle it to on, but not Off.
I'm trying to replace the "ยงl" with "", but it doesn't work

glossy venture
#

imagine chinese characters

#

in the class name

late sonnet
#

xd

grizzled oasis
fickle mist
#

Hi all! I have a question how to disable the ability to pick up in the gui?

chrome beacon
#

Listen to the InventoryClickEvent

#

If you want to prevent people from putting in items you also need to listen to the InventoryDragEvent

fickle mist
chrome beacon
#

Check where the item is taken from

fickle mist
chrome beacon
#

Don't detect inventories by their name

#

Detect them by the inventory instance

fickle mist
chrome beacon
#

Not name

quaint mantle
#

how would i wait for a while loop? I wanna do like while (item.isAlive()) but with like a 1 second delay

serene sigil
#

how do u check if u put in an item in the 2x2 crafting grid in ur inventory?

undone axleBOT
quaint mantle
#

ik schedules but do i need to use it ;-;

#

nvm, i got an idea

chrome beacon
serene sigil
quaint mantle
#

mhm

serene sigil
#

it runs every tick

quaint mantle
#

ik

serene sigil
quaint mantle
#

ima do something like this

#
Item item = null;
        new BukkitRunnable() {
            @Override
            public void run() {
                if (item.isDead()) {
                    this.cancel();
                }
                item.teleport(location);
            }
        }.runTaskTimer(plugin, 20, 20);```
#

dont mind the null

serene sigil
quaint mantle
#

i was just doing a test

red sedge
#

if I update a variable inside an enum will it update for all instancers of that variant

chrome beacon
#

Enums shouldn't be updated

red sedge
#

why not

chrome beacon
#

It's a data type for constants

#

They don't change

serene sigil
chrome beacon
#

Check the slot number

red sedge
#

smth liek thisd i mean

public enum Ability { 
        ATTACK;
        
        private String title;
        
        Ability() {
            reload();
        }
        
        public void reload() {
            title = // data from config
        }
    }
chrome beacon
serene sigil
red sedge
chrome beacon
#

Trust me pulling the data constantly from the config is the least of your concerns when it comes to performance

#

Just make sure you don't read the config from file every time because that would be real bad

red sedge
#

alright

chrome beacon
#

amount - 1 doesn't do anything

red sedge
#

would it still be bad to have a gettitle method that pulls from the config

#

inside the enum

chrome beacon
chrome beacon
#

You can use it for the config keys but not the values

red sedge
#

oh im not using it for config values

#

i meant like

#

enum_variant: stuff

#

and then gettitle method would like do return config.get(this.toString);

chrome beacon
#

Just use a class

#

or an Enum with keys and a get method

#

That works too

red sedge
#

oki

#

ty

sacred mountain
#

ideas why this is giving an unboxing warning?

#

i dont see any unboxing

chrome beacon
#

It's because current is an Integer instead of an int

sacred mountain
#

changed the param same story

serene sigil
#

alright, this is more of a java question but whats the best way to store stuff that the data wont get reset when the plugin stops

chrome beacon
sacred mountain
serene sigil
#

anything easier?

sacred mountain
#

databases are relatively easy

#

you can try bukkits inbuilt yaml

serene sigil
sacred mountain
#

or even just serialize to json

#

but it depends on what u need it for

tardy delta
#

what kind of data

sacred mountain
#

persistent containers work too

chrome beacon
serene sigil
#

ye thats what i want to use it for

sacred mountain
#

huh

chrome beacon
serene sigil
chrome beacon
#

You probably don't want to store it to a file then

serene sigil
#

and whats the best way of doing that

chrome beacon
#

Because if you're going to check every player ever every tick you're going to kill the server

tardy delta
#

what player is holding a specific item? just check their mainhand?

chrome beacon
#

^

serene sigil
tardy delta
#

assuming they are online

#

just store a pdc flag then ig

sacred mountain
#

holding as in?

chrome beacon
sacred mountain
#

mainhand or in inventory

tardy delta
#

mye

serene sigil
#

and i need to detect if they have it in their inv

sacred mountain
#

or you could listen to the inventory events and check if the item is the dragon egg

serene sigil
chrome beacon
#

huh???

#

Why do you need an array list

serene sigil
#

for the player uuid

serene sigil
sacred mountain
#

what is this for

serene sigil
#

i said i tried it

sacred mountain
#

i think ur tryna do something

chrome beacon
#

ngl I don't understand how you're structuring your plugin

sacred mountain
#

that ur not explaining

chrome beacon
#

It seems overly complex for something so simple

tardy delta
#

just explain what you're trying to do

sacred mountain
#

just say what ur doing and what this dragon egg thing is for

#

yea

chrome beacon
#

I believe they're just trying to give a potion effect when the egg is in the inventory

#

At least that's what I understood from the previous conversations

sacred mountain
#

you could just do a periodic check like every few secibds using a scheduler theres no point having a per-tick thing for a potion effect

serene sigil
# chrome beacon It seems overly complex for something so simple

alright, basically what ive been coding the past few days is an item (compass) that tracks the location of the dragon egg, it tracks if its in the players inv, it tracks the ground, it tracks containers, it tracks everything u can think of... but whenever u have the egg in ur inventory u get +100 exp levels making the item very valuable, but if u drop it, then u loose those levels. so i actually could make all those things work but i have one problem: if some 1 has the dragon egg and the server restarts, then after the restart that player will have another +100 levels since the arraylist got reset

#

and thats my problem

#

so i need a way to store the players uuid externally

vocal cloud
#

Database or config?

serene sigil
#

i dont really have any experience with database so maybe ill go with config

#

actually i dont have experience in any of those lol...

sacred mountain
#

something like this

#

(i have not tested this)

serene sigil
#

so u need to use yml?

sacred mountain
#

not need, it's just easy if you don't know how else to save ur data

#

theres an official spigot tut

vocal cloud
#

Could even use pdc

sacred mountain
#

oops

#

well yes

#

but you would have to remove it constantly from the person who used to have the egg

#

nvm u can

sacred mountain
#

@vocal cloud's version also works

#

the 1 and 0 corresponds to true and false

#

without the need of a config file

chrome beacon
sacred mountain
undone axleBOT
sacred mountain
#

yeah but if theyre not using a file for anything else then theres not much point making a file system

chrome beacon
#

I mean I still don't see why an array list is needed

#

or why you need to save anything

sacred mountain
#

they want to know who has the dragon egg

quasi patrol
chrome beacon
#

and don't add extra levels if they have it

sacred mountain
#

it changes tho

#

during gameplay

#

as in if they give it to someone else etc

chrome beacon
#

Yeah you don't need file storage for that though

sacred mountain
#

through the proxy?

chrome beacon
#

You can use redis

#

Use Redis

sacred mountain
#

redis and mongodb fun

chrome beacon
#

for simple messaging you don't need mongodb

sacred mountain
#

yeah ik lol

chrome beacon
#

You could use that too but then you'd need to make a proxy plugin to pass along the data to each subserver

#

also it requires a player online to work

serene sigil
chrome beacon
serene sigil
#

oh..

#

and if they do add them in the arraylist?

chrome beacon
#

Why do you need an array list

#

Do you plan on tracking more than one egg

serene sigil
#

no, thats why u use the arraylist is cuz i constantly loop though the players and see if they have the egg, if they do, and they are in the arraylist they will not receive +100 levels (cuz if i dont have the arraylist thing then it will constantly give them +100 levels)

chrome beacon
#

So you don't need an array list

#

Just have a trackedPlayer variable

nimble hill
serene sigil
tardy delta
#

have an UUID stored telling who has the egg

serene sigil
#
public static void checkegg() {
        for (Player player1 : Bukkit.getOnlinePlayers()) {
            if (player1.getInventory().contains(Material.DRAGON_EGG) && !eggHoler.contains(player1.getUniqueId())) {
                player1.giveExpLevels(100);
                eggHoler.add(player1.getUniqueId());
            }

            if (!player1.getInventory().contains(Material.DRAGON_EGG) && eggHoler.contains(player1.getUniqueId()) && player1.getInventory().getItemInOffHand().getType() != Material.DRAGON_EGG){
                player1.giveExpLevels(-100);
                eggHoler.remove(player1.getUniqueId());
            }


            
        }
    }```
#

the code until now

#

eggHoler<UUID> (typo sry) is the arraylist

quaint mantle
#

Guys, Can I ask there's a way to set the amount of item upper 64?

serene sigil
#

nvm i forgor i changed it to a hashset so there are no dupes

#

also the whole method checkEgg() is in a loop

vocal cloud
quaint mantle
vocal cloud
#

Short answer yes. Long answer you probably don't want to

quaint mantle
quasi patrol
vocal cloud
#

Difficulty isn't the issue here. It's the fact of the matter which is that doing do so will produce unintentional side effects

sacred mountain
#

in a constructor which is better practise?

  1. using the parameter to supply a variable
  2. using the newly assigned this.variable

for example

public RandomClass(DynamicCoordinates coords, etc..) {
  this.coords = coords;
  this.initialX = coords.getX(); // OR this.initialX = this.coords.getX();
}```
#

i dont really see the difference because in my experience both have worked

vocal cloud
# quaint mantle is it too difficult ?

It's buggy because Minecraft doesn't have code to specifically allow it so when you modify it it will "work" for most things but there will be a lot of edge cases that do not.

quasi patrol
quaint mantle
vocal cloud
#

There's a way to do it but it's going to result in a lot of potential bugs to which you may be unable to fix

quaint mantle
#

thank you for answer! 100% get it

echo basalt
#

Here's a valid solution if you really need it

#

If you're having issues because the field is final, you can use Unsafe to modify it

quaint mantle
#

is it support 1.19.2??

echo basalt
#

try it and see

quaint mantle
#

Thanks for help ๐Ÿ™‚ I'll try it tomorrow!

serene sigil
#

why doesnt this work?

iron glade
#

never seen a static event

mighty pier
#

error?

serene sigil
#

no it just doesnt show up

mighty pier
#

oh

#

lmao

#

why is it static

iron glade
#

registered event

serene sigil
#

ye

mighty pier
#

add a debug to see if the event works

#

maybe you forgot to add config.yml or register it in the onenable

#

e

#

a

#

sports

#

i watched it in a tutorial and i do it every time

#

omfg

tardy delta
#

it doesnt do anything if not setting defaults

mighty pier
#

it returns

quasi patrol
mighty pier
#

boolean

glad prawn
#

copyDefaults(bool)

mighty pier
#

yes

#

i did that

#

now

chrome beacon
sacred mountain
#

what's the equivalent of this in code

#

i've got this but i'm not sure what extra does

mighty pier
#

you have to use packets

sacred mountain
#

no i've used the inbuilt particles before lol

fluid river
#

hu tagged me

mighty pier
#

ea

sacred mountain
#

i'm just wondering what the extra and data does

#

iirc data is speed

mighty pier
#

i say data, not data

sacred mountain
#

nvm it says extra is speed

mighty pier
#

why is getting plugin instance better from a method than a variable?

chrome beacon
quasi patrol
#

?