From 11c030a8f81b2f845a9f2749790692c2d152f284 Mon Sep 17 00:00:00 2001 From: granny Date: Fri, 11 Jul 2025 21:43:37 -0700 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@a9399451 Fixup sendAllDataToRemote calls PaperMC/Paper@cb47e018 Remove more dead code, fix pre-existing desync when cancelling and closing container PaperMC/Paper@40764534 Specify the class loader when loading services (#12829) PaperMC/Paper@1bf6364b Update Mache for horse decompile fix --- gradle.properties | 2 +- .../features/0001-Ridables.patch | 20 +++++++++---------- .../0008-Implement-elytra-settings.patch | 12 +++++------ .../ServerGamePacketListenerImpl.java.patch | 2 +- .../minecraft/world/entity/Entity.java.patch | 10 +++++----- .../world/entity/LivingEntity.java.patch | 2 +- .../world/entity/player/Player.java.patch | 4 ++-- .../minecraft/world/item/BlockItem.java.patch | 6 +++--- .../minecraft/world/item/ItemStack.java.patch | 2 +- .../item/ProjectileWeaponItem.java.patch | 2 +- .../world/item/TridentItem.java.patch | 2 +- 11 files changed, 32 insertions(+), 32 deletions(-) diff --git a/gradle.properties b/gradle.properties index 402f5516f..cb36c473e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.7-R0.1-SNAPSHOT mcVersion = 1.21.7 -paperCommit = b4466ec981d104c4756d1a3b90c2ee0d6ce4e6bd +paperCommit = 1bf6364b97de3202348df8b3c0c522cc54be5bbb org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 9acd6111d..c3aadd397 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -42,7 +42,7 @@ index 83eff33884bffddfafc85eeb4a2900104a396e2e..3c7159d0981c948e71a5612ba4083acc @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index ee8f785ec897950a3ac3026ee0a5093502a1ec75..b89ef2c981d48e40d1c278f90891e36f7fc9a5bc 100644 +index 76ee1d113046c9ff7da4a77bf42732325401c1d8..c70c02ba949a56010e25167bdf8649024e334b9a 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -794,6 +794,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -62,7 +62,7 @@ index ee8f785ec897950a3ac3026ee0a5093502a1ec75..b89ef2c981d48e40d1c278f90891e36f private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 8c34c10e3de60188c9a8719def63225c0a3c44bb..a8b2c19cc9803058b421b07c739166afdf291e47 100644 +index d09627c10e3a4e51aa7e2bb746e4c3f568091134..a63ade75461b68a780c56bfb5ff7c61f99f76744 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2854,6 +2854,8 @@ public class ServerGamePacketListenerImpl @@ -71,14 +71,14 @@ index 8c34c10e3de60188c9a8719def63225c0a3c44bb..a8b2c19cc9803058b421b07c739166af + player.processClick(hand); // Purpur - Ridables + - // Entity in bucket - SPIGOT-4048 and SPIGOT-6859a + // Entity in bucket - SPIGOT-4048 and SPIGOT-6859 if ((target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && origItem != null && origItem == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().isEmpty() || !ServerGamePacketListenerImpl.this.player.getInventory().getSelectedItem().is(origItem))) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 1d8ba25d542c49a687414a8b6d1d2fa16ca695d5..34e0fbef06b0c7aededf27fe9dc64f3f6f33e3ae 100644 +index e5676044132d6d003533ff3bd5b1232727cee0f7..725612ca589b15679126178a5bf95123ae334007 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3303,6 +3303,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3302,6 +3302,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index 1d8ba25d542c49a687414a8b6d1d2fa16ca695d5..34e0fbef06b0c7aededf27fe9dc64f3f this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3344,6 +3351,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3343,6 +3350,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index 1d8ba25d542c49a687414a8b6d1d2fa16ca695d5..34e0fbef06b0c7aededf27fe9dc64f3f if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5398,4 +5413,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5397,4 +5412,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -177,7 +177,7 @@ index f0c452ddc4b299a930de261722cc41a89aa78eeb..8e8ddab59de508c84c4182e105a11554 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 96e47e6145a4cce8c154a05f9b155c1ba74bfa6a..9342765509beb740aec2d6079c9a7a98bc66ba77 100644 +index 4638003724e826b27ab26fc1aec4825e7ab5fa3e..844e24c162a67bbc488d4dd83e2c076befd871cb 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -238,9 +238,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -2313,7 +2313,7 @@ index d5e5ea2a20739b81742b1a5323d19f2d01baec25..f106d5bbbe9227b2c7cc4cc24ade57d8 profilerFiller.pop(); profilerFiller.push("goatActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 31ed5d7cfbda1a1f98ebfc89f5cbc65332cabdae..ba56d68737cedabcddafafb18022f7c106631ca4 100644 +index e7e4558d0f018a0c975d12d77287cda4df5a500a..d3140f2c1fcc49431422e2eb9d1f8af066707141 100644 --- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -127,11 +127,21 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory @@ -5100,7 +5100,7 @@ index 93ed977260f369677028bbd8396862f344dfeaa3..e5d6d8bd30876832e6219969849e8260 if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading this.setTradingPlayer(player); diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index cc29c094f81f16e6b4d74877e31fabd4a0e62435..65d981d26c729d63aa9bad1bbe90cef35207e832 100644 +index fd0322685f17f188d19ccc5fc8d2995bfab17f6e..b12bd1f756b91a1168eb8ac4959152dcca01c5b5 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -239,6 +239,19 @@ public abstract class Player extends LivingEntity { diff --git a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch index ee40208dc..441b11684 100644 --- a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 1b45fa392d3c3b58e232e6364d344354cf82f2c3..388bd20aeafbcedb8a7cf579bb2b1a038b93ac8f 100644 +index 177333f6c375eac51e0468e337806987fc7ada0f..24dda86c8f03b5876bc0afc827829da78ec85850 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -3713,7 +3713,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -29,7 +29,7 @@ index 1b45fa392d3c3b58e232e6364d344354cf82f2c3..388bd20aeafbcedb8a7cf579bb2b1a03 this.gameEvent(GameEvent.ELYTRA_GLIDE); diff --git a/net/minecraft/world/item/FireworkRocketItem.java b/net/minecraft/world/item/FireworkRocketItem.java -index 83cfe63b0245f79d0873477ab3aae75f690ecb68..f32370217735b5e9556a0df7652682d89f23c595 100644 +index f86b0579e707ecfa5c2074ea22bbe383b5e11841..43a6d9bd3a2e301e3957e9933663c3aff43722d6 100644 --- a/net/minecraft/world/item/FireworkRocketItem.java +++ b/net/minecraft/world/item/FireworkRocketItem.java @@ -72,6 +72,17 @@ public class FireworkRocketItem extends Item implements ProjectileItem { @@ -51,10 +51,10 @@ index 83cfe63b0245f79d0873477ab3aae75f690ecb68..f32370217735b5e9556a0df7652682d8 itemInHand.shrink(1); // Moved up from below } else { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 7041e93158ffab707f14ff6e48c3977bebf275a9..b95acf4c688a9113a34e9be2639536245c66c83e 100644 +index 373822831e3025e0365f2bf1a41013450f8b0e00..d3892cc9ef3ab66a45fe3ab72e8a5ef8b904b7c0 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -700,6 +700,14 @@ public final class ItemStack implements DataComponentHolder { +@@ -696,6 +696,14 @@ public final class ItemStack implements DataComponentHolder { org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent } // CraftBukkit end @@ -70,10 +70,10 @@ index 7041e93158ffab707f14ff6e48c3977bebf275a9..b95acf4c688a9113a34e9be263953624 onBreak.accept(item); } diff --git a/net/minecraft/world/item/TridentItem.java b/net/minecraft/world/item/TridentItem.java -index 122e24ed6fb319c951841ac8ef328c5eb70514d4..34d15412b8f68ed1bae45b81ecf759c9c4d7e20c 100644 +index 37720f5f8a680201db5ba78ca43ee59f72cb2e9a..7fe10d298a1204d87c0484f97f3767de6779c687 100644 --- a/net/minecraft/world/item/TridentItem.java +++ b/net/minecraft/world/item/TridentItem.java -@@ -127,6 +127,18 @@ public class TridentItem extends Item implements ProjectileItem { +@@ -126,6 +126,18 @@ public class TridentItem extends Item implements ProjectileItem { f1 *= tridentSpinAttackStrength / squareRoot; f2 *= tridentSpinAttackStrength / squareRoot; org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerRiptideEvent(player, stack, f, f1, f2); // CraftBukkit diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch index ecd689666..73196a329 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerGamePacketListenerImpl.java.patch @@ -222,7 +222,7 @@ packet.dispatch( new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit -@@ -3548,7 +_,7 @@ +@@ -3490,7 +_,7 @@ @Override public void handleChangeGameMode(ServerboundChangeGameModePacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index ef0282cc6..8c8c3e08b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -107,7 +107,7 @@ // Paper start - EntityUnleashEvent if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( leashable2, player, hand, !player.hasInfiniteMaterials(), true -@@ -3389,15 +_,18 @@ +@@ -3388,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -127,7 +127,7 @@ } } } -@@ -3602,7 +_,7 @@ +@@ -3601,7 +_,7 @@ } public int getMaxAirSupply() { @@ -136,7 +136,7 @@ } public int getAirSupply() { -@@ -4156,7 +_,7 @@ +@@ -4155,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -145,7 +145,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4681,6 +_,12 @@ +@@ -4680,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -158,7 +158,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5107,7 +_,7 @@ +@@ -5106,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index e1f8f1495..c7770999c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -156,7 +156,7 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4507,6 +_,12 @@ +@@ -4501,6 +_,12 @@ ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index 787982d42..bed82e0d8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -70,7 +70,7 @@ } float f2 = f + f1; -@@ -1823,7 +_,23 @@ +@@ -1822,7 +_,23 @@ @Override protected int getBaseExperienceReward(ServerLevel level) { @@ -95,7 +95,7 @@ } @Override -@@ -1861,6 +_,13 @@ +@@ -1860,6 +_,13 @@ public boolean addItem(ItemStack stack) { return this.inventory.add(stack); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch index 76068462e..4276bf195 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/BlockItem.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/BlockItem.java +++ b/net/minecraft/world/item/BlockItem.java -@@ -145,7 +_,16 @@ +@@ -144,7 +_,16 @@ } protected boolean updateCustomBlockEntityTag(BlockPos pos, Level level, @Nullable Player player, ItemStack stack, BlockState state) { @@ -18,7 +18,7 @@ } @Nullable -@@ -212,6 +_,7 @@ +@@ -211,6 +_,7 @@ } if (!type.onlyOpCanSetNbt() || player != null && (player.canUseGameMasterBlocks() || (player.getAbilities().instabuild && player.getBukkitEntity().hasPermission("minecraft.nbt.place")))) { // Spigot - add permission @@ -26,7 +26,7 @@ return customData.loadInto(blockEntity, level.registryAccess()); } -@@ -253,6 +_,7 @@ +@@ -252,6 +_,7 @@ public void onDestroyed(ItemEntity itemEntity) { ItemContainerContents itemContainerContents = itemEntity.getItem().set(DataComponents.CONTAINER, ItemContainerContents.EMPTY); if (itemContainerContents != null) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index c2ee158cb..404e14df5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -43,7 +43,7 @@ public int getDamageValue() { return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, 0), 0, this.getMaxDamage()); } -@@ -1209,6 +_,12 @@ +@@ -1205,6 +_,12 @@ public boolean isEnchanted() { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch index 76145281c..3fa0c2dfa 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ProjectileWeaponItem.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/item/ProjectileWeaponItem.java +++ b/net/minecraft/world/item/ProjectileWeaponItem.java -@@ -109,6 +_,8 @@ +@@ -106,6 +_,8 @@ abstractArrow.setCritArrow(true); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch index dccf0bfa8..16aa72e60 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/TridentItem.java.patch @@ -9,7 +9,7 @@ ); // Paper start - PlayerLaunchProjectileEvent com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) player.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(stack), (org.bukkit.entity.Projectile) tridentDelayed.projectile().getBukkitEntity()); -@@ -94,6 +_,7 @@ +@@ -93,6 +_,7 @@ return false; } ThrownTrident thrownTrident = tridentDelayed.projectile(); // Paper - PlayerLaunchProjectileEvent