#help-development
1 messages · Page 1318 of 1
um what repos do you have in your pom?
spigotmc-repo
also target is 25?
yes
alrighty, thanks!
How to get sha1 hash sum of the resource pack file? I mean.. Before it was automatically using setResourcePack, but by addResourcePack you have to put it by yourself
@Nullable
Oh thanks, didnt see it
setResourcePack did not do it automatically either btw
it would need to download the resource pack itself first to do that
Well, yeah, but you didn't have to get hash manually
well, you still don't :p
Now I know that I still don't xd
I do recommend you give it though
Idk how to do it, i'm too stupid for this kind of things
Do you want to create it with code or just pass it through a config
Well, I'm making plugin that will work with random resource packs. It's like downloading people's resource pack which they "posted" with link by command
Where is it downloading from?
Like one player posts it using /rp setup <link> and another one downloads it using /rp add <nick>
So it could be any link
yep
and you're not the one hosting the pack
sounds like an odd concept but sure ig
You'd need to download the pack to the server once to get a hash of it
as long as the data never goes on your disk or through your network and it's opt-in it's prooobably fine
typically doesn't happen with minecraft servers but CP bombing isn't anything new
yeah I was also thinking about that
So it will cause CPU load?
hashing a file isn't that intensive and you can offload it to its own thread
Well and also, it's not obligatory resourcepack. It's optional
Yeah just skip the hash
if users start sharing stuff you do not want that on your system
So it's not the thing that will happen for every player that joins server, so it's not really that bad
the value can be cached you only need to calculate it once
Meh, I mean, of course it can be moderated and all that things, but it's on player what resource pack he downloads and what player he trusts
Or I didn't understand you right, what you wanted to say
and you trust them not to put illegal stuff on your server
Mmmm, maybe? I guess this thing is better for SMP servers
Ahaha minecraft is def one of the places it happens
Hmm?
?
you can't cancel that plugin message from being sent as that's done by the client
you could maybe manipulate the packet before the server processes it though I have no idea what use that would have
do you mean the Unknown or incomplete command message?
is there any ways to make people transparent but like not invisibility potion effect ?
specifically 75% to %92.25
probably not without a core shader
I remember something like that being possible in vanilla with teams? Maybe you can fake those packets or something
ill check it out, thanks!
being in the same team + the see friendly invisibles team option
but i don't remember if that actually makes them transparent or if it just draws a team outline as with the glow effect
You can probably use PacketEvents or ProtocolLib to overwrite the packet data or cancel it
if you mean the server advertising its brand to the client
If ur asking how to make the server ignore what the client sends uh I dunno
Anyone got an api so i can use for using minecraft skins on mobs for 1.20.4?
libsdisguises
like just to stop the server from actually processing it and setting its brand
You could modify the payload packet before the server processes it, but unsure why you would do that
What’s the goal here?
You need to either use protocollib or directly hook into netty.
Many guides on how to set either of those things up.
After that just drop that packet. For protocol lib just call PacketEvent#setCancelled. For netty simply omit the call to the super.channelRead/Write.
There are also many other packet handling libraries out there but i'm most familiar with ProtocolLib or just doing it directly with Netty & NMS
Does anyone have any insight on this?
Chunk packets can be delayed and arrive out of order. It could be that a chunk is sent and then your block change is sent, but the chunk is processed for longer and your block update arrives first.
As the client hasn't received the level chunk yet, it ignores the block update in the unloaded chunk.
To see if this is the reason (this isn't a solution just a debugging hack) delay the block update by ~10 ticks and see if that fixes it.
IIRC there is an chunk acknowledgement packet that the client sends back to the server.
Another way would be to modify the chunks currently being sent to the client with the blockstates you want.
The refresh to the client is happening some ~2 seconds after the player breaks the block, and then will repeatly every 1/max_crop_age * 20 tick to send another packet.
I tried unloading the chunk and resending it but it didn't turn out in my favor when I attempted it.
Insert sad emoji here
heya! i'd like to make an infinite procedurally generated indoor facility a la lethal company. some soft requirements:
- rooms may vary in size (larger/smaller than 16x16). would that disqualify a chunk generator? (i'd ideally like to use a chunk generator for performance and ensuring that areas never "pop in" or aren't fully available when a chunk is loaded.)
- multiple floors (depending on the area) that properly connect with every other floor (no dead zones).
- a mix of full procgen and prefabs (whether those prefabs be special features or entire rooms).
- "biomes" (different areas). i'm pretty sure this would be easy w noise.
is this even possible? thoughts?
the main mc-specific question here is whether chunk generator would be a proper fit. should i leverage something like structure blocks (or their code equivalent)?
(also @young knoll someone recommended i ask you particularly since apparently you've had experience with this sorta stuff. i'd really appreciate any advice <3)
(I am someone, get to work Jish)
both are valid approaches
Structure blocks can handle sizes up to 48x48x48
Alternatively just generate a void world and then slap down structures/schematics into it
i'd ideally like to go above 48x48
the worry i have with putting structures into a void world is collisions, determinism, and delayed loading
you could possibly do that by just making sure the procedural generation is consistent enough and the prefabs being designed in a way that makes them easy to connect to existing parts
but i recognize that generating a 16x16 area in isolation that perfectly aligns with multiple floors, bigger rooms, larger structures, etc, is extremely difficult
easier said than done though
there was someone else who did a procedurally generated golf track but I don't remember who it was
i have done something similar to that in godot where prefabs are given exit/entry points (along with some other info), then picked at random and attached to a previous exit point when requested. it felt a bit rigid though, especially because i'd love for entire rooms to be fully procgen'd (entries and exits included)
@worthy yarrow was it you
trying to get all the 5 people I know do worldgen here, it is so annoying that barely anyone does lol
<3 much appreciated
I would also recommend getting into the Minecraft Commands and/or Minecraft Worldgen discords, while they do more on the datapack side of things, they can probably give you some idea of the feasibility of it, maybe you end up doing something with datapack worldgen for general layout + chunk generators for decorations/prefabs
hm hm, i will look into that, thank you!
@young knoll did you ever end up finishing the procedural dungeons generator
I vaguely remember you showing a video of it a long time ago, it was pretty cool
illusion or the other pinkname i always confuse him with also has a i think wfc based generator
but from what i saw it didn't use the world generator api
personally i don't really know if the worldgen api is very suited for something like this, either
not illusion, magmaman
I don't do world gen
been fucking with uh
backend development
still working on rpg
still working on uh
video production shit
@torn shuttle how's that minecraft cup I got you
some moron put it in the dishwasher :/
so a bit rough
but I still use it
I do
I'll get you another next time I'm in town
I don't
wfc would not work with traditional world gen
it also doesn't scale well
you need a bunch of techniques and compromises to get it to scale
btw have you figured out a way to get saveable, empty chunks with nms
so I don't have to generate and do all the crazy shenanigans
a naive approach by the nature of the system might never have a stable state for chunks, as a future chunk might retroactively change an indefinite amount of chunks that have already been generated
uh ngl
I got lazy
half my dungeon loading time is waiting for chunks
I am getting mc to load a premade void world
I'm cloning a void world I made but the loading of the world itself into mc is still noticeably slow
also I have a queue system
but it's not a great solution
The world's already loaded but I still gotta wait for chunks that I know will be empty
I mean generating is slower than loading
so that's what I did
idk if minecraft is creating chunk files in sync or something
probably
I assume you saw mojang is going to deobfuscate all java code
how did you deal with this? i ended up propagating updates only up to a certain distance, and then just regenerating portions if it ran into a contradiction because of an update invalidating something farther out
a bunch of ways
I've done a numbero f techniques, the conclusion I ended up coming to is that there is no solution that is objectively best, just solutions that are more optimized for different scenarios
if you wanted to generate something really large I would recommend an approach that has a bias to go center->out which is not technically how wfc is meant to go, but that guarantees less significant rollbacks
then there's a lot of different problematic concepts where you have to look at what you're building to determine the best path
already use deobf tools that do most of the heavy lifting
another thing that kinda worked under some circumstances was clearing in a radius instead of rolling back to resolve rollbacks, that can theoretically be faster but if you are doing stuff like mega modules where you are enforcing larger rooms with smaller modules you will get deadlocked
mmmyeah sounds familiar
mega modules are a massive pain fyi
like
I won't admit to how long I spent working on that, only to basically give up
I've got this rn but it's a bit buggy
blocks don't properly track and some chunks end up empty despite setting and recognizing the blocks there
messing with files at a low level is a massive pain
I have code that can paste millions of blocks instantly, but then shit gets really weird
yeah I mean just low level messing with world gen can get real glitchy real fast
honestly I was considering cloning how empty chunks get generated outright
at a file level
so I'd inject my own empty chunk files and then have mc load it
wouldn't really fix the slow loading time of just loading world though
Hi is it all versions are deobfuscated or the version after the announcement
deobfuscated alpha when
deobfuscate 1.8
I can finally go in and make a good server
part of the problem that I was looking at is that even if I clone the files and inject them for mc to load, odds are the file format will change with updates which will just be another headache
wait no
it works
thanks vcs2
insert a happy one now
when i leave the team the player is basically gone but when i join the team its sorta transparent
idc if i cant control the alpha it works!!!
Consider updating?
Heyo, silly question.
Can IntelliJ somehow change color for a variable of specific type. For example only variables from class Foo will be yellow, but Bar and will have normal default theme color.
No.
Sad
You can make a plugin though.
I don't wanna fuck around with that, I'm too lazy
Yippie 🥳
possibly with rainbow prackets rainbow variables (probably a premium restriction tho)
does settype trigger blockbreakevent?
no
hey, i'm using treetype to generate one type of tree, and the mega spruce tree doesnt apear, i'm using version 1.20.4
nvm, already found it
[00:32:02 ERROR]: Error occurred while enabling friends v1.0 (Is it up to date?)
java.lang.NullPointerException: Cannot invoke "org.bukkit.plugin.RegisteredServiceProvider.getProvider()" because the return value of "org.bukkit.plugin.ServicesManager.getRegistration(java.lang.Class)" is null
at friends-1.0-1762385451557.jar/de.kentoj.friends.Friends.onEnable(Friends.java:27) ~[friends-1.0-1762385451557.jar:?]
plugin 1, onEnable:
val servicesManager = Bukkit.getServicesManager();
val messagingService = new MessagingService(new RabbitMqPublisher(rabbitCon), new RabbitMqSubscriber(rabbitCon));
servicesManager.register(MessagingService.class, messagingService, this, ServicePriority.Normal);
val friendsService = new FriendsService(datastore);
servicesManager.register(FriendsService.class, friendsService, this, ServicePriority.Normal);
plugin 2, onEnable:
val friendsService = Bukkit.getServicesManager().getRegistration(FriendsService.class).getProvider();
plugin2 depends on plugin1 and plugin1 fully initializes(i checked by printing a "ready" message at the end of the onEnable method).
make sure you're not shading plugin1 into plugin2
if you do, that getRegistration is going to pass a shaded copy of the .class, which won't have a service associated with it
oh true i was doing that
ill try tomorrow, thx :)
running into a bug where ill give alocaiton, and sometimes it just randomyl shoots up a couple of Y
addRegion(new KOTHRegion(
new Location(world, 17006, 103, -46),
new Location(world, 16994, 98, -58),
new Location(world, 16994, 103, -46),
new Location(world, 17006, 103, -46),
new Location(world, 16994, 103, -58),
new Location(world, 17006, 103, -58),
new Location(world, 17005, 98, -57),
new Location(world, 16995, 98, -47),
new Location(world, 17000, 98, -52)
));
public Block getBeaconGlass() {
return this.beaconGlassLoc.getBlock();
}
new Location(world, 17000, 98, -52)
this isnt touched/modified anywhere except for getting the block, and it will give me 103 instead of 98
It was way more involved than I imagined lol
I did get it to work but at what cost
I hadn't played around with IJ platform before so I was pretty lost, managed to get something working though
thanks, I just tried it out because the idea seemed simple enough
now that I have a bit of an idea on how IJ plugins work I might try something more complex
I've been building a multi-module nms project, but i keep running into this error, and i have no clue how to fix it. So far, this is only happening for version 1_20_R6. cannot access net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket bad class file: C:\Users\~~~~\.m2\repository\org\spigotmc\spigot\1.20.6-R0.1-SNAPSHOT\spigot-1.20.6-R0.1-SNAPSHOT-remapped-mojang.jar(/net/minecraft/network/protocol/game/ClientboundSetEntityDataPacket.class) class file has wrong version 65.0, should be 61.0
bump the java version to 21
ah alright
i've been trying to get into it recently as well, for a frontend ui for my coding assistant agent thing, but the more i do it the more i hate frontend development
i feel like it's next to impossible to add new gui elements to the ide and having them fit in because most of the classes IJ uses for the existing ones are either package private or undocumented
works!!!
thanks a lot!!
I'm considering a third run at IntelliJ after 10 years
Eclipse has been pissing me off lately with its updates
I just fear that I'm going to feel slow in IJ again. And I still hate that it doesn't have a workspace in 2025
It has a plugin for it, but it's only for the paid version of IJ
And I promise you I will never pay for a text editor
I just fear that I'm going to feel slow in IJ again
i mean, you are changing whole development environments, you are going to be slow until you feel comfortable with it for a while
such is the life
Well I don't like life! >:(
I have to use eclipse for a project at work and I am close to jumping
I am honestly impressed with you for surviving choco
go run a stable or something
Just install eclipse keybinding btw
easy af, did that too when I migrated, still run eclipse keybinds xD
I've just been getting frustrated with updates continuing to break. This is like the third time now where I've upgraded Eclipse and I literally just can't open it anymore
I updated to 2025-09 last month and I've been using 2025-06 ever since 🙃
Not to mention its themeing is continuously dogshit
Join us IJ users 😎
Waiting for the plot twist
as for this the plugin is installable on community edition even though the help page says its not
i would never!
oh you're not talking about me
nvm then
Suspicious 
last time i heard about workspaces they were linux + mac exclusive
guessing they got around to windows versions after ages
huh why would they be platform specific
idk im guessing it was ui stuff
looking for someone that can make me a plugin
?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/
luckily for me, the existing GUI elements were good enough for this purpose, but I can see what you mean
overall, I like the development workflow, you just run ./gradlew runIde and you can test your plugin very easily, and creating end-to-end tests seems trivial
I did spend a hot second fixing the tests it came with since there's a bug which prevents it from running properly on virtual file systems on windows (see IJLP-197868). I also had to go through the annoying process of converting the default template into java and removing the kotlin bits
I have a question for the round, namely how can you write to admin if an account has been hacked and what is generally required to prove that the account belongs to me? It's about the SPIGOT website
?support
someone’s an early bird
Yo it's been 6+7 days since I posted a resource and its still under approval, is that normal?
Yes, read the guidelines
🐦 and you?
Sorry for the extremely late reply, but it was.
We'll need some more info then
Are you using maven or gradle?
Maven, compiled using java 21
I deleted and reinstalled the remapped spigot, and it didn't change
Could you send your pom

