#help-development
1 messages · Page 1270 of 1
doing whatever /minecraft:reload does would probably be ideal
yeah look at what that command does
What do you mean? Seeing what that command does?
Look at the nms code
Ah okey thank you
Sorry i'm quite new to NMS and its a pretty steep learning curve lol
Wow just simply unfreezing and freezing without registering them again on reload fixed all the issues. Thank you so much!
did you do it in that order? If so, did you leave the registry unfrozen?
I'd imagine everything would be broken if that happens
No I meant the other way around my bad
I see
if I had to guess, it works because the client sends the registry you already modified to the server so it remains unchanged unlike when you reload the server and registry gets reset causing a desync on the client
long shot, but if I remember correctly, that's how that works
Thank you for the information. I do really wonder, where do you guys learn all this info? Because I'm trying to learn more about NMS and how everything works, but I can't seem to find any good documentation, courses or people that have bundled most info.
most people just look at the code honestly, it gets easier the more you get used to it
I've been doing that yeah, but I don't feel like I'm really learning a lot from that haha
Every time i get into a new class there's 50 new classes to understand
there's also just taking bits and parts from other communities like the modding ones where they have more extensively documented these things as they deal directly with them unlike bukit derivatives
well, that's not quite how that works. The client and the server aren't as tightly separated as you may think
So, while client mods touch mostly client-only code, things like registries and such are shared between the two codebases, singleplayer is really just an integrated server running on your desktop
nms just refers to Mojangs code
there's also nothing stopping mods to touch server-side only code, as you can also inject mod loaders like fabric in the vanilla minecraft server
And mods definitely do interact with that
the term NMS aged really badly tbh, we should all just start saying minecraft internals but that's longer
Pretty confusing
true
the term NMS comes from a time the server and the client were actually separated by packages net.minecraft.server.xxx and net.minecraft.client.xxx
I see
I've been working on plugins on the safe side only using API's for a while
NMS is less fun lol
If you really get to know the workings its probably a lot of fun
because of all the possibs
that's surprising to hear considering there's people like Illusion that would rather create 26 classes just to use minecraft inventory internals instead of recreating that logic within the bounds of the API
most people prefer to use NMS where possible when the API feels lacking, and that's in more places than one would like
Yeah but then you have to rewrite that for every version no?
Cause the code could change
though we're far better off than we were back in say, 1.8-1.12, the API was really lacking back then
yes and no
Someone's talking shit
lmao

