#help-development
1 messages · Page 631 of 1
what are you even making
Either a premium plugin that requires manual compilation for non buyers.
Or an addition to an old plugin.
Trails Plugin With Individual Perms For Each Trail Particle
does a plugin already exist that adds the trails?
yes i know about GadgetsMenu
but it has a bunch of other unnecesary stuff including the spooderman set which litteraly destroys the game mode im making
All the Plugins That Have G before their names need GCore
but whatever i will use it
oh no?
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.
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
smile when u worked with netty and packets
did u by any chance use reflection to get the data from the packet fields
or did you just edit raw bytes
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.
It does make sense if the lib changes and the plugins don't wanna update with each library change. Either that or no breaking changes in the library (ever)
Thats how you design a library or api. You dont break them and if you fundamentally change something then
you add a deprecation annotation about your old code and let it sit there for half a year (see spigot)
I am aware of that. I just wanted to mention it
Bukkit#getOfflinePlayer(String name) would like to speak with you.
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.
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.
So what you're saying is, to pr an update to the javadoc with the skull emoji. Gotcha
lol
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"
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.
I wouldn't say there's a need for a specific annotation. Just mention it in the javadoc
I would prefer one because my sonar settings wont let me compile while using deprecations unless i manually exclude classes...
Can you add single methods or only classes?
just don't write readable code in the first place /s
Im serious lol
Honestly, not bad advice for a language that isn't made to be obfuscated.
Do you want to code a method to obfuscate or what do you mean by "obfuscation method"?
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
Just use an obfuscator?
in that case: Don't use java
You're not going to stop determined people though. :p
nah
Especially with this language.
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
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
e.g Rijndael's key schedule isnt uncrackable
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
its just extremely tedious to solve it, and needs a lot of power
Code
It isnt a spigot plugin
wym
Make a translator that obfuscates it into emojis.
I just wanna learn how to make one
and how would anyone access it
Please send your code. We cant help you otherwise.
how should the JVM execute a jar full of emojis?
okay dm
That's... not relevant...?
Pretty sure it would use the string representation of the emoji.
At least if it was converted properly.
you can't just translate
public static void main...
to
☺☻♥♦...
and expect it to work lol
Simply use an established obfuscator. You wont be able
to write something more intricate than a whole team which
researched this topic for years.
Well, not in java, but it would def make it harder to understand.
?code
I thought we are talking about java here?
?codeblocks
the problem is the method of how it obfuscates it is public
so its easy to reverse
I feel like it could be done in theory.
so is the encryption of https
Thats not how obfuscation works...
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?
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.
is that below 1.18.1
All i would like is, to be able to link the usage of a code to a key, that can be regenerated for a good amount of time
is it still below 1.18.1
i think u can just spawn a fake player and make them send packet
if it is theres a better way
Just the command
okay
Ugh
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
}
}
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
?paste
Paste the commands that dont work.
And make sure to send any exceptions
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....
You need to show the actual command method...
Lets start with just one
Question, would obfuscating an already obfuscated jar file 100 times, make it harder to deobfuscate?
No
That would likely just cause it to not work at all.
Made sense though, since if there was an algorithm to crack it, it work for any amount of obfuscations
it's like asking if scrambling a rubik's cube 100 times is better than scrambling it once
not necessarily
stuff like that tends to be probabilistic in nature
Tmw all rubiks cubes are solvable in under 12 moves.
20
Imagine having to wait 20mins to find out what your exception does even with the keys at your disposal
Write some stuff in C, compile dlls and make JNI calls.
Just make sure to support every target instruction set 
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
write some stuff in rust*
You cant reverse engineer compiled binaries
native binaries are much harder to decompile
even if there some if statements in there?
Since I would need a verification system in there
to check if the user should be allowed access to the program or not
I mean you can but its really really fking hard
Yeah Rust is the goat. Currently learning it by writing some stuff for Bevy
Not sure if that would really work, since I am using a framework
❤️
what're you making with bevy
yeah I was banned
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.
they banned me for being too cool
they've definitely removed plugins from the spigot forums for less
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 ...
who is we
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 😄
code golf with tokens instead of characters seems better
you could probably make a minimax in that pretty easily
GOD DAMN SEBASTIAN LAGUE
I LOVE THAT DUDE
my whole day gets lightened when he uploads
Doesnt really work
since the obfuscated jar
could be stolen
from ur code
that doesnt work
Sure. If you can do that with 1024 tokens ^^
But there are a few interesting approaches within
the evaluation method of this implementation
would you be able to clarify on this
I said that half jokingly
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?
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.
yes the result is unobfuscated code
end the code with a // maybe
it would still not provide a hard to decrypt result right
2hex what is your obsession with obfuscation
since the encryption method is still gonna be available
i am very triggered
by what
that i know nothing about this
still, its something i want to learn
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-
Essentials does that on purpose.
it could be reading your plugin's description and see that it's going to register commands
mother hacker
Or just loading after.
but I want it to override my commands, not the other way around
this seems like a good time to advertise my libraries
just make a command framework
Like this mfo somehow doesn't even let his plugin.yml load
Do we still not have a way to set command priority?
I made my loadbefore so his commands could register later and override mine, but somehow it seemed to have never registered
huh
wouldn't you want essentials to load first
I'm pretty sure it's first to register, not last to register, that stays
like it's overriding it's own plugin.yml
I also tried after
but no, I'm pretty sure it's the last one
If it's first registration, then Essentials would get the priority regardless if it loaded first.
what do I dooo
should I try for example, link the user's MAC address to the code
maybe I should ping md5? He did this plugin, he should know
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
That's only going to work on your computer. Everyone will end up with the obfuscated version, which will have the same hash.
no
i will have the users
???
How do you expect to recompile the plugin on their computer??
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
You do realize that you're entering malware territory now right?
nah
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
tf are you trying to do
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.
lmao
im trying to make whoever tries to unobfuscate a jar file's life
significantly harder
then dont use java
I need to use java
just obfuscate and turn it into exe
I wish my internet worked
the framework im using requires java
why do you want so hard to hide your code
the whole point is not to
Lets not get into my reasoning
Idk if its payed content, he might want to protect it
to not be ashamed of.it
that is what i trought of
but a simple obscufation layer should do
easily deobfuscatable
Theyd just upload the plugin to black spigot
using a random online deobfuscator
whats the point
it is not a plugin
doens't matter how good obfuscation is, if someone wants to crack it, he will crack it
i can just edit your jar lol
and build out everything you put in
Ik, it should put of the randoms that dont understand it tho
I know
But i would love to make their life harder
so that it atleast takes a lot of time to deobfuscate
OH OH
You do know, they can just upload the entire jar
maybe
and they can just decompile
even the point that you think it is interesting enough to be deobfuscated
You're contradicting yourself here.
If you want to make it harder to deobfuscate, how will it be easy to deobfuscate?
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?
Yea why he think his code is so important that it cant be seen
Unfortunately
Illegal
i profited 30k off this
yeah that is called malware
so
i really doubt that
idk what to tell ya
Do you know any software
why do u think i care about this so much
that does this?
if its useless
Well, any public one is not gonna be effective
Is pinging md5 against the rules?
Its with consent
Idk
no
Hell ban you if hes in a bad mood
malware if provided with consent is legal
well the f- it
lmao
Who is going to consent to malware
I'm pretty sure most people who have accidently ran malware did not give their consent.
and how is this even malware
i mean try your best, but as it seems you wont receice any help here since its stupid
Unfortunate
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
any other idea then
No
rip
It pointless
just make it oss smh
Installing a system service to monitor tasks runing in memory... Geez, I wonder how that could be deemed exploitative?
and nobody could deobfuscate their file for years
doubt
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
very true
there isnt
Just to the point it would be annoying to reverse
obviously
you are asking for malware help bro
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?
Right, but how would a system service fit into obfuscation?
which would be consented to
if we were in modding mc server they would be banned already lmao
i think a good placed grow up is needed here
Yea
what does growing up have to do with this
why do you say blyat
я могу говорить по русски ты шлюха
where else am i gonna ask
АХАХАХАХААХХА
and or obscufation
Alatori?
what?
On a discord that isnt about a friggin mc development
can't even laugh in spigotmc
dont know any other
what u guys doin
im being brutally bullied by 5 people
Help develop malware?
is viewed as malware
again this is not malware
well, thats a sign that you should leave
From what you are describing, it most definitely is.
thats a joke
that we dont fulfill your pointless wish
WTF
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
dont see how people dont like me
I like 2Hex fine enough
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
:D
malware is a crime?
I didn't know
Idk
if anything, i would say that this idea itself has a bad stigma to it
ur a malware
Malware isnt malware when you consent
???
if they consent to it, it is not malware
Nobody is going to consent to give away there personal Data
On a theoritical situation where they do
Yes, this is factual, HOWEVER, you are doing it WITHOUT THEIR CONSENT.
Rootkits. Sony installed backdoors and malware with owners permission
What code did you write that has to be fricking encrypted, the nuclear launch codes?
it is not without consent
wat
Yes it is. Unless you disclose the entire system in full to all end users, it is malware.
also recently a laptop manufacture was found to be installing a root certificate on all their laptops to give a backdoor
There is no reason for a Minecraft Plugin to be installing system services and grabbing system information such as MAC addresses.
what laptop manufacture?
Yall just ignore that the CIA
Thats what we call malware
began with an L is all I remember
didn't he say its not a mc plugin or something like that?
installed recorders in smart TVs
or am I high?
No, he wants this to be a plugin.
its public info, so nobody can do shit about this really
Jar file and all.
ah, ig I'm high then
Not a plugin btw
wait so I'm not high?
Then wtf are you asking for?
or am I so high I saw the future?
that would be difficult, and or annoying to deobfuscate
Ok
obviously it cant be impossible to
what the actaul fuck are you trying to make
but just difficult is enough
Lenovo, and Dell
Apparently. Quick, give me the lotto numbers.
I just googled
What is the service you are offering
Irrelevant
Its not
however, it's quite demanded so Im sure they would agree to anything
Are you trying to make some software?
Cheating software?
No
Crypto miner?
python?
nodejs
lets just not talk about it
what can you even be making that you need it to install malware (even if you get end user consent)
Not even the anti cheats softwares
Hey, you brought this up.
That go to kernel level
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.
do that type of shit
do you guys think hypixel used spigot as their base for their custom server software or something else?
Yes
yall just heard me say one suspicious thing
pr üaüer
or paper*
and assumed im comitting a federal offense
bro be making cheats in fucking nodejs 💀
xD
for what
paper didnt exist in 1.7.10 iirc
bukkit
They run on 1.8 rn right?
they run modified 1.7.10
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
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.
even assisted homicide is legal when consented to in Canada
In canada
Consent matters
are you in canada?
is saving the player var to a set the only way?
well, by that logic I live in the baltic sea
yeah, that'll throw an error, fuck
Well, does anyone know a server in which I can find people that are willing to help?
No
With?
with what?
Trying to find a server that will help him create malware
He's creating malware.
I am trying to create a difficult to reverse obfuscator
I am not creating malware
i swear
😭
ask optic lm ao
xD
Running backround tasks, that are invisible to a user, saving there mac
like java code obfuscator?
there's no reason to run obfuscation
I know
THATS WHAT I SAID
if you actually trust your own code
but thats not the point
He wont even tell us what hes making
okay guys, really, please help
Look
I already came to the conclusion
That packet might fire after handshake login
that I need to do this
Why
you dont need to care about why im doing this
good for you
but it gives you no player context
then dont ask us
Whats wrong with you?
so we don't care about helping you either
But what is the point
simple enough
Yep
No need to be rude about it
lmao
It's Handshake, LoginStart, EncryptionBegin. As I was testing I saw the LoginStart before EncryptionBegin
I'm not saying im entitled to any help lmao
LoginStart sends player data
just say no, and speak for yourself
I still dont understand why you are on a serveres software discord, asking about file encryption, obscufating, creating malware etc.
Ironic.
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
¯_(ツ)_/¯
hi nop question , will this stripe the string from any color codes
ChatColor.stripColor(tag)
yeah, but the username is 'UNKNOWN[player's ip]' since 1.20
for some reason
That strips colors
it will strip all bukkit color codes.
if you want to strip color codes
It won't remove hex codes.
You translate the color codes before stripping
so if i do :
&7Admin , it will only send Admin
Yes
alr thanks that what i want :p
yeah you translate and strip
You might have to translate it before
so
ChatColor.translateAlternatColorCodes('&', urString);
and then strip
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
man knows how to translate a tring
./guild color colorcode
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
I just wanted to make sure 😢
getConfig just returns config.yml
Jackson is a json lib
but when creating a guild , there was a glitch admin can create a guild with a color code ..
Jackson supports YAML too
huh
did you install a trojan for fun on your friends computer?
yes
Doesn't that only return Bukkit stuff though? Not something I can give to Jackson?
i installed a few of them
it should return the file
if i read correctly
It returns FileConfiguration, which is a Bukkit thing
the only thing I installed on my friends computer is a teamspeak 3 server and a linux vm
then get the file
the file is present on the JavaPlugin class but not exposed
from file configuration
mmm
and then I told him I overode his windows with linux and made him shit his ass lmfao
Should have done it for him. lmao
There isn't anything under FileConfiguration which returns the file 🤨
check the docs
Ye I'd rather hard-code than use reflection lol, just thought there must be some constant for it somewhere. Oh well
File file = new File(YourMainInstance.getDataFolder(), "config.yml");
I have...
oh, the default config?
Yep that's what I have right now, just felt wrong to hard-code "config.yml"
yeah it's easy, don't worry
it's hardcoded in spigot aswell
Oh lol
you could get it via reflection, too
You're expected to provide a file in the first place.
File file = new File("file.yml");
FileConfiguration config = YamlConfiguration.loadConfiguration(file);
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);
}
}
what do you think? "config.yml" won't be there "magically"
That's only for custom configs isn't it? For "config.yml" you just do getConfig()
this gives you the file config in the jar file
You can use it for the normal config.yml as well, but yes #getConfig() will return the config.yml
Yes, but they could have like```java
public static final String defaultConfigName = "config.yml"
public FileConfiguration getConfig() {
doSomethingToGetConfigByName(defaultConfigName);
}```Which wouldn't be "hard-coding" it in the same sense I meant
well then make a constant, too xD Or access the one internally via reflection
OH
cant i just compile the bytecode to llvm ir?
that should stop casual users from succeeding
You might as well just write in a different language at that point.
Please stop asking here.
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
They will never change that value as it will break ALL servers with plugins
also there isn't a valid reason to do so
Same with hard-coding the maximum int size. Even though it's always gonna be 0x7fffffff, you use Integer.MAX_VALUE instead
Generally you are right
One question though, why do people dislike obfuscation that much
But for this part it really doesn't matter
Well, you could just do new File(#getConfig().getName())
We dont dislkie it, we dont encrougae malware production/development
🤦🏻
Now stop
When did i say im making malware
fighting
Ohh that works, thanks!
with us
As Choco already told you
"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"
True
> Quote
Oh, thx
but that doesnt explain the unusual hatred for closed source code
We dont like it
google told me /quote and the other results are wrong aswell
reason being?
Why are you trying to hide code
so people dont copy it
We like open source, that what our entier community isbuilt on
before you say no one cares about it, they do
i also like it
does that mean i hate closed source? no
/quote used to work, but they removed it alongside a few other built-in slash commands when they introduced better Markdown support
cries
I don't go into a vegan store and ask them what meat they recommend either.
🤣
Very true
Honestly not against closed-source (though I do love open-source) but I do love myself a good analogy lol
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
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)
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
and could recommend you a store
I clarified that
I know that its never impossible to crack obfuscated software
But all i wanna do, is make it annoying
Ok, but installing system services is not the way to go about it.
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
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
would be great if you have one
Literally just search "Java Discord server", there's plenty (including one I think is official)
I just wanna add that commercial java software is usually delivered as an unencrypted docker image or jar file
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...)
Linking is fine if you are directing people to a certain server.
Randomly coming in and posting invite links trying to get people to join is against the rules.
Oh? I did actually just look at the rules out of curiosity and it said no advertising whatsever so now I'm confused lol
Well, advertising boils down to intent. Are you encouraging everyone who sees the link to join the server?
Fair enough haha
Hopper you haven't said ? in general yet.
How do I get more then 16 lines on a scoreboard
Or do I need to use custom Minecraft server implementation
how to code spleef kill credit plugin
Probably a clientside limitation - or have you seen it on other servers?
No I haven’t
Seen it on other server
(S)
Then that's probably because the client only supports 16 lines. You are out of luck
Would require a mod on the clientside
why not create pages that you change every once in a while?
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.
How can I double check
dig deep into forge
forge is the modding api
They use vanilla code as a base
So there you can check whether it's limited in vanillas code
you cant
Context?
How can u be so sure
because ive seen the games code
Just join the gang in #general
Where
i dec00mpiled it
Ok can I see it
yes you gotta decompile
Liar
???
???
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
not again
xD
in before its a server with a forced texture pack
I am not taking anyone’s word
I want proof
I thought it was 15
Either way, have you seen a big server with more?
No?
I wonder why
I think it's 15 scores + 1 line from the title
unwritten rule among all big servers! Carlos said so
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
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
Actually, I think you can get 17 by using a team-specific slot and adding all players to that team lol
you dond believe us
Doesnt sound real. Give me proof or that didnt happen
I dont believe you
lol
You fake
throw new FakeDevException
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
"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"
I found the method to get more then 16
tbf I don't think the documentation says it doesn't do that anywhere
Then honestly and openly I will happily apologise, care to share the documentation so we can all be enlightened?
Is it the one I mentioned?
And what is the max with this new method?
You can rotate through them
if you want more
but that still only gives a max
You could technically have more with custom fonts
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
Nah i never assume that.
Idk how he did it
Scoreboard size is client side. no length is ever sent to the client
so 15
@silent steeple , would you be able to enlighten us please?
You can add as many lines as you want to the list
the secret ingredient is crime -> hack their computers -> infuse own client
But due to client side bullshit it is not rendered
but you can only display 15
....
Isn't that what we told you? lol
THATS WHAT I JUST SAID
But
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"
Wrong about what
Anyone can make shit up without backing it
Had to double check 💯
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
Environment*
oh wow
Then why are you hear, ho to the wiki
go*
It goes full circle
?
You teach me one thing I teach you another
Ok, but if you dont want to learn, why are you here
It was a typo. Just because others were right you don't have to gather hate of the full community
Who said I don’t
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.
Your actions speak for you
I ain’t reading allat but sure
all that*
Tl;dr: Stop being a twat
Is that the short for tldr
You play stonework’s?
I though it was different
Do you know mr albus
I havent played stoneworks in a long ass time.
The more you know
Its a toxic cesspool with corrupt ass staff
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
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
No
I got 2 veins in a row
No change in y level
I’ve been mining in that line for ages
I don't believe you.... I need proof 😎
And they banned me
And on that notes chaps, see ya later
I swear on everything
Decompile the game
And see for yourself
Cya
But like, config.yml name updated? If it ever is you can also update your resource.
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
but as far as i've seen integer max value get's replaced by the integer in the code
I've never seen that lol
probably the call for Integer.MAX_INTEGER has no benefit over the actual value
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
even string is inlined
if it's only a call by a method and you have it as a constant at least
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?
i guess it's due to caching
strings are cached
so it makes no benefit in that case
But isn't the whole point of caching that you only cache a value once then re-use it?
yes but strings are cached by java
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
That's more aligned with what I'd expect it to do
String pool it's called
not guaranteed though
if you are doing new String() then yeah
Can i create custom entities by editing spigot's server software code? Like creating an EntityAmogus?
completely custom?
you can make existing entities
but nothing custom without editing on client side too
Like its connected to an EntityPlayer but with red armor and custom name&health
You can do pretty good custom entities with something like model engine
I want something like Hypixel Skyblock. The items are custom but they are mapped into something like a Diamond Sword or Emerald
oh texture packs then
?pdc
Pretty much
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
No
Skyblock just identifies their items with an NBT tag
Which on modern versions is just
?pdc
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"
Someone told me that hypixel doesnt have any plugins. Its just extremly modified 1.7.10 bukkit
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
Link? Please
https://hypixel.net/threads/dev-blog-6-keeping-up-with-the-masses.2251554/ is the main one I like to link
Hey!
This is another one of those in-depth dev blogs in which we explain what happens behind the scenes to maintain a seamless experience for you, the players. Today we're going into a little more technical post since we'll be talking about how we were able to scale from 30,000 players to...
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
Shading Issues With Intellij
I'm already doing most of it
I always like to reuse resources
Why did they hack 1.8 into a 1.7 server instead of just using 1.8
Does anybody know if I it is possible to mock bedrock players?
Because they already patched it beyond belief
and it was cheaper to just patch their own 1.8 additions
Than to re-patch their entire fork
I see
Is there still a way to create items with NBT data so using them automatically applies the data? Like a sheep spawn egg always spawning pink ones
You’d have to use NMS
Or some fancy magic with the interact event and the creature spawn event
I still can’t get NMS working lol
?nms
can blocks have custom model data
if they have a tilestate
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?
Why are you using a packet for this
also of course a client side fire won’t damage players
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.
i tried before the game was working in this system, but it uses a lot of memory
how would that use a lot of memory? It's only one world
uhh i made a world for each map
Yeah that's why. Use one world and paste your "arena" multiple times
At different coordinates of course
uhm i did this before and i don't like it how it gone
well no one makes client side games
It makes a lot of things easier though
because nothing will work without you recreating it
only the flint and steel will be on client side using packets
other things will be as normal
for starters use sendBlockChange
do you mean: player#sendBlockChange?
yes
Are there bows involved? Snowballs? Any projectiles? Those are blocked by invisible players aswell
only the flint and steel so that's why i wanna use packets for this
Also drops can be picked up by everyone
ik that, and the players will not drop any item i disabled that
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
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??
yeah got it
yeah i'll do that
propsoe one
thank you guys
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 ^^
Add debug messages and check which condition fails
alright, just a sout?
Also: Is your listener registered?
Man idk what would make a good outdated emote
ohh
That would be a classic
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
:(
?nocode
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.
@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
Are you using the correct ageable
import org.bukkit.block.data.Ageable;
it works like half the time, then at random the age reported is 0
code seems fine, are you running any other plugins on the server
what does /version say
no, am running new server specifically for dev debug, then once this was working we were gonnuh try it with other plugins
I cant send files rn
CraftBukkit version 3836-Spigot-3374045-08ec344 (MC: 1.20.1) (Implementing API version 1.20.1-R0.1-SNAPSHOT)
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
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
Don't see how it would help given the block would be destroyed after the event
You should only have to delay the replanting
well
im actually cancelling the event after that part, then just resetting the age of the block to 0
@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
block break is an odd event, it fires after the change and undoes the break if cancelled
No I don't think it does
Chatting with Choco a while back he said it did
Also wouldn't explain the issue being "random"
if you delay setting the age
I wasn;t listening to the convo so didn;t see a random part 😦
I just noticed im casting into an Ageable again when setting the blockData. Im going to see if reusing the original targetCrop changes anything
also f3 menu shows the age being non-zero
Isn't the issue you getting block was too young when you shouldn't
Code after that won't affect it
im just eliminating weird behavior
nope bugged on a freshly planted potato :/
shouldnt say worked
If it's freshly planted the age will be 0
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
let me try setting the age to 1 and see if it reports back a 1
Is there any way that i can change a players name to a color gradient?
Yes.
pls tell me more, i ve been searching all day on the internet for help
Search how RGB colours work and how to change the player name.
Use ChatGPT
are you trolling me :(
yes, but how do i change the playername AND NAMETAG
okay
how do you think I could prevent this? setting the age to 1, thats what shows up when it doesnt work, so this is definitely the problem
You could always go with the replanting one tick later
Or cancel all subsequent break events on that position for a few ticks
but either way I need to basically wait a tick or two... I was not looking forward to using the scheduler
ok