#help-development
1 messages · Page 1322 of 1
in what way? 2 times?
no i mean like, have u looked at the code itself and made sure the value is set correctly
like with ur eyes
not double if's or somethin lol
ah, yes, i checked, they match
idk then, u might have better luck asking in Paper discord, since it does seem like ur using Velocity
Odd, could you send a minimal jar with the issue
If you believe it to be a remapping issue we need the jar

lol
wtf
If i were to want to create custom entities that attack players and have their own abilities, how would i go about doing that? I assume I'd need NMS and something with a fake player entity
if anyone has a library or can point me in the right direction
i'd appreciate
Citizens + Sentinel
their apis?
i haven't used citizens since i used to run my own server like 4 years ago lol
thanks i'll give that a go
why is citizens 20$
Read the Spigot page
just use the free version
are clicks just not sent to the server when you're in adventure mode
for some reason citizens NPCs dont get clicked when the player is in adventure
bruh
Hey! i need help figuring smth out please
I cant figure out how to force the player to spectate an armor stand when they join the server ~ if any1 knows that would be great!
can't read javadocs?
something something doing it onjoin and the respawn logic undoes it
i don't think they're uuid-bound
could be any string, but for players, the player name is used
ok cool cool
not sure how it works with entities, i think the uuid.toString is used for them
Yeah
well
it's kind of a mess
there is also Entity option but there is no getEntities
only remove and add
😿
yeah because scoreboards used to be tied to like entities I think but they removed that so now it doesnt need to be an entity
ok then ill stick to entry
entry can be a string uuid or player name... anythingreally as long as its string.. kinda nice
but how does the Team know that player A is actually player A
if I just set addEntry("test123")... and I'm a player ItsSpexx ?
that seems fucked up lol
does Team have some internal resolver that resolves player names to Player/OfflinePlayer
what the heck
I think Team and Scoreboard could use some PR
refactoring..
The BuildTool.exe is marked as virus for me? Any way to get CraftBukkit builds online? Or via a repo?
No
Use the jar instead of exe
Or manually allow it
wheres the jar
Can’t believe Microsoft doesn’t trust our exe
its not signed
We ain’t paying for that
Looking for some cool plugin ideas
implement Spigot in Spigot
the fully qualified class name in the param is crazy
bru
i love cigarettes
man
do you know how much work i had
i had to deal with caching all player permissions data
now finally
BEAUTIFUL CLEAN GroupChangeEvent and other friends
not to mention all is async and cached with a beautiful friend PermissionsCacheManager
i can smoke in peace, a new clean chapter has been opened
That chapter is not your lungs
XD
i dont even want to think how ill have to deal with nametags stupid system
its giving me a headache
teams and scoreboard like russians and ukraine
Don’t.
how do i name it then?
XD
if I have an event SomeTestEvent, the class name should be.. what.. EventSomeTest?
I usually use SomeTestListener
certainly keep listener distinct from event
I just keep all my listeners on my main class, that way I never have to worry about the listener class name
you want to hurt us, dont you?
I’m looking for someone to help clean up or remake my Skyblock generator Skript. Most of it is already set up, but it has some errors and outdated stuff.
What the Skript needs to do:
• Working generators with levels
• Upgrade system with costs
• Custom blocks per level
• GUI to upgrade/buy generators
• Commands like /gen shop and /gen limit
• Fully compatible with the latest Skript version
I can send the full file and explain anything needed. I just need someone to make it fully working and stable.
Dm if you are intrested
to save space i name my functions a(), b(), c() and so on. programmers are so spoiled today by assuming everyone has an excellent internet connection!
and same goess with class names. i call them A, B, C, D, E, F, G [...], AA, AB, AC [...], AAA, AAB and so on!
we MUST save space! for the turtles!
Hey! i wana use player.setSpectatorTarget(); but how do i target an armor stand thats placed in the world?
I made sure the armor stand exists and the code recognizes its existence, but for some reason it wont make me spectate it
Can we see your code
Also the player is definitely in spectator mode right
wait sorry, what website do u use to send codes here
also turns out it works, the issue is the player is moving freely although they are spectating the armor stand
OMG turns out the issue is no delay.. i did the event as soon as they joined, so i added a 20 tick delay and it works!!

