#paper

1 messages ยท Page 11 of 1

rustic folioBOT
rustic folioBOT
#

Expected behavior

The method from Spigot 1.20.6 exists according to the docs: https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Fireball.html and is compatible with Paper 1.20.6

Observed/Actual behavior

Server error:
java.lang.NoSuchMethodError: 'org.bukkit.util.Vector org.bukkit.entity.Fireball.getAcceleration()'

Steps/models to reproduce

Run a server on the latest version of Paper: paper-1.20.6-130.jar

Plugin and Datapack List

Reproducible on a bare installation of paper-1.20.6-130.jar

Paper version

paper-1.20.6-130.jar

Other

No response

rustic folioBOT
#

Expected behavior

entity.damage() applies no knockback, .damage() with damagesource always applies knockback, even if you leave out location or set locaiton to entities location, there should be a way to have no knockback from it

Observed/Actual behavior

N/A

Steps/models to reproduce

livingEntity.damage(0.1);

.damage() with no damage source params, vs .damage() with damage source

livingEntity.damage(0.1, DamageSource.builder(DamageType.MOB_PROJECTILE)
.withCausingEntity(shooter)
.withDirectEntity(projectile)
.build());

Plugin and Datapack List

N/A

Paper version

Paper 1.20.4

Other

No response

rustic folioBOT
#

The knockback is based in the rules of NMS.
In the case of the damage method with not DamageSource is handled by the generic DamageSource that not include knockback, the method with the DamageSource is "parsed" to the NMS DamageSource if you pass a entity making de damage (withDirect..) then this make a knockback, in NMS the logic for knockback (ignoring a thing about the last damage/invulnerability) is if the damage is not included in the tag for no_knockback and exists a entity making the damage.
image
that is what i check unless i missing something.

rustic folioBOT
#
[PaperMC/Paper] New branch created: feature/ItemStack-proxy
#

This essentially removes API-only itemstacks without changing ItemStack to an interface, that will come later.

Just adds a field in api-ItemStack that should always be a CraftItemStack which the api-ItemStack will wrap around. CraftItemStack has to override any methods on api-ItemStack that use this craftDelegate to avoid recursion loops.

#

Stack trace

paste your stack trace or a paste.gg link here!

https://paste.gg/p/anonymous/f5812767a5164748bb4d58397006bc78

https://paste.gg/p/anonymous/3109279d76b6486f9fc1102d646476b1

Plugin and Datapack List

DeathMessages, eBackup

Actions to reproduce (if known)

Unknown, this seems to happen at random in completely different parts of the map but it is consistently triggered by net.minecraft.world.entity.npc.EntityVillagerTrader

Paper version

This server is running Paper version git-Paper-17 (MC: 1.20) (Implementing API version 1.20-R0.1-SNAPSHOT) (Git: c287e92)
You are running the latest version

Other

This has happened 3 times now; once last night before a regularly scheduled backup, once after i restarted the server so people could get on and just now while running /plugins and /version.

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

When Item drop is cancelled the item stack affected should not be changed in any way

Observed/Actual behavior

When item is dropped from inside inventory this is cancelled, the item is readded into selected slot instead of original itemstack/slot

Steps/models to reproduce

prepare plugin cancelling all PlayerDropItemEvents

  1. get a stack of any item (/give @p minecraft:dirt 64) and have it in first slot
  2. select any other slot
    3a) open inventory and drop one of the items using q and hovering the item stack
    3b) right-click the item and drop it outside of the inventory
    3c) left-click the item and drop it outside of inventory

Plugin and Datapack List

only the test plugin cancelling the drop events

Paper version

