#help-development

1 messages · Page 631 of 1

spare hazel
#

dude i give up i will just find one on black spigot
idc if it has viruses

remote swallow
#

what are you even making

kind hatch
#

Either a premium plugin that requires manual compilation for non buyers.
Or an addition to an old plugin.

spare hazel
remote swallow
#

does a plugin already exist that adds the trails?

spare hazel
#

but it has a bunch of other unnecesary stuff including the spooderman set which litteraly destroys the game mode im making

spare hazel
remote swallow
#

oh no?

lost matrix
#

You want this guy to shade in his library instead? 😄
Having 3mb on each plugin instead of a 2.9mb lib and several 0.1mb plugins.

spare hazel
#

why is a core plugin even needed? cant he just do everything inside of the plugin? im sure only %5 of the 2.9MB plugin is needed for the particle plugin to work

remote swallow
#

its a library

#

do you think people rewrite every util method they ever use

ivory sleet
#

did u by any chance use reflection to get the data from the packet fields

#

or did you just edit raw bytes

lost matrix
#

let me check

#

Wait

#

I most certainly did not read the bytes. That would be insane.
You would have to use a pipeline component of netty to deserialize them again.

ivory sleet
#

yeah alr alr

#

cuz iirc both packet events and plib do use reflection

flint coyote
lost matrix
flint coyote
#

I am aware of that. I just wanted to mention it

kind hatch
#

Bukkit#getOfflinePlayer(String name) would like to speak with you.

lost matrix
#

I mean this one is just abuse of the deprecation tag...

#

Like painting a skull on something so that children dont use it. But in reality its usage is just a bit tricky.

sinful edge
#

Looks like this was a mistake. In the history of the chunk format site they changed it to "X, then Z, then Y" on 03:26, 27 June 2020.

kind hatch
lost matrix
#

lol

remote swallow
#

thats how we should deprecate stuff from now on

#

fill the jds with skulls

flint coyote
#

Well it might be deprecated but it isn't marked as "will be removed"

#

Therefore it is kinda fair to say "Should not be used since there's UUIDs"

kind hatch
#

I think there's an @Use tag that could have been utilized.

#

The problem with that method specifically is that it has valid usecases. It's just that the majority of the time, you want to be using UUIDs.

#

It shouldn't be deprecated, but marked some other way.

#

Not sure if there's an existing annotation tag that covers this specifc case though.

flint coyote
#

I wouldn't say there's a need for a specific annotation. Just mention it in the javadoc

lost matrix
#

I would prefer one because my sonar settings wont let me compile while using deprecations unless i manually exclude classes...

grim ice
#

any ideas on a good obfuscating method?

#

just ideas are fine

flint coyote
#

Can you add single methods or only classes?

flint coyote
grim ice
#

Im serious lol

kind hatch
#

Honestly, not bad advice for a language that isn't made to be obfuscated.

flint coyote
#

Do you want to code a method to obfuscate or what do you mean by "obfuscation method"?

grim ice
#

I need a method, that i can implement to make a long lasting obfuscator

#

just an idea

#

of how to make it harder for people to deobfuscate

lost matrix
#

Just use an obfuscator?

grim ice
#

Easily deobfuscatable

#

even a toddler can crack it, in most cases

flint coyote
#

in that case: Don't use java

grim ice
#

when you have 50 people striving to crack it

#

public obfuscators arent really an option

kind hatch
#

You're not going to stop determined people though. :p

grim ice
#

nah

kind hatch
#

Especially with this language.

grim ice
#

im gonna make their life extremely hard

#

thats all

worldly ingot
#

So long as you're aware that you're coming into a community built exclusively on open source software to ask if there's a way to obfuscate closed source software

clear panther
#

Hello i made a plugin that spawns bosses and theres only some of them work another just send the usage
like /FR
but the question is i used all stuff correctly i registered all command and event and write command on plugin.yml
still doesnt work HELP

grim ice
#

e.g Rijndael's key schedule isnt uncrackable

flint coyote
#

The possibly best obfuscation that you can have for java is annoying variable names and spaghetti-code. You can't go as far as to encrypt it

grim ice
#

its just extremely tedious to solve it, and needs a lot of power

clear panther
kind hatch
#

Make a translator that obfuscates it into emojis.

grim ice
#

I just wanna learn how to make one

grim ice
lost matrix
flint coyote
clear panther
worldly ingot
kind hatch
#

At least if it was converted properly.

flint coyote
#

you can't just translate

public static void main...
to
☺☻♥♦...
and expect it to work lol

lost matrix
kind hatch
lost matrix
flint coyote
#

I thought we are talking about java here?

lost matrix
#

?codeblocks

undone axleBOT
grim ice
#

so its easy to reverse

kind hatch
flint coyote
lost matrix
clear panther
# lost matrix ?code

uh i created 9 bosses and 4 doesnt work soo u want full code? or just the main class and plugin.yml or u want pom or smh?

lost matrix
#
java.lang.IllegalArgumentException: The skull profile is missing a name or textures!

You sometimes can take exceptions literally. Add a name or textures to your profile before applying it on a skull.

remote swallow
#

is that below 1.18.1

grim ice
remote swallow
#

is it still below 1.18.1

clear panther
#

i think u can just spawn a fake player and make them send packet

remote swallow
#

if it is theres a better way

clear panther
grim ice
#

Ugh

clear panther
# lost matrix Just the command

Objects.requireNonNull(getCommand("kit")).setExecutor(new Kit());
getServer().getPluginManager().registerEvents(new Kit(), this);
Objects.requireNonNull(getCommand("ZW")).setExecutor(new ZoneWarrior());
getServer().getPluginManager().registerEvents(new ZoneWarrior(), this);
Objects.requireNonNull(getCommand("Titan")).setExecutor(new Titan());
getServer().getPluginManager().registerEvents(new Titan(), this);
Objects.requireNonNull(getCommand("fr")).setExecutor(new Sword());
getServer().getPluginManager().registerEvents(new Sword(), this);
Objects.requireNonNull(getCommand("ac")).setExecutor(new AncientSkeleton());
getServer().getPluginManager().registerEvents(new AncientSkeleton(), this);
Objects.requireNonNull(getCommand("Skilra")).setExecutor(new Skilra());
getServer().getPluginManager().registerEvents(new Skilra(), this);
Objects.requireNonNull(getCommand("TD")).setExecutor(new TheDupe());
getServer().getPluginManager().registerEvents(new TheDupe(), this);
Objects.requireNonNull(getCommand("SE")).setExecutor(new SoulEater());
getServer().getPluginManager().registerEvents(new SoulEater(), this);
Objects.requireNonNull(getCommand("levi")).setExecutor(new levitation());
getServer().getPluginManager().registerEvents(new levitation(), this);
Objects.requireNonNull(getCommand("TE")).setExecutor(new TheEnd());
getServer().getPluginManager().registerEvents(new TheEnd(), this);
Objects.requireNonNull(getCommand("VD")).setExecutor(new VoidDragon());
getServer().getPluginManager().registerEvents(new VoidDragon(), this);
}