tbh I'm not happy about wanting to switch away from Eclipse
I'm doing it because it's kinda forcing my hand at this point
god I looked at this for a minute thinking you said porn
could try netbeans
I'm not on my PC rn, but so u mind if I send the GitHub repo?
that's fine
NVM I didn't push the changes xD
sometimes a little annoying when people ask for help but not at the computer to receive said help and thus forcing us to wait to see if your problem is resolved. We do like to resolve people's problems sometimes you know >>
just tell them to be at their machine and then forget about it until they bring it up again
that's what i do
i never remember anything
hi
Litebans doesn't work for me, I inserted it into the bungeecord server, I also connected the database, I also set the permissions on luckperms, but it always tells me that I don't have permission to execute the command, I'm going crazy
If Litebans is installed only on the proxy make sure you gave the permission on the proxy
and not just on a subserver
Guys help I'm being stupid
How do I get IntelliJ to pass system properties to java
this just prints null for the get flare.test
omg it's VM Options
raa
environment variables are a different thing, those are like your %PATH% on windows and java home and whatever
Why not
his name is Choco, not netbeans
Choco? Netbeans?
Chocobeans.
I am on my PC now, so i can respond for new info. I am having an issue compiling an NMS module for v1_20_R4. The pom.xml is attached. I am getting these errors. The NMS version is compiled using java 21.
bad class file: C:\Users\~~~\.m2\repository\org\spigotmc\spigot\1.20.6-R0.1-SNAPSHOT\spigot-1.20.6-R0.1-SNAPSHOT-remapped-mojang.jar(/net/minecraft/network/protocol/game/ClientboundSetEntityDataPacket.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.```
most likely has something to do with the java version here when compiling the remapped classes, but idk how to fix. { "name": "4195-b", "description": "Jenkins build 4195-b", "refs": { "BuildData": "32d1baf2f4e0e7cd1ac22c7b2f6eb4c387e8a343", "Bukkit": "376e37db4b23b1fc18f93d3aeccaa40b8bb16ed2", "CraftBukkit": "65247583f8c04171632caab7487c8aabceacd5c8", "Spigot": "f6a48054762b87d7c8568e567127b883241c592b" }, "toolsVersion": 181, "javaVersions": --->[65, 66]<--- }
This is the parent pom: https://github.com/NagasonicDev/Alkatraz/blob/master/pom.xml
Advanced Spigot Magic Plugin. Contribute to NagasonicDev/Alkatraz development by creating an account on GitHub.
Sounds like an intellij issue
Need to set right project SDK or something
^^ probably not using Java 21
Thanks, will try to test this later
Thank you! it worked
Can I write to you privately? I didn’t understand
If you want to
I wrote you
Vscode or intellij? What do you guys use? I go for vscode
Notepad++
intellij
jilletni
Emily is so good she codes in a mirror
yeah because everything i do is backwards 😭
Paint
I write code in sand and have an AI look at the pictures and directly generate the bytecode
Finger paints as I ate all the crayons
How do i even compete with bro
just ask chatgpt
Can anyone fix this?
private static final double CONSUME_PER_MIN = 130.0;
private static final double CONSUME_PER_TICK = CONSUME_PER_MIN / 1200.0;
private static final BlockFace[] FACES = {BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST, BlockFace.UP, BlockFace.DOWN};
private static final Map<Location, Inventory> inventories = new HashMap<>();
private static final Map<Location, Long> lastProcess = new HashMap<>();
private static final List<Recipe> recipes = new ArrayList<>();
private static final String TEXTURE_VALUE = "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTZjNzQ1OGJhYzQ3Yjc4MTg5NGJiOTFhMWU4NWI3ZTcwNGNmYmM2MzRjNzE5Mjg1YWI1YzhlZmQ5ZjgzZDQ5MCJ9fX0=";
anyway for using player head for item
?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.
nuh
it says cannot found symbole
i try anything
nothing works
what says that
be as specific as you can
these vague statements are kinda useless
same here, I ve been waiting 10 days now
Litebans doesn't work for me, I inserted it into the bungeecord server, I also connected the database, I also set the permissions on luckperms, but it always tells me that I don't have permission to execute the command, I'm going crazy
can anyone help me?
how do I get player heads itemstack with player skin? I lost the method I once made
public static ItemStack getPlayerHead(String playerName) {
ItemStack skull = new ItemStack(Material.PLAYER_HEAD);
SkullMeta meta = (SkullMeta) skull.getItemMeta();
meta.setOwningPlayer(Bukkit.getOfflinePlayer(playerName));
meta.setDisplayName("§e" + playerName + "'s Head");
skull.setItemMeta(meta);
return skull;
}
This does not work
depends on your spigot version
oh, there's a massive diff
Hello fellow spigot nerds, does anyone know how to configure the logging levels?
I have the following code but it does not appear to be working
getLogger().setLevel(Level.ALL);
getLogger().fine("Test debug message, yay");
I have a problem, when i trying to CraftPlayer.getHandle():
Caused by: java.lang.NoSuchMethodError: 'net.minecraft.server.level.ServerPlayer org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer.getHandle()'
i am using spigot-1.20.1-R0.1-SNAPSHOT-remapped-mojang.jar jar to use nms classes (in build.gradle - compileOnly files("<spigo jar name there>")), all compiled correctly. I created spigot-1.20.1.jar using java -jar BuildTools.jar --rev 1.20.1 -remapped.
Sounds like you're not remapping
You need to use this https://github.com/patrick-choe/mojang-spigot-remapper
also avoid jar dependencies
but it is only way to use nms in spigot, is not?
so... what's the other way?
Use the plugin I linked
or if you're on an old version where mojang mappings don't exist the artifact id is spigot instead of spigot-api
Execution failed for task ':remap'.
> Could not resolve all files for configuration ':detachedConfiguration1'.
> Could not find org.spigotmc:minecraft-server:1.20.1-R0.1-SNAPSHOT.
Searched in the following locations:
Where should I import org.spigotmc:minecraft-server ?..
That error usually happen when you haven't run BuildTools
or if you don't have mavenLocal() as a repo
Thank you so much, mavenLocal() help me. But which dependency i should use to use a spigot remapped nms?
compileOnly("org.spigotmc:spigot:1.20.1-R0.1-SNAPSHOT:remapped-mojang")
oh and don't forget
tasks.build {
dependsOn(tasks.remap)
}
Hello i wanted to ask u how could i set custom maps? basically my Core plugin is a roleplay with nations and i wanted them to show up on the maps when one its created or deleted
You'd need to make a map renderer that modifies the map
i was thinking to make it that updates automatically but im worried it will crash the server if there are too many maps
i will explain better when a player uses a map and there is a nation it will point the nation with a dot and the name and if the nation is removed or ones it adds it update the already existing map
How do I find the connection field in ServerGamePacketListenerImpl?
This code doesn't work
private Channel getChannel(ServerGamePacketListenerImpl listener) {
try {
for (Field f : listener.getClass().getFields()) {
if (f.getType() == Connection.class) {
return ((Connection) f.get(listener)).channel;
}
}
throw new RuntimeException();
} catch (Exception e) {
throw new RuntimeException();
}
}
try getDeclaredFields
if it's private it won't appear in getFields
i don't remember whether it is or not but that's a thing to try
Yeah I belive that's how it works
public final Connection connection; // Paper
i only have paper sources unfortunately
looks like they access transformed it to public from private
Yes, it works
I don't expect this field to be private
did you get it working?
yes, i did
does anybody know a way to make a custom mob spawning? i made a custom dimension and i disabled vanilla spawning, and i want to populate it with custom mobs
umm, im trying to make a spigot account, and it says im a bot can i get some help?
if you disable mob spawning at all, you generally can't spawn custom mobs
depends kinda sorta
if you disabled it, you can't do it with a datapack or whatever the orthodox method of doing it is
nothing is stopping you from manually picking random block locations and shoving in mobs, however
in which case there is really no "how" beyond just picking a random location, checking whatever conditions you want to check, and calling world::spawn
depends what exactly was disabled otherwise yes
unless it was disabled by setting the difficulty to peaceful, manually spawning mobs should always work
things like worldguard flags notwithstanding
What if it was disabled by deleting all the code
nvm, i got it to gibe me an account
i only used the gamerule that disables the mob spawning, hostile, neutral and pacific mobs still can be spawned by commands
What about Atlantic mobs
💀
I am having a minor issue compiling my multi-module project. When compiling, I want the output directory to be in the target/ folder of the parent module, but for some reason, it is appearing in the target/ folder of the v1_19_R1 module. To make it easier to see, the project can be seen here.
could have something to do with the module's .iml file being put into the parent module.
Sorry, I realised it is being compiled into every module except for the parent module
?gui
you need to use a maven plugin that allows manipulating directories. Some plugins allow it as part of their main functionality IE shade plugin so you don't need two plugins.
I suppose you could change the target directory too
but if you are shading best to not do that and let the shade plugin hadle it. Anyways point is, every module typically compiles into their own directory and then its after if you have it defined you would want to move such things. The problem you will encounter is that if you want something to happen in the parent directory the parent module will not make that happen since it compiles first
so what most I have seen usually do, is have a module that is compiled last to handle all these file related things and what have you so its cleaner and easier since it is in its own module and not spread out between all the modules
also prevents a module from failing because the file didn't move lol
Hello ip looking for devs ti help me whith my Minecraft Java setver
Don't post in every channel
Hypocrisy!
yeah. I do have another problem now (ikr). The plugin can't load (yippee), it gives this error, [10:04:29 ERROR]: [DirectoryProviderSource] Error loading plugin: java.lang.IllegalArgumentException: Directory 'plugins\.paper-remapped\Alkatraz_0.3.jar' does not contain a paper-plugin.yml or plugin.yml! Could not determine plugin type, cannot load a plugin from it! java.lang.RuntimeException: java.lang.IllegalArgumentException: Directory 'plugins\.paper-remapped\Alkatraz_0.3.jar' does not contain a paper-plugin.yml or plugin.yml! Could not determine plugin type, cannot load a plugin from it! at io.papermc.paper.plugin.provider.source.FileProviderSource.registerProviders(FileProviderSource.java:81) ~[paper-1.20.6.jar:1.20.6-151-a4f0f5c] at io.papermc.paper.plugin.provider.source.DirectoryProviderSource.registerProviders(DirectoryProviderSource.java:52) ~[paper-1.20.6.jar:1.20.6-151-a4f0f5c] at io.papermc.paper.plugin.provider.source.DirectoryProviderSource.registerProviders(DirectoryProviderSource.java:17) ~[paper-1.20.6.jar:1.20.6-151-a4f0f5c] at io.papermc.paper.plugin.util.EntrypointUtil.registerProvidersFromSource(EntrypointUtil.java:15) ~[paper-1.20.6.jar:1.20.6-151-a4f0f5c] at io.papermc.paper.plugin.PluginInitializerManager.load(PluginInitializerManager.java:109) ~[paper-1.20.6.jar:1.20.6-151-a4f0f5c] at net.minecraft.server.Main.main(Main.java:122) ~[paper-1.20.6.jar:1.20.6-151-a4f0f5c] at org.bukkit.craftbukkit.Main.main(Main.java:328) ~[paper-1.20.6.jar:1.20.6-151-a4f0f5c] at io.papermc.paperclip.Paperclip.lambda$main$0(Paperclip.java:42) ~[app:?] at java.base/java.lang.Thread.run(Thread.java:1474) ~[?:?] Caused by: java.lang.IllegalArgumentException: Directory 'plugins\.paper-remapped\Alkatraz_0.3.jar' does not contain a paper-plugin.yml or plugin.yml! Could not determine plugin type, cannot load a plugin from it! ... 9 more and i've got no clue if I'm using the right jar.
I'm not sure what it's doing wrong to not include the ymls
open the jar with winrar or whatever and see if it has the plugin.yml in it
if it doesn't, you're building it wrong
what is your project structure
and what build tool
Maven
How would I send that?
Yes, I sent the project in this link, and you should be able to see the structure
I fixed it,
How could i copy the jar file directly into my testing server when i compile it?
are you using maven or gradle
Hello! So, long story short, I am tasked to decompile a plugin -> convert into a project -> and implement large amounts of modifications to it. It's because the old author has not maintained it and moved to a different one. My problem rests on the API the original author used to make this specific plugin, and the customer requested to remove the API, and create custom code, for the sake of future feature additions. Do any of you think this is feasible? The whole plugin is surrounded by the use of this API, I've been at it for hours, but I fear that after removing it, compiling the new version of the plugin, and running it, there would be heaps of errors and I would just be wasting time.
plugins are usually small enough that it is often easier to just re-create it from the get-go
This one is huge
even has scripts and stuff
in that case, I would try to look into replacing the API the original author use with one that does the same, without modifying methods and what not
that way you at least get a baseline to where your efforts will be at instead of trying to patch every place the API used
in general, when working with reverse-engineered software, you want to try make the least amount of modifications to the original code as possible. This is mostly because it makes updates easier to handle but also because it allows you to not accidentally modify the behavior
would be easier to give pointers if you were more specific about what kind of plugin it is and what the API/library it used you're trying to replace
you mind if I send the github links?
go ahead
This is the plugin:
https://github.com/nulli0n/AdvancedMobArena-spigot
This is the API:
https://github.com/nulli0n/nightcore-spigot
I am confused, isn't the source right there
or did they make some modifications to it with a developer
Idk honestly, they provided me a new jar, with a version more updated than the github one
But I already figured out how to convert the jar into a project using CRF
is there a reason they don't just use the dev's new project AdvancedDungeonArena
A bunch of features they don't like they said
They'd rather stick to the old one
well, the API they used seems to still be maintained, is there any reason to fork it off?
seems to maintain mostly the same structure too
The thing is, I'm not supposed to use the API at all
what I would do in this situation is just work off the code in github and port over whatever modifications they did in the jar they provided
What if you could grab the project from the jar already? That's what I did. Saved me a lot of time
I mean, working off the decompiled code isn't going to be the same as working off the source
the project has multiple modules which I am sure were merged at compilation, you'll have to reconstruct the pom.xml and the project structure
Quick question, in that case, how would I know what changes happened between the old version vs new one? I'd still be looking at decompiled code though right
oooooh good point
you would compile the old version and compare it against the jar you have, yeah
if they didn't do much other than updating the NMS classes, it should be trivial
Hmmm, that aside, how do you propose I get rid of the API? It's used all over the plugin code 😭
as for the API, I would just fork it off and change the name of the package lol
they wouldn't know
I honestly don't think it is worth replacing if it is used all over the place
And just shade it in the plugin? That way they don't need to download it separately
THATS WHAT IM SAYING LOL
huge waste of time
sure, that works
Now the only thing I'm worried about is if they decompile the plugin themselves and see the API code
if it is a plugin type of library, then you'll just have to call its onEnable/onDisable methods yourself on the AdvancedMobArena plugin
if the names are different they won't even notice
I doubt they're going to go that far anyway
or just be honest with them and tell them that if they want to replace the whole thing then they'll have to pay more, but if they allow just forking it off then we can work it out
And If I already set a price 😬
you have the source available after all, you can include any and all changes they may request to it
prices are never constant, you'll just have to talk to them about it being more involved than what you had expected and if they don't want to spend more money and time into creating a replacement for that API (do mention that it would essentially be equivalent to recreating the whole plugin as it is used everywhere), then forking off the existing one is the most sensible solution
if they're worried about licensing issues then idk what to say, they'd have to consult a lawyer
Right on, I'll definitely talk to them about this. I really wanted a second opinion, thanks
So in summary: Fork the old project and update to jar version & Fork the API (Or not depending if there are breaking changes)
Is that right?
yeah, pretty much
you can fork the API and just revert to an older commit if that makes it easier to work with the current source
in short, cut corners where you can otherwise you're going to be spending more time and effort than you were paid for lol
Alrighty, will do that. Thanks for taking the time to talk about this btw!
So true
@sly topaz mb for the ping. Just an update: we had agreed on including the API INSIDE of the plugin itself. Reason for this being that he had two other plugins from the same author using newer versions of the API. Plus, the API in the old version included a lot of useless dependencies, so he wants me to remove all of that.
I think I'll just bundle it with the API module
sounds reasonable, if you were going to shade it you'd have to relocate it anyway
you could also just update the old plugin to use the new API, if not much has changed since the version they used and the version it is now
I looked into it more, and I was greeted with another API
so the API in the version he wanted me to use was "NightCore"
but the API the old plugin was using was "NexEngine"
so I don't think I can fork the old project
😭
welp, that's a shame
truly
is this AdvancedMobArena
Does BlockPlaceEvent get called if BlockMultiPlaceEvent is called?
And are there multi break events?
it is, scroll up a bit they shared the repo for that one 😛
did you happen to do the update on that plugin for a client? Would be funny if so
Imagine they hired someone else to do a different update lol
is this plugin that popular
Can smb teach me how to make a simple weapon Plugins i could teach pvp or smt in return
Don't post in every channel
If there is a mineshaft in my server, with which plugin can I put levels on the different mines?
Yeah
Wdym?
what r u trying to ask
"put levels"?
like more layers to the mineshaft?
@echo basalt you there?
Sup
sooooo
what were you saying about advancedmobarena?
@echo basalt which version did you update it to btw? If you don't mind me asking
@echo basalt sorry for the pings 👉 👈
oh so just nms stuff then?
Ported most of it to nightcore
oh alr, I thought you were doing something similar to mine
thanks!
well good for you lol, were you paid well?
Just curious
I'm doing something way more complex, removing a bunch of the internal systems, then a custom fork of nightcore as well
something new actually
I don't usually work with big projects
sounds easy enough
ok mega ultra professional programmer
I'll get there one day, really working on project building rn and completing commissions for exposure
Is there a way to drop multiple items using World#dropItemNaturally without spamming it in loop?
no
why is that an issue?
No, just don't like spamming methods
ah
Conversation API
ok
is there any docs anywhere for it?
besides the class definitions
Conversable forWhom what is a Conversable?
Open the javadoc page for Conversable
something that is able of conversation
forWhom - using proper english in programming 😭
Any idea why invisible players name tags are still showing?
Google says I need to put all players into a team and set seeFriendlyInvisible false
but seems like that setting would be default, why do i need a team?
do you have any other plugins which might conflict with it
Nope it my plugin
I removed it - and it worked normally
but i have team.setCanSeeFriendlyInvisibles(false);
send your code
TeamTemplate template = rank.getTeamTemplate();
for(String entry : template.getPlayers()) {
User target = Server.getUser(entry, "FSB");
if(target == null) continue;
Team team = sBoard.registerNewTeam(rank.getOrderID() + (entry.length() > 6 ? entry.substring(0, entry.length() - 6) : entry));
String relationColor = ChatHandler.getColor(user, FactionManager.getFaction(target));
team.setPrefix(ChatColor.translateAlternateColorCodes('&', template.getPrefix()) +
ChatColor.translateAlternateColorCodes('&', target.getNameTagPrefix()) +
ChatColor.translateAlternateColorCodes('&', relationColor));
team.setAllowFriendlyFire(true);
team.setCanSeeFriendlyInvisibles(false);
team.addEntry(entry);
}
}```
It's my old rank sorting method
removing this and it works normally
(besides needing an overhaul)
how can i quick fix this
things are going well today
left a negative review on spigot too
I'd rate that a 7/10 on the crashout scale
this was because I asked for logs btw lol
use a decompiler to check it got included in your jar
looks like nothing got compiled
its because
i kept maven jaring instead of mavn package
yeah mate whats up
and if you've got a problem with minors id advise staying off the internet
is there a way to import a dependency even if there is not an API on maven or gradle?
whats a banned word in this?
XD
someone said that word many times
and didnt get removed
Install to local repo or use a system depend
"fuck" it literrally says
its dyno flagging it
gradle or maven
for gradle its compileOnly files("path")
the copper golem ai is even worse than villagers
I got a guy who keeps deleting his review of my plugin and posting again saying that I asked him to pay for support, and he keeps deleting it every time I call him out on it
(because I've never done that)
Gooners on the internet
send him a backdoored build as the "fix"
Bro has "Customers always right" mentality
well, they are
[in matter of taste]
real question is, is this a free or premium plugin hes got
cuz in my experience people expect a lot more from the free plugins
I had a guy post on my profile that he was wondering if I could update a plugin to support 1.21.8. I test it on Spigot and Paper, everything works fine. I tell him this, he offers to Discord screen share so I can see the errors. A week later he finally does. There are some errors about calling my teleport function, I ask if there are any errors on startup, he says yes, restarts the server to show me, then magically there are no errors and the plugin works fine. Was conversing with him for a week and all he needed to do was restart the damn server.
Supporting plugins sucks...
Lucked out too, I haven't had to update that plugin in over 4 years, lost the source code, and like nothing can successfully decompile it.
this is why i don't release plugins publicly
i only ever released one, and that was deleted off spigot because i accidentally broke compatibility with spigot over paper
i probably should've raised a fuss and appealed for it to get restored since it had a lot of positive reviews, but i didn't bother
god knows what happened precisely, i didn't really keep an eye on it
one day when i logged on after weeks of inactivity it was just gone
it was an optimization plugin for villagers
Right on
Mine is a teleportation plugin. I overhauled it and made version 2, then somebody found out that if you had items floating down a stream in a very specific configuration items wouldn't teleport. I spent a day trying to fix it but nothing worked. I just gave up on it, I figured practically no one is going to do that with the plugin anyway.
Just amazes me how much people play around and stress test it.
production is the ultimate testing environment
For real.
I actually know a way to fix it, going back to the old system, but the old one wasn't 100% compatible with multiverse.
Had someone cry about it because I told him he also needed Multi-Verse Nether or something like that installed
how can i detect player catchingn a fish with a fishing rod, making sure its a new fish and not just a dropped item
declaration: package: org.bukkit.event.player, class: PlayerFishEvent
yeah so how to tell apart if its a fish from water or just an itemstack
there's a bug in minecraft, you can do the fishing achievement by just fishing the itemstack
you can use the event and check the state
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerFishEvent.State.html
probably want to check for caught_fish
what you're describing sounds like would trigger caught_entity instead
Hi, what would be the best way to store the identifier of a sound ?
Currently I'm using Sound.ENTITY_EXPERIENCE_ORB_PICKUP.getKey().getKey() but I'm having some issues with conversion where it seems sounds are now lowercase, where before they were uppercase, which are no longer recognized by NamespacedKey.fromString(); (and then Registry.SOUNDS.get(key))
Maybe I'm using the wrong APIs to serialize/deserialize sounds ?
oh
the key has always been lowercase, that key is the same one in the NamespacedKey which has always accepted only lowercase, what's the issue exactly?
Okay I just asked the user and they've been using the plugin for a very long time, so they actually had the sound stored in the very old enum to string format that I had before namespacedkey, and they just updated
can i detect if a potion was newly made and not put into brewing stand's bottom slots and taken back?
yes
in this instance you would only need to worry about the inventory event and whether or not a player moved something from their inventory to the brewing stand
however, this wouldn't work if someone else placed something and another comes and gets it I suppose so the better alternative is to record the time when it was brewed and if a player has taken anything
then you can easily tell if it has been messed with or not 🙂
you can record data into blocks or chunks
oh
or just in the ItemStack itself tbh, put potion in brewing stand -> add pdc to potion, check pdc when retrieving item
if pdc doesn't exist then its obviously not the same one
yeah that would work better I suppose
forget you can add stuff to the itemstacks
how can i fully disable the shifting feature and how can i disable the inventory? because i tried this way but not working properly
@EventHandler
public void onPlayerToggleSneak(PlayerToggleSneakEvent event) {
Player p = event.getPlayer();
if (event.isSneaking()) {
p.setSneaking(false);
}
}
@EventHandler
public void onInventoryOpen(InventoryOpenEvent event) {
Player p = (Player) event.getPlayer();
p.closeInventory();
event.setCancelled(true);
}```
You kinda can't. Disabling the sneaking state on the server (as you're doing) won't affect anything visually on the client. Client still thinks it's sneaking when it's not, so you might just end up with some unexpected weirdness
And you can't stop the player from opening their own inventory either. Client doesn't tell the server about that
So congratulations. You've sought out to disable two features you're unable to disable exclusively from the server :p
last I recalled in the modern clients the player inventory is always opened
hence it no longer sends the open inventory packet
It may just be the default inventory, yeah
like pulling the data from the db (async) but I want to:
load the data fully -> proceed with AsyncPlayerPreLoginEvent -> PlayerJoinEvent...
while you can delay the login process for that, it is generally better to just have them wait in the lobby
you can only delay by like 30 seconds at most, and second you will induce players disconnect to reconnect if it takes too long. But you really don't need to halt anything, just let them in to a lobby until your stuff is done 🙂
it is a much better experience for the player this way
instead of looking at a loading screen
you know, i was thinking of this feature; if a new player joins, ill let them explore the lobby, and there would be a button or something where theres a sign that says.. i've decided, i want to play here. becuase. i dont want bloatware data when player joins, plays for 5 minutes and exits.. or just joins and leaves after 15 seconds
makes sense
i still have to think this through carefully
but I have always incorporated in servers I ran a temporary area where it had its own mini-games
while players waited
it is usually effective since they don't realize most of the time that the server was done loading like minutes ago 😛
and it even told them they could leave as well
my servers are local and so is the db. im not worried about the latency, just when theres tons of players, i want to everything perform well and fast. i dont want errors and stuff, this is why i carefully design everything. i want things to work smooth, which is why im considering AsyncPlayerPreLoginEvent, because i dont want to load the data on PlayerJoinEvent, this is where already players have physically joined, i think its not great to do db requests on this event
so that requires checking a lot of things in InventoryDragEvent and InventoryClickEvent right?
its not, however the only important thing that should be done during log in though is whether or not you want them to join. That is are they banned or not. As I said, everything else you would need from the DB can be done later once they are connected and you don't need to slow/halt their connecting for it
and if your DB is local this will all be quick anyways before they can most likely decide to do anything in the lobby
yeah, good point. thanks
👌
have to think this through
just came from work and now i gotta work on this
always fun
yeah
its a personal project.. i dont know what i would do with my life if i didnt know how to code really... i hear people all the time, even my coworkers... i dont know what to do when im at home.. i watch tv.. im bored... and i just dont know what to say back to them
Tell them to get a hobby
I'm trying to make players not be able to interact with chests, buttons, doors, (just interactable blocks) but that would mean they also wouldn't be able to eat or throw pearls ect in the "claim". The only idea I've had is to just create a long list of the interactable blocks but I don't think thats the most efficient way to do it
tysm
I seem to be locked into some kind of duel
this guy keeps deleting his review and posting it again
and reposts deletes it again and posts it again every time I call him out
I mean can I even report this?
the fact they keep deleting and reposting might be reportable
I don't know that deleting your review every couple of hours to hide the dev's reply is against tos, he's been doing it for a couple of days now
keeps accusing me of different things too
might count as spam
I did use the report user thing on the forums but no clue how that will pan out
Is it okay to store an instance of the player as an instance variable or no
Gotcha thanks 🙂
Im looking for a experienced scripter/dev to script me an economy system and probably a little bit more, I am willing to pay.
If you are interested please dm me.
?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/
✨
what is the difference... ?
if (!(inventory instanceof BrewerInventory brewerInventory)) return;
if (inventory.getType() != InventoryType.BREWING) return;
if (!(inventory.getHolder() instanceof BrewingStand brewingStand)) return;
probably not much
but it depends on why you need the brewing stuff
do you need the inventory? its easier to use instanceof since then you have a variable of the inventory
do you need the stand itself? its easier to use the holder
stuff like that
the inventory type check seems kinda useless
unless its the same thing as an anvil in which case it will never be a BrewingInventory
looking for dev/tester for my smp for free please dm
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/
coconut guy, what's up
free 😭
worth it
will u give referal
Nope too much work
how can i detect when a player puts something in an inventory
handle all of the cases, like dragging shidt clicking etc
InventoryClickEvent and InventoryDragEvent is all you need
yeah but do i have to compare inventory before and after or like
in the click event you have the clicktype and action, you can check that alongside the clicked slot or pressed hotbar number to determine the target inventory etc
check every scenerio which is complicated i think
in the drag event you'd need to check the inventory corresponding to the target slots in the inventoryview
well, there's no simple one-line check the server provides for you
isnt there also a move evebt
but...
that's just the click event
oh
the move event is for hoppers and droppers i think
isnt that really complicated to do because there are so many scenerios, you can double click, or double click on an item while having another item on your cursor etc
¯_(ツ)_/¯
you can't cover every possible scenario without covering every possible scenario
cant i compare inventory before and after?
because i dont really care about anything else than just getting the contents of the slots
the event is called before the inventory is modified; you can get the contents after by waiting a tick, but then you can't cancel the event anymore, you have to cancel it right then and there
whats the purpose of what you are trying to do
i mean sure, if your goal is not to mutate the event, all you'd have to do is save the items in a list in the event, and then get the inventory a tick later to compare the saved items with the new ones; but yeah this feels very sketch idk, what do you need this for if not alter stuff in the event?
change the contents just means change anything about the inventory
i dont know if that will solve my problem though
i need to add distinguish player taking out newly brewed potions vs taking out potions they just put there
butt
this doesnt really solvem my problem i realized
yeah i said
xy
its for a "brew x potions" quest
i cant count the potions that were put there manually
isnt there like a brew event?
because you wanna solve issues that dont need solutions
oh there's a term for that
yeah haha
its pretty common dw
but now you know what we mean if we say xy problem
uhm but how does brewevent help me exacly
i can add the pdc
but later, should i take it away?
yeah I dont think the brew even us actually very useful for knowing which player is doing the brewing
yeah i dont care which player is brewing, just which one is taking it
the core issue here is how do you detect if a player has a brewed a potion
just not to count it when the potion was put there and not brewed
invert your problem and rather than having to detect whether it was put there, you detect whether it was brewn there
you can put pdc on the result items when the brew event is triggered
brewed
i could: add pdc "brewed" to potions on brew event, and then just idk try to remove every "brewed" pdc from every players inventory like every 5 seconds or whatever
i'd put the pdc data on the brewing stand rather than the items
but it wouldnt work because 5 seconds is too much
just check when the player is moving an item from the result slot
check if the item has the brewed tag, sound the alarm, and remove the tag
with which event
that goes back around to what emily was saying
drag and click events
so your initial questikn was partially right
yeah.. i tried to detect these things once. it was so complicated that i didnt do that
You could add the pdc on brew event then just remove it when the player removes the item
i don't like the prospects of putting the tags on the items themselves, since if you miss something and don't end up removing the tag, you now have funny items in circulation with tags on them that can proc odd behavior
how else to do that?
i'd rather put the data on the brewing stand, like an int set of slots which have "brewed" potions in them
when one of them is taken out, remove the int from the set and increment quest progress
but youd have to do the same checks anyways to remove the data accordingly
well yes but now the data is confined to the brewing stand
which won't go into circulation and do funny business
so i have to do that anyway ?
yeah
but its not that hard
you just check if the player clicks on a brewed potion
isnt there a method to take it in another way
i'd probably just store a clone of the potion in a slot -> stack mapping on the brewing stand, and after every inventory interaction, check whether the slot and the mapping still match
if they don't, the item was replaced
i.e. taken out and something else, possibly air, was put in its place
and then use the int set to determine whether to dispense rewards
does inventory.getItem or dropping the item make a clone ?
inventory getitem is a view iirc
i dont think so
dropitem, dunno
Do you want to usually put your listeners all in one class or no
depends
I have one listener but its all delegating the functions to other parts of the plugin
but I think it highly depends on your setup
who said I didnt?
Inventory#getItem() makes a mirror (changes are directly applied to the item, no need to re-set in inventory), World#dropItem() makes an NMS copy to drop
See parenthesis
yeah but what is this phrase
to make a mirror
is it just assigning place in memory to another variable
e.g.
ItemStack itemStack = inventory.getItem(0);
itemStack.setType(Material.STONE);
inventory.setItem(0, itemStack); // This is not necessary for a mirror
The ItemStack is backed directly by the NMS ItemStack
I do wish this were more explicitly described somewhere what is and is not returned by which methods, because some return mirrors, some return clones, and some return instances
Although my real opinion is that all ItemStacks should be backed by NMS methods and that ItemStack should be an interface, but that's for another day
To know which is returned, you have to look at CraftBukkit and see if it returns CraftItemStack.asCraftMirror(), #asCraftCopy() or #asNMSCopy()
difference between an instance nad a mirror??
Just not a clone
private ItemStack itemStack;
public ItemStack getItemStack() {
return itemStack;
}
It's still mutable. Some events do this (when they really shouldn't lol)
returning the instance means that the instance is returned, i.e. you now have a pointer to the same object as what's held in some event's field for example
returning a mirror/view means you get a potentially new instance, but it wraps the backing instance, typically a nms stack (as you can't return nms stacks in the api, they need to get wrapped)
in practice there usually isn't much difference between them, but there have historically been some inconsistencies in how the CraftItemStack handles some mutating operations
e.g. it used to be that setting the amount of a craftstack to 0, or its type to air, would just drop the reference to the wrapped nms stack, rather than modify the backing nms stack; while doing other modifications would be reflected in the nms stack correctly
a common source of dupes in plugins, as "deleting" the item through the view didn't delete the backing item
CraftBukkit does all three, is inconsistent about it, and does not document/standardize it in any capacity 🙃 The beauty of a 16 year old codebase
Mirroring has the same mutability as the instance but as a separate, different instance
== will fail but modifying the mirror wrapper will modify the nms instnace
there is a page that show all the structure of all the version of the resoucepack?
the only part of that that i like is the quest details window, the rest honestly looks kind of crummy
but the quest details window does look good
it's the only one that's been finalized in the native format
the rest would probably start looking good too with some custom bitmap font nonsense
everything else was just throw together
this is a massive hack of the fact these menus show the same info on books, chest menus and now dialogs
we already render gui windows with font nonsense just from the container title, i'm sure we can do the same and better in dialogs
which I will be honest have nothing in common in terms of display capabilities and limitations lol
once I can drop support for older versions I'll also be able to make it better
mmyeah
i'm quite looking forward to dialogs getting enough adoption for me to start messing with "gui" textures for them
I just made a lib to deal with it
by which I mean I had ai do 90% and then fixed 60%
it's just json at the end of the day
Magma diligently training his replacement
already trained on my github code anyhow
The next step is to turn us all into batteries, or food.
the matrix IP originally had the machines using human brains as biological computers/neural networks rather than as "batteries" which actually makes a lot of sense, but it was dumbed down for the movies because they figured it would go over peoples' heads
honestly for a while I assumed the former not the latter about the matrix
though the irony that the concept would be too complex for people to grasp when the concept is exploiting's people brain power is not lost on me
im trying to add bstats
That Metrics class is not available during runtime
Make sure you’re shading it
how could i make a neutral mob always hostile?
depends on the mob
For some you can simply set them to be angry
Others are more complicated and need a target
Alternatively you just disguise a regular hostile mob as whatever you want
ze pathfinding
HELLO I AM QUIN I AM CONSIDERING STARTING A HAZBIN HOTEL THEMED Minecraft server with my friend I am not the owner currently we are looking for a coder to help us add some code to the server unfortunately at the time we can’t pay but would be very grateful if someone could lend a hand
?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/
Thx
hey just double checking because I am somehow getting multiple requests for it, but there isn't a way to tag a zone as being a specific, custom structure via the api right
using mc data, of course, not wanting to store this in my own structure
I thought they had namespaced tags for that
I might be wrong tho
what's "they"?
it's like an arbitrary amount of blocks would be in a "zone"
como enlazo mi discord cuenta a spigot en la pagina?
english only please
Via the api? No
i usually clown emote these but you know what i kind of want to see this lmao
what do you need written
I have a source code, how can I convert it into a jar?
javac gang rise up
I don't know anything about IDE, can you suggest something that I can easily turn into a jar?
do you have a build script also or only the source code
src
look for a pom.xml or some .kts files
maybe ask gpt to also generate the build scripts
but I would recommend using an IDE like Intellij
its decently easy to get into
and with the mc dev plugin you can just make a plugin project that compiles by pressing a button
neither of those is really going to help you hunt down the dependencies for some uber nms project that depends on 25 protection plugins including worldguard and some fucknuggetshieldstones that was taken down off github in 2014
it's a maven project, then
build it with maven
install maven from wherever and then cd into the directory with the pom.xml and run mvn clean package
maven or intelijidea?
intellij comes with its bundled in maven install iirc
the next step is to pray that the build script actually works and the repositories it references are still up
and that there aren't like 50 system scope resources of random nms jars
where will i install maven?
doesn't matter, as long as you can run it
is PlayerInputEvent backwards compatible?
the event is not going to work on server versions it did not exist in
i have no clue what you're trying to ask exactly
yeah mb 🤦♂️
cannot run the current file: the editor is not in focus
?
send the entire error and what you're trying to do
by the sounds of it you probably installed intellij and are trying to click some button that runs some file
which isn't really what you want to do
did you run into some issue with running mvn clean package?
I'm using intelijidea for the first time, I dragged the src directly.
i downloaded maven.
Intellij already comes with maven so we're not worried about that
Could you show us your project structure
And also what are you trying to do
how can I show it as a photo?
?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
do we have a way in the api to force a player to reel in their fishing rod
I have the source code of a plugin and I'm trying to convert it into a jar file.
don't drag anything anywhere
open your command prompt and cd into the directory the pom.xml is in
then run mvn clean package
1min
alternatively, click that m on the right sidebar
mvn : The term 'mvn' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that
the path is correct and try again.
At line:1 char:1
- mvn clean package
-
+ CategoryInfo : ObjectNotFound: (mvn:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
you didn't install maven
then unfold the root project and doubleclick package
Need to use Intellij to run maven for you ^^
Since it's not on the path
(Or add it to the path)
either add it to the path or run it through the ide
^^
click compile

