9928e84 Handle command blocks as well - jpenilla
#paper
1 messages ยท Page 12 of 1
This is working as intended. In the context of functions, vanilla commands are prioritized when the namespace isn't explicit. Command blocks have their behavior controlled by settings in commands.yml (you can add * to the override list to always prioritize vanilla). For players though, plugin commands overriding vanilla ones are intended. Whether the command is nested in /execute doesn't matter, what matters is the context the command is being parsed with (i.e. player, command block, function, or other misc. sources).
I understand this is different than the old/spigot behavior and you may need to adjust your advice depending on server types. However, this change is intentional as it expands functionality and reduces inconsistency in a way that should have been done in the 1.13 update. Now that we are better aligning command behavior with vanilla and other modded platforms, devs will need to be more considerate about whether they want to override vanilla by default (as is th...
Expected behavior
When a BlockPlaceEvent is canceled it should display the same amount of item in the player inventory as if no block where placed.
Observed/Actual behavior
Currently in paper-1.21-40 item isn't visible in the player inventory after the BlockPlaceEvent have been canceled.
It's only a display bug, moving the item inside the inventory will show the right number of block back.
Steps/models to reproduce
- Create a simple plugin that cancel every BlockPlaceEvent.
- Try to place a block on an 1.21 server.
Plugin and Datapack List
I have tried with towny and flagsh, both have the same behavior.
Paper version
[21:32:38 INFO]: This server is running Paper version 1.21-40-master@b45d9b6 (2024-07-01T08:23:14Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Other
No response
Closing this as it does not seem to have been an issue after the addition of the patch ๐ If the issue persists on 1.19.3, feel free to comment.
was displayed to me in version 1.20.6-147-ver/1.20.6@e41d44f
[Tuinity Chunk System Worker #2/ERROR]: Detected setBlock in a far chunk [-124, 1], pos: BlockPos{x=-1972, y=-55, z=16}, status: minecraft:features, currently generating: ResourceKey[minecraft:worldgen/placed_feature / minecraft:large_dripstone]
Closes #10974
See reasoning & explanation in linked discussion ^
Continuation of https://github.com/PaperMC/Paper/pull/9355
May also be an idea to add Brigadier but I don't think Mojang publishes the javadoc jars.
7eec21e [ci skip] add adventure-key javadoc (#11014) - powercasgamer
Resolved by https://github.com/PaperMC/Paper/pull/11013
Discussion Category: Ideas
Experimental builds for Paper 1.21, are now available on our website (https://papermc.io/downloads/paper) and downloads API! As always, please make sure to create backups of your server before upgrading.
Note that some previous optimization patches as well as planned new optimizations are still missing.
Expected behavior
To not see an error
Observed/Actual behavior
[08:26:20 ERROR]: [CustomizablePlayerModels] Exception while processing cpm packet: cpm_net:set_scl
java.lang.IllegalArgumentException: Invalid UUID string: minecraft:creative_mode_block_range
at java.base/java.util.UUID.fromString1(UUID.java:282) ~[?:?]
at java.base/java.util.UUID.fromString(UUID.java:260) ~[?:?]
at org.bukkit.attribute.AttributeModifier.getUniqueId(AttributeModifier.java:68) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:?]
at CustomPlayerModels-Bukkit-0.6.17b.jar/com.tom.cpm.bukkit.AttributeScaler.lambda$setScale$0(AttributeScaler.java:26) ~[CustomPlayerModels-Bukkit-0.6.17b.jar:?]
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178) ~[?:?]
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) ~[?:?]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipel...
code in question: https://github.com/tom5454/CustomPlayerModels/blob/0.6.17b/CustomPlayerModels-1.21/src/platform-shared/java/com/tom/cpm/common/AttributeScaler.java#L26C23-L26C34
they hack around internals instead of using the api it seems. that must be an absolute mess to maintain, lmao
You are in the wrong class @MiniDigger It is here: https://github.com/tom5454/CustomPlayerModels/blob/0.6.17b/CustomPlayerModels-Bukkit/src/main/java/com/tom/cpm/bukkit/AttributeScaler.java#L26
There is API with NamespacedKeys for that, the plugin should use them in 1.21.
The old UUID based API is completely broken - class AttributeModifier:
public UUID getUniqueId() {
return UUID.fromString(getKey().toString());
}
This is just impossible to work
It's on the tracking list, we have a plan to fix this too ๐
Did those Devs ever fix this stupid LOGGING of un-natural movement. Man paper is about as dumb as it gets. They add these amazing feature like LOGGING or /back... but they fail to realize that when players use minecraft mechanics as intended the damn file gets filled up with stupid logs of dumb stuff we dont care about. Its not hurting thousands of people so why the HECK did you ever add this stupid LOGGING feature to begin with. We DO NOT USE IT. IT IS SPAMMING OUR COMPUTERS FULL OF CRAP LOGS. Like many of the other profesionals have stated here but the Paper Devs are rude as FCK as always. Im sick of these NERDS bald headed idiots. STOP GETTING MAD AT EVERY FUCKING QUESTION OR REQUEST AND START LISTENING YOU FUCKING RETARDS.
We didn't add the log message, you are also welcome to disable the thing using log filtering. no need for the slurs or the attacks.
Bump, is there still a chance to merge this PR? (โฏยฐโกยฐ๏ผ
I'll +1 this - I'm somewhat disagree with the concept of how this was interpreted. I don't use the proxy for security - I use it so players don't get disconnected. This is on two different servers, one remote, one local - the IP has to be public otherwise the proxy can't connect. Sure, I could setup firewall rules that only let the proxy connect, but this is also on a home internet connection - it's not based in a datacenter with all of those tools in front of me. Players are running into this error when trying to connect via the old IP - this should be customizable.
Discussion Category: Ideas
exposing the backend servers incurs a risk, especially when using less secure forwarding modes. For velocity forwarding this is generally not as huge of a risk given the secret, but, it's generally not a use case of people leaving this stuff exposed to the web that we want to support.
I'm not 100% against having a config message for velocity mode (and only velocity mode), but, leaving your backends exposed to the public was not exactly a "we should cater for people doing this" outside of providing a useful warning other than just terminating the connection with nothing identifiable to support.
Discussion Category: Ideas
Yeah, I understand it's not the perfect setup - but, if an end-user sees it, it would be nice (with acknowledgement of risk, maybe above the config option) to be able to change this message just to say "connect via mc.website.com" rather than Velocity, sparking a question to us as admins.
Thanks for hearing me out
Discussion Category: Ideas
[PaperMC/Paper] New branch created: moar
[PaperMC/Paper] branch deleted: moar
Stack trace
paste your stack trace or a paste.gg link here!
Plugin and Datapack List
no
Actions to reproduce (if known)
no
Paper version
1.21-42
Other
No response
1.21 requires java 21 or above, you are using java 17.
Expected behavior
Respawning being possible
Observed/Actual behavior
Exception is thrown and player freezes
[15:50:21 ERROR]: Failed to handle packet net.minecraft.network.protocol.game.ServerboundClientCommandPacket@5b144982, suppressing error
java.lang.NullPointerException: Cannot invoke "org.bukkit.Location.getBlockX()" because "location" is null
at net.minecraft.server.players.PlayerList.respawn(PlayerList.java:868) ~[paper-1.21.jar:1.21-42-b89e6a0]
at net.minecraft.server.players.PlayerList.respawn(PlayerList.java:804) ~[paper-1.21.jar:1.21-42-b89e6a0]
at net.minecraft.server.network.ServerGamePacketListenerImpl.handleClientCommand(ServerGamePacketListenerImpl.java:2851) ~[paper-1.21.jar:1.21-42-b89e6a0]
at net.minecraft.network.protocol.game.ServerboundClientCommandPacket.handle(ServerboundClientCommandPacket.java:33) ~[paper-1.21.jar:1.21-42-b89e6a0]
at net.minecraft.network.protocol.game.ServerboundClientCommandP...
location can be null (e.g. PlayerList#(ServerPlayer, boolean, Entity.RemovalReason, RespawnReason) calls it with null. Should probably get the location to use from the DimensionTransition object instead?
Causes this error on respawn: https://pastes.dev/5FoxKrstmC
Should probably get the location from the DimensionTransition object isntead see: https://github.com/PaperMC/paper/commit/b89e6a019568a6de6af3acd3ac8a9c5e4cf145c4#r143847095
@jpenilla I have confirmed that fixes the bug!
Given concerns about the new entity stacks being able to teleport thing, I tested an older design for a sand duper and I'm unable to reproduce this issue running Paper version 42. This attached design works dupes sand both in singleplayer and on the Paper server, running no plugins or datapacks, with the allow-unsage-end-portal-teleportation option set to true.
12GT Sand Duper by Scorpio.zip
It seems to come from the Multiverse NetherPortals plugin. I have the same bug with this plugin and it fixes it by removing it.
I don't know how to keep the plugin and fix the bug at the same time.
8d91b85 Prioritize vanilla commands in function parsing... - jpenilla
[PaperMC/Paper] branch deleted: prioritize-mc-commands-in-function-parsing
Is your feature request related to a problem?
It is related to a bug reported to Jira(https://bugs.mojang.com/browse/MC-103995).
unbreaking item can't combine with another item without only enchantment books.
Describe the solution you'd like.
I want to (unbreaking) item-1 + item-2 can be possible on anvil that I can move the enchantments in the item-2.
Describe alternatives you've considered.
I think there's not alternatives about this. because it is a problem that cannot be realized in general because it has not been fixed even though it has been confirmed as a bug.
Other
No response
Discussion Category: Ideas
Expected behavior
When I type something or paste something, all characters get accepted.
Observed/Actual behavior
Input will randomly not be accepted - this is anything from me typing to me hitting the enter key to hitting delete.
Steps/models to reproduce
I'm not sure what is applicable, so here is all possibly relevant information:
Java Version
openjdk version "22.0.1" 2024-04-16
OpenJDK Runtime Environment (build 22.0.1+8-16)
OpenJDK 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)
OS Information
OS Name: Microsoft Windows 10 Home
Version: 10.0.19045 Build 19045
Plugin and Datapack List
Plugins
> pl
[20:42:47 INFO]: Server Plugins (0):
Datapacks
> datapack list
[20:43:28 INFO]: There are 2 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)]
[20:43:28 INFO]: There are no more data packs available
Paper version
NOTE: I know this isn't the latest version, bu...
Expected behavior
If you die while receiving a potion effect that affects an attribute, the potion effect will disappear, but the affected attribute will not be reset.
Observed/Actual behavior
When you die while receiving the minecraft:health_boost effect, the effect disappears, but the minecraft:generic.max_health attribute is not reset.
The minecraft:jump_boost effect also does not reset the minecraft:generic.safe_fall_distance attribute when it dies.
Steps/models to reproduce
https://github.com/PaperMC/Paper/assets/174780878/48c7e39f-8122-4333-aa38-5c507c99da5c
Plugin and Datapack List
It also happens on a newly created server
Paper version
This server is running Paper version 1.21-40-master@b45d9b6 (2024-07-01T08:23:14Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are 4 version(s) behind
Download the new version at: https://papermc.io/downloads/paper
Previous version: 1.20.6-138-906df69 (MC: 1.20.6)
Other
When you die under the ...
Im trying to build a creeper farm but I cant because my cats wont teleport to me. I cant even hear them.
I am also having this issue and I have found that the issue does NOT happen with version paper-1.20-17, but DOES happen in version paper-1.20.1-196, all with Java 22. I can try and find the exact paper version where the issue starts, but It'll take some time.
Expected behavior
I'm not sure if it's a paper bug, but it seems to be a server internal.
Observed/Actual behavior
Server Log
<details>
<summary>Log</summary>
[Server thread/WARN]: Failed to parse custom name from string 'Player's Kiste', discarding
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 13 path $
at com.google.gson.JsonParser.parseReader(JsonParser.java:76) ~[gson-2.10.1.jar:?]
at com.google.gson.JsonParser.parseString(JsonParser.java:51) ~[gson-2.10.1.jar:?]
at net.minecraft.network.chat.Component$Serializer.fromJson(Component.java:304) ~[paper-1.20.6.jar:1.20.6-147-e41d44f]
at net.minecraft.world.level.block.entity.BlockEntity.parseCustomNameSafe(BlockEntity.java:365) ~[paper-1.20.6.jar:1.20.6-147-e41d44f]
at net.minecraft.world.level.block.entity.BaseContainerBlockEntity.loadAdditional(BaseContainerBlockEntity.java:42) ~[p...
Seems like a different issue
On Fri, Jul 5, 2024, 8:40โฏAM deltaspirit1 @.***> wrote:
Im trying to build a creeper farm but I cant because my cats wont teleport
to me. I cant even hear them.โ
Reply to this email directly, view it on GitHub
https://github.com/PaperMC/Paper/issues/10965#issuecomment-2210997409,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMK4Z5FYKQL55IIMQ2FV32TZK2V5ZAVCNFSM6AAAAABJYNKEFKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMJQHE4TONBQHE
.
You are receiving this because you commented.Message ID:
@.***>
The plugin loaded an skull item stack that contained malformed data.
What you got there was a warning including the stack trace.
That is not a bug, it is just invalid data attempted to be loaded by the plugin.
The warning is safe to ignore to the degree that it will not break your server, however the skull items loaded will loose their custom name.
This smells like a general case of a plugin using spigots broken af BukkitObjectOutputStream (or to that extend YamlConfiguration) to store ItemStacks and hence the items were not ran through data converter when loaded in a new version.
Expected behavior
Enchantments showing up that fit the given item.
Observed/Actual behavior
Enchantments showing up that do NOT fit the tool. As you can see in the picture, I gave the enchanting table a diamond pickaxe.
When looking at the possible enchants, I got to see Depth Strider I, Depth Strider II and Depth Strider IV.
But when actually enchanting the diamond pickaxe, it does get enchanted with enchants that fit the tool.
I also tested some other tools, weapons and armor, they all seem to work incorrectly.
Steps/models to reproduce
- Download: Paper version 1.21-44-master@8d91b85
- Start server.
- Take tools/armour/other weapons, put them in an enchanting table.
Plugin and Datapack List
 (Implementing API version 1.21-R0.1-SNAPSHOT)
05.07 22:14:22 [Server] INFO You are running the latest version
05.07 22:14:22 [Server] INFO Previous version: 1.21-43-be8ac7a (MC: 1.21)
Other
<img width="488" alt="image" src="https://github.com/PaperMC/Paper/assets/171391033/d706c652-f5e8-408b-8d3f-ff212a8a2174">
<img width="488" alt="image" src="https://github.com/PaperMC/Paper/assets/171391033/c6c9900b-8fac-4c9e-b389-9f07cc882a0b">
Unable to reproduce in survival mode. If you are in creative mode, this is intended behaviour and also possible in vanilla.
[PaperMC/Paper] New branch created: upstream-update
9dd3505 Updated Upstream (Bukkit/CraftBukkit/Spigot) - lynxplay
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing
Bukkit Changes:
e86f4dc4 PR-1041: Improve getPlayer(String) docs to clarify it matches the name 9738f005 Fix spawner API documentation
69ebd9fd PR-1034: Add TrialSpawnerSpawnEvent
23cffd9c PR-973: Improve spawner API and add API for Trial Spawners 8bf19163 PR-1038: Clarify HumanEntity#openInventory(InventoryView) JavaDoc 1ff76351 SPIGOT-7732, SPIGOT-7786: Add freezing damage modifier 02161cb4 PR-1034: Add CreatureSpawnEvent.SpawnReason#TRIAL_SPAWNER f9cb6f34 SPIGOT-7777: All entity potion effects are removed on death 25d548eb PR-1031: Expose Creeper igniter
ccbf0915 SPIGOT-7770: Reserve spaces in shaped recipes for blank ingredients 17f7097c Clarify ambiguity around what is API
71714f0c Remove note from InventoryView JavaDoc
aaf49731 PR-1030: Deprecate more unused methods in UnsafeValues 3a9dc689 SPIGOT-7771:...
Currently in draft because
a) did not have time to look over my own diff yet, a SHIT load of stuff was touched.
b) needs extensive testing because upstream, in their infinite wisdom, fucked with the damage system again
c) needs revisiting of some of our patches (see death item vanilla compat for example).
I am unable to reproduce this issue on Paper 1.21-44 on a fresh server with the steps you provided. Only the enchantments actually supported by the item are showing up.
Are you using an unmodified 1.21 client? It being only a display issue in the enchantment GUI but not affecting the actual item result makes me suspect some protocol translation issue (e.g. ViaVersion, a proxy like Velocity, a modded client etc).
Or did you have plugins or datapacks previously installed?
- [ ] Needs to check in on nms.Player diff for knockback events, general logic there.
- [ ] Spawner API
- [ ] StopAttackingIfTargetInvalid target logic
- [ ] CraftMetaItem's attribute modifier bs, the patch broke completely as they moved a shit load of stuff.
- [ ] Bogged shearing (its scuffed)
c15de9f Fix wrong intend in handled tags patch - lynxplay
Closing this as it has been stale.
Hello
While I was testing this I was using an unmodified 1.21 client.
Iโm using a Velocity proxy alongside ViaVersion.
I did have plugins installed but removed them all to test this issue.
These are the plugins that I previously had on this server:
Patch description/name should probably just be "improving" now that its not fixing anything
Where did this knockback call go?
We are just adding a comment here now?
This diff is not correctly reflected from the removed code above (change happens in isCancelled check not j == 1)
duplicate right bracket at the end but the cause is used?
The diff is now similar but idk why spigot call dropCustomDeathLoot here
using Entity#resendPossiblyDesyncedEntityData would be better
We did too before, removed now tho ๐
Probably copied from the LivingEntity impl?
Minimized diff.
I do not agree, we are diffing more than the code block here, our diff expands across method declarations.
The comments are hence indented at the level of the code, the method definition.
Probably copied from the LivingEntity impl? Minimized diff.
Yes copied from the method in LivingEntity where call the two methods related to this.
A recent spigot commit no longer applies knockback if Entity#hurt returned false.
This however is incorrect as vanilla would apply the knockback even if hurt returned false.
Another victim of spigots abuse of the boolean return value to indicate damage event cancel.
Cannot be solved nicely right now without heavy work on #hurt. Needs revisiting after softspoon.
Live blockstates do not need to be applied to have their changes reflected in game.
The current TrialSpawnerConfiguration however is a fully copy and does only apply when updating.
To fix this, a new implemented of the interface is needed that re-creates the internal record on every setter call and is used if the block state is not a snapshot.
fafdb26 Do not process 0F damage for players - lynxplay
4d20922 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#... - lynxplay
[PaperMC/Paper] branch deleted: upstream-update
I cannot replicate this issue on 4d20922b79f5b3976e240932d087357a3808fde4.
Cancelling the block place event works fine in. The item is reverted to its original count.
Closing this as I'd presume more people would have reported this.
If you have more input or more specific replication steps, feel free to post them here, I'll gladly reopen the issue ๐
Closing this as it's stale and I cannot replicate this.
Going to close this, as sand duping appears to be working for me and others ^
Pretty sure this is the issue you are talking about. https://hub.spigotmc.org/jira/browse/SPIGOT-7815
I can also not replicate this on a plain paper server.
Without further replication steps, I'll have to close this issue.
If you find replication steps with a plugin-less velocity and a plugin-less paper server, feel free to post them here, I'll reopen the issue then.
Pretty sure this is the issue you are talking about. https://hub.spigotmc.org/jira/browse/SPIGOT-7815
yeah in Upstream was already fixed, but here need handle EntityDamageItemEvent for that until https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/commits/66e78a96b65b15c41e3c180beaa72c390b9d6153#nms-patches%2Fnet%2Fminecraft%2Fworld%2Fentity%2Fanimal%2FEntityWolf.patch is merged here
Replicable, the server does not sync said registry with the client, as such the client cannot parse such an argument.
This won't be fixable, however we might be able to pretty up the error.
Opening this in a new issue, as it is only a documentation issue/error handling.
For people looking at this, see https://jd.papermc.io/paper/1.21/io/papermc/paper/command/brigadier/argument/ArgumentTypes.html#resourceKey(io.papermc.paper.registry.RegistryKey) for most usecases.
Expected behavior
Usage of the argument type with registries not synced with the client errors during registration and is documented as such in the javadocs.
Observed/Actual behavior
Usage of the argument type with registries not synced with the client blows up during connection.
Steps/models to reproduce
N/A
Plugin and Datapack List
N/A
Paper version
N/A
Other
N/A
d359a9f Fix horse inventories - Machine-Maker
[PaperMC/Paper] New branch created: fix/horse-inventories
Expected behavior
I would expect a CrafterCraftEvent to exist in order to hook into crafters. Failing this, I would assume there is a way to disable certain CraftingRecipes from working in crafters.
Observed/Actual behavior
There is no such API and it is not possible to blacklist recipes from working in crafters.
Steps/models to reproduce
Use a custom recipe plugin like EcoItems, CustomCrafting, or any plugin with custom item crafting / support for crafting recipes with stacked items (e.g. EcoItems, EcoArmor, etc.) and you will be able able to craft items without sufficient items.
Plugin and Datapack List
eco and EcoItems. Both are open-source, the crux of the crafting logic for eco can be found here
Paper version
1.21-38-master@1f5db50 (2024-06-27T20:15:58Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
Other
There doesn't seem...
I did more tries with I and, it still happend in paper 1.21.46.
It only happend on the 4 chunks around 0,0. That's probaby why the bug havent been found before.
Steps to reproduce
- Download paper 1.21.46.
- Download towny (https://github.com/TownyAdvanced/Towny/releases) (appends with last version and last stable version)
- Start the paper server with default towny serttings (No build in wilderness)
- Give yourself 64 dirt block from the server console
- Try to place this near 0,0
Sounds like a spawn protections issue, will triage tomorrow if no one beats me to it.
If you think it's a Towny issue, let me know, I will open an issue there.
Thanks for the replication steps!
No problem
Expected behavior
Villager Trade with "minecraft:air" Ingredient.
Observed/Actual behavior
Having it fail since https://github.com/PaperMC/Paper/pull/10707 got merged.
https://github.com/PaperMC/Paper/blob/2fa5e0e0df6c2fa4ccb7ab80710d839dd8e0c5ce/patches/api/0470-Fix-issues-with-recipe-API.patch#L116
Steps/models to reproduce
Merchant merchant = Bukkit.createMerchant(title);
List<MerchantRecipe> recipes = new ArrayList<>();
MerchantRecipe merchantRecipe = new MerchantRecipe(new ItemStack(Material.DIRT), 99);
merchantRecipe.addIngredient(new ItemStack(Material.AIR));
recipes.add(merchantRecipe);
merchant.setRecipes(recipes);
player.openMerchant(merchant, true);
Plugin and Datapack List
Only a plugin containing the code written in "steps to reproduce "
Paper version
This server is running Paper version 1.20.6-148-ver/1.20.6@20f5165 (2024-07-02T15:37:33Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
You are running the latest versio...
Expected behavior
Not to spam the console
Observed/Actual behavior
After updating to Paper 1.21 build 46 from build 44 today, this suddenly spams the console and I have no idea what it is.
[09:39:59 WARN]: Sckaletz moved too quickly! -41000.9387649235,-69.36010013268248,106399.78292903556
[09:40:03 WARN]: Saving oversized chunk [-900, -1279] (4733297 bytes} to external file ./world2/entities/c.-900.-1279.mcc
[09:40:08 WARN]: Saving oversized chunk [-900, -1279] (4708078 bytes} to external file ./world2/entities/c.-900.-1279.mcc
[09:40:11 INFO]: Sckaletz issued server command: /gc
[09:40:13 WARN]: Saving oversized chunk [-900, -1279] (4733262 bytes} to external file ./world2/entities/c.-900.-1279.mcc
[09:40:19 WARN]: Saving oversized chunk [-900, -1279] (4708228 bytes} to external file ./world2/entities/c.-900.-1279.mcc
[09:40:51 WARN]: Saving oversized chunk [-900, -1279] (4733238 bytes} to external file ./world2/entities/c.-900.-1279.mcc
[09:40:55 INFO]: Sckale...
After installing latest towny, I still cannot replicate this.
You are using the vanilla client yes?
Did you go to coordinates x-14400 z-20464 to check to see why those chunks contains so much data?
Yes, this is an intended change.
The network codecs no longer allow you to pass an air item as an ingredient.
Doing so will fail when the offers are sent to the client (hence the API protects you from this with a precondition check).
There is nothing the server can do about this change, even if we were to change the server side of things, the client would error and disconnect when receiving such a merchant offer.
Can you provide the mentioned file world2/entities/c.-900.-1279.mcc please?
This adds an API for getting whether the current item stack that the player is holding is showing its name as a tooltip. It's important to note that this behavior can be configured via the accessbility settings, under notification time. This is still very useful for server owners, e.g. when you have a UI Overlay in your action bar, which is slightly shifted downwards using fonts, this can collide with the item's name tooltip. But instead, with this API, you can detect if it's shown and then raise the overlay a bit. Here is an example of this in action (not made by me):
https://github.com/PaperMC/Paper/assets/96977790/eaf40378-9e7f-494c-b96a-48596840c462
Yes, vanilla 1.21 client, Paper 1.21.46 & Towny 0.100.3.4. With default settings for Paper and Towny. Java 21 Temurin.
This adds an API for getting whether the current item stack that the player is holding is showing its name as a tooltip. It's important to note that this behavior can be configured via the accessbility settings, under notification time. This is still very useful for server owners, e.g. when you have a UI Overlay in your action bar, which is slightly shifted downwards using fonts, this can collide with the item's name tooltip. But instead, with this API, you can detect if it's shown and then raise the overlay a bit. Here is an example of this in action (not made by me):
https://github.com/PaperMC/Paper/assets/96977790/eaf40378-9e7f-494c-b96a-48596840c462
Okay yea, this is not related to the event at all. Spawn protection is simply failing ๐
I can replicate this by
Create new paper server
Add operator so spawn protection activates
Attempt to place block
I can definitely see how important CrafterCraftItemEvent is for many servers. As stated by the OP, you can currently use crafters to get around PrepareCraftItemEvent logic, which many plugins use to eg. block custom items from being used in vanilla recipes.
Example:
@EventHandler(ignoreCancelled = true)
public void onCraftPrepare(final PrepareItemCraftEvent event) {
// Skipping calls when the input does not match any recipe.
if (event.getRecipe() == null)
return;
// Iterating over all items in the inventory matrix and "cancelling" the result as soon as custom item is found as an ingredient.
for (final ItemStack item : event.getInventory().getMatrix()) {
if (item != null && item.hasItemMeta() && item.getItemMeta().getCustomModelData() == 7) {
event.getInventory().setResult(null);
return;
}
}
}
I feel like CrafterCraftItemEvent would be mandatory to solve that particular case...
Problem solved. The area was overflooded with eggs from a farm. I used a different tool to find the coords, so I didn't go to the correct coords.
Thanks. I forget to say that I had op one of my 2 account before trying with the other one.
I have disable spawn protection on my server.
I'd move this logic to ServerPlayer, given that is where this state is maintained.
CraftPlayer can then access/set on API calls instead of this weird bi-directional dependency.
Please note that this code is taken from net.minecraft.client.gui.Gui#tick and adopted to a non-tick behaviour
so updates can easily find where this logic is if values change.
I am a bit iffy on the method name.
As you correctly highlighted, this method may be completely inaccurate if the client changes their notificationDisplayTime.
Idk if we can get the fact that this method is more a guess/approximation into the method name.
"if if exists" is misleading, it will yield 0 if it doesn't exist.
Welcome to paper ๐ Thank you for your first PR!
This is a vanilla issue (https://bugs.mojang.com/browse/MC-99075) that spigot try to fix at some point here: https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/nms-patches/net/minecraft/world/item/ItemStack.patch#189
Timings or Profile link
https://timings.aikar.co/dev/?id=1486df0306044b9c9f03f093383849c4
Description of issue
I was following this guide.
https://docs.papermc.io/paper/dev/registries
Everything worked and custom enchantment content appeared in /enchant, but custom enchantment content did not actually appear in the enchantment table.
Are there still technical limitations? Or is it just not working in the first place?
Is there no way to just apply it separately as an event handler?
Plugin and Datapack List
That's all ;(
Server config files
Paste configs or paste.gg link here!
Paper version
Other
No response
Known limitation, you'd need to add the enchantment to the https://jd.papermc.io/paper/1.21/io/papermc/paper/registry/keys/tags/EnchantmentTagKeys.html#IN_ENCHANTING_TABLE tag, which is currently not possible via code.
Alternatively, you could use a datapack to do it.
The PR #10993 is in the works for code-based tag modification tho.
Expected behavior
Aliases should take precedence over vanilla commands for commands executed by the player or console.
Observed/Actual behavior
Commands executed by the player or console are executed with vanilla commands taking precedence over aliases.
Steps/models to reproduce
public final class PaperPluginExample extends JavaPlugin {
@Override
public void onEnable() {
getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, event -> {
final var command = Commands.literal("msg")
.executes(context -> {
context.getSource().getSender().sendMessage("test");
return Command.SINGLE_SUCCESS;
}).build();
event.registrar().register(command, List.of("tell", "w"));
});
}
}
Plugin and Datapack List
[01:26:28 INFO]: Server Plugins (2):
[01:26:28 INFO]: Paper Plugins:
[01:26:28 INFO]: - PaperPluginE...
Expected behavior
Damage should be applied even without a direct entity.
Observed/Actual behavior
java.lang.NullPointerException: Cannot invoke "net.minecraft.world.entity.Entity.distanceToSqr(net.minecraft.world.entity.Entity)" because "entity2" is null
at net.minecraft.world.entity.LivingEntity.hurt(LivingEntity.java:1537) ~[paper-server-userdev-1.21-R0.1-SNAPSHOT.jar:1.21-44-8d91b85]
at net.minecraft.world.entity.player.Player.hurt(Player.java:1001) ~[paper-server-userdev-1.21-R0.1-SNAPSHOT.jar:1.21-44-8d91b85]
at net.minecraft.server.level.ServerPlayer.hurt(ServerPlayer.java:1204) ~[paper-server-userdev-1.21-R0.1-SNAPSHOT.jar:1.21-44-8d91b85]
at org.bukkit.craftbukkit.entity.CraftLivingEntity.damage(CraftLivingEntity.java:440) ~[paper-server-userdev-1.21-R0.1-SNAPSHOT.jar:1.21-44-8d91b85]
at org.bukkit.craftbukkit.entity.CraftLivingEntity.damage(CraftLivingEntity.java:433) ~[paper-server-userdev-1.21-R0.1-SNAPSHOT.jar:1.21-44-8d91b85]
at kitpvp-1.0.0-...
Expected behavior
should be like vanilla, Ender Pearls that are thrown through portals teleport players to a different dimension than the one they are currently in
Observed/Actual behavior
throw enderpearl or drops to the portal ,and enderpearl or drops will pass through portal
Steps/models to reproduce
- build a nether portal in world or world_nether
- throw enderpearl or drops to the portal
Plugin and Datapack List
plugins
[01:26:29 INFO]: Server Plugins (0):
datapack list
[01:27:12 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
[01:27:12 INFO]: There are no more data packs available
Paper version
version
[01:27:38 INFO]: Checking version, please wait...
[01:27:39 INFO]: This server is running Paper version 1.21-46-master@2fa5e0e (2024-07-06T21:32:48Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Other
No response
As jugh3ad correctly pointed out, that is simply how some structure pieces generate.
We could make this interaction a little bit less painful by clearing the structure BB cache after the StructureStart is done with postProcessing, but I am hoping for some more input from the team here.
Expected behavior
When a player dies I expect them to be able to click respawn and then respawn at their bed or at an essentials (the plugin) home.
Observed/Actual behavior
When a player dies, he or she cannot click respawn. They will not respawn and it will just bug, the button may appear clicked and you will get teleported somewhere but that's just void, you can't do anything unless you relog. Upon rejoining the server you get placed near your bed or home but only if you wait a few seconds before rejoining. If you rejoin too fast you'll simply spawn in this void again. During the entire time you're there and even a few seconds after you log out the player remains in the player list you can see when holding 'tab'. The bug isn't unplayable as you can see, we've managed up until now just by relogging, it's just very annoying having to rejoin all the time.
Steps/models to reproduce
Simply die in Minecraft, how this happens doesn't matter.
Plugin and Datapack Lis...
Duplicate of #11017
Can you actually try with latest paper please.
Is build 47 not the latest build?
It is but the stacktrace you provided is from build 42. We'd need a stacktrace from build 47.
I can see now that in the console it does say build 42, that is weird because we had selected build 44 at that point, at this point the server is running build 47 but it still says 42 in the console. My apologies, I will have to open a ticket over at Shockbyte then since it is clearly already been noticed and fixed in Paper itself. Weird cuz the server doesn't update even when the paper.jar in the settings is correctly updated.
Thanks for the help.
Okay! I'll close this for now then :) if you do replicate this on latest build, post your findings here and someone will reopen the issue!
This issue is already reported on Mojira: https://bugs.mojang.com/browse/MC-240720. There is another issue similar to this that is a long standing bug: https://bugs.mojang.com/browse/MC-154881.
yo descubri el error quitando estas opciones del mythicmobs
Level: 3
Profession: CARTOGRAPHER
Type: JUNGLE
al parecer el bug se da cuando intentas obligar a un villager a tener profecion o typo ala fuerza
es mejor quitar las opciones de lever, profession o type
esto ayudara a que el aldeano se genere mas rapido y no relentise el servidor!
Expected behavior
Trial Spawner should be in active state if there are players nearby after cooldown ends, and in waiting_for_players state if there are no players to trigger it.
Observed/Actual behavior
Trial Spawner keeps switching state between waiting_for_players and inactive.
https://github.com/PaperMC/Paper/assets/147026380/2c8c035b-9f59-477f-9414-622251ad1478
Steps/models to reproduce
Using two accounts?I'm not sure if this is necessary.
Use one account to set up creative mode, place a Trial Spawner, and use a spawn egg to change the spawn type.
Use a second account to set up survival mode and be within range of the Trial Spawner.
The first account clears all Trial Spawner creatures and waits 30 minutes.(Trial Spawner Cooldown)
Then the Trial Spawner will keep flashing.
Plugin and Datapack List
plugins
[16:38:47 INFO]: Server Plugins (0):
datapack list
[16:38:59 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukki...
I have also found this bug in single player mode and have submitted it to Mojang.
MC-274268
If a plugin wishes to not be remapped (and actually runs on a Mojang mapped server!), it can mark itself as such https://docs.papermc.io/paper/dev/userdev#1205
Trying to do this at the moment but the last line doesn't even work, REOBF_PRODUCTION is non-existent. Can you give the code needed to mark a plugin as such?
Thanks in advance Kenny!
- REOBF_PRODUCTION not being existent would suggest outdated paperweight, or, you're not using paperweight
- REOBF_PROD would make the thing assume that it's spigot mapped, and would just be subjected to remapping
you would want to manually add the manifest entry to your jar in your build tool if you're not using paperweight, for further support, please use the discord or forums
Expected behavior
ItemMeta#hasRarity to return true for items with rarity and for set rarity to persist.
Observed/Actual behavior
ItemMeta#hasRarity returns false for items with rarity and set rarity does not persist.
Steps/models to reproduce
var testStack = ItemType.PLAYER_HEAD.createItemStack();
var testMeta = testStack.getItemMeta();
// this should print true as PLAYER_HEAD has uncommon rarity. It prints false.
System.out.println(testMeta.hasRarity());
testMeta.setRarity(ItemRarity.UNCOMMON);
// this should (and does) print true.
System.out.println(testMeta.hasRarity());
testStack.setItemMeta(testMeta);
// this should print true as we have set the rarity to uncommon. It prints false.
System.out.println(testStack.getItemMeta().hasRarity());
Plugin and Datapack List
[23:10:54 INFO]: Server Plugins (7):
[23:10:54 INFO]: Bukkit Plugins:
[23:10:54 INFO]: - client-crasher, LuckPerms, test-plugin, MoDispenserMechanics, PlugMan...
- REOBF_PRODUCTION not being existent would suggest outdated paperweight, or, you're not using paperweight
- REOBF_PROD would make the thing spigot mapped, and would just be subjected to remapping
you would want to manually add the manifest entry to your jar in your build tool if you're not using paperweight, for further support, please use the discord or forums
I am using paperweight(only added it to be able to exclude it_ but that manual manifest entry sounds like the better choice. I'll move to Discord :)
Expected behavior
I want to see this
but it's 1.20.1 paper
Observed/Actual behavior
when i use 1.21 paper
I get some strange code...
i'm using kotlin but
java equal
Steps/models to reproduce
i just want to use 1.21 Material
Is there anything else except waiting?
Plugin and Datapack List
it's not server error
Paper version
it's not server issue
Other
No response
I think this works as intended the itemmeta representation is flawed and outdated since the 1.20.5 and only represent explicit component set on the patch. Since the rarity of a player head is already uncommon on the item itself (its prototype). Setting it on the patch will just revert to the prototype value. In the future with the item data component api you could do: testStack.hasData(DataComponentTypes.RARITY) to check if the component is set on the patch or the prototype.
You can see that with the give command too with /give @s minecraft:player_head[minecraft:rarity=uncommon] the component doesn't appear when you do /paper dumpitem and the only way to see implicit component is via /paper dumpitem all
Update your IDE
It's a library, so does that make a difference?
Yes, if your IDE doesn't understand classes from java 21, it will fail in unexpected manners
Ah, understand Thanks
Yeah I'm aware that it doesn't have a data component but in it's current implementation it is a bug.
This appears to be conforming to mojangs expectations of how patches work?
Can't reproduce on 62ed302:
// Player that has joined before logs "NoahvdAa"
this.getLogger().info(Bukkit.getOfflinePlayer(UUID.fromString("7c4538b6-fa95-4bb5-982f-f42ba206d4f5")).getName());
// Player that hasn't joined before logs null
this.getLogger().info(Bukkit.getOfflinePlayer(UUID.fromString("436fdbb2-81d2-4e8b-aaed-75ab6058f77e")).getName());
Can you still reproduce this and if so, what do your config files and code look like?
Expected behavior
Players taking regular damage, knockback and having the regular damage tick while being hit while having absorption hearts (from Golden Apples/Enchanted Golden Apples)
Observed/Actual behavior
Players taking regular damage but having 0 knockback and no damage tick while being hit while having absorption hearts. Since it has no damage tick, it can be used to spam-click and destroy a full netherite helmet with 1 enchanted golden apple.
Steps/models to reproduce
Two players: Player 1 and Player 2.
- Make server be Paper 1.21 on Build 47
- Make player 2 eat a Golden Apple/Enchanted Golden Apple (or anything that may give absorption, even custom coded items)
- Attack player 2 using player 1 who has any item/weapon. Player 2 will not take knockback and not have a damage tick, but they will take damage (you can check this using a health indicator).
- You can further see the no damage tick by having player 2 wear full netherite armor, while player ...
@NoahvdAa
I found my mistake, I accidentally called getOfflinePlayer() with the UUID as string.
So my plugin hat the following (wrong) code:
Bukkit.getOfflinePlayer("a258b060-3096-48ce-81a7-80f94fe2fe58").getName()
I will close this issue. Thank you!
The logic in place to prevent players from processing a damage tick/knockback/etc when hit with 0 damage incorrectly used the damage events final damage value, which is reduced by absorption.
Instead, use the event's "raw damage", e.g. the amount passed to hurt, in order to determine if the damage tick should be skipped. This still allows plugins to change the damage to a non-zero value and properly damage ticks the player in such a case, but correctly processes the damage tick in cases where the original damage is non zero but the actual damage is.
Closes: #11042
70b0e84 Properly apply damage tick after absorption (#1... - lynxplay
Should be fixed in build 48 once out, thank you for the report!
Expected behavior
EntityDamageByEntityEvent should be called 1x per dmg received on player. if i know well (as experienced) maximum 1 instance of damage should taken by player per every half second no matter how many enemy attacks at the same time (at least this was till 1.21 / 8d91b85Prioritize vanilla commands in function parsing (#11011)).
Observed/Actual behavior
EntityDamageByEntityEvent called multiple times if more enemy attack even this happens when 1 attack does dmg only.
Steps/models to reproduce
Let multiple enemies attack at the same time. 2 attacks registered / sec as received dmg, but EntityDamageByEntityEvent called way more times. This happens since 1.21 4d20922Updated Upstream (Bukkit/CraftBukkit/Spigot) (#11024) update.
I made a picture, where red numbers "dmg taken" calculated by EntityDamageByEntityEvent in my plugin. that 4 red number happened under 0.5 sec.

381a415 Add builder-like registration for BasicCommand - kennytv
[PaperMC/Paper] New branch created: basiccommand-builder
Need feedback on the names, but
ab2a85a [ci skip] Clarify var entry in contributing file - kennytv
f2512b1 Print data component type on encoding error - kennytv
1b67e02 Fix entity tracker desync when new players are ... - Spottedleaf
cc29d2b Invalidate PathTypeCache when pathfinding updat... - Spottedleaf
b56e92f Fix chunk data version check not running in chu... - Spottedleaf
2df1dac Fix DataConverter ConverterParticleToNBT.parseP... - Earthcomputer
8748ae1 Use MCDataConverter instead of raw convert call... - Spottedleaf
7f1a154 Add validation to player profile and properties... - kennytv
4fd58a1 Add conversion for summon command - jpenilla
4d20922 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#... - lynxplay
2fa5e0e Fix horse inventories (#11028) - Machine-Maker
62ed302 Fix entity distance check when applying knockback - kennytv
70b0e84 Properly apply damage tick after absorption (#1... - lynxplay
a74d9bf Merge remote-tracking branch 'origin/master' in... - electronicboy
Yeah that is. But the return values aren't.
Perhaps include the same prototype check when getRarity is called. hasRarity seems redundant. Unless reserved for explicitly set rarity but then you'd run into the issue of rarity not being set when it matches the rarity of the prototype so it doesn't really make sense to have that method return anything other than true.
For instance: say I'm making a chat-item plugin and I want to apply the color of the item's rarity to it's translation component/item name/display name depending on what is set. Right now it doesn't seem possible to get the default rarity of the item. And the deprecated method Material#getRarity fails entirely and always, as it calls getItemMeta#getRarity#name, and of course a newly created ItemStack doesn't have any explicitly set rarity, so the method literally blows up for all 1333 items in the game that you can call it on.
ItemMeta does not have the patch to perform such operations, the entire thing is a copy of the data stored on the stacks component. ItemMeta would need a pretty hefty overhaul to be able to perform such an operation, one which is already planned down the line of the new API. I cannot see us trying to shim this into the current setup as stuff stands right now.
Alright, thanks for your time. Should I leave this issue open until the new API is out (to prevent creating of redundant duplicates) or close it?
Soweit ich sehen kann, zerstรถrt es mein Knockback-Plugin, bei dem ich den Schaden auf Null setze, denn es wird kein Knockback mehr erzeugt.
Finally, there's the log filter, does it completely turn off that feature? It's funny, you guys use the excuse to blame, someone said "we can't rewrite that code". That's what we need to hear, and that's the real reason we ultimately want to know
Updated to jline-terminal 3.26.1 - jline, however, has deprecated their jansi provider,
and so, we're going back to JNA. FFM looks interesting, but, might not work on java 21,
and, seems to requore some additional java flags to open stuff up to allow it to work,
however, seemed to work without on macOS?
It might still look like it works, but it won't use the FFM terminal implementation. While there is no restriction from the JVM side to enable native access yet (see JEP 472 for first steps into that direction), JLine added a check to ensure that native access is enabled (which implicitly falls back to the another provider if it's not):
Yea, I guess I didn't notice it didn't enable, because *nix is pretty much in an "it just works", it's only really Windows which bites us in the ass here.
I think that in the long term, it will probably be a case of "if you want anything bar a basic terminal on Windows, run with this flag" type of deal, I don't care for the time sink that has been proper terminal support for windows anymore, at least the changes here should give us a situation which isn't entirely broken for now.
I don't have hardware that is running Windows, and spinning up VM instances to toy around with a platform that doesn't even hold 15% of the market share seems like an entire waste of time considering it's the platform that gives us the most hassle here.
8bb8be0 Add default requires and permission methods to ... - kennytv
[PaperMC/Paper] New branch created: basiccommand-basicpermission
Alternative to https://github.com/PaperMC/Paper/pull/11046; does not deprecate the existing methods and instead opts for a simpler solution
b0ef3ca Only call EntityDamageEvents before actuallyHur... - lynxplay
Get rid of the removed imports here please.
Since Paper bugs don't get patched in older versions, here's a workaround for those running into this issue with the Vanilla Tweaks Graves data pack in Paper for MC 1.20.6: graves v3.0.3 (Paper 1.20.6).zip
This will not work in vanilla MC 1.20.6.
Expected behavior
PlayerItemConsumeEvent#getItem should return the ItemStack that was consumed
PlayerItemConsumeEvent#getReplacement should by default return the FoodComponent#getUsingConvertsTo ItemStack
Observed/Actual behavior
PlayerItemConsumeEvent#getItem returns the FoodComponent#getUsingConvertsTo
PlayerItemConsumeEvent#getReplacement returns null
Steps/models to reproduce
- Get Item with FoodComponent
- Eat it whilst listening to PlayerConsumeItemEvent
https://github.com/PaperMC/Paper/assets/62521371/4e601f9a-30d0-4d2e-8a22-4aab2132c6ad
Plugin and Datapack List
[22:44:59 INFO]: Server Plugins (5):
[22:44:59 INFO]: Bukkit Plugins:
[22:44:59 INFO]: - HMCColor, LuckPerms, Oraxen, PlaceholderAPI, ProtocolLib
> datapack list
[22:45:13 INFO]: There are 4 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [file/oraxen_custom_armor (world)], [paper (built-in)]
[22:45:13 INFO]: There are no more data packs ...
we are having issues with this too. it is very annoying.
Closes https://github.com/PaperMC/Paper/issues/11040
Adds a nullable getItemRarity to ItemType. I'm not gonna bother adding it to Material because we have one with a conflicting name already (a deprecated one using our deprecated ItemRarity type).
Is your feature request related to a problem?
In spigot.yml you can configure some Attribute limit like this
I want to know can more Attribute limit could be added suchh as Armor, Jump Strength etc.
Describe the solution you'd like.
Add more Attribute limit configuration
Describe alternatives you've considered.
For Armor, when Player or some entities received a great damage, create a plugin to deal with this (compute real damage like vanilla Armor)
I do not think this is a good idea though
Other
No response
Discussion Category: Ideas
Spigot fixed this bug at version CraftBukkit version 4263-Spigot-491f367-bed1e3f
First to narrow the scope of this , turn on Hit-boxes to see if the entities are there and not phantom sounds from lag. No Hit-boxes , then no entities.
Hitboxes are regions that describe how much space an entity takes up, which can be shown by pressing the F3 + B keys. โ [Java Edition only] When they are shown, a white outline will be seen showing the location of the entity and the space it takes up.
Expected behavior
When removing the lodestone properties of a lodestone compass it should become a compass.
Observed/Actual behavior
The compass remains a lodestone compass when trying to set it back to a compass.
Steps/models to reproduce
ItemStack compass = new ItemStack(Material.COMPASS, 1);
CompassMeta compassMeta = (CompassMeta)compass.getItemMeta();
compassMeta.setLodestoneTracked(false);
compass.setItemMeta(compassMeta);
player.getInventory().addItem(compass);
ItemStack compassFromInv = getPlayerCompass(player);
CompassMeta compassFromInvMeta = (CompassMeta)compassFromInv.getItemMeta();
compassFromInvMeta.setLodestone(null);
compassFromInvMeta.setLodestoneTracked(true);
compassFromInv.setItemMeta(compassFromInvMeta);
Plugin and Datapack List
> plugins
[12:46:52 INFO]: Server Plugins (1):
[12:46:52 INFO]: Bukkit Plugins:
[12:46:52 INFO]: - PlayerTracker
Paper version
> version
[12:44:14 INFO]: Checking v...
First to narrow the scope of this , turn on Hit-boxes to see if the entities are there and not phantom sounds from lag. No Hit-boxes , then no entities.
Hitboxes are regions that describe how much space an entity takes up, which can be shown by pressing the F3 + B keys. โ [Java Edition only] When they are shown, a white outline will be seen showing the location of the entity and the space it takes up.
Just checked, no hitboxes are visible but I still here the sounds of the cats. I'll attach a video in the root of this thread.
First to narrow the scope of this , turn on Hit-boxes to see if the entities are there and not phantom sounds from lag. No Hit-boxes , then no entities.
Hitboxes are regions that describe how much space an entity takes up, which can be shown by pressing the F3 + B keys. โ [Java Edition only] When they are shown, a white outline will be seen showing the location of the entity and the space it takes up.Just checked, no hitboxes are visible but I still here the sounds of the cats. I'll attach a video in the root of this thread.
Try these 2 things, to rule out entities did not materialize underground . Name the cat with a tag, the tags will be visible if a cat is there and put yourself in spectator mode to see underground. sounds can be heard from a couple of chunks away and may be in a cave. I'm more inclined to believe in a entity tracking issue, since there is no hit-box for your cats in view.
Expected behavior
No error, correct handling of null as described in the javadocs.
Observed/Actual behavior
java.lang.NullPointerException: Cannot read the array length because "<local2>" is null
at io.papermc.paper.pluginremap.reflect.PaperReflection.parameterDescriptor(PaperReflection.java:147) ~[paper-1.21.jar:1.21-9-4ea696f]
at io.papermc.paper.pluginremap.reflect.PaperReflection.strippedMethodKey(PaperReflection.java:141) ~[paper-1.21.jar:1.21-9-4ea696f]
at io.papermc.paper.pluginremap.reflect.PaperReflection.findMappedMethodName(PaperReflection.java:94) ~[paper-1.21.jar:1.21-9-4ea696f]
at io.papermc.paper.pluginremap.reflect.PaperReflection.mapMethodName(PaperReflection.java:71) ~[paper-1.21.jar:1.21-9-4ea696f]
at io.papermc.reflectionrewriter.runtime.AbstractDefaultRulesRefle...
I tested and found the cat had fallen though ground or floor of builds but was nearby. upto 1 to 2 chunks away in cave or fallen though blocks. . Must be a setting to keep pets closer to you. Anyway they are there just not close to you
When I had the issue with the dogs you could hear them right next to you and when you relogged then they would be right next to you
20889d0 Fix method reflection remapping with null param... - kennytv
I tested and found the cat had fallen though ground or floor of builds but was nearby. upto 1 to 2 chunks away in cave or fallen though blocks. . Must be a setting to keep pets closer to you. Anyway they are there just not close to you
The cats are definitely still there. Relogging makes them appear again and they're right next to me. You can also hear the steps and meows very close to you. I've attached yet another video in the top message showing this behaviour.
I just stayed on and warped to a different place and the cat caught up. I did see the tag underground stuck in blocks .If a player teleports into solid rock, the command is //unstuck. The cat is teleporting into blocks sometimes. This is a bug getting the co-ord's wrong . pretty sure
I just stayed on and warped to a different place and the cat caught up. I did see the tag underground stuck in blocks .If a player teleports into solid rock, the command is //unstuck. The cat is teleporting into blocks sometimes. This is a bug getting the co-ord's wrong . pretty sure
That's a worldedit cmd m8
If you really want to eliminate the possibility that the coordinates are wrong, you can run /tp @n[type=cat], but I'm pretty sure it's just not rendering for some reason
If you really want to eliminate the possibility that the coordinates are wrong, you can run
/tp @n[type=cat], but I'm pretty sure it's just not rendering for some reason
Running this command teleports me to the location where I heard the cat meow, which is usually close to me. Still, the cat is not visible.
I've experienced this on my end as well, just in a slightly different way. But definitely something wonky going on for long distances.
It is weird cause my old server host used to not work with spark and it would crash on startup each time, but my new server host works perfectly with it. I made this issue on the spark github, but it was never addressed. https://github.com/lucko/spark/issues/377. The server host it would crash on was Berrybyte and the server host it works on is Surf Host with both being very small server hosts. I have tested running spark on my own computer with a backup of my server and it works perfectly fine so it must have something to do with how certain server hosts are set up.
Discussion Category: Ideas
Expected behavior
Observed/Actual behavior
Steps/models to reproduce
Type any command that doesn't exist
Plugin and Datapack List
0 plugins
Paper version
This server is running Paper version 1.21-50-master@20889d0 (2024-07-10T16:28:03Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-47-62ed302 (MC: 1.21)
Other
No response
Expected behavior
(On lower server versions works fine)
Observed/Actual behavior
Steps/models to reproduce
Set a custom message with underline or bold
Plugin and Datapack List
0 plugins
Paper version
This server is running Paper version 1.21-50-master@20889d0 (2024-07-10T16:28:03Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-47-62ed302 (MC: 1.21)
Other
No response
@Machine-Maker what's the status of delivering that PR?
Unable to reproduce, using underline & bold works fine
Unable to reproduce, using underline & bold works fine

Steps/models to reproduce
With extra plugin create listener and set 0 damage for each EntityDamageEvent. Normal mobs will still be knocked back on hits (while unkillable) but player will behave as event was cancelled instead.
Plugin and Datapack List
[10:26:34 INFO]: Server Plugins (13):
[10:26:34 INFO]: Bukkit Plugins:
[10:26:34 INFO]: - *JoinFullServer, Multiverse-Core, Multiverse-Inventories, Multiverse-Portals, NoChatReports, *PermissionsEx, PexTabCompleter, ProtocolLib, *SimplePrefix-Reloaded, TreasureChestX
[10:26:34 INFO]: *VoidWorld, WorldEdit, WorldGuard
[10:26:54 INFO]: There are 3 data p...
Stack trace
Plugin and Datapack List
BlockTracker - https://cdn.modrinth.com/data/gOtvzAQX/versions/m1gTN0dL/BlockTracker-1.0.6.jar
SuperiorSkyblock2 - https://hub.bg-software.com/job/SuperiorSkyblock2 - Dev Builds/260/artifact/target/SuperiorSkyblock2-2024.1-b260.jar
Actions to reproduce (if known)
- No server config changes.
- Create an island with
/island create test normal - Place random 5 blocks (can be in creative)
- Leave the server
- Don't stop it - wait 10 seconds for chunk unload
Paper version
> ver
[10:50:07 INFO]: Checking version, please wait...
[10:50:07 INFO]: This server is running Paper version 1.21-50-master@20889d0 (2024-07-10T16:28:03Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Other
Works correctly on latest Paper 1.20.6 build no. 148 using the same plugin versions.
BlockTracker related code: https://github.com/Krakenied/BlockTracker/blo...
Yea so, this is a bit annoying.
Technically, players do not process damage ticks from damage that is 0.
This was, for the longest time, a spigot and hence paper bug, which was fix recently by not processing damage of value 0.
However, given plugins can still prevent damage from actually applying by simply cancelling the event.
I am unsure if the inconsistency of "plugin sets damage to 0, but still process the event" is worth it, but I think it may be.
Some more input from the team here would be great tho.
Your old host was using OpenJ9, an alternative to the usual Hotspot JVM implementation, which aims to reduce memory overhead at the cost of performance. The platform is fairly well-known for making changes which break existing tooling that takes advantage of instrumentation (i.e. profiling, memory stuff, etc)
Discussion Category: Ideas
I think it's weird as then player is handled diffrently as other entities, where 0 damage event still triggers. Mayble that's why snowballs don't apply knockback to players at this point in time?
But still this is an issue for me, as I rellied on this mechanic for my plugin where I rewrite damage system completelly. But maybe there could be some middle ground, as probably reverting a bug because of plugin regression is not the best solution. If EntityDamageEvent would get new method "void setFinalDamage(double damage)" that would override all damage reduction calculations and just reduce player health by set amount. Then I would not have to resort to setting damage inside event to 0 and then reducing player health.
Another method that would help me would be "void setProcessKnockbackAndArrowConsumption(boolean state)". Name to be discussed properly. And that method would force knockback on Players and make arrow actually hit him even when damage set is equal to 0. (There are still ...
This is expected behaviour due to the server using the vanilla "Brigadier" system for commands, which handles unknown commands in a way that does no longer allow for a configurable message on the server. The Spigot config option does nothing (which probably should be documented).
I created a block platform 4 x 4 , 1 block thick in the sky. /tp to that platform to get the cat to follow. I can hear the cat, but can not see it, so i begin placing blocks around the edge, 3 high and spiral inward placing blocks, until i found a spot where i could not place a block. The ghost cat is now in a hole 3 block deep. It has no hit-box or tag, but cries out when anvils are dropped in the hole. The cat is having a out of body experience , Its A.I is there but not its Physical hit-box or tag . This is reproducible and may effect other entities. I did not need to log off, just move from place to place and it soon caught up in its rendered form.
only way to change the message now would be a resource pack
I still think attaching a perm node should be mandatory. We need to actively discourage using manual perm checks for root commands, since doing that over using this new method will still send the command, so players can tab complete it.
A part of me always dies whenever I see people installing tab block plugins or straight up disable tab complete in order to hide commands players don't have permission to run but still see in tab completion.
In my ideal world every root command has a perm node attached to it and it a command should be used by e everyone by default the permission to that command should just be granted by default, either by registering it in the plugin.yml or by registering it in code.
Expected behavior
When a Shulker Box is broken, the values in its persistent data container are in the dropped ItemStack's block state.
Observed/Actual behavior
The values are not present.
Steps/models to reproduce
- Set some key-value pair in a Shulker Box's PersistentDataContainer; I achieved this via a command:
Block block = player.getTargetBlockExact(10); if (block != null && block.getState() instanceof ShulkerBox box) { box.getPersistentDataContainer().set(new NamespacedKey("test", "thing"), PersistentDataType.STRING, "Hello"); box.update(); } - Use
/data get block <coordinates>to verify the data has been written - Break the block
- Use
/data get entity @e[type=item,distance=..6,limit=1] Itemto verify the data has not been kept.
Plugin and Datapack List
- The plugin created to reproduce the issue.
Paper version
This server is running Paper version 1.20.6-148-ver/1.20.6@20f5165 (2024-07-02T15:37:33Z) (Implementing API vers...
Only skip the damage tick logic on player entities if the original damage was zero and was not modified by plugins down the line.
This way all the following three scenarios trigger the damage tick
a) vanilla damage was 0, plugin set it to non zero
b) vanilla damage was non zero, plugin did not modify it
c) vanilla damage was non zero, plugin set it to zero.
Regarding case c, the argument here is that EntityDamageEvent#setDamage should not modify the damage tick logic.
Resolves: #11055
https://github.com/PaperMC/Paper/pull/11058 contains a test server jar, feel free to test it and see if the change correctly resolves your issue here.
This was presumably resolved in the latest upstream update ๐ Someone give it a quick test pls, but yea. Maybe be fixed.
Seems to be all good!
a594d18 Fix entities not being visible to clients when ... - Spottedleaf
f250ec0 Increment ChunkHolderManager current tick - Spottedleaf
Kenny, This build 55 fixed the invisible cat other entities , but made all Citizens2 NPC's invisible. Not sure how to fix this . Anyway, rolling back to build 50 made NPC's visable again.
This fix renders all Citizen2 plugin NPC's invisible . No errors
This is expected behavior. Block entities do not keep their NBT when they are broken. The same thing applies to other block entities. I don't think this was ever the behavior, so it's not a regression either.
@lynxplay I tested it and can confirm that it resolves my issue
Same problem here, following.
this haopendms with build 53 , 54 and 55
so i asume it was the chnage in build 53 where they tried to fix something.
Kenny, This build 55 fixed the invisible cat other entities , but made all Citizens2 NPC's invisible. Not sure how to fix this . Anyway, rolling back to build 50 made NPC's visable again.
Here on the other hand, it fixed every single issue we've had.
Perhaps report this to Citizens2. Don't just roll this fix back.
It's rather unintuitive then, as the opposite (placing a shulker box with values in the blockstate PDC of the item stack) works perfectly.
Stack trace
https://pastebin.com/YDWbF57g
Plugin and Datapack List
No plugins and default datapacks, stack trace out i used spark, in fact, with or without it, it could cause blocking
Actions to reproduce (if known)
- Start paper
- Trigger an explosion (e.g. /summon tnt)
Paper version
This server is running Paper version 1.21-57-master@0e02aa5 (2024-07-11T19:34:02Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-50-20889d0 (MC: 1.21)
Other
No response
Hello @KKW557,
I'm unable to reproduce this on the latest build of Paper. Can you please provide your entire latest.log?
I found that when I left clicked on ender_crystal on Bedrock and it exploded, it would cause the server to crash, even if I didn't install any plugins.
Is your feature request related to a problem?
Add new areas affected by lag compensation
Describe the solution you'd like.
Add new areas affected by lag compensation, such as these:
Item pickup delay
Block entity tick acceleration
Portal delay
Sleeping delay
Potion delay
Fluid spread speed
Describe alternatives you've considered.
https://github.com/snackbag/tt20
Other
No response
Discussion Category: Ideas
I can confirm this behaviour, TNT and Creepers will cause the main thread to freeze
I found that when I left clicked on ender_crystal on Bedrock and it exploded, it would cause the server to crash, even if I didn't install any plugins.
I was able to reproduce it with end crystals: https://pastes.dev/R5uTf4yR9u. I haven't been able to reproduce the crash with TNT or Creepers yet.
That is odd, it happens consistently on my end, anytime a Creeper is about to explode, same goes with primed TNT. I reverted to build 50 and everything works fine.
If there are unbreakable blocks (such as bedrock or barriers) within the explode range, the thread will freeze, is 100%
Yea, I was looking at the code, that confirms what I believe is the issue to me;
I can also confirm that I had barriers next to the Creepers, so that makes sense
[PaperMC/Paper] New branch created: fix/explosions
4232625 Fix explosions getting stuck - electronicboy
https://github.com/PaperMC/Paper/pull/11061 - I don't have the gusto to check this with my current state
#11061 - I don't have the gusto to check this with my current state
Yep, this seems to have fixed the issue! ๐ฅณ
c6e9579 Fix explosions calculation getting stuck (#11061) - electronicboy
[PaperMC/Paper] branch deleted: fix/explosions
idk how to feel about lag compensation tbh, it would be better to fix the underlying lag problem by optimizing config/plugin or if you have many players using multiple servers or folia
Discussion Category: Ideas
Spark is much better than timings overall + timings has a performance overhead that spark doesn't seem to, that being said the java agents spark uses are apparently going to be removed in a future JDK..
Discussion Category: Ideas
If you want packet players we should have packet entities aswell, but imo its out of paper scope.
Discussion Category: Ideas
Not removed, just the dynamic loading of them at runtime will be disabled by default
Discussion Category: Ideas
I wouldn't use magic packet based ghostlike entities. There are better options to spawn a human. Even out of scope i don't like them. Because you need to do unnecessary sync stuff.
Discussion Category: Ideas
Stack trace
Hello,
I would like to ask for directions in resolving a client issue. He's experienced a server crash with about 10 players using Paper 1.20.6.
This error came up first:
[00:34:41] [Paper Watchdog Thread/ERROR]: The server has not responded for 10 seconds! Creating thread dump
[00:34:41] [Paper Watchdog Thread/ERROR]: ------------------------------
[00:34:41] [Paper Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
[00:34:42] [Paper Watchdog Thread/ERROR]: ------------------------------
[00:34:42] [Paper Watchdog Thread/ERROR]: Current Thread: Server thread
[00:34:42] [Paper Watchdog Thread/ERROR]: PID: 37 | Suspended: false | Native: false | State: RUNNABLE
[00:34:42] [Paper Watchdog Thread/ERROR]: Stack:
[00:34:42] [Paper Watchdog Thread/ERROR]: com.destroystokyo.paper.util.maplist.IBlockDataList.getBlockDataFromRaw(IBlockDataList.java:33)
[00:34:42] [Paper Watchdog Thread/ERROR]: net.minecr...
Beyond the fact that the watchdog killed the server, not much to say.
As the github issue section is not used for support, I'd recommend your client to provide a spark report in our discords respective paper-help channel for further analysis๐
A general set of bugfixes for itemstack damage related logic.
- Prevent NPE when calling deprecated ItemStack#getMaxItemUseDuration()
- Do not apply enchantments when damaging items via API
- Do not error when passing a null equipment slot to hurtAndBreak
- Correctly call PlayerItemBreakEvent
5a503d7 Bulk bugfixes for itemstack damage API (#11063) - lynxplay
What is the gain throwing ISE over null?
[PaperMC/Paper] Pull request review comment: #10911 Call PlayerLaunchProjectileEvent for wind charge
Maybe worth some comment as to why this is needed?
given that iirc this is the first time we manually sent it in the codebase.
[PaperMC/Paper] Pull request review comment: #10911 Call PlayerLaunchProjectileEvent for wind charge
// Paper - PlayerLaunchProjectileEvent - moved from below.
Stack trace
[04:13:51] [Paper Watchdog Thread/ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - 1.21-57-0e02aa5 (MC: 1.21) ---
[04:13:51] [Paper Watchdog Thread/ERROR]: The server has not responded for 10 seconds! Creating thread dump
[04:13:51] [Paper Watchdog Thread/ERROR]: ------------------------------
[04:13:51] [Paper Watchdog Thread/ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
[04:13:51] [Paper Watchdog Thread/ERROR]: Ticking entity: minecraft:player, entity class: net.minecraft.server.level.ServerPlayer
[04:13:51] [Paper Watchdog Thread/ERROR]: Entity status: removed: false, valid: true, alive: true, is passenger: false
[04:13:51] [Paper Watchdog Thread/ERROR]: Entity UUID: e7c91a5b-e9cd-37dd-87ad-66fcbbb7ad72
[04:13:51] [Paper Watchdog Thread/ERROR]: Position: world: 'world_the_end' at location (36.10833162332814, 101.74405402714046, 25.331300356583597)
[04:13:51] [Paper Watchdog Thread/ERROR]: Velocity:...
---- Minecraft Network Protocol Error Report ----
// It's the tubes, they're clogged!
Time: 2024-07-13 00:07:36
Description: Packet handling error
java.net.SocketException: Connection reset
at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:401)
at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:434)
at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:254)
at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132)
at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:357)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run...
duplicate? https://github.com/PaperMC/Paper/issues/11059
Your version may be outdated, please try the latest build version #62+.
Expected behavior
I don't think playerchunkunloadevent would be working on 1.21 right now? its called in dropChunk which isn't called from anywhere currently
Observed/Actual behavior
.
Steps/models to reproduce
.
Plugin and Datapack List
.
Paper version
5a503d7db42eee8d287b7ed32db22a369e9e3146
Other
No response
This has always been the case though. The point of the block entity tag in the stack's data components is to pre-fill the nbt of the block entity. There has never been any system for going in the opposite direction except for what the loot table copies in specific circumstances (chest name for instance).
The Help command will throw an StringIndexOutOfBoundsException when the command is:
/help /
this fixes that. also indirectly fixes the help command returning an empty list instead of a "No help for <input>" when there are no commands matching the input
I think we are just missing some "resetLodestoneTracked" method. Calling setLodestoneTracked(false) shouldn't ever "clear" the lodestone from the compass, because that is still an untracked lodestone compass. If that method accepted null, that could be the 3rd state, but it doesn't.
Expected behavior
Before https://github.com/PaperMC/paper/commit/4d20922b79f5b3976e240932d087357a3808fde4 creating a book with pages but without an author or title worked without issues
Observed/Actual behavior
After that commit when creating a book that has pages but without an author or title it can no longer encode the component correctly
https://paste.enginehub.org/uQZTHfDcR
Steps/models to reproduce
ItemStack book = new ItemStack(Material.WRITTEN_BOOK);
BookMeta meta = (BookMeta) book.getItemMeta();
meta.addPages(Component.text("awawawa"));
book.setItemMeta(meta);
e.getPlayer().getInventory().addItem(book);
Plugin and Datapack List
n/a
Paper version
Paper version 1.21-62-master@5a503d7
Other
It's a bit weird, because both setTitle() and setAuthor() are Nullable, and when the book doesn't have any pages it's fine to not set them, but as soon as you add pages to the book those become required
For me getItem() returns what it should, it's getReplacement() that doesn't work properly.
Eatable grass block to test:
/give @s minecraft:grass_block[minecraft:food={nutrition:0,saturation:0,can_always_eat:true,using_converts_to:{id:"minecraft:dirt"}}]
Those two are not really equivalent however
using_convert_to will add a new item once the food is consumed
setReplacement will override the whole stack with the new stack and work in creative mode too
Good catch, a fix has been dropped in that commit wrongly and generally no codec error should happens anyway.
This is to keep the compatibility with the old method.
There's still a weird case, where if you set a replacement, eat the grass block with only 1 in hand, it gets replaced, with 2 or more in hand it gets both replaced and a dirt is added
Closes https://github.com/PaperMC/Paper/issues/11067
Fix a regression in https://github.com/PaperMC/Paper/commit/4d20922b79f5b3976e240932d087357a3808fde4 and make pages optional too while still keeping the author and title.
Cannot test, but diff looks good.
[PaperMC/Paper] Pull request review comment: #10911 Call PlayerLaunchProjectileEvent for wind charge
Yes similar thing should be done for the enderpearl too
2288e13 Update last chunk position in findSupportingBlock - Spottedleaf
So right now this probably has issues with the piercing enchantment (haven't tested but is very likely). before i however resolve that i would like to know what design we will be going forwards with. Lynx suggested instead of adding new methods to ProjectileUtil which return all entities in the range, we should do something similar to piercingIngoreEntityIds. I have tried to implement this for 1 or 2 of the Projectile Classes however i noticed that the diff is often even bigger/ just as big as before, we also have to clip entites more often with his implementation.
the event fires before all of the logic is ran, so the replacement can't be prepopulated is the dealio, IIRC, so, that's sadly a WAI
You can definetly pre-populate the getReplacement by reading for a food component on the item.
But yeah i was considering whether replacement in the event was too different than usingConvertsTo, and it seems so. Since its handling the entire stack (though it does feel pointless due to usingConvertsTo covering every scenario i can see being useful)
that only works for a specific case, however, that is generally not how the event has worked for the past few eons
Still looks good after testing
Hey, how about adding a feature to change the max stack size for items at the core level? Third-party plugins often struggle with this, whether theyโre using NMS or BukkitEvents. Plus, those plugins usually donโt support creative mode! Patching the core to add this feature isnโt something everyone wants to do, especially since it requires more than beginner programming skills.
https://github.com/user-attachments/assets/ea9f17f5-d217-4eac-9774-dfaf98a7d620
Discussion Category: Ideas
you can already do that
Discussion Category: Ideas
From which version would this work? ๐ง
Discussion Category: Ideas
1.20.5
Discussion Category: Ideas
1.20.5
๐ ok, thx
Discussion Category: Ideas
Closing this as, yea, on a per itemstack basis this is already possible and, until the Item registry is data driven, it won't be nicely doable with client support for the whole Item type.
Discussion Category: Ideas
I am unsure how clever it is to not check the permission here at all.
While nothing currently sets a permission, it is technically still a valid thing to do unless I am missing something?
The HelpMap is public API, so are the help topics.
Plugins making use of such a permission flag should be respected.
When this PR is merged, it will perfectly solve the issue I'm currently facing, I'm very much looking forward to it.
https://github.com/PaperMC/Paper/pull/10440
Discussion Category: Ideas
I find it weird Bukkit has this IndexHelpTopic in the first place. What is the advantage against just using a List?
Yea sadly we cannot crystal ball into the minds of bukkit developers xD
Stack trace
---- Minecraft Crash Report ----
// Don't do that.
Time: 2024-07-14 18:22:50
Description: Exception in server tick loop
java.lang.RuntimeException: java.io.IOException: The process cannot access the file because another process has locked a portion of the file
at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:601)
at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:515)
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:327)
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1220)
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:330)
at java.base/java.lang.Thread.run(Thread.java:1570)
Caused by: java.io.IOException: The process cannot access the file because another process has locked a portion of the file
at java.base/sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at java.base/sun.nio.ch.FileDispatcherImpl.write(FileDis...
The process cannot access the file because another process has locked a portion of the file
You already have something running on your machine accessing these files, use the discord/forums for support
Stack trace
[17:42:30] [Paper Watchdog Thread/INFO]: Stopping main thread (Ignore any thread death message you see! - DO NOT REPORT THREAD DEATH TO PAPER)
[17:42:30] [Paper Watchdog Thread/INFO]: Stopping server
[17:42:30] [Paper Watchdog Thread/INFO]: Saving players
[17:42:30] [Paper Watchdog Thread/WARN]: Asynchronous Save Players! Blocking thread until it returns
java.lang.IllegalStateException: null
at io.papermc.paper.util.MCUtil.ensureMain(MCUtil.java:350) [?:1.21-DEV-0e02aa5]
at net.minecraft.server.players.PlayerList.h(PlayerList.java:1185) [?:1.21-DEV-0e02aa5]
at net.minecraft.server.MinecraftServer.v(MinecraftServer.java:1060) [?:1.21-DEV-0e02aa5]
at net.minecraft.server.dedicated.DedicatedServer.v(DedicatedServer.java:845) [?:1.21-DEV-0e02aa5]
at net.minecraft.server.MinecraftServer.close(MinecraftServer.java:1006) [?:1.21-DEV-0e02aa5]
at org.spigotmc.WatchdogThread.run(WatchdogThread.java:231) [?:1.21-DEV-0e02aa5]
Plugin and Datapac...
Expected behavior
Monsters shouldn't move, unless I'm in 1 block distance from them. On Spigot, it seems to be much less reproducible. Yeah, I know it sounds weird. I haven't noticed the issue to affect animals, however it may be an incorrect assumption.
Observed/Actual behavior
Monsters move.
Steps/models to reproduce
entity-activation-range:
animals: 1
monsters: 1
raiders: 1
misc: 1
water: 1
villagers: 1
flying-monsters: 1
wake-up-inactive:
animals-max-per-tick: 0 # 4
animals-every: 1200
animals-for: 100
monsters-max-per-tick: 0 # 8
monsters-every: 400
monsters-for: 100
villagers-max-per-tick: 0 # 4
villagers-every: 600
villagers-for: 100
flying-monsters-max-per-tick: 0 # 8
flying-monsters-every: 200
flying-monsters-for: 100
villagers-work-immunity-after: 100
villagers-work-immu...
7f6ad6e Make watchdog thread extend TickThread again - kennytv
34a2917 Add default canUse and permission methods to Ba... - kennytv
[PaperMC/Paper] branch deleted: basiccommand-basicpermission
Resolved by 1595e4afc097ad595cf10106044774170f779701
This generally looks like this is working as intended, EAR, and especially EAR 2, is not designed to entirely take mobs out of the active range out of the game, I can expand upon this after I've woken up and recovered more IQ points for the day
Expected behavior
1.20.4 compiled plugins should load, as paper api should be somewhat backwards compatable? The breakages here are just become spigot renamed the enum, no NMS or internals are being used
Observed/Actual behavior
java.lang.NoSuchFieldError: Class org.bukkit.enchantments.Enchantment does not have member field 'org.bukkit.enchantments.Enchantment PROTECTION_ENVIRONMENTAL'
java.lang.NoSuchFieldError: Class org.bukkit.potion.PotionEffectType does not have member field 'org.bukkit.potion.PotionEffectType INCREASE_DAMAGE'
Steps/models to reproduce
Compile a 1.20.4 plugin and try to use on 1.21
Plugin and Datapack List
N/A
Paper version
1.21 34a2917dccd1a39888c85badd7cf7aad7c44ff61
Other
No response
Are you using paper-plugin.yml?
Are you using paper-plugin.yml?
Nope, the plugins are spigot, I do however have the -Dpaper.disable-plugin-rewriting=true flag enabled, but I doubt that would affect this.
Even with plugin remapped, I get the error:
[13:17:51 WARN]: java.lang.NoSuchFieldError: Class org.bukkit.MusicInstrument does not have member field 'org.bukkit.MusicInstrument FEEL'
There is 0 promise that spigot will remap or mitigate every change mojang does internally, that is apparently one such case of them not remapping it
Eh, in my opinion whether plugins are backwards compatible or not should be decided, not some parts are and some not, for example, pre 1.13 legacy materials are still supported for some reason.
There are 0 promises that a plugin written on 1.8 will work on 1.21
99ae7bb Don't require author and title to be set on sig... - Lulu13022002
Stack trace
paste your stack trace or a paste.gg link here!
https://pastebin.com/raw/ugmhWrUn
Plugin and Datapack List
/plugins Itemsadder protocolib lonelibs
Actions to reproduce (if known)
I changed server version to 1.20.4 to 1.20.1 and also changed spigot to paper. I backup the world file and paste it to the newer version of my server(1.20.1) and it's happened.
Paper version
/version git-Paper-22 (MC: 1.20.1)
Other
No response
1.20.1 is not supported and neither is downgrading.
Expected behavior
Itemstack NBT from 1.20.4, once ran though datafixers, should correctly load in 1.21
Observed/Actual behavior
Here is the itemstack which a shulker in snbt form: https://pastebin.com/u94a4ZRZ
it is successfully parsed into a compound tag, then ran though ca.spottedleaf.dataconverter.minecraft.MCDataConverter.convertTag(ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.ITEM_STACK, compound, dataVersion, Bukkit.getUnsafe().getDataVersion())
but then when net.minecraft.world.item.ItemStack.parse is called, the console gets this warning:
https://pastebin.com/5f2TR5Eq
I am not using bukkit unsafe store item as bytes, i am loading from snbt, but that loaded fine into the compound tag, the datafixers however are having issues making it 1.21 compatible it seems? I didn't experience this issue in 1.20.5 which is odd.
Steps/models to reproduce
Load a 1.20.4 itemstack
Plugin and Datapack List
N/A
Paper version
1.21 https:/...
At least for me, both pastebins are expired.
At least for me, both pastebins are expired.
Very odd, they got deleted, I have re-uploaded now and updated links
The issue tracker isn't for support, please join our Discord if you need help with internals
The issue tracker isn't for support, please join our Discord if you need help with internals
The internals are irrelevant here, its a datafixer problem.
I am fairly confident the datafixers are at fault but i will test this with paper itemstack serialization and make a new issue if needs be.
That is why in Spigot when setLodestoneTracked(true) and setLodestone(null) the lodestone compass becomes a normal compass because, correct me if I am wrong, it's not possible to have a tracked compass without lodestone. But a "resetLodestoneTracked" does seem more intuitive.
The same exact issue happens when using the supported serializeToBytes() and deserializefrombytes, can you re-open issue?
Despite the console error, the item did load, and appears to be intact, very odd.
Expected behavior
An itemstack serialized 1.20.4 should correctly load in 1.21 without errors.
Observed/Actual behavior
on 1.20.4:
Base64.getEncoder().encodeToString(Bukkit.getUnsafe().serializeItem(shulker))
the base64 string: https://0bin.net/paste/gCNq3q2J#fdoLN9dS1PAzhj8eBqeOrnp-xihURktdcDNq1nGLw4a
on 1.21
Bukkit.getUnsafe().deserializeItem(Base64.getDecoder().decode(string));
console error: https://0bin.net/paste/o2chIszJ#52v2olu-s1gmuI/T6IOWtt9OJp3CIgjIu7DgXVqxAyG
The item appears to deserialize correctly, but the console error is still printed, very odd.
Steps/models to reproduce
Encode an item using Bukkit.getUnsafe().serializeItem in 1.20.4
decode said item in 1.21
Plugin and Datapack List
N/A
Paper version
1.21 https://github.com/PaperMC/Paper/commit/34a2917dccd1a39888c85badd7cf7aad7c44ff61
Other
No response
It is possible to have a tracked compass without a location. That is a completely valid itemstack you can give yourself in vanilla minecraft.
Expected behavior
Papers jar remapper incorrectly renames
net.minecraft.server.level.ChunkMap$TrackedEntity
to
net.minecraft.server.level.ChunkTracker$TrackedEntity
"chunktracker" isn't mentioned in the paper jar, its called chunkmap, why is it remapping to chunktracker?
I was pulling my hair out for hours because of this weird error message:
java.lang.NoSuchFieldError: Class net.minecraft.world.entity.Entity does not have member field 'net.minecraft.server.level.ChunkTracker$TrackedEntity tracker'
in intellij it was referred to as chunkmap, dumping the fields at runtime its referred to as chunkmap, but for some reason in the remapped jars its referred to as chunktracker
How do i disable the paper jar remapper for a given plugin?
Observed/Actual behavior
.
Steps/models to reproduce
.
Plugin and Datapack List
.
Paper version
This server is running Paper version 1.21-DEV-master@34a2917 (2024-07-14T13:04:22Z) (Implementing API version 1.21-...
Known issue, happening when spigot and paper mappings share a name.
Known issue, happening when spigot and paper mappings share a name.
isn't paper using mojang mappings?
Wait are you using reflection? Or just plain code.
Wait are you using reflection? Or just plain code.
Just linking jar to my project instead of userdev, because userdev is very slow to compile + its not needed since paper uses mojang mappings under the hood now
Then you need to specify your remapping namespace as detailed in the discord and forum announcement for the mappings change, otherwise paper will remap your plugin.
This PR adds a new constructor to AttributeModifier that supports NamespacedKeys but does not require an EquipmentSlotGroup, instead defaulting to EquipmentSlotGroup.ANY.
This makes creating attribute modifiers less verbose whenever you want to add modifiers to players or other entities directly, as the slot group is useless in those cases anyway.
I've also fixed a Javadoc issue with getSlotGroup: its not nullable, and of course returns an EquipmentSlotGroup, not EquipmentSlot. Someone copy-pasted there.
I also squashed my previous transient modifier API into the existing modifier API patch and renamed it. This is the first time I have done this and it has created quite a lot of renamed patches. I hope this was the right way to do it.
Wow, the pull from 4 years ago, I think we can delete some outdated pulls
9fd5b3c Add AttributeModifier constructor without Equip... - Malfrador
Also changes plugin.yaml to plugin.yml
Add a @see to the existing method here pls
fixed. Saw this when I was making the getDataPath() and later edited the other patch
Needs general re-evaluation on its usefulness/api usage.
Given the server has 0 authority over this, the PR adds a nice utility (certainly) but said utility cannot be consistent (as evident by the javadocs).
Needs more input of how worth this utility is.
Expected behavior
Entitychangeblockevent should be called when weaving effect places cobwebs
Observed/Actual behavior
No events are called when weaving effect places cobwebs, meaning people can place cobweb in grief-protected regions etc.
Steps/models to reproduce
Look at code
Plugin and Datapack List
N/A
Paper version
This server is running Paper version 1.21-DEV-master@34a2917 (2024-07-14T13:04:22Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are 4 version(s) behind
Download the new version at: https://papermc.io/downloads/paper
Previous version: 1.21-63-2288e13 (MC: 1.21)
Other
No response
As someone who does the things mentioned in the PR with the action bar, this is certainly very useful.
And it's clearly mentioned in the Javadocs that the server is limited in predicting it.
Maintenance cost should be very low too.
However maybe just exposing itemStackChangeTime directly would make more sense? Then that value could also be used for other things (though I am not sure what those could be)
Adds an event fired when the crafter crafts an item. The event only exposes the recipe and the potential result for event modifications.
The PR does not contain a preparation related event along the lines of PrepareItemCraftEvent, as exposing the relative players in such an event is out of scope of the PR. It is also not necessary for plugins to prevent crafting specific items.
Future improvements to this event may include boolean flags to prevent items from being consumed, but this is also out of scope for the PR.
https://github.com/PaperMC/Paper/pull/11082 exists as a minimal base for a stable 1.21, mostly focused on protection plugins.
I'd love some feedback from the people involved here regarding that as a base or if their plugin really needs something more for 1.21 to not completely fail.
Discussion Category: Ideas
Do you think it is worth merging with Expand EntityUnleashEvent into a general "improved leash API" patch?
Don't have strong feelings either way, just found it while reviewing.
This should probably be crafted by the crafter instead of crafted by the crafted.
@lynxplay This event fires when Crafter is powered if I understood the code correctly. It would be highly beneficial to get also an event that fires when recipe used is changes (as when PrepareItemCraftEvent is invoked)
Discussion Category: Ideas
How so? The recipe is not evaluated until the item is about to be crafted. What benefit does PrepareItemCraftEvent for Crafters yield you here?
Discussion Category: Ideas
aa929d6 Call PlayerLaunchProjectileEvent for wind charg... - Lulu13022002
LGTM, explanation regarding "prepare" variant of this event makes a lot of sense, thanks for point this out.
Discussion Category: Ideas
Rebased, merged patches with other spawn reason related patch.
Expected behavior
Using sendMessage() looped through all players should not cause the TPS to drop. (99% sure the issue comes from Paper, as this was tested with multiple plugins)
Observed/Actual behavior
any plugin that uses sendMessage() to all players drops the TPS of the server drastically, creating a 2 seconds "freeze" on the main thread, and show that the server is overloaded and running ~50 ticks behind. Sparks does not show said plugin in the report, at all, but removing the plugin(s) using this method fixes the TPS drop. (If there are no players but the plugin is configured to still loop through players and try to send messages, the server will still freeze for 2 seconds)
The weird thing is that this seems to only happen when the messages are sent every 5 minutes or more. Could this be a GC issue? Am I doing something wrong? A lot of plugins are using automated messages to all players like that, and they all cause the same TPS drop according to my tests.
S...
serialisation of message components occurs off the main thread, so, it's very unlikely that it's that that is causing it, but, https://spark.lucko.me/docs/guides/Finding-lag-spikes is how you'd use spark to try to isolate down to lag ticks
Stack trace
If i make a dimension with custom features all of the features work except for lakes, for some reason they attempt to get biome during world gen which causes server to crash: https://0bin.net/paste/GAqifVkm#KtLtjtDme8Jax0s4ld6TlCYsK7gX1WF3blXSScKNps4
It shouldn't be crashing when its trying to get the biome.
lakefeature.java:
if (blockState.getFluidState().is(FluidTags.WATER)) {
for (int ab = 0; ab < 16; ab++) {
for (int ac = 0; ac < 16; ac++) {
int ad = 4;
BlockPos blockPos4 = blockPos.offset(ab, 4, ac);
if (worldGenLevel.getBiome(blockPos4).value().shouldFreeze(worldGenLevel, blockPos4, false) <-- here is where it blows up
&& this.canReplaceBlock(worldGenLevel.getBlockState(blockPos4))) {
worldGenLevel.setBlock(blockPos4, Blocks.ICE.defaultBlockState(), 2);
...
getNoiseBiome I believe should be getting the biome from the world noise, not from the world, but in getNoiseBiome it tries to get a live chunk during worldgen to get cached noise biome, which triggers the crash.
My suggestion is to override the getNoiseBiome() levelreader interface method with a method in worldgenregion that does not attempt to get the cached noise biome, since getting the cached noise biome calls getChunk() in WorldGenRegion, which if the chunk isn't loaded (it wouldn't be during worldgen) triggers the crash.
My theory was correct, adding this code in WorldGenRegion
@Override
public Holder<Biome> getNoiseBiome(int biomeX, int biomeY, int biomeZ) {
return this.getUncachedNoiseBiome(biomeX, biomeY, biomeZ);
}
has fixed the crashing, I will open a PR once I figure out how to.
To go a bit further here, EAR is not supposed to be a replacement for simulation distance, as in, it does not offer a hard cap between ticking and non-ticking.
Entities already have a lot of triggers that mark them immune to EAR for a set amount of ticks based on state or events.
Or via things like the wake-up function defined in your config. EAR is hence more a reduction of ticks needed on entities in its range than a full stop to their activity.
I'll be closing this as "works as intended" thank you anyway for the detailed repot! I hope my explanation makes sense.
8b23018 Avoid collision shapes outside world border in ... - Spottedleaf
Currently running the profiler with recommended settings, I will get back to you in a moment, it takes time as it only happens every 5 minutes. But currently the tickmonitor is consistent with the report I made: (Ignore the GC with 121ms)
[16:42:20 INFO]: [โก] Tick #7522 lasted 1636.52 ms. (3173.07% increase from avg)
[16:42:32 INFO]: [โก] Tick #7783 included GC lasting 54 ms. (type = Young Gen)
[16:42:42 INFO]: [โก] Tick #7980 included GC lasting 29 ms. (type = Young Gen)
[16:42:42 INFO]: [โก] Tick #7988 included GC lasting 38 ms. (type = end of concurrent GC pause)
[16:42:42 INFO]: [โก] Tick #7993 included GC lasting 0 ms. (type = end of concurrent GC pause)
[16:45:22 INFO]: [โก] Tick #11192 included GC lasting 12 ms. (type = Young Gen)
[16:46:05 INFO]: [โก] Tick #12053 included GC lasting 42 ms. (type = Young Gen)
[16:47:04 INFO]: [โก] Tick #13234 included GC lasting 16 ms. (type = Young Gen)
[16:47:05 INFO]: [โก] Tick #13242 included GC lasting 15 ms. (type = end of concu...
Alrighty, so I've been running the profiler for 40 minutes or so, and the actual profiler (/spark profiler open) is empty.
I used /spark profiler --only-ticks-over 1000 according to the documentation, since my spikes are always over 1000ms per tick.
The profiler itself shows "No Data", and only the tick monitor shows what I sent above in the console and the in-game chat.
It happens consistently, emphasis on consistently, when the method I sent in the original post is executed. And again, any plugin using the same kind of method will cause the exact same issue.
Is there anything I can do to help make sure it is not an issue with my setup?
I am using Oracle's JDK 21 LTS if that helps, and our machine is a Debian server with a Xeon E5-1620v2 and 32GB of RAM. It isn't a VPS, the whole rack is ours.
I know the CPU is quite old, but I really don't think this could be the issue. I also assigned 16GB of heap to the JVM, and I am using the recommended flags from the docs.
Fixes #11084
getNoiseBiome() on LevelReader first attempts to getChunk() to get its cached noise biome, however, calling getChunk() on WorldGenRegion will cause a crash if the chunk isn't found "Requested chunk unavailable during world generation"
This means features which attempt to fetch biomes during generation, such as LakeFeature, can cause the server to crash.
This PR simply removes chunk lookups from getNoiseBiome() for WorldGenRegion by overriding the method.
Fixes #11084
getNoiseBiome() on LevelReader first attempts to getChunk() to get its cached noise biome, however, calling getChunk() on WorldGenRegion will cause a crash if the chunk isn't found "Requested chunk unavailable during world generation"
This means features which attempt to fetch biomes during generation, such as LakeFeature, can cause the server to crash.
This PR simply removes chunk lookups from getNoiseBiome() for WorldGenRegion by overriding the method.
3b45454 Port random ticking optimisation from Moonrise - Spottedleaf
I feel like publishing both would make the most sense here as it's the best of both worlds
I'd love to work on this if it hasn't been started by somebody else yet!
77fcb29 Apply incremental player/level saving patch - Spottedleaf
Shouldn't it continue instead of breaking?
9fd7710 Apply automatic regionfile header recalculation... - Spottedleaf
Thanks, I'll get to it some time in the following week(s)
b57b24d Do not try to stop main thread during watchdog ... - Spottedleaf
Actually there are 2 cases where recipes are used. One where you open the crafter gui, you have a crafting grid and result showing of what crafter will produce.
So in case I have custom item using lapis lazuli item id and I don't want this item to be convertable into blue dye I listen to PrepareItemCraftEvent and set result to null/air. This way player don't get confused about this item. So for crafter also if a player will place that item into crafter I don't want him to see blue dye in the result window in a gui.
Second thing, I have a simple recipe declared and inside the event I change the lore and components of resulting item stack, for crafting I use PrepareItemCraftEvent to change the result so that player can see what they shall craft. I also would want to see those changes reflected in crafter gui.
Those 2 cases won't be solved with just an event that triggers when crafter is powered and item is being crafted.
Discussion Category: Ideas
Okay yea, but those changes are purely visual then on your end.
As stated on the PR, there is a use for such an event, but it is going to need more work.
CrafterCraftEvent sounds like it solves all but your visual issues, which means we can merge this PR to progress to stable 1.21 and work on something for your plugin to modify the ephemeral result shown in the GUI later.
Discussion Category: Ideas
If we're talking about completelly bare minimum then I guess yeah, itฤ s enough for me to not block crafters on update, but not enough for me to say this can be closed.
Btw sorry for offtop, but while I have your attention could you look into #10973
It solves an issue with crafting recipes and is already tested by me that it works but for 2 weeks nothing went forward. Could you check into that PR and see if it can also be delivered?
Discussion Category: Ideas
Yea no worries I wasn't suggesting closing this. Yea the goal is bare minimum, just so shit doesn't explode. We can deliver and properly close this discussion once we are in the normal stable version lifecycle.
Discussion Category: Ideas
[PaperMC/Paper] New comment on pull request: #10990 Skip AI during inactive ticks for non-aware mobs
Does this check need to be expanded to for example Villager?
Unfortunately, in all of their wisdom, upstream has begun work on this event to.
Will monitor their progress, but presumably their PR will supersede this one.
I'll try my best to ensure all methods present on this PR will be in the upstream version too.
does this occour with just that simple code and no other plugin? I am suspecting that you have another plugin that hooks into message sending and does stuff, like something with placeholders or so.
Like I mentioned above, the same behaviour was observed on a completely different server with different plugins, with the only thing in common being Paper 1.21. Aside from Essentials, most of the plugins are custom made and pretty simple, nothing related to chat at all.
[PaperMC/Paper] New comment on pull request: #10990 Skip AI during inactive ticks for non-aware mobs
Yes, villagers needed the check as well - I've just added that as well as a NoAI check to Mobs as that has the same issue. Villagers are the only Mob that override inactiveTick, so everything else should be fine
Hello, This PR is eagerly awaited on our side, do we have an ETA concerning the merger? Today we have no other solution to this problem.
You can just build this fork if it is that important
We've been waiting for over 3 months... so we're doing without. It's really silly when the solution is right here. We're not going to have fun making forks of forks
Fixes #10744
Currently, on paper, when you add HIDE_ATTRIBUTES flag to an item, e.g. a diamond sword, it incorrectly still shows the "When in main hand 7 attack damage..." default attributes, which are supposed to be hidden.
On spigot, however, these default attributes are correctly hidden, upon investigation, the general-itemmeta-fixes patch breaks this functionality, This PR fixes the functionality and brings it back in line with spigot/pre 1.20.5 behaviour.
Note, on #10744 there is a comment stating that having empty attributes defined on the item overrides the default attributes, but from my testing this does not appear to be the case.
This was an intentional change. Have you tested this with non-armor items? (Those have special handling on the client to fallback to their default when empty attribute modifiers are defined)
This just relies on highly inconsistent behavior which seems to confuse everybody who ends up touching it.
Adding a component will override the default component, mojang has some logic that they scatter around which is smart enough in some cases to get the default values, but, there are many cases where they just don't, and so you end up with an item which will behave unpredictably in many cases. I think that the best solution here would be to allow people to explicitly opt into having an empty component, however, ItemMeta doesn't exactly handle that well and just further perpetuates the potential headaches of promising sane behavior around such a clugy API.
Armor was tested and worked fine, however, upon further investigation, behaviour for weapons is indeed inconsistent.
A workaround would be to send the empty attributes NBT only to the client, as client-side it doesn't cause any issues, since attributes appear to be server-sided, however, this will likely change due to https://bugs.mojang.com/browse/MC-272517
Expected behavior
Enchanting to work as normal.
Observed/Actual behavior
Wrong enchantments as seen in the attachment.
Steps/models to reproduce
Loading a world in 1.19.4
Upgrading it to the lastest.
Plugin and Datapack List
Via version, via backward
Afk detect, afk message, afk dum names, fast decay, unlock all recipes, coordinates hud, duraping, last death location, loyal items,
Paper version
This server is running Paper version 1.21-78-master@ef96a69 (2024-07-16T08:23:03Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-77-2cd8c46 (MC: 1.21)
Other
Also not only in the enchanting table, even villagers are messed up. The curse books aren't red in color, instead the mending book is. There is probably another book that I have yet to see which is also red.
Are you testing in creative mode?
That's not a Paper issue if you're on a different client version
fixes #11012
Should we maybe call BlockPlaceEvent in a cancelled state when a player tries placing blocks with spawn protection on? This could allow plugins to pick which blocks should be placeable at spawn.
[PaperMC/Paper] New comment on pull request: #10149 Add removal reason to EntityRemoveFromWorldEvent
Updated the PR to include the causes upstream added. Also moved the primary event call to CraftEventFactory#callEntityRemoveEvent, as using ServerLevel.EntityCallbacks#onTrackingEnd didn't provide the additional cause context, and that method isn't called on entity unload. The previous event call there was made to use a new INACCESSIBLE cause, for when the chunk an entity is in is made inaccessible (but prior to fully unloading).
There is not a removed set of data component types on CraftMetaItem, that should be used instead of including them in the unhandled patch to maintain only 1 places of information to be stored. This caused some issues with serialization. There is already logic in the deserializing constructor to move removed data components from the unhandled patch into the field, so this shouldn't cause any issues except changes to what serialized stacks with removed components look like.
a6ceda1 distinguish between null and empty map in API (... - Machine-Maker
I can confirm also, Shapeless recipes with custom ingredients just don't work.
Potential expansion to GlobalSoundEvent to include wither spawn sound and end portal open sound?
Expected behavior
Using Paper's BasicCommand API, I can define a permission string that is required for my command (https://github.com/PaperMC/Paper/pull/11047). When I check the permission of this command in the CommandMap, I expect it to return the value I defined.
Observed/Actual behavior
The result of Command#getPermission is null.
Steps/models to reproduce
This is the only code in my plugin:
public class BukkitTestPlugin extends JavaPlugin {
@Override
public void onEnable() {
getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, event -> {
final Commands commands = event.registrar();
commands.register("test", new BasicCommand() {
@Override
public void execute(@NotNull CommandSourceStack commandSourceStack, @NotNull String[] strings) {
commandSourceStack.getSender().sendMessage("Ran command");
}
...
506f165 Don't store removed components in multiple plac... - Machine-Maker
The issue this was created to address doesn't exist anymore as upstream removed their arbitrary limit on sign text length (2048).
Expected behavior
Zombie breaking wooden doors when trying to go to some place that is at the other side of the door
Observed/Actual behavior
already more than 1 minute and no zombie trying to break the door
Steps/models to reproduce
Go to a house with a wooden door, place a zombie outdoors, go outside and close the door
Plugin and Datapack List
nothing
Paper version
Paper 1.21 build #79
Other
No response
I'm on vacation for another 4 weeks so I won't be able to update the branch unfortunately.
Haven't tested in creative.
I'm on the same client version.
In general just want to put this here for more conversation but I feel like we shouldn't "half" support this stage like this. We need to completely deviate from the player inheritance stage in order to properly support this stage... (a disconnect event that occurs here, etc)
Having a player during this stage at all is flawed in itself, and is just due to a bad spigot representation. So we should move away from that in the future anyways.
I did say elsewhere about making Player more attached to the Network, but, we could maybe go for a more overarching thing of just offering a wrapper for the connection itself which lets you stem off into a configuring client, which lets you see methods only available in that phase, as well as a more general one that lets you get the player? not really sure how that would look, but, we also need to approach this for earlier stage stuff too, anyways, i.e. login plugin messaging API
The Player should be supported in PlayerSpawnLocationEvent which is in a location after vanilla creates ServerPlayer but before the game connection is created. So either way, the Player interface has to have some support for stuff before the game packet listener is created.
Unable to replicate this issue in build 81 using /summon zombie ~ ~ ~ {CanBreakDoors:1} in hard difficulty. Zombie under these conditions can break down doors.
remove timings patch as it's going to replaced with spark.
i heard that it's now deprecated and marked for removal in paper.
remove timings patch as it's going to replaced with spark. i heard that it's now deprecated and marked for removal in paper.
disregard this comment, this is not gonna happen as this will turned off as default
remove timings patch as it's going to replaced with spark. i heard that it's now deprecated and marked for removal in paper.
it is deprecated and turned off by default now, but it shouldn't be removed entirely yet, since there are people which may still want to use it/need to use it
Stack trace
Whenever I (Myself, ZeCarrotGamer) Join, the server shuts down. Doesn't happen for ANYONE else. I am in the Deep Dark at the time. This was relevant the last time I tried resolving the issue
Plugin and Datapack List
No Datapacks
No Plugins
No Mods
Actions to reproduce (if known)
Only happening on my server. I start my server like a normal day and log on. Go to an ancient city and all of a sudden get disconnected and welcome myself to the server crashing
Paper version
[21:23:29 INFO]: Checking version, please wait...
[21:23:30 INFO]: This server is running Paper version 1.20.6-148-ver/1.20.6@20f5165 (2024-07-02T15:37:33Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
You are running the latest version
Previous version: git-Pa...
Stack trace
https://pastes.dev/WR0v3ujEpe : ERROR
https://pastes.dev/G2Bg24qSRs : latest.log
Plugin and Datapack List
Actions to reproduce (if known)
No response
Paper version
[15:29:41] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]
[15:29:42] [ServerMain/INFO]: Loaded 1290 recipes
[15:29:42] [ServerMain/INFO]: Loaded 1399 advancements
[15:29:43] [Server thread/INFO]: Starting minecraft server version 1.21
[15:29:43] [Server thread/WARN]: ****************************
[15:29:43] [Server thread/WARN]: YOU ARE RUNNING THIS SERVER AS AN ADMINISTRATIVE OR ROOT USER. THIS IS NOT ADVISED.
[15:29:43] [Server thread/WARN]: YOU ARE OPENING YOURSELF UP TO POTENTIAL RISKS WHEN DOING THIS.
[15:29:43] [Server thread/WARN]: FOR MORE INFORMATION, SEE https://madelinemil...
Have also been unable to reproduce, @Alejomc26. Please ensure the difficulty is set to hard (/difficulty), as zombies breaking wooden doors only has a small chance of happening in hard/hardcore mode.
This patch adds an option to use a longer ticks-per-spawn for given mob types in chunks where previous spawn attempts have consecutively failed (e.g. spawnproofed chunks). The ticks-per-spawn and the number of failed attempts before they kick in are both configurable (the setting is disabled by default). The number of failed spawn attempts is stored with the chunk so it persists across unloads. As soon as a mob is able to spawn in a chunk, the failed spawn attempt counter resets and the chunk starts using the default ticks-per-spawn again.
This behaviour is useful on servers where players use mob farms. Mob farms typically require spawnproofing the surrounding chunks to improve rates, which causes the server to waste CPU cycles trying to find suitable spawn locations. By identifying suspected spawnproof chunks and throttling attempts at spawning mobs in them, it is possible to improve performance without noticeably affecting overall mob spawning behaviour.
I've been using a [s...
Friends who enter from Floodgate enter directly as normal users (.) there is no sign
Should also add a config option to disable spark.
Expected behavior
I expected no error.
Observed/Actual behavior
Steps/models to reproduce
I don't know.
Plugin and Datapack List
[15:53:51 INFO]: Server Plugins (59):
[15:53:51 INFO]: Paper Plugins:
[15:53:51 INFO]: - EconomyShopGUI
[15:53:51 INFO]: Bukkit Plugins:
[15:53:51 INFO]: - AdvancedBan, ArmorQualities, AuthMe, AutoCraft, BetterWhitelist, Bounties, Brewery, Chunky, ChunkyBorder, Citizens
[15:53:51 INFO]: CMILib, CoinsEngine, CoreProtect, CraftingStore, Craftorithm, CrazyAuctions, CrazyEnvoys, CustomCrops, DailyRewards, DecentHolograms
[15:53:51 INFO]: DeluxeCombat, DeluxeMenus, dynmap, EnchantableMending, Essentials, EssentialsChat, EssentialsSelectors, EssentialsSpawn, EssentialsWarpGUI, FastLogin
[15:53:51 INFO]: floodgate, FreeCoinFlip, Geyser-Spigot, GSit, Jobs, KauriVPN, LagFixer, Lands, LuckPerms, Multiverse-Core
[15:53:51 INFO]: NBTAPI, nig...
I do not see how this could happen outside of plugins messing with internals or messing with stuff concurrently
I can confirm this on my side. It seems to be a vanilla issue caused by slow internet connections; my server has bad internet speed to mojang's skin servers - the skin also failed to generate for me until I tried using a proxy to speed it up. Somehow this wasn't a issue before 1.20.6.
It seems I found the issue
<img width="387" alt="Screenshot 2024-07-17 at 10 23 42โฏAM" src="https://github.com/user-attachments/assets/d6c1d77c-1745-4f68-a844-1c8412672650">
As it also happened in 1.20.6, first dev builds didn't have the issue, it seems that a random patch is causing the issue.
You cannot reproduce the issue before 1.21 #51
But the issue present since 1.21 #52
Expected behavior
No errors and a clean reload.
Observed/Actual behavior
A ConcurrentModificationException.
Steps/models to reproduce
Start server
Reload until you see the error. ( it's at the bottom kinda )
Plugin and Datapack List
Plugins (all Bukkit) : FacilisCommon, MultiWorld and SkinsRestorer
Datapacks: vanilla (built-in), file/bukkit (world), bundle (feature), paper (built-in)
Paper version
[19:56:32 INFO]: Checking version, please wait...
[19:56:32 INFO]: This server is running Paper version 1.21-83-master@967f98a (2024-07-17T14:55:35Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-81-ceeb8c1 (MC: 1.21)
Other
I noticed that every time I start my server, reload it a couple of times ( because I am developing my own plugin ) and look at the console ( to check for bugs ), I see a ConcurrentModificationException with a number that increments every time I see the error ( not every tim...
I noticed that it also says something about commands? Maybe Paper just doesn't support Bukkit commands that well?
There is a long known issue in the logic for sending commands to clients async, this is generally harmless and afaik, there is already issues open for this (or, at least, it's known about)
There is a long known issue in the logic for sending commands to clients async, this is generally harmless and afaik, there is already issues open for this (or, at least, it's known about)
So, it's known about. But can it be resolved or at least suppressed? I like a clean console.
Also there aren't any issues about this specific method of getting it. ( but there are about it existing )
it's on my eternal todo list, however, I'm currently out of action as I just recently had eye surgery; I generally suggested that we just suppress and reshoot
00b949f Remove Moonrise utils to MCUtils, remove duplic... - Spottedleaf
This is generally a spigot issue, you need to call update() on the profile and then create the itemstack and do whatever in the response if you want to ensure that you properly populate the skull info, otherwise, spigot having made that async means that you enter a pretty tight race condition
b653276 Finish chunk tick iteration optimisation port f... - Spottedleaf
2df5bba Log throwable when failing to save chunk/poi/en... - Spottedleaf
44c3dd0 fix exact choice shapeless recipes (#10973) - Machine-Maker
This issue is likely caused by Multiverse-Core. Please consider uninstalling it. The keepSpawnInMemory configuration option in Multiverse-Core is forcibly set to true every time it loads. Previously, this could be suppressed by the keep-spawn-loaded: false option in Paper, but since Paper version 1.20.5 and above, this option has been removed, and the lingering issue with Multiverse-Core has re-emerged
Please try to reproduce without any plugins running, as electronicboy said it is more than likely caused by a plugin. You can read some helpful information on our docs related to troubleshooting!
d83d80a Updated Upstream (Bukkit/CraftBukkit/Spigot) - kennytv
[PaperMC/Paper] New branch created: upstream
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing
Bukkit Changes:
3a3bea52 SPIGOT-7829: Increase maximum outgoing plugin message size to match Vanilla intention 5cd1c8cb SPIGOT-7831: Add CreatureSpawnEvent.SpawnReason#POTION_EFFECT a8e278f0 SPIGOT-7827: Sync EntityPortalEvent with PlayerPortalEvent since non-players can now create portals 53729d12 Remove spurious ApiStatus.Internal annotation b9f57486 SPIGOT-7799, PR-1039: Expose explosion world interaction in EntityExplodeEvent and BlockExplodeEvent 7983b966 PR-1029: Trial changing a small number of inner enums to classes/interfaces to better support custom values
CraftBukkit Changes:
403accd56 SPIGOT-7831: Add CreatureSpawnEvent.SpawnReason#POTION_EFFECT 812761660 Increase outdated build delay
bed1e3ff6 SPIGOT-7827: Sync EntityPortalEvent with PlayerPortalEvent since non-players can now create portals 2444...
G'day @Carrot26,
This is a duplicate of https://github.com/PaperMC/Paper/issues/10022, and a fix was applied for 1.20.6+.
Granted, you were running an older build when you generated your world so the plugin linked in the aforementioned issue won't work for you yet, but the wonderful @lynxplay was very kind and said he'd bump it to work on 1.20.6 when he gets a chance. So keep an eye out for that, run the plugin and it should resolve your issue.
Can you please provide your entire latest.log?
So, upon further testing, I found out that this bug is really sketchy.
After I made the original post, I closed the server, along with my Minecraft client. ( I was on the server while this error was occurring)
So, after your reply, I fired up the server again ( because all the logs contained my custom plugin so I wanted to eliminate the possibility) and began testing and I realized that it doesn't happen when I'm not on the server ( or at least I didn't get it ). Then I restarted it (for a clean log) and logged on and after a couple reloads, it started happening again. Here's the log:
if there is no player online then there is nobody to send a commands packet to, and thus, the bug is not exposed. This is only an issue when something mutates the command system late when people are being sent info about commands
Do we want to just drop support for the enum bukkit.yml setting now since we weren't planning for asm-utils to support it?
if there is no player online then there is nobody to send a commands packet to, and thus, the bug is not exposed. This is only an issue when something mutates the command system late when people are being sent info about commands
Can I do anything about it?
Similar concept, but different implementations targeted at different problems. The other PR relates to spawn attempts that are failing due to plugins cancelling or aborting the PreCreatureSpawnEvent, while this one primarily relates to chunks where mobs have repeatedly failed to spawn for other reasons (e.g. no suitable spawning locations)
Why should Spark be bundled with Paper? It would be much better if the admin could choose to install Spark as a separate plugin when needed, which is how it's currently done. If Spark is bundled with Paper, updating Spark would require updating Paper too, which isn't always feasible due to the inability to upgrade to a new version (for example, some are still using the 1.20.4 or 1.20.6 core instead of 1.21).
Discussion Category: Ideas
The bundled version of spark will be able to be updated separately. More details will be available soon.
Discussion Category: Ideas
@ruViolence see
Discussion Category: Ideas
Expected behavior
ChunkLoadEvent and ChunkUnloadEvent should fire regularly as chunks load and unload.
Observed/Actual behavior
Starting in Paper 1.21 build 84 (Moonrise changes), ChunkLoadEvent and ChunkUnloadEvent do not fire at all.
Steps/models to reproduce
Test plugin:
@EventHandler
public void onChunkLoad(ChunkLoadEvent event) {
// Does not fire
getLogger().info("Chunk load " + event.getChunk().getX() + " " + event.getChunk().getZ());
}
@EventHandler
public void onChunkUnLoad(ChunkUnloadEvent event) {
// Does not fire
getLogger().info("Chunk UNload " + event.getChunk().getX() + " " + event.getChunk().getZ());
}
@EventHandler
public void onChunkLoadPlayer(PlayerChunkLoadEvent event) {
// Works as expected
getLogger().info("Chunk load PLAYER " + event.getChunk().getX() + " " + event.getChunk().getZ());
}
@EventHandler
public void onChunkU...
raising concerns like this is exactly why this discussion exists tho. we think that we have considered everything, but we may be wrong and we missed something, so please keep em coming!
Discussion Category: Ideas
dd11ef8 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#... - kennytv
[PaperMC/Paper] branch deleted: upstream
+1, independently tested this for build #89 after a bug report from a user. My local was on #57 and the problem was not present there. It's a big one, hope it will get fixed soon.
If the situation is true, according to your description, it would lead to the failure of the server's WorldGuard world protection, which indeed seems to be quite serious.
description
I like the general concept of the patch ๐
Keeping this on the chunk presumably also makes sense, I think there is some discussion to be had regarding EnumMap and object Long usage, but beyond that, just some minor nitpicks.
Configuration diff goes into the Paper Configurations patch.
Am I missing something here or is this value arbitary?
In which case, imo, it should be an IntOr.Disabled.
Is there a point in e.g. Int2Long here?
May also just be premature tho. Sad fastutil hasn't added Enum2LongMaps yet.
The issue comes from the following commit: https://github.com/PaperMC/Paper/commit/00b949f. It's not easy to see the actual changes there since everything is packed into a single diff file, but there was a lot of files that were deleted and added, so there's a chance that more changes could have been overlooked..
fixes #11103
Not too sure on what the best map is too be honest. There seems to be some use of Object2LongOpenHashMap for enum keys in other parts of the code - maybe that?
I've just changed it to use an array which I think is probably the simplest approach, let me know if you think there's a better way
Idk, didn't have to change it just yet, I was hoping for some feedback from other team members ๐
But yea, this certainly works and avoids unboxing nicely. Thank you :)
Expected behavior
Usually, you would be able to get and set items to/from a config and they should work as normal items and be saved by minecraft
Observed/Actual behavior
ArmorStands with any meta (name only, lore only) cannot be saved by minecraft IF the steps below are done.
The issue seems to lie in the deserialized item having a nbt compound called "entity-tag". This tag does not seem to be saveable by minecraft nbt. /paper dumpitem also errors for this deserialized item.
Steps/models to reproduce
Steps to replicate
- Get an armorstand with any meta (name changed or any lore)
- Serialize using Bukkit(via config, BukkitObjectOutputStream etc)
- Deserialized using Bukkit(the opposite of how you serialized)
- Add this deserialized item to inv
- This item is unsaveable, causing an error. Inventories with this item, chunks etc won't save
Plugin and Datapack List
Not necessary.
Paper version
version 1.21-50-master@20889d0 (2024-07-10T16:28:03Z...
The entity-tag paper emits does not include the id, eventho it should.
This is (from my first look) not an issue on other ItemMeta implementations, because they do not allow messing with the entity tag directly.
After teleporting, ItemFrame interactions are often disrupted due to a variety of potential issues within the game mechanics or coding through Cashmachine777 environment. This could be caused by the game failing to properly update the entity's position and status post-teleportation.
Expected behavior
On Spigot, my command works:
>version
[10:31:48] [Server thread/INFO]: This server is running CraftBukkit version 4195-Spigot-fcd94e2-f057cf4 (MC: 1.20.6) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
[10:31:48] [Server thread/INFO]: Checking version, please wait...
[10:31:49] [Thread-8/INFO]: You are 33 version(s) behind
>test command1
[10:31:54] [Server thread/INFO]: You ran the command1 subcommand with arguments []
>test command2
[10:31:58] [Server thread/INFO]: You ran the command2 subcommand with arguments []
>test command3
>test
>test command1 hello
[10:32:46] [Server thread/INFO]: You ran the command1 subcommand with arguments [hello]
>test command1 hello world
[10:32:49] [Server thread/INFO]: You ran the command1 subcommand with arguments [hello, world]
Observed/Actual behavior
On Paper, when my plugin enables, this exception occurs:
[10:36:14 INFO]: [BukkitTestPlugin] Enabling BukkitTestPlugin v1.0-SN...
That implementation class is not explictly considered API, and now solely exists as a wrapper API for the internal command system to maintain legacy compt.
[PaperMC/Paper] New branch created: fixes/armor-meta
51ec150 Migrate ArmorStand meta to using entity tag - electronicboy
Our handling of this class causes some headaches due to ItemMeta being lossy, we can double patch this by properly storing the data we care about, there is still some stuff to be addressed, i.e. we really should ensure that the entity tag is stored to the tag properly
TODO: actually, we should actually just serialise the entity tag directly as b64
If it's not intended to be Spigot API, then why is it in the spigot-api module? I would expect it to be placed in spigot-server like CraftCommandMap if it wasn't intended to be accessible. As shown in the example plugin, I think it is a useful part of the API, making it easy to implement sub-commands in a way that works on Spigot.
I believe Paper could still provide access to this part of Spigot API like so:
public class SimpleCommandMap implements CommandMap {
// Old constructor
public SimpleCommandMap(Server server) {
this(server, new HashMap<>());
}
// New constructor added by https://github.com/PaperMC/Paper/pull/8235
// Paper start
@org.jetbrains.annotations.ApiStatus.Internal
public SimpleCommandMap(@NotNull final Server server, Map<String, Command> backing) {
this.knownCommands = backing;
// Paper end
this.server = server;
setDefaultCommands();
}
}
I've heard that Pa...
https://github.com/PaperMC/Paper/pull/11107
Pull request by electronicboy addressing this.
Classing beginning with "Simple" are implementation classes, see the javadoc description
Implementation classes. Concrete implementation classes packaged with Bukkit (eg those beginning with Simple) are not API. You should access them via their interfaces instead.
Bundling implementation inside of the api does not explicitly mean that it's intended for plugin devs to poke at it, this was not a use case we ever expected anybody to be doing.
This was explicitly a case of bukkit bundling their command system inside of the API to have a simple implementation of it existing around for implementers of the API to use.
Classing beginning with "Simple" are implementation classes, see the javadoc description
Ahhh, thanks for pointing that out. I didn't see any mention of that in the javadocs for SimpleCommandMap itself (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/command/SimpleCommandMap.html), but I did find that note on the main page (https://hub.spigotmc.org/javadocs/bukkit/index.html).
2b79f32 always populate entity id tag when creating fre... - electronicboy
[PaperMC/Paper] New branch created: aaaaa
[PaperMC/Paper] branch deleted: basiccommand-builder
[PaperMC/Paper] branch deleted: aaaaa
5874052 Split rewriting flag into `paper.disableOldApiS... - kennytv
[PaperMC/Paper] New branch created: commodore-flag
you will need to wait until we patch it, or, don't register commands outside of the expected lifecycle if you're a dev
[PaperMC/Paper] New branch created: better-done-timer
Previously it would only show the world load time which is misleading
[PaperMC/Paper] New branch created: feat/bootstrap
[16:24:06 INFO]: [bootstrap] Running Java 21 (OpenJDK 64-Bit Server VM 21.0.2+13-LTS; Azul Systems, Inc. Zulu21.32+17-CA) on Windows 11 10.0 (amd64)
[16:24:06 INFO]: [bootstrap] Loading Paper 1.21-DEV (2024-07-18T23:24:05Z) for Minecraft 1.21
[16:24:13 INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]
[16:24:15 INFO]: Loaded 1290 recipes
[16:24:15 INFO]: Loaded 1399 advancements
[16:24:16 INFO]: Starting minecraft server version 1.21
[16:24:16 INFO]: Loading properties
ะัะตะฝั ัะธะปัะฝะพ ะฝัะฐะฒะธัััั
Discussion Category: Ideas
Expected behavior
be nomal(
Observed/Actual behavior
[14:21:51 WARN]: Failed to validate message acknowledgements from XXX
[14:21:51 INFO]: XXX lost connection: Chat message validation failure
[14:21:51 INFO]: XXX left the game
Steps/models to reproduce
When player press "T" to send something
he will be kicked because of Chat message validation failure
Plugin and Datapack List
Plugins: CoreProtect, GrimAC, GSit, ImageFrame, LuckPerms, MOTD, MultiLogin, Multiverse-Core, Multiverse-NetherPortals, Multiverse-Portals, nAntiBot, OpeNLogin, Orebfuscator, PlaceholderAPI, PlugManX, Points, ProtocolLib, SkinsRestorer, spark, *TPAPro, UltraSetHome, ViaBackwards, ViaRewind, ViaRewind-Legacy-Support, ViaVersion, Vulcan
Datapack: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
Paper version
This server is running Paper version 1.21-93-master@d08e8d1 (2024-07-18T22:39:15Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running th...
Can you attempt to replicate this without plugins please?
Sending chat messages works fine for me on 1.21.
Closing this as stale.
Closing this as presumably completed.
Closing this as stale, without reproduction steps we cannot investigate this further, sorry.
Closing this in favour of #11105
https://github.com/PaperMC/Paper/commit/2a392767942799bc93a70a8698a0ef4ca7b8b6f9 has been merged.
As described in the javadoc, sadly upstream decided to also propose this event.
We preemptively ported their proposed changes into an experimental event.
If everything goes well, when they merge said PR and nothing changed, we can just drop the experimental annotation.
However, as we do not have control over what upstream does, they may change some methods around, in which case, there will be a breaking change on paper. This preliminary event pull should enable everyone here to do the bare minimum (see discussion above, we still need to work on a way to also fix the visuals in the CraferMenu), but I'd heavily suggest following the dev-announcment discord channel to get notified if we have to pull breaking changes to this event down the line.
Discussion Category: Ideas
The We recommend installing the spark profiler as a replacement: warning in the timings patch needs updating
It also currently throws exceptions on stop (if you have any other plugin installed) due to a bukkit service being registered with a null plugin, presumably within spark
Should try catch the runnable with logging instead of breaking on main, just in case
Don't forget to update spark before merging ๐
You are 13 builds out of date, make sure to update. If you still run into this issue on build 94, let us know on the issue.
75af62b Split rewriting flag into `paper.disableOldApiS... - kennytv
[PaperMC/Paper] branch deleted: commodore-flag
entityTag can be null here and i think a null check should be enough
Expected behavior
Follows up of https://github.com/PaperMC/Paper/issues/10787 for other item meta implementation as well.
Affected impls: CraftMetaTropicalFishBucket (variant), CraftMetaAxolotlBucket (variant).
Observed/Actual behavior
N/A
Steps/models to reproduce
N/A
Plugin and Datapack List
N/A
Paper version
N/A
Other
N/A
Expected behavior
When the ProjectileLaunchEvent is canceled, the inventory item responsible for the projectile should remain in the player's inventory and not be removed. This behavior should be consistent with previous versions, such as 1.20.4, where the item is not removed if the event is canceled.
Observed/Actual behavior
In Paper version 1.20.6, the inventory item responsible for the projectile is removed even if the ProjectileLaunchEvent is canceled. Additionally, the item appears to be removed before the event is called, which differs from the expected behavior seen in earlier versions like 1.20.4.
Steps/models to reproduce
Steps to Reproduce:
- Set up a Paper server running version 1.20.6.
- Implement the following code to handle the ProjectileLaunchEvent:
public class ProjectileLaunchListener implements Listener {
@EventHandler
public void onProjectileLaunch(ProjectileLaunchEvent event) {
event.setCancelled(tr...
Adds API for pretty much everything that was on EnchantmentRegistryEntry to Enchantment.
In nms.CustomRecipe#toBukkitRecipe, set the category and group of the recipe
Stack trace
---- Minecraft Crash Report ----
// There are four lights!
Time: 2024-07-19 16:52:54
Description: Exception ticking world
java.lang.ClassCastException: class org.bukkit.craftbukkit.inventory.CraftComplexRecipe cannot be cast to class org.bukkit.inventory.CraftingRecipe (org.bukkit.craftbukkit.inventory.CraftComplexRecipe and org.bukkit.inventory.CraftingRecipe are in unnamed module of loader java.net.URLClassLoader @7857fe2)
at net.minecraft.world.level.block.CrafterBlock.dispenseFrom(CrafterBlock.java:169)
at net.minecraft.world.level.block.CrafterBlock.tick(CrafterBlock.java:94)
at net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.tick(BlockBehaviour.java:1221)
at net.minecraft.server.level.ServerLevel.tickBlock(ServerLevel.java:1235)
at net.minecraft.world.ticks.LevelTicks.runCollectedTicks(LevelTicks.java:192)
at net.minecraft.world.ticks.LevelTicks.tick(LevelTicks.java:89)
at net.minecraft.server.level.ServerLevel.tick(Se...
Done, also removed some diff not needed.
Expected behavior
When cancelling the entity unleash event with the reason distance, nothing should happen to the leash
It should stay attached to the entity and should not be dropped
Observed/Actual behavior
The leash is removed (not only visually: getting the leash holder afterward returns null) but it does not drop
Steps/models to reproduce
- cancel the EntityUnleashEvent
- go as far that the entity should unleash for example the reason distance
Plugin and Datapack List
[19:01:27 INFO]: Server Plugins (5):
[19:01:27 INFO]: Paper Plugins:
[19:01:27 INFO]: - Commander, HologramAPI, Lobby, Tweaks
[19:01:27 INFO]: Bukkit Plugins:
[19:01:27 INFO]: - LuckPerms
[19:01:39 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
[19:01:39 INFO]: There are no more data packs available
Paper version
This server is running Paper version 1.21-97-master@e71c1df (2024-07-19T11:57:42Z) (Implementing API ...
A build with a fix is published at https://github.com/PaperMC/Paper/pull/11114, should be merged shortly ๐
968bdeb Make CraftComplexRecipe extend CraftingRecipe (... - lynxplay
I'm getting this issue whenever I join on a client running an older Minecraft version (server:1.21 Client:1.20.6) Which is really annoying because some mods people use don't support the newest version
we do not support protocol hacks and have 0 control over the behavioral issues that they induce
[PaperMC/Paper] New branch created: done-message-take-3
what paper now shows as level loading time is the time displayed by vanilla or spigot in the 'done' message
the time in the done message is now the actual time since the servers Main class was initialized
[PaperMC/Paper] branch deleted: done-message-take-3
consider using readNBytes or readFully? I used the similiar method for deserializing item arrays and, for long byte sequences, read() failed. I fixed the issue by doing
final byte[] itemBytes = input.readNBytes(length);
Expected behavior
lootables working
Observed/Actual behavior
lootables not working
Steps/models to reproduce
use lootables (i used a custom end_city_treasure lootable)
Plugin and Datapack List
21:52:20 [INFO] Server Plugins (61):
21:52:20 [INFO] Paper Plugins:
21:52:20 [INFO] - CrazyCrates, mServerLinks, RoseStacker
21:52:20 [INFO] Bukkit Plugins:
21:52:20 [INFO] - AdvancedEnchantments, ajLeaderboards, AntiRaidFarm, AuraSkills, ChatSentry, Chunky, ChunkyBorder, CommandWhitelist, CompactPurpur, CoreProtect
21:52:20 [INFO] DecentHolograms, DoubleDoors, EntityDetection, Essentials, EssentialsDiscord, EssentialsSpawn, FarmControl, floodgate, Geyser-Spigot, GSit
21:52:20 [INFO] InteractiveChat, InventoryRollbackPlus, InvSeePlusPlus, JetsAntiAFKPro, Lands, LiteBans, LoneLibs, LPC, LuckPerms, MiniMOTD
21:52:20 [INFO] Multiverse-Core, NBTAPI, PlaceholderAPI, Plan, ProtocolLib, PvPManager, Quests, QuickShop-Hikari, SayanVanish, Shopkeepers
21:52:20 [INFO] ...
Joining in on the chorus that I would love to see this merged so we can mount passengers to players without breaking every plugin using Player#teleport
use this command to spawn in a chest with the lootable faster :D
/setblock ~ ~ ~ minecraft:chest{LootTable:"minecraft:chests/end_city_treasure"}
The datapack is simply not updated to 1.21.
It is also incorrectly packaged, you have a top level folder named end_city_treasure-lootable in there.
Additionally, the folder is called loot_table not loot_tables.
With the respective changes, the below pack works fine for me in modifying the loot table ๐
end_city_treasure-lootable.zip
Timings or Profile link
https://spark.lucko.me/wAeTTxWFDM
Description of issue
Hello, I need help about a little lag in my 1.20.4 server. When i'm playing and pick up some items, these take seconds to appear in the inventory. I need to open my inventory and sometimes even click in the inventory to make appear the items picked.
Plugin and Datapack List
Server Plugins (59):
Paper Plugins:
EconomyShopGUI-Premium
Bukkit Plugins:
ActivityRewarder, AuraSkills, AutoBroadcast, BetterRTP, BetterStructures, BlueBridgeCore, BlueBridgeGP, BlueBridgeWG, BlueMap, BlueMap-BannerMarker
BlueMapFloodgate, BlueMapPlayerControl, Chunky, ChunkyBorder, CMILib, CommandPanels, CoreProtect, DeathChest, DecentHolograms, EliteMobs
Essentials, EssentialsChat, EssentialsSpawn, ExecutableItems, ExtraRecipes, floodgate, Geyser-Spigot, GPExtension, GPFlags, GriefPrevention
GSit, Hurricane, InteractionVisualizer, Jobs, JobsReborn-PatchPlaceBreak, LevelledMobs, LightAPI, LightAPI...
Have you tested this behaviour without your plugins installed?
There is a lot of stuff on your server that could be doing things paper has 0 control over.
I think this fix has presented another problem. Now the crash also happens with a regular workbench.
https://paste.gg/p/anonymous/f4ab6227bf4a406bb788ee4e148b1f73
Refresh dependencies, you are presumably running the server with an outdated paper-api dependency.
Resolved by 1595e4a
It seems that the bug is still present [today](#paper-help message)
https://mclo.gs/30wzd87
[12:36:35] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
--
130 | [12:45:02] [Thread-2/INFO]: Stopping server
131 | [12:45:02] [Thread-2/INFO]: [SkinsRestorer] Disabling SkinsRestorer v15.2.0
132 | [12:45:02] [Thread-2/INFO]: [WorldEdit] Disabling WorldEdit v7.3.4+6823-6263244
133 | [12:45:02] [Thread-2/INFO]: Unregistering com.sk89q.worldedit.bukkit.BukkitServerInterface from WorldEdit
134 | [12:45:02] [Thread-2/INFO]: [Veinminer] Disabling Veinminer v2.1.0
135 | [12:45:02] [Thread-2/INFO]: Saving players
136 | [12:45:02] [Thread-2/WARN]: Asynchronous Save Players! Blocking thread until it returns
137 | java.lang.IllegalStateException: null
138 | at io.paper...
61f2c73 Fix isArmorStandEmpty not checking nullability - electronicboy
5fee9c6 Move configuration option to a system property - kashike
Wouldn't something like PlayerFailTeleportEvent make more sense
It would only be called if the player is not teleported unlike a pre-event
Also it would match the naming of the PlayerFailMoveEvent
Wouldn't something like
PlayerFailTeleportEventmake more sense
It would only be called if the player is not teleported unlike apre-event
Also it would match the naming of thePlayerFailMoveEvent
Purpur already has an event like that and for my use case, it would work too, but I don't see why we couldn't have this event, too
A pre event in this case literally makes no sense when the teleport event is triggered anyway
Just calling an event in case of failure makes more sense
[PaperMC/Paper] branch deleted: feat/bootstrap
would be a nice change if the default /tps will now display the spark tps since it is more detailed.
currently you have to use the /spark tps to see the spark results.
Discussion Category: Ideas
Expected behavior
Timings to not be enabled when the config is set to disable it.
Observed/Actual behavior
Timings is still enabled
Steps/models to reproduce
- Download fresh server
- Start server
- See
Timings resetat the end of startup - Check config to see if its disabed
Plugin and Datapack List
None
Paper version
[14:17:28 INFO]: This server is running Paper version 1.21-103-master@aa3b356 (2024-07-20T17:56:20Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-102-aa3b356 (MC: 1.21)
Other
That message doesn't mean that it's enabled, just that some reset logic was ran, run /timings report to see if it's actually enabled or not
Ah, I assumed it being disabled would entirely disable it. Gotcha, thanks!
Is your feature request related to a problem?
After adding Spark under Paper, I noticed that the tab for viewing plugins is missing. Additionally, the TPS command no longer opens Spark by default.
Describe the solution you'd like.
nee in "Is your feature request related to a problem?"
Describe alternatives you've considered.
see in "Is your feature request related to a problem?"
Other
No response
Discussion Category: Ideas
[PaperMC/Paper] Issue opened: #11124 Plugin classes are not properly located when looked up by spark
Discussed in https://github.com/PaperMC/Paper/discussions/11123
<div type='discussions-op-text'>
<sup>Originally posted by Draghonir July 20, 2024</sup>
9aea240 Properly lookup plugin classes when looked up b... - kashike
We're aware that placeholders do not currently work with the bundled spark profiler - work is in progress to resolve this.
Discussion Category: Ideas
No i didn't test it without plugins and I do not know how to understand all the stats on spark test. I was wondering if there is clue about the lag, and what can do this type of lag
If you're wanting to use placeholders with the bundled spark version, update to build 105 of Paper 1.21, and install https://api.extendedclip.com/expansions/spark/.
Discussion Category: Ideas
Probably won't happen (not anytime soon at least). The output of the TPS command is one of those things that gets parsed by a lot of hosts & tools, so changing it to be the default could break stuff. a good solution in the meantime is to use the commands.yml file to specify it yourself.
Discussion Category: Ideas
Is your feature request related to a problem?
With the recent bundling of spark, I think it would be beneficial for the /tps command to redirect to /spark tps for a more informative output. This was mentioned in the closed discussion #11123, unsure on whether it was rejected.
Describe the solution you'd like.
/tps to output /spark tps
Describe alternatives you've considered.
N/A
Other
No response
Discussion Category: Ideas
This is mentioned in https://github.com/PaperMC/Paper/discussions/10565#discussioncomment-10103482
Discussion Category: Ideas
My bad
Discussion Category: Ideas
I have updated to Powershell 7, but still having the same issue. I am a newb and not sure where to put the
-Djdk.console=java.base (i tried putting it in the start.bat file but that didn't work)
This seems to be a Powershell 5 specific issue. The console is working fine with the good old cmd.exe, and it also works without any issues with Powershell 7.
Seems to be caused by this JDK change. As a workaround, starting the server with
-Djdk.console=java.baseto revert to the old JDK behaviour fixes the issue. I would recommend just using PS7 though, its much nicer anyways.
For the record I'm not using powershell. I am in fact using good old cmd.exe
2daaa28 Deprecate more Timings things for removal - kashike
[PaperMC/Paper] New branch created: feature/more-timings-deprecations
also updates the example versions to 1.21 with the new format
As an update, this is still broken via:
Paper 1.21 Build 101
Windows Server 2022 cmd.exe
Java 22.0.2
3a47518 Deprecate more Timings things for removal (#11126) - kashike
[PaperMC/Paper] branch deleted: feature/more-timings-deprecations
Expected behavior
Normally the Entity#setTarget method should override/untarget the current target of a mob
Observed/Actual behavior
In the current state this method is not setting the target due the mob memory(brain + MemoryModuleType.ATTACK_TARGET) which still keeps the target.
- [ ]
Steps/models to reproduce
- Create a mob (a piglin for example)
- Let the piglin targetting you
- After some time (BukkitScheduler) or conditions try to set the target on "null"
- The mob is still attacking you and the target has not been updated!
Plugin and Datapack List
None
Paper version
This server is running Paper version git-Paper-461 (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: b600140)
You are 36 version(s) behind
Download the new version at: https://papermc.io/downloads/paper
Previous version: 1.20.6-130-5d8e53d (MC: 1.20.6)
Other
Im not sure if this is a possible bug, just wanted to mention this behavior.
You can get a...
Is your feature request related to a problem?
Paper's anti-xray has problems with client side lag as well as other problems due to how it loads. Basically if a client is lagging loading chunks paper will think it is trying to xray and will display a mess of those blocks. Since the client has to load so many more block faces it lags even more causing a higher chance of this turning into a negative feedback loop. Throw in a laggy server as well and you run into even more problems. Paper is supposed to be the best server software out there when it comes to performance so this lack of care for client side performance is a problem.
Describe the solution you'd like.
The Orebfuscator Plugin solves these problems and more. However, its features could also be implemented separately without adding in the whole plugin itself. Orebfuscator has dynamic block visibility and has a ton of [configuration options](https:/...
Discussion Category: Ideas
There is no processing of what you can see, it simply mangles all hidden blocks, so this doesn't have anything to do with a laggy server or client. If you use the strongest mode, that means the client needs to load a lot of different types of blocks.
Most of what you described at the bottom we already have, see https://docs.papermc.io/paper/anti-xray for more info, otherwise you should bring up specific feature suggestions separately
Discussion Category: Ideas
aa36ae6 Fix EntityUnleashEvent cancellation on distance... - notTamion
what do you mean by extra diff? make it into a new patch?
Didn't realize the removal of the deprecation notice & annotation was intentional
Expected behavior
Cancelling ProjectileHitEvent of an arrow shouldn't affect its next target
Observed/Actual behavior
Once ProjectileHitEvent of an arrow with piercing has been cancelled, the next hit entity doesn't hurt at all
On AbstractArrow.java:
@Override
public ProjectileDeflection preHitTargetOrDeflectSelf(HitResult hitResult) {
if (hitResult instanceof EntityHitResult entityHitResult && this.hitCancelled && this.getPierceLevel() > 0) {
if (this.piercingIgnoreEntityIds == null) {
this.piercingIgnoreEntityIds = new IntOpenHashSet(5);
}
this.piercingIgnoreEntityIds.add(entityHitResult.getEntity().getId());
}
return super.preHitTargetOrDeflectSelf(hitResult);
}
this.hitCancelled is checked to add the hit entity to piercing-ignoring entities, but it's BEFORE super.preHitTargetOrDeflectSelf
On Projectile.java:
public ProjectileDeflection preHitTargetOrDeflectSelf(HitResult m...
Expected behavior
I would expect the links to stay after booting the server
Observed/Actual behavior
In the process of loading the server, the remapper deleted any symbolic link using the .jar extension
Steps/models to reproduce
make a symbolic link to a plugin used by the server
(exemple : ln -s /home/ubuntu/minecraft/shared/Citizens.jar /home/ubuntu/minecraft/hub/Citizens.jar )
start the server
Plugin and Datapack List
Not really related to pl or dp but here :
[14:32:11 INFO]: Bukkit Plugins: (25): [14:32:11 INFO]: - Citizens, DecentHolograms, DeluxeMenus, Essentials, EssentialsSpawn, FastAsyncWorldEdit, Infiniteannouncements, IP, ItemJoin, ItemsAdder [14:32:11 INFO]: LoneLibs, LPC, LuckPerms, ModelEngine, PlaceholderAPI, *PlayTime, PluginPortal, ProtocolLib, SkinsRestorer, TAB [14:32:11 INFO]: Vault, ViaBackwards, ViaVersion, WorldEditSelectionVisualizer, WorldGuard
`[14:32:45 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], ...
Expected behavior
No Error
Observed/Actual behavior
It have this error:
[12:24:42 ERROR]: [DirectoryProviderSource] Error loading plugin: java.lang.IllegalArgumentException: Directory 'plugins/.paper-remapped/FRFly.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/FRFly.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:86) ~[paper-1.21.jar:1.21-106-3a47518]
at io.papermc.paper.plugin.provider.source.DirectoryProviderSource.registerProviders(DirectoryProviderSource.java:52) ~[paper-1.21.jar:1.21-106-3a47518]
at io.papermc.paper.plugin.provider.source.DirectoryProviderSource.registerProviders(DirectoryProviderS...
infos are about a purpur server but it's a paper issue. I will reupload infos from a paper test server but I really don't think it's necessary
My testing server is primarily a server using symlinked jars and I've never had such an issue
Duplicate of #6862
The problem here is that newer mobs use a much different system for this stuff rather than just an field stored on the entity, there are more data points which need to be handled to properly manage the entities and their state without shotgunning side effects
My testing server is primarily a server using symlinked jars and I've never had such an issue
Here is my logs on a true papermc server
`> version
[12:51:12 INFO]: Checking version, please wait...
[12:51:12 INFO]: This server is running Paper version 1.21-107-master@aa36ae6 (2024-07-21T10:39:28Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-2247-39617d5 (MC: 1.21)
pl
[12:51:14 INFO]: Server Plugins (12):
[12:51:14 INFO]: Bukkit Plugins:
[12:51:14 INFO]: - Datapack_reload, Essentials, EssentialsSpawn, LoneLibs, LPC, LuckPerms, PlotSquared, ProtocolLib, Tweakin, ViaBackwards
[12:51:14 INFO]: ViaVersion, WorldEdit
datapack list
[12:51:19 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
[12:51:19 INFO]: There are no more data packs available`
once a design choice has been made i this will be fixed in https://github.com/PaperMC/Paper/pull/10804
Expected behavior
Calling ArmoredHorseInventory#setArmor sets the body armor for horses/llamas.
Observed/Actual behavior
No effect. Armor isn't set for horses, decor item isn't set for llamas.
Steps/models to reproduce
A simple plugin with the following code:
Player player = ...;
Location location = player.getLocation();
World world = player.getWorld();
// Spawns with no armor
world.spawn(location, Horse.class, horse -> {
horse.customName(Component.text("Armor", NamedTextColor.GREEN));
horse.getInventory().setArmor(ItemType.DIAMOND_HORSE_ARMOR.createItemStack());
});
// Spawns with armor
world.spawn(location, Horse.class, horse -> {
horse.customName(Component.text("Equipment", NamedTextColor.GREEN));
horse.getEquipment().setItem(EquipmentSlot.BODY, ItemType.DIAMOND_HORSE_ARMOR.createItemStack());
});
Reproduces the issue.
Plugin and Datapack List
Just a test plugin with the code provided earlier in a command....
Please use the discord for support, this is often going to be something down to mispackaging of the plugin jar
This is related to https://github.com/PaperMC/Paper/pull/11028, getter doesn't work too. And it's a bit weird that the inventory size of the camel / llama without chest is 2 and not 1. The result of InventoryClickEvent#getSlot is inconsistent for those two cases too llama return 1 and camel return 0. It's also strange that getSaddle/setSaddle is exposed for the llama since they can't hold one.
Expected behavior
No errors in console.
Observed/Actual behavior
[11:05:18] [Server thread/ERROR]: [ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder] Failed to save entity data (371,245) in world 'mining'
net.minecraft.ReportedException: Saving entity NBT
at net.minecraft.world.entity.Entity.saveWithoutId(Entity.java:2565) ~[paper-1.21.jar:1.21-106-3a47518]
at net.minecraft.world.entity.Entity.saveAsPassenger(Entity.java:2383) ~[paper-1.21.jar:1.21-106-3a47518]
at net.minecraft.world.entity.Entity.saveAsPassenger(Entity.java:2369) ~[paper-1.21.jar:1.21-106-3a47518]
at net.minecraft.world.entity.Entity.save(Entity.java:2399) ~[paper-1.21.jar:1.21-106-3a47518]
at ca.spottedleaf.moonrise.patches.chunk_system.level.entity.ChunkEntitySlices.saveEntityChunk0(ChunkEntitySlices.java:116) ~[paper-1.21.jar:1.21-106-3a47518]
at ca.spottedleaf.moonrise.patches.chunk_system.level.entity.ChunkEntitySlices.saveEntityChunk(ChunkEntitySlices.java:94...
Expected behavior
No errors.
Observed/Actual behavior
Many of our plugins are shooting off the following:
[14:14:00] [Server thread/ERROR]: Could not pass event PlayerTeleportEvent to WorldGuard v7.0.11-SNAPSHOT+2284-c6fbfb8
java.lang.NullPointerException: null
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:903) ~[guava-32.1.2-jre.jar:?]
at worldedit-bukkit-7.3.5-SNAPSHOT-dist.jar/com.sk89q.worldedit.bukkit.BukkitAdapter.adapt(BukkitAdapter.java:224) ~[worldedit-bukkit-7.3.5-SNAPSHOT-dist.jar:?]
at worldguard-bukkit-7.0.11-SNAPSHOT-dist.jar/com.sk89q.worldguard.bukkit.listener.WorldGuardPlayerListener.onPlayerTeleport(WorldGuardPlayerListener.java:361) ~[worldguard-bukkit-7.0.11-SNAPSHOT-dist.jar:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor104.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:?]
at co.aikar.ti...
Expected behavior
Auto-save behaves normally and works without causing the server to hang.
Observed/Actual behavior
The server hangs for upwards of 10 seconds, sometimes up to 30 which causes players to time out.
Steps/models to reproduce
Run a server for long enough for it to auto-save.
[18:35:32 ERROR]: --- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH - 1.21-DEV-fe42d87 (MC: 1.21) ---
[18:35:32 ERROR]: The server has not responded for 10 seconds! Creating thread dump
[18:35:32 ERROR]: ------------------------------
[18:35:32 ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
[18:35:32 ERROR]: ------------------------------
[18:35:32 ERROR]: Current Thread: Server thread
[18:35:32 ERROR]: PID: 39 | Suspended: false | Native: false | State: RUNNABLE
[18:35:32 ERROR]: Stack:
[18:35:32 ERROR]: java.base@21.0.3/sun.nio.ch.UnixFileDispatcherImpl.write0(Native Method)
[18:35:32 ERROR]: ...
That off-branch fork PR is ~50 commits behind master, missing important changes, such as incremental chunk saving, async world data saving, etc
That off-branch fork PR is ~50 commits behind master, missing important changes, such as incremental chunk saving, async world data saving, etc
:sob: i had rebased it earlier, i guess i didn't have all upstream changes synced
Closes https://github.com/PaperMC/Paper/issues/11135
I also noticed that currently it's not possible to set any item in slot 2 (first slot in the chest for llama/mule) which is the slot hidden by the armor slot in the implementation. This pr fixes that by shifting the index for slot greater than the armor slot to cover the missing slot and realign the index to be consistent with the inventory size.
Is your feature request related to a problem?
Since 1.17, bukkit has added a plugin configuration option that allows downloading required libraries when the server starts, so plugin authors don't need to package them into the plugin file anymore, which is great.
However, the default Maven repository address is currently https://repo.maven.apache.org/maven2/
We have to consider that some users (like me) may not be able to access that address due to network conditions.
This will cause users (like me) to abandon some plug-ins because they cannot download dependencies.
So can we add a configuration option to allow users to define where their servers download dependencies from?
Describe the solution you'd like.
Add the maven-mirror option in the configuration file (bukkit.yml or spigot.yml or config/paper-global.yml)
like this
maven-mirror: https://repo.huaweicloud.com/repository/maven/
Describe alternatives you've considered.
I haven't tried anythi...
Discussion Category: Ideas
paper-1.21-107 same problem
Expected behavior
This item flag should prevent music discs from showing their name.
Observed/Actual behavior
The record name is still visible in the lore.
Steps/models to reproduce
Create a command block where one runs a command to add the item flag. HIDE_ADDITIONAL_TOOLTIP.
Plugin and Datapack List
No plugins or data packs.
Paper version
This server is running Paper version 1.21-107-master@aa36ae6 (2024-07-21T10:39:28Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: git-Paper-408 (MC: 1.20.4)
Other
No response
Expected behavior
I expected the end obsidian platform to break blocks and drop them
Observed/Actual behavior
I observed the end platform replace the blocks with air instead of breaking them
Steps/models to reproduce
I was recreating Rayworks's cobblestone farm
https://www.youtube.com/watch?v=NxiaBSG4HjU
Plugin and Datapack List
Plugins: ImageFrame, SkinsRestorer, ViaBackwards, ViaVersion
Datapacks: There are 33 data pack(s) enabled: [vanilla (built-in)], [file/Terralith_1.21_v2.5.4.zip (world)], [file/afk display v1.1.8 (MC 1.21.0).zip (world)], [file/anti creeper grief v1.1.8 (MC 1.21.0).zip (world)], [file/anti enderman grief v1.1.8 (MC 1.21.0).zip (world)], [file/anti ghast grief v1.1.8 (MC 1.21.0).zip (world)], [file/armored elytra v2.0.1 (MC 1.21.0).zip (world)], [file/back v1.3.8 (MC 1.21.0).zip (world)], [file/bukkit (world)], [file/cauldron concrete v3.0.1 (MC 1.21.0).zip (world)], [file/custom nether portals v2.3.11 (MC 1.21.0).zip (world)], [fil...
Expected behavior
/give @s iron_sword{AttributeModifiers:[{Modifiers:[],ShowInTooltip:false}]}
Corresponding data: "minecraft:AttributeModifiers": {ShowInTooltip: 0b, Modifiers: []}
Observed/Actual behavior
not work
Steps/models to reproduce
ItemStack itemStack = new ItemStack(Material.IRON_SWORD);
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
itemStack.setItemMeta(itemMeta);
Player player = (Player) sender;
player.getInventory().addItem(itemStack);
Plugin and Datapack List
my plugin
Paper version
This server is running Paper version 1.21-107-master@aa36ae6 (2024-07-21T10:39:28Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
Other
This issue cannot be reproduced in the latest Spigot, but exists in the latest Paper.
No, nothing that would relate to items specifically. Your tps seems fine. Given there isn't really much we can do on GitHub, I'll close this issue.
You can ask in our discord for support with it, maybe someone has ran into this issue before, but the GitHub tracker isn't really the best place to debug this.
Duplicate of #10693
This works as intended, spigot blindly adds an empty attributes list to items which changed the behaviour, we do not consider this to be expected behaviour, and for cases where it doesn't matter, i.e. UIs, you can add a dummy attribute to appease it
This is handled by the client, we have 0 control over this
You can set show_in_tooltip to false on the disc's JukeboxPlayable https://jd.papermc.io/paper/1.21/org/bukkit/inventory/meta/components/JukeboxPlayableComponent.html#setShowInTooltip(boolean)
This adds a static variable to the Commands class to provide early access to the command dispatcher before bootstrapping the command system or before MinecraftServer has been loaded.
This is mainly needed for a plugin I'm working on, which needs access to the command dispatcher at plugin bootstrap to allow for mcfunctions to access the commands I add. Previously, I needed to wait for the Commands class to be created for bootstrapping, which occurs after plugin bootstrapping.
This adds a static variable to the Commands class to provide early access to the command dispatcher before bootstrapping the command system or before MinecraftServer has been loaded.
This is mainly needed for a plugin I'm working on, which needs access to the command dispatcher at plugin bootstrap to allow for mcfunctions to access the commands I add. Previously, I needed to wait for the Commands class to be created for bootstrapping, which occurs after plugin bootstrapping.
What is preventing you from simply registering such commands in the plugin bootstrap via the bootstrap context?
BootstrapContext exposes a LifecycleEventManager in which you can also register commands during the initial commands class creation?
Im currently using NMS for command creation, as most of my plugin follows the NMS system with ServerPlayers, ResourceLocations, etc
There's no point in using internals if you can do the same thing via API
Then reflect into the exposed Commands during the bootstrap lifecycle, it holds onto the dispatcher.
Given that internals are not API and we may change anything about it when we see fit, hence I don't think this PR is of much use for you. There is little point in promising a plugin like yours a static method for the dispatcher, when such a method may not make sense anymore in a couple of versions (or already barely does, given we have exposed brigadier completely to the API).
Thank you for the PR work, but I don't think Paper is interested in such a change due to the reasons laid out above.
Do you have the nether or end dimension disabled?
On /reload command, call event like CoreReloadEvent, and than plugin can listen this event. Like:
@EvrntHandler
public void relodEvent(CoreReloadEvent e)
{
if (e.isCanceled) return;
Main.getInstance().relo-dConfig();
}
Discussion Category: Ideas
https://jd.papermc.io/paper/1.21/io/papermc/paper/event/server/ServerResourcesReloadedEvent.html is already called when minecraft:reload is executed.
An event for spigots broken reload is useless, your plugin will already be disabled.
Discussion Category: Ideas
Rather certain this is not going to work out nicely regarding infinitely enchantment.
Also may leave the inventory in a different state than it was in initially?
Accepted, spigot is fucking around as per usual as they call PortalCreateEvent for this, which includes first storing all block changes and then applying them post event.
This depends on my previous PR to avoid conflict.
Implement some missing methods (set/getContents and isEmpty) to take in account the armor slot. This fixes by extension other api using those methods such as addItem and more.
Hello, I can add this to the conversation:
The mentionned pull request: https://github.com/PaperMC/Paper/pull/7177
Discussion Category: Ideas
If you're not the author of the plugin, you may use /etc/hosts to make that domain point to a local address which nginx will listen to, and make nginx act as a maven repository, where you put all the libraries your plugins may want to download. This way your plugin will work even if you don't have connection to the internet
Discussion Category: Ideas
We could either add some checks regarding those enchantments (not sure about the state changes though) or we do some refactoring and remove the item after the event is called. i will take a second look at moving that removal to after the event call later
Yea I think I may be in favour of removing item post event call. How to track that nicely is going to be a fun challenge. We also need to make sure that nothing there runs that could be affected by not removing items.
Regarding removal anyway, if the diff ends up with some form of tracking wrapper around Item stack, we may also be able to remove and precisely readd.
Expected behavior
I thought I could join on my server as always
Observed/Actual behavior
I could only join once after a restart, but then I couldn't join again
Steps/models to reproduce
I don't know how to reproduce this problem, but my error is:
[14:38:37 WARN]: Failed to handle packet for /:49168
net.minecraft.server.v1_8_R3.ReportedException: Sending packet
at net.minecraft.server.v1_8_R3.PlayerConnection.sendPacket(PlayerConnection.java:925) ~[patched_1.8.8.jar:git-PaperSpigot-445]
at net.minecraft.server.v1_8_R3.PlayerList.onPlayerJoin(PlayerList.java:334) ~[patched_1.8.8.jar:git-PaperSpigot-445]
at net.minecraft.server.v1_8_R3.PlayerList.a(PlayerList.java:173) ~[patched_1.8.8.jar:git-PaperSpigot-445]
at net.minecraft.server.v1_8_R3.LoginListener.b(LoginListener.java:144) ~[patched_1.8.8.jar:git-PaperSpigot-445]
at net.minecraft.server.v1_8_R3.LoginListener.c(LoginListener.java:54) ~[patched_1.8.8.jar:git-PaperSp...
1.8 is no longer supported.
Well something created an itemstack that is oversized. May be related to some funky armorstand issues?
Closing this one since it's not doable and doing that would result in breaking the food component. Plugins are still free to mess with the two values if they want.
Problem: EntityShootBowEvent is called for Crossbows. Is that intended behaivour? If it is what are we supposed to do when the event is cancelled/consumeItem is set to false? just leaving the arrow in the crossbow would basically allow for rapid fire with consumeItem on false
In 1.20.4, that field was simply ignored for crossbows. So it would always "consume".
Have you been able to replicate this on latest paper?
I am unsure if we are inclined to fix this.
The new system is supposed to replace the old, not co-exist forever.
Having the already cursed command map implementation also attempt to find the permission of a brig node sounds kinda dumb. Especially when BasicCommand is only supposed to be a "simple" way to create a brigadier node, not a command framework exposed.
This is also generally not possible as plugins could just do this check in canUse in BasicCommand and skip the utility method.
E.g.
final class Example implements BasicCommand {
int execute(...) {}
boolean canUse(CommandSender sender) { return sender.hasPermission("testplugin.example") }.
}
Given we cannot promise consistency there (due to the pure nature of how brigadier's required works) I'll be closing this as "works-as-intended`. Obviously if you have more arguments for it, feel free to post them here, I'll gladly reopen for more of a discussion, but rn I cannot see a solid impleme...
Random shot in the wild, does this happen on a server with creative mode permissions for clients?
Do you have the nether or end dimension disabled?
Yes, we have both
allow-end: false via bukkit.yml
allow-nether=false via server.properties.
Okay yea, that would do it ๐
I'll have a look at how that was handled in previous versions.
Random shot in the wild, does this happen on a server with creative mode permissions for clients?
We do not give creative anywhere on our servers.
Okay. Well this issue is kinda rough then.
Without any context as to where those items came from, it is hard to debug.
There are some known waits to cheat in items with a too large item count that could cause such a break, but that requires creative mode or command permissions from my knowledge.
Have you checked the chunk that failed to save?
Okay. Well this issue is kinda rough then.
Without any context as to where those items came from, it is hard to debug.
There are some known waits to cheat in items with a too large item count that could cause such a break, but that requires creative mode or command permissions from my knowledge.
Have you checked the chunk that failed to save?
I believe @electronicboy just forwarded me a paper jar to get more input / information. Will have more information hopefully after 24ish hours.
Handle those cases
- removing all enchantments from an empty item
- setting a page for a new book throw a NPE instead of the right exception (message is still weird here since it say x/0 but is now consistent with spigot).
efa2eb5 Shutdown L4J cordially if the server stops befo... - electronicboy
[PaperMC/Paper] New branch created: patch/early-l4j-shutdown-hook
Expected behavior
Before spark switched over to being inside paper I had it downloaded and I was using the %spark_tps_5s% placeholder for tps in the DiscordSRV plugin. Before since spark was installed as a plugin its placeholders would automatically work with PAPI without downloading the spark extension. I was expecting this to not change.
Observed/Actual behavior
The placeholder did not work at all until I downloaded the spark Papi ecloud extension.
Steps/models to reproduce
- Use a spark placeholder in a different plugin
- It doesn't function
Plugin and Datapack List
Paper Plugins:
PaperTweaks
Bukkit Plugins:
AdvancedRegionMarket, AntiPopup, AnvilColors, AuctionHouse, ChatFilter, ChestShop, CoreProtect, CustomCommands, DecentHolograms, DiscordSRV, eGlow, Essentials, EssentialsChat, EssentialsSpawn, FastAsyncWorldEdit, GCore, Graves, GriefDefender, GSit, InteractiveChat. InteractiveChatDiscordSrvAddon, InventoryRollbackPlus, LastLoginAPI, LuckPerms,...
This is not a bug, we as a server cannot inject into arbitrary plugins as a function
I originally modeled the changes off of CraftResultInventory which doesn't override these various methods. Perhaps it should be changed there as well, but that can be in a different PR.
5512af7 [ci skip] remove timings from issue templates (... - powercasgamer
Expected behavior
Should say, "The highest block that blocks motion or contains a fluid, excluding leaves."
Observed/Actual behavior
Currently says, "The highest block that blocks motion or contains a fluid or is in the Tag.LEAVES."
Steps/models to reproduce
N/A
Plugin and Datapack List
N/A
Paper version
1.15-1.21 javadocs
Other
No response
Okay yea, that would do it ๐ I'll have a look at how that was handled in previous versions.
This one still has the awaiting response tag, wondering if you need anything else from me.
Expected behavior
Plugins load (or fail with error text I can understand and fix?)
Observed/Actual behavior
Encountered exception remapping plugins
Failed to remap plugin jar 'plugins\IslandsWorldGen.jar'
java.lang.IllegalStateException: Duplicate entries detected
See below for full error:
[20:31:06] [ServerMain/ERROR]: [PluginRemapper] Encountered exception remapping plugins
java.util.concurrent.CompletionException: java.lang.RuntimeException: Failed to remap plugin jar 'plugins\IslandsWorldGen.jar'
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown Source) ~[?:?]
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(Unknown Source) ~[?:?]
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source) ~[?:?]
at java.base/java.util.concurrent.CompletableFuture$Completion.run(Unknown Source) ~[?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
at java...
Expected behavior
no damage with knockback to nearby entities on collision
Observed/Actual behavior
explosion damage to nearby entities on collision
Steps/models to reproduce
1- host a minehut server on 1.21 with a difficulty higher than peaceful
2- grab a wind charge in creative
3- go in survival and throw the wind charge at your feet
4- death
Plugin and Datapack List
Skript
SkBee
Multiverse
Essentials
Paper version
This server is running Paper version 1.21-108-master@73a863b (2024-07-22T13:23:21Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: git-Paper-496 (MC: 1.20.4)
Other
No response
Update I have one other plugin hitting this, similar error. For what it's worth, I dev them both. Maybe I... compiled them weird..? Then again, some others plugins I run in production, I also deved and they aren't doing this.
Caused by: java.lang.IllegalStateException: Duplicate entries detected: me/ryanhamshire/BigScaryIslands/AutomaticBroadcaster.class, me/ryanhamshire/BigScaryIslands/BigScaryIslands$ExperienceBlockResetter.class, me/ryanhamshire/BigScaryIslands/BigScaryIslands$LateInitializer.class, me/ryanhamshire/BigScaryIslands/BigScaryIslands$ThrottledBlockUpdater.class, me/ryanhamshire/BigScaryIslands/BigScaryIslands$ThrottledChunkExplorer.class, me/ryanhamshire/BigScaryIslands/BigScaryIslands$ThrottledChunkLoader.class, me/ryanhamshire/BigScaryIslands/BigScaryIslands$TickTimestamper.class, me/ryanhamshire/BigScaryIslands/BigScaryIslands$TimedSubtitleSender.class, me/ryanhamshire/BigScaryIslands/BigScaryIslands.class, me/ryanhamshire/BigScaryIslands/BiomeIndexer$BiomeCat...
Your have multiple instances of the same classes included in your jar, makes sure individual modules aren't shaded twice. for more help, you can join our Discord and use the build-tooling-help channel
These two setters seems wrong. The passed items array may be empty. Or only include a single item.
These two lines would IOB.
in case anybody else finds this via google: the fix is downloading the papi spark extension
This diff can be moved into the other diff.
E.g.
@Override
public void setOwner(Entity) {
// Paper start - ...
setOwner(entity, true);
}
public void setOwner(Entity, boolean) {
super.setOwner(entity);
if (!updatePickup) return;
// Paper end - ...
..
}
yes i found a similar issue on the getter.
so we don't have as many paper comments?
Yes you already have a pr for other inventories (https://github.com/PaperMC/Paper/pull/10721/files) however you only override the getter for some reason.
Just keeps the diff nicely together in the class.
I would rather not. There's already a Shearable and Bucketable patch that exists which seems cleaner.
you can load dependencies from custom repositories using Paper Plugins
Do I need to develop it myself? I haven't found similar plugins
Discussion Category: Ideas
the plugin author needs to add this support, not you
Ask them to add the support for custom repository
Discussion Category: Ideas
the plugin author needs to add this support, not you
Ask them to add the support for custom repository
Thank you. This might be a little hard
Discussion Category: Ideas
used by the built-in SpigotLibraryLoader is too late to be used in many places
I'm not sure what is even meant by this. I do and have supported the notion of letting people add a custom repo to serve as a proxy to central, be that to have a reliable "local" cache of central or for people running private servers to be able to deploy libraries to, but, outside of those two concerns, there is no real big thing here for allowing a custom repo. It's not a saving grace to plugin devs because they'd need their end users to keep switching repos every 2 weeks as they upgrade plugins to pull in their deps, etc.
for plugins themselves, paper plugins, or looking into library injection tools on their own, are generally going to be the only "wider" solution here
Discussion Category: Ideas
Sorry I didn't make it clear, I meant that the official image download speed is slow in some regions of the world, thank you for your reply
Discussion Category: Ideas
Would it be possible to use the overload for the API Projectile#setShooter as well? Currently, using the method changes the pickup status. Or at least, an override for the API method as well on API AbstractArrow.
I think best solved in a separate PR.
Post mortem: This was a super odd "just me" thing. I had a bin folder with some class files in it, which was being exported to the jar alongside my target folder. So double the class files. Probably some file leftovers from years ago when I built another way.
Could also do it in this one though, then we can rename the patch and pr to "Fix PickupRule being reset" or something more generic like that (considering we already have too many very specific patches). Your decision though, just my opinion.
If you are fine with it yea, just means we need some more eyes on the API decisions (I am going to suggest an overload in the API to not fuck with spigot compat, but I am not 100% convinced so, yea, just means the PR might need some more eyes)
I will just rename the patch to make it more generic and add another commit to add the changes to the api so if you guys decide its best handled in another pr you can just reset that commit
Fixes lag when fetching gameprofile in commands, like /whitelist add, /whitelist remove /ban, /op etc. Adds async gameprofile fetching in GameProfileArgument.
I think that there was generally some long term concerns over toying with some of this stuff due to stuff potentially expecting mutation to occur during execution, though, in part, we did discuss doing it lower so that it impacted stuff like API, etc
MinecraftServer is also an executor, and so you can use thanAcceptAsync
Expected behavior
When the mace is enchanted with wind burst it should bounce the player back into the air when an enemy is hit.
Observed/Actual behavior
The player simply falls onto the ground without bouncing back when they hit an enemy.
Steps/models to reproduce
Enchant a mace with Wind Burst III and use it falling on an enemy.
I'm using a custom mace created with this command:
/give @p mace[custom_name='{"bold":true,"color":"blue","text":"Martellone del Valhalla"}',unbreakable={},enchantments={levels:{"minecraft:bane_of_arthropods":10,"minecraft:breach":10,"minecraft:density":10,"minecraft:smite":10,"minecraft:wind_burst":10}},attribute_modifiers=[{id:"entity_interaction_range",type:"player.entity_interaction_range",amount:10,operation:"add_value"},{id:"jump_strength",type:"generic.jump_strength",amount:3,operation:"add_value"},{id:"safe_fall_distance",type:"generic.safe_fall_distance",amount:1000,operation:"add_value"},{id:"step_height",type:"generic.s...
Works fine
That's strange because in my vanilla local world the wind burst of the mace generated with the comment I provided works just fine, but in my paper server it doesn't work at all.
Unable to reproduce with the mace from the command provided, on a server without any plugins on build 109. Its a bit tricky to hit the mob with that much jump height, but it works when fine I manage to hit.
Are you able to reproduce this without any plugins on the server?
Expected behavior
Player Crafts something and picks it up, for example you craft planks with an stack of Logs, now the planks you have on your Cursor are 64, now the event shouldnt trigger.
Observed/Actual behavior
Player Crafts something and picks it up, for example you craft planks with an stack of Logs, now the planks you have on your Cursor are 64, now the event triggers
Steps/models to reproduce
@EventHandler
public void onBuildingBlockCrafting(CraftItemEvent event){
Material resultMaterial = event.getCurrentItem().getType();
UUID uuid = event.getWhoClicked().getUniqueId();
Player player = (Player) event.getWhoClicked();
double multiplier = event.getCurrentItem().getAmount() + Maths.getJobEPFormel(8, event.getWhoClicked().getUniqueId());
if (resultMaterial == Material.OAK_PLANKS ||
resultMaterial == Material.SPRUCE_PLANKS ||
resultMaterial == Material.BIRCH_PLANKS ||
...
Stack trace
at wf.a(SourceFile:33)
at zj.a(SourceFile:62)
at fzc.a(SourceFile:136)
at fzc.a(SourceFile:127)
at vt.exceptionCaught(SourceFile:161)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)
at io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:317)
at io.netty.channel.DefaultChannelPipeline$HeadContext.exceptionCaught(DefaultChannelPipeline.java:1377)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)
at io.netty.channel.DefaultChannelPipeline.fireExceptionCaught(DefaultChannelPipeline.java:907)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.h...
![image](