@Override
public void onDisable() {
    // Plugin shutdown logic
}

}

clear panther
# lost matrix Just the command

name: SkyMine
version: '${project.version}'
main: com.github.cutealpacafr.skymine.SkyMine
api-version: 1.18
commands:
kit:
description: Your description
usage: /kit
ZW:
description: Your description
usage: /zw
Scroll:
description: give you scroll
usage: /Scroll
fr:
description: Your description
usage: /fr
Titan:
description: spawns titan
usage: /Titan
AC:
description: Your description
usage: /ac
Skilra:
description: SKilllllra
usage: /Skilra
TD:
description: the dupe!
usage: /TD
SE:
description: se
usage: /SE
levi:
description: se
usage: /levi
TE:
description: se
usage: /TE
VD:
description: se
usage: /VD

undone axleBOT
lost matrix
#

Paste the commands that dont work.
And make sure to send any exceptions

clear panther
kind hatch
#

I think I found out why there is no easy javadoc parsing discord bot. Turns out everyone does their javadocs differently!
The HTML is the pretty much the same, but the css class names used vary from project to project without any form of consistency.
So now I have to write pretty much everything from scratch. :3

#

Fucking kotlin.

#

MySQL?
It's all HTML though....

lost matrix
#

Lets start with just one

grim ice
#

Question, would obfuscating an already obfuscated jar file 100 times, make it harder to deobfuscate?

lost matrix
#

No

grim ice
#

💀

#

worth a shot

kind hatch
#

That would likely just cause it to not work at all.

grim ice
#

Made sense though, since if there was an algorithm to crack it, it work for any amount of obfuscations

waxen plinth
#

it's like asking if scrambling a rubik's cube 100 times is better than scrambling it once

waxen plinth
#

stuff like that tends to be probabilistic in nature

kind hatch
waxen plinth
#

20

lost matrix
#

Imagine having to wait 20mins to find out what your exception does even with the keys at your disposal

lost matrix
grim ice
#

I would be lying if I said I fully understand what you told me to do

#

I know whats C, dlls and JNI calls, but in which way does that solve my problem

waxen plinth
#

write some stuff in rust*

lost matrix
#

You cant reverse engineer compiled binaries

waxen plinth
#

native binaries are much harder to decompile

grim ice
#

Since I would need a verification system in there

#

to check if the user should be allowed access to the program or not

lost matrix
#

I mean you can but its really really fking hard

lost matrix
grim ice
waxen plinth
#

what're you making with bevy

grim ice
#

i thought u were banned

waxen plinth
#

yeah I was banned

kind hatch
#

Fuck it, make your plugin borderline malware by having it download an obfuscated jar, loading it into memory, and then scrambling itself every 3 seconds.

waxen plinth
#

they banned me for being too cool

#

they've definitely removed plugins from the spigot forums for less

lost matrix
# waxen plinth what're you making with bevy

https://www.youtube.com/watch?v=iScy18pVR58

We are rewriting this so we can let our chess bots battle in a small tournament

Hello! Here's a little coding challenge for anyone who'd like to take part: you have until October 1st to create a tiny chess bot in C# using the framework linked below. You can find more details about the challenge on that page as well.
https://github.com/SebLague/Chess-Challenge

Chapters:
0:00 Intro
0:28 MyBot.cs
1:10 Bot Brain Capacity
2:43 ...

▶ Play video
remote swallow
#

who is we

waxen plinth
#

oh nice

#

that sounds like a really fun project

lost matrix
#

Me and some fellow students. We all chose Machine Learning, Applied Statistics and Computer Vision last semester
and wanted to see if we can use that knowledge for some fun 😄

waxen plinth
#

code golf with tokens instead of characters seems better

#

you could probably make a minimax in that pretty easily

grim ice
#

I LOVE THAT DUDE

#

my whole day gets lightened when he uploads

grim ice
#

since the obfuscated jar

#

could be stolen

#

from ur code

#

that doesnt work

lost matrix
grim ice
lost matrix
#

I said that half jokingly

grim ice
#

hmm

#

what if i like

#

encrypt code

#

then encrypt the encrypted code

#

for like

#

100 times

#

and have a list of 100 keys

#

then list them all in an array

#

then encrypt it

#

that would still be useless right?

kind hatch
#

You'd need 100 different encryption methods. Not to mention they would have to produce a result that still follows java rules.

#

Many encryption hashes end up with numbers at the front.

grim ice
#

yes the result is unobfuscated code

grim ice
grim ice
waxen plinth
#

2hex what is your obsession with obfuscation

grim ice
#

since the encryption method is still gonna be available

grim ice
waxen plinth
#

by what

grim ice
#

that i know nothing about this

waxen plinth
#

obfuscation sucks tbh

#

generally I don't think there is a good reason to do it

grim ice
#

still, its something i want to learn

grim hound
#

I'm trying to let Essentials or basically any other plugin register their command and not let my own commands override them. But for some reason (Essentials in particular) it seems that it doesn't even attempt to register their own commands and my plugin ends up overriding them no matter what

#

what the f-

kind hatch
#

Essentials does that on purpose.

grim hound
#

E

#

But it somehow does it before even anything has happened

waxen plinth
#

it could be reading your plugin's description and see that it's going to register commands

grim hound
#

mother hacker

kind hatch
#

Or just loading after.

grim hound
#

but I want it to override my commands, not the other way around

waxen plinth
#

this seems like a good time to advertise my libraries

grim hound
#

It's somehow always [My plugin's name]

#

'e' is the command executor

waxen plinth
#

just make a command framework

grim hound
kind hatch
#

Do we still not have a way to set command priority?

grim hound
#

