#help-development
1 messages · Page 1223 of 1
yeah but python seems to have the same one anwyay
I had like python # new sha1 dummy test dummy_sha1 = hashlib.sha1() dummy_sha1.update(b"Notch") dummy_hash = dummy_sha1.hexdigest() print(f"Dummy Hash: {dummy_hash}") and it returned 4ed1f46bbe04bc756bcb17c0c7ce3e4632f06a48 which is the same one here
so i guessed that aint a problem
ah wait i think my verify token is bullshit
It then encrypts the shared secret and verify token with the server's public key (PKCS#1 v1.5 padded), and sends both to the server in an Encryption Response packet. Both byte arrays in the Encryption Response packet will be 128 bytes long because of the padding. This is the only time the client uses the server's public key.
yeah ngl i dont think i encrypted shit
💀
yeah...
# sha1 := Sha1() nice comment????
I don't mean to be reductive but... y-yeah?
// if(x) { y; }
if (x) { y; }```
it wasnt very enlightening instructions
lol
do you have any idea how i could verify that the public key isnt total bogus
i guess this website would tell me
yeah
i didnt even know python had type hints
are you certain there was no response?
typically when you do network related stuff you would have a network sniffer/capture client running
the response was just a kick packet with that lmao
but its fine i think i figured out why
i actually gotta encrypt this data somehow
that is the response to the client
what about the response to the server?
worldedit api doodoo
there is a 3 way communication that happens when a client attempts to join a server
i mean the client was me sending my non encrypted data
that should be encrypted
i just sent back the same stuff the server sent to me lmao
i was wondering how useful that truly was
Hello, I have a fairly technical question. Is it possible to retrieve the source of a message sent by a plugin? I already tried with ProtocolLib regarding the packages, but the source still remains unknown
More precisely who sends the message in relation to the plugins. For example :
-
The player connects, he receives the welcome message from Essentials
-
The plugin manages to find that it was Essentials who sent the message
In fact the problem is that when the message is sent by the plugin, it is sent by the server and I cannot retrieve the source
mmm
I think your only option would be walking the stack trace to find the original source of it
But due to how packets are sent that might not work
Already done, and it doesn't work x)
There's probably some real hacky stuff you can do with reflection
Such as injecting a wrapper in to the pipeline where the message is sent
So you can capture it there
you could start with peeking at the listener registration
and see which plugins are listening for player joins
but you will eventually have to resort to reflection though
I actually thought about listening to "all the plugins" to see if there's anything that stands out. I'm currently working on it, maybe it will produce a result.
well, you would have to use reflection to scan the methods. The registration would just help you figure out which plugins might be doing something
won't necessarily tell you that it sends out a message
that is where reflection comes in
Sound a great idea ! I will try it
Work 🙂
Thanks !

Hi yall I am not to sure what I am allowed to say in here but mods please let me write this i need help lol
You can ask whatever. Just get to the point.
Awesome let me know waht you think
obviously you don't read the rules
otherwise you would know that advertising services doesn't belong here
I cant really open any links right now which is why I said that
Pay me 30$ per 100 lines.
just excuses for not reading the rules
I appologize for that I just need some help with it and cant really open any links
you can't open links but can have discord open?
right, don't think you are fooling anyone here since this is the spigot discord you know o.O
also, probably won't get anyone to agree to your terms with your ad if you are not going to pay someone lmao
I am I just tried to send the message but it wouldent let me use the word pay
It kept saying blocked word
I obviosly am paying I am not an idiot
That is not true but I love when people assume
Yes, It is called an app and the internet
therefore you can open links
If I am on the app and I dont have permisions set to open exeternal links then therefore I can not open links
I am not tryin to fight just trying to explain my prespective
you can still copy them and open them, you can also give temporary perms as well
I don't care for your perspective
as I said earlier it is just excuses or rather, just being to lazy to actually go read them
so you figured you would play innocent and just post it anyways, fortunately the mods/staff are not always super strict so the odds of someone getting banned from the first instance is not likely but still possible
What if I don't have the ability to do that, what if my pc is on gd life support which is why I am asking so I dont pay like 50 a month for a server I aint using
Excuses does not equal invalid
not sure what you mean by that, it is up to the mods/staff who is or is not allowed to break the rules 🙂
I guess you could always take a gamble with that
You are very good at asuming peoples situations
I am very good at just simply not caring
as far as I am concerned you are some random person on the internet
Again I never said ignorance to the rules is an excuse you made that up and put words in to my mouth saying that I thought I would just play dumb etc like dude just chill out and maybe try to help people instead of just telling them that they are brainless pieces of sht
I prefer that last part but sadly I don't really tell that to people all the much
or really at all
You imply it though
sure what is your point?
that I am terrible ?
I probably should have clarified the caring part, not only do I not really care for people on the internet but I don't really care what their opinions are either
No just that you could give people a chance
a chance for what?
What I mean is just try to be nice instead of outright insulting them, I mena you be you but it might go a long way man
A chance to explain themselves or just hold a friendly conversation before you become agressive
I am not aggressive, I am just very direct and to the point
all I did was call you out on not reading the rules when you have the ability to do so. You were the one that got defensive about it and I simply didn't care for the excuses 😉
good news though I am not a moderator or staff member here so nothing I can do about it 🙂
shouldnt this be dual not duel
Which while online and not being able to directly feel and see peoples emotions it makes for a very agressive feel
mutual combat is acceptable in some places still just fyi
doesn't really sound like my problem
Could be either tbh
Just look at that tho I am serious instead of saying that just say ok or if you dont think of just say no thanks
o.O
yall it is not that deep just move on
yeah, this person took too much offense
ngl ur just being a dick
indeed
Then just dont be? idc at this point enjoy your night
have fun 🙂
Good morning! if you are est you got any interest in helping me out? i do plan on paying I just for some reason couldent add that to the message cause it was a blocked word
no
?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/
Fair
I would also refrain from attempting to DM people as well. Only because if people complain to the staff about it here, they may very well remove you from the server
it does count as a form of spam/advertising thing
Well ok I don't see the practical implications of that but ok I guess
I don't know you nor what you intend to do, some have resorted to DM'ing people here and I have seen the result of that and that is getting banned
usually
Well I will only dm people that let me or say they want to help
Fuck up already
technically they have
couldn't say
as I don't know
unless their message is missing two words
then it would make sense
but I surmise then their message wouldn't have been sent as it would have been caught by the filters
Should have said Shut the
No I’m just Australian.
Fuck up -> shut the fuck up
well just fyi but to non-australians your message meant something else entirely
I was talking to this guy, yapping when he broke the rules.
figured as much but still without those two words or at least the one, message means something else XD
u have a perverse mind
I want to disable [Render thread/WARN] and [Worker-Main-7/WARN] from logs. It'll be better for me to read and send those logs without that spam. I cannot even find any topic about it.
uh Render thread sounds like a client log to me
what warnings specifically are you seeing
you shouldnt be seeing any lol
I have a shop plugin and i want users to only make shops with chests they placed themselfs, how much will it lag if i log every chest on blockplace/blockbreak?
since griefers just claims other chets so they are unaccessable for others
just add an owner tag to a chest in the pdc when they get placed
should be pretty lightweight
sorry but what is a pdc? i need to google that i am new
?pdc
thanks
hiya, hopefully appropriate to this channel, I'm currently having a tiny issue with bungeecord forwarding (idk if it's also appropriate to use a boolean for that), pasted my methods below
from sender
ByteArrayOutputStream b = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(b);
try {
out.writeUTF("Forward");
out.writeUTF("lobby");
out.writeUTF("GameStatus");
ByteArrayOutputStream msgBytes = new ByteArrayOutputStream();
DataOutputStream msgOut = new DataOutputStream(msgBytes);
msgOut.writeUTF("dodgeball");
msgOut.writeBoolean(ingame);
byte[] finalMsg = msgBytes.toByteArray();
out.writeShort(finalMsg.length);
out.write(finalMsg);
Bukkit.getLogger().info("[Dodgeball] Sent GameStatus " + (ingame ? "INGAME" : "LOBBY"));
} catch (Exception e) {
e.printStackTrace();
}
Player sender = Bukkit.getOnlinePlayers().stream().findFirst().orElse(null);
if (sender != null) {
sender.sendPluginMessage(Dodgeball.getInstance(), "BungeeCord", b.toByteArray());
}
}
receiver:
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
if (!channel.equals("BungeeCord")) return;
try {
DataInputStream in = new DataInputStream(new ByteArrayInputStream(message));
String subChannel = in.readUTF();
Bukkit.getLogger().info("[Lobby] Received plugin message: " + subChannel);
if (subChannel.equals("PlayerCount")) {
String server = in.readUTF();
int playerCount = in.readInt();
plugin.getLobbyScoreboard().updateTotalPlayers(playerCount);
CompassGUI.updatePlayerCount(server, playerCount);
CompassGUI.updateDodgeballLore();
return;
}
if (subChannel.equals("Forward")) {
String forwardedSubChannel = in.readUTF();
short messageLength = in.readShort();
byte[] forwardedMessage = new byte[messageLength];
in.readFully(forwardedMessage);
if (forwardedSubChannel.equals("GameStatus")) {
DataInputStream forwardedIn = new DataInputStream(new ByteArrayInputStream(forwardedMessage));
String gameName = forwardedIn.readUTF();
boolean inGame = forwardedIn.readBoolean();
CompassGUI.updateGameStatus(gameName, inGame);
Bukkit.getLogger().info("[Lobby] GameStatus " + gameName + ": " + (inGame ? "INGAME" : "LOBBY"));
}
}
} catch (Exception e) {
e.printStackTrace();
Bukkit.getLogger().warning("[Lobby] Error while handling plugin message!");
}
}
The message pretty much is being correctly sent, however the receiver only intercepts the message but doesn't seem to detect it's GameStatus
https://github.com/SpigotMC/BungeeCord/blob/master/protocol/src/main/java/net/md_5/bungee/protocol/packet/Team.java can this packet be sent from client to server side?
no
how can I check if a ray from point A to point B has a point that falls inside a bounding box
math
what kind
Why is this method not existing for shulker chests?
if (block.getBlockData() instanceof org.bukkit.block.data.type.Chest) {
facing = ((org.bukkit.block.data.type.Chest) block.getBlockData()).getFacing();
its not a chest
is there an alternative?
it works for barrels too
but i guess shulker boxes dont have that
Isnt there a shulkerbox interface
Excuse me
I have a config.yml file on my PHP website, when users access this file via url it automatically downloads, is there a way to prevent them from manually accessing it? I tried designing the .htaccess file,
But it doesn't work
Can someone help me?, thanks
Like i was thinking to do something like this alternative
if (block.getType() == Material.SHULKER_BOX || block.getType().toString().endsWith("_SHULKER_BOX")) {
textDisplay.setBillboard(Display.Billboard.CENTER.FIXED);
textDisplay.setRotation(player.getLocation().getYaw() + 180f, 0);
but how can i make it always looking into 1 direction? like north, east etc not something between that
Just remove the _
Huh?
and only do the one comparison or use tags
the code is working
but it should get rounded to north or south for example you know what i mean? not something between both
Why not use tags or instanceof shulkerbox
shulkerbox doesnt exist
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/block/ShulkerBox.html so I'm looking in the wrong place then ?
declaration: package: org.bukkit, interface: Tag
I would really advise against block.getType().toString().endsWith("_SHULKER_BOX")
oh i did org.bukkit.block.data.type.SHULKERBOX
It's facing up, not to a side, what do you expect it to do here.
fixed it now
yeah i know i want to calculate where the player is looking and place the textdisplay in the direction where the player is looking at
Aah got it
yesss
my english sucks so idk#
it should look at north,west,south,east not somewhere between
I feel like there was a method specifically for that somewhere
i am new as hell to java so idk where to look things up etc
help would be really appreciated 🙏
i used that already for the chests but for shulkerboxes it doesnt work
if (block.getBlockData() instanceof ShulkerBox) {
textDisplay.setBillboard(Display.Billboard.CENTER.FIXED);
textDisplay.setRotation(player.getLocation().getYaw() + 180f, 0);
} else {
// Überprüfen, ob der Block ein Chest ist
BlockFace facing = BlockFace.NORTH; // Defaultwert, falls kein gültiger Blocktyp gefunden wird
if (block.getBlockData() instanceof org.bukkit.block.data.type.Chest) {
facing = ((org.bukkit.block.data.type.Chest) block.getBlockData()).getFacing();
}
// Überprüfen, ob der Block ein Barrel ist
else if (block.getBlockData() instanceof org.bukkit.block.data.type.Barrel) {
facing = ((org.bukkit.block.data.type.Barrel) block.getBlockData()).getFacing();
}
no, the one I sent is for entity
Get that facing from player, and use that in rotation.
It will be "rounded"
lemme try
Hmm, why do you have the full qualifier org.bukkit.block.data.type.Chest
or whatever its called
Oh, barrels will have the same problem if they're placed facing up
I mean, you have two things you have to do:
If the block is placed in some cardinal direction, use the blocks facing value
If not, use the players facing value to spawn your displays
Sounds fairly easy
I think you can use some combination of https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/block/data/Directional.html and checking if block is a container
Directional has getFaces(), could check that to see if a block can be placed facing up/down, depending on that use the player facing.
I did that now
if (block.getBlockData() instanceof ShulkerBox) {
textDisplay.setBillboard(Display.Billboard.CENTER.FIXED);
float rotation = 0;
switch (player.getFacing()) {
case NORTH:
rotation = 0;
break;
case EAST:
rotation = 90;
break;
case SOUTH:
rotation = 180;
break;
case WEST:
rotation = 270;
break;
default:
break;
}
textDisplay.setRotation(rotation, 0);
but it rotates wrong idk
Oh, look up enhanced switch, much nicer way of writing switches
Try some advanced debugging tactics like: printing stuff in chat
Gosh why is spigot so confusing (I know why but ree)
You're testing if block.getBlockData() is org.bukkit.block.ShulkerBox
I'm not sure if that's right
??
Clearly needs to be Display.Billboard.FIXED.FIXED.FIXED.FIXED.FIXED to ensure it's properly fixed for real yes I'm sure I want it fixed yes
xd
You don't need the CENTER.
well no, again that's just nitpics
It’s not
It should be something in the org.bukkit.block.data package iirc
no, try block.getState() instanceof ShulkerBox
xcuseme
can't you do or ?
Yeah || should work
i like my code messy bruh
Don't learn bad habits smh
get out
look at that i can scroll for half a hour
Oh your whole plugin is not in one class tho, so that's not that bad.
Related, there's a guy who wrote a C++ game in one file and published it on Steam.
Games don’t have to have good code to be popular
Well.. at least it's not Main
But please, rename it to Test so you follow at least some conventions
I believe undertale has a giant switch block for text
Terraria also has some wacky code
if (!block.getType().equals(Material.CHEST) && !block.getType().equals(Material.BARREL) && !block.getType().equals(Material.SHULKER_BOX) || !config.contains(path)) {
i am curious why is it only detected non coloured shulker boxes
lemme try it
Specifically Tag.SHULKER_BOX.isTagged
it expects an arg?
The item to check?
Material of item
😢
No one listens to you
Fuck you
My wifes name is Jan so I'm hoping...
ayo
How can I detect when a sound stops playing? I want to make my own music play in the background but im not really sure how to make them player one after another
You can not "detect when a sound stops playing"
Could probably use uhh.. cooldown system thing
how do I get the length of the sound then
Step 1. Pray the client doesn't have a resource pack that changes sounds
Step 2. Download all sound assets from mojangs asset list
Step 3. Download and Parse all ogg files at startup to ensure you're up to date with the latest sounds.
Step 4. Once you play a sound reference your parsed Metadata and set a task delay for the amount of time returned.
Step 5. Cry the server doesn't actually know anything about sounds this is the best you get
Step 6. Ignore rad using your own sounds doesn't fix this as client resource packs can still override them
Which is why you should just use your own sounds
fun
Or you can simply accept what you want isn't possible sadly
i didnt read 100% now but u can just force the client to download a custom sound file and delay what u want to do
so its always after sound end
Also isnt (block.getState() instanceof ShulkerBox) every shulker box? colorized shulkers dont get recognized again i am so confused
Which is what I said
does it recognize normal shulkers?
yes
It's not the only way
Miles I just saw your edit, I don't think there's gonna be any resource pack ever overriding sounds in a custom namespace
that should work fine, how/where are you testing it? event etc show some relevant code
should work on every shulker box
either your code is wrong or you found a bug
good idc either as long as I see the code
private void updateItemDisplay(Block block, ItemDisplay itemDisplay) {
// Überprüfen, ob der Block eine Chest, Barrel oder ShulkerBox ist
if (!(block.getState() instanceof Chest || block.getState() instanceof Barrel || block.getState() instanceof ShulkerBox)) {
return;
}
if (block.getState() instanceof ShulkerBox) {
ShulkerBox shulkerBox = (ShulkerBox) block.getState();
ItemStack[] inventory = shulkerBox.getInventory().getContents();
List<ItemStack> nonNullItems = new ArrayList<>();
String path = "shops." + block.getWorld().getName() + "," + block.getX() + "," + block.getY() + "," + block.getZ();
String waehrung = config.getString(path + ".currency");
if (waehrung == null) {
return;
}
Material waehrungsMaterial = WAEHRUNG_MAP.get(waehrung.toUpperCase());
for (ItemStack item : inventory) {
if (item != null && item.getType() != waehrungsMaterial) {
nonNullItems.add(item);
}
}
if (!nonNullItems.isEmpty()) {
Random random = new Random();
ItemStack randomItem = nonNullItems.get(random.nextInt(nonNullItems.size()));
itemDisplay.setItemStack(randomItem);
} else {
itemDisplay.setItemStack(new ItemStack(Material.BARRIER));
}
}
}
it always shows the barrier
no item from the inventory
works with normal shulker tho
I mean if you really want to see if its a spigot bug simplify the problem and see if I look at a shulkerbox no matter the color is it always a shulkerbox?
if its the case that colored shulker boxes truly have no BlockState that'd be something you'd report on JIRA
me thinks its much more likely something else is going on though
wait u are right
of course he is
new BukkitRunnable() {
@Override
public void run() {
if (!block.getType().equals(Material.CHEST) && !block.getType().equals(Material.BARREL) && !block.getType().equals(Tag.SHULKER_BOXES) || !config.contains(path)) {
cancel();
return;
}
the runnable is wrong i guess
coloured shulkers have a different material tag than normal shuklers
is there a way to write em without listening every single one
Does anyone know about CommandNPC
there's probably a Tag.SHULKER or something
Tag.SHULKERS.isTagged(material) or whatever
i already used that as u can see but wrong i guess
yeah using a tag like that would anagolous to this
List<String> stuff;
"my string".equals(stuff)
Bit tricky but tags are awesome
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/ShulkerBox.html#getColor()
you could get their color and just append that in caps with an underscore and you should be able to easily get their material name, not sure if this avoids the listing them all out.
declaration: package: org.bukkit.block, interface: ShulkerBox
jesus christ no what the fuck
tags are stored in a set internally iirc lol
just do the sweet sweet O(1) comparison
the above isn't any less optimal
chat I'm out
Miles we require a cat photo
Dude I already sent one to you
I'm back at school already
I want another
Use on from the backlog of photos
guys, help me, I've been trying to fix the error for 6 hours now, but it always appears:
[17:55:42 ERROR]: Error occurred while enabling LiteBuyer v1.0 (Is it up to date?)
java.lang.NullPointerException: Cannot invoke "java.util.List.stream()" because the return value of "org.bukkit.configuration.MemorySection.getList(String)" is null
at org.by1337.blib.configuration.YamlContext.getList(YamlContext.java:281) ~[?:?]
at org.by1337.blib.configuration.YamlContext.getList(YamlContext.java:277) ~[?:?]
at org.by1337.buyer.item.Category.buildSellableItems(Category.java:35) ~[?:?]
at org.by1337.buyer.item.Category.<init>(Category.java:26) ~[?:?]
at org.by1337.buyer.Config.<init>(Config.java:45) ~[?:?]
at org.by1337.buyer.Main.onEnable(Main.java:81) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:599) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:298) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1074) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-794]
at java.lang.Thread.run(Thread.java:840) [?:?]
Ik but I don't understand what's wrong with it, it seems to be correct
i think u need to show it tho otherwhise nobody can help
?main
also you're running paper...
you know that paper and spigot are no different, everything that works on spigot works on paper
put it into a yaml parser
you probably have some tab in there
it's valid
well, something is missing from it
paper hard forked, this may no longer be the case
?paste
dw they're running an ancient version 💀
oh right
Even after being here for so long, I keep forgetting that ppl still work with old versions
if the config running on the server is the same as the config in that repo, it looks fine at a first glance, although no clue what that blib YamlContext code looks like
is there no trapchest instance?
?
section.getList can be null
thats weird
well, no
that's just how it is lol
it's a separate block kind
but the container kind is the same
wdym
if (placedBlock.getState() instanceof Chest chest) {
// Handle Chest
PersistentDataContainer data = chest.getPersistentDataContainer();
data.set(ownerKey, PersistentDataType.STRING, player.getUniqueId().toString());
chest.update();
its not setting the ownerKey
just for normal chests
i can't test right now but according to the server code it should work fine, if you can write a minimal reproducer where you can consistently reproduce the issue you should file a bug report
trapped chests aint that importent rn but do sshulker chests also support persistentdatacontainer?
every blockstate that is a TileState does
that includes trapped chests and shulker boxes
ohh
okay
hmm
} else if (placedBlock.getState() instanceof ShulkerBox shulkerBox) {
// Handle Shulker Box
PersistentDataContainer data = shulkerBox.getPersistentDataContainer();
data.set(ownerKey, PersistentDataType.STRING, player.getUniqueId().toString());
shulkerBox.update();
CODE BREAK
if (targetBlock.getState() instanceof Chest chest) {
PersistentDataContainer data = chest.getPersistentDataContainer();
} else if (targetBlock.getState() instanceof Barrel barrel) {
PersistentDataContainer data = barrel.getPersistentDataContainer();
} else if (targetBlock.getState() instanceof ShulkerBox shulker) {
PersistentDataContainer data = shulker.getPersistentDataContainer();
if (!data.has(ownerKey, PersistentDataType.STRING)) {
sender.sendMessage(messages.getString("messages.no_owner")); // Falls kein Besitzer gesetzt ist
player.playSound(player.getLocation(), messages.getString("sounds.no_owner"), 1.0f, 1.0f);
return false;
}
String ownerUUID = data.get(ownerKey, PersistentDataType.STRING);
if (!player.getUniqueId().toString().equals(ownerUUID)) {
sender.sendMessage(messages.getString("messages.not_owner")); // Falls der Spieler nicht der Besitzer ist
player.playSound(player.getLocation(), messages.getString("sounds.not_owner"), 1.0f, 1.0f);
return false;
}
for some reason it triggers messages.no_owner
which means ownerkey aint set
You should store the result of getState in a variable rather than calling it multiple times
It's not a cheap method as it copies a bunch of information
so i store every chest placed from every player in a variable?
also when is the second part called
after executing an command second part is called
That would just be a bad idea
Oh i can definetly add that later but first i need do find out why it doesnt place the ownerkey at all for shulkers
Inventories made with Bukkit.createInventory() saves the items inside even if the server restarts?
not automatically because those inventories arent attached to anything
what that mean Plugin already initialized!
are you perhaps calling the constructor of your main class
nooo (yes)
That's not necessarily true. They could be extending their main class too :p
never have i heard a more disgusting thing
Hi, I'm running a Minecraft 1.12.2 server, and basically, when my players join, they have 3 seconds of immunity. I tried changing that with setNoDamageTicks(0) in an onJoinEvent and also giving it with some ticks of delay, but it doesn't seem to work. Is there any other way to make players have no immunity when they join the server?
why the everloving fuck would you run spigot 1.12
That immunity is built into the server. Not sure where that's kept
Actually I have it with paper 1.12.2 with some plugins that I can't upgrade at the moment
But this issue brings me problems with players abusing this immunity when doing pvp
I think the better solution for that is to not allow them to combat log, no?
Because that join immunity is useful. Some clients don't load in fast enough for players to react to damage happening to them
So do you think that i should force them into ct?
reminds me of the fall damage reset "bug"
I don't know what ct is (unless it's "combat tag" I guess :p)
But if they're in active combat and they leave, they should die when rejoining
pretty sure that one actually reset your falling ticks but still the 3 seconds of immunity is nice for ppl with slow pcs
I used to struggle bad with networks because my old pc would take more than 20 seconds to enter and I'd timeout lmao
Yeah, agree. I should leave the 3s immunity
at least back then the fix would be lowering your render distance
I might force them into combat tag if they are in the arena, so that they cant quit and reconnect and abuse of that 3s of immunity
that's kind of how combatlog plugins work
they tag the player and if you log out an npc replaces you and redirects all damage
sumn like that
Or just kills you when you leave
The plugin kills the player when they logout in combat
Drops your items and, when you rejoin, teleports you to spawn with an empty inventory
Yeah 
Yes, thats exactly how it works
that one kid tripping his breaker mid pvp
The thing is that some players quit and join to get the 3 secs of immunity and abuse that
(me like 10 years ago)
Definitly i should keep the 3s immunity and find the way to tag them if they are in the arena. Thanks guys!
Hey I have a question how to change player Name tag for java 1.8.8
update to a higher version might help
1.8
im tired boss
?howold 1.8.8
Minecraft 1.8.8 is 9 years, 6 months old.
How can i use TextComponent from the Bungee API to set a Hover Event displaying an Item?
Currently i got this but it doens't work and i dont find anything in this topic ``` textComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM,new Item(new ItemStack(Material.LEAD).getTranslationKey(),1,null)));
TextComponent textComponent = new TextComponent("[Test]");
textComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM,new Item(new ItemStack(Material.LEAD).getTranslationKey(),1,null)));
player.spigot().sendMessage(textComponent);```
it doenst return a new Component
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.
thats the error i get
so im cooked?
no wait maybe im wrong
what is that Item
I cant find that constructor online
nvm
im stupid
your item namespace is wrong
I think its just minecraft:lead
not item.minecraft.lead
okay how can i get this namespace?
yes
getTranslationKey returns a string anyways
but maybe thats what the ItemTag is for that you left at null
i mean idk because theres not a single documentation i could find
eyah same here
spigot api is kinda wacky
imagine if Item just took an itemstack
I guess that'd be too hard
well the reason is because its bungee
I will just use a different solution and not display the item. Too much stress for one little feature
I will just display the item name
i wish paper components would be supported nativly by spigot
just make a paper plugin then
if its message related, use bukkit audiences
👍
sorry its wrong channel but can someone help? i use these 2 plugins on 1.21.3 and there is an error, am i using wrong worldedit version?
java.lang.NullPointerException: Cannot invoke "com.sk89q.worldedit.world.item.ItemType.getId()" because "com.sk89q.worldedit.world.item.ItemTypes.LEATHER" is null
Why do you have .jar set to open with NOTEPAD
because i dont open it
public void onBlockPlace(BlockPlaceEvent event) {
Player player = event.getPlayer();
Block placedBlock = event.getBlockPlaced();
// Check if the placed block is a chest
if (placedBlock.getType() == Material.CHEST) {
Block[] adjacentBlocks = {
placedBlock.getRelative(BlockFace.NORTH),
placedBlock.getRelative(BlockFace.SOUTH),
placedBlock.getRelative(BlockFace.WEST),
placedBlock.getRelative(BlockFace.EAST)
};
// Iterate over all adjacent blocks to check if they are part of a shop
for (Block adjacent : adjacentBlocks) {
String path = "shops." + adjacent.getWorld().getName() + "," + adjacent.getX() + "," + adjacent.getY() + "," + adjacent.getZ();
// Check if there is a shop at the adjacent block
if (config.contains(path)) {
event.setCancelled(true); // Cancel the placement of the chest
player.sendMessage(messages.getString("messages.no_adjacent_chests")); // Send a message to the player
player.playSound(player.getLocation(), messages.getString("sounds.no_adjacent_chests"), 1.0f, 1.0f); // Play a sound to the player
return; // Exit the method after cancelling
}
}
if (placedBlock.getState() instanceof Chest chest) {
// Handle Chest
PersistentDataContainer data = chest.getPersistentDataContainer();
data.set(ownerKey, PersistentDataType.STRING, player.getUniqueId().toString());
chest.update();
} else if (placedBlock.getState() instanceof Barrel barrel) {
PersistentDataContainer data = barrel.getPersistentDataContainer();
data.set(ownerKey, PersistentDataType.STRING, player.getUniqueId().toString());
barrel.update();
} else if (placedBlock.getState() instanceof ShulkerBox shulkerBox) {
PersistentDataContainer data = shulkerBox.getPersistentDataContainer();
data.set(ownerKey, PersistentDataType.STRING, player.getUniqueId().toString());
shulkerBox.update();
}
}
}
shulker chests have no ownerkey
You shouldn't need to duplicate all that code for each block
Otherwise I don't see an obvious issue. Do you have the right import
i think i forgot to add shulker chest at if (placedBlock.getType() == Material.CHEST) {
that was the error
Does anybody know how to check the color of a wool block?
I mean
it's just
Material.RED_WOOL or whatever
unless you're on 1.12 and below
in which case just give up
or y'know check the data magic number
Could someone tell me how to keep classes and packages, for example litecommand/okaericonfigs in ProGuardGUI?
this is the only way?
Anyone know how to create a player NPC using ProtocolLib? This is what I have so far:
ProtocolManager m = ProtocolLibrary.getProtocolManager();
PacketContainer npc = m.createPacket(PacketType.Play.Server.SPAWN_ENTITY);
npc.getIntegers().write(0, 69420); //Entity ID
npc.getUUIDs().write(0, UUID.randomUUID()); //UUID
npc.getIntegers().write(1, 0); //Entity type
npc.getDoubles().write(0, l.getX())
.write(1, l.getY()) // } Location
.write(2, l.getZ());
ProtocolLibrary.getProtocolManager().broadcastServerPacket(npc);
iirc crit particles are spawned on client only, so yes, RP is only way in this case
okay thx
what version
protocol lib isn't really necessary in later versions
1.21.4
Use Citizens 
Use actual players, have people sit behind their computers to act as an NPC /j
@EventHandler
public void onBlockExplode(BlockExplodeEvent event) {
for (Block block : event.blockList()) {
String path = "shops." + block.getWorld().getName() + "," + block.getX() + "," + block.getY() + "," + block.getZ();
if (config.contains(path)) {
event.blockList().remove(block);
}
if (block.getType() == Material.CHEST || block.getType() == Material.TRAPPED_CHEST ||
block.getType() == Material.BARREL || block.getType() == Material.SHULKER_BOX) {
event.blockList().remove(block);
}
}
}
If i spam 10000 tnt minecarts on a rail and i let it explode sometimes the shop gets destroyed how can i fix that?
I dont think citizens will work with what im trying do do later on unfortunetly
What are you trying to do
I actually had a doctor tell me that. Had pain lifting my arm.
OOF
i dont get it how it happens the chest explodes sometimes
but sometimes it doesnt
thats weird
I'll give you a suggestion, it probably won't fix your problem.
Instead of config file, use PDC (since you're only using containers) to check if its your special shop.
It will be much faster if you have hundreds of shops.
It would be similar to a replay plugin, where I can record and play back exact player movements and such. They would have to be identical to the actual players though so I cant just grab their XYZ coords and pipe it into citizens pathfinding api
that wont help my issue rn ;(
how are you blowing the chest up?
I know, but it will be great improvement to your plugin :D
very few Blocks Explode
^^
TNT is an entity
And so is tnt minecart
have also a entityexplode event
Anyone know which event gets called when a Player steps on a tripwire that's not connected to a hook? Doesn't seem to fire PlayerInteractEvent
Yeah, it only gets called when the tripwire is connected on both sides to a hook
I guess it's undefined behaviour since you can't natually set the wire to armed without commands or plugins
Oh, not connected
does getLogger().info support ansi?
You can put anything in the msg, but the console will only accept whatever codepage the system has
for (Block block : getBlocksBetween(loc1, loc2)) {
BlockData data = block.getBlockData();
if (data instanceof Directional) {
Directional directional = (Directional) data;
Bukkit.getLogger().info("directional");
}
}```
why isnt the if statement being called?
the block is a stair
did you import teh correct Directional?
i think so
import org.bukkit.material.Directional;
wrong one
😭
ok it works now thanks
Hello,
Is there someone that can help me real quick with compiling my java code to a .jar file?
would be much appreciated
Maven or gradle
i tried to build my plugin thru IntelliJ IDEA but doesnt seem to work its my first time so idfk what im doing
i guess so haha
Pick one and use it
yea
i just need my java project to compile to a .jar file so i can use it on my spigot server and test the plugin out
but im fucking around for 3 hours
and nothing seems to work
ive tried Maven already
okay cool, and
i cant find a fix thats the problem
maven worked
but when building the project to a .jar file to make it a plugin
im just stupid or whatever cuz it builds a .jar file but its empty or whatever
idfk
if i could send the project to someone else who can compile it to a working .jar file would be very nice
cuz i cant seem to make it work
https://i.imgur.com/CofP0kX.png
the problem is that my java file cant find all my imports from spigot so it gives errors
yo gamers what's the hotkey to jump to a line in intellij?
I vaguely remember it exists but can't remember what it is
Ctrl+G ?
that's the one, thanks jack black
oops.
well, that's not right
how did that happen
IJ has some internal build system, nah?
Yes
Yeah could've meant that.
Most ide's default to the ant build system. However IJ is the one where it is super easy to invoke ant build system when you really wanted maven or gradle to build instead lol
Ahh yeah! I forgot "ant" was it's name
if (!(block.getState() instanceof Chest || block.getState() instanceof Barrel || block.getState() instanceof ShulkerBox || !config.contains(path))) {
how can i include trapped chests?
pretty sure block.getState() instanceof Chest includes trapped chests
ok thats weird
got me thinking, does Trapped Chests even exist in the Material Enum?
If it does, then it should be assigned to the Chest BlockData.
?codeblock
You can use the discord code block format to display code or just text in a more pleasing way:
```java
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
}
}```
Becomes:
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
}
}```
when I cancel the break event for signs they pop back as blank, ideas?
Thats a visual thing no?
it def does, as its an item in the game
Material.TRAPPED_CHEST
Yeah yeah i was just confused why it was confusing to him, if Trapped Chest existed on the Enum then it shouldn't be shocking that it's apart of the Chest instance, since it should say.
it is, thanks
Was it actually?
I've seen on servers where theres land protection, if you dont have permission to break a sign, and you have an axe fast enough, you can break the sign on your screen before the "Hey! You can't do this" is triggered, and the sign comes back as blank. Could be the same.
do plugins have access to their own jar files? i want to have a way to verify that it hasn't been modified
kinda rough to check A has not been modified when the check for that is in A
Like, I can just modify your check
like sha hash from the file?
Yea but compare it to what
the hash to a file you have so you can be sure the plugin installed is the same as on a public repository
whats the hash
where does it come from
if spigot reads WorldEdit.jar, what hash does it compare that files hash to
ah no, i meant to print out to commandSender
im just annoyed you cant have a trust anchor bc you can just replace the topmost one
Yea, it is pretty impossible to do that
wait could AES work?
what
like this math thing with two prime numbers
AES is an encryption algo
but no. The issue boils down to spigot having no way to check if a file is "valid".
what does an invalid file even mean
Well in this case, tampered with from the original
what the original is, is a hard question tho 
tampered in what way xD
modified from what it should be, as in what people think it is vs what it actually is when running /plugins
the issue being that no matter how you verify, there's no trust anchor. Another plugin, you can just edit that too, and even if there's custom server software, to act as trust anchor, that still can be edited just as well
you just can't be sure that the code running on a server is the code available on public repos
Well, you can make the server file read-only on the server side of things
but still, what tells the server worldedit-hacked.jar isn't just a renamed world edit version
like, what does it compare it to
well yea but the only person who can verify that is the admin. same issue, you cant reliably check that without having access to the server
as for renaming, i thought that didnt change file hashes?
the hacked version can just make their own checksum, like that would require the owner of the server to compare all the keys of all the plugins they have with some verified version the plugin author published
you can just hash the release jar i figured
And put the hash where
Or do you mean a server owner has to do that manually
Because I can just download all jars again manually too, that's probably faster
oh i didnt even think of doing it that way. i thought about it from the perspective of a user trying to figure out if the plugins have been modified
Well that's possible lol. Just not on the server software
is it possible to get the bounding box in which you collide with a block? (like a full block would have it 1 block big, a slab would have it half, snow would have it depending on layer count, etc.)
It's just manual comparison
Yea
This deployment Java tutorial describes development and deployment of applets, Java Web Start applications, rich Internet applications, and JAR related tools
one way could be to store the hash when they first add a plugin, but then there is no difference between a virus and a plugin update
Yea, we could be signing jars but that still doesn't help much
if implemented properly, the signed jar should not load if it has been tampered with or at the very least a warning displayed. It is a bit annoying fixing such jars to make them run if tampered
Given attackers can easily pose as normal plugin developers, get a leaf certificate from spigot and welp
? whats that
Well I don't know the context, just was kind of pointing there is a way to verify to some extent if a jar has been tampered with or not lol
at least a mechanism built into the JVM
yeah lynx is more saying that from the server perspective there is no way to tell if a signed jar is malicious or just some version of a legit plugin
only interesting bit would be including the plugin name in that signature
like technically could do that
Anti-Malware*
lmao
anyways, I will say it is actually pretty decent, quite a few of us here have helped with it
idk how to make malware anyway
just how to give myself op status :V
where find permissionEX repos and depend version
there is still an attack vector that is exists that isn't easily stopped however it is super rare that any one would know or use it
maven not can find 1.22, 1.23.1
you probably wouldn't really even know it was malicious either
wait really? i mean you could do some damage to the server but thats it, no? you can't install other plugins
unless you have a download script in your plugin
which could be easily found, no?
since it is the server loading it 🙂
it depends, I am not saying it is easy to do
in fact, you could even make a mod that activates from it as well on clients
and no one even really know
actually, question about mods, if you want to send more data to a modded client, can you listen to non-vanilla packages?
i really want to add keybinds to my plugins lol
you would make use of the plugin messaging normally
since that is what that is intended for originally
wait can plugins just define new keybinds?
you talk obaut plugin updating system?
no
Hi! Uh how much is the length of a packet id?
it is a varint and I just looked, it will never be larger then 5 bytes
in terms of actual length
okay btw how do I get the packet id of a plugin message for version 1.21.4 to server?
plugin message?
ye
[11:00:26 INFO]: aaa lost connection: Internal Exception: io.netty.handler.codec.DecoderException: Failed to decode packet 'serverbound/minecraft:player_command'
You mean ClientboundCustomPayloadPacket ?
okay but, why are you manually writing the buffer
you could just construct the packet and send it
wtf is that
and you want support in implementing it? 
cause then I can get it patched?
Ahaaa 
you are late on the zero day
that would indeed by a zero day then
was bungee released for 1.21.4 today?
ill try search it in velocity as well
thats not what a zero day is
I mean the commit
like in latest commit it still persists
A zero day exploit is one that is not known to the developer and is unpatched
at the release time
Aynway, java -DbundlerMainClass=net.minecraft.data.Main -jar server.jar --all should prove very useful for you
what does it do?
its 0 days to prepare to fix the exploit
0 day is when it is unpatched and dev is unknown to the vuln
emits the data for the server, that includes the packet protocol id`
discovers “zero day”
”going to sleep”
Dude is about to start infecting as many servers as possible.
you get a fun json at generated/reports/packets.json
I doubt there is any serious vulnerability
ah thnx, in paper or bungee lol
paper