My motives for going with nms on that is just the fine control I have
And skipping the headache of emulating every edge case scenario
as long as you don't reference OBC, you could get away with something working for a couple of versions, it all depends whether whatever you're touching in the internals happens to be constantly changing or not
My usual method of learning something new within nms is to start at the craftbukkit layer
and just keep seeing where it references to
at least that's the case now that there's no version embedded the minecraft internal packages, but you'd ultimately reference OBC somewhere so it is all moot, but then you could also just do it through reflection and be happy as long as they don't change the behavior of whatever method you're calling
At a certain point you'll get somewhat familiar with some of the internal systems and then you can just skip half the steps and assume stuff
mostly same, though there's places where one the craftbukkit codebase might really throw you for a loop lol, like when looking at the ItemMeta stuff that doesn't have any direct internal equivalent
yeah no fml screw CraftItemStack
If you don't understand the craft layer just look at the nms one directly
really only works with Spigot though, when it comes to forks like Paper where they heavily modify internals you get to try and understand their logic rather than mojang's lol
it is mostly fine as long as you don't have to look at moonrise stuff
Hello, how can i like something like Persistent Data Container but on a block? im creating a building system and i need to mark the center block of a foundation and i dont really know how, I'd be really grateful if someone could help me. Version is paper spighot, maven and 1.21 ❤️
?blockpdc
Learn about CustomBlockData here:
https://www.spigotmc.org/threads/custom-block-data-persistentdatacontainer-for-blocks.512422/
it won't glitch or anything?
brother wtf is that pfp
I thought it was NSFW for a second but it isn't lol
yeah no it's just a banger
Would anyone know what packet deals with the display name? Like the overhead nametag and what not
Of a player?
Yes
would you know which action?
Would I need a datapack, texture pack or plugin to change the sky color, fog color, grass color of a custom dimension I'm making
thank you
add player
I want to log when I do a pseudo left long press.How can I do that?(plugin)
why doesn't the minecraft development plugin work? (on Intellij IDEA)
What does not work?
Whats a "pseudo left long press"?
what does that even mean lol
"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.
plugin.
yes what is a "psuedo left long press"?
this is left long press click
It's a bit tricky to detect people holding left click
You can listen for consistent interact events, but the client doesnt send a mouse up packet so you can't really know for certain
You'd need to place a block infront and listen for the block break packets
why cant I send screenshots?
?img
Can't send images? That's because you're not verified! Use !verify to complete verification.
Alternatively, you can upload screenshots to any image hosting site and share the link.
Here's some screenshot utilities that you can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org
hey, why this is not working? Im trying to add CustomBlockData dependency,
well, relocations are part of the shade plugin configuration, not the compiler plugin
and, did you try refreshing maven? there should be a lil' reload icon with the maven logo floating around
so where to paste it?
into maven somewhere?
inside the maven-shade-plugin you already have in there, open a <configuration> block and put the relocations in there
yea, got the dependency thx
why doesn't the minecraft development plugin work? (on Intellij IDEA)
that is the old ui
then how do I know what to do?
you want to make a plugin so press plugin in groups, you want to make a spigot plugin so press spigot
then follow the rest of the steps the video might say, eg if they say gradle/maven press that
tnx xDD
This IJ looks outdated asf
Whens the last time you updated?
bro didn't even bother to take a screenshot 💀
thats a YT screenshot
Oh lmao
Anyone familiar with a bossbar api?
Bukkit.createBossBar
Whats the question
are bossbars really such a complex feature or one which deserves its own library/API?
that's a weird way to spell adventure
I can't find how to change the group ID
try expanding optional settings
scroll down? the settings are there under "build system properties" which is below the optional settings https://i.imgur.com/BWAM4x5.png
it would help if you stopped taking badly cropped screenshots lol
and what if it isnt there
well I only have the optional setting
have you tried scrolling down?
and ^
of corse
oooooor paste the one dependency and one repository you need in your pom.xml and don't bother with the plugin
too much work
I mean why u got org.example as ur main class
cause its my first time using the app
I havee question how do I make player heads 😭
I tried doing Itemstack meta
it doesn't seem to work
chat gpt doo doo
it doesn't help me, but rather recommends other code of his
atp he is just flexing on my face
Thanks bro 😭
?customheads
Cool now I don’t have to search for the link anymore
is this old code?
the server is in online mode
is there an alternative to setOwningPlayer
ehh potato potato same thing different story
nyo
declaration: package: org.bukkit.inventory.meta, interface: SkullMeta
the thing is, it does work for any existing player, who has premium minecraft, but still throws an exception (WARN) even though I catch it
i use uuids
doesn't look like you are
findprofilebyname
fml I gotta emulate shift clicking with fake items
is there some way to fully disable an entity's hitbox?
nms to make it have a size of zero
it'll noclip afaik
and it's purely server-sided
for client-side you uh
switch to bedrock
Don’t teams work for that
it would be annoying with teams I imagine, imagine adding every entity that spawns to a team with the player in question
Well they didn’t specify if it’s every entity
Or just John the creeper over at the creeper arcade
why are there so many errors?
update IntelliJ
how
in the toolbar, Help -> Check for Updates then select Download Update and Restart
where can I find download and restart?
it'll appear as a popup once you click check for updates
and then it'll ask you to restart once it finishes downloading the update
hey could u go in the voicechat real quick cause it doesn't work
I do not have a microphone right now but sure
u just have to look
Just wondering if anyone could help here, ive got a private list that determines who is in this settings gui, Ive added a debug to display the list when i open the gui it displays fine but when i run my inventoryClickEvent it has removed me from the list and I do not know why. Ill paste code
?paste
My guess is that you are creating multiple instances of that class
do not call closeInventory in a click event
And the one you are calling openSettingsGui with is not the same one that is registered to handle the event
ignore me, I didn;t see it was scheduled
Yeah, is that bad?
No its in a subcommand class
The list is different for each instance
Can remove that if needed though
That’s how objects work
So its wrong because im calling openSettingsGui from a different class/
with this code closing ANY inventory will result in the player beign removed from the list
Yeah will change eventually it was just for debug
I mean the ide also told me the check for if they were in the list was unnecessary
How can i fix this though because either way ill have to call it from a different class
That’s because the remove call is just a no-op if they aren’t in the list
Only create a single instance of the SettingsGUI class
And pass it to whatever needs it
Im creating one in the subcommand class and in the main class for listener registry
Ill have to make it static or move the listeners
Which is best to do?
?di
Guide to dependency injection: https://www.spigotmc.org/wiki/using-dependency-injection/
You don’t need to do either
How come?
something doesn't need to be static to be shared for multiple classes to access
So dont make it static but how do I call it from a different class without it being a new instance
see the link
you create one instance and then you pass it around
typically as a parameter to the constructor of the class which needs it
What like create the instance on enable and then just get it from the main class?
create the instance on enable yes
Alright thanks, ill try that
then either
- pass it to the receiver class, or
- expose it in a getter on the main class and have the receiver class get it
for further questions ideally consult the link first, it's written for people with precisely your problem in mind
Yeah sorry with the questions, only just getting back into this and was always awful at DI
Still having the same issue but im using the instance from onEnable(), Ill try find what im looking for in the ?DI
?di
Guide to dependency injection: https://www.spigotmc.org/wiki/using-dependency-injection/
Nevermind just me being stupid because i forgot to change the registerEvents()
Thanks for the help
is it possible to cancel generating chunks
but still allow them to generate later on
for context i want to disable chunk loading if the player's velocity is above a certain threshold
I updated to 1.21.5 and all my text related stuff seems broken
I checke the 1.21.5 announcement and it says there are no API changes???
everything relating to Component or NamedTextColor is red
how do I do text colors in spigot then?
ChatColor
can you still do styles etc?
like bold
maybe I should just install the adventure api, it came default when I installed paper 1.21.4
does it not exist for 1.21.5?
Spigot isn’t paper
inst paper built on spigor or something
Doesn’t mean everything in paper is part of spigot
Also not anymore
They hardforked
oh
wish they would make some kind of explanation of what changed
every time forge or paper or anything updates I have to try and figure out the new way to do every little thing
I mean I don’t think paper has changed anything about adventure
but they must have removed it, I can't even find like a changelog or anything
I think its an expirimental build
it let me build with compileOnly("io.papermc.paper:paper-api:1.21.5-R0.1-SNAPSHOT")
?whereami
I'm starting to reach the point where I need to heavily edit mojang's internals regardless
Figured it’d end up being the case
Mojang’s code is often too tightly coupled with itself to be usable as API as is
I wrote a huge abstraction to make it work as a nice API
it's just that I have some use cases where I want even more control
Like, for example, having an item that works as a sort of indirect slot
Where I can deposit / withdraw items from it, shift-click, number keys etc
if I put another world folder in my server folder called "world2" and then do this in onEnable:```java
new WorldCreator("world2").createWorld();
Bukkit.getWorld("world2"); //this works later?
Sure
Dich
what folders/files would I need in the second world folder?
Probably just have a init world method, you also don’t need to create a new world with the creator every time you want to load a world, if it already exists in the server then you can just get the reference from bukkit.getWorld. Should also be noted that getWorld loads it if it’s not already iirc
so if I put a new world folder in the server folder thats enough? Or are you saying I just have to use WorldCreator on server startup?
World creator is to create worlds, it makes the folder automatically… you don’t have to manually make a folder in the server
and once it creates the folder the first time it will just get the world from the folder when I call createWorld?
do i even need createWorld here or not
If you’re making a new world yes
I just want to be able to send players between 2 already made survival worlds
So then you only ever need to create 2 worlds, once they are made you never have to use the world creator again
funny seeing you here
Just get them by Bukkit.getWorld
once per server cycle or once total?
Total, when a world is created a new directory pops up to hold all that world data which is permanently in your server (unless otherwise deleted), to load them you call bukkit.getWorld
so I dont need createWorld, I can just put it in manually
If you have preexisting world directories, you can try copying them over to the server -though that’s been known to cause issues with data corruption- if this is the case then you can just get references and load them with getWorld
ok thanks
so if I put any world folder into the server folder, Bukkit#getWorld() will work?
Should
There’s obviously other factors, ie: your server is running a different version than the world was created for and stuff like that so just be aware
why wouldnt that be an issue with the already existing worlds?
Because the default worlds created with your server were made using the objects native to the version of the server
oh, but if I put in a world made on the correct version, and uploadupdate spigot later, that world will still work?
I mean it should, you just have to try
im confused, would the new world be treated exactly the same as the default one or not
Treated can mean a lot of things, it’s still a usable world object to the server but the issue lies within the worlds actual data, for example you may be running an older version of spigot but trying to use a new world… perhaps there are chunks in the new world the sever is not aware of - blocks, mobs, etc - these kinds of thing
ever since i switched my nms version to 1.21.4 from 1.21.1 i've been getting this error for some reason
[03:50:56 WARN]: java.lang.IllegalAccessException: Can not set static final int field net.minecraft.server.level.ServerPlayer.ENDER_PEARL_TICKET_RADIUS to net.minecraft.server.network.ServerGamePacketListenerImpl
[03:50:56 WARN]: at java.base/jdk.internal.reflect.FieldAccessorImpl.throwFinalFieldIllegalAccessException(FieldAccessorImpl.java:137)
[03:50:56 WARN]: at java.base/jdk.internal.reflect.FieldAccessorImpl.throwFinalFieldIllegalAccessException(FieldAccessorImpl.java:141)
[03:50:56 WARN]: at java.base/jdk.internal.reflect.MethodHandleIntegerFieldAccessorImpl.set(MethodHandleIntegerFieldAccessorImpl.java:107)
[03:50:56 WARN]: at java.base/java.lang.reflect.Field.set(Field.java:836)
my npc spawning was working just fine until i updated..
and setValue(corpse, "c", ((CraftPlayer) p).getHandle().connection); is the issue
yeah I know how updates work, I just wanted to know if putting a new world file into the server folder was all I needed to do to have a second world
Yeah pretty much, when it comes to the code you get the reference from getWorld and you can do whatever from there
ok thanks
Honestly if I had to guess it’s probably just a changed naming convention, fyi did not look over the error I’m tired and lazy lol
sounds about right i was thinking of that lol.. well i gotta find out what it's called instead of "c" now ig
Compare different mappings with this website: https://mappings.dev/
ty!
❤️
ah just found it! it's now "f" instead of "c"
you should use mappings and save yourself
💀
is there way to temporarily stop loading chunks
just want to avoid loading chunks if the player's velocity is higher than a set threshold
You can use player move event and chunkload event
doesn't look like setCancelled exists though
what is your end goal as preventing chunk loading sounds a bad idea
from what you described you would end up with a player flying off into the void with no chunks and no collision checks
why not cap their velocity instead
is EntityChangeBlockEvent the right event for if a player trampels on like farmland?
If that is not an option for them they can just load chunks farther out ahead and then unload the chunks faster
declaration: package: org.bukkit, interface: Chunk
in NMS, how could one Inject a custom pathfindergoal into a mob, like how EntityCreeper avoids EntityCat?
Into a custom mob or a default mob?
Pretty sure unsafe enchant allows this
default mob
u can forcibly put sharpness on a trident but afaik it doesnt actually do anything right??
the plugin info doesn't say much
spigot overview
but I clicked on the GitHub link to see the config
reading it now
declaration: package: org.bukkit.inventory, class: ItemStack
You can apply it but will have to handle interactiom yourself
so we would need to find a fix so it would work your saying?
Are you writing your own plugin?
either i would try but fail awfully or id commission someone else
This channel is for plugin development
So you’re just looking for an already made plugin?
im talking to someone who codes plugins and i asked if it could be done, they said idk so im asking here if its possible
Not really that niche of a plugin. Im sure theres something public out there
You can allow this with a very simple datapack
Would literally be one file of "functional stuff"
oh yeah I had other ideas like power on bows and looting on axes and tridents etc
oh shit alright
ok maybe a tad bit more, but still very primitive
Either add the trident into this tag (image) to allow the trident to have sharpness via anvil
or create new tag, put #enchantable/sword in it with trident
and change out primary_items in sharpness file
So it can be obtained via enchanting table
I would 100% prefer the datapack over a plugin
hi guys
its me again 🩰
I just wanted to ask if I made a custom chunkGen plugin would it work right away if I use Multiverse's api with it?
So long as you load your gen before Multiverse
i wanna modify villager gifts, is there any way to do so or is there some way to detect when a villager is spawning an item?
Hey, if anyone wants a server dev, I can be a cheap paid developer! I can provide custom guis and even icons!
not the right place to do that
Oh my bad
?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/
It's a loot table
https://github.com/misode/mcmeta/tree/data/data/minecraft/loot_table/gameplay/hero_of_the_village
Not sure if that by itself helps. You can make a datapack to change the loot tho
yeah i kinda wanna be able to change this loot dynamically as it spawns in, modifying the loot table isnt gonna cut it
think im gonna see if Item#getThrower() returns the villager's UUID on an ItemSpawnEvent
and just ignore the result if its food, i dont think they throw anything else on other occasions
well
finally got around to making an ai tool to autotranslate my plugin
the config file just for the translations is 28953 lines long
it takes ai 1 hour per language
tbf based on feedback from people it was taking them between 3 days to two weeks to translate it themselves
it's a lot of text
lmao yeah, good tool to have. mine's only 3k lines long but it also takes people a long time to translate, 3 days is mad impressive for 10x that amount
you got some crazy users
oh yeah the dudes that took 3 days were hardcore grinding
like 12+h a day I am pretty sure
to be fair though in these translations are quite literally thousands of items and hundreds of quests
the line count alone doesn't really make it justice
i need help, im building a fabric mod for 1.21.5 but the textures are not loading up no matter what i do. its giving me the missing texture problem (purple and black one)
heres some info if it helps;
https://pastebin.com/X4eGDLLW
https://postimg.cc/gallery/BZVZ9hb
altho it detects icon.png
it shows up in modmenu
this isnt really a fabric dev server so you're probably not gonna get a response from anyone here
ah okay
alright i'll try there, thanks
I made a vanilla elytra launcher that can launch the player 60k blocks per second. Issue is that the server tried to load all the chunks on the flight path causing it to crash.
The whole point is so that the player can move fast
why not just tp them then..?
if you're not gonna load the chunks then the player won't be able to see them
he's just gonna be looking at an empty sky while flying
is there a way to allow ANYTHING to go into a brewing stand from a hopper? i know blocks and stuff get cancelled out but how do I allow it?
Recipes with datapacks
it's a (mostly) vanilla smp server
i just want to write this optimization plugin so i could actually use my elytra launcher
it doesn't matter if the player is moving extremely quickly
Thats because it HAS to load those chunks to see if you are trying to travel through a block/structure
i'd want it to only load chunks if the player's speed is like under 500 blocks per second or something
can't be done in a plugin
so there's no way to stop them from loading?
yes you can stop them loading, by teleport to destination
i don't want to use cheats
why would you want a player to fly through the void with no chunks, just so they could go fast?
my server is just a pure vanilla smp server no commands. we only have a few plugins that dont change gameplay
yes
if i want to travel 100k blocks away from my base
maybe to find a newly released biome or something and i need to travel far out from already-generated chunks
Thats what teleport is for. You can;t "travel" without loading chunks on the way.
i'm trying to allow ANYTHING to go into hoppers
not using datapacks, using kotlin or java and i can convert if i get a general idea
well
you can't be inside an unloaded chunk
or maybe you can, not sure tbh
If you want to simulate it, shoot them upwards fast, teleport them to the destination and let them fall
well why not use datapacks
because I don't want dAtApacKs
oml
it is not that deep buddy
u can code the datapack function into the plugin
its the same exact thing either way
go see how oraxen does it on github
a lead would help its why I came here... asking for help.
well id do it w datapacks just wait for someone else to reply
here lead https://github.com/oraxen/oraxen
No InventoryMoveItemEvent except for Composting.
its nothing to do with inventory move item event lol
then wtf it's why i'm lost
WHY BE AN ASS
YOU NEED TO TELL THE CLIENT??
HOW
DATAPACKS 😭
OML I DONT WANT DATAPACKS
then look thru oraxen it has that behaviour
a nice person would point me in the right direction dick weed
i gave u 2 ways and sent a whole plugin that is litearlly all about custom behaviour lmao
anyways enough of this just wait for someone else to reply
God you're unbearable have a good day
=======================
i'm trying to allow ANYTHING to go into hoppers into brewing stands
not using DATAPACKS, using kotlin or java and i can convert if i get a general idea
lmao, you can't even create potion recipes using datapacks
all are still hard coded :)
I never tried to do what you're trying to do but I think it's not possible with API
And it may be difficult with NMS
-# easiest would most likely be mixins haha
try just cancelling the event if its a hopper
if the source or destination is a hopper
That's not what they're trying to do...
cancel it maybe
ik what he is trying to do but im pretty sure only datapacks can do it
or oraxen does it
again, datapacks can't
there is no brewing recipe type
or any other mechanism I can think of
unless
mixins?
I had a stroke reading this.
what are u saying u said u want anything to go into hoppers
cant everything go into hoppers already?
my apologies for mistyping my original question
you said it wrong twice lul
anyways, no tag exists either
so unless some event fires for this (which I doubt) you'd have to modify the block entity itself
which is NMS and very painful probably
I can't think of a better way :D
Idk what oraxen is or what it does, if it can do that then go ask the devs
cant u get the brewing stands inventory and put it there manually using onInventoryMoveItem
I guess you could manually track all hoppers that point into a brewing stand
yeah just do that
if source is a hopper destination is a brewing stand
cancel the event and put it in ur self
ye no, I don't think that event ever fires tho
well ye I'm reading that now too :D
@fervent gale if source is hopper and destination is brewing stand then cancel event and move item manually
get the brewing stand from the destination and set its inventory
wow look who helped u the unberable ass did
L racist
if it works im expecting a apology paragraph in my dms
L Karen
To get cords to update on tablist I would use a runnable to update the tablist every X seconds?
well that still doesn't really work
because i want them to fly off into the distance and then glide around and find where they want to land
and the speed that the launcher sends the player is variable, the longer its charged the farther the player gets shot
then again its supposed to be a basic no cheats vanilla server, was hoping that i could supress the chunk loading as an optimization
because the launcher works fine on vanilla
hey all quick question, im making a plugin that "rolls back" worlds at a point in time based on whenever you snapshot them. for some reason though World#setAutoSave isn't working. the plugin works fine except for the fact that the world just doesnt reset to its old state, whenever i make any changes they persist. am i doing something wrong?
// Snapshot method
public void snapshotWorld(World world) {
world.save();
world.setAutoSave(false);
snapshottedWorlds.add(world);
}
// Restore method
Bukkit.getOnlinePlayers().forEach(player -> player.teleport(safeWorld.getSpawnLocation()));
snapshottedWorlds.forEach(world -> {
Bukkit.unloadWorld(world, false);
Bukkit.createWorld(new WorldCreator(world.getName()));
world.setAutoSave(false); // Still don't want it to auto-save.
});
edit: i couldnt figure it out, but ultimately this solution is just janky. i'd recommend copying the world files instead. also, remember to not rely on World objects because they can nullify when you unload/reload the world
disabling autosave doesn't disable saving on shutdown/world unload
iirc all disabling autosave does is keeps all of the loaded chunks in-memory permanently
so whats the point of Bukkit#unloadWorld(World world, boolean save)?
isnt that why the save parameter is there
presumably that would work yes
Default worlds can not be unloaded
its not the default world, im in a different world
k
?
can you identify maybe based on the last-accessed timestamps of the region files whether the saving occurs when you try unloading the world or before, while autosaving is supposed to be turned off
thats a good idea, let me try that out
also check whether unloadWorld returns true
will do
if it isn't a default world and you're disabling autosaving and passing false for save on unload, apart from an impl error i think it should work
also, are you using Spigot or Paper?
im using paper, not sure if that interferes or not
I also wouldn't be sure, but I asked to check whether they change anything that might
i can try running it on a spigot server just to see
that works too
it is returning true
let me check the region files
so the world unloading isn't the issue, if anything
it definitely shouldn't be the issue, but maybe try waiting a few seconds in between unloading and loading the world
i generally speaking distrust the region file cache
unless im going insane, the timestamps on the region files arent actually changing at all, regardless of when i roll back
but i honestly dont trust windows file explorer so ill take that with a grain of salt
ill do this
that'd indicate some sort of chunk/region cache fucknuggetry
yeah, it's most likely the region cache not being cleared
probably a paper thing
try with spigot
iirc region files do have their last modified metadata updated by the server on windows
not sure what file explorer shows, i haven't used the stock file explorer on windows for like a decade
it just shows the file metadata, shouldn't be wrong since it doesn't cache it
I can't seem to get this library onto my plugin
Asks me to "shade" the library
and when I try to shade I get hit with this error: Error creating shaded jar: Unsupported class file major version 65 -> [Help 1]
will do this, gonna take a break to get lunch but ill see if paper is causing the issue
anyone ever shaded libraries before?
let's see the build script
pom.xml?
yes
i remember there being corner cases where you have to manually specify a higher asm version for the shade plugin
?paste
but the error could also just be you running/building with java 8 or something while the library you're trying to shade is java 16 or whatever 65 is
<build>
<defaultGoal>clean package</defaultGoal>
<plugins>
<!-- Compiler plugin configured for Java 21 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<release>21</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<relocations>
<relocation>
<pattern>com.github.obliviate</pattern>
<shadedPattern>com.zitemaker.libs.obliviate</shadedPattern>
</relocation>
</relocations>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.hamza-cskn.obliviate-invs</groupId>
<artifactId>core</artifactId>
<version>4.3.0</version>
</dependency>
</dependencies>
Java 21 on the Project Structure in Intellij
this doesn't seem like the entire file
?paste
even if its a txt file
try throwing in
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<asm.version>9.1</asm.version>
</properties>
for properties
and then uh
shouldn't have to set source and target since they set release in the maven compiler plugin configuration
and then under the maven shade task
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
<version>${asm.version}</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>${asm.version}</version>
</dependency>
</dependencies>
manually specify the asm version
replaced <properties> with that
that said, why are you trying to use this library, it seems like it is barely updated
where?
so like
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>...</version>
<configuration>...</configuration>
<executions>...</executions>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
<version>${asm.version}</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>${asm.version}</version>
</dependency>
</dependencies>
</plugin>
Update the Maven Shade Plugin
3.6.0 is the latest version
uh
that is the version of the library, not of the maven shade plugin
that's not the maven shade plugin?
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
this version here
that one is the maven compiler plugin, but yeah, same deal
oh yeah 🤡
latest version of the maven compiler plugin is 3.14.0 so maybe update that too
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<relocations>
<relocation>
<pattern>com.github.obliviate</pattern>
<shadedPattern>com.zitemaker.libs.obliviate</shadedPattern>
</relocation>
</relocations>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>3.11.0</version>
</dependency>
</dependencies>
</plugin>```
this good?
also what color code are you using? for the discord message
maven shade plugin is still in the old version
since, well, this is xml
i still use shade 3.1.0 🤡 i'm not very good about keeping my build scripts up to date
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.11.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<relocations>
<relocation>
<pattern>com.github.obliviate</pattern>
<shadedPattern>com.zitemaker.libs.obliviate</shadedPattern>
</relocation>
</relocations>
<minimizeJar>true</minimizeJar>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>3.11.0</version>
</dependency>
</dependencies>
</plugin>
``` this good?
If it works it works ¯_(ツ)_/¯
the explicit asm versions can probably be omitted with the updated shade plugin
but try it and see
well im getting this ```Could not find artifact org.apache.maven.plugins:maven-shade-plugin:pom:3.11.0 in central (https://repo.maven.apache.org/maven2)
Maven shade doesn’t have the same version as the compiler plugin
It’s different
3.6.0
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<release>21</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.11.0</version>```
it does
Read my messages
You have the wrong version
oh so replace all the 3.11.0 with 3.6.0
despair
Yes
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-commons</artifactId>
<version>3.11.0</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>3.11.0</version>
</dependency>
``` and these two versions will be? 3.11.0 isn't workin
just remove that
remove the whole dependencies block inside the maven shade configuration
gentleman named vcs2 told me to put it there
and I am telling you to just remove it, it isn't necessary anymore
ok done but warnings
[WARNING] PlayerControl-1.0.0.jar, UniversalScheduler-0.1.6.jar, core-4.3.0.jar, database-2.0.6.jar, obliviate-utils-2.0.6.jar, placeholder-2.0.6.jar, string-2.0.6.jar, version-detection-2.0.6.jar define 1 overlapping resource:
[WARNING] - META-INF/MANIFEST.MF
[WARNING] UniversalScheduler-0.1.6.jar, core-4.3.0.jar define 2 overlapping resources:
[WARNING] - META-INF/maven/com.github.Anon8281/UniversalScheduler/pom.properties
[WARNING] - META-INF/maven/com.github.Anon8281/UniversalScheduler/pom.xml
[WARNING] maven-shade-plugin has detected that some files are
[WARNING] present in two or more JARs. When this happens, only one
[WARNING] single version of the file is copied to the uber jar.
[WARNING] Usually this is not harmful and you can skip these warnings,
[WARNING] otherwise try to manually exclude artifacts based on
[WARNING] mvn dependency:tree -Ddetail=true and the above output.
[WARNING] See https://maven.apache.org/plugins/maven-shade-plugin/```
just ignore those
Warnings are meh
my OCD ass can't
Sometimes they are genuinely useless
any way to remove them? or resolve them?
you have to exclude the paths it says so that it stops complaining
exclude the META-INF path in your shade configuration
where is it
look at the second example on the link I sent
ok so add these
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
yeah, with the filter block too
maven sucks.
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/MANIFEST.MF</exclude>
<exclude>META-INF/maven/com.github.Anon8281/UniversalScheduler/pom.properties</exclude>
<exclude>META-INF/maven/com.github.Anon8281/UniversalScheduler/pom.xml</exclude>
</excludes>
</filter>
</filters>
in your case you need this
it is fine if you follow its documentation 😛
i doubt any part of the meta-inf will be needed at runtime so it could probably be excluded in whole
not ideal honestly
if they end up adding a library which makes use of service loader then the service locations will be stored in the meta-inf
<configuration>
<relocations>
<relocation>
<pattern>com.github.obliviate</pattern>
<shadedPattern>com.zitemaker.libs.obliviate</shadedPattern>
</relocation>
</relocations>
<minimizeJar>true</minimizeJar>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
- META-INF/maven/com.github.Anon8281/UniversalScheduler/pom.xml
maven-shade-plugin has detected that some files are
present in two or more JARs. When this happens, only one
single version of the file is copied to the uber jar.
Usually this is not harmful and you can skip these warnings,
otherwise try to manually exclude artifacts based on
mvn dependency:tree -Ddetail=true and the above output.
See https://maven.apache.org/plugins/maven-shade-plugin/
still error in red
reading errors also helps
here it tells you the exact duplicate file
and it ends in .xml
however you have only excluded .sf, .dsa, and .rsa
by reading what it says
i just copied whatever was in the docs
the error tells you
you need to read more copy less
i can't read, ADHD, dyslexia, autism, OCD - all self diagnosed
I mean, whatever makes you feel better
lol
supposing it is usable and actually works, yes
yes, however I wouldn't recommend using a library which hasn't received updates in 2 years
but sadly i don't know how to use that library
why u tellin me this now
we told you earlier
I told you way earlier
you just didn't read
oh yea
yes yes
anyways what library will be best
for GUIs
depends on what you're doing
in most cases i'd almost wager that doing it directly with the bukkit api is the least hassle
i prolly thought you are talking to someone else and didn't pay attention
hm, i was hoping for a library to make things easier yk
if you are looking to use a library, my usual recommendation is DevNatan's inventory-framework or stefvanschie's IF. That said, most people don't usually need frameworks like these
I’m sorry if u can’t read this might not be the profession for you
usually just following that one smile resource is good enough for most people
tan juck says the quiet part out loud
suppose, instead of getCommand("noob").setExecutor(new NoobCommand(this));
to registerCommand("noob", NoobCommand(this));
isn't this what libraries do?
make things simpler
?gui
i suppose maybe
smile? i suppose theres one for a frown too
^ read that thread, if that doesn't seem enough for whatever you're trying to do, then you may use one of the libraries I suggested
because there are no such version
maybe use 3.6.0
3.11 works ?
he's from the future
latest version is 3.6.0, i mean how it works
I feel like someone did not see the "see new messages" popup when reading the convo kek
it doesn't, he's using 3.6.0 after a dozen or so round trips
didnt see mb
Only thing I'd do different in this thread is to use inventory views instead of inventories as keys but it all ends up the same ig
Y2K didn't get to finish his inventory stuff so it is unclear whether one is supposed to use MenuType#create or just keep using Bukkit#createInventory tbh
all that just to decide to stick to Bukkit's api
Inventory holders :D 
If you’re using Paper, yeah
Otherwise no
:(
I mean its a bit hard since the new menu api just ties to views- and containers are only accessible from views when using views, correct me if Im wrong
Whereas if u decide to use createInventory per say and keep track of the inventory instance urself
i think the performance impact from inventory holders is considerably lesser now after mojang overhauled itemstacks
itemstack::clone is fairly cheap now, even for clown-tier metadata like shulker boxes filled with written books
and most of the blockstate snapshot cost comes from having to clone the contents
to be fair i haven't benchmarked this on spigot (since nobody uses spigot) but from what i know it shouldn't be catastrophic on spigot anymore either
heh
that'd be true if snapshot creation of block entities somehow just called itemstack#clone
don't tell me it converts them into bukkit stacks with ItemMeta
no
its worse
BlockEntitiy does not have any form of mojang maintained copy functiojn
|| it has to save it to NBT and load again ||
🤡
will be fixed once block entities are fully using components
kekw
but like, before that yea
getBlockState() is a full on death sentence, hence why one passes false
so if stopping chunks from loading isn't possible, are there any other approaches I could take? without things like teleporting, this is a vanilla server
use paper and disable moving into unloaded chunks in the settings
on vanilla glhf
if you're asking how to get your server to not crash from having to load 60k blocks' worth of chunks per second, the answer is basically that you don't
if you're loaded with cash you can ask NASA if you can rent one of their supercomputers for a bit
alternatively, get a teleport plugin
When making a new PlayerProfile object, the name of it can only include characters that only Mojang allows, so I cant add spaces or anything like that, is there a way around this?
Hey, I'm working on a plugin for Minecraft 1.21.1 and I want to show the "Riptide" enchantment animation to the player. How can I trigger the animation that normally appears when the enchantment is used? Is there a way to show this animation directly in the game? Can you help me out with this?
No. You've explained an XY problem. What end goal are you trying to reach?
You can maybe use reflection
?xy
An XY problem?
I'm trying to make a simple nickname API for future plugins, everything ive found online is either outdated or not helpful at all
but after getting frustrated with protocol lib I accidentally found this method and its the only one thats even worked after a few days of trial and error
Like you want the nickname to affect their overhead name?
I'm sure that you should be able to use reflection
but it will definitely break things
What is reflection exactly?
So if I'm understanding this right, I could change how the SpigotAPI works?
No, reflection doest change execution
you can just change variables that wouldn't usually be accessible
people usually don't even bother with editing the nameplate directly since it is so limited, and no you can't get around it
the workaround is to just use holograms/text displays mounted on the player
Wouldn't that be way harder and have a lot of bugs than just trying to edit it with ProtocolLib for example?
Well it would probably be easier, but still a lot of bugs id imagine
it is easier and shouldn't have a lot of bugs since it's all supported by the API
only thing you have to do is spawn them on join and maybe delete the entity on quit
I think id rather do it with ProtocolLib honestly
I mean, you can do whatever you want
that still doesn't get rid of the limitation you mentioned, though
it wouldnt?
if you send an invalid username, the client will probably get kicked as that's also checked in the client
you can try though, maybe it isn't an issue anymore
the client receiving?
yes
I wonder if they go to that length client side
But regardless, I think you’re trying to find a harder solution to something that’s already been done heaps of times
I am checking right now, cause I might just be misremembering lol
I've seen a few ss of people who have seemed to achieve this, the over head names have spaces and invalid characters, but they dont seem to be because of any work around
are you sure they were editing the nameplate and not just using a text display though, it is indistinguishable nowadays
I did it with precise teleporting of armor stands by tricking the interpolation, though you probably can just parent an armorstand to a player and use text ascents lol
the teleportation ends up being annoying with ping since they don't have as good of an interpolation on the client side
if latency isn't an issue then that's also an option
The player in the SS seemed to be using Lunar client, so the little logo was right next to their name
ah yeah that's a thing
I'd bet they bypassed the invalid characters because of that
well, give it a go and if it doesn't work then try the other solution
Well I have been, I'm not familar enough with ProtocolLib lol'
what have you tried so far
you just have to listen to the player info packet and modify the wrapped game profile or whatever it is that protocollib returns
I think so, I honestly cant remember now
I'm not even entirely sure which action of the player info packet works with usernames
I would assume add player?
ahhhh okay
changing name is a pain
Ill see what I can do and if i get confused again ill come back here 👍
it was a while ago I did it, but its a nightmare
yeah thats why im just making this into an API, so if i ever need to again ill just import this project
it isn't that hard but since it is all undocumented you have to to a lot of trial and error
that would be a HUGE help, even if its out of date just having some kind of refrance would be amazing 😭
?paste
NMSUtils is just a util wrapper to fetch a ServerPlayer avoiding versioned imports
ahhhh I see
well either way this is more helpful than most of what else ive found online
Like i said, no idea what im doing lol
protocolManager = ProtocolLibrary.getProtocolManager();
PacketContainer packet = new PacketContainer(PacketType.Play.Server.PLAYER_INFO);
packet.getPlayerInfoAction().write(0, EnumWrappers.PlayerInfoAction.REMOVE_PLAYER);
List<UUID> playerUUID = new ArrayList<>();
for (Player player : Bukkit.getOnlinePlayers()) {
packet.getIntegers().write(0, packet.getIntegers().read(0) + 1);
playerUUID.add(player.getUniqueId());
packet.getUUIDLists().write(0, playerUUID);
}
for (Player player : Bukkit.getOnlinePlayers()) {
protocolManager.sendServerPacket(player, packet);
}
If anyone could give me feedback id really appreciate that, I've only been using protocollib for a few days
i would generally speaking advise against messing with player-related protocol state
it's quite finicky and a lot of things can go wrong
not to mention unstable
is it absolutely necessary to change the nametag over players' heads? everything else can be done very cleanly through the api
i.e. tab and chat
Yes, its nessesary
if changing the actual username of the player works, you can probably use the prelogin event and change the username on the profile
but changing the "nick" would then require for the player to reconnect, of course, and name-based plugins would consider them a new player
though not many plugins use names anymore these days
like the PlayerProfile you mean?
i don't quite remember the api, iirc it lets you change the name and even the uuid
if you are refering to the player profile, I have already tried that
You can’t use the api PlayerProfile for this
i works but doesnt allow characers like spaces in the name
Well yeah, the game doesn’t allow that
i'm not too sure about that
yes thats why im now doing this
i know geyser for example uses this api to add a * prefix to bedrock players
which isn't in the standard allowed username charset either (and that's why it's used, to prevent conflicts)
I thought about using prefixs but I would much rather use ProtocolLib for this, my goal is to change the overhead display name and I'd rather not do any work arounds
cant u do that through some plugin like TAB?
well i'm not asking that, i was asking if i could avoid loading those chunks altogether
i want the opposite, if the player's velocity is above a certain threshold i don't want chunks to load but they should still move freely
doing it via tab is really easy, but doing the overhead name seems to be very hard
i don't think this is doable without patching the server
yea but thats where like tab comes in, ik there is this other plugin that does it rly well w client sided text display entities
^BrentLoaf
ngl i might try to do this
the thing is in singleplayer my own pc is more than capable of loading 60k blocks worth of chunks just fine
you'll want to take a look at the entity::tick nms method and add a condition to anything that might cause chunk loads (blockstate, collision checks) that if the player is going over n blocks per second, skip the operation
I already mentioned previously that Id rather not do any work arounds and do it myself, which is why I posted my ProtocolLib code and ask what I did wrong here
there might be better methods but this seems like the easiest to implement
^^^
the thing is, player-specific protocol state is finicky and unstable and many things can and will go wrong
this is my take on it
because of what vcs2 said
so finding someone who has actually done this is going to be challenging
you likely wna spawn in some sort of display entity and hide the player's actual name above head
and someone who hasn't done this can't really help with it
well i hope thats gonna be me lol
i mean the other guy
oh
the reason why I advice this is because its how plugins do it in to my knowledge
ive done this before actually
Well I appreciate the advice but I'm not looking for advice on what I should be doing instead, in all fairness
hide player names using teams, then send packets to every player for an invisible armorstand slightly positioned above each player
could be optimized by only sending to nearby players
ur gonna need like protocollib
these days using a mounted (spoofed) text display with a translation offset is probably more robust, but yeah, same principle
the reason you won't want to use a real mounted text display is that having stuff riding on players prevents them from teleporting; so after creating the text display, you will want to destroy it on the server side and drop the entity destroy packet, or alternatively spoof the entity from the beginning
this is also very finicky and getting the packets in the wrong order will completely nuke any players within view distance
i did this earlier not for nametags but for healthbars
Does the player teleport properly when it’s a client side mounted entity?
yeah, the client doesn't seem to care about it, it's just the server throwing a hissyfit
Does the thing stay mounted after the teleport?
i remember someone here patched the server to allow teleportation while mounted, which is a cleaner solution, if not really feasible for a public plugin
i think so, though come to think i don't remember if i've tested that
i don't recall healthbars getting left behind when people use elevator signs etc. on my server, so presumably it works
I think it’s mainly a spigot limitation
Afaik vanilla can teleport entities with passengers fine
mounting stuff on other entities doesn't always work as expected, either
e.g. horses will try to rear and throw off the armor stand riding them
lol
so i suppose even if it got patched in spigot (or paper), i would still have to keep my 200 lines of protocollib nonsense to keep the clientside mount
i tested this yesterday on spigot, it seems to work as intended
dragged a breeze in a boat through a nether portal
does fawe not work with world guard?
I am trying to build my plugin using fawe but it keep breaking into a hundred errors:
[00:22:54] [Server thread/WARN]: Could not find IQueueExtent from `com.sk89q.worldedit.bukkit.BukkitWorld` instance for entity retrieval, OncePerChunkExtent will not work. [00:22:54] [Server thread/WARN]: Could not find IQueueExtent from `com.sk89q.worldedit.bukkit.BukkitWorld` instance for entity retrieval, OncePerChunkExtent will not work. [00:22:54] [Server thread/WARN]: Could not find IQueueExtent from `com.sk89q.worldedit.bukkit.BukkitWorld` instance for entity retrieval, OncePerChunkExtent will not work. [00:22:54] [Server thread/WARN]: Could not find IQueueExtent from `com.sk89q.worldedit.bukkit.BukkitWorld` instance for entity retrieval, OncePerChunkExtent will not work. [00:22:54] [Server thread/WARN]: Could not find IQueueExtent from `com.sk89q.worldedit.bukkit.BukkitWorld` instance for entity retrieval, OncePerChunkExtent will not work. [00:22:54] [Server thread/WARN]: Could not find IQueueExtent from `com.sk89q.worldedit.bukkit.BukkitWorld` instance for entity retrieval, OncePerChunkExtent will not work.
(even if world guard is disabled)
also it's much much slower than when I use world edit
hm. I have my own world load distro when using world edit. but lemme check i dont think I am
what about world edit
should I also use it async?
and by async you mean using the scheduler or my own thread?
well now I'm doing ir using the scheduler but it's still going wild
sorry I meant to say world guard
because I also depend on that
I don’t think worldguard can be used async
yet it's causing errors when using it with fawe
java.lang.ClassCastException: class com.sk89q.worldedit.bukkit.BukkitPlayer cannot be cast to class com.sk89q.worldedit.bukkit.BukkitPlayer (com.sk89q.worldedit.bukkit.BukkitPlayer is in unnamed module of loader org.bukkit.plugin.java.PluginClassLoader @1245c9e9; com.sk89q.worldedit.bukkit.BukkitPlayer is in unnamed module of loader org.bukkit.plugin.java.PluginClassLoader @5aa41b52)```
I get alot of this before my server starts
you shaded WG/FAWE into yoru plugin
^
the class is loaded by 2 distinct classloaders
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
this is my pom
unless you mean I dont need to depend on world edit
open yoru jar with any archive program and you will find worldedit included
where would I find it?
I dont see it
and, why do you have an exclusion on FAWE-core when the parent is already "provided"?
odd
You dont need both fawe and world edit
okay I removed it from the pom.xml. some errors are gone but not all
mainly the ones during my copy paste jobs
[00:52:05] [Server thread/WARN]: Could not find IQueueExtent from com.sk89q.worldedit.bukkit.BukkitWorld instance for entity retrieval, OncePerChunkExtent will not work.
that means smth is still not being done async?
well yes. fawe
Juzt making sure lol
all good. I'd like to make sure that people could just use world edit or fawe if they want. I don't want to cut WE out
but rn fawe breaks my plugin completely
most of the world edit logic is in GenerateGameTerrain, Tools and GameLobby.generatePlot()
what's interesting is that none of my logging executes.. yet the plot gets copied fully. All I get is this. ```[00:50:49] [Server thread/INFO]: BlueNova2 issued server command: /mvtp BlueNova2 fil_void_world
[00:50:50] [Server thread/INFO]: Using com.fastasyncworldedit.bukkit.adapter.NMSRelighterFactory as relighter factory.
[00:50:54] [Server thread/INFO]: BlueNova2 issued server command: /mv confirm
[00:50:57] [Server thread/INFO]: BlueNova2 issued server command: /gamemode spectator
[00:50:57] [Server thread/INFO]: [BlueNova2: Set own game mode to Spectator Mode]
[00:51:52] [Server thread/WARN]: Could not find IQueueExtent from com.sk89q.worldedit.bukkit.BukkitWorld instance for entity retrieval, OncePerChunkExtent will not work.
[00:51:52] [Server thread/WARN]: Could not find IQueueExtent from com.sk89q.worldedit.bukkit.BukkitWorld instance for entity retrieval, OncePerChunkExtent will not work.
[00:51:52] [Server thread/WARN]: Could not find IQueueExtent from com.sk89q.worldedit.bukkit.BukkitWorld instance for entity retrieval, OncePerChunkExtent will not work.
If you want people to use either, build on WE api
Not very familiar with particles, but if I wanted to use particles to outline the borders of an area, like pretty big scaling, so they would be visible, what particles would I use?
happy villager, redstone dust, end rod, the spark from scraping wax off something
ok actually some of those might not live long enough
anything with a lifetime of more than a few ticks and doesnt move (or can have its motion disabled)
Honestly just checking the wiki would be good
since there's listings of the images and you can see for yourself.
but would world guard work with it?
Yes of course, WorldGuard is designed actually to be used with WE in the first place, not FAWE
but shouldnt that mean it doesnt support it that well?
cuz I get errors from world guard as well when I switch to fawe
ah my bad i see what u mean
okay so I build on we not fawe
Yes
but using fawe causes errors. so i gotta figure this out
plus it "works" but breaks other part of my code
like copy jobs happen but when theyre done errors appear
idk man I never seen anything like it
its all errors i don't understand
and i dont really know where to begin
its like API specific errors and warns
dw i wont shade
InventoryClickEvent#getSlot is returning -999, any meaning to that?
clicked off screen
Anyone know of a way to get slot count of a MenuType without having to create the view?
iirc WorldGuard doesn't have any RegionEnter event. You can either get a list of the regions the player WAS in and the new list they are now in on move. Or if not there are plugins that provide the event
yeah beats me
can i check if a location is in a region
yeah regions have a REgion#contains(BlockVector3) method
just need to iterate through all regions
because you can easily make your own
That's hardly an argument
can i prevent opening eyeblossom?
iirc wg works well with existing events, it will gracefully allow cancellation from other plugins w ignore cancelled
If a plugin is disabled, are all schedulers owned by that plugin immediately cancelled?
iirc yes
Using a plugin, is it possible to display the "horse hearts" on the players HUD without the player needing to ride an entity?
No, but you could fake them with a resource pack
👋 I'm trying to run BuildTools, but I'm running into some issues. I'm running the latest version, in a fresh directory (specifically, java -jar BuildTools.jar --rev 1.21.1 --remapped). I've dropped the --remapped, to not success. I'm on a Mac, if that helps.
Could you try running it in an empty folder
If it doesn't work send the entire buildtools log
?paste