I made my loadbefore so his commands could register later and override mine, but somehow it seemed to have never registered

waxen plinth
#

huh

#

wouldn't you want essentials to load first

#

I'm pretty sure it's first to register, not last to register, that stays

grim hound
#

like it's overriding it's own plugin.yml

grim hound
#

but no, I'm pretty sure it's the last one

kind hatch
grim hound
#

what do I dooo

grim ice
grim hound
#

maybe I should ping md5? He did this plugin, he should know

grim ice
#

so that the only key that could decrypt it is the mac address of the user

#

and if one was to advertise the decrypted version

#

it would leak their mac address

kind hatch
kind hatch
#

???

grim ice
#

i mean the program

#

ttake the user's mac addresss

kind hatch
#

How do you expect to recompile the plugin on their computer??

grim ice
#

U can still leave traces to a jar file

#

on the fly

#

cant you?

#

and thats not what i meant to do

#

basically i would have a jar file

#

which i give to users

kind hatch
#

You do realize that you're entering malware territory now right?

grim ice
#

nah

grim ice
#

they will legally claim

#

that i am allowed to do this

#

assuming i am allowed to do all of this

#

this should work right

#

but

#

they would end up using it in a virtual machine

hybrid spoke
#

tf are you trying to do

kind hatch
#

Bruh. 💀
How is this not malware at this point. xD

If I'm booting up VMs to test a jar file, I already know it's got something in it.

shadow night
#

lmao

grim ice
#

significantly harder

hybrid spoke
#

then dont use java

grim ice
#

I need to use java

hybrid spoke
#

just obfuscate and turn it into exe

shadow night
#

I wish my internet worked

grim ice
#

the framework im using requires java

hybrid spoke
#

or just share your code

#

your code wont be some nasa logic nobody should know

hazy parrot
#

why do you want so hard to hide your code

grim ice
#

Lets not get into my reasoning

vast ledge
hybrid spoke
hazy parrot
vast ledge
#

but a simple obscufation layer should do

grim ice
vast ledge
#

Theyd just upload the plugin to black spigot

grim ice
#

using a random online deobfuscator

vast ledge
#

whats the point

grim ice
#

it is not a plugin

hazy parrot
#

doens't matter how good obfuscation is, if someone wants to crack it, he will crack it

hybrid spoke
#

and build out everything you put in

vast ledge
grim ice
#

But i would love to make their life harder

#

so that it atleast takes a lot of time to deobfuscate

#

OH OH

vast ledge
#

You do know, they can just upload the entire jar

grim ice
#

maybe

vast ledge
#

and they can just decompile

hybrid spoke
#

even the point that you think it is interesting enough to be deobfuscated

kind hatch
#

You're contradicting yourself here.

If you want to make it harder to deobfuscate, how will it be easy to deobfuscate?

grim ice
#

i can make it so the first time they run the jar, it inserts a hidden task in their device, that would stop any packet that contains the jar file or something that resembles it?

vast ledge
grim ice
#

i profited 30k off this

grim ice
#

so

hybrid spoke
grim ice
#

idk what to tell ya

vast ledge
#

Do you know any software

grim ice
vast ledge
#

that does this?

grim ice
#

if its useless

vast ledge
#

no

#

because theres no point

grim ice
grim hound
#

Is pinging md5 against the rules?

grim ice
vast ledge
#

Idk

remote swallow
vast ledge
grim ice
#

malware if provided with consent is legal

grim hound
#

well the f- it

hybrid spoke
#

lmao

vast ledge
kind hatch
grim ice
#

and how is this even malware

hybrid spoke
#

i mean try your best, but as it seems you wont receice any help here since its stupid

vast ledge
#

There, comes vilsibility again, youre asking a user, to give up there right to make claims against you, and allow you to run background tasks, which they dont know which ones because you cant tell them or they would diable them

vast ledge
#

No

grim ice
#

rip

vast ledge
#

It pointless

hazy parrot
#

just make it oss smh

kind hatch
grim ice
#

There are many people

#

that achieved this

vast ledge
#

Why

#

What is the point

grim ice
#

and nobody could deobfuscate their file for years

vast ledge
#

Yea

#

now

#

any newer computer

hazy parrot
vast ledge
#

has the power to deobscufate the shit in less than a day

#

And the Obscufation would take so long

#

That there is just no point

shadow night
#

very true

grim ice
#

There is apoint

#

god, im not asking for an impossible to reverse obfuscation

hybrid spoke
#

there isnt

grim ice
#

Just to the point it would be annoying to reverse

grim ice
hybrid spoke
#

you are asking for malware help bro

grim ice
#

Im not asking for malware help brother

#

that was an idea

vast ledge
#

And You already come on with "I have to obscufate my Code", the user is going to say, oh what is the company trying to hide, are they using my computer in a botnet, because they want to run backround rasks?

kind hatch
grim ice
#

which would be consented to

shadow night
hybrid spoke
#

i think a good placed grow up is needed here

vast ledge
#

Yea

grim ice
vast ledge
#

Blyat

#

There is not point

#

Just take the fact

shadow night
hybrid spoke
#

afk

grim ice
vast ledge
#

Why again

#

are you on the spigot discord server

#

asking about file encryption

grim ice
#

where else am i gonna ask

shadow night
vast ledge
#

and or obscufation

kind hatch
shadow night
vast ledge
shadow night
#

can't even laugh in spigotmc

grim ice
fluid river
#

what u guys doin

grim ice
#

i expected at least one person to help

#

damn it

vast ledge
#

We aint helping

#

Somethign seen from a legal standpoint

grim ice
kind hatch
#

Help develop malware?

vast ledge
#

is viewed as malware

grim ice
#

again this is not malware

hybrid spoke
#

take it as that

shadow night
kind hatch
grim ice
hybrid spoke
#

that we dont fulfill your pointless wish

grim ice
#

WTF

shadow night
#

I'm not trying to hate, but they don't like you here

#

leave if you don't want a lil hole in your head

grim ice
eternal oxide
#

I like 2Hex fine enough

vast ledge
#

Ok, im going to explain this is simple words, If you are trying to run background tasks, obscufate files beyond reading, you are attempting to save peoples mac address, you are commit a crime, you are writing malware

grim ice
#

:D

shadow night
#

I didn't know

vast ledge
#

Idk

grim ice
#

if anything, i would say that this idea itself has a bad stigma to it