This server is running Paper version 1.20.6-137-master@bd5867a (2024-06-04T21:04:28Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
You are running the latest version

Other

No response

#

The problem is in drop method in Player class:

            if (event.isCancelled()) {
                org.bukkit.inventory.ItemStack cur = player.getInventory().getItemInHand();
                if (flag1 && (cur == null || cur.getAmount() == 0)) {
                    // The complete stack was dropped
                    player.getInventory().setItemInHand(drop.getItemStack());
                } else if (flag1 && cur.isSimilar(drop.getItemStack()) && cur.getAmount() < cur.getMaxStackSize() && drop.getItemStack().getAmount() == 1) {
                    // Only one item is dropped
                    cur.setAmount(cur.getAmount() + 1);
                    player.getInventory().setItemInHand(cur);
                } else {
                    // Fallback
                    player.getInventory().addItem(drop.getItemStack());
                }
                return null;
            }

Item is reset in selected slot...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

The knockback is based in the rules of NMS. In the case of the damage method with not DamageSource is handled by the generic DamageSource that not include knockback, the method with the DamageSource is "parsed" to the NMS DamageSource if you pass a entity making de damage (withDirect..) then this make a knockback, in NMS the logic for knockback (ignoring a thing about the last damage/invulnerability) is if the damage is not included in the tag for no_knockback and exists a entity making the damage. ![image](https://private-user-images.githubusercontent.com/3602279/336083734-83f807f0-116e-45cb-8a94-dd5ae84ef5f0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTc2NzQ2ODksIm5iZiI6MTcxNzY3NDM4OSwicGF0aCI6Ii8zNjAyMjc5LzMzNjA4MzczNC04M2Y4MDdmMC0xMTZlLTQ1Y2ItOGE5NC1kZDVhZTg0ZWY1ZjAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDYw...

rustic folioBOT
#

The knockback is based in the rules of NMS. In the case of the damage method with not DamageSource is handled by the generic DamageSource that not include knockback, the method with the DamageSource is "parsed" to the NMS DamageSource if you pass a entity making de damage (withDirect..) then this make a knockback, in NMS the logic for knockback (ignoring a thing about the last damage/invulnerability) is if the damage is not included in the tag for no_knockback and exists a entity making the damage. ![image](https://private-user-images.githubusercontent.com/3602279/336083734-83f807f0-116e-45cb-8a94-dd5ae84ef5f0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTc2NzQ2ODksIm5iZiI6MTcxNzY3NDM4OSwicGF0aCI6Ii8zNjAyMjc5LzMzNjA4MzczNC04M2Y4MDdmMC0xMTZlLTQ1Y2ItOGE5NC1kZDVhZTg0ZWY1ZjAucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MD...

rustic folioBOT
#

Expected behavior

PlayerInteractEvent should not fire after EntityDamageByEntityEvent.

Observed/Actual behavior

PlayerInteractEvent fires after EntityDamageByEntityEvent when attacking outside of vanilla attack range.

Steps/models to reproduce

Just give an item an interact reach modifier, attack an entity outside of the vanilla minecraft attack reach and the PlayerInteractEvent will fire.

Plugin and Datapack List

None.

Paper version

This server is running Paper version 1.20.6-137-master@bd5867a (2024-06-04T21:04:28Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)

Other

https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/nms-patches/net/minecraft/server/network/PlayerConnection.patch#722
https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/nms-patches/net/minecraft/server/network/PlayerConnection.patch#1126

rustic folioBOT
rustic folioBOT
#

Judging by MM's comment, it's probably not best for us to touch this since this may have implications in the whole technical world. This may also be behavior that is still used, so not sure if it's our place to patch something like this.

Additionally, I am not sure the code you are using will work on most setups due to it using awt classes.

Thank you for your contribution, regardless. :)

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

This doesn't handle empty itemstack (ItemStack#empty) which are still full api stack without server side equivalent and will throw a NPE for most methods.

I think I should just be able to change empty to return ItemStack.create(Material.AIR). It'd have a stack size of 1 however, should I instead add a bridge method to create a truly empty stack? just by returning a copy of nms-ItemStack.EMPTY?

rustic folioBOT
#

About this issue, there is still deviation from Vanilla

In Vanilla, even if the second attack of a stun does no knockback - which I reported as MC-268147, damage is still dealt, since the shield breaking action count as a Damage Tick and allow greater damage to be applied. Video

But on Paper, no damage cannot be dealt after the shield break, which is not the normal Damage Tick behaviour. Video

But this bug doesn't really have much to do with that. And this bug should be reported to spigot jira.

rustic folioBOT
#

Expected behavior

Chunk to update from 1.20.4 to 1.20.6 without issue

Observed/Actual behavior

The chunk was reset to default world generation, another chunk lost all its entities.

Steps/models to reproduce

2024-06-08_08 59 13
2024-06-08_08 58 14
2024-06-08_08 58 57
2024-06-08_08 58 34
2024-06-08_08 57 23
2024-06-08_08 58 05
These are comparisons between the world in 1.20.4 and 1.20.6. I simply had the world in a 1.20.4 server the...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Description

This is a very simple event. This event is triggered whenever a player lands on a block. The event is mostly useful for when you want to do a specific action whenever a player lands on a specific block/location.

Event Details

Event Name: PlayerLandEvent
Trigger: When a player lands on the ground
Purpose: To allow players to do specific actions when a player lands on a specific block

Key Components

Player: The player that landed.
From: The location the player landed from.
To: The location the player landed to.
Main Supporting Block: The main block supporting the player, the block that the player landed on.
rustic folioBOT
#

After removing the addition handler from the test plugin (only listening to preFreeze), an NPE is thrown because getHook returns null.

[LifecycleEventRunner] Could not run 'RegistryKeyImpl[key=minecraft:game_event] / pre-freeze' lifecycle event handler from Paper-Test-Plugin v1.0.0-SNAPSHOT
java.lang.NullPointerException: Cannot invoke "io.papermc.paper.plugin.lifecycle.event.types.AbstractLifecycleEventType.forEachHandler(java.util.function.Consumer, java.util.function.Predicate)" because "lifecycleEventType" is null
	at io.papermc.paper.plugin.lifecycle.event.LifecycleEventRunner.callEvent(LifecycleEventRunner.java:63) ~[main/:?]
	at io.papermc.paper.plugin.lifecycle.event.LifecycleEventRunner.callEvent(LifecycleEventRunner.java:58) ~[main/:?]
	at io.papermc.paper.registry.PaperRegistryListenerManager.registerWithListeners(PaperRegistryListenerManager.java:127) ~[main/:?]
	at io.papermc.paper.registry.PaperRegistryListenerManager.registerWithListeners(PaperRegistryL...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Stack trace

[18:27:32 ERROR]: Could not pass event StandardPaperServerListPingEventImpl to Paper-Test-Plugin v1.0.0-SNAPSHOT
java.lang.IllegalArgumentException: The name of the profile contains invalid characters: Anonymous Player
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:218) ~[guava-32.1.2-jre.jar:?]
	at com.destroystokyo.paper.profile.CraftPlayerProfile.createAuthLibProfile(CraftPlayerProfile.java:274) ~[main/:?]
	at com.destroystokyo.paper.profile.CraftPlayerProfile.<init>(CraftPlayerProfile.java:41) ~[main/:?]
	at com.destroystokyo.paper.profile.CraftPlayerProfile.asBukkitCopy(CraftPlayerProfile.java:286) ~[main/:?]
	at com.destroystokyo.paper.network.StandardPaperServerListPingEventImpl.getPlayerSample(StandardPaperServerListPingEventImpl.java:41) ~[main/:?]
	at test-plugin-1.0.0-SNAPSHOT.jar/io.papermc.testplugin.TestPlugin.onServerListPing(TestPlugin.java:21) ~[test-plugin-1.0.0-SNAPSHOT.jar:?]
	at com.destroystokyo.paper.eve...
rustic folioBOT
rustic folioBOT
#

The reason I set the ground value here is because that method runs checkSupportingBlock() which updates Entity#mainSupportingBlockPos. The reason I'm not just taking advantage of this.player.setOnGroundWithKnownMovement() which happens just a few lines below is because I previously made this event cancellable, But after further testing, it had pretty buggy behaviour... I'm going to quickly just move this below the this.player.setOnGroundWithKnownMovement() in the next commit.

rustic folioBOT
rustic folioBOT
#

if someone could comment on whether or not the config layout is ok that would be great, then i can quickly writeup a docs pr so that's also ready.

new config layout (as proposed by machine):

despawn-ranges:
    monster:
        hard:
            horizontal: 30
            vertical: 5
        soft: 20 # just putting a numerical value would mean it applies to both (as it does now)

I think this config format layout is great
Clear and straightforward

rustic folioBOT
#

Expected behavior

Custom drops added via PlayerDeathEvent#getDrops should spread on the ground as far as the dropped inventory.

Observed/Actual behavior

Custom drops are dropped in player location without spreading it.

Steps/models to reproduce

  1. Make a plugin with this code: https://pastebin.com/sTgqQLQ8
  2. Run the server
  3. Die (execute /kill command)
  4. See that diamond that I added to custom drops is not spreading.

Plugin and Datapack List

[16:22:20 INFO]: Server Plugins (1):
[16:22:20 INFO]: Bukkit Plugins:
[16:22:20 INFO]:  - ExampleDropOnDeath
[16:22:45 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
[16:22:45 INFO]: There are no more data packs available

Paper version

[16:22:56 INFO]: Checking version, please wait...
[16:22:56 INFO]: This server is running Paper version 1.20.6-137-master@bd5867a (2024-06-04T21:04:28Z) (Implementing API version 1.20.6-R0.1-SN...

#

But there is some kind of mutation handling. When I remove item from that list it will just not drop. All items that are dropped (custom drops and normal drops like inventory) happens here: https://github.com/PaperMC/Paper/blob/bd5867a96f792f0eb32c1d249bb4bbc1d8338d14/patches/server/0932-Restore-vanilla-entity-drops-behavior.patch#L235-L242
There must be something going on with this runConsumer then.

#

Oh yeah, i see. When I add custom drop to PlayerDeathEvent#getDrops then the Entity.DefaultDrop's value dropConsumer is null. https://github.com/PaperMC/Paper/blob/bd5867a96f792f0eb32c1d249bb4bbc1d8338d14/patches/server/0932-Restore-vanilla-entity-drops-behavior.patch#L188
And when dropConsumer is null then in this logic it will drop item in the player's location as a fallback. So the spreading is not applied because the dropConsumer applied that spreading and it is for some reason null when adding custom drop. https://github.com/PaperMC/Paper/blob/bd5867a96f792f0eb32c1d249bb4bbc1d8338d14/patches/server/0932-Restore-vanilla-entity-drops-behavior.patch#L69-L73

rustic folioBOT
#

Expected behavior

@EventHandler
public void onEchestOpen(InventoryOpenEvent event) {
if (event.getInventory().getType() != InventoryType.ENDER_CHEST) {
return;
}
Bukkit.broadcastMessage("ec: " + event.getInventory().getHolder());

holder should return the enderchest blockstate

Observed/Actual behavior

Opening an enderchest:

ec: null

Has no holder

Steps/models to reproduce

Open enderchest, use listener

Plugin and Datapack List

N/A

Paper version

This server is running Paper version git-Paper-"f4c7d37" (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: f4c7d37)
Probably isn't fixed in 1.20.6 judging by the commits

Other

No response

rustic folioBOT
#

Expected behavior

When you cancel inventoryopenevent for an enderchest, the viewers of the enderchest should not keep growing

Observed/Actual behavior

Viewer count keeps growing

Steps/models to reproduce

Cancel inventory open event, check .getviewers.size()

Plugin and Datapack List

N/A

Paper version

This server is running Paper version git-Paper-"f4c7d37" (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: f4c7d37)

Probably 1.20.6 also

Other

No response

rustic folioBOT
#

Is your feature request related to a problem?

Everyone hates Minecraft chat reports, and many players have mods that disable them. Unfortunately this won't let them talk on servers with the default enforce-secure-profile setting.

Describe the solution you'd like.

Set enforce-secure-profile to false by default.

Describe alternatives you've considered.

No alternative possible.

Other

No response

rustic folioBOT
#

Expected behavior

I believe PrepareResultEvent only needs to be fired once per ItemCombinerMenu#slotsChanged method call.

This method calls this.createResult() which is implemented by SmithingMenu#createResult, which fires a PrepareResultEvent event, before being fired a second time immediately after within slotsChanged. It is of my assumption that the event call within SmithingMenu is not actually needed, or I'm misunderstanding why it is there.

Observed/Actual behavior

There are twice as many PrepareResultEvent events being emitted than what seems to be necessary resulting in a total of 6 calls when slotsChanged is only called 3 times.

Steps/models to reproduce

N/A

Plugin and Datapack List

N/A

Paper version

This server is running Paper version 1.20.6-137-master@bd5867a (2024-06-04T21:04:28Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)

Other

This is in regards to the "Add PrepareResultEvent" patch, seems to have been present for quite...

rustic folioBOT
#

Did some testing, and encountered this error when tab-completing with an empty console:

[org.jline] Error while parsing line
java.lang.IndexOutOfBoundsException: Index -1 out of bounds for length 1
        at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) ~[?:?]
        at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) ~[?:?]
        at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) ~[?:?]
        at java.base/java.util.Objects.checkIndex(Objects.java:385) ~[?:?]
        at java.base/java.util.ArrayList.get(ArrayList.java:427) ~[?:?]
        at io.papermc.paper.console.BrigadierConsoleParser.parse(BrigadierConsoleParser.java:68) ~[paper-1.20.6.jar:1.20.6-DEV-472d555]
        at org.jline.reader.impl.LineReaderImpl.doComplete(LineReaderImpl.java:4371) ~[jline-reader-3.20.0.jar:?]
        at org.jline.reader.impl.LineReaderImpl.doComplete(LineReaderImpl.java:4347) ~[jli...
rustic folioBOT
#
[PaperMC/Paper] branch deleted: bugfix/itemstack-damage-api
rustic folioBOT
#

Expected behavior

IDK what this error means honestly

Observed/Actual behavior

https://pastebin.com/yjfdDs40

Steps/models to reproduce

IDK

Plugin and Datapack List

[22:44:51 INFO]: Server Plugins (68):

....
[22:44:51 INFO]: Bukkit Plugins:
....
[22:44:51 INFO]: - AdvancedEnchantments, AdvancedRegionMarket, ajLeaderboards, BattlePass, BetterFarming, ChestProtect, Chunky, ChunkyBorder, CMI, CMILib
....
[22:44:51 INFO]: CoffeeProtect, CoinsEngine, CoreProtect, CustomDrops, DiscordSRV, eco, EcoJobs, EcoSkills, ExcellentCrates, ExecutableItems
....
[22:44:51 INFO]: FarmLimiter, FastAsyncWorldEdit, FasterFurnaces, GUIPlus, HeadDatabase, Images, ItemsAdder, Lands, LandsDiscordBot, libreforge
....
[22:44:51 INFO]: LiteBans, LoneLibs, LuckPerms, MineBlocks, Multiverse-Core, NBTAPI, nightcore, PinataParty, Pl-Hide-Pro, PlaceholderAPI
....
[22:44:51 INFO]: PlayerWarps, ProdigyNightclub, ProtocolLib, qsaddon-discordsrv, qscompat-advancedregionmarket, qsco...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

@NonSwag Whilst first looking how to do this in my own plugin, I saw that the best to check when a player lands, is to use a PlayerMoveEvent. The onGround boolean is, from what I understand, pretty unreliable. Thus, you will have to use a bit of NMS there to make it work. Furthermore, you will probably also need the mainSupportingBlock, which is added nms, and if you want the from and to location... Well, you get the point. This event is basically here to avoid this overhead. Now I'm going to be honest, I don't know if your method works, but if it does, all this nms will still be needed. It's definitely not that big of a problem, but the main idea is to avoid this. So make your own informed decision off of this.

rustic folioBOT
rustic folioBOT
#

Expected behavior

Not kicking you when u try to chat in the chat while in vanish sometimes

Observed/Actual behavior

Kicking people while in vanish sometimes when trying to chat in the chat

Steps/models to reproduce

install essentials x on ur server

go in vanish

try type in chat

it may only happen on modded clients not sure

Plugin and Datapack List

Screenshot 2024-06-11 163402

image

Paper version

image

Other

this issue is very annoying it keeps happening to me and my friends on my server minecraft version is 1.20.6 never happened when we were running 1.20.4

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

The BlockDestoryEvent fires when a block is broken and causes another block to break due to it (like breaking the block a redstone torch is sitting on). However, it doesn't fire for a lot of redstoen components like repeaters, redstone, comparators etc. It DOES fire for redstone torches though

Observed/Actual behavior

It should fire for all redstone components and blocks that break due to it

Steps/models to reproduce

Place a block, place redstone on top, break the block and the redstone will drop but won't fire the BlockDestroyEvent

Plugin and Datapack List

[13:05:17 INFO]: - AdvancedAchievements, AdvancedArmorStands, AdvancedEnchantments, BlockLocker, Brewery, BuycraftX, ChestShop, ChestShop-LegacyIds, Chunky, Citizens
[13:05:17 INFO]: ClearLag, *Commander, CoreProtect, DeluxeMenus, DespawnSpy, DetrimUtils, EnchantGui, Essentials, EssentialsAntiBuild, EssentialsGeoIP
[13:05:17 INFO]: EssentialsProtect, EssentialsSpawn, ExploitFixer, Far...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Don't lose the sprint when attack someone

Observed/Actual behavior

Video that show the issue :

Steps/models to reproduce

Set disable-sprint-interruption-on-attack to true, restart then attack someone

Plugin and Datapack List

  • no datapack
  • one plugin: my own that manage permissions, messages etc but doesn't change pvp

Paper version

This server is running Paper version 1.20.6-138-master@906df69 (2024-06-10T06:32:15Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.20.6-115-9d6f2cc (MC: 1.20.6)

Other

No response

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

I can join the server and can run console commands

Observed/Actual behavior

Console commands are not working and i can not join the server even if i use localhost

Steps/models to reproduce

Install all the plugins on the server
Run the server

Plugin and Datapack List

simplepushevents
AkariBan
FakePlayerMaker-Recoded
InvisibleItemFrames
Polymer
TreeRecovery
LightChat
ImageFrame
BoomBag
ExpandedCooking
EmojiChat
Baconize
Schneckenhaus
ExcellentEnchants
nightcore
update
FrustCheck
TreeCuter
TeaksTweaks
TabTPS
Kryptonite
AnarchyExploitFixes
Updater
LavaDamage
InstantRestock
ToolStats
Orebfuscator
CustomizablePlayerModels
OldCombatMechanics
RedeemCodes
CPS-Limiter
AntiCrashX
MyJoinLeaveMessage
EmailLinker
Multiverse-Inventories
DayCounter
HoloMobHealth
EpicGuard
Chunky
WorldEditSUI
Plan
EndPortalTimer
WorldEdit
ServerCtrl
BlueMap
LuckPerms
AFKPlus
GMusic
RandomSpawnPlus5
GSit
FastLeafDecay
ChestSo...

rustic folioBOT
#

I cannot really replicate this on a vanilla client. This is what I reproduce:

Config option set to false:
Sprint: Hold + Press W twice + Attack: Stop sprinting
Sprint: Hold + Press sprint key + Attack: Stop sprinting
Sprint: Hold + Hold sprint key + Attack: Stop sprinting but start sprinting quickly after
Sprint: Toggle + Press W twice + Attack: Stop sprinting
Sprint: Toggle + Press sprint key once + Attack: Stop sprinting but start sprinting quickly after
Config option set to true:
Sprint: Hold + Press W twice + Attack: Keep sprinting
Sprint Hold + Press sprint key + Attack: Keep sprinting

I don't see how that is not what you'd expect this configuration option to do?

rustic folioBOT
#

Expected behavior

https://youtu.be/Gnm6FX6RT9o

Shield stunning behavior in 1.20.4 Paper

You can hit the player again after the shield breaks instantly

Observed/Actual behavior

https://youtu.be/A0TMlDv_RVE

Shield stunning behavior in 1.20.6 Paper

Seems to be a delay between breaking the shield and when you are able to hit the player again

Steps/models to reproduce

Get someone to hold up their shield and spam click them

Observe the difference between a Paper Server running 1.20.4 versus 1.20.6

Plugin and Datapack List

Included in the above videos

Paper version

Included in the above videos

Other

Resource/Tutorial for Stunning and its many uses: https://www.youtube.com/watch?v=HRZDGVCrDh4

Although some may have issues with it. It has become a crucial part of Minecraft 1.9+ PvP for the past several years, allowing for more fast-paced and tactical gameplay, people spend...

#

Expected behavior

I shouldn't receive an error to add the Color data to an ENTITY_EFFECT particle

Observed/Actual behavior

It throws this error
[21:55:43 WARN]: [ICClass] Task #30790 for ICClass v1.0 generated an exception java.lang.IllegalArgumentException: missing required data class org.bukkit.Color

Steps/models to reproduce

I spawn the particle with

p.world.spawnParticle(Particle.ENTITY_EFFECT) (shortened code but you get the point)
It gives me the error above.

However, if I then use the particle builder to add a color, I get the new error
[21:56:49 WARN]: [ICClass] Task #30817 for ICClass v1.0 generated an exception java.lang.IllegalStateException: Color may only be set on particle DUST.

Plugin and Datapack List

[22:01:04 INFO]: Server Plugins (79):
[22:01:04 INFO]: Bukkit Plugins:
[22:01:04 INFO]: - AdvancedAchievements, AdvancedArmorStands, AdvancedEnchantments, Brewery, BuycraftX, ChestShop, ChestShop-LegacyIds, Chunky, ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

isOnGround is sent with the movement packet so in theory it could be added to the movement event
It is unreliable but still a part of the protocol so having it added would be a benefit
For example anti cheats could make use of it instead of using nms
Also Player#isOnGround is not required to be called which is not even up to date within the event
Maybe an annotation to warn about it's unreliability and not deprecating it would be appropriate
Same with the isOnGround method

rustic folioBOT
#

Expected behavior

Calling ItemStack#removeEnchantments should remove all current enchantments, making it possible to re-enchant the item with the enchanting table or commands.

Observed/Actual behavior

After ItemStack#removeEnchantments is called on an item it can't be re-enchanted again. Putting it in the enchanting table doesn't show options and the /enchant command says the item has been enchanted but there are no enchantments present.
What I can see is that a diamond chestplate has 8 components by default and calling this method reduces that to 7.

Steps/models to reproduce

I created an empty plugin with the following onEnable (and registered the ench command in the plugin.yml)

    @Override
    public void onEnable() {
        PluginCommand ench = getCommand("ench");
        if(ench != null) {
            ench.setExecutor((sender, command, label, arg) -> {
                if(sender instanceof Player player) {
                    player.getInven...
rustic folioBOT
#

Expected behavior

An arrow projectile modified with the following code:

Arrow arrow;
arrow.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED);

should never allow pickup.

Observed/Actual behavior

An arrow, modified with the above code, after it 'bounces back' from an entity, is suddenly allowed to be picked up.
'Bouncing back' occurs when the entity is on damage cooldown (The video demonstrates this by damaging the entity with an arrow prior to firing other arrows that will bounce back).

Steps/models to reproduce

Code used (this video is for context, not the actual issue):

arrow.setPickupStatus(AbstractArrow.PickupStatus.CREATIVE_ONLY);

https://github.com/PaperMC/Paper/assets/69715898/2b446294-5c43-4e41-b781-1bacfb5bdd45

Code used:

arrow.setPickupStatus(AbstractArrow.PickupStatus.DISALLOWED);

https://github.com/PaperMC/Paper/assets/69715898/bb4de958-9230-4ce9-b64d-c62426f94a82

Plugin and Datapack List

Plugi...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: ver/1.20.6
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Yea, after digging through a bunch of client code, the issue was that I unfortunately tested this on a normal entity, not a player.

For some reason, the client implementation considers a RemotePlayer to always be "hurt" by an attack, when it does not do so for normal LivingEntitys.

Why that is the case, I have 0 idea. The option works for everything but players thanks to this somewhat shitty mechanic and there is nothing paper can do about it sadly.
I am unsure if this is even reportable to mojang, we should however 100% mention this in the docs.

rustic folioBOT
rustic folioBOT
#

A long standing bug in spigot and its derivatives was the fact that players taking damage while blocking with a shield would not receive invulnerability, while they do in vanilla.

This enabled the pvp technique of disabling a shield and immediately attacking again to knock a player into the air.
While upstream fixed this and properly aligned itself with vanilla damage logic (in this specific case) changing such long standing behaviour has some downsides.

To allow players used to this specific bug to still use it, this patch introduces a configuration option to re-introduce said bug. As there is no easy way to only re-add this bug, the option is found in the unsupported section as it may introduce other damage related disparity from vanilla.

rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: feature/registry-builders
#

Expected behavior

Paper had some fixes to the recipe iterator API, as it was broken on Spigot

Observed/Actual behavior

The recipe iterator fixes (https://github.com/PaperMC/Paper/blob/ver/1.20.4/patches/server/0663-Fix-removing-recipes-from-RecipeIterator.patch) seem to be missing on 1.20.5/6+ as far as I can see

Steps/models to reproduce

Iterator<Recipe> iterator = Bukkit.recipeIterator();
while (iterator.hasNext()) {
    if (iterator.next() instanceof Keyed keyed && keyed.key().asString().equals("minecraft:wooden_sword")) {
        iterator.remove();
    }
}
getLogger().info("Recipe: " + Bukkit.getRecipe(NamespacedKey.minecraft("wooden_sword")));

Works on 1.20.4, fails on 1.20.6

Plugin and Datapack List

> plugins
[22:51:52 INFO]: Server Plugins (1):
[22:51:52 INFO]: Bukkit Plugins:
[22:51:52 INFO]:  - PaperTestPlugin
> datapack list
[22:52:12 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit ...
rustic folioBOT
rustic folioBOT
#

Expected behavior

As it did on 1.20.4 and below, upstream also doesn't have the issue

Observed/Actual behavior

<img width="226" alt="Screenshot 2024-06-13 at 5 00 10โ€ฏPM" src="https://github.com/PaperMC/Paper/assets/25514360/fc8d707e-10e0-4f23-a4a9-2926a04c3878">

From what I've seen, ItemFrames are rendered a little bit offset from they should on client side, but if client targets the hitbox of where it should be, it displays the ItemFrame display name right

Steps/models to reproduce

Using the structure api, paste an .nbt structure that holds ItemFrames

Plugin and Datapack List

[17:06:58 INFO]: Bukkit Plugins:
[17:06:58 INFO]: - Basics, BlobBuild, BlobDesign, BlobEconomy, BlobLib, BlobPets, BlobRP, BlobTycoon, DecentHolograms, ItemEdit, LuckPerms, PlaceholderAPI, TAB, Vault, VoidGen, VoxelSniper

Paper version

[17:07:36 INFO]: This server is running Paper version 1.20.6-139-master@79e2cb6 (2024-06-13T14:55:37Z) (Implementing API version 1.20.6-R0.1-...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

#10877 created a PR for this, the option will have to live in unsupported, given it introduces a bug we are technically trying to solve.

It would be great if you guys can test this, given I myself am not the pvp god to hit a double click by mystically smacking my finger on a (razor omg) mouse ๐Ÿ˜…

It seems to work. Of course, this option allows Slime to destroy the shield at great speed again๐Ÿ˜ญ

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: ping-event
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: dev/registry-modification
#
[PaperMC/Paper] branch deleted: feature/registry-modification
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Stack trace

[23:30:24] [Server thread/ERROR]: Failed to handle packet net.minecraft.network.protocol.game.PacketPlayInWindowClick@2b8c0e29, suppressing error
net.minecraft.ReportedException: Container click
	at net.minecraft.world.inventory.AbstractContainerMenu.clicked(AbstractContainerMenu.java:398) ~[?:?]
	at net.minecraft.server.network.ServerGamePacketListenerImpl.handleContainerClick(ServerGamePacketListenerImpl.java:3395) ~[?:?]
	at net.minecraft.network.protocol.game.ServerboundContainerClickPacket.handle(ServerboundContainerClickPacket.java:58) ~[?:?]
	at net.minecraft.network.protocol.game.ServerboundContainerClickPacket.handle(ServerboundContainerClickPacket.java:23) ~[?:?]
	at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$0(PacketUtils.java:51) ~[?:?]
	at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.19.4.jar:git-Purpur-"7a392eb"]
	at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop...
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] branch deleted: feature/registry-builders
rustic folioBOT
#

Stack trace

[22:33:08] [pool-68-thread-1/ERROR]: Error upgrading world
net.minecraft.ReportedException: Updated chunk
	at net.minecraft.world.level.chunk.storage.ChunkStorage.upgradeChunkTag(ChunkStorage.java:141) ~[paper-1.20.6.jar:1.20.6-145-fe7043e]
	at net.minecraft.util.worldupdate.WorldUpgrader$ChunkUpgrader.tryProcessOnePosition(WorldUpgrader.java:203) ~[paper-1.20.6.jar:1.20.6-145-fe7043e]
	at net.minecraft.util.worldupdate.WorldUpgrader$ChunkUpgrader.tryProcessOnePosition(WorldUpgrader.java:191) ~[paper-1.20.6.jar:1.20.6-145-fe7043e]
	at net.minecraft.util.worldupdate.WorldUpgrader$AbstractUpgrader.processOnePosition(WorldUpgrader.java:470) ~[paper-1.20.6.jar:1.20.6-145-fe7043e]
	at net.minecraft.util.worldupdate.WorldUpgrader$AbstractUpgrader.upgrade(WorldUpgrader.java:340) ~[paper-1.20.6.jar:1.20.6-145-fe7043e]
	at net.minecraft.util.worldupdate.WorldUpgrader.work(WorldUpgrader.java:118) ~[paper-1.20.6.jar:1.20.6-145-fe7043e]
	at java.base/java.lang.Thre...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

AsyncPlayerSendCommandsEvent is fired twice, once async, then sync. The javadocs suggest using the logic if (event.isAsynchronous() || !event.hasFiredAsync()) { // do stuff } to only react to the async event.


However, this check will currently pass during both times the event fires. As seen using this simple plugin:

public final class BukkitTestPlugin extends JavaPlugin implements Listener {
    @Override
    public void onEnable() {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void onCommandsSentToPlayer(AsyncPlayerSendCommandsEvent<?> event) {
        getLogger().info("AsyncPlayerSendCommandsEvent{" +
                "isAsynchronous=" + event.isAsynchronous() +
                ", hasFiredAsync=" + event.hasFiredAsync() + "}"
        );
    }
}

When a player logs ...

rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] branch deleted: feature/ItemStack-proxy
#
[PaperMC/Paper] branch deleted: dev/1.21
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

jukebox.setRecord(null); should function normally

Observed/Actual behavior

jukebox.setRecord(null); triggers the following error:

[16:41:01 WARN]: java.lang.NullPointerException: Cannot invoke "net.minecraft.world.level.Level.registryAccess()" because "this.level" is null
[16:41:01 WARN]: at net.minecraft.world.level.block.entity.JukeboxBlockEntity.setSongItemWithoutPlaying(JukeboxBlockEntity.java:203)
[16:41:01 WARN]: at org.bukkit.craftbukkit.block.CraftJukebox.setRecord(CraftJukebox.java:86)

Steps/models to reproduce

Use Paper 1.21, and run the following code on a Jukebox:

jukebox.setRecord(null);

Plugin and Datapack List

CoreProtect

Paper version

This server is running Paper version 1.21-1-master@21c9a7c (2024-06-17T19:43:38Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: git-Paper-35 (MC: 1.20.6)

Other

No response

rustic folioBOT
#

Stack trace

https://paste.gg/p/anonymous/cefc6a21b93646e5a1c684c1fd92012b

Plugin and Datapack List

LuckPerms, spark, SystemChat, testplugin

Actions to reproduce (if known)

call a method that requires the chunk to be loaded in ChunkUnloadEvent. I used getTileEntities.

public final class TestPlugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
    }

    @Override
    public void onDisable() {

    }

    @EventHandler
    public void onChunkUnload(ChunkUnloadEvent e) {
        for (org.bukkit.block.BlockState state : e.getChunk().getTileEntities()) {
            //weeeeeee
        }
    }

}

### Paper version

[09:34:03 INFO]: Checking version, please wait...
[09:34:03 INFO]: This server is running Paper version 1.21-1-master@21c9a7c (2024-06-17T19:43:38Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the lates...
rustic folioBOT
rustic folioBOT
#

To me, it doesn't make sense to allow calling color(Color,float) for non DustOptions types. The float size doesn't apply to stuff like ENTITY_EFFECT.

Currently, all colour methods lead to this as shown below, hence I didn't want to make changes to make big changes to the existing API as seen below.

public ParticleBuilder color(@Nullable Color color) {
    return color(color, 1);
}

@NotNull
public ParticleBuilder color(int r, int g, int b) {
    return color(Color.fromRGB(r, g, b));
}

@NotNull
public ParticleBuilder color(final int rgb) {
    return color(Color.fromRGB(rgb));
}

I'll go ahead and add that size doesn't apply to ENTITY_EFFECT unless you prefer for me to change up the first colour method to make that execute it for the datatype of COLOR.

rustic folioBOT
#

Expected behavior

Before the recent ItemStack changes, you could new ItemStack(AIR, 0) to create an empty ItemStack (an ItemStack#empty, basically).

Observed/Actual behavior

amount is limited to above 0 now, even though places like ItemStack#empty/ItemType#createItemStack still allow that, which breaks old code from before ItemStack#empty using an amount of 0 to create empty stacks & is a bit of a weird inconsistency in general.

Steps/models to reproduce

new ItemStack(Material.AIR, 0)

Plugin and Datapack List

> plugins
[11:23:01 INFO]: Server Plugins (1):
[11:23:01 INFO]: Bukkit Plugins:
[11:23:01 INFO]:  - PaperTestPlugin
> datapack list
[11:23:16 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
[11:23:16 INFO]: There are no more data packs available

Paper version

> version
[11:23:29 INFO]: Checking version, please wait...
[11:23:29 INFO]...
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

in the paper-world-defaults.yml config:

chunks:
  delay-chunk-unloads-by: 0s

There should be no delay when a player leaves a chunk, before unloaded.

Observed/Actual behavior

The chunks appear to take about 5 seconds (give or take) to unload.

Steps/models to reproduce

Im just including a video as I dont really have code to test.
I just have my scoreboard which shows the amount of current oaded chunks in a world.
https://imgur.com/a/59it2KA

Plugin and Datapack List

pl
[09:31:16 INFO]: Server Plugins (11):
[09:31:16 INFO]: Bukkit Plugins:
[09:31:16 INFO]: - BeeConomy, PermissionsEx, RandomTeleport, SkBee, SkBriggy, skNoise, Skript, skript-reflect, spark, StressTestBots
[09:31:16 INFO]: Vault

Paper version

[09:31:26 INFO]: This server is running Paper version 1.21-4-master@090775e (2024-06-18T13:42:35Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-2-...

#

Expected behavior

To return the correct value

Observed/Actual behavior

Player#getViewDistance() is returning a value of 1 less than it should be

Steps/models to reproduce

player.setViewDistance(5)
then:
player.getViewDistance() will return 4

Plugin and Datapack List

[09:43:34 INFO]: Server Plugins (11):
[09:43:34 INFO]: Bukkit Plugins:
[09:43:34 INFO]: - BeeConomy, PermissionsEx, RandomTeleport, SkBee, SkBriggy, skNoise, Skript, skript-reflect, spark, StressTestBots
[09:43:34 INFO]: Vault

Paper version

[09:43:40 INFO]: This server is running Paper version 1.21-4-master@090775e (2024-06-18T13:42:35Z) (Implementing API version 1.21-R0.1-SNAPSHOT)

Other

No response

#

Is your feature request related to a problem?

I need to react differently if entity with Damageable#damage was damaged successfully or not. Currently, there's no way to figure it out, as damaging can be cancelled with EntityDamageEvent#setCancelled(true) with no feedback.

Describe the solution you'd like.

Make Damageable#damage methods return boolean, with false on a cancelled event.

Describe alternatives you've considered.

Calling EntityDamageEvent myself (which is unsupported, as events constructors are considered internal) and checking if it was cancelled.
I was thinking about checking entity's health before and after, but the final damage might result in 0, which if different from cancellation.

Other

Damageable#heal might need a similar feature, since EntityRegainHealthEvent is cancellable too.

rustic folioBOT
#

Then I think it's worth creating a new set of methods like callDamage (or, reflecting underneath methods, damageEntity) with the said or similar implementation. Then the original damage methods can be deprecated indefinitely, and their implementation to be changed to just calling the new methods.
There are plenty of plugins that do add custom weapons and stuff, and to properly consider for PvE/PvP protecting plugins like WorldGuard or CombatLogX, there's always a need for some tricky workarounds.

Otherwise, well, I think it should at least be noted in the javadocs that damaging can be cancelled.

#

Expected behavior

respawn player should not have any potion effects

Observed/Actual behavior

when player died with slowness effect, he will get infinite slowness potion effect.
And drinking milk doesn't remove slow effects from the player.

Steps/models to reproduce

player.addPotionEffect(new PotionEffect(PotionEffectType.SLOWNESS, 80, 5, true));
then /kill player

Plugin and Datapack List

testplugin

Paper version

Paper-1.21-4

Other

No response

rustic folioBOT
#

Stack trace

[12:00:12] [Server thread/ERROR]: Encountered an unexpected exception
net.minecraft.ReportedException: Exception ticking world
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1744) ~[paper-1.21.jar:1.21-1285-b4b8208]
	at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:471) ~[paper-1.21.jar:1.21-1285-b4b8208]
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1538) ~[paper-1.21.jar:1.21-1285-b4b8208]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1246) ~[paper-1.21.jar:1.21-1285-b4b8208]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.jar:1.21-1285-b4b8208]
	at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.IllegalStateException
	at ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkHolderManager.processUnloads(ChunkHolderManager.java:1100) ~[paper-1.21.jar:1.21-1...
#

Stack trace

[21:20:46] [Paper Plugin Remapper Thread - 1/INFO]: [ReobfServer] Remapping server...
[21:20:57] [Paper Plugin Remapper Thread - 1/INFO]: [ReobfServer] Done remapping server in 11812ms.
[21:20:58] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]
[21:20:58] [Yggdrasil Key Fetcher/ERROR]: Failed to request yggdrasil public key
com.mojang.authlib.exceptions.MinecraftClientException: Failed to read from https://api.minecraftservices.com/publickeys due to api.minecraftservices.com
	at com.mojang.authlib.minecraft.client.MinecraftClient.readInputStream(MinecraftClient.java:108) ~[authlib-6.0.54.jar:?]
	at com.mojang.authlib.minecraft.client.MinecraftClient.get(MinecraftClient.java:57) ~[authlib-6.0.54.jar:?]
	at com.mojang.authlib.yggdrasil.YggdrasilServicesKeyInfo.fetch(YggdrasilServicesKeyInfo.java:114) ~[authlib-6.0.54.jar:?]
	at com.mojang.authlib.yggdrasil...
#

Expected behavior

isChunkGenerated returning false for non-full chunks

Observed/Actual behavior

isChunkGenerated returning true for non-full chunks
this leads to problems like these:
image

Steps/models to reproduce

  1. use paper 1.21 build #4
  2. generate chunks with chunky
  3. see all chunks not being generated

Plugin and Datapack List

plugins
[19:35:13 INFO]: Server Plugins (5):
[19:35:13 INFO]: Bukkit Plugins:
[19:35:13 INFO]:  - Chunky, Essentials, floodgate, Geyser-Spigot, squaremap

(no datapacks)

Paper version

version
[19:35:35 INFO]: Checking version, please wait...
[19:35:36 INFO]: This server is running Paper version 1.21-4-master@090775e (2024-06-18T13:42:35Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-3-4514f41 (MC: 1.21)

Other

discussion over at https://disc...

rustic folioBOT
#

Expected behavior

Minecarts with players or chests move for more than 5 blocks

Observed/Actual behavior

Minecarts with players or chests freeze after gaining set momentum until pushed by a player.

Steps/models to reproduce

  1. Create a Paper 1.21-6 server
  2. Add and enable the data pack
  3. Ignore the error message about an invalid recipe
  4. Try using a minecart with a player or chest

Plugin and Datapack List

Modified Darceno's minecarts to work for 1.21
(Original datapack)

Paper version

This server is running Paper version 1.21-6-master@126f6d7 (2024-06-18T20:03:56Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version

Other

No response

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Stack trace

Because this exception happened on my Paper fork, I've decided to code a plugin to see if moonrise$getFullChunkIfLoaded actually crashes every time you try to load an unloaded chunk, that's why there are two sets of exceptions: One of the "artificial" exception caused by my plugin running on Paper 1.21 build 7, and another one from my public server that is running my own Paper fork.

Me trying to purposely trigger the exception with my own plugin:

            val world = Bukkit.getWorld("world")
            val level = (world as CraftWorld).handle
            val fc = level.`moonrise$getFullChunkIfLoaded`(20, 20)
            context.sendMessage("$fc")
[21:34:50 WARN]: java.lang.NullPointerException: Cannot invoke "ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder.isFullChunkReady()" because "newChunkHolder" is null
[21:34:50 WARN]:        at net.minecraft.server.level.ServerLevel.moonrise$getFullChunkIfLoad...
rustic folioBOT
rustic folioBOT
#

Can confirm the same issue, but just like @fantahund I'm not really sure what causes this crash

[01:47:52] [Server thread/ERROR]: Encountered an unexpected exception
java.lang.RuntimeException: java.util.concurrent.ExecutionException: net.minecraft.ReportedException: Exception ticking world
        at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1792) ~[sparklypaper-1.21.jar:1.21-DEV-1b63d66]
        at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:488) ~[sparklypaper-1.21.jar:1.21-DEV-1b63d66]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1543) ~[sparklypaper-1.21.jar:1.21-DEV-1b63d66]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1251) ~[sparklypaper-1.21.jar:1.21-DEV-1b63d66]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:334) ~[sparklypaper-1.21.jar:1.21-DEV-1b63d66]
        at java.base/java.lang.Threa...
rustic folioBOT
#

Stack trace

https://paste.gg/p/JasonHorkles/aa3b43704c5944b2846df3b1cb5a63f9

Plugin and Datapack List

[20:36:59 INFO]: Paper Plugins:
[20:36:59 INFO]: - SignedVelocity
[20:36:59 INFO]: Bukkit Plugins:
[20:36:59 INFO]: - Chunky, CommandDoesNotExist, CoreProtect, DoubleShulkerShells, FileCleaner, floodgate, GSit, HidemFrames, LuckPerms, NoEndermanGrief
[20:36:59 INFO]: PlaceholderAPI, ProtocolLib, SilverstoneGlobal, spark, TAB-Bridge, UnlimitedAnvil, Vault, VeinMiner, ViaBackwards, ViaVersion

Actions to reproduce (if known)

  1. Install Chunky
  2. Run Chunky pregeneration

Paper version

This server is running Paper version 1.21-7-master@d23825a (2024-06-19T01:36:53Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-4-090775e (MC: 1.21)

Other

Player generation seems fine, just not generation done via Chunky

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

Currently the constructor for ClientboundSystemChatPacket takes in a Component or a BaseComponent and performs expensive calculations.

At the end of the day, the system chat message is sent as a String.

Describe the solution you'd like.

I am proposing one extra constructor with plain String to allow developers sending json messages without performance hits.

I am writing my own component parser and currently it has to be converted into JSON String, then CraftChatMessage.fromJSON, then back to String, wasting performance.

Describe alternatives you've considered.

.

Other

No response

rustic folioBOT
#

IDK what version you are looking at, but 1.21 uses a StreamCodec to write the Component into the FriendlyByteBuf.
Paper specifically also has logic in these codecs, so I don't see how we'd expose a string here without rewriting how the packet is serialized, which is a rather large diff for 0 gain on our side.

Not to mention that this is obviously internals.

rustic folioBOT
#

The string tag only works for simple text, i.e. no formatting, etc, otherwise, it's an NBT compound tag, which needs to be encoded anyway, using the same codec system.

There is 0 gain for supporting NBT here, and we generally do not change the internals to support plugins unless there is a good, strong-standing reason to do so. Messing with packet classes for plugins is generally a no-go for long-term maintenance reasons.

rustic folioBOT
#

Expected behavior

The vanilla teleportation behavior should either:

  1. Send the player to a different dimension, and to the right location, as if the player teleported from the location that triggered this event.
  2. Not trigger at all, as the player nolonger is at the original location

Observed/Actual behavior

In some cases the player teleports monodimensionally (Race condition?), also generating a destination portal, if necessary.

Steps/models to reproduce

Monodimensionall travel can be reproduced with this minimal(ish) reproducible script:

@EventHandler
    void onPlayerMove(PlayerMoveEvent event) {
        Location to = event.getTo();
        Location from = event.getFrom();
        if (from.getBlockX() == to.getBlockX() &&
                from.getBlockY() == to.getBlockY() &&
                from.getBlockZ() == to.getBlockZ()) {
            return;
        }
        Material toType = to.getBlock().getType();
        if (!Tag.PORTALS.isTagged(to...
rustic folioBOT
#

Expected behavior

World height increased from 384 to 448.

Observed/Actual behavior

logical world height increase is ignored and is stuck at 384.

Steps/models to reproduce

place a datapack with the file placed within datapack_name\data\minecraft\dimension_type\overworld.json with the properties height and logical_height changed in increments of 64:

{
  "ambient_light": 0.25,
  "bed_works": true,
  "coordinate_scale": 1.0,
  "effects": "minecraft:overworld",
  "has_ceiling": false,
  "has_raids": true,
  "has_skylight": true,
  "height": 512,
  "infiniburn": "#minecraft:infiniburn_overworld",
  "logical_height": 512,
  "min_y": -64,
  "monster_spawn_block_light_limit": 0,
  "monster_spawn_light_level": {
    "type": "minecraft:uniform",
    "max_inclusive": 7,
    "min_inclusive": 0
  },
  "natural": true,
  "piglin_safe": false,
  "respawn_anchor_works": false,
  "ultrawarm": false
}

optionally, can change this for overworl...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

When using bundles I would expect getCursor to return the item in the cursor. To be more specific, I would expect getCursor to return:

  • The item being inserted/removed from the bundle when right clicking the bundle while it is in an inventory
  • The bundle when inserting/removing items while holding the bundle in your cursor

Observed/Actual behavior

When inserting and removing items from a bundle in the inventory, getCursor returns the bundle.

When inserting and removing items from a bundle in the cursor, getCursor returns the item in the slot after the item is moved. For example, when inserting a single a single white wool block into an empty bundle, air will be returned. If you then tried to insert a stack of 64 white wool into the same bundle, a single white wool block would be returned (This the wool block left over after the bundle is filled).

Steps/models to reproduce

  1. Create a plugin with an InventoryClickEvent similar to this...
#

To expand on how a vanilla change caused this... When a projectile is deflected, it's owner is changed to the entity that it deflected off of. And for arrows, when the arrow's owner is changed to a player and the pickup status was disallowed, it's reset to allowed. I probably need some clarification on how this is a vanilla feature or not before we move to change it in some way. I created a mojira report which hopefully provides some insight.

rustic folioBOT
#

Expected behavior

It should let player to join server

Observed/Actual behavior

It prevents player from joining server, showing the infinite "Logging to the server" on the client screen

Steps/models to reproduce

Load server and try to join it and you see the error in the console

Plugin and Datapack List

FastAsyncWorldEdit, WorldEdit, WorldGuard, my custom plugin (updated to 1.21 and not shown on stacktrace)

Paper version

1.21 build(s) 4, 9, 14

Other

Console stack trace: https://pastebin.com/LGeHgwjQ

rustic folioBOT
#

Expected behavior

fireballs should be moving

Observed/Actual behavior

fireballs just float at their spawn location

Steps/models to reproduce

agro dragon and look up

Plugin and Datapack List

ViaVersion-5.0.1-SNAPSHOT build #858
ViaRewind-4.0.0 build #52
ViaBackwards-5.0.1-SNAPSHOT build #433

Paper version

Paper version 1.21-14-master@e0d9d60 (2024-06-19T18:02:15Z) (Implementing API version 1.21-R0.1-SNAPSHOT)

Other

No response

rustic folioBOT
rustic folioBOT
#

Expected behavior

These items cannot be used, lava cannot be placed, the boat does not appear

Observed/Actual behavior

.

Steps/models to reproduce

Trying to use one of these items

Plugin and Datapack List

[00:33:01 INFO]: Bukkit Plugins: (9):
[00:33:01 INFO]: - Chunky, Geyser-Spigot, HardAPI, Multiverse-Core, spark, Vault, ViaBackwards, ViaVersion, WorldEdit
(none of this conflicts)

Paper version

1.21-15-master@2df432f (2024-06-19T19:19:30Z)

Other

No response

rustic folioBOT
#

using paperMC experimental (1.21) spotted.moonrise.patches seems to causing issues for my friend and I our world reverted back to when I roughly logged into the server judging by the time difference (when it crashed it went back to before I placed a chest with my inventory, cut down some trees and made a 2 tunnel wide mineshaft with a friend down to y=6, when it undid that I lost my chest with my inventory)

the crash happened when i triggered a skulk sensor and my friend at the time was taking taking damage, although that might just be random.

my player data was fine aka i had all the diamonds I mined and redstone and such from that mining session in the cave

crash-2024-06-18_23.14.17-server.txt

#

using paperMC experimental (1.21) spotted.moonrise.patches seems to causing issues for my friend and I our world reverted back to when I roughly logged into the server judging by the time difference (when it crashed it went back to before I placed a chest with my inventory, cut down some trees and made a 2 tunnel wide mineshaft with a friend down to y=6, when it undid that I lost my chest with my inventory)

the crash happened when i triggered a skulk sensor and my friend at the time was taking taking damage, although that might just be random.

my player data was fine aka i had all the diamonds I mined and redstone and such from that mining session in the cave

crash-2024-06-18_23.14.17-server.txt

Update Paper, there were multiple chunk fixes in newer builds

rustic folioBOT
#

Stack trace

https://mclo.gs/0JVVedL

Plugin and Datapack List

plugins
[22:19:48 INFO]: Server Plugins (1):
[22:19:48 INFO]: Bukkit Plugins:
[22:19:48 INFO]: - WorldEdit

datapack list
[22:19:50 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
[22:19:50 INFO]: There are no more data packs available

Actions to reproduce (if known)

/kill @e[type=!player] seems to work but creates the stacktrace
/kill @e[type=player] will work without issue

player can be replaced with any valid entity

Paper version

version
[22:19:53 INFO]: This server is running Paper version 1.21-15-master@2df432f (2024-06-19T19:19:30Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-7-d23825a (MC: 1.21)

Other

when executing one of the "/kill @e[type=! " commands in game, you get the "An unexpected error occurred trying to execute that command" error and can see the ...

rustic folioBOT
#

Expected behavior

When the server is started, you can type characters in the cmd console to execute commands.

Observed/Actual behavior

When you try to enter text in the cmd console, sometimes it doesn't work correctly, and you need to press several times or hold the key for the characters to appear.

Steps/models to reproduce

  1. Open cmd.exe.
  2. Start server with command: java -jar paper-1.21-*.jar -nogui, wait for the server to load completely.
  3. Try to type something in the cmd console.
  4. The character sometimes can't be typed.

Plugin and Datapack List

/datapack list:
There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
There are no more data packs available
/plugins:
Server Plugins (0):

Paper version

[16:20:55 INFO]: Checking version, please wait...
[16:20:56 INFO]: This server is running Paper version 1.21-15-master@2df432f (2024-06-19T19:19:30Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

TraderLlama entities should spawn correctly and be leashed to the specified WanderingTrader when using setLeashHolder.

Observed/Actual behavior

When setLeashHolder is called on a TraderLlama, the entity fails to spawn. Without calling setLeashHolder, the TraderLlama spawns correctly but without a leash. The issue does not occur with regular Llama entities, which spawn and leash correctly to the WanderingTrader.

Steps/models to reproduce

  1. Create a command or method to spawn a WanderingTrader and two TraderLlama entities.
  2. Use the setLeashHolder method to leash the TraderLlama entities to the WanderingTrader.
  3. Observe that the TraderLlama entities fail to spawn when setLeashHolder is used.
  4. Comment out the setLeashHolder call and observe that the TraderLlama entities spawn without the leash.
  5. Change the entity to Llama and observe that setLeashHolder works correctly.

I am willing to provide code sample if needed

Plugin and Datap...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Sprinting to be controlled by config option

Observed/Actual behavior

Sprinting always being set to false

Steps/models to reproduce

1.20.6 diff
https://github.com/PaperMC/Paper/blob/ver/1.20.6/patches/server/0185-Configurable-sprint-interruption-on-attack.patch

1.21 diff
https://github.com/PaperMC/Paper/blob/master/patches/server/0184-Configurable-sprint-interruption-on-attack.patch#L15

Plugin and Datapack List

None

Paper version

Latest

Other

No response

rustic folioBOT
#

Expected behavior

Fire not being cleared if the target.hurt(damagesource, f3) returns false

Observed/Actual behavior

Fire is cleared if target.hurt(damagesource, f3) returns false

Steps/models to reproduce

1.20.6
https://github.com/PaperMC/Paper/blob/ver/1.20.6/patches/server/0157-Send-attack-SoundEffects-only-to-players-who-can-see.patch#L54

1.21
https://github.com/PaperMC/Paper/blob/master/patches/server/0156-Send-attack-SoundEffects-only-to-players-who-can-see.patch#L73-L83

flag4 was a different variable in 1.20.6, and that clearFire method call shouldn't even exist now.

Plugin and Datapack List

None

Paper version

Latest 1.21

Other

No response

rustic folioBOT
rustic folioBOT
#

Expected behavior

The VehicleEntityCollisionEvent should only be triggered if the event parameter is a VehicleEntityCollisionEvent.

Observed/Actual behavior

The VehicleEntityCollisionEvent gets triggered with a VehicleBlockCollisionEvent as event parameter.

Steps/models to reproduce

    @EventHandler
    public void onVehicleCollision(VehicleEntityCollisionEvent event) {
        plugin.getLogger().info("Vehicle collision event triggered with " + event.getClass().getName());
    }

Plugin and Datapack List

/plugins

Server Plugins (1):
Bukkit Plugins:
- CollisionExample

/datapack list

There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
There are no more data packs available

Paper version

This server is running Paper version 1.20.6-147-ver/1.20.6@e41d44f (2024-06-17T19:24:35Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
You are running the latest version
Prev...

#

Expected behavior

When I stop the server, all chunks should be saved

Observed/Actual behavior

Some seemingly random chunks are not being saved correctly

Steps/models to reproduce

edit multiple different chunks, save or stop server, reboot, some chunks should be left unchanged whilst others will be changed

Plugin and Datapack List

DiscordSRV, Floodgate, Geyser-Spigot, SkinsRestorer
Vanilla (built-in), file/bukkit (world), paper (built-in)

Paper version

Paper version 1.21-1-master@21c9a7c (also warns me for being 19 versions behind)

Other

Pretty sure there was the same issue for the latest release of paper (not alpha)

#

Expected behavior

Components obtained through pages() should be styled the same for WRITABLE_BOOK and WRITTEN_BOOK.

Observed/Actual behavior

WRITABLE_BOOK:

[01:57:49 INFO]: [TestPlugin] isSigning: false, hasStyling: true
[01:57:49 INFO]: [TestPlugin] <gold>test

WRITTEN_BOOK:

[01:57:59 INFO]: [TestPlugin] isSigning: true, hasStyling: false
[01:57:59 INFO]: [TestPlugin] ยง6test

Steps/models to reproduce

public final class Plugin extends JavaPlugin implements Listener {
    private final Logger logger = getLogger();
    private final MiniMessage miniMessage = MiniMessage.miniMessage();

    @Override
    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void onPlayerEditBook(PlayerEditBookEvent e...
rustic folioBOT
#

What happens if you create a valid component, I.e. not using the legacy
stuff, as that is just text and is not considered actual formatting by the
modern system

On Fri, 21 Jun 2024 at 02:32, Gaweล‚ Kazimierczuk @.***>
wrote:

Expected behavior

Components
https://jd.advntr.dev/api/4.17.0/net/kyori/adventure/text/Component.html
obtained through pages()
https://jd.advntr.dev/api/4.17.0/net/kyori/adventure/inventory/Book.html#pages()
should be styled the same for WRITABLE_BOOK and WRITTEN_BOOK.
Observed/Actual behavior

WRITABLE_BOOK:

[01:57:49 INFO]: [TestPlugin] isSigning: false, hasStyling: true
[01:57:49 INFO]: [TestPlugin] <gold>test

WRITTEN_BOOK:

[01:57:59 INFO]: [TestPlugin] isSigning: true, hasStyling: false
[01:57:59 INFO]: [TestPlugin] ยง6test

Steps/models to reproduce

public final class Plugin extends JavaPlugin implements Listener {
private final Logger logger = getLogger();
private...

rustic folioBOT
#

@electronicboy I just tried that and writable_book does not support it!

Looks like it's not a bug in Paper or Adventure, but rather a "feature" in Minecraft: MC-272175

Out of curiosity, I tried creating a writable book using components:

ItemStack is = new ItemStack(Material.WRITABLE_BOOK);
BookMeta meta = (BookMeta) is.getItemMeta();
meta.addPages(
        Component.empty().color(NamedTextColor.GOLD).content("test")
);
is.setItemMeta(meta);

Note: BookMeta is used instead of WritableBookMeta, as the latter doesn't support components.

To my surprise, the book is displaying correctly in game and looks like it was converted to legacy styling:
image

So it looks like there is some conversion in place, but only one-way.

rustic folioBOT
#

Expected behavior

Tbh i didn't expected anything it just happened since my update from the 1.20.4 -> 1.21

Observed/Actual behavior

I am creating custom item/weapon system and i update my old one to the 1.21 standards, methods etc and now when i open the creative inventory all the attribute modifiers. It just happened out of nowhere i didn't code anything within the creative inventory.

Steps/models to reproduce

My code to set the attribute modifiers:

@Override
default HashMap<Class<?>,InitUpdateMethod> getInitUpdateMethods() {
HashMap<Class<?>,InitUpdateMethod> initUpdateMethods = ClickHitDamageItem.super.getInitUpdateMethods();
initUpdateMethods.put(HitWeaponItem.class, itemStack -> {
itemStack.editMeta(meta -> {
meta.addAttributeModifier(
Attribute.GENERIC_ATTACK_DAMAGE,
new AttributeModifier(
new NamespacedKey(CatalyaRPG.get...

rustic folioBOT
rustic folioBOT
#

Expected behavior

There should be the unknown command message in console

Observed/Actual behavior

There is no output

Steps/models to reproduce

  1. Run an unknown command via console
  2. See output

Plugin and Datapack List

[23:15:43 INFO]: Server Plugins (1):
[23:15:43 INFO]: Bukkit Plugins:
[23:15:43 INFO]: - Chunky

Paper version

[23:15:54 INFO]: Checking version, please wait...
[23:15:54 INFO]: This server is running Paper version 1.21-20-master@8b1d26d (2024-06-21T00:30:00Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-9-4ea696f (MC: 1.21)

Other

Doesn't happen on Spigot or 1.20.4 (haven't tested .6)

rustic folioBOT
#

Expected behavior

Effects obtained from e.g. enchanted golden apples should not immediately disappear

Observed/Actual behavior

Effects disappear within a second

Steps/models to reproduce

Build #21 (or previous builds) of Paper.

Eat an enchanted golden apple.

https://github.com/PaperMC/Paper/assets/61745317/9176e8ff-73d7-4230-afa0-8b34f7ce275a

Plugin and Datapack List

Plugins:

  • HuskHomes
  • DeluxeMenus
  • GriefPrevention
  • LuckPerms
  • Multiverse-Core
  • NoCheatPlus
  • PlaceholderAPI
  • PlayerStats
  • Vault
  • WorldEdit

Datapacks:

  • vanilla
  • file/bukkit
  • paper

Paper version

This server is running Paper version 1.21-21-master@0a1b133 (2024-06-21T09:19:07Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-15-2df432f (MC: 1.21)

Other

Nothing appears in logs. Running under Arch Linux, systemd service

rustic folioBOT
#

Stack trace

https://paste.gg/p/anonymous/4243d7a7fa784d25969ee44d70d300b4

Plugin and Datapack List

[16:59:12 INFO]: Server Plugins (30):
[16:59:12 INFO]: Paper Plugins:
[16:59:12 INFO]:  - bedrock, calendar, FancyHolograms, FancyNpcs, minephone, navigate, popcorn_test, sport, storehouse, vehicles
[16:59:12 INFO]:  visuals
[16:59:12 INFO]: Bukkit Plugins:
[16:59:12 INFO]:  - CommandBlockWhitelist, ConsoleSpamFix, CraftingStore, DisplayEntityEditor, dynmap, Elevator, Essentials, FastAsyncWorldEdit, GSit, HeadDatabase
[16:59:12 INFO]:  LuckPerms, Multiverse-Core, packetevents, PlaceholderAPI, spark, TAB, Vault, WorldEditSUI, WorldGuard
[16:59:19 INFO]: There are 4 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)], [file/vindex (world)]
[16:59:19 INFO]: There are no more data packs available

Actions to reproduce (if known)

I was flying around the world with EssentialsX /speed 10 turned on

###...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

I would like to propose the reintroduction of the obfuscated version of Paper. Despite the remapping feature, we are unable to use it because not all reflection calls are supported. Users should be able to choose whether they want to use the obfuscated or unobfuscated version at runtime.

We have been very successful with the obfuscated version so far and currently do not see any added value in using the Mojang-mapped version. Remapping the plugins consumes unnecessary resources, and we do not wish to operate our plugins in the Mojang mappings.

Describe the solution you'd like.

I understand that the Mojang-mapped version is offered and see its benefits for some users. However, it would be very helpful if at least the old obfuscated version could still be provided through the download API until the existing issues are resolved.

Describe alternatives you've considered.

Other

No response

#

not all reflection calls are supported

What reflection calls are not supported? If some are missing, they can be added.

Users should be able to choose whether they want to use the obfuscated or unobfuscated version at runtime.

This kind of choice should have 0 impact on users, it really has nothing to do with the operation of the server.

Remapping the plugins consumes unnecessary resources

What kind of resources? Plugins are remapped once and then cached.

#

What reflection calls are not supported? If some are missing, they can be added.
We have added dependencies via the java -cp .. in the classpath. The reflection calls of this are not remapped.

This kind of choice should have 0 impact on users, it really has nothing to do with the operation of the server.
The term user refers to the operator.

What kind of resources? Plugins are remapped once and then cached.
Even if the plugins are cached, additional resources are still required for remapping the reflection at runtime. This may not make much difference on a single Minecraft server, but with 100 servers the effort should not be underestimated. In addition, we currently have to ensure that the caches are preserved. So far, our servers have been thoroughly cleaned of artifacts after a restart. It is therefore generally advantageous to create as few manageable artifacts as possible.

#

You can still produce a reobf jar to my understanding, but the reality here is that we are moving away from spigot, in which, we will no longer have any obfuscation mappings to go off. For a period of time we might release jars containing a copy of spigots mappings after spigot releases, but it will not be a long term thing.

if there is any missing holes in the tooling, it would be best that issues are created so that we can resolve them, because we have no interest in moving backwards in our progress to separate from spigot.

#

I was already aware that we had encountered some issues with the transition and therefore wanted to suggest reconsidering it. I'm also aware that the Re-Obf Jar can still be generated. It just adds extra effort to build the project manually. Hence, the suggestion was to adjust the Download API to continue providing the Re-Obf Jar. The Plugin Remapping is already a quite specific operation, from which I haven't yet seen any added value.

#

Paper wants to release versions before spigot releases them, on that time they just can't provide reobfuscated versions since spigot doesn't use Minecraft obfuscated names everywhere, but own semi deobfuscated names, and they just can't guess what remappings they'll invent. That's why they move to mojang mappings, they are released with the version itself and are more reliable, so they'll be able to use them in future

rustic folioBOT
#

When flattening any command or registering an alias to a node with no direct children (such as a redirect), the code now takes into account any potential redirect/fork/forward on the target node. This fixes the issue where, when registering a command that was simply a redirect, only the namespaced literal would work, and not any aliases of the command.

This fixes #10827, and is now correctly based on a non-master branch :)

rustic folioBOT
rustic folioBOT
#

Expected behavior

If you make changes using the plugin bootstrap feature and cause a exception this messages are printed in logs

Observed/Actual behavior

When you cause a exception in bootstrap that messages are not show and confuse users because the most of this throws cause the server to stop

Steps/models to reproduce

You can use this plugin https://github.com/Doc94/PaperTestRegistryReflectionEnchantment where register a Enchantment but not use all the mandatory fields in builder causing Registry throws a exception

Plugin and Datapack List

PaperTestRegistryReflectionEnchantment

Paper version

[22:31:18 INFO]: Checking version, please wait...
[22:31:18 INFO]: This server is running Paper version 1.21-25-master@19105a9 (2024-06-21T19:03:48Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-19-2118196 (MC: 1.21)

Other

This was talked in discord and a fix comes from https://github.com/PaperMC/P...

rustic folioBOT
#

Expected behavior

The Method getName() of an offline player should return their name not the uuid

Observed/Actual behavior

The Method getName() returns the uuid as string

Steps/models to reproduce

Create a plugin that calls Bukkit.getOfflinePlayer(uuid).getName()

Plugin and Datapack List

Only the Plugin that calls Bukkit.getOfflinePlayer(uuid).getName()

Paper version

[13:25:23 INFO]: Checking version, please wait...
[13:25:23 INFO]: This server is running Paper version 1.21-25-master@19105a9 (2024-06-21T19:03:48Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version

Other

No response

rustic folioBOT
#

Expected behavior

Since clearing the drop list results in no item drops, mutating the list should also change the items dropped by the event.

Observed/Actual behavior

Changing the contents of the list has no effect (the list is probably a copy?) the same items are dropped that would drop otherwise.

Steps/models to reproduce

register the following event handler

	public void onPlayerShearBlock(PlayerShearBlockEvent e) {
		e.getDrops().clear();
		e.getDrops().add(new ItemStack(Material.DIAMOND));
	}

This should make it so for example carving a pumpkin drops a diamond but it still only drops the pumpkin seeds.
If I change the code to just:

	public void onPlayerShearBlock(PlayerShearBlockEvent e) {
		e.getDrops().clear();
	}

then no item is dropped, as expected.

Plugin and Datapack List

Empty/only test plugin

Paper version

[14:39:26 INFO]: Checking version, please wait...
[14:39:26 INFO]: This server is running ...
rustic folioBOT
#

Stack trace

[paste your stack trace or a paste.gg link here!](https://paste.gg/p/anonymous/62ae56763f4d45ad89e13b5bb9120724/revisions)

Plugin and Datapack List

[22:02:37 INFO]: - MarriageMaster, Minepacks
[22:02:37 INFO]: Bukkit Plugins:
[22:02:37 INFO]: - AntiCrasher, AutoShutdown, BanFromClaim, BetterRTP, BottledExp, Cat_Nurfpemtume, CatArmor_Stand_Tools, catautofly, CatAutoRemoveClaim, catAutoRestart
[22:02:37 INFO]: CatChatGUI, CatClaimBuy, Catclaimfly, CatCore-v2.0, catHopperliimt, CatMobMoney, catNick, CatnoobEnchantAddonPlugin, catnoobKit, CatOreReplace
[22:02:37 INFO]: CatRaidLimitPlugin, CatShiftFcommand, CatSpyDropper, ChatHelper, ChestCommands, ChestSort, Claimtp, ClearLag, CMILib, CoCoBeenAgreeRulesPlugin
[22:02:37 INFO]: CommandTimer, CoreProtect, DecentHolograms, DeluxeMenus, DiscordSRV, Elevators, EpicRename, Essentials, EssentialsMysqlStorage, EssentialsSpawn
[22:02:37 INFO]: ExcellentEnchants, ez-broadcast, FastAsyncWorldEdit, Frie...

rustic folioBOT
rustic folioBOT
#

I am able to reproduce this. For context, the datapack seems to teleport the minecart once a certain speed is reached:

execute as @s[scores={VanillaPlusCartsXSpeed=50..}] at @s if block ~1 ~ ~ #minecraft:rails[shape=east_west] run tp @s ~1 ~ ~
execute as @s[scores={VanillaPlusCartsXSpeed=..-50}] at @s if block ~-1 ~ ~ #minecraft:rails[shape=east_west] run tp @s ~-1 ~ ~
execute as @s[scores={VanillaPlusCartsZSpeed=50..}] at @s if block ~ ~ ~1 #minecraft:rails[shape=north_south] run tp @s ~ ~ ~1
execute as @s[scores={VanillaPlusCartsZSpeed=..-50}] at @s if block ~ ~ ~-1 #minecraft:rails[shape=north_south] run tp @s ~ ~ ~-1

This seems to cause the minecart to get stuck, not only loosing velocity but you are also unable to move it forward by pressing W until exiting and re-entering the minecart.
In vanilla the minecart continues moving just fine.

The datapack also forceloads chunks with minecarts travelling through them which seems like a really bad idea. Datapacks t...

rustic folioBOT
#

I cannot reproduce this with the schematic provided on 1.20.6 or 1.21. The iron golems go through the water just fine and fall to their burning deaths. However, the farm gets clogged up quite easily, causing a bit of an iron golem traffic jam before the drop.

So either this problem has been fixed in newer versions, or it was caused by one of your plugins.
The collision optimisation patch that could cause this is still missing from 1.21. However, the farm also works fine on 1.20.6, which has all the relevant patches applied.

As I cannot reproduce this on 1.21 or 1.20.6, and 1.20.4 is unlikely to get any more fixes as it is outdated, I will close this issue.
If you can reproduce this on 1.21 and without any plugins, feel free to reply and it can be reopened.

rustic folioBOT
rustic folioBOT
#

I've updated SectorTool to 1.3 to fix an issue where SectorFiles are far larger than they should be when converting RegionFiles using the raw flag or when the RegionFiles were stored with the uncompressed format. This affects the auto conversion previously in this branch as well, as it converted using the raw flag.

If the original RegionFiles were stored in a compressed format, the large size can be fixed by converting from SectorFile to RegionFile and then back again. If the RegionFiles were in an uncompressed format, then you need to convert to RegionFile, then use the recreateRegionFiles startup option with forceUpgrade and then convert back to SectorFile.

SectorTool 1.3 also includes a minor disk space improvement by not storing type headers on disk if they're unused (this mostly will cause the type headers for poi and entity to be unallocated until data is written for them), which has been copied over to this branch.

Note that the branches are still on 1.20.6 as of wri...

rustic folioBOT
rustic folioBOT
#

Expected behavior

When a custom recipe is added to the server, you should be able to craft the result of the recipe

Observed/Actual behavior

Crafting the recipe does not yield a result

custom-crafting-paper-vs-spigot

Steps/models to reproduce

Add a custom recipe via a plugin:

public class CustomRecipeTester
  extends JavaPlugin
{
  public String pluginName;
  
  public void onDisable() {}
  
  public void onEnable() {
    ItemStack is = new ItemStack(Material.LEATHER_HELMET, 1);
    ItemMeta im = is.getItemMeta();
    im.setDisplayName("A Thing");
    im.setCustomModelData(Integer.valueOf(1));
    im.setLore(List.of("The essential thing!"));
    is.setItemMeta(im);
    NamespacedKey key = new NamespacedKey("customrecipetester", "athing");
    ShapedRecipe r = new ShapedRecipe(key, is);
    r.shape(new String[] { "   ", "SWS", "   " });
    r.set...
rustic folioBOT
rustic folioBOT
#

Expected behavior

[23:33:34 ERROR]: The server has not responded for 0 seconds! Creating thread dump
[23:33:34 ERROR]: ------------------------------
[23:33:34 ERROR]: Server thread dump (Look for plugins here before reporting to Paper!):
[23:33:36 ERROR]: ------------------------------
[23:33:36 ERROR]: Current Thread: Server thread
[23:33:39 ERROR]: PID: 50 | Suspended: false | Native: false | State: RUNNABLE
[23:33:39 ERROR]: Stack:
[23:33:39 ERROR]: java.base@21.0.3/java.lang.invoke.MethodHandleNatives.resolve(Native Method)
[23:33:39 ERROR]: java.base@21.0.3/java.lang.invoke.MemberName$Factory.resolve(MemberName.java:962)
[23:33:39 ERROR]: java.base@21.0.3/java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:991)
[23:33:39 ERROR]: java.base@21.0.3/java.lang.invoke.InvokerBytecodeGenerator.resolveInvokerMember(InvokerBytecodeGenerator.java:256)
[23:33:39 ERROR]: java.ba...

#

Expected behavior

Pressing F+Q should not create any ghost items.

Observed/Actual behavior

Press F+Q keys simultaneously to create ghost items.

Steps/models to reproduce

I tested it on 1.20.4, 1.20.6, and 1.21 Paper. (All reproducible)
Hold an item with 2 or more item stacks and press F and Q at the same time.
https://youtu.be/wYFs7a5A4d0

Plugin and Datapack List

[15:36:11 INFO]: Server Plugins (0):

Paper version

[15:36:20 INFO]: This server is running Paper version 1.21-27-master@76c2f16 (2024-06-22T18:19:36Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version

Other

No response

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Cats should always be visible when teleporting to the player.

Observed/Actual behavior

I noticed that sometimes, especially when teleporting across longer distances, cats are going invisible.

Steps/models to reproduce

Unfortunately, this issue seems to be very inconsistent, but it seems to happen more often the greater the distance. Simply tame a cat, make it follow you and fly longer distances with an elytra or in creative. Sometimes, the cat will teleport to you and is visible and in some occations you will hear the steps and meows of the cat, but you don't actually see it. I made sure it wasn't in caves or anything, it's really invisible.

Plugin and Datapack List

Plugins: Harbor (https://github.com/nkomarn/harbor)
Datapacks: None

Paper version

[16:26:03 INFO]: This server is running Paper version 1.21-27-master@76c2f16 (2024-06-22T18:19:36Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are 1 version(s) behind
Download...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] branch deleted: chore/reflection-rewriter
#

Is your feature request related to a problem?

If you need to downgrade your server for some reason (I know, I know... this is unsupported) you can enable the Paper.ignoreWorldDataVersion system property to let Paper ignore the world data version, allowing an older Paper version to load a world with a newer data version than the server.

However, CraftMagicNumbers still checks the item data version to see if it is newer than the data version of the server, causing issues when downgrading the server. This causes errors when you attempt to deserializeBytes an item stack that was serializeAsBytes'd on a recent version.

Describe the solution you'd like.

To be consistent, the data version checks in CraftMagicNumbers should also respect the Paper.ignoreWorldDataVersion property, or maybe a new property should be added (Paper.ignoreItemDataVersion?).

Describe alternatives you've considered.

Not downgrading the server.

Other

No response

rustic folioBOT
#

Stack trace

https://pastes.dev/7LSSfOmBQV

Plugin and Datapack List

2024-06-24 00:03 +01:00: [00:03:05 INFO]: Paper Plugins:
2024-06-24 00:03 +01:00: [00:03:05 INFO]:  - bedrock, calendar, FancyHolograms, FancyNpcs, minephone, navigate, popcorn_test, sport, storehouse, vehicles
2024-06-24 00:03 +01:00: [00:03:05 INFO]:  visuals
2024-06-24 00:03 +01:00: [00:03:05 INFO]: Bukkit Plugins:
2024-06-24 00:03 +01:00: [00:03:05 INFO]:  - CommandBlockWhitelist, ConsoleSpamFix, CraftingStore, DisplayEntityEditor, dynmap, Elevator, Essentials, FastAsyncWorldEdit,
 GSit, HeadDatabase
2024-06-24 00:03 +01:00: [00:03:05 INFO]:  LuckPerms, Multiverse-Core, packetevents, PlaceholderAPI, spark, TAB, Vault, WorldEditSUI, WorldGuard

Actions to reproduce (if known)

Run a 1.21 build higher than #34 and try to run plugins such as TAB or FAWE(this does not happen on #33)

Paper version

Build #35 - sorry I don't have a /version output, I downgraded to #33

...

rustic folioBOT
#

Can you provide some clarification on what is happening? Your original post doesn't seem to say. Also, try doing this without viaversion.

Alright when i give myself one of the custom items i create with the code above and i open the inventory inside the creative mode the whole meta data gets cleared and that is happenig to all the items within my inventory that i created with my system. Vanilla items like a sword for example doesn't seem to be affected by that.

But what stays is the DisplayName and the ItemLore

rustic folioBOT
#

I think I'm experiencing a similar issue with shapeless recipes. The recipe can be added to the server and given to the player without any errors. Clicking on it in the recipe book correctly fills the items in the crafting grid, but does not produce a result. Also, for some reason the recipe book is not listing my recipe as "Craftable" and is only visible when setting it to "Showing All" even though it's still able to fill the items
image

rustic folioBOT
#

Stack trace

java.lang.NullPointerException: Cannot invoke "Object.hashCode()" because "key" is null
	at java.base/java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) ~[?:?]
	at ca.spottedleaf.moonrise.patches.chunk_system.level.entity.EntityLookup.get(EntityLookup.java:91) ~[main/:?]
	at ca.spottedleaf.moonrise.patches.chunk_system.level.entity.EntityLookup.get(EntityLookup.java:37) ~[main/:?]
	at net.minecraft.server.level.ServerLevel.getEntity(ServerLevel.java:1826) ~[main/:?]
	at org.bukkit.craftbukkit.boss.CraftDragonBattle.getEnderDragon(CraftDragonBattle.java:32) ~[main/:?]
	at test-plugin-1.0.0-SNAPSHOT.jar/io.papermc.testplugin.TestPlugin.onBreak(TestPlugin.java:32) ~[test-plugin-1.0.0-SNAPSHOT.jar:?]
	at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor1.execute(Unknown Source) ~[?:?]
	at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-api-1.21-R0.1-SNAPSHOT.jar:?]
	at co.aikar.timings....
rustic folioBOT
#

Okay, I have fixed all my shaped recipes that had either all spaced columns or rows and they are now working - albeit some recipes can be crafted in not the most aesthetically pleasing arrangements - though it probably mirrors vanilla more closely in that respect.

However, custom shapeless recipes where the result is altered in the PrepareItemCraftEvent are not working - the recipe result CraftingInventory#getResult is returning null

In contrast, shaped recipes where the result is altered in the PrepareItemCraftEvent are fine.

rustic folioBOT
#

Expected behavior

Crafting recipes work as they did before with custom items (custom name, custom persistent data, custom model etc.)

Observed/Actual behavior

Recipes are somewhat broken and are not recognized inside crafting grid or even don't show properly in recipe book.

Steps/models to reproduce

Create custom ItemStack (with special name, custom model data, some persistent tags etc.) and add it as exact ingriedient into some new recipe (ShjapelessRecipe in my case)

Plugin and Datapack List

[09:38:04 INFO]: Server Plugins (14):
[09:38:04 INFO]: Bukkit Plugins:
[09:38:04 INFO]: - ICraft2.0-Special, *JoinFullServer, Multiverse-Core, Multiverse-Inventories, Multiverse-Portals, NoChatReports, *PermissionsEx, PexTabCompleter, ProtocolLib, *SimplePrefix-Reloaded
[09:38:04 INFO]: TreasureChestX, *VoidWorld, WorldEdit, WorldGuard

[09:38:21 INFO]: There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]
[09:38:21 INF...

#

Is your feature request related to a problem?

Some of my plugins crafting logic depends on PrepareItemCraftEvent and affecting the result. Because crafter does not invoke that event and has no special events they break my crafting plugins

Describe the solution you'd like.

Either include crafter in PrepareItemCraftEvent or create new event for crafter that inherits on the same base as PrepareItemCraftEvent. (My main concern is to not have double implementation for crafters)

Describe alternatives you've considered.

Probably interacting with crafter invokes inventory events, I haven't looked into this yet, but I could probably listen to some eventory click event check the crafter inventory and fabricate PrepareItemCraftEvent (crafter inventory i bare bone but I excpect that inside there is at least 10 elements array when 10th element is the result)
But this won't work perfectly as there are many inventory based entry points (player, hoppers, usage of crafter) that mig...

rustic folioBOT
rustic folioBOT
#

Is your feature request related to a problem?

1.20.6 already throws an exception when using BODY for entities that don't have it (https://github.com/PaperMC/Paper/commit/672c07728f6f247df34e866a77a47b457c7d1ed9), but LivingEntity#canUseEquipmentSlot was only added in 1.21 (which is still experimental).

Describe the solution you'd like.

Would be nice if LivingEntity#canUseEquipmentSlot could be backported to 1.20.6, seeing as it throws for invalid slots but doesn't really have a way to check.

Describe alternatives you've considered.

Could try/catch, but that isn't as nice as a proper method & you can't really know where the IllegalArgumentException is from without checking the message or something.

Other

I know features aren't usually backported like this so I understand if you prefer not to, but imo this specific case makes sense seeing as it's still supported & already has checks to throw for invalid slots and all.

rustic folioBOT
#

Expected behavior

Some structures return an incorrect position of the bounding box.
The following structures usually return the bounding box too high:
Cold Ocean Ruins, WarmOcean Ruins, Beached Shipwreck, Shipwreck, Buried Treasure
The following structures usually return bounding boxes that are too low:
Jungle Pyramid, Igloo
All other structures seem to be correct.

The problem only seems to occur in newly created chunks. After a server restart, the bounding box is displayed correctly.

Observed/Actual behavior

Newly loaded chunk:
Alt text

After a server restart:
Alt text

Steps/models to reproduce

  • Install the StructureBoundingBoxTestPlugin.
  • Go to the structure described in the problem above. And see at which position the bounding box with diamond blocks is displayed.
  • Restart the server and go to the sa...
rustic folioBOT
rustic folioBOT
#

Expected behavior

sand duplicator it's working

Observed/Actual behavior

sand duplicator don't working.
But it works as expected on a vanilla multiplayer server.

Steps/models to reproduce

build a sand duplicator or download this world:
https%3A%2F%2Fwww.mediafire.com%2Ffile%2Fzqkh8oq7jujdou0%2FMax%2BEfficiency%2BSand%2BDuper.zip%2Ffile&v=lCYR2FN20lk

Plugin and Datapack List

BoundlessForging-1.0-SNAPSHOT
CleanPing
ColorfulChat-2.1
LagFixer
LuckPerms-Bukkit-5.4.116
PlayerDoll-1.29
tabtps-spigot-1.3.24

Paper version

1.21 build #37
image

Other

image

rustic folioBOT
rustic folioBOT
#

Stack trace

https://paste.gg/p/anonymous/55a25eca07ee43e788a91e0d4e253dfa

Plugin and Datapack List

AdvancedBan, AntiCombatLog, AntiSeedCracker, BanAnnouncer, BanItem, BetterTeams, Chunky, EasyWhitelist, FAWE, ImageOnMap, InstantRestock, LoginSecruity, LuckPerms, MortisSpawnPoint, PlaceholderAPI, ProctoLib, SkBee, SkinsRestorer, skRayFall, Skript, spark, Spicord, TAB, Veinminer, ViaVersion, Vulcan

EZgap

Actions to reproduce (if known)

No response

Paper version

1.20.4 Pufferfish - ver51 (i cant start server to get the ver)

Other

No response

rustic folioBOT
#

Expected behavior

Cancelling EntityDamageEvent should prevent wolf armor from taking damage since there's no incoming damage to defend against.

Observed/Actual behavior

Even though EntityDamageEvent is cancelled the wolf armor takes damage and eventually breaks.

Steps/models to reproduce

Create an empty plugin an register the following event

    @EventHandler
    public void onEntityDamage(EntityDamageEvent e) {
        if(e.getEntityType() == EntityType.WOLF) {
            e.setCancelled(true);
        }
    }

After summoning a wolf tame it and put armor on it. When the wolf gets hit by the player the armor takes damage.

Plugin and Datapack List

Empty/test plugin

Paper version

[22:56:28 INFO]: Checking version, please wait...
[22:56:30 INFO]: This server is running Paper version 1.21-37-master@dd49fba (2024-06-24T02:08:49Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.2...
rustic folioBOT
rustic folioBOT
#

Primary discussion goes back to here;
#paper-dev message

ItemMeta's history of upgrading data is more of a "we manually pick out the data and so we can save it back in any format desired", this is a tragic solution but has mostly survived with manual bodges to the data here and there, the issue comes in is, what happens to the data we don't know how to handle?

The data is not stored in a manner that it's picked apart and can be reassembled, the only real solution here would be to see if we can run this data through DFU/DC in some manner, https://github.com/PaperMC/Paper/pull/10609 is going to be the best final solution here, but;

  1. if viable, run existing unhandled data through DFU

  2. Merging the agreed-upon solution as discussed in the linked PR is generally going to be the best solution here in the long run, as it preserves the entire data set exactly as it does elsewhere so that we can upgrade it. I...

rustic folioBOT
rustic folioBOT
#

Expected behavior

I want to add hover content when player send message in chat. So, I change the message value from AsyncChatEvent event.

Observed/Actual behavior

The message is well edited, but there is no hover or click event. If I send the message myself, the hover is well sent

Steps/models to reproduce

@EventHandler
public void onChat(AsyncChatEvent e) {
	e.message(Component.text("something").hoverEvent(HoverEvent.showText(Component.text("This is a test"))));
	e.getPlayer().sendMessage(Component.text("something myself").hoverEvent(HoverEvent.showText(Component.text("This is a test myself"))));
}

Plugin and Datapack List

My plugin test

Paper version

This server is running Paper version git-Paper-497 (MC: 1.20.4) (Implementing API version 1.20.4-R0.1-SNAPSHOT) (Git: d8d54d9 on ver/1.20.4)
You are running the latest version
Previous version: git-Paper-496 (MC: 1.20.4)

Other

No response

#

Expected behavior

The last slot in a donkey or mule is counted as a PlayerInventory with slot 9. It should actually be a SaddledInventory with slot 16.
The same problem exists with llamas, depending on the strength of the llama, the slot ID of the last slot naturally differs.

Observed/Actual behavior

Nothing... The slot id and inventorytyp is simply returned incorrectly by the API

Steps/models to reproduce

check the last slot of a donkey/mule or llama inventory and display the SlotID and the Inventory Type.

Plugin and Datapack List

/

Paper version

Checking version, please wait...
This server is running Paper version 1.21-37-master@dd49fba (2024-06-24T02:08:49Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version

Other

No response

#

Ok, nevermind, it's only when we change the formatting as this for example:

@EventHandler(priority = EventPriority.LOWEST)
public void onChatLow(AsyncPlayerChatEvent e) {
    e.setFormat("%1$s: %2$s");
}

// then the paper event
@EventHandler
public void onChat(AsyncChatEvent e) {
	e.message(e.message().hoverEvent(HoverEvent.showText(Component.text("This is a test"))));
}
#

The problem is, in my specific case, it's changed by others plugins. So, I don't know when it will be fine or not. Also, event by using this:

for(Audience a : e.viewers().isEmpty() ? Bukkit.getOnlinePlayers() : e.viewers())
	a.sendMessage(e.renderer().render(p, p.displayName(), message, a));
e.setCancelled(true);

Or this:

e.message(e.renderer().render(p, p.displayName(), message, p));

The issue is still the same (so even by using chat renderer)

#

Once again, the issue here is that the ChatRenderer is a legacy chat render, which does not understand modern text formatting, there is no good solution here which doesn't involve you replacing the chat renderer with something able to actually use components, the only caveat here is that you will induce some behavioral changes as legacy and modern text work differently

rustic folioBOT
rustic folioBOT
#

I check internally and looks like the event is called in actuallyHurts (in the final) what is only called if the wolf not has armor (or the damage ignore the wolf armor) currently in upstream is more easy fix that because the event now is created before the actuallyHurts is called and pass to the event later to actuallyHurst, but Paper has EntityDamageItemEvent what is called for damage in items like the Wolf Armor then you can use that for cancel the damage in Wolf Armor

rustic folioBOT
#

Expected behavior

Plugin should work normally

Observed/Actual behavior

Received this exception while loading my remapped jar. I've attached it below
RocketJoin-bukkit-2.4.2.zip

Steps/models to reproduce

Just load my plugin

Plugin and Datapack List

RocketJoin

Paper version

[15:38:53 INFO]: This server is running Paper version 1.21-37-master@dd49fba (2024-06-24T02:08:49Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-28-812701d (MC: 1.21)

Other

No response

rustic folioBOT
rustic folioBOT
#

Shouldn't EntityDamageItemEvent not even get called for this and just not damage the item? Or maybe not damage the item and call the event in a cancelled state.

In teory.. but i dont like that solution of just call EntityDamageItemEvent in canceled because that can cause another user cases fails if is just called in that part of code (currently... with the last upstreams changes in teory its just listen the canceled state passed in the hurts methods for wolfs)

rustic folioBOT
#

Expected behavior

Drinking a bucket of milk from a cow makes the bucket empty

Observed/Actual behavior

Drinking a bucket of milk from a cow makes it look like your still holding a bucket of milk on client, and lets you drink it. (not real bucket of milk)

Steps/models to reproduce

drink a bucket of milk

Plugin and Datapack List

Plugins: Tester
Datapacks [vanilla (built-in], [file/bukkit (world)], [paper (built-in)]

Paper version

Paper version 1.21-37-master@dd49fba (2024-06-24T02:08:49Z) (Implementing API version 1.21-R0.1-SNAPSHOT)

Other

No response

rustic folioBOT
#
[PaperMC/Paper] New branch created: config-defaults
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

attacking any entity runs all the necessary events needed

Observed/Actual behavior

absolutely no events are ran when attacking enemies, meaning plugins cant do anything with it and you cannot damage or interact with anything that involves left-clicking (only affects certain players) (paintings and item frames can still be destroyed).

Steps/models to reproduce

attack anything that isnt a painting or item frame, however not all players have this issue

Plugin and Datapack List

no plugins needed

Paper version

This server is running Paper version 1.21-37-master@dd49fba (2024-06-24T02:08:49Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21-28-812701d (MC: 1.21)

Other

https://github.com/PaperMC/Paper/assets/65318126/412d4e5c-a5a3-4a04-95ca-df574da9019e

Note: while the video does have plugins running on the server, it doesn't matter. I have tested on the same server with no pl...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Stack trace

https://paste.gg/p/anonymous/d83977b6d5ab47b092532b5a5403f42f

Plugin and Datapack List

Plugins - AdvancedTeleport, DeathChest, floodgate, Geyser-Spigot, OpenInv
There are 3 data pack(s) enabled: [vanilla (built-in)], [file/bukkit (world)], [paper (built-in)]

Actions to reproduce (if known)

No response

Paper version

This server is running Paper version 1.21-37-master@dd49fba

Other

No response

rustic folioBOT
#

Stack trace

[15:29:09 WARN]: [io.netty.channel.DefaultChannelPipeline] An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
io.netty.channel.StacklessClosedChannelException: null
	at io.netty.channel.AbstractChannel$AbstractUnsafe.write(Object, ChannelPromise)(Unknown Source) ~[netty-transport-4.1.97.Final.jar:4.1.97.Final]

Plugin and Datapack List

Spark, My own plugin

Actions to reproduce (if known)

Register a command with an argument of the Registry.STRUCTURE type:

commands.register(Commands.literal("structureargumentcommand")
                            .then(
                                    Commands.argument("structure", ArgumentTypes.resource(RegistryKey.STRUCTURE))
                                            .executes(ctx -> {
                                                ctx.getSource().getSender().sendRichMessage(ctx.ge...
rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Items that are stored in the shoulker box to stay in the shoulker box when placed on ground

Observed/Actual behavior

Items that are stored in the shoulker box are gone when the SB is placed on ground

Steps/models to reproduce

Days ago I updated the server from 1.20.2 to 1.20.6...
My players started to notice that the shulker boxes that they had in inventory when are placed on ground so thet can access them are presented empty.

Plugin and Datapack List

26.06 16:58:26 [Server] INFO Server Plugins (52):
26.06 16:58:26 [Server] INFO Bukkit Plugins:
26.06 16:58:26 [Server] INFO - AdvancedAntiVPN, ajParkour, AuthMe, BlockedWords, BottledExp, ChestSort, Citizens, CMILib, CoreProtect, DailyRewardsPlus
26.06 16:58:26 [Server] INFO DeadChest, DecentHolograms, Despicaleaderboards, DoorsReloaded, Essentials, EssentialsChat, FarmLimiter, floodgate, GEmote, Geyser-Spigot
26.06 16:58:26 [Server] INFO GriefPrevention, GSit, ImageFrame, InventoryRollba...

rustic folioBOT
#
[PaperMC/Paper] New branch created: feature/tag-lifecycle-events
rustic folioBOT
#

Expected behavior

In Spigot servers without Paper, plugins that overwrite vanilla commands don't break data packs because those commands only apply to console, chat, and command blocks. Commands in data pack functions and the vanilla /execute command always should run vanilla commands only, which data packs rely on in order to function.

Paper doesn't let these plugins overwrite commands in normal data pack functions, so it's expected the same applies to commands in function macros and in the /execute command, as is the case in Spigot.

Observed/Actual behavior

In the (currently) latest Paper version for MC 1.20.6, plugin commands are now used in data pack macro commands and in the vanilla /execute command, breaking data packs that rely on vanilla commands working in macros if any plugins that overwrite these commands are installed.

EssentialsX for example, one of the most popular plugins, overwrites many vanilla commands. If a data pack macro tries to run `/k...

rustic folioBOT
#

Expected behavior

In Spigot servers without Paper, and in older Paper versions, /execute runs vanilla commands only. Vanilla commands that are overwritten by Paper or by plugins shouldn't break any of the functionality of commands under /execute.

Observed/Actual behavior

In the (currently) latest version of Paper, /execute can run the overwritten non-vanilla versions of vanilla commands too.

Steps/models to reproduce

  1. Enter /execute run reload in chat or (without a slash) in the console.
  2. In Spigot and vanilla, this reloads data packs. In Paper, this displays a message warning against reloading plugins.

Plugin and Datapack List

N/A

Paper version

This server is running Paper version 1.20.6-147-ver/1.20.6@e41d44f (2024-06-17T19:24:35Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.20.6-2233-0d6766e (MC: 1.20.6)

Other

If this change is intentional, it would be fine if it at least ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Ok, so here's my initial thoughts on solutions to this. There are 2 places plugins can register commands, in the bootstrapper and in JavaPlugin. The first is a super new place to register commands, so most plugins aren't using it. What we can do is only have commands registered there override vanilla commands in /execute run and command functions. Then commands registered the other way, that's existed for much longer, won't be able to be run in /execute run. This still provides a way for a plugin to override a vanilla command, which is something that should be supported, but it does it in such a way that the plugin has to explictly know that's what they are doing, instead of just retroactively doing it for all commands in all plugins.

#

The solution to this is to somehow filter out plugin commands that were registered in the JavaPlugin lifecycle event and prevent them from being executed when a macro is parsed at runtime. We still want commands registered by plugins in the boostrapper to be executable by macros (and datapack command functions in general), but since that system is still new and experimental, we can make it very clear that registering commands there that override vanilla commands can break expected datapack functionality.

rustic folioBOT
#

I think that's a great solution, if I'm understanding correctly. I think whether it works in data packs being tied to whether it works in /execute makes a lot of sense, more so than having all commands work in /execute but none work in data packs. As long as the purpose of these APIs is made very clear so we don't get lots of plugin devs overwriting vanilla commands using the new API.

rustic folioBOT
#

Surely this should be a config option so that individual server operators can choose to enable to disable it? Datapacks are built for an entirely vanilla environment most of the time, and allowing plugins to introduce changes to the command behavior seems like a recipe for disaster.

Or, if not a server operator config option, maybe an overload of the vanilla command override registry that allows the plugin author to choose whether they want to expose their new commands to macros or not; and have the overload be an optional secondary true/false arg that defaults to the vanilla behavior for macros?

#

Could it make sense to solve this (and maybe #10994 as well) using namespaces? I believe with Bukkit's command API, if PluginA and PluginB both register the test command, then whoever registers first gets the /test command, but both implementations are still available using /plugina:test and pluginb:test respectively?

Could that work in a similar way here? The Vanilla server always registers its commands first, so kill and /minecraft:kill for example always run the vanilla implementation. If EssentialsX then comes in and registers kill, /essentialsx:kill will run the plugin implementation, but /kill and /minecraft:kill will still run the vanilla implementation.

rustic folioBOT
#

Plugin commands registered in JavaPlugin only work in macros at the moment, NOT in plain text command functions. This is the bug, not that they donโ€™t work at all. Itโ€™s not possible to have commands registered in JavaPlugin work in all command functions because JavaPlugin loading happens too late.

For the Bootstrapper, that happens before everything, so commands registered there can work.

rustic folioBOT
rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] branch deleted: config-defaults
rustic folioBOT
#
[PaperMC/Paper] New branch created: deprecations
#

Fixes https://github.com/PaperMC/Paper/issues/10994


Creates a second CommandDispatcher that contains all vanilla commands (and namespaced versions) as well as commands registered during bootstrap. One potential issue with this is... that you can't use the internal dispatcher provided to register commands for datapack functions. Not sure if that's resolveable and if we do want to resolve it, might have to take a different, more invasive, approach.

rustic folioBOT
rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

I expected my pack to apply properly.

Observed/Actual behavior

I joined my paper-1.21-28.jar server and the texture pack reloaded 3 times before ultimately failing to apply.

Steps/models to reproduce

Install essentials, executable items, score, and worldguard on paper-1.21-38 or 37 and add any resource pack on versions 1.20.2 - 1.21.

Plugin and Datapack List

essentials, executable items, score, and worldguard
I removed all my plugins except for ones necessary to make sure it wasn't a plugin compatibility issue.

Paper version

paper-1.21-38.jar

Other

Here's my logs including the errors related to resource pack.

[07:19:53] [ServerMain/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD]
[07:19:53] [ServerMain/INFO]: Loaded 1290 recipes
[07:19:53] [ServerMain/INFO]: Loaded 1399 advancements
[07:19:54] [Server thread/INFO]: Starting minecraft ...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Your health does not change.

Observed/Actual behavior

Your health is set to full.

Steps/models to reproduce

  1. Go to hell :-)
  2. take damage
  3. minecraft:tp to someone or something in the overworld. Also works with essentials /tp, /back, /home and seemingly any other plugin teleport.

Plugin and Datapack List

image

Paper version

[16:28:56 INFO]: This server is running Paper version 1.21-37-master@dd49fba (2024-06-24T02:08:49Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are 1 version(s) behind
Download the new version at: https://papermc.io/downloads/paper
Previous version: 1.21-15-2df432f (MC: 1.21)

Other

clean server with new world, defaults on everything.

rustic folioBOT
#
[PaperMC/Paper] branch deleted: deprecations
rustic folioBOT
#
  • Remove floating point math from getDistance in org.bukkit.map.MapPallete
  • Use bitwise & for bounds checks in obc.map.CraftMapCanvas to reduce comparisons
  • Reduce size of image being drawn in drawImage if it is larger than the available size.
  • Use System.arraycopy to avoid iterating over the colors in the image.

Saw a ~30% performance improvement in obc.map.CraftMapView.render()

Tested with a world containing many custom maps created using the ImageOnMap plugin, modified to remove this optimisation so that it renders every tick.
Before: https://spark.lucko.me/NVdWKmSlFr
After: https://spark.lucko.me/j6AJiFG9pD

rustic folioBOT
rustic folioBOT
#

Resource packs do not apppy to the server in any form or capacity, all the
server does is send info about them inside of a packet. 1.21 also made
various changes to resource packs, check your client logs.

On Sat, 29 Jun 2024 at 13:50, DontMessWithDis @.***>
wrote:

Its failing to apply server wide, not just client side. I've also tried
switching versions, no mods, different accounts etc.

โ€”
Reply to this email directly, view it on GitHub
https://github.com/PaperMC/Paper/issues/10998#issuecomment-2198150070,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJMAZDEUKESA6RB3FHDZOTZJ2UQ5AVCNFSM6AAAAABKCGGTOOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOJYGE2TAMBXGA
.
You are receiving this because you modified the open/close state.Message
ID: @.***>

rustic folioBOT
#

Expected behavior

When using build 138, all plugins loaded properly.

Observed/Actual behavior

When using build 147, I receive PluginRemapper errors, specifically on Dynmap and Dynmap-Essentials.

Steps/models to reproduce

  • Download Paper build 147 from site
  • Rename file to server.jar
  • Replace original server.jar within server folder
  • Run start.sh as a program.

Plugin and Datapack List

  • Chunky
  • Dynmap
  • Dynmap-Essentials
  • Dynmap-WorldGuard
  • Essentials
  • EssentialsChat
  • EssentialsDiscord
  • EssentialsDiscordLink
  • Geyser-Spigot
  • LuckPerms
  • Maintenance
  • ProtocolLib
  • spark
  • Vault
  • ViaBackwards
  • ViaRewind
  • ViaVersion
  • WorldEdit
  • WorldGuard

Paper version

This server is running Paper version 1.20.6-147-ver/1.20.6@e41d44f (2024-06-17T19:24:35Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.20.6-137-bd5867a (MC: 1.20.6)

Other

`== Log ==
[13:12:26] [Paper...

#

Error loading plugin: java.lang.IllegalArgumentException: Directory 'plugins/.paper-remapped/Dynmap-3.7-beta-6-fabric-1.21.jar' does not contain a paper-plugin.yml or plugin.yml!

You downloaded the fabric version of dynmap (same with geyser) which is why it's unable to enable, dynmap essentials is failing to load because it depends on dynmap which isn't present.

Well I guess that's what I get for trying to script a fast install process. Thank you for this information!

rustic folioBOT
rustic folioBOT
#

Expected behavior

I expected the health boost effect to wear off upon dying.

Observed/Actual behavior

The health boost didn't show as an effect in the inventory, but still gave additional hearts even when dying.

Steps/models to reproduce

  1. Start a paper server with version 1.21 build #39 (latest as of writing this)
  2. /effect give @p health_boost infinite
  3. Die

Plugin and Datapack List

No plugins
Only default datapacks (vanilla, bukkit, paper)

Paper version

[22:54:51 INFO]: This server is running Paper version 1.21-39-master@aa8d38d (2024-06-29T09:10:10Z) (Implementing API version 1.21-R0.1-SNAPSHOT)
You are running the latest version

Other

No response

rustic folioBOT
rustic folioBOT
#

Well this not happen in upstream for what i check.
In upstream this seems to fix the issue https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/commits/cdd05bc7faac70a5341ce9cd6524ac2ed0a80651#nms-patches%2Fnet%2Fminecraft%2Fworld%2Fentity%2FEntityLiving.patch but just for future effects if you still has a effect use this and die the effect its not removed unless you give the same effect again.

rustic folioBOT
rustic folioBOT
#

Expected behavior

I would expect the passengers of an entity to be able to teleport

Observed/Actual behavior

I noticed when a player is riding an entity, if you teleport it (with flags) the player doesn't get teleported.
The player also gets stuck in some weird limbo.
For example if you move a few chunks, the chunks no longer load, and if you attempt to break a block, nothing.
If I relog, the player is then matched up with their vehicle.

Steps/models to reproduce

Test code to reproduce:

Random random = new Random();
Entity vehicle = player.getVehicle();
World world = vehicle.getWorld();

int x = random.nextInt(10000);
int z = random.nextInt(10000);
Location highest = world.getHighestBlockAt(x, z).getLocation().add(0, 1, 0);

vehicle.teleport(highest, TeleportFlag.EntityState.RETAIN_PASSENGERS);

I simply make myself ride a sheep, and ran a command with that code.

Plugin and Datapack List

just my test plugin

Paper version

Pape...

rustic folioBOT
rustic folioBOT
rustic folioBOT
#

Expected behavior

Plugin loaded normally.

Observed/Actual behavior

IllegalStateException: Duplicate key
Error logs as follow:
https://mclo.gs/TbMmnRY

Steps/models to reproduce

Runs paper build #147 with a plugin in the following link:
https://github.com/amadeusmz/RemapperTest/releases/tag/test
The plugin load normally in papermc 1.20.4 (any build)
This is a simple plugin that was obfuscated with proguard. The source code of the plugin is in the same Github repository.

Plugin and Datapack List

Installed only that test plugin, and it wasn't loaded.

> plugins
[19:15:02 INFO]: Server Plugins (0):

Paper version

> version
[19:15:15 INFO]: Checking version, please wait...
[19:15:15 INFO]: This server is running Paper version 1.20.6-147-ver/1.20.6@e41d44f (2024-06-17T19:24:35Z) (Implementing API version 1.20.6-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.20.6-2232-f1c87e4 (MC: 1.20.6)

Oth...

rustic folioBOT
#

Timings or Profile link

https://spark.lucko.me/vULGA1D9Ac

Description of issue

I don't understand why the chuns use it so much.

Plugin and Datapack List

image
image

Server config files

https://pastebin.com/dw2ACn9Qs
https://pastebin.com/cqxxfwzP
https://pastebin.com/WDTKM7XX
https://pastebin.com/6h7yaAzp
https://pastebin.com/gd76Cvp8

Paper version

This server is running Paper version
1.21-39-master@aa8d38d (2024-06-29T09:10:102) (Implementing
API version 1.21-0.1-SNAPSHOT)

Other

No response

rustic folioBOT
#

Expected behavior

When calling setDecor on a LlamaInventory, I expected it to change the appearance of the llama.

Observed/Actual behavior

Calling setDecor on a LlamaInventory:

  • When the llama isn't carrying a chest, it does nothing.
  • When the llama is carrying a chest, it sets the wrong slot of the llama (no change in appearance, but the item used appears in the chest inventory when you ride it).

Calling getDecor on a LlamaInventory:

  • Returns whatever is in the 1st of 9 slots of a llama's chest inventory, if its carrying a chest, otherwise returns nothing.

Steps/models to reproduce

  1. Spawn a llama
  2. Try setting the decor of it to any kind of carpet
  3. Watch in awe as it does nothing

Plugin and Datapack List

Skript, skript-reflect

Paper version

[00:05:11 INFO]: This server is running Paper version git-Paper-36 (MC: 1.20.6) (Implementing API version 1.20.6-R0.1-SNAPSHOT) (Git: 0db72ac)

Other

No response

rustic folioBOT
#

I guess you tested with this example: https://www.youtube.com/watch?v=lCYR2FN20lk. The latest comment on the video said it was broken by the update and i can't reproduce even in singleplayer. The game seems to have a boolean to allow falling block duplication at some point. However this specific design doesn't work anymore since passengers of a vehicle can now gets teleported by the portal (here the pigs).
Do you have more infos about that, does the pigs still wait in the overworld for you?

#

It's up to NeoForged whether they want to support this in AutoRenamingTool. This type of obfuscation doesn't provide any real benefit over standard obfuscation (a bytecode transformer to rename any conflicting fields would be quite simple to create, and from there mapping tools like Enigma would have no problem helping to name things). I would recommend either:

  1. Build your plugin with paperweight-userdev (or simply mark the manifest if you don't use internals) so you can ship the Mojang-mapped plugin jar to users (that won't need remapping)
  2. Disable the aggressive overloading option on ProGuard
rustic folioBOT
#

Expected behavior

i thought when i die that it would get removed or be able to /effect clear

Observed/Actual behavior

when i died all of my effects was still on me

Steps/models to reproduce

so the way i found it was by doing
/effect give @a minecraft:health_boost infinite 99 true
then die from something ingame or do /kill
then all of the effects stay on you and you cant
/effect clear @a minecraft:health_boost so its just stuck on you

Plugin and Datapack List

im not running any datapacks or plugins right now i found the bug on my main server then tryed it on my test server with no plugins or nothing and same problem but if you want to know my list that i run on my main let me know

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 running the latest version
Previous version: 1.21-4-090775e (MC: 1.21)

Other

i also tryed using spigot and norma...

rustic folioBOT
#

Duplicate of https://github.com/PaperMC/Paper/issues/11002, spigot "fixed" that (with a bandaid) in https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/commits/cdd05bc7faac70a5341ce9cd6524ac2ed0a80651#nms-patches%2Fnet%2Fminecraft%2Fworld%2Fentity%2FEntityLiving.patch?t=136. The real issue is still the same as always the player instance is not recreated on respawn and it's just a matter of time before another thing break.

rustic folioBOT
rustic folioBOT
#
[PaperMC/Paper] New branch created: prioritize-mc-commands-in-function-parsing