diff options
author | Owen1212055 <[email protected]> | 2024-10-24 09:25:36 -0400 |
---|---|---|
committer | Owen1212055 <[email protected]> | 2024-10-24 09:25:36 -0400 |
commit | 26f7b4c72efc27c264ec6576a8ef0f1155e20424 (patch) | |
tree | fbb20ce5ff876fbf747f03e9e4ace2eb9dbd89a0 | |
parent | 80de05ff33104d1c6c6ddd9a32765c6aee86fd5b (diff) | |
download | Paper-26f7b4c72efc27c264ec6576a8ef0f1155e20424.tar.gz Paper-26f7b4c72efc27c264ec6576a8ef0f1155e20424.zip |
Patch
-rw-r--r-- | patches/server/0910-Add-PlayerShieldDisableEvent.patch (renamed from patches/unapplied/server/0917-Add-PlayerShieldDisableEvent.patch) | 28 | ||||
-rw-r--r-- | patches/server/0911-Validate-ResourceLocation-in-NBT-reading.patch (renamed from patches/unapplied/server/0918-Validate-ResourceLocation-in-NBT-reading.patch) | 45 | ||||
-rw-r--r-- | patches/server/0912-Properly-handle-experience-dropping-on-block-break.patch (renamed from patches/unapplied/server/0919-Properly-handle-experience-dropping-on-block-break.patch) | 14 | ||||
-rw-r--r-- | patches/server/0913-Fixup-NamespacedKey-handling.patch (renamed from patches/unapplied/server/0920-Fixup-NamespacedKey-handling.patch) | 6 | ||||
-rw-r--r-- | patches/server/0914-Expose-LootTable-of-DecoratedPot.patch (renamed from patches/unapplied/server/0921-Expose-LootTable-of-DecoratedPot.patch) | 0 | ||||
-rw-r--r-- | patches/server/0915-Reduce-allocation-of-Vec3D-by-entity-tracker.patch (renamed from patches/unapplied/server/0922-Reduce-allocation-of-Vec3D-by-entity-tracker.patch) | 36 | ||||
-rw-r--r-- | patches/server/0916-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch (renamed from patches/unapplied/server/0923-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch) | 20 | ||||
-rw-r--r-- | patches/server/0917-Add-ShulkerDuplicateEvent.patch (renamed from patches/unapplied/server/0924-Add-ShulkerDuplicateEvent.patch) | 4 | ||||
-rw-r--r-- | patches/server/0918-Add-api-for-spawn-egg-texture-colors.patch (renamed from patches/unapplied/server/0925-Add-api-for-spawn-egg-texture-colors.patch) | 2 |
9 files changed, 77 insertions, 78 deletions
diff --git a/patches/unapplied/server/0917-Add-PlayerShieldDisableEvent.patch b/patches/server/0910-Add-PlayerShieldDisableEvent.patch index 5bbd9b6ff6..d2d860a028 100644 --- a/patches/unapplied/server/0917-Add-PlayerShieldDisableEvent.patch +++ b/patches/server/0910-Add-PlayerShieldDisableEvent.patch @@ -16,36 +16,36 @@ sideeffects, meaning the disable event cannot share a handlerlist with the cooldown event diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 454b29d8c9e42e328933aa578f49d28f1e77898a..d0b51d96d6795b5fa03bc195b90324680545b752 100644 +index a19a795deaa7f46c92b97912e2ade006bc90c2d5..61d412c4f1ebd55661cc3f0260468e3ac0efe0bb 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1005,7 +1005,7 @@ public abstract class Player extends LivingEntity { - protected void blockUsingShield(LivingEntity attacker) { - super.blockUsingShield(attacker); - if (attacker.canDisableShield()) { -- this.disableShield(); -+ this.disableShield(attacker); // Paper - Add PlayerShieldDisableEvent +@@ -970,7 +970,7 @@ public abstract class Player extends LivingEntity { + ItemStack itemstack = this.getItemBlockingWith(); + + if (attacker.canDisableShield() && itemstack != null) { +- this.disableShield(itemstack); ++ this.disableShield(itemstack, attacker); // Paper - Add PlayerShieldDisableEvent } } -@@ -1498,8 +1498,21 @@ public abstract class Player extends LivingEntity { +@@ -1463,8 +1463,21 @@ public abstract class Player extends LivingEntity { this.attack(target); } + @io.papermc.paper.annotation.DoNotUse @Deprecated // Paper - Add PlayerShieldDisableEvent - public void disableShield() { -- this.getCooldowns().addCooldown(Items.SHIELD, 100); + public void disableShield(ItemStack shield) { +- this.getCooldowns().addCooldown(shield, 100); + // Paper start - Add PlayerShieldDisableEvent -+ this.disableShield(null); ++ this.disableShield(shield, null); + } -+ public void disableShield(@Nullable LivingEntity attacker) { ++ public void disableShield(ItemStack shield, @Nullable LivingEntity attacker) { + final org.bukkit.entity.Entity finalAttacker = attacker != null ? attacker.getBukkitEntity() : null; + if (finalAttacker != null) { + final io.papermc.paper.event.player.PlayerShieldDisableEvent shieldDisableEvent = new io.papermc.paper.event.player.PlayerShieldDisableEvent((org.bukkit.entity.Player) getBukkitEntity(), finalAttacker, 100); + if (!shieldDisableEvent.callEvent()) return; -+ this.getCooldowns().addCooldown(Items.SHIELD, shieldDisableEvent.getCooldown()); ++ this.getCooldowns().addCooldown(shield, shieldDisableEvent.getCooldown()); + } else { -+ this.getCooldowns().addCooldown(Items.SHIELD, 100); ++ this.getCooldowns().addCooldown(shield, 100); + } + // Paper end - Add PlayerShieldDisableEvent this.stopUsingItem(); diff --git a/patches/unapplied/server/0918-Validate-ResourceLocation-in-NBT-reading.patch b/patches/server/0911-Validate-ResourceLocation-in-NBT-reading.patch index 923bdbe37d..e0dee7a8de 100644 --- a/patches/unapplied/server/0918-Validate-ResourceLocation-in-NBT-reading.patch +++ b/patches/server/0911-Validate-ResourceLocation-in-NBT-reading.patch @@ -53,10 +53,10 @@ index 084935138b1484f3d96e99f4e5655a6c04931907..9e357abe13f55bd9ce3a1d5348bcf19a if (nbt.contains("LootTableSeed", 4)) { this.setLootTableSeed(nbt.getLong("LootTableSeed")); diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index b98f9246b60daf31460f41ce214dfa7c011f5684..842b0cec0397d7ae5166617627340ffac0e35db1 100644 +index 4eec58353343b414120e189afed04b98ae3e87c8..d77014aadf83088fb53f30a9dbe879f3089e159e 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -623,7 +623,7 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT +@@ -690,7 +690,7 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT } public static Optional<EntityType<?>> by(CompoundTag nbt) { @@ -66,10 +66,10 @@ index b98f9246b60daf31460f41ce214dfa7c011f5684..842b0cec0397d7ae5166617627340ffa @Nullable diff --git a/src/main/java/net/minecraft/world/entity/Leashable.java b/src/main/java/net/minecraft/world/entity/Leashable.java -index e7535f15be3cc1537aafee53779ccfb4f21d1f38..bd6d587cedfe0e345536d7ebb6b7ca204f073efe 100644 +index 1a6448cccf79a94013f9f44c3067d91da3da1f7e..06af888e4c3d9d01a462b487742b597184a7a8a6 100644 --- a/src/main/java/net/minecraft/world/entity/Leashable.java +++ b/src/main/java/net/minecraft/world/entity/Leashable.java -@@ -54,7 +54,13 @@ public interface Leashable { +@@ -55,7 +55,13 @@ public interface Leashable { @Nullable default Leashable.LeashData readLeashData(CompoundTag nbt) { if (nbt.contains("leash", 10)) { @@ -85,10 +85,10 @@ index e7535f15be3cc1537aafee53779ccfb4f21d1f38..bd6d587cedfe0e345536d7ebb6b7ca20 if (nbt.contains("leash", 11)) { Either<UUID, BlockPos> either = (Either) NbtUtils.readBlockPos(nbt, "leash").map(Either::right).orElse(null); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 13ef1ad250b56dbadba0244186e369d7ba9b5c0e..94169703c5a8111df1ed550d57f59f4a3bb97ae1 100644 +index f42a98324ecfc992cf36c2f44cdb781ad4edbad4..a7f0d49637eb72b4645997a97cc6927b16a59738 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -887,11 +887,13 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -911,11 +911,13 @@ public abstract class LivingEntity extends Entity implements Attackable { if (nbt.contains("SleepingX", 99) && nbt.contains("SleepingY", 99) && nbt.contains("SleepingZ", 99)) { BlockPos blockposition = new BlockPos(nbt.getInt("SleepingX"), nbt.getInt("SleepingY"), nbt.getInt("SleepingZ")); @@ -103,23 +103,23 @@ index 13ef1ad250b56dbadba0244186e369d7ba9b5c0e..94169703c5a8111df1ed550d57f59f4a if (nbt.contains("Brain", 10)) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index cf1f6a0081f0dbcf43842ec23accf6c3ae9b79d8..58ff5b4df2124901df757315e42b2490a7da7415 100644 +index 8a0e65ac8318a467996f48b423db1ac621359fbe..aad63549d7c4f501b683b8dead4938eac27895eb 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -603,7 +603,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -601,7 +601,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab this.leashData = this.readLeashData(nbt); this.setLeftHanded(nbt.getBoolean("LeftHanded")); if (nbt.contains("DeathLootTable", 8)) { -- this.lootTable = ResourceKey.create(Registries.LOOT_TABLE, ResourceLocation.parse(nbt.getString("DeathLootTable"))); -+ this.lootTable = net.minecraft.Optionull.map(ResourceLocation.tryParse(nbt.getString("DeathLootTable")), rl -> ResourceKey.create(Registries.LOOT_TABLE, rl)); // Paper - Validate ResourceLocation +- this.lootTable = Optional.of(ResourceKey.create(Registries.LOOT_TABLE, ResourceLocation.parse(nbt.getString("DeathLootTable")))); ++ this.lootTable = Optional.ofNullable(ResourceLocation.tryParse(nbt.getString("DeathLootTable"))).map((rs) -> ResourceKey.create(Registries.LOOT_TABLE, rs)); // Paper - Validate ResourceLocation this.lootTableSeed = nbt.getLong("DeathLootTableSeed"); } diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index 10d30304c8c89b1f2a55be8529035311d1424e44..ddf47dab1ab92c45e3eea09239d418a9798ed59e 100644 +index 75cc3db39c974abab8510af4a633fc6812efc647..14e31ae88e90d8ea1a98800cc6c1c3527bb2ed6b 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -649,7 +649,7 @@ public abstract class AbstractArrow extends Projectile { +@@ -695,7 +695,7 @@ public abstract class AbstractArrow extends Projectile { this.setCritArrow(nbt.getBoolean("crit")); this.setPierceLevel(nbt.getByte("PierceLevel")); if (nbt.contains("SoundEvent", 8)) { @@ -129,41 +129,40 @@ index 10d30304c8c89b1f2a55be8529035311d1424e44..ddf47dab1ab92c45e3eea09239d418a9 if (nbt.contains("item", 10)) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/ContainerEntity.java b/src/main/java/net/minecraft/world/entity/vehicle/ContainerEntity.java -index ccc7367ab2740bea0f2b907223a0920b11665092..845eff7401b811c179dc9dee70eca0d724be5c80 100644 +index 5c78e33d4d369700a5fa6eb3cbbe85756465a063..35f90e06dcf30c2e6a2a63e81215283ffbb3ec05 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/ContainerEntity.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/ContainerEntity.java @@ -73,7 +73,7 @@ public interface ContainerEntity extends Container, MenuProvider { - default void readChestVehicleSaveData(CompoundTag nbt, HolderLookup.Provider registriesLookup) { + default void readChestVehicleSaveData(CompoundTag nbt, HolderLookup.Provider registries) { this.clearItemStacks(); if (nbt.contains("LootTable", 8)) { -- this.setLootTable(ResourceKey.create(Registries.LOOT_TABLE, ResourceLocation.parse(nbt.getString("LootTable")))); -+ this.setLootTable(net.minecraft.Optionull.map(ResourceLocation.tryParse(nbt.getString("LootTable")), rl -> ResourceKey.create(Registries.LOOT_TABLE, rl))); // Paper - Validate ResourceLocation +- this.setContainerLootTable(ResourceKey.create(Registries.LOOT_TABLE, ResourceLocation.parse(nbt.getString("LootTable")))); ++ this.setContainerLootTable(net.minecraft.Optionull.map(ResourceLocation.tryParse(nbt.getString("LootTable")), rl -> ResourceKey.create(Registries.LOOT_TABLE, rl))); // Paper - Validate ResourceLocation // Paper start - LootTable API if (this.getLootTable() != null) { this.lootableData().loadNbt(nbt); diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -index 65ab9b22f724877b68f4f25aad2831e2cb080b19..730aca233f6e7564d4cb85b5b628d23c4f01d2f4 100644 +index ecb9abc570ef87541184a8033cb33c82a4d1daf2..a1ac34668fcd53cf8adf4ce463e0254b26575fbf 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java -@@ -295,7 +295,12 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit +@@ -180,7 +180,11 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit while (iterator.hasNext()) { String s = (String) iterator.next(); -- this.recipesUsed.put(ResourceLocation.parse(s), nbttagcompound1.getInt(s)); +- this.recipesUsed.put(ResourceKey.create(Registries.RECIPE, ResourceLocation.parse(s)), nbttagcompound1.getInt(s)); + // Paper start - Validate ResourceLocation + final ResourceLocation resourceLocation = ResourceLocation.tryParse(s); + if (resourceLocation != null) { -+ this.recipesUsed.put(resourceLocation, nbttagcompound1.getInt(s)); ++ this.recipesUsed.put(ResourceKey.create(Registries.RECIPE, resourceLocation), nbttagcompound1.getInt(s)); + } -+ // Paper end - Validate ResourceLocation } // Paper start - cook speed multiplier API diff --git a/src/main/java/net/minecraft/world/level/block/entity/BrushableBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BrushableBlockEntity.java -index 32de29c385c784ab87e29b2e072f3992386cd775..dc02a3d84b397f634f77f4df9c06e245cc4dcb75 100644 +index 1bfffbf54b1b440c6e19a908ea2bd70387d06b5c..b08867878e56f88569d547765f29cab018a9e791 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BrushableBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BrushableBlockEntity.java -@@ -202,7 +202,7 @@ public class BrushableBlockEntity extends BlockEntity { +@@ -194,7 +194,7 @@ public class BrushableBlockEntity extends BlockEntity { private boolean tryLoadLootTable(CompoundTag nbt) { if (nbt.contains("LootTable", 8)) { diff --git a/patches/unapplied/server/0919-Properly-handle-experience-dropping-on-block-break.patch b/patches/server/0912-Properly-handle-experience-dropping-on-block-break.patch index c5ffca5d89..5b97d88f0f 100644 --- a/patches/unapplied/server/0919-Properly-handle-experience-dropping-on-block-break.patch +++ b/patches/server/0912-Properly-handle-experience-dropping-on-block-break.patch @@ -7,7 +7,7 @@ This causes spawnAfterBreak to spawn xp by default, removing the need to manuall For classes that use custom xp amounts, they can drop the resources with disabling diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 3f87e60c0d43703a8450b5920dac59a970809397..471fd54edf6aa962d997878ee638974f7f594fa8 100644 +index d048d0e4b16459b5bad44ebfa3c6a8f336f6762b..83537aa240ebff8dd19b450956730dc3d4f355a0 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -617,7 +617,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -21,10 +21,10 @@ index 3f87e60c0d43703a8450b5920dac59a970809397..471fd54edf6aa962d997878ee638974f boolean flag1 = this.setBlock(pos, fluid.createLegacyBlock(), 3, maxUpdateDepth); diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index c083dc8b2a69c3747b250d13f1a28ad22b5e6119..bf52c36f31992a01a7403d8c85151327c9e944c4 100644 +index 6fb3f551f432d7e668c606fb7bd3514408e0478a..9917df070d9815b6915e4a0b022dfe4e5b7861e7 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -312,23 +312,31 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -311,23 +311,31 @@ public class Block extends BlockBehaviour implements ItemLike { for (ItemStack drop : Block.getDrops(state, serverLevel, pos, blockEntity)) { items.add(org.bukkit.craftbukkit.inventory.CraftItemStack.asBukkitCopy(drop)); } @@ -58,7 +58,7 @@ index c083dc8b2a69c3747b250d13f1a28ad22b5e6119..bf52c36f31992a01a7403d8c85151327 } } -@@ -412,7 +420,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -415,7 +423,7 @@ public class Block extends BlockBehaviour implements ItemLike { player.awardStat(Stats.BLOCK_MINED.get(this)); player.causeFoodExhaustion(0.005F, org.bukkit.event.entity.EntityExhaustionEvent.ExhaustionReason.BLOCK_MINED); // CraftBukkit - EntityExhaustionEvent if (includeDrops) { // Paper - fix drops not preventing stats/food exhaustion @@ -68,10 +68,10 @@ index c083dc8b2a69c3747b250d13f1a28ad22b5e6119..bf52c36f31992a01a7403d8c85151327 } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index a8bec3c405732e5863cf717b1fe948d00837bed2..240c250a93289776686d09d7eae17c07d7278da5 100644 +index 0665ca48fe2f8ab1ce1c0306b11be19b06445f74..1b988b92e80faa1ac224caf9f9e955ac43a4c45a 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -1119,6 +1119,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -1180,6 +1180,7 @@ public abstract class BlockBehaviour implements FeatureElement { public void spawnAfterBreak(ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { this.getBlock().spawnAfterBreak(this.asState(), world, pos, tool, dropExperience); @@ -80,7 +80,7 @@ index a8bec3c405732e5863cf717b1fe948d00837bed2..240c250a93289776686d09d7eae17c07 public List<ItemStack> getDrops(LootParams.Builder builder) { diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index 461a66c323a74db5a70981fafc5fa20f54f0f40d..ac11f18690434922179b61ffcc3036dea025b0cb 100644 +index a34e888f63ead250c41b6bbe6850a5e5b4254c3d..66ac5d0b6dafd0323b73953cdd633dca624c3bcd 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -509,7 +509,7 @@ public class CraftBlock implements Block { diff --git a/patches/unapplied/server/0920-Fixup-NamespacedKey-handling.patch b/patches/server/0913-Fixup-NamespacedKey-handling.patch index f5d990944b..932cc370d8 100644 --- a/patches/unapplied/server/0920-Fixup-NamespacedKey-handling.patch +++ b/patches/server/0913-Fixup-NamespacedKey-handling.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fixup NamespacedKey handling diff --git a/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java b/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java -index e34deaf398dc6722c3128bdd6b9bc16da2d33bf7..f028daa4f23a1f1868c9922991259739cadc5da2 100644 +index 90b82ad996b2b85628c9a5ddeef9410150b7f70c..5fd22a80e9d05afbea273471cee991732a9485fd 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftLootTable.java @@ -38,7 +38,7 @@ public class CraftLootTable implements org.bukkit.loot.LootTable { @@ -18,7 +18,7 @@ index e34deaf398dc6722c3128bdd6b9bc16da2d33bf7..f028daa4f23a1f1868c9922991259739 public static NamespacedKey minecraftToBukkitKey(ResourceKey<LootTable> minecraft) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java -index 9b78bfd187a1bd5f99af5690f194441904956c7d..bd16933a5341908b21e549f66080c33466ad1079 100644 +index aa66fd8dca886c1f064d8cb4a3d15c2086c1719a..f8450a2abd1e96fac7827d252cc00038b9dee839 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java @@ -122,6 +122,16 @@ public class CraftRegistry<B extends Keyed, M> implements Registry<B> { @@ -81,7 +81,7 @@ index bcac1359c667ef1ee46384f9c7a5adf4010d2b08..98a4463c9f194f33f4f85d95a0b9fa06 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmor.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmor.java -index 2c57fd269484ed79814d974877585f9f7e6393d3..865977ce17fbb8793a1eefd71079729e83f5cfaf 100644 +index 0fdd9dd47594a7e7e785c34c09d9b4a79aad2439..0d3b1692af010bfd7ea83e22e9571dc954906f71 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmor.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaArmor.java @@ -38,8 +38,9 @@ public class CraftMetaArmor extends CraftMetaItem implements ArmorMeta { diff --git a/patches/unapplied/server/0921-Expose-LootTable-of-DecoratedPot.patch b/patches/server/0914-Expose-LootTable-of-DecoratedPot.patch index afa86977a9..afa86977a9 100644 --- a/patches/unapplied/server/0921-Expose-LootTable-of-DecoratedPot.patch +++ b/patches/server/0914-Expose-LootTable-of-DecoratedPot.patch diff --git a/patches/unapplied/server/0922-Reduce-allocation-of-Vec3D-by-entity-tracker.patch b/patches/server/0915-Reduce-allocation-of-Vec3D-by-entity-tracker.patch index 37c0ef0eef..a9f20c91ac 100644 --- a/patches/unapplied/server/0922-Reduce-allocation-of-Vec3D-by-entity-tracker.patch +++ b/patches/server/0915-Reduce-allocation-of-Vec3D-by-entity-tracker.patch @@ -18,10 +18,10 @@ index a043ac10834562d357ef0b5aded2e916e2a0d056..74276c368016fcc4dbf9579b2ecbadc9 @VisibleForTesting static long encode(double value) { diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 6c667823c2ef15766f3afc1a9c819cb6c24b0912..4c1cf5798209297e1e8a634b63770e917a84a63c 100644 +index 29a28e160f6ca87d263b84fbf0c5429d30e34a21..a43eef8bf05855270601761494b6a67dc55cb1c9 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1519,10 +1519,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1578,10 +1578,14 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider public void updatePlayer(ServerPlayer player) { org.spigotmc.AsyncCatcher.catchOp("player tracker update"); // Spigot if (player != this.entity) { @@ -39,21 +39,21 @@ index 6c667823c2ef15766f3afc1a9c819cb6c24b0912..4c1cf5798209297e1e8a634b63770e91 // Paper start - Configurable entity tracking range by Y boolean flag = d1 <= d2; diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index a2fbbbd7a66d4e7b1063638f8467e8887a417282..0e7ace92522fbd4cef7b2c2b8a0f8b86c2cce192 100644 +index 7118e1f806af98159ec292f9340d7e4004e2b486..f3456aeeab7eee5b6d0383a4bf1338dd8cc95bb3 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -163,7 +163,13 @@ public class ServerEntity { - i = Mth.floor(this.entity.getYRot() * 256.0F / 360.0F); - j = Mth.floor(this.entity.getXRot() * 256.0F / 360.0F); - Vec3 vec3d = this.entity.trackingPosition(); -- boolean flag1 = this.positionCodec.delta(vec3d).lengthSqr() >= 7.62939453125E-6D; -+ // Paper start - reduce allocation of Vec3D here -+ Vec3 base = this.positionCodec.base; -+ double vec3d_dx = vec3d.x - base.x; -+ double vec3d_dy = vec3d.y - base.y; -+ double vec3d_dz = vec3d.z - base.z; -+ boolean flag1 = (vec3d_dx * vec3d_dx + vec3d_dy * vec3d_dy + vec3d_dz * vec3d_dz) >= 7.62939453125E-6D; -+ // Paper end - reduce allocation of Vec3D here - Packet<?> packet1 = null; - boolean flag2 = flag1 || this.tickCount % 60 == 0; - boolean flag3 = Math.abs(i - this.lastSentYRot) >= 1 || Math.abs(j - this.lastSentXRot) >= 1; +@@ -178,7 +178,13 @@ public class ServerEntity { + + ++this.teleportDelay; + Vec3 vec3d = this.entity.trackingPosition(); +- boolean flag1 = this.positionCodec.delta(vec3d).lengthSqr() >= 7.62939453125E-6D; ++ // Paper start - reduce allocation of Vec3D here ++ Vec3 base = this.positionCodec.base; ++ double vec3d_dx = vec3d.x - base.x; ++ double vec3d_dy = vec3d.y - base.y; ++ double vec3d_dz = vec3d.z - base.z; ++ boolean flag1 = (vec3d_dx * vec3d_dx + vec3d_dy * vec3d_dy + vec3d_dz * vec3d_dz) >= 7.62939453125E-6D; ++ // Paper end - reduce allocation of Vec3D here + Packet<?> packet1 = null; + boolean flag2 = flag1 || this.tickCount % 60 == 0; + boolean flag3 = false; diff --git a/patches/unapplied/server/0923-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch b/patches/server/0916-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch index 95e1104a25..4ed1121ea1 100644 --- a/patches/unapplied/server/0923-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch +++ b/patches/server/0916-Add-PlayerTradeEvent-and-PlayerPurchaseEvent.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add PlayerTradeEvent and PlayerPurchaseEvent Co-authored-by: Alexander <[email protected]> diff --git a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java -index 2a155d3611ca2370830ca763d40074df6641958f..d28ebcae036168dd65a5f3236d12ee416308c23f 100644 +index 39cb40b077e9c07471437d5bec16ba9a7e6bce52..5f656fc726a1dc5f42657095a2f2b7cf85b92d7c 100644 --- a/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java +++ b/src/main/java/net/minecraft/world/entity/npc/AbstractVillager.java @@ -141,11 +141,24 @@ public abstract class AbstractVillager extends AgeableMob implements InventoryCa @@ -37,10 +37,10 @@ index 2a155d3611ca2370830ca763d40074df6641958f..d28ebcae036168dd65a5f3236d12ee41 CriteriaTriggers.TRADE.trigger((ServerPlayer) this.tradingPlayer, this, offer.getResult()); } diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -index 8a1035c0aa859f67a6806c183d96a88ddf760baa..46159a127d910028c62ada90ff2d2dccc3b62fc3 100644 +index 85caec29a705f216eff8a5ae11f250697891a05c..78d0ff45c016e900d87010e8b26b0bb10e63f445 100644 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -@@ -768,6 +768,14 @@ public abstract class AbstractContainerMenu { +@@ -831,6 +831,14 @@ public abstract class AbstractContainerMenu { public abstract boolean stillValid(Player player); protected boolean moveItemStackTo(ItemStack stack, int startIndex, int endIndex, boolean fromLast) { @@ -55,7 +55,7 @@ index 8a1035c0aa859f67a6806c183d96a88ddf760baa..46159a127d910028c62ada90ff2d2dcc boolean flag1 = false; int k = startIndex; -@@ -791,6 +799,11 @@ public abstract class AbstractContainerMenu { +@@ -854,6 +862,11 @@ public abstract class AbstractContainerMenu { slot = (Slot) this.slots.get(k); itemstack1 = slot.getItem(); @@ -67,7 +67,7 @@ index 8a1035c0aa859f67a6806c183d96a88ddf760baa..46159a127d910028c62ada90ff2d2dcc if (!itemstack1.isEmpty() && ItemStack.isSameItemSameComponents(stack, itemstack1)) { l = itemstack1.getCount() + stack.getCount(); int i1 = slot.getMaxStackSize(itemstack1); -@@ -798,12 +811,16 @@ public abstract class AbstractContainerMenu { +@@ -861,12 +874,16 @@ public abstract class AbstractContainerMenu { if (l <= i1) { stack.setCount(0); itemstack1.setCount(l); @@ -84,7 +84,7 @@ index 8a1035c0aa859f67a6806c183d96a88ddf760baa..46159a127d910028c62ada90ff2d2dcc flag1 = true; } } -@@ -834,10 +851,21 @@ public abstract class AbstractContainerMenu { +@@ -897,10 +914,21 @@ public abstract class AbstractContainerMenu { slot = (Slot) this.slots.get(k); itemstack1 = slot.getItem(); @@ -107,10 +107,10 @@ index 8a1035c0aa859f67a6806c183d96a88ddf760baa..46159a127d910028c62ada90ff2d2dcc break; } diff --git a/src/main/java/net/minecraft/world/inventory/MerchantMenu.java b/src/main/java/net/minecraft/world/inventory/MerchantMenu.java -index e45ab844afdf1a65f23eeff4c4d6cd9e3a8a28e2..5de2030452b96a4df7ce0be82f07e002db595dee 100644 +index 90560dfad263d42432dc034a29930e6bab953b9a..6a529b5e289c416c0ebdc0260086ec039777aa40 100644 --- a/src/main/java/net/minecraft/world/inventory/MerchantMenu.java +++ b/src/main/java/net/minecraft/world/inventory/MerchantMenu.java -@@ -135,12 +135,12 @@ public class MerchantMenu extends AbstractContainerMenu { +@@ -123,12 +123,12 @@ public class MerchantMenu extends AbstractContainerMenu { itemstack = itemstack1.copy(); if (slot == 2) { @@ -126,7 +126,7 @@ index e45ab844afdf1a65f23eeff4c4d6cd9e3a8a28e2..5de2030452b96a4df7ce0be82f07e002 } else if (slot != 0 && slot != 1) { if (slot >= 3 && slot < 30) { if (!this.moveItemStackTo(itemstack1, 30, 39, false)) { -@@ -153,6 +153,7 @@ public class MerchantMenu extends AbstractContainerMenu { +@@ -141,6 +141,7 @@ public class MerchantMenu extends AbstractContainerMenu { return ItemStack.EMPTY; } @@ -134,7 +134,7 @@ index e45ab844afdf1a65f23eeff4c4d6cd9e3a8a28e2..5de2030452b96a4df7ce0be82f07e002 if (itemstack1.isEmpty()) { slot1.setByPlayer(ItemStack.EMPTY); } else { -@@ -164,6 +165,21 @@ public class MerchantMenu extends AbstractContainerMenu { +@@ -152,6 +153,21 @@ public class MerchantMenu extends AbstractContainerMenu { } slot1.onTake(player, itemstack1); diff --git a/patches/unapplied/server/0924-Add-ShulkerDuplicateEvent.patch b/patches/server/0917-Add-ShulkerDuplicateEvent.patch index de864137e2..f06c91ae48 100644 --- a/patches/unapplied/server/0924-Add-ShulkerDuplicateEvent.patch +++ b/patches/server/0917-Add-ShulkerDuplicateEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add ShulkerDuplicateEvent diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -index bf58956379d0a5dbfdc34e8626847638b4111433..920c7a92643e83598f39bf984cca430d9deed2cd 100644 +index 0fffa9dbcbbb15a2138f9a4e4d8e812c8047a7bb..6e0f2f6573ed6be9b91de960d55c269417ad8907 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java +++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java -@@ -491,6 +491,11 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye +@@ -492,6 +492,11 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye if (entityshulker != null) { entityshulker.setVariant(this.getVariant()); entityshulker.moveTo(vec3d); diff --git a/patches/unapplied/server/0925-Add-api-for-spawn-egg-texture-colors.patch b/patches/server/0918-Add-api-for-spawn-egg-texture-colors.patch index 8eac793c2e..519fc3ea81 100644 --- a/patches/unapplied/server/0925-Add-api-for-spawn-egg-texture-colors.patch +++ b/patches/server/0918-Add-api-for-spawn-egg-texture-colors.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add api for spawn egg texture colors diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index b07c8111daa010dee2bb8be52162aafa4c267f1f..73a3e708f21c1b9c5de1fc180f728d6da7eea0fb 100644 +index fa3add7cc39997d137b9dbc2178e08e9a6e5f31a..b6591836a8d9301b8cf909223426df0e8e675c1f 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -643,6 +643,15 @@ public final class CraftMagicNumbers implements UnsafeValues { |