remote swallow
#

ur a malware

vast ledge
#

But Taking a persons data without there consent

#

Isnt legal

grim ice
#

???

shadow night
#

google

grim ice
#

if they consent to it, it is not malware

vast ledge
#

Nobody is going to consent to give away there personal Data

grim ice
#

On a theoritical situation where they do

kind hatch
eternal oxide
#

Rootkits. Sony installed backdoors and malware with owners permission

vast ledge
#

What code did you write that has to be fricking encrypted, the nuclear launch codes?

grim ice
#

it is not without consent

kind hatch
eternal oxide
#

also recently a laptop manufacture was found to be installing a root certificate on all their laptops to give a backdoor

kind hatch
#

There is no reason for a Minecraft Plugin to be installing system services and grabbing system information such as MAC addresses.

grim ice
#

Yall just ignore that the CIA

eternal oxide
#

began with an L is all I remember

shadow night
grim ice
#

installed recorders in smart TVs

shadow night
#

or am I high?

kind hatch
#

No, he wants this to be a plugin.

grim ice
#

its public info, so nobody can do shit about this really

kind hatch
#

Jar file and all.

shadow night
grim ice
#

Not a plugin btw

shadow night
#

wait so I'm not high?

kind hatch
#

Then wtf are you asking for?

grim ice
#

You are not high

#

a jarfile, ran within a framework

shadow night
#

or am I so high I saw the future?

grim ice
#

that would be difficult, and or annoying to deobfuscate

vast ledge
#

Ok

grim ice
#

obviously it cant be impossible to

vast ledge
#

what the actaul fuck are you trying to make

grim ice
#

but just difficult is enough

eternal oxide
#

Lenovo, and Dell

kind hatch
eternal oxide
#

I just googled

vast ledge
#

What is the service you are offering

grim ice
vast ledge
#

Its not

grim ice
#

however, it's quite demanded so Im sure they would agree to anything

vast ledge
#

Are you trying to make some software?

kind hatch
#

Cheating software?

grim ice
#

No

kind hatch
#

Crypto miner?

grim ice
#

If i want to make cheats, i aint making it in java

#

💀

shadow night
vast ledge
#

nodejs

grim ice
remote swallow
#

what can you even be making that you need it to install malware (even if you get end user consent)

vast ledge
#

Not even the anti cheats softwares

kind hatch
vast ledge
#

That go to kernel level

eternal oxide
#

Help him or not but arguing will not change his mind. I don;t help with anythign possibly illegal but I'd suggest you either help or ignore.

vast ledge
#

do that type of shit

spare hazel
#

do you guys think hypixel used spigot as their base for their custom server software or something else?

vast ledge
#

Yes

grim ice
#

yall just heard me say one suspicious thing

grim ice
#

and assumed im comitting a federal offense

vast ledge
#

Creating malware is a federal offense

#

Installing**

shadow night
fluid river
remote swallow
vast ledge
#

They run on 1.8 rn right?

remote swallow
#

they run modified 1.7.10

shadow night
#

like, python is made for all the stuff, but bro, nodejs isn't made for any manipulations of the system in any ways besides well files. No cursor tracking or anything

grim hound
#

How can you identify a player which sent a PacketPlayInEncryptionBegin (using ProtocolLib)? The username from 1.20 is 'UNKNOWN' for some reason making the LoginStart packet pretty useless and the uuid is not yet initialized.

grim ice
vast ledge
#

In canada

grim ice
#

Consent matters

vast ledge
#

are you in canada?

grim hound
#

is saving the player var to a set the only way?

grim ice
#

I live in africa

#

how bold of you to think there are enforced rules here

shadow night
grim hound
grim ice
#

Well, does anyone know a server in which I can find people that are willing to help?

vast ledge
#

No

echo basalt
#

With?

echo basalt
#

some of us got absolutely no context

#

I just got home

vast ledge
#

Trying to find a server that will help him create malware

kind hatch
#

He's creating malware.

grim ice
#

I am trying to create a difficult to reverse obfuscator

#

I am not creating malware

#

i swear

#

😭

echo basalt
#

ask optic lm ao

kind hatch
#

xD

vast ledge
#

Running backround tasks, that are invisible to a user, saving there mac

grim hound
echo basalt
#

there's no reason to run obfuscation

grim ice
#

I know

vast ledge
#

THATS WHAT I SAID

echo basalt
#

if you actually trust your own code

grim ice
#

but thats not the point

echo basalt
#

it kind of is

#

XY problem

#

no reason to be doing X so we won't help you with Y

vast ledge
#

He wont even tell us what hes making

grim hound
grim ice
#

I already came to the conclusion

echo basalt
grim ice
#

that I need to do this

vast ledge
#

Why

grim ice
#

you dont need to care about why im doing this

hybrid spoke
echo basalt
#

but it gives you no player context

hybrid spoke
grim ice
echo basalt
vast ledge
echo basalt
#

simple enough

vast ledge
#

Yep

grim ice
hybrid spoke
#

lmao

grim hound
grim ice
#

I'm not saying im entitled to any help lmao

grim ice
#

just say no, and speak for yourself

vast ledge
#

I still dont understand why you are on a serveres software discord, asking about file encryption, obscufating, creating malware etc.

shadow night
#

2Hex I told you to just leave this discussion a while ago, that'd be better for the mental health and stability of all of us

hybrid spoke
twin venture
#

hi nop question , will this stripe the string from any color codes

#

ChatColor.stripColor(tag)

grim hound
#

for some reason

echo basalt
kind hatch
echo basalt
#

if you want to strip color codes

kind hatch
#

It won't remove hex codes.

echo basalt
#

You translate the color codes before stripping

twin venture
#

so if i do :
&7Admin , it will only send Admin

kind hatch
#

Yes

twin venture
#

alr thanks that what i want :p

echo basalt
#

yeah you translate and strip

vast ledge
#

You might have to translate it before

#

so

#

ChatColor.translateAlternatColorCodes('&', urString);

#

and then strip

twin venture
#

naa , iam creating a guild system and each guild have a tag and there is a custom value for Color so each tag have its own color

echo basalt
#

man knows how to translate a tring

twin venture
#

./guild color colorcode

high pewter
#

Is there a static field for or a function to get the default config file name (or even better, the File object)? I'm using Jackson to deseriallize it, so I need to obtain a File object, but it feels wrong to hard-code "config.yml" lol

