#help-development
1 messages · Page 1309 of 1
oh what a shame, guess my words were too much for them and I haven't even said that much either
where was that one doc about scheduling tasks across ticks to prevent some ticks taking too long?
I can't seem to find that page
?work-distro or whatever
not this, it was what emily said about work distribution
ty
look at smile
ah
hello guys I am working currently for my first big project Anticheat: NeXploit
do you have some kind of tips how to detect auto farms berritone (it will be free )
auto what now
auto farm like with bonemeal
it is detecting more than half of modules that meteor client has soo i think it is good now but there is still room for improvment
people use bone meal.. cheats?
yea
you can literally put bone meal in a dispenser
it is much faster than in dispenser
a) cheating crops is pathetic b) how many carrots do you need that using cheats is so much more worth it than 1-ticking a dispenser
anyway
i don't care
why not just block custom clients to connect to your server in the first place?
they can easily bypass that
a cheat client telling the server a cheat client is joining is quite a hilarious concept
exactly
no, they don't always send custom packets
but you can detect patterns in the packets for the cheats that are being used
thats exactly right
and why exactly is this an issue?
because on some server there is economic and they can easily farm and i am trying to detect most stuff that is not that hard to detect with basic math
is farming supposed to be difficult?
if you want people to wait in terms of time, you would just simply ban the use of bonemeal, so I really don't see the issue here lmao
I would probably make a plugin to limit bonemeal usage rather
or make a feature out of it and turn bonemeal into a more precious resource
they must buy it to obtain it 😉
thus, the cycle of economics
anyways, don't really see the issue of using bonemeal super quick though lmao
I assume they just don't want people breaking the economy too fast
but then you would just not allow it
it isn't a black or white situation, you don't want players to hate your server
well it is
but it's not
Rasist
it'll happen eventually when some users play for long enough, but if you let players just destroy the economy in a few days then there's no community formed
XD
my only advice to anyone working on an anticheat plugin is to give up
exactly
no one cares about the community except those who formed it to begin with
anyways, I guess people love to create problems out of nowhere
and then come up with some elaborate solution even though the most simple one already existed -.-
either way what does the "cheat" consist of, anyway? a player should only be able to bonemeal something 20 times a tick legitimately, if they're going over that, it's anticheat territory; if the issue is that 20 bone meal per tick is too much for you, it really should go in a separate plugin that balances bonemeal instead
i think the server already caps it to 20 per tick to begin with
i mean per second
1 per tick
but why disable a mechanism completely for the people that care when you can limit it? then the people that want to cheat will be limited and leave, and the people that don't want to will not be bothered by it
if i wanted to balance this, i'd write a plugin to apply an item cooldown to bone meal on use, using the vanilla cooldown mechanism
not sure what experience you speaking from. Literally have never had an issue with removing items from a server
if people disliked it, well it wasn't for them and they are not the only ones ever in the world
this would be more intuitive than whatever an anticheat plugin would do
I mean, everyone manages their servers differently. Just because that worked for you doesn't mean it will work for everyone, sometimes it is hard to get a grasp of even a few players
the point here is that they're trying to do something to balance their economy
well it does work for everyone. The ones that tried to please everyone die off
I am not server owner bruh I am just trying to detect cheaters
that's not within the purview of an anticheat plugin
i am speaking from my own experience
it doesn't
lmao
what are you onto
+every server owner will set it yourself so what is the point
if you're looking for cheaters, being able to use bonemeal 20 times per second on a block is a legitimate vanilla feature
why are you so adamant about removing a mechanism for the people who care about using it genuinely
when you can limit the usage for those who cheat and allow the genuine use
interesting you call it a cheat when its allowed o.O
I won't get ragebaited in a pointless bonemeal discussion so I'll leave it here, the guy already got answers to their question anyway lol
yea
your guys defintions are pretty weird. and yes the servers that do try to please everyone do indeed don't make it
not even hypixel tries to please everyone lmao
my suggestion is dont use anticheat at all.. but perm ban people if you catch them. Ip ban. Name ban. Perm ban them any way possible
who is talking about pleasing everyone?
VPN btw
only a problem on cracked servers
i am talking about pleasing the people who want to play naturally, specifically leaving out cheaters
and use a premium server
Hire mods
Anyways good luck with the elaborate solution, even though simple ones exist and are highly effective
still interesting you call them cheaters for using a mechanic that was allowed
when I had a server I usually just banned them for one year
If you hate cheaters then you should start playing singleplayer
so fliying without creative is allowed too broski
i think anticheat has its place even on premium servers, staff probably won't be online and directly watching over every player 1:1 24/7; punishments can be left up to staff, but notifications/logging and preventation of blatant cheats is still useful
that isnt my point and if you can't understand that, then obviously I shouldn't even attempt to speak with you -.-
yea that i am doing it will flag players and a team can then look at it
bruh bc of that i want to detect all kind of staff in to the logs
no one told you you must type here
someone taping their right mouse button down with bonemeal in their hand most likely isn't worth logging to be honest
if you get more than one item use packet per tick, sure, that's fishy and probably a modified client, that ought to be logged
that is indeed correct and your point is?
but below that it's just noise and useless false positives
yea I know but it still can detect behavior if like he is just not moving but staying on one cords poinitng in void he cant bonemeal some weed
that'd be a direction/interact check unrelated to bonemeal
and I am trying to that
check whether the interacted-with block is within line of sight
kk
Right or he could just go build a full custom client + server stack with kernel-level anticheat, rewrite half the JVM in C and ship it for free. Totally realistic use of his time ez
send the keyboard inputs to the server and render the game on the cloud
doubt kernel level anti-cheat would be effective
however, without a custom client its pretty pointless making anti-cheats for something that accepts what the client says and not the other way around
but I have always found it pretty effective to just scan the packets for the info you seek
to get the data early and do whatever verification later
what would be effective in your opinion
yea I am interested in that too
Rewrite minecraft itself 🙂
yea and add hyper threading
that would be beautiful
that's on your cpu
sorry bad english i meant that multiple cores
I didnt sleep for long time
bone mealing 49 blocks squared per tick is an intended game mechanic? it might be a mechanic but it's still cheating as it's humanly impossible
Then sleep bro 😭
Or they have a insanely cracked gaming chair
(I had 2 monsters I am cooked)
i think the server does or at least is supposed to limit your item use packets to 1 per tick, so 20 is the legitimate maximum per second
yea fortnite type
does it tho?
what's that
i'm not sure
it has no cooldown so idk
and you have hinted towards a way to limit without actually doing any limiting. Just drop packets 😉
i'd expect it to; if not, i'd expect an anticheat plugin to limit it to 1 per tick
Bro will do it if humanity discovers immortality
on the topic of anticheats, have any of you used grimac?
never used anti-cheats from other people so no
I dont know the first thing, thats why I was hoping that someone would teach me how to as they go
FitGirl reference???
Watch the first 5 or so and cherry pick from there on
I don't have the resources to do either
what?
this is a really nice java course
I dont have a computer which is the big thing
then code on phone
I have both
use ur phone as the pc
Can I get java on my phone
if u have a samsung its really easy to make it work asa. desktop
lol
uhhhhhhh
Hi, I am currently coding a plugin with crowns that has a texture pack.
VALOR("Crown of Valor ⚔\uFE0F", ChatColor.RED, "", "Battle Cry", 30, 1),
this is a crown with the custom model data = 1.
(Its a netherite helmet btw)
This is the netherite_helmet.json in My_texture_pack/assets/minecraft/models/item:
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "minecraft:item/netherite_helmet"
},
"overrides": [
{"predicate": { "custom_model_data": 1 }, "model": "item/valor_crown"}
]
}
and I have a texture in My_texture_pack/assets/minecraft/textures/item/valor_crown.png
if I give myself the valor crown, while I have my texture pack on, its just a normal netherite helmet. Can someone help me?
u can use an app
I do have a Samsung
Whats the app
idk
Exact version ?
Im so Happy
i worked on a code for 3days
and yeah ALL THE COMMANDS DOESNT WORK
Yay 😄
u can do this course
on phone since its website
1.21.4
The way you use custom model data has changed
BUT You should not be using it in this way anymore at all
Use item_model component instead
dependssss
for example if u want to have an optional pack
u should use custom model data
cuz if u use item model and there is no resource pack
it will show up untextured
but without pack it will show as base item
Ok well I guess you are correct in this case
But I would not do an "optional resourcepack"
You can always force the client to download the RP
and how does this new way work?😅
I sent a link
ik but sometimes u want it optional
like i got a gen server its optional
since its only like a cosmetic thing
but item models are dope and the best
Just create a new item model definition (preferably in your own namespace) and using Spigot API set the itemstack to use your custom model.
You can look into vanilla RP to see how the item model definitions look
just use nexo 🙏
Boi
This guy is making a simple item
There is negative need to depend on whatever that may be
uhm... I want to make 9 new item textures😅
Ye that's fine, just do the same thing 9 times
Thank you
Termux
mwa
oh?
well tbh for learning codecademy provides everything anyways
ooo
Also Samsung Dex is only available on the higher end models
No, I don't play Roblox
Don't really play that neither
cs2
nope
what do u plau
Apex Legends
and
Minecraft
wanna play minecraft
lowkey bangs btw
Bedrock 💀
balright
?xy
wrong site nvm
Look, when I make an entity and add a location, I want this location to access the path of the config.yml, but for that I need to go through the name of the entity, so I want to access the name
(custom) and after naming it, access the location and be able to invoke the entity correctly, how do I do it?
Sorry what
Do you want to spawn an entity, give it a name, and then teleport it to a location stored in the config, or do you want to spawn the entity directly at that location with all its data taken from the config?
It's a text display and to create that text display I need a location
Something like fancy holograms
most of these plugins work by first spawning the entity at the player’s current location, and then you adjust it afterward
after that, you can also populate the file with placeholder data, like a sample first line and the initial location
so i recently updated my mc server and spigot api to the latest version, but my custom heads now dont have a texture in my inventory but they do on my head when i am in f5? This is my code
ItemStack item = new ItemStack(Material.PLAYER_HEAD);
SkullMeta meta = (SkullMeta) item.getItemMeta();
if(stackable) {
meta.setOwnerProfile(stackableHead(texture));
}else {
meta.setOwnerProfile(unstackableHead(texture));
}
item.setItemMeta(meta);
return item;
}
public PlayerProfile unstackableHead(String url) {
PlayerProfile profile = Bukkit.createPlayerProfile(UUID.randomUUID());
PlayerTextures textures = profile.getTextures();
URL urlObject;
try {
urlObject = new URI("https://textures.minecraft.net/texture/" + url).toURL();
} catch (URISyntaxException exception) {
throw new RuntimeException("String violates RFC 2396", exception);
} catch (MalformedURLException exception) {
throw new RuntimeException("Invalid URL", exception);
}
textures.setSkin(urlObject);
profile.setTextures(textures);
return profile;
}
public PlayerProfile stackableHead(String url) {
PlayerProfile profile = Bukkit.createPlayerProfile(UUID.fromString("7910bd8e-11c3-49d4-96ec-9e6c6beb56c4"));
PlayerTextures textures = profile.getTextures();
URL urlObject;
try {
urlObject = new URI("https://textures.minecraft.net/texture/" + url).toURL();
} catch (URISyntaxException exception) {
throw new RuntimeException("String violates RFC 2396", exception);
} catch (MalformedURLException exception) {
throw new RuntimeException("Invalid URL", exception);
}
textures.setSkin(urlObject);
profile.setTextures(textures);
return profile;
}```
im not sure if im allowed to send blocks of code like that I don't talk here much
So I don't need to put the entity in the onload but in the command to create holograms or what?
Custom heads now rely on PlayerProfile, the client never receives the skin URL, it only gets the profile ID
You mean the location? you can do it however you want, you can just do it as most do, spawn it at the player's location, or specify it like /spawncommand name <x> <y> <z>
so this means i should be using the uuid of the player i want the head from when i create the profile?
No bro, I mean loading the entity in the location that was set in the config
iirc textdisplays are persistent by default so the location set in the config are more for manual tweaking via a plugin /reload command
you can create a uuid for the head, and apply a texture with the correct format https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/profile/PlayerProfile.html
declaration: package: org.bukkit.profile, interface: PlayerProfile
So if I create a void by creating a new entity and sending it its location, will it be created?
But that wasn't my question XD but thanks, I just wanted to know how to access a part of the path since I wanted to use: "*. location" but they told me that it wasn't possible and I shouldn't use *
to be honest, i didn’t quite get your question 😅
idk how that is different than what i did 😭
XD
the playerprofile expects a json like { "textures": { "SKIN": { "url": "http://textures.minecraft.net/texture/<textureId>" } } }
I'm going to give you a small example of config
hologram1:
Location:
X:16
Y:5
Z:62
Hologram2:
Location:
X:22
Y:12
Z:1
something like this (?
Now my question is, how do I access the path location if I must first access the name and this name can vary and I cannot use a getPath
ahhh looks too confusing for me ive never worked with jsons but ty
If the entity is in the world, like spawned, you should take the location from the entity itself
and for that well give it a way to identify that entity
Yes bro, but my hologram will not only have to access the location but also its properties.
i tried doing this but i dont have setproperty method for playerprofile
But how will you access your properties if the plugin can get confused and not search for your properties just because the path "your name" is different
I couldnt see it in the javadocs either
sorry ur right, i got confused xd, this should work
Attach a NamespacedKey to your textdisplay and use that for its id
then u can do something like
Thank You
Thx that helped alot
ah ok all i needed to do was add the name to the player profile
oh it still doesn't show the head texture in the inventory
Hi, how can I get the name of an ItemStack? So, if the itemstack has an ItemMeta, the display name should be used, otherwise the name of the material should be used. Not e.g. OAK_LOG but the name of the item the player also sees if that item is in his inventory yk?
Ideally you'd use a translateable text component as the name is controlled by the client
The server only contains the en_us language file
Sounds like that's what I searched for. Can you give me an example code or explain me how to do so?
Where do you want to use the component
I want to send the player the name of the item as a chat message
If you mean that
I want to code a caseopening and there should be a message like: "Hey, you won ITEM_NAME" in the chat if the player gets an item from a case
The home of Spigot a high performance, no lag customized Bukkit Minecraft server API, and BungeeCord, the cloud server proxy.
That looks great, ty!
Olivo is one of the gigachads of this server
Is there a list at a website where all the item names for the TranslatableComponents are listed? On Spigot there is "(see here)" but no link is specified.
And how can I do it automatically? The plugin needs to be able to automatically translate an item name.
I dont think that Material#getName or similiar will work because at the spigot docs you sent me the name for the DIAMOND_SWORD is swordDiamond ...
declaration: package: org.bukkit, enum: Material
Ah thats very helpful, thank you :)
are hashmaps really faster than binary search? i mean theoretically yes, but when it comes to reality does it really outperform binary search? i mean binary search uses like 20 operations for worst case of searching for a million of records which is not bad compared to something like hashmap which would allocate a new heap object, resizes the array, computes the hash, iterates through the bucket on worst case and then it reaches the destination
i feel like O(1) of hashmap is a big lie since it has more complexity in terms of implementations to lets say sorted binary search
i need benchmark
Yeah HashMaps are faster
but for small amounts of data the difference is negligible
assuming you have a decent hash function
but like worst case for binary search of billion records is like 30 operations, i feel like hashmap's implementation would need to go beyond that count to even properly work with all that overhead of heap allocation syscalls and computation of hash
i feel like hashmaps insertion is faster than binary search one, but when it comes to search binary search wins due to the overhead of the implementation
but cant really prove this
maybe im wrong but that's just my intuition
i feel like it cant be that all that memory overhead and calls would be cheaper than 30 operations
Not sure what heap allocations you're talking about
in order to keep collisions as low as possible hashmap implementations keep the threshold value which when it reaches, hashmap resizes itself to minimize collisions
also allocations of bucket lists for hash collisions
were you not talking about getting data
well you're right, but i think that all comes down to benchmarks
Can recommend using JMH if you want to benchmark
are hashmaps really faster than binary search
lol
the thing about binary search is that it has very poor memory locality
Technically all searching in programming is a binary search
Since they all run on binary
that is to say, sure, your indexing logic is cheaper, but every iteration of it is going to be a colossal cache miss
conversely on e.g. an open addressing hash map, you usually find the entry within a handful of collisions, typically within a single cache line, and even if not, the memory reads are coherent and easily prefetched by the cpu
you need to keep in mind that while processors have gotten many orders of magnitude faster over the years, memory is still relatively slow
that is not to say that binary search isn't viable; practically all "big data" mediums like relational databases still boil down to binary search and traversible tree structures
regarding the "heap allocation syscalls", that's just the tried old arraylist vs linkedlist argument that we've had for longer than most of us have been alive; each has its pros and cons
a flattened binary tree is going to have to be resized as well once it overgrows the capacity of the array allocated for it, no different from a hashmap; or if you're using indirection with pointers in between nodes, you get the same "heap allocation syscall" and poor memory locality cons as you do with linked lists
What if I just allocate the array to be Integer.MAX_INT in size
caring about heap alloc syscalls in a jvm language
god forbid the vm reserves memory
how is Hypixel able to give mining fatigue without making arm swing animation ultra slow? I want to duplicate that
Mining fatigue 255
Aka negative mining fatigue
yeah that looks like this
That does not look like 1.8
its 1.19.4
Recommend you update and set the attribute instead
no server is newest but I support older versions
I use attributes for 1.21 players
but I want it to work for ppl on 1.19
and other versions
is there a way to do this?
I tried setting player's mining fatigue to -1 and -255 (separately) both animations seemed normal but players can break the blocks still
?paste
Looking to paste something? Try a code block or one of the following websites:
- https://pastes.dev/
- https://sourceb.in/
- https://mclo.gs/ (best for server logs)
i realize this isnt spigot but this is the only dev server im still in 🙃
anyone got an idea of why my jar is genuinely empty?
this is all thats in there lol
does generating a regular non-shadow jar do the same?
i thought so too
but its not
i thought i was trippin since i havent coded in a while 😭
you should use an up-to-date version of shadowjar, see https://gradleup.com/shadow/getting-started/
but your problem is most likely this
sourceSets.main {
output.setResourcesDir(sourceSets.main.flatMap { it.java.classesDirectory })
}
and remove input.set(tasks.shadowJar.get().archiveFile) from the remapJar task, simply doing the from(tasks.shadowJar) is enough
also why are you using two different versions of the mixin library?
okay i did most of you told me
as for the two different versions of the mixin library
frankly i have no idea
im using a template thats been recommended to me (which ive used a few years ago i believe)
in anycase this is what i have rn: https://pastes.dev/audNwWVzL5
Still the same thing
Which is correct?
LootTable lootTable = drop.getLootTable().getLootTable()
or:
LootTable lootTable = Bukkit.getLootTable(drop.getLootTable().getLootTable().getKey());
or both literally the same?
shoot, forgot to mention drop is an instance of:
public class RandomDrop {
public enum DropType {
MATERIAL,
LOOT_TABLE,
}
...
private LootTables lootTable;
private List<ItemStack> items;
// other constructors
public RandomDrop(DropType type, LootTables lootTable) {
this.type = type;
this.lootTable = lootTable;
}
public LootTables getLootTable() {
return lootTable;
}
then I suspect the issue is the outdated shadow version, look up on the link I sent above, beware the plugin id is different as it changed maintainers
No idea what I did but it works now
Tysm for the help
guys i need help
i am making a plguin and the command there are 2 of the same one but one iwth a name space
?help
selfrole Add or remove a selfrole from yourself.
cleanup Base command for deleting messages.
embedset Commands for toggling embeds on or off.
info Shows info about CafeBabe.
licenseinfo Get info about Red's licenses.
mydata Commands which interact with the data CafeBabe has about...
set Commands for changing CafeBabe's settings.
uptime Shows CafeBabe's uptime.
findcog Find which cog a command comes from.
names Show previous usernames, global display names, and server...
userinfo Show information about a member.
listcases List cases for the specified member.
reason Specify a reason for a modlog case.
permissions Command permission management tools.
is ur plugin name the same as the cmd name?
no
or is the cmd name already in use?
it wont let me upload the image
upload to imgur,
otherwise to send attachments here you'll need to verify with ?verify
?verify
Yeah thats always the case
but its a differnt name
the plugin is caslled cookie bite and the command is cookie shop
no i understand that
do you have a fix my 1st idea was because the old plugin woudlnt load on test server i used my terst plgin and it hasd the same comand but twhen igot it to work (the issue was that the plguin name had a space) but i removed it and it iss till there and i even made a new server
Every plugin does this afaik
my old plugin that i was testing on didnt
and i made a command called test command and it does it with it as well
well. thats because what ur looking up, qualifies the namespace.
If your plugin is called foobar and the command is foo, although these names are not the same, when you search /f.., youre going to see both foobar:foo and foo, because the name space satisifes the condition of the search parameter.
if instead your plugin was called fortnite, and the command was battleplass, typing /bat... will never show the namespace
What if I did co0kie shop
btw theres send-namespaced, in the spigot.yml?
whcich is localized to just ur server
Ok but will it effect the other ones
Yeeah
otherwise use onTabComplete.
declaration: package: org.bukkit.command, interface: TabCompleter
So if I use on tab complete it won't remove anything else
yeah
If it or rename the command doesn't work what can I do
wait no
im getting it all wrong
it's called a blockstate
how do you modify blockstate of a button, specifically the attachment part, not the direction
declaration: package: org.bukkit.block.data.type, interface: Switch
is this deprecated, or what is the difference between this and Attachable
oh i see it inherits attachable
button.setAttachedFace(Switch.Face.FLOOR);
block.setBlockData(button);
Like this?
if (data instanceof Switch buttonData) {
buttonData.setAttachedFace(FaceAttachable.AttachedFace.FLOOR);
}
How can i get an itemstack from a YAMLConfiguration. Ik there is getItemStack(String), but idk how to make that work in the .yml file, currently, i have material: STICK but that doesn't work
It's part of the configurationsrializable api, which is really a serialization and not a configuration api
so how would i be able to get an itemstack from a .yml file?
You can do cfg.set(key, itemstack) to serialize a stack, then save the config
ok
Hi guys, has anyone worked with Bundles?
I need to make it so that you can put non-stackable items (potions) in it more than one.
I tried to catch the InventoryClickEvent, but when I try to put the second potion in the Bundle - the event does not work at all.
I'm pretty sure it's hardcoded not sure if it can be changed
you probably can shove more items into the bundle with the api, but i'm guessing the client sees that the bundle is full and won't even send an inventory interaction packet when clicked
You can put more than 1 potion in it via code.
But I can't figure out how to track clicks in a normal game
you could maybe jerryrig it to work by making the bundle always appear as empty to the player
That's an idea, thanks, I'll try it.
idk how feasable that is but
when player clicks the bundle change the max item stack size of the potion to 64 (or whatever you want)
give it a random UUID so it doesn't show stacked and so you can only ever remove just one
then when player takes an item out, just remove those components
That would be what I'd try
that should work i think
it's a bit finicky since you don't want to miss any instances of the player taking stuff out, but it should be doable
thanks you, guys!
i'll try it
i renamed the plguin it self and now it works
guys if anyone dont mind pleae can someone dev me a complex plugin for minecraft for free
please dm me
“Complex” and “free” are two words that don't go well together.
I mean sure, but then its gonna take a few years to create
4 years minimum
oh nah why would someone make for "free" complex plugin spending time for what
maybe if its a good idea and u sell it or release it after
Is it not allowed to include a grass block design in part of a logo (for a plugin, server software, or even a Python program)?
Even if the design is hand-drawn, would using it still be considered not allowed?
well depends what it looks like
if it looks like a grass block
probably not
if its grass
probably yes
where did u even get the not allowed from i didnt know that wasnt allowed
EULA & MUG
Hi, is there a website where all the translation keys for the items are listed?
https://www.spigotmc.org/wiki/the-chat-component-api/#translatablecomponent
There is no link behind (see here) specified ...
you can get it from the material
I use api version 1.18 ... the method doesn't exist there ...
You can open the default language file and take a look
Try using adventure library: https://docs.advntr.dev/localization.html
Not available for spigot ig
You can use adventure on Spigot
however that does not solve the problem
you still need the translation key
Do you think the paper server code has a map where all the translation keys and their corresponding material type is listed, so I can copy paste it for my plugin?
Loop through all materials and get their namespaces and library will make a translation 🗿
Open the language file
update to a version that isn't dead
or downgrade to 1.8 which regrettably isn't dead yet
Hello sir, I would love to work and spend time for you for free, sounds like a deal of a lifetime. I'm honored and I hope you choose me among all the people lined up to help you
Where is the language file located?
assets/minecraft/lang
Minecraft client or server?
The server comes with only the en_us language file
I don't remember if it contains all keys or not
Do you know where this file is on linux?
I installed mc launcher in /opt
looks like all of them
Ok then Ill look for the server one
No idea I use prism
inside the .jar file
^
.
Mhm
thats very helpful
So and now the only way I can implement it for my 1.18 plugin, is to put it all into a map?
Maybe with AI it will go faster but this will be very annoying
I mean it’s probably doable with NMS
You can just read it as a map using the config api
Remember that yaml is a superset of json, all json is valid yaml
thats a great idea
or yeah use nms which already handles the names and such
Actually I wonder how accurate just doing “item.” + Material#getKey()#getKey() + “.name” would be
Really?
what if instead of nms we just rewrite the entire minecraft server
from scratch with nothing in it
would probably be pretty accurate
i think thats a good idea 👍
Actually you’d have to do either block.minecraft.<key> or item.minecraft.<key> depending on Material.isBlock
i wish there was a project dedicated to that
could call it mine something
maybe like minestorm
Like this?
TranslatableComponent c = new TranslatableComponent(Material.isBlock() ? ("block.minecraft." + Material.getKey().getKey()) : ("item.minecraft." + Material.getKey().getKey()));
Yeah that should work
Great, thank yall
is there a reason you couldn't use Material::getTranslationKey?
is there a way to make a mob with no AI to constantly be looking at a player?
can i just do mob.getEyeLocation().setDirection()
I am not using the latest api version
Try and see i would say, I think it could work, but I am not sure
ah ok im just not sure if it actually sets the mobs direction or the direction of the location itself
that method has been there for a while tho
what version are you on?
Looking at the method names I would assume it will do what you want
it sets the location of the direction, since it returns a clone
1.18 very old
thanks do you know if theres another way to set direction with a vector
you'd have to teleport them to that location
or if you're using internals, you could use the lookAt methods
ok so i would just get the mob location not the eye location and tp him to it
yes
actually, I didn't realize that you said no AI. I am unsure whether you can make them look at anything
ok its an enderman i dont want moving so i guess ill just setAware to false
So I am using a POV/camera feature for my server in 1.21.8 where I spawn a new armor stand then set the player's camera packet with protocol lib to the armor stand (I hide the armor stand after and use invisibility to hide player's arms)
I have a few questions
- Is there any better system for this or is this the right way to do it with armor stands?
- If the player is far away and doesn't have the chunk where the camera is loaded, the camera won't work at all. Should I just teleport the player over there and then back or is there a better way for this too?
if you make the player spectate the armor stand, you probably shouldn't hide it (i assume by hide you mean the Player::hide/showEntity api, which will destroy the entity on the client side and break spectator mode)
i'm not sure if the client will behave well when spectating an entity out of its tracking/chunk loading range
you can try it, but i suspect that once you teleport the player back, the chunks will de-render and things will break
something you could try instead of that is to send the set_center packet which sets the chunk loading center position, and set it to where the camera is, then send the chunk, and then try spectating
iirc setaware false will also disable the look/movement/jump controllers on the entity, but in either case you can teleport the entity to make it face the direction you want; if you want them to turn smoothly, have a 1-tick scheduler task that'll turn them by n degrees towards their looking-at-target every tick
wait on which version are you?
"1.18 very old"
anyone pelase can anyone please dev a complex minecraft plugin for free
Nah
lowkey
nobody is doing that request
its not even something
i could post or /sell
Better off learning java than finding someone that would do it for free
just do it with mythic lowkey
would be easy
crucible + mythicmobs
u only need to buy crucible
free mm will do
I am currently trying to animate a daytime transition per player. But apparently, with setPlayerTime(long time, boolean relative) ( https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Player.html#setPlayerTime(long,boolean) ) that looks really wonky. I found this forum post where they found the same thing: "I just tried it but the thing is: Somehow the world (global) time is able to change smoothly but the player time isn't. I don't really get why...". (filled, but never really solved, link: https://bukkit.org/threads/change-player-time-smoothly.468063/ ). Does someone know a viable solution?
Did you set relative to true?
no..
I did now, it still updates about once a second if i had to guess, when it should be every tick
I tried this back in I think 1.12 and it worked fine
done
Do you happen to have the code lying around somewhere for me to have a look at it? 👉 👈

A true classic
Why is my plugin jar file 17.8mb in size? I included net.dv8tion.jda.api as a dependency, is there a way to reduce the final plugin size?
don't shade jda
Use the spigot library loader for applicable dependencies, minimize anything you have to shade in
hey so how do i make a Equippable item not Equippable? specifically need it to make a playerr head not equippable
(i see that there is hasEquippable, setEquippable and getEquippable, i dont see how to unset it)
Tried setEquippable null
as far as i researched that would set the component to its default value
worth giving a try
too bad spigot doesnt have a PlayerArmorChangeEvent
maybe try making the equipable slot the main hand
at least that works when using /give and equippable={slot:mainhand}
what
u cant se the slot to https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/inventory/EquipmentSlot.html#HAND
declaration: package: org.bukkit.inventory, enum: EquipmentSlot
nice
yeah that did it
Q: I have a registration portal for my community server that allows people to verify their emails with a university, then bind it to a discord profile using a bot. The bot allows users to enter their MC usernames into the thing. I have used rcon but I have security and reliability concerns for the method. I was wondering how DiscordSRV does it with the bridge to my discord (console, and server chat) and if I can set something similar up. Do bear in mind that the otp registration system and minecraft server are completly different servers on different IPs.
Im pretty sure the best way to achieve it is through my discord bot, and then somehow have a plugin listen for requests and then execute the command that I need.
Any ideas? maybe a good library to look into?
discordsrv uses JDA
I think the best approach is to create a remote database that I can connect to for the OTP system and the ranking system as right now I am managing 2: one on the mc server with rcon, and one on the otp server. Trying to sync them together can be messy.
The server can just run a bot with JDA
Is that able to hook into my existing account bot hosted elsewhere?
when i try to get the direction of a player, do i have to manually round it if i want a flat cardinal direction like N E S W or is there any existing function to get that
(currently getting direction as a vector)
player.getLocation().getDirection();
Not really
I think a centralized database is my best bet then, thank you!
ig you can do it manually like this
somone help my ip got banned from spigot for download so many plugins
or this... more organic
declaration: package: org.bukkit.entity, interface: Entity
can you download some plugins for me
nvm
How many plugins do you have to download to get your IP banned?
really fast xd or like 20
Hmm that doesn't seem like much
Sneaky golem in the pocket
the pocket
Their IP wasn’t “banned” they were just rate limited
Best way would be to use a DB. Then plugin on server checks db. This avoids having to code direct communication with the mc server and worrying about security
I remember I made kind of like my own whitelist system for something like this
Used a db to store everything, on connect it checks if that user exists in a db if no deny login
how can i remove the warning?
selfrole Add or remove a selfrole from yourself.
cleanup Base command for deleting messages.
embedset Commands for toggling embeds on or off.
info Shows info about CafeBabe.
licenseinfo Get info about Red's licenses.
mydata Commands which interact with the data CafeBabe has about...
set Commands for changing CafeBabe's settings.
uptime Shows CafeBabe's uptime.
findcog Find which cog a command comes from.
names Show previous usernames, global display names, and server...
userinfo Show information about a member.
listcases List cases for the specified member.
reason Specify a reason for a modlog case.
permissions Command permission management tools.
I don’t think you can remove the warning
Short of maybe a resource pack that removes the lang entry for it
hey guys i have a question how i can update my minecraft spigot version from 1.21.5 to 1.21.8 i have already the Spigot java version 1.21.8 downloaded but how i upload it ? thanks for help
Just replace the jar file
Hi, I'm trying to create an effect similar to Hypixel where an armor stand holds an arrow item at a 45-degree angle, with two horizontal particle lines - one above and one below the arrow the frist screenshort was my one and 2nd screenshort from hypixel that how i want
Current issue:
• I have an armor stand holding an arrow with RightArmPose: [-90f, 0f, 45f] (which makes the arrow diagonal)
• I'm spawning red particle lines, but they appear vertically/diagonally instead of horizontally
• I want the particle lines to be perfectly horizontal, parallel to the ground, regardless of the arrow's rotation
ah i found it thanks men 🙂
if i replace the jar file the server host from me is doing the version 1.21.5 and ignore the 1.21.8 file how i can change this ?
Probably a setting on your server host
can you help me ?
.
what?
what mean by bot account
this all my real account
No, them.
i verify
The person you responded to.
nah bro ur good
if anyone can help then please and i was in spigot 1.8.8
Well show your code.
• I want the particle lines to be perfectly horizontal, parallel to the ground, regardless of the arrow's rotation
This should already be the case if you're creating the particles based on constant logic, i.e, not influenced by the rotation of the item frame.
By code i mean, what you have right now which gave you the result seen in the first screnshot @faint prawn
anyone know how i can change my host server from host-unlimited the spigon version 1.21.5 to 1.21.8
mfer is this #help-server ?
BROOO HELPPP
[15:32:47] [Server thread/ERROR]: Encountered an unexpected exception
org.spongepowered.configurate.loader.ParsingException: []: Unknown error occurred while loading
...
Caused by: org.spongepowered.configurate.yaml.internal.snakeyaml.parser.ParserException: expected '<document start>', but found '<block mapping start>' in 'reader', line 15, column 1: _version: 31 HELP
You’re using sponge
But it’s just saying your yaml file is invalid
Put it in a yaml linter and itll tel you whats wrong
@drowsy helm
I can't understand much about these situations. I have screenshots from these situations. Can you help me if I send you the exact error in private?
Of course, if you are available, I would be very grateful if you could help me.
@solid tangle Dont cross-post, and this is the wrong channel. And please dont spam DMs at me.
Its a warning. Ask your question and then wait patiently for a response. buoobuoo already gave you a valid response.
@lost matrix Ok thanks
.
send the math or code you are using for the particles, might help others understand your problem
there is code
how do people make really complex particle effects? like how do you do that much math? is it just a lot of trial and error and doing it like incrementally? or are there tools for this?
there are some generators i seen
most are probably just trial and error probs
me?
i was about to say why are you using nms then realized its 1.8 😭
wat?
cuz like ive seen some crazy stuff and if someone were to think of all that math in their head itd prolly explode
vector/graph math and some other formulas
its not like they are doing the math manually although you could do so
like on hypixel skyblock they have a boss which creates this big particle cube around itself iirc
i could think of how youd make basic 2d stuff, everyone learns that in school but its the 3d aspect of it that really confuses me
this effect?
combine multiple 2d and you get 3d
if that helps
basically just need to learn, triangles, cirlces, and squares and you should be good to do most anything
yeah that makes sense obviously but like
its just a lot harder to imagine as soon as you add the third dimension ykwim
yeah not everyone is spatially inclined
i can picture a sin function but idk how itd be if i multiplied it with another one in the z axis
if that makes sense
yeah, its takes a lot of study and testing
and that is what testing is for
its like those that makes animated things with chars
also you should test at the extremes sometimes too 🙂
get some cool effects sometimes doing that
oh right
the donut code donut
true ive had that with UI design
thats... interesting
why did u look up
now how does someone even do that one
map the alphabet in some grids and then make a method to replace the 1s from the grid into a particle and make the chars then another method to rearange that into words
i'd probably just spawn particles from a java2d graphics canvas after drawing text on it
though we have text displays now so it doesn't really make much sense to do this with particles
Text displays make that so much easier
clever, but yeah, its not to replace text displays, its just to test all the things u can do with particles
1st we are spigot not paper, also that probably isnt shading it. Use a build system like maven or gradle
im using spigot api
still running paper server
figure out how to shade with intellijs build system or use a more conventional build system like maven or gradle
still dont work
did you add the respective shade/shadow plugin?
ye
what does your build script look like
Also there's no way you got spigot that fast lol, BuildTools takes a hot second to build
wait maybe have problem
java version "1.8.0_461"
Java(TM) SE Runtime Environment (build 1.8.0_461-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode
I guess you could've had a build lying around
latest version requires java 21
ye
Hello i need help my plugin doesnt work it like half works but theres a proplem that ruins it
What’s the error?
The measurement?
No like the redstoner
I tried to make a plugin that shoots a nuke out of tnt rings but when the tnt rings spread out by spreading out i mean the rings start as small and become big with velocity but when the tnt is falling down then the tnt snaps back to the original place they spawned in and lose alot of velocity and then it repeats but the first ring in the order doesnt
Lemme show the code rq
Wat no
Shadow il dm u
Check dms
Consider using some punctuation, I have no idea what you're saying
if someone can generate me a complex minecraft plugin i will give them vps
What is vps
When will you get the hint
Vbucks /s
can someone dev complex plugin for me? I will make the dev pay me 100$ 🥺
Sure /s
Can u throw in an oracle free tier vps that you also have access to?
idk dude, are you that good of a dev?
Hi, I have just tried it rn and it doesn't work. The problem is that Material#getKey#getKey returns diamond_sword as an example but that doesn't work. The translation key for the diamond sword is swordDiamond ...
Do you have another solution?
This is your 3rd time. Last time you said you already found a developer for free dawg.
he downgraded "write me" to "generate me"
he wants vibe coders clearly.
i know a professional "chatgpt plugin maker" but he charges 25-50usd per plugin
i believe he was bosnian
He might have meant me. He talked to me about his idea and tried to win my sympathy. I don’t know if the story he told me was true or not honestly, I don’t believe him, because it sounded almost impossible. Anyway, I agreed but planned to make a smaller version of his plugin idea for him. However, when I joined his server, he literally didn’t have any plugins at all, just a normal world. So I decided to change my mind.
This is what happened when he asked me to join his discord 😭😭😭
Yeah he’s looking for a whole setup bruh especially for free.
😭 dm me the full story.
lol
Screenshot even
hhhhahahhaa Because of his brother's story, I sympathized with him. Do you think he is honest?
I don’t know the story bro send me it
ahaa
hahahaha
I won't believe him or disbelieve him at the same time, but I won't waste my time on someone who hasn't setup their server yet and wants a "complex plugin for free."
bro 😂 😭
did he tells you? hahah
nah but he sent me the entire thing he wants too
😂😂
Bro he’s Indian
India Turkey Brothers 😎😎😎
You have to do it
did he say that? hahahah
sybau
++ :D
(if anyone can help, feel free - I just replied to him for the context)
yeah, use Material#getTranslationKey
o
might just be worth to call the nms equivalent of that method then
translation keys should just be item.minecraft. + Material#name.toLowerCase?
i have done that before when .getTranslationKey didnt exist, that seemed to work
it's not as they mentioned
they mentioned item. + Material#getKey#geyKey which would be invalid as lang entries consist namespace aswell
actually no you seem to be right
Where did you get swordDiamond being the key from? @cobalt drift
I just double checked it and it's item.minecraft.diamond_sword
Ill try it again tomorrow
But I dont think that this will work, as Material.DIAMOND_SWORD.name().toLowerCase() will return diamond_sword ig and I think that doesnt work
How could I do this?
Never worked with NMS tbh and I was happy with that haha
why would it return diamond_sword
u arent setting the material id to lower case
ur setting its name
name is the enum name, which is DIAMOND_SWORD
the key approach will work
"item.minecraft." + material.getKey().getKey()
Unless he’s using legacy, wouldn’t that return smth weird
it would just return DIAMOND_SWORD
Already tried it
Ill try some more things tomorrow
It should work just fine
if you want to use nms you can get the translation key from the nms itemstack
Maybe its also due to bad code
How could I do that? Any code example?
Never used nms
use that as your last option
why
you are stuck on 1.18, so using internals shouldn't be much of an issue
you can just mark them with comments in case you want to update it in the future to a version which has the translation key method
You cant use NMS across multiple version iirc
but you are stuck in a single version so why does that matter
what versions are you targeting
Id never use 1.18 private server
1.18-1.21.8 so newest
is there a reason you couldn't just use 1.21.8 + viaversion/viabackwards?
What you mean? The plugin will be public and server admins should be able to use it for their servers if theyre running 1.18-1.21.8
so it's a public plugin
Yep exactly
you made it sound like you're making it for a specific server
I think I should say that directly next time haha
I don't get why you would support anything other than latest and maybe the previous version given ViaVersion exists but alas
just use reflection to get the translation key
Looking at bStats there are still a lot of servers running 1.18, 1.19 and 1.20
How can I do so?
I know how reflection works
But what field of which class do I need to use reflection on?
1.18 and and 1.19 aren't even listed in there, meaning they fall into Other (so less than 2.7%)
and 1.20.4 + 1.20.1 make up 9.4% which is somewhat significant, but in the end less than 10% combined
is this just for items or blocks too?
Hmm but supporting 1.18 is not a big deal. Had no problems since now. I think thats the only one as the plugin is almost finished
For blocks too I think
What's the usecase?
Or can you translate a Material.GRASS_BLOCK?
I am coding CaseOpening and if someone draws an item without specified display name he will get a message like
You have won {item}
And the name should be displayed in the players language
Then it's just items
Use reflection on the ItemStack class if that's what you want to do
But you can also add blocks to the case
(Nms ItemStack)
You have to hold an item in your hand and execute a command to add it to a case. And you can also have a grass block in your hand
idk how spigot handles this
It's still an item stack
ah thats great
do you know a good tutorial how to use nms
never worked with it
what is
Don't have one I can recommend rn
1.8.8 is nowhere near as prevalent as it used to be, it is very slowly dying even if we don't want to admit it
Hypixel retains 90% of the 1.8.8 players
1.8 is a very loud minority
alr i will just use google then :)
thank yall for your help
Minecraft: 29.99$
Roblox: free
Ngl most of them should be bots farming in game items
It's also bunch of kids leaving their systems on to farm in afk games
in my experience if you're doing highly custom shit the ideal version is 1.21.5
maybe even 1.21.4 if you don't care about the hide whatever component that much
we updated to hide durability bars
1.21.6+ ruined custom menus
not related to this but while you're here Illusion, do you have your reimplementation of the Slot stuff in a repository or somewhere I can access
what slot stuff
My menu shit? I did it all with nms
a useful little utility I recently picked up and use all the time is what I call Holders
not just a holder class but an entire system
this should maybe be a full repo at some point
you should lol, that's like 10 classes
What did 1.21.6 change
The number .5 to .6 probably
rendering orders for custom UIs and alike
are there any repositories out there that ports over some of paper's events and methods to spigot?
depends on what exactly do you want
mainly player rotations and the jump event
have you tried just using paper?
what do you mean by player rotations?
also, for jump you can just use the PlayerInputEvent
like i wanna set how the player looks specifically without teleporting them in place
also ooooo thank you for the event
so the lookAt methods. Sadly, spigot doesn't expose those
you can just use internals for it if it comes down to that
I guess you cold also use the command, a bit jank but it works
you can call commands inside of plugins directly?
yes, with Bukkit::dispatchCommand or Player::performCommand
neato dorito, thanks a bunch
Particle.FIREWORK.builder()
.location(center)
.extra(0)
.offset(1, 0, 1)
// .data(new Particle.DustOptions(color, 1f))
.receivers(60)
.spawn();
why is a 1 block offset not actually 1 radius
I mean it’s 1 around?
i was gonna say something but no, that suddenly makes complete sense
hm is it a problem to sleep an async thread
probably fine just for debugging right
I just want to put this at a human speed
a bukkit scheduler async thread? it's fine, bukkit doesn't care specifically
it'll just spawn more threads if its threadpool runs out
auto-jump :aware:
No one uses that
is there a fix to buiild tools not running on my pc
im on windows 10
i run it on cli and on gui and it says cant run on my pc
can you be more specific
i downlaod from here
i downloaded .exe and .jar
tried both
then i get a windows popup "this app cant run on your pc"
does it not say why?
you might need to disable SmartScreen or whatever that's called, or enable running non-store applications
inb4 school computer 
That popup only happens on the exe version? Also you can click read more or whatever and then click run anyway
inb4 it's a windows on arm laptop
jar and exe
i do this when starting the exe
nah i ran older versions of buildtools fine
nop
This looks like a "your PC problem"
Just google for some possible solutions
I read "disable all chrome extensions", "repair windows" and a nuclear "reinstall windows"
like how?
im using:
<dependency>
<groupId>net.dv8tion</groupId>
<artifactId>JDA</artifactId>
<version>5.0.0</version>
</dependency>
set the scope to provided
and then provide it through the library loader or another tool that can get it for you during runtime
and then what happens
also what popup are you getting on the jar
it loads normal
So it works fine
the jar is the same as the exe, when i run buildtools
it says this cant run on your pc
its like a smartscreen popup
Could you send me an image in DMs
ok
watch it be a warning for not being signed
I'm curious if this is correct
idk im going to sleep i havent slept
if i did smth stupid like that then mb
someone had a snapdragon laptop in my uni
it looked just like a mac
looked p good
It was just a corrupt portable git install
if (healthAfterDamage < 1.0) {
event.setDamage(0.0);
Bukkit.getScheduler().runTaskLater(DeadRinger.getInstance(), () -> {
if (player.isOnline()) {
player.setHealth(1.0);
}
}, 1L);
}
will this still allow the player to look like they took damage while really not taking any?
or will damage of 0.0 not even tick
i’ve asked this question in a bunch of dev communities and now want to ask here too:
even with the best hardware for a single minecraft server, people keep saying that handling more than around 300 players at the same time will almost always cause performance issues.
is there really no way around this, except using folia?
would appreciate any tips or ideas
Even folia might struggle if said players are all in the same area i believe
well i wonder ur suggestions 1m writing
I do know multipaper is a thing not sure how stable it is
Theoretically you could scale to thousands of players
Ofc you’re no longer using a single server behind the scenes but yea thats the compromise
I'm planning to open a large Skyblock server with over 300 players.
I want players’ items, inventories, skills, levels, money, and other stats to stay consistent even if they’re on different servers — I already know how to handle that part.
However, I don’t have the time or expertise to develop my own custom Skyblock island system. So, I thought about this idea:
- Having one dedicated server for Skyblock islands,
- And separate servers for dungeons and lobbies.
This way, I wouldn’t need to write my own Skyblock plugin.
My question is:
- Is it possible to transfer Skyblock plugin commands to the proxy server?
- And is there a way to control and avoid creating multiple islands accidentally?
I’d appreciate any advice or suggestions on how to manage this setup.
If you plan on having that many players you should have the money to make your own skyblock plugin
Big player count = monetary investments
i don't think i can make a plugin that is as optimized as the plugins on the market
But to answer your question, no you cant transfer commands to a proxy, it’s a completely different environment.
And if the plugin is coded well it should handle that for you
it is possible
Folia should fit perfectly for skyblock since players are always spread out into separate regions
Folia would work, but it still suffers in some areas
And making any given plugin work on folia is much easier than outright sharding your server across like 20 backends
well ty guys
sharding isn't all that difficult either
in fact sharding is probably the best in regards to skyblock
There are still a lot of things to account for
you can easily have like 10-20 shards per instance
E.g. island visitation teleports
yeah, not hard though and given with the latest updates where mojang made it native to move client connections
even more easier
really what drags down performance when it comes to a lot of players is one redundancy and two randomness when it comes to tick events
you need to reduce the random tick events to be well less random and more orderly
so for example, remove all the ticks in regards to plants/crops growing. And set those to predictable times
The point is that folia is much easier because it abstracts away all of that cross server state
The only changes you need to make are to associate scheduler tasks with locations or entities
folia's main thing is threading. While more threads does help, it only does so to a certain degree.
you need more application instances, which is why sharding would probably outperform here.
The main reason we do sharding in minecraft is to thread the main game loop
I never heard of that
I suppose you could do that, but I used sharding because there is only so much a single application instance can feasibly do
What other resource do you run out of? Are you going to need more than 128gb of memory?
well GC becomes an issue as well as some other kinds of logic like the heap memory size. Larger doesn't always mean better here. Application instances are more guaranteed to occupy a single core then some thread from an application is. Also, its a bit more performant in regards to spreading out the resources/using them.
Gc is a valid point but with zgc it isn't really an issue
you can't exactly evenly spread out resources between threads or hard set the resources they can use. You can only really just control the number of them and hope they proportionally use resources lol.