nice job in figuring it out 🙂
tyy! and sorry to bother again, is there a way to disable this? i wana completely remove it from my game
idk if its client or server side
clientside
I think it's clientside, you can disable the teleport using PlayerTeleportEvent.
declaration: package: org.bukkit.event.player, class: PlayerTeleportEvent, enum: TeleportCause
if you want to differentiate the type of teleport
ty ill look into it
apparently dZ is X rotation
too
lmao
Hello, how can I do versioning checks with the future update going to year.x instead of 1.x.x ??
(I want to support both)
My actual system split the Bukkit#getVersion to the corresponding parts, but I want to make it support latest version too, and that year.x will always be earlier than 1.x.x
I was wondering if someone here made a system for this
if (version.startswith("1."))
old as fuck
else
fancy new
what if minecraft get released in the 19s 🤓
wat
okay thanks, that seems logical lol
You technically don't even need to change anything, 1 will always be less than 2025 and beyond, so your current logic should still work...
I'll check if it works after then, thanks
Hello
I need help I don't know why but in my minecraft enchantment walk mod is not working
I am using the 1.16.5 forge version in t launcher
do u guys think mojang unobfuscated will come with comments 🙏
normal comments or u mean javadocs?
hi
yo
docs
Guys reply to my message 🥲
.
I replied
Thankyou bro...😭
np im here to help
I hope that every sock you put on will be slightly rotated just enough for it to be uncomfortable
May your tea be too hot when you receive it, and too cold when you remember it is there
May you always step in a wet spot after putting on fresh socks
May both sides of your pillow be warm
May your article load that tiny extra little bit so when you are about to click on a link you click an ad instead
And finally may your toes always find their way to the corners of your table
U wanna mess with the real sigma?
I am leaving this server i thought I got my solution but instead you are getting angry 😞 good bye
..
compiled class files do not retain that information
so, no
the unobfuscated code is not that hard to figure out without comments
what the hell happened here
Since when is repo.md-5.net taken down?
I'm making a house plugin, and people who aren't added to a house can't interact with it. Does anyone have a list of events I need to cancel? For example, blockbreakevent, placeevent, etc., but there are many more
PlayerInteractEvent for opening doors and such
EntityDamageByEntityEvent if you want to protect mobs
There's probably more
you can take a look at towny to see what events they use
since your plugin is something similar to what that does
or even a plots plugin
So should I check for the right_click_block action only?
you could also scroll all the events and list the ones you think are worth blocking https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/package-summary.html
declaration: package: org.bukkit.event
How can I see how long a Bukkit World has been loaded?
Well, the overworld can't be unloaded so do you mean other worlds that are loaded or do you just mean the server?
I'm asking how to obtain the lifespan of a world, if that's even possible
declaration: package: org.bukkit, interface: World
If the world is loaded, unloaded, and then loaded again, will its lifespan be counted from the last time it was loaded?
The question. Let's say I use some library from Maven via Spigot's library loader, and it does something like this internally: private static final Logger LOG = LoggerFactory.getLogger(ApiRequest.class); and then vomits all errors, including all thrown exceptions, caught or uncaught,and their stacktraces in there. Is there a way to respectfully tell it to shut the fuck up and stop littering the logs? The standard solution is to put something in log4j2.xml to supress them, but on plugin level I don't have such level of control. For some reason Configurator.setLevel("com.example.www.client.ApiRequest", Level.OFF) also does virtually nothing (I don't know why, by the way, probably related to how classes are loaded and spigots logging implementation?). The library authors are not responsive. So what am I supposed to do?
oni chan
the lifespan is incremented by 1 every time the server ticks and that world is loaded
I think this is to see if it's day or night no?
that is different as that can be changed by sleeping; this is absolute
Won't this cause an overflow?
declaration: package: org.bukkit, interface: World
not in a very long time
What is the difference between fullTime and gameTime?
keep in mind that one tick is 50 milliseconds
and we also use long for milliseconds (unix time)
the universe will implode before you overflow long gametime
game time does not reset. It increments everytime it is loaded
fullTime increments when world is loaded but resets when its unloaded
oh, i want game time
thanks
Actually, I want full-time
Does World#getFullTime return hours * 1000?
pretty sure its in ticks
but you can always do a comparison by retrieving the milliseconds time from the system clock
well I guess that wouldn't work lmao
well, it should be in ticks since that is what the server uses generally
Don't think library loader is a relevant part of this question? Is the other library actually using log4j
I do not actually know if it is relevant or not, I just assumed. Also, sorry, it uses slf4j for logging, so my initial question might have been a bit misleading
But Spigot's library loader still loads Log4j, because it is in the list of runtime dependencies (albeit this dependency is optional). Whether it is used or not, I have no idea, honestly. All these loggers confuse me a lot. I do not understand why they are so complicated in Java
java -Dlog4j.configurationFile=(location of log4j config file) -jar
This sets the system property for log4j which is the highest precendence or order in which log4j looks for a configuration file
So setting this and creating a log4j config file it should override all external jars that use log4j
Well, yes, but it's not good for a plugin to tell how to run someone's logging config files
It's actually also bad for library to vomit debug data into the logs either, but muh
well it depends on your scenario really. Generally it is usually enough to delete the log4j config file from the offending jar
the solution I gave is one where you wouldn't need to worry about such things or always having to check
Sup guys, I've got some technical question.
How possible/realistic is it to unload the main world and load a test world temporarily(without much overhead if possible!) via plugin?
Looking to build some benchmarking and stresstesting tool
i don't think the main world is unloadable
what if you unload all chunks tho?
you can't explicitly unload all chunks, but i suppose you can teleport all players out
from there you do still have things like force-loaded chunks through commands, though
The goal is to create different test scenarios where stuff like villages or rooms of entities are generated. Would you generate the location for all of them on one world and just put them on widely different coordinates or how would you do it?
benchmarking entities is a bit difficult due to things like the entity activation range and also because entity ticking doesn't strictly follow chunk ticking
For example:
Room 1 -> Village
Room 2 -> Redstone Machine
Room 3 -> Entity Benchmark
Pretty sure when Mojang does gametests they just have them spread around a flat world
just loading the chunk isn't enough; for many things a player needs to actually be near the entities for them to do the things they usually do
void would probably make more sense no?
then tp the executing player to it?
you can do that, sure
and lock them or sth
because having them flying around and doing stuff would manipulate the score
i'd probably go with test-per-world, or maybe mojangs test instance block is a better way of doing it, but i have no idea how those work
wdym by test-per-world?
I believe they operate on redstone
test-per-world is nice because you can re-run the same test by just re-loading the world from a copy of the save file
i suppose i'm thinking more along the lines of unit testing though
oh so you mean prepare some synthetic void world with the required test rooms and then have the plugin load the world, unload everything else it can, tp player, lock player
i'd go to the extent of having one test room per world, hence test per world
so every scenario has a different world
would you actually prepare them or would you make the plugin generate it?
depends
bc world size may be large (maybe)
i could see myself copying a laggy player base from a live production server as a worldedit schematic and using that as a test case
also works, though i was thinking more along the lines of pasting the schematic into an empty world, shipping that world with the benchmark plugin, and then loading that world during benchmarks
ah ok
pasting schematics is also very flexible but the benchmarks might not be as fully reproducible as actually re-loading a world
yeah will have to see how large the world files may end up
aight I think I know more now, thanks for you interesting viewpoints 👍
💪
I have a question: is there an API that allows me to tell if a player is logged in with an account or offline? I'm creating a login plugin, and any suggestions or help would be greatly appreciated.
No idea how plugins handle that
You can hit the Mojang api to see if a name is valid, but offline players can just use the name of real accounts
consider using an existing plugin like fastlogin instead of homebrewing it
getting it to work properly is something of a trade secret, and doing it yourself is an easy way to expose yourself to "forcelogin" exploits
Alternatively, consider online mode
Lol not really
But yeah fastlogin has it in an easy to use api if ur lazy https://github.com/TuxCoding/FastLogin
Hi, I’m Tetron, a server developer specializing in Survival servers. I handle everything from server configuration to advanced GUI setups, Skripts, and full server optimization.
If you want to see an example of my work, here’s one of my setups: https://builtbybit.com/resources/tetronsetup-rpg-survival-setup.80728/
I focus on creating smooth, efficient, and enjoyable experiences for players while keeping the backend fully manageable and optimized.
?services
If you wish to request or offer development/art/building/administration services, please do so at https://www.spigotmc.org/forums/services-recruitment-v2.54/
Oof no actual java coding it sounds like
the skript backend developer
It's seldom useful unless you're making some serious multi-threaded code
There's a small performance overhead with volatile keywords as well, so you know, don't go labelling everything as volatile and calling it thread-safe :p
?
could try hitting the UUID instead i think
ah wait offline mode uses diff uuids doesnt it
v3 UUIDs, yes
oh no i meant arent they literally just not the regular UUID of the player
Yes, they're v3 UUIDs
arent mojang uuids v3
v4, random
v3 is based on input
I believe Minecraft uses like "OfflinePlayer" + playername and generates a UUID from that
ye
Or something to that effect
not only random but they also verify it is not a duplicate
you are correct, the UUID is generated from the username
one of the few things that has not changed
Playername
The uuid isn’t generated yet brother
not entirely true
the player-provided uuid couldve been here
but yeah it would have to be playername for persistence sake
otherwise offline players would have a new identity every launch
Says it’s unused in the protocol page 🤪
some things never change
at the end md_5 gives how it is created in offline mode
for the UUID's specifically
So, case matters apparently which I had forgotten about
Huh, I actually didn't know we used anything other than type 4
Well, have to use something else because offline mode doesn't contact mojang servers for the UUID of the player and since servers can go from offline to online, it would cause conflicts if the server was generating v4 uuid's as there is no guarantee they are the same as that of what mojang generated for the player in question.
there's also the situation with GSON where volatile variables will not be serialized, iirc.
But havn't used GSON in ages, so take this with a grain of salt
Whoops. Thanks :D
perfect xD
But how else do I make my code thread safe
by restarting your pc
Chat how much so yall usually earn by making plugins
When u offer a service on spigotmc
Like for 3 hours of work
I cant see the rates cause im not logged in on spigotmc
depends on your skill level
Im pro
I'd say anything upto £75 an hour for a real pro
but its up to you and the client to negotiate
as a noob you will earn close to nothing
Ill try finding an idiot and gaslight him that im the best
just look for jobs you think you can do. agree ALL details and take the job
Hmm sounds easy :)))
agree all details at teh start so there is no feature creep
Im rewriting CentralDatabase so that it allows per-plugin instance and not a shared database instance..
okay
how would i go about sending a packet?
ive tried this:
((CraftPlayer) player).getHandle().connection.send(packet);
doesn't seem to work
old forum posts use .getHandle().playerConnection.sendPacket() but that does not work either
?notworking
"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.
It is not recognised, not sure if the version is old / new
I’m on 1.21.10 though
You need the spigot dependency for getHandle AFAIK
Like instead of spigot-api you need spigot, or maybe u need both im not sure
In your build.gradle or pom.xml file
are you saying what i tried above should work
if you have the spigot (not spigot-api) dependency, possibly yes
ive used the jar
ive also tried adding the link as a repository like so:
doesnt seem to work
Bootstrap Jar
The main spigot-1.18.jar is now a bootstrap jar which contains all libraries. You cannot directly depend on this jar. You should depend on Spigot/Spigot-API/target/spigot-api-1.18-R0.1-SNAPSHOT-shaded.jar, or the entire contents of the bundler directory from your server, or use a dependency manager such as Maven or Gradle to handle this automatically.
Please read the release notes for further information: https://www.spigotmc.org/threads/9-years-of-spigotmc-spigot-bungeecord-1-18-1-18-1-release.534760/#post-4305163
just run buildtools and use maven/gradle correctly
I’m looking for someone currently living in the United States who can support me about 1–2 hours per week. The tasks are simple, and no special skills are required.
You’ll earn at least $150/month, and your income can grow quickly based on how actively we work together — even reaching $5,000+ per month with consistent collaboration. This can easily become a long-term contract, and if you support well, it honestly never has to end.
$5000/mo
1-2/hrs week
simple tasks, no skills required
someone near me
sir are you perhaps trying to hire a stripper?
I would ?services you but I don’t think there’s a fourm for prostitution…
"and if you support well, it honestly never has to end"...
HAHAHAHH
Anyone know how to code minecraft paper?
Yeah
just like spigot
like the code is same as spigot ?
no but it's 90% same
ok
just check their wiki
ok
can you make plugins ?
yes
okay?
target.setMaximumNoDamageTicks(ticks); target.setNoDamageTicks(ticks);
Is it safe to call this on the target for every attack?
I think you're meant to set it on every attack since it resets itself
what event can i use to detect when a player trades with a villager
InventoryClickEvent
hello, i have a problem with sending a player to another server with with velocity
I have this method:
public static void sendToServer(JavaPlugin plugin, Player player, String targetServer) {
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("Connect");
out.writeUTF(targetServer);
player.sendPluginMessage(
plugin,
"velocity:player",
out.toByteArray()
);
}
and I make sure that I register the channel on start getServer().getMessenger().registerOutgoingPluginChannel(this, "velocity:player");
but it doesn't seam to send the player to another server, + I know the name of the targeted server is the right one
Sir this is spigot
yes ? this channel claims to support bungeecord as well so I thought i could get help with that because velocity can use bungeecord messaging
i think you have to manually enable the bungeecord messaging channel in the velocity config
paper must deprecate everything they touch so it's disabled by default iirc
you do not
It really do be like that.
Can we GUID every shulker box on the server? I know we can add custom NBT tags, but what happens to them when the box is placed and broken?
You'd have to store and reattach the tag to the item
I see
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /Users//Documents/git/XinCraft-split/xincraft/matches/src/main/java/net/xincraft/matches/match/cage/ThinBlock.java:[3,40] cannot find symbol
symbol: class JsonIgnore
location: package com.fasterxml.jackson.annotation
[ERROR] /Users//Documents/git/XinCraft-split/xincraft/matches/src/main/java/net/xincraft/matches/match/cage/ThinBlock.java:[25,6] cannot find symbol
symbol: class JsonIgnore
location: class net.xincraft.matches.match.cage.ThinBlock
[INFO] 2 errors
[INFO] -------------------------------------------------------------```
points to this but it seems fine in my IDE?
I'll assume it's one of those things that your IDE indexes out of nowhere but maven fails to find
and/or java versison related
and/or ide plugin
frankly, with display entities, i'd just use real ones and use the API rather than trying to handle fake ones myself
wat
just use the spigot api
and Player#showEntity works perfectly fine
just do it bungee way
it'll work on velocity too
they have bungee support as far as i know
then spawn two display entities, one for each player!
display entities are dirt cheap
their tick method is barely two lines of code !
It's best to be mindful still, the entity tracker is kind of horrible
i have custom armor stand which i replaced tick method with basic math
if you're going to DIY entities you're probably going to be doing a worse job if you don't know what you're up against
I had to rewrite an image map plugin to spoof the entities over packets because the thousands of entities in the tracker, even if they didn't tick at all, were slowing down the tracker itself
they still appear in the timings report
But yeah for something like this, the api is probably fine
It's just that it will scale n^2; 100 players will now have 100 entities that are each checked for tracking by 100 players
don't they have chunk view players ?
if an entity is in a chunk and a player can view that chunk it'll only then apply tracking logic
I mean yeah, I meant if 100 players are in range
oh good
Like if it's a crate or something at spawn, where you expect a lot of players
And if you have 5 crates now it's 500 entities checked for tracking by 100 players
For a total of 50,000 canSee checks per tick
That said, start with the api; you can pretty easily migrate it over to nms if you actually need to
the vast majority of which is an early bail-out, at that point you'd also have to worry about all the regular entities with ai and goals players are going to spawn, farms, random ticks etc
get the job done first, profile second and if it happens to be a performance concern then you can take action
It's an uuid set iirc, and if the player has any toggled visibilities (they will since this crate is nearby) it'll have to hash the uuid and index into the map
oh no, hashing two longs
I at one point experimented with flattening the map to use a long[] instead of an uuid[] since it seemed that dereferencing was making up the most of it
not my 3 cpu cycles
Yeah, things do add up in bulk
Granted, this was with like thousands of entities near 20ish players all at the same time, so it's not quite the same scale
But it was getting to the point where the tracker was eating up more tick time than ticking normal entities
In the end I ended up rewriting the entity tracker to update on events, rather than polling every tick
So e.g. entities are added to the tracked set when the player comes within view distance of the chunk they're in
And vice versa
No clue why spottedleaf le Mr. Multithreading doesn't do this by base; checking every entity every tick for an exact distance is 🇧 tarded
I upgraded my server box memory a couple of months ago 🙂
time to sell it and make a buck
I guess I could sell the old stuff. Its only 16gig though
millionaire
Quite possible if the price continues to rise
If you wish to request or offer development/art/building/administration services, please do so at https://www.spigotmc.org/forums/services-recruitment-v2.54/
Oh no its a total disaster the world will end and it will fry your cpu and mental health
👋
I'm trying to compile a 1.21.10 NMS module against Java 21 and it's giving me this error
E:\Projeler\Zeltuv Industries Ltd\ZelHide\NMS_v1_21_10\src\main\java\com\zeltuv\hide\nms\NMS_v1_21_10.java:13: error: cannot access Connection
import net.minecraft.network.Connection;
^
bad class file: C:\Users\Deliable\.m2\repository\org\spigotmc\spigot\1.21.10-R0.1-SNAPSHOT\spigot-1.21.10-R0.1-SNAPSHOT-remapped-mojang.jar(/net/minecraft/network/Connection.class)
class file has wrong version 65.0, should be 61.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
Am I supposed to compile it against Java 17?
Why it doesn't change entity display name in ClientboundSetEntityDataPacket intercepting?
packet.packedItems().add(new SynchedEntityData.DataValue<>(
2,
EntityDataSerializers.OPTIONAL_COMPONENT,
Optional.of(Component.literal("Custom Name"))
));
packet.packedItems().add(new SynchedEntityData.DataValue<>(
3,
EntityDataSerializers.BOOLEAN,
true
));
21
Is this packetevents or something?
Or NMS 🤔
feels like NMS
But when I do, I'm getting the given error
That is Java 17 you are compiling with
so i need holograms for my plugin (an updating multi line hologram above custom blocks) would it be more recommended for me to use an existing hologram api such as decent holograms or handle the holograms myself in the plugin?
Text Display entities are easy to use
pick your poison
text displays support multilines and you can update them on a whim
decentholograms has built-in placeholderapi support and other convenient features
personally i wouldn't bother with hooking into it if it's just a simple hologram you update manually
thanks for the advice
🍞 > 🔑
I specifically picked 21 😭
Must be a glitch in my side then
General question plz
So i made a datapack with custom advancements, but is there a way to make a plugin to control the advancements?
plugins can grant and revoke advancements, yes
even if its custom?
tysm
totally not token grabber
how can I catch an exception from getConfig
try catch
i think you might have to load it manually instead of using the convenience method on plugin
as in, get the file and YamlConfiguration::load
Does getConfig just swallow the exceptions?
it catches them and prints them
or not getConfig probably, but reloadConfig/saveDefaultConfig
wat
that doesnt sound right unless ur talking about initial load
yeah initial load
i hate DDD
it just doesnt work
without ORM's
who the hell would prefer this over just simple service classes
bro follows the practice of following practices like the bibles they are
that's why
im just trying to push myself to better patterns thats all
the only thing i like from DDD is value objects, anything else feels like just outdated nonsense of practices from early 2000's
okay
What does “dir” print (someone deleted their message lol)
I added the remapped spigot compiled build tools jar to my dependencies tab Project Structure > Modules - Dependencies but it turns out
I still can't use remapped mojang in my pom
import net.minecraft.world.entity.LivingEntity;
What version?
1.21.10 nvm I added the remapped mojang and it works
does anyone know what an optimized way to animate an item's name? I want to show rainbow animated item names for players, both for items in their inventory contents (armor, contents) and open uis (chests, etc).
i don't mind it being packet-based or whatever approach, just wanna know if somebody already thought of an optimized way to do this without tanking my tps
Not the answer you're looking for since I doubt it's worth doing that, perhaps i could recommend static rainbow/chroma item name like the minimessage <gradient> or <rainbow>?
can you even do it packet-based nowadays with all the hashed item stacks shenanigans
feels like it can turn into a ghost item at any given moment for something like animated names
have you tried the simplest approach first to see how it performs?
simplest approach would be to bake all possible item animations into their own ItemStack instances, then just cycle through them in the inventory (that will animate it inside the inventory view and the item name bar/action bar)
I ended up doing it with core shaders
this is of course more or less complicated depending on what items you're aiming to animate, given if it is on with durability then you'll have to account for the item changing as well
ah, that's a good approach
wish it was more compatible with mods so people could use it more reliably, people do really cool stuff with core shaders
I've seen animated chat with it too
the client has no control over what happens on the server side, unless it's in creative
the hashed item stacks are used on the server side only to determine whether to send a slot update packet or not
before, the server actually used a complete copy of the item; now it's just a hash
doing this via packets is sort of doable, but there are a number of packets you'll have to filter, and it won't work at all for things like [item] embeddings in chat
core shaders is probably the more reliable way of doing it
Yeah that's the way to go about it ^^
[Server thread/WARN]: [DerexXD] Task #37787 for Guests v1.0.1.2 generated an exception
java.lang.NullPointerException: Cannot invoke "net.minecraft.server.network.ServerGamePacketListenerImpl.send(net.minecraft.network.protocol.Packet)" because "connection" is null
at org.bukkit.craftbukkit.entity.CraftPlayer.showTitle(CraftPlayer.java:2960) ~[purpur-1.21.10.jar:1.21.10-2522-56ac4de]
at Guests-1.0.1.2.jar/io.github.derec4.guests.listeners.GuestJoinListener.lambda$onPlayerSpawn$0(GuestJoinListener.java:56) ~[Guests-1.0.1.2.jar:?]
at
anyone know why this may be happening for this segment
@EventHandler
public void onPlayerSpawn(PlayerSpawnLocationEvent event) {
Player player = event.getPlayer();
// Check if the player is marked as a guest
if (player.hasPermission("guests.guest")) {
GuestJoinEvent guestJoinEvent = new GuestJoinEvent(player);
Bukkit.getPluginManager().callEvent(guestJoinEvent);
// Schedule the message and title to show after spawn
Bukkit.getScheduler().runTaskLater(plugin, () -> {
String message = plugin.getGuestWelcomeMessage();
player.sendMessage(Component.text(message).color(NamedTextColor.GREEN));
// Display title to the guest (using configurable values)
Component titleMain = Component.text(plugin.getTitleMain()).color(NamedTextColor.GREEN);
Component titleSub = Component.text(plugin.getTitleSub()).color(NamedTextColor.GREEN);
Title.Times times = Title.Times.times(
Duration.ofMillis(500), // fadeIn (10 ticks = 500ms)
Duration.ofMillis(7000), // stay (70 ticks = 3500ms)
Duration.ofMillis(1000) // fadeOut (20 ticks = 1000ms)
);
player.showTitle(title(titleMain, titleSub, times));
}, 5L); // 5 ticks delay to ensure player is fully spawned idk if this will work actually
// Only force spectator if enabled in config and delay a lil
if (plugin.isForceSpectator() && player.hasPermission("guests.spectator")) {
Bukkit.getScheduler().runTaskLater(plugin, () -> {
GuestSpectatorEvent spectatorEvent = new GuestSpectatorEvent(player);
Bukkit.getPluginManager().callEvent(spectatorEvent);
player.setGameMode(GameMode.SPECTATOR);
}, 10L);
}
}
the event perhaps fires before the player is added to the world?
although you are delaying it by a few ticks; not sure how that works with async chunk loads
Yeah that's not the Spigot API you're using there
Head over to the Paper discord (or even the Purpur one for that matter...)
oh shoot ok
probably actually the most optimal way to do it lol
compatibility with shaders and mods aside, definitely; core shaders are very powerful
the lion does not concern itself with game-breaking mods
i do like my distant horizons, however
okaay
i feel like i've seen this before
Does anyone here use flyway for their CI/CD and DB migrations? I'm considering using it for my team and I have many questions for how versioning works. Seems like theres a lot of potential for clashing
and don't ?ask me 😠
?ask
If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!
im making a plugin where when a creeper blasts a chest , instead of getting destroyed, the chest tranforms to a copper chest and drop x% of items and keep the rest of it in it and it goes through multiple stages of copper chests and then regens back to normal chest with the rest of the items that were not dropped
how do i save the data of a chest (all the items in it) and restore them in another(regened) chest that will be generated by the plugin
Map doesn’t work?
nope doesnt work
Can you provide some code? What have you tried
bruh
i guess whatever they tried worked ;d
Is there a way to mimic a player spectating an entity in bedrock edition? cuz ik its not possible on bedrock for players to spectate entities, but i want a similar feel done through a java plugin (im using geyser to let bedrock join the server)
@EventHandler(ignoreCancelled = true)
public void onInventoryClick(InventoryClickEvent e) {
if (!(e.getWhoClicked() instanceof Player)) return;
if (event.getSlotType() == InventoryType.SlotType.ARMOR) {
e.setCancelled(true);
}
/*int slot = e.getSlot();
if (slot >= 36 && slot <= 39) {
e.setCancelled(true);
}*/
}```
Is this enough to prevent players from talking out armor or am I missing something?
oh maybe the drop event
@sly topaz https://github.com/PaperMC/Paper/pull/9989
sadly it was closed because oven man cannot into memory model
yeah, and now the code is all different so reimplementing it would prove difficult
is there a spigot jump event other than using the moveevent
StatisticIncrementEvent
Or in modern versions you can use the PlayerInputEvent
Well kinda, it’ll tell you if the space bar is pressed but that’s it
if you're on paper, there's a PlayerJumpEvent but iirc it's a bit janky
is this accurate to the tick
i'm adding boss QTEs
should be right
If you just want to detect an input though the input event would be much better
hello i am french i need a developper for hostinger i have big problem
can you guys help me in vocal
lol, french
yess
?services
If you wish to request or offer development/art/building/administration services, please do so at https://www.spigotmc.org/forums/services-recruitment-v2.54/
can anyone help me make it so i can remove a recipe in the plugin i am making
sure, what have you got so far
i havent been able to figure out anything
so, all you want is to just disable a recipe?
yeah
you can call Bukkit.getServer().recipeIterator(), look for the one you want and call Iterator#remove()
it is giving me a handful of errors
such as?
cannot resolve symbol getServer
and Invalid method declaration; return type required
it is now giving me this error Cannot resolve symbol 'removeRecipe'
then you havent got your libraries setup right
could it be that i am using kotlin
shouln't matter, what spigot version are you working with?
the latest i think
and Invalid method declaration; return type required
send code
sounds like you're trying to paste code into a class rather than a method body
isnt that valid in kotlin? xd
wait i accidently had it normal java not kotlin
i no longer have errors
but where do i need to put the item that i want to remove its recipe
you could call Bukkit.getRecipesFor(ItemStack stack)
loop over the recipes and remove them
if (recipe instanceof Keyed) {
Bukkit.removeRecipe(((Keyed) recipe).getKey());
}
or if you know the key you create the namespacedkey directly i guess
this is throwing me for a loop by any chance could you hop in vc so i can try to better understand this
yea, i guess i could
/ban gotida
Hey there, Im using place() method from the Structure API (https://hub.spigotmc.org/javadocs/spigot/org/bukkit/structure/Structure.html#place(org.bukkit.Location,boolean,org.bukkit.block.structure.StructureRotation,org.bukkit.block.structure.Mirror,int,float,java.util.Random))
Do you know if this method loads the chunk before placing the structure?
We have custom spawners in the structure files, which then get setted using a custom datapack, but some of the spawners dont get setted due to some chunks not being loaded (the custom spawners get setted after loading the structure)
How is the datapack setting them?
The API should just do whatever vanilla does. If the blocks are appearing in unloaded chunks then they just be loaded. I expect it would
sup gamers
so how does this mojang deobfuscating stuff work
I assume this menas mojang mappings and the need to remap will be over? I only half noticed that mojang said there was an experimental deobfuscated client in the release, is the server deobfuscated?
hm
spigot post syas to move to mappings but I'm guessing that's just because at the time they will no longer be required the part already deobfuscated will be under the same name
@echo basalt you still alive
Hi
Ive got a project with modules but I cant remember how I did it
because I want to add another module
If I import the folder it doesn't load properly
nvm it somehow just randomly worked
still on a quest to eat all pizza made in southern portugal?
The data pack actually check first for markers which are inside the spawners, then it execute other functions to set the custom spawners
I suppose that this fails in some chunks due to not being loaded
Yes
There will effectively not be any mappings anymore
I eated the mappings
Did bro ping me just to flame my ass
Can someone help me look for a good plugin for limiting items?
like I want to limit totems to 4, pearls 16 and cobwebs to 32, Ive tried Itemlock, Itemcap and Itemlimiter but some of the plugin caps them globally, even if you die and lose them you cant pick them up again.
I'm on version 1.21.6 btw
I'm only human
Blame your ass for being so flammable
But how, is it a detection each tick or something?
Not really, it just makes a /execute for every spawner if the markers are there
But what's the trigger for that execute
It is executed via code after all structures have been placed
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), PluginMain.getInstance().getConfigFile().getConfig().getString("spawners_command", "execute as @e[type=minecraft:marker,tag=eds_center] at @s run function eds:spawners/define"));
I'm not sure there's any guarantee that they'll stay loaded after being placed? (Although I'd expect them to for one tick)
Inside AsyncScheduler:
Bukkit.getAsyncScheduler().runAtFixedRate
Spigot has no such method
True, forget that, but yeah, doing tests it only gets the spawners changed in the chunks near the player only
If I generate more structures close to the players, all of the spawners get correctly updated
?whereami
can anyone help me figure out how to make it so when wearing a peice of armor you get an effect in the plugin i am making
which part do you need help with?
You'll have to listen for armour equip which isnt an event by default
i have looked at a few toutrials and none of them have worked
can we see what you've tried
yeah let em re add it because i aciednelty delteed it
package me.Pig_Lord.spearsmpplugin.netheritearmor
import org.bukkit.Material
import org.bukkit.entity.Player
import org.bukkit.inventory.ItemStack
import sun.net.www.content.text.plain
class effects {
val onInventoryClosed(InventoryCloseEvent) {
Player = Player.getPlayer();
if (Player.getInventory().getBoots !=null && Player.getInventory)().NetheriteBoots {
PotionEffect speed = new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE, 1);
p.addPotionEffect(speed);
} else {
if (p.hasPotionEffect(PotionEffectType.SPEED)) {
p.removePotionEffect(PotionEffectType.SPEED);
}
}
}
}
i think learning java might be a start looking at that
despair
Was this meant to be Kotlin
val???
Yeah
That val is like the only Kotliny thing there though
I could only find toutrials in Java so I tried to make in kotlin which didn’t work
But I don’t think that’s Kotlin syntax
If you could only find java tutorials why not make it in java?
You don’t seem to have much experience with either so I don’t see why you’d make things more complicated for yourself
because i made the rest of my project so far in kotlin
How did you make the rest of your plugin in Kotlin if you don’t know kotlin?
I’m assuming you don’t know Kotlin because there are atleast 20 errors in that code
i know a little bit of kotlin and i understand what i have done so far
But the code won’t run
the plugin so far that works changes the recipe for netherite but that is where my understanding is limited to right now
just learn the fundamentals of programming i guess, then the api, the rest will come from alone
or change to java if you can not find any tutorials or AI actually
chatgpt it
💀
Is anyone down to update Lootin to 1.21.10? I'm having a hard time doing it
What's wrong with chatgpt man 💔💔💔
Should be good for such small taskz
AI doesn't know anything for sure, it can help debug, but if you go too far, then you're essentially going to be reviewing someone else's code for a long while, which is arguably more painful
Skill issue ≠ AI issue
but not for learning, and he seems to need to get more in touch with kotlin
I mean you'll need minimal knowledge to operate
It should be good enough to fix a 20 line class
this aint worth anymore ;-;
Depends how well it knows the format
I tried to get ai to help generate some configs for cobblemon, it just made up settings over and over
Of course, confidently
just enable web search and for 90% of beginner tasks, frontier models will get it correct first try
🙏
and use something actually intended for coding like gpt-5.1-codex
See he gets it
but yes, it's not very good for learning
it's essentially a spoonfeed-me-forever machine
once you do hit something it can't do first second or third try, you're fucked
I'd like to say AI is confidently incorrect
Does gpt-5 not web search by default
Everything web searches now
Pretty sure it does
gpt-5 is a model, whether it web searches or not depends on the client you're using it through
the plugin so far that works changes the
The website
there are 500 websites that work as clients to llm providers
i assume you mean chatgpt; in which case, dunno, i haven't used it since like 2022 or whenever it was first released
How many of those 500 websites steal your data
All
probably all of them, even some of the locally hosted ones
i do know that the openai api playground and the api in general don't retain your data beyond like 30 days, but they still store them for the 30 days for moderation and detecting abuse
the same is mostly true for other providers
everything you need is inside your house
there are some "anonymizers" like venice that promise to scramble your requests and not log anything, but i wouldn't trust them
You should all just expect in this day and age, everything you do is given to someone else
I forgot what it's called
Yk it be creating story books and shi with images
the recently released gpt5.2 beats gemini 3 by a little bit
but opus 4.5 is still at the top
this has always been the case. In the US ISP's are required to store metadata for a number of years
has been like this since like the 90's or something
5.2 is also much better with longer context windows than 5.1
in my experience 5.1 gets very dumb very quickly past 60-70k tokens
5.2 stays mostly coherent up to i'd say 120-130k
it is a little bit more expensive though, and there's no codex variant, at least yet
So what's your top goto model
How much is it?
occasionally the more recent deepseek versions like 3.2; they are kind of shit, but they are useful in that they don't hide the reasoning tokens like openai does
Model Base Input Tokens 5m Cache Writes 1h Cache Writes Cache Hits & Refreshes Output Tokens
Claude Opus 4.5 $5 / MTok $6.25 / MTok $10 / MTok $0.50 / MTok $25 / MTok
about 3-5 times the price of 5.2
Well would you say it's worth it
no, that's why i said it's too expensive
maybe for some very specific very difficult tasks
it is a decent bit better than 5.2, but 5 attempts with 5.2 is usually cheaper and better than one with opus 4.5
I see
it's also quite slow
That's kind of a drag then
is there a way to make floating fire? I want to make something like a fire wall, but it looks a lot less cool if its only 1 block tall.
does anyone wanna test my proxy queue plugin?
Might be able to do it with an entity display
yeah, i just decided to opt to particles insteaad xD
smoke cow bee bee
Are there events in the API to deal with structure gen? How does the generation of the elytra item frame work?
What are you trying to do?
I think there’s ChunkPopulateEvent but that’s after the structure is generated.
how can i spawn a dragon breath cloud?
They're area effect clouds with custom particles iirc
Yes, it is. This is NMS:
EntityAreaEffectCloud entityareaeffectcloud = new EntityAreaEffectCloud(this.level(), this.getX(), this.getY(), this.getZ());
Entity entity = this.getOwner();
if (entity instanceof EntityLiving) {
entityareaeffectcloud.setOwner((EntityLiving) entity);
}
entityareaeffectcloud.setParticle(Particles.DRAGON_BREATH);
entityareaeffectcloud.setRadius(3.0F);
entityareaeffectcloud.setDuration(600);
entityareaeffectcloud.setRadiusPerTick((7.0F - entityareaeffectcloud.getRadius()) / (float) entityareaeffectcloud.getDuration());
entityareaeffectcloud.setPotionDurationScale(0.25F);
entityareaeffectcloud.addEffect(new MobEffect(MobEffects.INSTANT_DAMAGE, 1, 1));
You would have to do something similar using Bukkit API
i didn't realize we could make them use arbitrary particle effects
we need a smoke bomb potion
trying to replace the item frame with a vault, I'm testing out an idea for per player elytras I wanna implement
how about using the entity visibility api to make the item frame visible/harvestable per-player
that seems a bit more vanilla-aligned, although i guess it could be confusing if you're playing with a friend and both break the "same" item frame
Would be easier to just edit the structure file with a datapack
Question, is there a way to add custom advancements through a plugin? i wana make my own advancements but dont wana do a datapack
why isnt the guardian lasering the squid? i want to create the guardian laser effect between 2 locations
Laser goes after setting target as per docs
declaration: package: org.bukkit.entity, interface: Guardian
i'm not sure if it can shoot a laser if its ai is turned off
which build system do you intend to build these plugins with
do you intend to write them in java or kotlin
i recommend maven + java
What exactly are you asking here? What do you need help with in making these
sorry guys
im using end crystals as "spotlights", i use hashmaps to store them and im trying to store the data as a file when the server restarts then load it back when the server is back on, the spotlights work fine until the server comes back on, the commands give the correct feedback like: "spotlight targeted", "spotlight deleted", etc, but they don't actually move or get deleted
make sure the chunks don't unload in between you creating and using the spotlights
that will invalidate the entity reference you hold onto
well they get created immedeitly when the server starts but ive done things very similar to this quite a few times before and never had an issue
do i need to load the chunk then make it or sm?
what would you use for more data on your plugin users? like configs or smth
Database
Me using yaml files for databases in my plugins (was supposed to be a temporary solution)
🥀
Hello, is there no ClickEvent to call a own function? Like i want to send a player to a different server when he clicks a text.
Players can't execute /server on my server and i also don't want to make a command just for that.
use a ClickEventCustom, and listen to the PlayerCustomClickEvent for the callback
with the same id of course
Okay, yeah that seems to work thanks
this reminds me
what's the intended way of opening links from a dialog
ideally without having to change the dialog type itself
right, makes sense
although i don't see a way of even adding action buttons to a dialog
there are inputs and there are bodies
the number and positions of the action buttons seem to be fixed by the dialog type? e.g. confirmation dialog has a confirm and decline action button at the top
i'm not too familiar with dialogs and the api being split into a billion RegistryConfigurerFactoryBuilderConsumer and disconnected interfaces is making discovery challenging
okay, looking at the actual wiki, there's a multi-action dialog type
yeah buttons only go at the bottom and are determined by the dialog type
idk i never tried anything with dialogs lol i just scour the javadoc
I’ve seen an entire keyboard in a dialog
So you must be able to have quite a few buttons
yeah you can use a multi-action or whatever tf its called and add a bunch of buttons there
its just that you cant have any body or input below the buttons
hello! can you help me? recently i uploaded a plugin (i am not sure if i am allowed to share name, so i wont for now), which have description with images and when i placed them they were working perfectly, but after some time they turn like this
Probably too large
are they from discord
discord invalidates image links after a time period, you can't really hotlink to discord images
Nope, 3 of them are 250x140 and they work for time, and then go away
At first were, I changed it from a site that makes image to link and it says its forever, anyway how else to make the image to link...
Imgur
If I wanted to detect when the elytra item frame in the end spawns, could I just use entity spawn event?
Like does it go with the end ship structure itself idk exactly how structures work in the API
Try and see?
with?
My Spigot account was hacked and they changed the email. The email said I should contact administration, but I don’t know what to do. I had paid plugins and I really need them right now
Is this the channel for that?
There are no other channels, I’m just looking for help
Thanks my queen
Can we have a public shaming channel where we post screenshots of people using the wrong channel?
As a regular-lite of mcscans I decline
thank you for your expert opinion HazeFrance
Pretty sure 50% of the messages sent here would end up in that channel
which includes these 5 messages
looks like an issue with spigot's img proxy. it'll either fix itself in a few days, otherwise you should rather upload the images through the description form
I'd rather post screenshots of shitty code tbh
Oh no you cant do that, i dont want to be shamed
Thats only the beginning
i would never shut up