vast ledge
echo basalt
#

Jackson is a json lib

twin venture
#

but when creating a guild , there was a glitch admin can create a guild with a color code ..

high pewter
echo basalt
#

huh

shadow night
#

did you install a trojan for fun on your friends computer?

vast ledge
#

yes

high pewter
vast ledge
#

i installed a few of them

kind hatch
#

Me hacking the neighbors wifi

vast ledge
#

if i read correctly

high pewter
shadow night
#

the only thing I installed on my friends computer is a teamspeak 3 server and a linux vm

vast ledge
#

then get the file

echo basalt
vast ledge
#

from file configuration

shadow night
kind hatch
#

Should have done it for him. lmao

high pewter
vast ledge
#

check the docs

high pewter
grim hound
high pewter
high pewter
grim hound
flint coyote
high pewter
#

Oh lol

flint coyote
#

you could get it via reflection, too

kind hatch
#

You're expected to provide a file in the first place.

File file = new File("file.yml");
FileConfiguration config = YamlConfiguration.loadConfiguration(file);
grim hound
#
    private static File getWithJarCompiledFile(File copyInto, String name) {
        try (InputStream in = Main.class.getClassLoader().getResourceAsStream(name)) {
            Files.copy(in, copyInto.toPath(), StandardCopyOption.REPLACE_EXISTING);
            return copyInto;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
flint coyote
#

what do you think? "config.yml" won't be there "magically"

high pewter
grim hound
kind hatch
high pewter
grim hound
#

Wait wait wait

#

you feel wrong to 'hardcode' config.yml?

flint coyote
grim ice
#

OH

#

cant i just compile the bytecode to llvm ir?

#

that should stop casual users from succeeding

kind hatch
#

You might as well just write in a different language at that point.
Please stop asking here.

high pewter
# grim hound you feel wrong to 'hardcode' config.yml?

It's generally a bad idea to hard-code stuff from another API. For the same reason even though you could just use the value 3 instead of EntityType.ELDER_GUARDIAN since Enum values are literally just numbers, but that's a bad idea because, for example, that value could be updated

flint coyote
#

also there isn't a valid reason to do so

high pewter
#

Same with hard-coding the maximum int size. Even though it's always gonna be 0x7fffffff, you use Integer.MAX_VALUE instead

flint coyote
#

Generally you are right

grim ice
flint coyote
#

But for this part it really doesn't matter

kind hatch
vast ledge
grim ice
#

🤦🏻

vast ledge
#

Now stop

grim ice
#

When did i say im making malware

vast ledge
#

fighting

high pewter
vast ledge
#

with us

grim ice
#

please, just tell me

#

when did i ever say im making malware

vast ledge
#

The description yo are giving

#

is malware

grim ice
#

that was an idea

#

to encrypt something

flint coyote
kind hatch
#

> Quote

flint coyote
#

Oh, thx

grim ice
#

but that doesnt explain the unusual hatred for closed source code

vast ledge
#

We dont like it

flint coyote
grim ice
#

reason being?

vast ledge
#

Why are you trying to hide code

grim ice
#

so people dont copy it

vast ledge
#

We like open source, that what our entier community isbuilt on

grim ice
#

before you say no one cares about it, they do

vast ledge
#

Spigot is the only reason we can make plugins

#

Minecraft Is closed source

grim ice
#

does that mean i hate closed source? no

high pewter
vast ledge
#

cries

flint coyote
#

I don't go into a vegan store and ask them what meat they recommend either.

vast ledge
#

🤣

high pewter
#

Honestly not against closed-source (though I do love open-source) but I do love myself a good analogy lol

grim ice
#

But im here because the people here might know something about it

#

its like how a vegan, might also know where to buy meat in a city

high pewter
#

Using Fabsi's analogy, vegans often know a lot about meat too, but you still wouldn't ask them (at least not just because they're a vegan)

flint coyote
#

Also a bunch of people already mentioned that java is not meant to be obfuscated. The best you can do is encrypt your code and decrypt it during runtime with your own class loader.
And yes people can still crack it

grim ice
#

and could recommend you a store

grim ice
#

I know that its never impossible to crack obfuscated software

#

But all i wanna do, is make it annoying

kind hatch
#

Ok, but installing system services is not the way to go about it.

flint coyote
#

As I already stated - what I just said + the public obfuscators is the best you get

#

And that's enough to get rid of script kiddies - actual engineers, not so much

high pewter
#

2Hex it's not really a Spigot-specific question anyways. If you're looking for a server with loads of people who might know how to obfuscate Java, why not just a generic Java server lol

high pewter
#

Literally just search "Java Discord server", there's plenty (including one I think is official)

flint coyote
#

I just wanna add that commercial java software is usually delivered as an unencrypted docker image or jar file

high pewter
#

I'm not gonna name a specific one cos I'm not sure what this server is like about advertising (I wish they would just repeat the forum rules in #rules instead of just linking to it...)

kind hatch
high pewter
#

Oh? I did actually just look at the rules out of curiosity and it said no advertising whatsever so now I'm confused lol

kind hatch
#

Well, advertising boils down to intent. Are you encouraging everyone who sees the link to join the server?

high pewter
#

Fair enough haha

flint coyote
#

Hopper you haven't said ? in general yet.

silent steeple
#

How do I get more then 16 lines on a scoreboard

#

Or do I need to use custom Minecraft server implementation

steep scroll
#

how to code spleef kill credit plugin

flint coyote
silent steeple
#

Seen it on other server

#

(S)

flint coyote
#

Then that's probably because the client only supports 16 lines. You are out of luck

#

Would require a mod on the clientside

lilac dagger
#

why not create pages that you change every once in a while?

flint coyote
# steep scroll how to code spleef kill credit plugin
if (player.getLocation.getY() <= playAreaHeight) {
 // player died
}
``` And then probably keep track of which block was broken by which player and the time.
If the block was broken more than 1-2 seconds ago I would not let it count for the kill since the player might as well have failed parcour.
silent steeple
flint coyote
#

dig deep into forge

silent steeple
#

Forge?

#

I need vanilla

flint coyote
#

forge is the modding api

#

They use vanilla code as a base

#

So there you can check whether it's limited in vanillas code

high pewter
silent steeple
onyx fjord
flint coyote
silent steeple
onyx fjord
silent steeple
#

Ok can I see it

onyx fjord
#

yes you gotta decompile

silent steeple
#

Liar

onyx fjord
#

???

flint coyote
#

???

high pewter
#

My guy, vanilla Minecraft doesn't let you do more than 16 lines, so a server can't force the client to see 16. You could maybe "fake" more by using a texture pack at best

onyx fjord
#

not again

flint coyote
#

xD

livid dove
silent steeple
#

I want proof

young knoll
#

I thought it was 15

#

Either way, have you seen a big server with more?

#

No?

#

I wonder why

high pewter
#

I think it's 15 scores + 1 line from the title

flint coyote
livid dove
# silent steeple I want proof

That has got to be one of the most moronic things ive ever heard.

You are in the spigot help dev chat. The documentation exists, the wikis exist.

Im ngl, i rarely go off politeness but sod off with that stuff man

#

Go screw around with it yourself if you dont believe us

vast ledge
#

So you came onto a spigot dev server

#

asked

#

us

#

And when the people who usually have 2-3+ years of expierience

#

tell give you an anwser

high pewter
#

Actually, I think you can get 17 by using a team-specific slot and adding all players to that team lol

vast ledge
#

you dond believe us

livid dove
vast ledge
vast ledge
livid dove
#

Clearly faked

#

fr fr

vast ledge
#

You fake

livid dove
#

throw new FakeDevException

high pewter
#

My guy would deobfuscate it then think the deobfuscator was lying to them. Then they'd find a way to use a microscope to look at the bits themself then think their eyes are lying to them and it's an optical illusion

livid dove
#

"hey guys, how do I turn minecraft into call of duty warzone in perfect 4k, the documentation says it doesnt do that, but I dont believe it"

silent steeple
#

I found the method to get more then 16

high pewter
#

tbf I don't think the documentation says it doesn't do that anywhere

livid dove
high pewter
livid dove
#

And what is the max with this new method?

vast ledge
#

You can rotate through them

#

if you want more

#

but that still only gives a max

young knoll
#

You could technically have more with custom fonts

livid dove
#

I mean im just here waiting to see his method

#

genuinely curious now

high pewter
#

They're probs only saying it to prove they're right without giving the proof they've been asking of us the whole time lol

vast ledge
vast ledge
#

Idk how he did it

livid dove
#

Anyone can be wrong

#

even us

#

So ill wait and see

vast ledge
#

It still scrolls

#

You can havbe more lines

#

but you can only display

#

X amount

eternal oxide
#

Scoreboard size is client side. no length is ever sent to the client

vast ledge
#

so 15

livid dove
#

@silent steeple , would you be able to enlighten us please?

silent steeple
#

You can add as many lines as you want to the list

flint coyote
silent steeple
#

But due to client side bullshit it is not rendered

vast ledge
#

but you can only display 15

livid dove
#

....

flint coyote
#

Isn't that what we told you? lol

vast ledge
#

THATS WHAT I JUST SAID

silent steeple
#

But

livid dove
#

I believe this is the moment you go "sorry guys i was wrong"

#

"This was a learning experience and we can all learn from it humbly and productively"

silent steeple
#

Wrong about what

#

Anyone can make shit up without backing it

#

Had to double check 💯

vast ledge
#

Now stop trying to be a smart ass, and just admit, that the people that have been working with this enviroment for alot longer then you probably know what there talking about

silent steeple
#

Environment*

flint coyote
#

oh wow

vast ledge
#

go*

silent steeple
#

It goes full circle

vast ledge
#

?

silent steeple
#

You teach me one thing I teach you another

vast ledge
#

Ok, but if you dont want to learn, why are you here

flint coyote
silent steeple
#

Who said I don’t

livid dove
# silent steeple It goes full circle

Stackz, you were wrong, you came to a channel with very experienced spigot devs.

Yes, we may not know everything all the time. But you dont go "i dont believe you" when 4-5 people all concur with the same reasoning.

Your skeptisism is healthy in terms of academia.
But, i'll risk the temp mute to say what everyone else is probably thinking, and a lesson i hope you take away from this more than anything else.

Respectfully, you were an utter twat about it, and it isnt a good look.

vast ledge
silent steeple
vast ledge
#

all that*

livid dove
vast ledge
#

Is that the short for tldr

silent steeple
#

You play stonework’s?

vast ledge
#

I though it was different

silent steeple
#

Do you know mr albus

livid dove
#

I havent played stoneworks in a long ass time.

vast ledge
livid dove
#

Its a toxic cesspool with corrupt ass staff

silent steeple
#

Yeah I got false banned for xray cuz I got lucky

#

While admins spawn in netherite for their friends

#

Vpns do tend to work on there tho

livid dove
#

Nah u 100% xrayed.

Their staff are utter morons when it comes to cheat detection. So if they detected you, you must of been doing it so moronically a 5 year old noticed

silent steeple
#

No

#

I got 2 veins in a row

#

No change in y level

#

I’ve been mining in that line for ages

livid dove
silent steeple
#

And they banned me

livid dove
#

And on that notes chaps, see ya later

silent steeple
#

I swear on everything

silent steeple
#

And see for yourself

vast ledge
grim hound
high pewter
#

Well ye, same logic applies to EntityType.ELDER_GUARDIAN and Integer.MAX_VALUE, but it's just generally good practice as far as I understand for maintainability, readability and even memory consumption

lilac dagger
high pewter
#

I've never seen that lol

young knoll
#

Inlining

#

Constants may get inlined by the compiler

lilac dagger
#

probably the call for Integer.MAX_INTEGER has no benefit over the actual value

lilac dagger
#

i've seen it in c

high pewter
#

Oh right well ye, but I'm not talking about the compiler lol. And I think that's only for small constants, and String is comparitively longer than int

lilac dagger
#

even string is inlined

#

if it's only a call by a method and you have it as a constant at least

high pewter
#

Honestly that seems really strange to me. Wouldn't it be more memory-efficient to only store it once (as the constant) and share that constant between all usages?

lilac dagger
#

i guess it's due to caching

#

strings are cached

#

so it makes no benefit in that case

high pewter
#

But isn't the whole point of caching that you only cache a value once then re-use it?

lilac dagger
#

yes but strings are cached by java

onyx fjord
#

java uses a cool trick to save on memory when using strings

#

deduplicates them

#

you can have a billion strings

#

of the same content

#

and they will have the same memory address

high pewter
#

That's more aligned with what I'd expect it to do

fluid river
eternal oxide
#

not guaranteed though

fluid river
#

if you are doing new String() then yeah

spare hazel
#

Can i create custom entities by editing spigot's server software code? Like creating an EntityAmogus?

lilac dagger
#

completely custom?

#

you can make existing entities

#

but nothing custom without editing on client side too

spare hazel
#

Like its connected to an EntityPlayer but with red armor and custom name&health

young knoll
#

You can do pretty good custom entities with something like model engine

lilac dagger
#

oh yeah, you can use armor stands

#

^

spare hazel
lilac dagger
#

oh texture packs then

echo basalt
#

?pdc

echo basalt
#

Pretty much

quasi berry
#

Can someone with some dev experience explain what's going on here? Relatively new with Java and I have no clue why this is considered static

spare hazel
young knoll
#

Skyblock just identifies their items with an NBT tag

#

Which on modern versions is just

#

?pdc

echo basalt
#

Syndicates.getConfig is being called like a static method

#

You want to pass around an instance of Syndicates, ideally through DI so you can call your getConfig on the variable instead of on the "class"

#

Think of static methods / variables as "belonging to the class" and everything else as "belonging to the object"

spare hazel
echo basalt
#

They have plugins

#

But they run on a really modified 1.7.10 fork where they wrote their own 1.8 patches

#

And have a lot of utility stuff

#

They have dev blogs explaining some of this

#

But they do run plugins, the codebase would be massive otherwise

spare hazel
echo basalt
#

But there's a lot of hypixel info I know about just from my time speaking to devs during my interviews

#

So I don't have sources for everything because some of it was personally told to me

waxen jackal
#

Shading Issues With Intellij

lilac dagger
#

I always like to reuse resources

young knoll
#

Why did they hack 1.8 into a 1.7 server instead of just using 1.8

brisk estuary
#

Does anybody know if I it is possible to mock bedrock players?

echo basalt
#

and it was cheaper to just patch their own 1.8 additions

#

Than to re-patch their entire fork

young knoll
#

I see

unborn sable
young knoll
#

You’d have to use NMS

#

Or some fancy magic with the interact event and the creature spawn event

unborn sable
#

I still can’t get NMS working lol

young knoll
#

?nms

quaint mantle
#

can blocks have custom model data

eternal oxide
#

if they have a tilestate

young knoll
#

No

#

Custom model data is only for items

eternal oxide
#

oh right, my bad

#

I was thinking pdc. Its late

primal goblet
#

i wanna make 1vs1 game, and it might be the avg players will 50.. so i cannot duplicate so much maps, and i'm lazy to make a docker or anything else to handle servers automatic..
so everyone goes in game he will be hidden at the other players, but the player can set a fire (using flint and steel) so how can i make this in packets, i need to like send a packet that puts a flint and steel to the players (only ingame).
that's the first code but have some bugs like the flint doesn't make damage to the players

Location location = e.getBlockPlaced().getLocation();
            PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange(
                    ((CraftWorld) e.getPlayer().getWorld()).getHandle(),
                    new BlockPosition(
                            location.getBlockX(), location.getBlockY(), location.getBlockZ()));
packet.block = Block.getById(51).getBlockData();
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
``` so what should i do? any advices?
sullen marlin
#

Why are you using a packet for this

#

also of course a client side fire won’t damage players

primal goblet
#

cuz the same map can be more than one game in it, so the other players are hidden
that means i only see the other player i should fight with

#

i saw some servers do this

#

and ig this will be better than i make a huge amount of servers.

young knoll
#

Why not just clone the map a bunch

#

In the same world

primal goblet
flint coyote
#

how would that use a lot of memory? It's only one world

primal goblet
flint coyote
#

Yeah that's why. Use one world and paste your "arena" multiple times

#

At different coordinates of course

primal goblet
#

uhm i did this before and i don't like it how it gone

sullen marlin
#

well no one makes client side games

flint coyote
#

It makes a lot of things easier though

sullen marlin
#

because nothing will work without you recreating it

primal goblet
#

other things will be as normal

sullen marlin
#

for starters use sendBlockChange

primal goblet
sullen marlin
#

yes

flint coyote
primal goblet
flint coyote
#

Also drops can be picked up by everyone

primal goblet
flint coyote
#

I wonder what minigame only requires a flint and steel but if that's the only thing then sendBlockChange is the way to go.
Just keep in mind, that you also have to send packets (another block change) to all players to "extinguish" the fire. And only if someone interacted with the top side of the burning block

primal goblet
# sullen marlin yes

uhmm sendBlockChange(Location arg0, Material arg1, byte arg2) the location for the block location, and the material for the block, but the byte for the block's data??

sullen marlin
#

download the javadocs or source lol

#

but yes

#

also 1.8

primal goblet
#

yeah got it

young knoll
#

We need some kind of outdated emote

#

Md plz

sullen marlin
#

propsoe one

primal goblet
#

thank you guys

nimble oxide
#
package com.marqus.hytteminer.Listeners;

import com.marqus.hytteminer.HytteMiner;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;

public class DbStatementListener implements Listener {

    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
        Player player = e.getPlayer();
        if(player.hasPermission(HytteMiner.getInstance().getConfig().getString("admin_perm"))) {
            if(!(HytteMiner.getInstance().dbStatement)) {
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8[ &2&lHYTTE &f&lMINER &8]"));
                player.sendMessage(ChatColor.translateAlternateColorCodes('&', " &c&oDer blev ikke tilsluttet en database, sørg for at oplysningerne i config.yml filen er korrekte!"));
            }
        }
    }


}
``` Its meant to sent every admin an message when they join that the database isnt connected, but I get no messages? and I am OP.
#

no errors ^^

lost matrix
#

Add debug messages and check which condition fails

nimble oxide
#

alright, just a sout?

lost matrix
#

Also: Is your listener registered?

young knoll
#

Man idk what would make a good outdated emote

nimble oxide
lost matrix
#

That would be a classic

nimble oxide
#

I forgot that HAHAHAHa

#

that is the classic one I did

#

im an idiot

#

jeez

lilac meteor
#

hey guys, I was making a custom plugin for some friends and I that is a simple replanting plugin with the hope of making it mesh with MCmmo better for 1.20.1
the issue im running into is that I am checking the age of the crop before replanting because we want to only replant when its fully grown.
seemingly at random, the age from using the Agebable.getAge() function returns 0 despite the f3 menu showing that the age of each crop is fully grown

#

is there a race condition that Im not aware of that could be causing this?

#

I dont know how waiting longer would help... but ill try

#

but if the age is maxed several ticks before the break event, that shouldnt ever be a problem

#

unless bonemealing the crop is handled weird

#

is there a better way of waiting other than Thread.sleep() or using the sheduler?

#

yeah I was looking into that last night cuz I was getting errors even trying to use Threading

#

but is there a simpler way just to wait or do I have to use the scheduler

#

:(

sullen marlin
#

?nocode

undone axleBOT
#

It’s hard to answer a programming question without code
Oh no! You ran into a problem. But no worries, people are willing to help, but first they need to see your code. This is because otherwise, they would be providing help based on guesses instead of concrete knowledge. Whether it be a compile error, runtime error, or an unexpected output, I'm sure that if you were to provide code, you'd receive a quick solution.

lilac meteor
#
@EventHandler(priority = EventPriority.HIGHEST)
    public void BlockBreakHandler(BlockBreakEvent event) {

        Player actor = event.getPlayer();

        //Allow user to ignore when pressing shift
        if (actor.isSneaking()) { util.debugMessage("Player sneaking, handler ignored"); return; }

        //If block is not a crop, ignore
        Block blockBroken = event.getBlock();
        BlockData blockData = blockBroken.getBlockData();
        if (!(blockData instanceof Ageable)) { util.debugMessage("Block is not a crop type"); return; }

        //Complete the final checks of when this handler will control the event
        Ageable targetCrop = (Ageable) blockData;
        int currentAge = targetCrop.getAge();
        int maxAge = targetCrop.getMaximumAge();
        if (currentAge < maxAge) { util.debugMessage("Crop was too young " + currentAge + "/" + maxAge); return; }

        //...Other stuff, doesnt matter rn
}
#

and yes, I tried changing the priority

young knoll
#

Are you using the correct ageable

lilac meteor
lilac meteor
sullen marlin
#

code seems fine, are you running any other plugins on the server

#

what does /version say

lilac meteor
#

no, am running new server specifically for dev debug, then once this was working we were gonnuh try it with other plugins

lilac meteor
sullen marlin
#

I’d open a bug report, but this sounds like a very surprising bug so I assume something else is going on and it won’t be reproduceable

#

Maybe some other part of your plugin is affecting it

lilac meteor
#

thats all there is. I register the handler in onEnable, print to the console that the plugin is running, and thats all the code running at the start of that handler

#

the only other function in that handler class is just a foreach to drop all items in an ItemStack collection

#

can you point me in the right direction to doing this? I just dont entirely understand how to create a Runnable

#

I just want to try this and see what happens

undone axleBOT
sullen marlin
#

Don't see how it would help given the block would be destroyed after the event

young knoll
#

You should only have to delay the replanting

lilac meteor
#

well

#

im actually cancelling the event after that part, then just resetting the age of the block to 0

young knoll
#

Hmm can’t say I ever tried it that way

#

But I don’t see why it wouldn’t work

lilac meteor
#
@EventHandler(priority = EventPriority.HIGHEST)
    public void BlockBreakHandler(BlockBreakEvent event) {

        Player actor = event.getPlayer();

        //Allow user to ignore when pressing shift
        if (actor.isSneaking()) { util.debugMessage("Player sneaking, handler ignored"); return; }

        //If block is not a crop, ignore
        Block blockBroken = event.getBlock();
        BlockData blockData = blockBroken.getBlockData();
        if (!(blockData instanceof Ageable)) { util.debugMessage("Block is not a crop type"); return; }

        //Complete the final checks of when this handler will control the event
        Ageable targetCrop = (Ageable) blockData;
        int currentAge = targetCrop.getAge();
        int maxAge = targetCrop.getMaximumAge();
        if (currentAge < maxAge) { util.debugMessage("Crop was too young " + currentAge + "/" + maxAge); return; }

        //Cancel event as to prevent the block breaking after replanting
        event.setCancelled(true);

        //Drop the items that would normally drop
        dropAllItems(blockBroken.getDrops(), blockBroken.getLocation(), blockBroken.getWorld());

        //"Replant" the crop, really just setting the age back to 0 to look like
        Ageable newBlock = (Ageable) blockData;
        newBlock.setAge(0);
        blockBroken.setBlockData(newBlock);
    }
#

heres the whole handler if that changes anything

eternal oxide
#

block break is an odd event, it fires after the change and undoes the break if cancelled

sullen marlin
#

No I don't think it does

eternal oxide
#

Chatting with Choco a while back he said it did

sullen marlin
#

Also wouldn't explain the issue being "random"

eternal oxide
#

if you delay setting the age

#

I wasn;t listening to the convo so didn;t see a random part 😦

lilac meteor
#

I just noticed im casting into an Ageable again when setting the blockData. Im going to see if reusing the original targetCrop changes anything

lilac meteor
sullen marlin
#

Isn't the issue you getting block was too young when you shouldn't

#

Code after that won't affect it

lilac meteor
#

im just eliminating weird behavior

#

nope bugged on a freshly planted potato :/

#

shouldnt say worked

sullen marlin
#

If it's freshly planted the age will be 0

lilac meteor
#

well freshly planted, bone mealed to age 7 then broken

#

was more meaning that the ""replanting" couldnt have affected it even if that may have been the issue

young knoll
#

Are you sure you aren’t somehow breaking it twice

#

Since crops break very quickly

lilac meteor
#

let me try setting the age to 1 and see if it reports back a 1

sullen marlin
#

That could be it

#

Would explain it being "random"

lilac meteor
#

hm well that seems to be it

#

how do I prevent that

inner mulch
#

Is there any way that i can change a players name to a color gradient?

inner mulch
lunar forge
inner mulch
#

i did

#

it wasnt helpful tho

lunar forge
#

Use ChatGPT

inner mulch
#

are you trolling me :(

lilac meteor
inner mulch
#

okay

lilac meteor
young knoll
#

You could always go with the replanting one tick later

#

Or cancel all subsequent break events on that position for a few ticks

inner mulch
#

i have never used packets, are you experienced with using packets?

#

so they are bad?

lilac meteor
#

but either way I need to basically wait a tick or two... I was not looking forward to using the scheduler

inner mulch
#

ok