especially with bungee considering bungee doesn't really change much of anything in terms of the protocol
bro i have been fudling with it since last night and cam from school today
you need to lock in.
it is
Exploit it as much as possible.
I look forward to seeing it
but I doubt its anything bungee is doing
well it's poor protocol handling
blindly trusting what player is sending
that is just how the MC protocol is
Dude you need to lock in man. You need to start exploiting as fast as possible.
it can fixed in one line
ok i see why we need anticheat now kek
well if it is that easy to prevent, I suppose md wouldn't have an issue with it lol
xd
if you discovered a vulnerability in PayPal would you wait til the morning before you start draining everyone’s accounts?
ill just report 💀
a patch is always one step around the corner.
do note that bungee has https://github.com/SpigotMC/BungeeCord/security
welp
instead of opening like, a public issue or PR
xd
there is a reason why people don't target banks like this. It is a good way to get like a handful of countries dedicating resources towards going after you
Please please someone ping me when this guy posts again about this zero day. I’m really interested in what it actually is.
But I wonder what it even means in this context.
If you’re writing a plugin to exploit the vulnerability on the server, you already have an entry point to that server being the plugin itself; it doesn’t make sense why it would be like a back door zero day, as you could make a backdoor out of any old plugin.
Or I wonder if it means zero day in the sense that it actually impacts the client. Which I really doubt.
I can’t see any other way a zero day could exist.
well they said the server blindly trusts the client
usually it'd be a client sending malicious packets, either tricking the proxy into doing something not good or worse
so I assume the vector point comes from the client
however it is already known that MC servers will blindly accept packets
I mean, who knows, this might be like, blindly trusting like, names or uuids.
that is why if you have an actual decent sysadmin you would implement packet filtering
ohh okay I misinterpreted this. I thought they were making a bungee plugin.
But from what I’m understanding it’s modifying the client to perform malicious things on any bungee server?
well, to send malicious crafted packets
to do something
not entirely sure what it would allow since they haven't divulged in what exactly they are referring to
Sounds cool! Do ping me!
Hey, I'm trying to setup a plugin in 1.21.4 with NPC-lib. I wanted to shade the dependencies but it seems that my setup with Java 21 isn't working. I have the following error when I ./gradlew shadowJar :
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 65
Here is my Gradle :
https://hastebin.com/share/iheqolacag.bash
Hastebin is a free web-based pastebin service for storing and sharing text and code snippets with anyone. Get started now.
Yo, can you ping me once you get pinged ? :D
update shadow to the gradleup version
"i needed it yesterday" moment
"then you don't need it anymore"
Nope, he still wants it yesterday
GET A TIME MACHINE THEN!
theres this comedy duo who actually did a skit on this
I'm working on a plugin using Spigot 1.21.1 and encountering a NoClassDefFoundError when attempting to use NMS classes such as:
import org.bukkit.craftbukkit.v1_21_R1.CraftServer;
import org.bukkit.craftbukkit.v1_21_R1.CraftWorld;
import org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer;```
dependencies {
compileOnly 'org.spigotmc:spigot:1.21.1-R0.1-SNAPSHOT:remapped-mojang'
}```
my project is using the correct version, but the error persists at runtime.
java.lang.NoClassDefFoundError: org/bukkit/craftbukkit/v1_21_R1/CraftServer```
?nms
you need to remap
alright thanks
There is no v1_21_R1
what is the best way to check if someone is in a non-cuboid are of the world? Kind of like a bounding box except that it's not necessarilly a cuboid
java.lang.NoClassDefFoundError: net/minecraft/network/NetworkManager
im not even using NetworkManager, then why this error
and how exactly did you do that
i use NMS for this https://github.com/Devlrxxh/BlockChanger
and for 1.21 and up it doesnot need v1_21_R1 anymoewr
lmao
?whereami
You were still blue then
.
NetworkManager was changed to Connection in newer versions, and I'm using Connection
A fun way to do that is with SDF :D
sdf is?
You're using dev bundle for 1.21.4
If the server is running 1.21.1 that won't work
Also since it's Paperweight you might need to tell it to compile with Spigot mappings
See this example: https://github.com/PaperMC/paperweight-test-plugin/blob/master/build.gradle.kts#L21
Signed Distance Field
You can do some fun things with it.
But still, I said "fun" way..
i want to make that it supports every version
You will need to compile against every version you want to support
So time to setup your multimodule project
is that some concept or a bukkit class
One module per version
so i gotta create different module for each nms version
A concept I guess
Alternatively use reflection with some logic
yes
alright
But a really easy to grasp one
It's basically just some collection of small functions that all return a distance, based on that you can do stuff. You can combine these functions together to create "complex shapes"
I've mainly seen it in rendering
paperweightDevelopmentBundle('io.papermc.paper:dev-bundle:1.21.1-R0.1-SNAPSHOT')
still error
my shapes will be formed from touching blocks
just not necessarily in the shape of a cuboid
Split it into multiple cuboids
is the the best way
Octree ?
what
Just google that
I think that may be the best structure to do this kind of check, maybe
back xd
its like a binary tree but in 3 dimensions instead of 1
yeah
dms
context ?
context in a help channel is rare
Take a look at the test plugin I sent
It shows how to use it
id("xyz.jpenilla.run-paper") version "2.3.1"
so i gotta add this
idk about nms
btw
u getting class not found for networkmanager
i saw that last time in minecraft coder pack in 1.8
im not even using networkmanager, im using connection
Discord client mod spotted
xd
yikes
consider yourself helped
shush
your wish came true
thnx
You're welcome, now what were you helped with ?
finding zero day impl?

oh hi again
what are you stuck on now lol
sending a packet server reading it differently
xd
i changed my way
now instead of sending raw bytes
imma jailbreak mc to allow me to do the thing which i want
xd
Free my boy MC, he ain’t do nothing!
Da heck do you mean by jailbreaking MC
Can't you create Fabric mod ?
uh
I mean
i need smth
which mc wont allow
so imma force it to allow me
I see
imagine not just using mache-client 
tf is a mache-client?
“We know we won’t run into an issue where we would cause issues”
famous last words
the mojang mapped client code with decompile patches applied
pretty handy to like, dirty hack around
xd
- breakpoints
Is that like the new MCP ?
imma now create an accessor so i can get only the namespace xd
uh not really. Just what paper bases itself on now
does getNamespace not exist ?
i dont think so
I mean
my use case is
paradiseClient_Fabric$getLegacyIdentifier
ok you're doing too much cursed shit for me to understand lmao
Is there any way to find out who placed the vehicle, like boat or minecart? I found VehicleCreateEvent, but it doesn't track who placed the vehicle
uh
did I do smth wrong lmao
oh wait
no
i have to do it entirely dif
java.lang.IllegalArgumentException: Data fixer not registered for: minecraft:DUMMY in block_entity
😭
did ya do it? xD
nah
datafixer
being weird
@Mixin(Identifier.class)
public class IdentifierMixin {
@Shadow @Final private String namespace;
@Shadow @Final private String path;
@Inject(method = "isNamespaceValid", at = @At("HEAD"), cancellable = true)
private static void isValidNamespace(String namespace, CallbackInfoReturnable<Boolean> cir) {
cir.setReturnValue(true); // We know that we won't run into an issue where we would cause issues
}
@Inject(method = "isPathValid", at = @At("HEAD"), cancellable = true)
private static void isPathValid(String namespace, CallbackInfoReturnable<Boolean> cir) {
cir.setReturnValue(true); // We know that we won't run into an issue where we would cause issues
}
@Inject(method = "isCharValid", at = @At("HEAD"), cancellable = true)
private static void isCharValid(char c, CallbackInfoReturnable<Boolean> cir) {
cir.setReturnValue(true); // We know that we won't run into an issue where we would cause issues
}
@Inject(method = "isPathCharacterValid", at = @At("HEAD"), cancellable = true)
private static void isPathCharacterValid(char c, CallbackInfoReturnable<Boolean> cir) {
cir.setReturnValue(true); // We know that we won't run into an issue where we would cause issues
}
@Inject(method = "isNamespaceCharacterValid", at = @At("HEAD"), cancellable = true)
private static void isNamespaceCharacterValid(char c, CallbackInfoReturnable<Boolean> cir) {
cir.setReturnValue(true); // We know that we won't run into an issue where we would cause issues
}
@Inject(method = "toString", at = @At("HEAD"), cancellable = true)
private void toString(CallbackInfoReturnable<String> cir) {
// Legacy identifier
if (path.isEmpty())
cir.setReturnValue(namespace);
}
}
what could be wrong
We know that we won't run into an issue where we would cause issues
🙄
ask in fabrics discord considering you are using mixins and yarn
also overriding Identifier like that is crazy weird
what the fuck are you doing that needs you having invalid identifiers forcefully like that
paper-client???
that's called sodium smh
wtf
giving FriendlyByteBuf#read codec mixin
"We know that we won't run into an issue where we could cause issues" my brother in christ resource packs and datapacks exist
(they are trying to break something in bungee, this isn't a production software)
oh even better then
depression