the lion does not concern itself with the ragebait
does anyone know of a good way to detect the spawn of an elytra item frame (in end ship) ?
Do any of the entity spawning events fire
can I ask for plugin help here?
making plugin help yes
configuring/finding plugin help is better served by #help-server
I see. I am trying to make a simple fireball thingy. I am curious is it is possible to summon the fire ball 2 blocks on op of the player and to put a cooldown on this thing. Here is what I have so far.
public void onPlayerUse(PlayerInteractEvent event) {
if (event.getAction() != Action.RIGHT_CLICK_AIR &&
event.getAction() != Action.RIGHT_CLICK_BLOCK) {
return;
}
Player player = event.getPlayer();
if (player.getInventory().getItemInMainHand().getType() != Material.BLAZE_POWDER) {
return;
}
Fireball fireball = player.launchProjectile(Fireball.class);
fireball.setYield(30F);
fireball.setIsIncendiary(false);
fireball.setVelocity(player.getLocation().getDirection().multiply(0.1));
fireball.setIsIncendiary(false);
fireball.setAcceleration(player.getLocation().getDirection().multiply(1));
}
}
iirc to fire it from a different location, rather than doing launchProjectile, you have to spawn it directly with World::spawn, which accepts a Location to spawn it at, and set the appropriate velocity and projectile source yourself after having spawned it
for cooldowns, you'd typically use a Map<UUID,Long> from player id -> last used timestamp; set it to System.currentTimeMillis(), and compare against the current time in the listener; if fewer than x milliseconds have passed, do nothing
a more modern way of doing it is to set an item cooldown with i think Player::setCooldown(ItemStack) and check if the item is on cooldown in the listener; this is the same system as what's used by ender pearls and other vanilla items with cooldowns, and will render a nice cooldown bar for the cooling-down items on the client
I see I will try to see if I can do that
If I were to sleep a thread for a minute (making a countdown thing) how much of an issue would it be?
Or is there a smarter way to do it without 💤 thread
Would I need to use a runnable?
wht is that a plugin xD
?scheduling
Hi, player head item is not obtainable in vanilla, right (without mods/cheats/commands)? It has been a while since I actually played the game, so I'm not sure if there is a mechanic for it.
Datapack
It's neither mods nor cheats/command
player head item has always been obtainable in vanilla, in fact most head database sites have a /give or /setblock command you can copy in-game inside a command block
I need some help I have no idea what I did to my plugin... all the sudden compile fails. I deleted the entire new package i was working on within the plugin and it compiled
I add the package empty it compile
I added an EMPTY class to the package and it fails again
It spams org.bukkit does not exist and cannot find symbol for a bunch of my classes
Anyone available 🙁
Intellij?
Eclipse
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)
This is so weird
I didn't edit anything it just suddenly is acting stranger
I tried again deleted my new folder.. it compiled.. added my new folder... compiled
added a class to the folder... fails
what is with the start of that pom, I would remove this whole bit:
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
If im being honest chatgpt told me to add it to fix it.. didnt work
...
i deleted and it compiled
wtf
your pom is all messy honestly, I would start from scratch
don't use chatgpt to generate your pom
I agree
I can give you a generated pom if you need
just change the values
Yes please
me when i tell maven my source directory is src, but ignore all the java source files
a bit of an old one, but should work fine if you update the versions of the things there
both the dependencies and maven plugins
here's mine
https://pastes.dev/VXzFeiT71r
Intellij generated it
How do I get people to buy my paid plugins?
force them
Want to buy my plugin when I finish it? €5 xd, I'm forcing you
jaaajaj
the gamerule announceAdvancements got renamed to show_advancement_messages in 1.21.11. How can I make my plugin disable the gamerule when its running on 1.21.10 where the show_advancement_messages doesnt exist if im making my plugin using the 1.21.11 API?
you cant
wdym you cant
your api version should be from the lowest version you support
so like from 1.21.1?
i want to support stuff like 1.21.10 and 1.21.11 so
thats too much work
so instead of using 1.21.11-R0.1-SNAPSHOT in my pom.xml as a dependency, what should I use?
im sorry im new to plugin dev 😭
the lowest version you support
this is mostly for api_version
or whatever its called in plugin.yml
tbf i havent done spigot in quite a bit
yeah API version
but would it be like 1.21-R0.1-SNAPSHOT or 1.21-R0.1?
isnt snapshot there because the 1.21.11 is a new version of minecraft?
try changing just that and see if it works
Snapshot is always there for spigot
oh
it seemed like its there because 1.21.11 released recently
private static <T> Optional<GameRule<T>> get(String name, Class<T> type) {
try {
GameRule<?> rule = GameRule.getByName(name);
if (rule != null && rule.getType().equals(type)) {
@SuppressWarnings("unchecked")
GameRule<T> typed = (GameRule<T>) rule;
return Optional.of(typed);
}
} catch (Exception ignored) {
// Not found
}
return Optional.empty();
}```
"Optional<GameRule<Boolean>> newRule = get("show_advancement_messages", Boolean.class);"
"Optional<GameRule<Boolean>> oldRule = get("announceAdvancements", Boolean.class);"
Idk if this would work but you can try
ill try once
It’s likely spigot will remap the old gamerule constants if your plugin is running on 1.21.11
and then use
"world.setGameRule(oldRule.get(), false);" or "world.setGameRule(newRule.get(), false);"
yeah it should
im trying it rn
it worked
it mapped the constant
Hey,
i want to use the premium resource placeholders do they still not work for java 21 or
is the wiki page outdated as it was last edited in june 2024 (https://www.spigotmc.org/wiki/premium-resource-placeholders-identifiers/)
just a random String info = "%%__USER__%%"; in a method it's not actually used in the code just for me to find the source when someone leaks it
welp i just need to try and see ig
is it just me or does the java nullability annotations in vscode do not work properly
ive been using Intelli J idea and it makes everything even project setup alot easier
ik i do used intellij prior but god damn it eats 3.8 gb of ram just on startup
does it?
its only using 1.5 gb for me
smth wrong with ur intelli j idea then lol
i mean i do have 32 gb of ram
whats the problem then 😭
idont want intelli just because then it sucks to switch between vscode and intellij when you're working on client/server website stack
webstorm's support of web frameworks is a joke
i did notice @NonNull didnt work when I switched from 1.21.11 to 1.21 API, i think it depends on the API version too because I had to use @NotNull after switching
code in intellij vs vscode
.vscode/settings.json
{
"java.compile.nullAnalysis.mode": "automatic",
"java.compile.nullAnalysis.nonnullbydefault": [
"javax.annotation.ParametersAreNonnullByDefault",
"org.eclipse.jdt.annotation.NonNullByDefault",
"org.springframework.lang.NonNullApi",
"org.jspecify.annotations.NullMarked"
],
"java.compile.nullAnalysis.nonnull": [
"javax.annotation.Nonnull",
"org.eclipse.jdt.annotation.NonNull",
"org.springframework.lang.NonNull",
"org.jspecify.annotations.NonNull"
],
"java.compile.nullAnalysis.nullable": [
"javax.annotation.Nullable",
"org.eclipse.jdt.annotation.Nullable",
"org.springframework.lang.Nullable",
"org.jspecify.annotations.Nullable"
]
}
😭
what am i doing wrong
hover on the yellow thing
itll tell you to add something like @NonNull or @NotNull
just click the quick fix and itll add it
wait nvm I didnt read your entire code
thats weird
yea.. it only shows up in intellij
Vscode is trash
yeah vscode doesnt really care
using vscode for java development is truly
i wouldn't say stupid
that's a bit mean
but it is true that i would rather use eclipse
intelli j idea is goated
vscode uses eclipse's jdtls language server
its essentially eclipse under vscode's skin
Hello!
I am looking for an experienced developer to create a custom plugin for my Minecraft server.
Server version: Paper 1.20.4
Plugin type: Custom gameplay plugin (OneBlock & SkyBlock)
Description:
- Plugin should support OneBlock and SkyBlock game modes
- PGUI (player GUI) for managing islands / OneBlock features
- Commands for players and admins
- Permissions system
- Configurable settings (config.yml)
- Clean, optimized code
Budget: Paid (price to be discussed)
Deadline: Flexible
Contact:
send me dm
?services
If you wish to request or offer development/art/building/administration services, please do so at https://www.spigotmc.org/forums/services-recruitment-v2.54/

huh when did these get added