From 4c65932efffe9c8b3a6818562a3629275cfd3567 Mon Sep 17 00:00:00 2001 From: Cryptite Date: Sat, 20 Jan 2024 17:15:39 -0600 Subject: [PATCH] Patch updates --- build-data/dev-imports.txt | 6 +- build-data/mappings-patch.tiny | 5 + build-data/paper.at | 18 +++ build-data/reobf-mappings-patch.tiny | 20 ++- gradle.properties | 2 +- patches/server/0001-Build-Changes.patch | 12 +- ...-Set-BlockData-without-light-updates.patch | 20 +-- ...03-Add-BlockDestroyedByNeighborEvent.patch | 143 ------------------ ...3-Add-provided-Material-to-getDrops.patch} | 2 +- ...004-Add-Player-to-SpongeAbsorbEvent.patch} | 0 ...tch => 0005-Add-World-Instance-flag.patch} | 10 +- ...patch => 0006-Add-PlayerData-Events.patch} | 10 +- ...07-Add-PlayerGetRespawnLocationEvent.patch | 64 ++++++++ ...08-Add-PlayerGetRespawnLocationEvent.patch | 102 ------------- ...-Set-multiple-team-settings-at-once.patch} | 2 +- ...orts.patch => 0009-Smooth-Teleports.patch} | 10 +- ...ility-changes-for-equipment-updates.patch} | 4 +- ...h => 0011-Disable-Azalea-generation.patch} | 0 ...ypass.patch => 0012-AntiXray-Bypass.patch} | 2 +- ...=> 0013-Add-PlayerPreChunkLoadEvent.patch} | 2 +- ...> 0014-Allow-opening-covered-chests.patch} | 0 ...-send-fire-packets-if-player-has-FR.patch} | 4 +- ...=> 0016-Allow-access-to-LightEngine.patch} | 2 +- ...eode-and-monsterspawners-generation.patch} | 0 ...-Set-Mutton-nutrition-equal-to-beef.patch} | 0 ....patch => 0019-PlayerLoadStatsEvent.patch} | 8 +- ...-Crit-to-PlayerPreAttackEntityEvent.patch} | 6 +- ...-Bonus-to-PlayerPreAttackEntityEven.patch} | 2 +- ... 0022-noEntityCollisions-for-Entity.patch} | 4 +- ...> 0023-Do-not-freeze-MappedRegistry.patch} | 0 ...d-jackson.patch => 0024-Add-jackson.patch} | 2 +- ....patch => 0025-Maybe-can-t-tostring.patch} | 6 +- ...Allow-inventory-clicks-in-Spectator.patch} | 4 +- ...27-Packet-obfuscation-and-reduction.patch} | 16 +- ...atch => 0028-Long-distance-tracking.patch} | 14 +- ...ch => 0029-Equipment-Packet-Caching.patch} | 24 +-- ...ch => 0030-Add-canDespawn-to-Warden.patch} | 6 +- ...eason-to-PlayerConnectionCloseEvent.patch} | 0 ... => 0032-Disable-feature-generation.patch} | 0 ...patch => 0033-Biome-freeze-override.patch} | 0 ...h => 0034-Change-KeepAlive-interval.patch} | 2 +- ...patch => 0035-Non-saveable-entities.patch} | 10 +- ...atch => 0036-ChunkStatusChangeEvent.patch} | 0 ...ble-sending-Entity-Movement-Packets.patch} | 10 +- ....patch => 0038-Player-spawnsOwnMobs.patch} | 8 +- ...-Set-location-on-a-Custom-Inventory.patch} | 0 ...e.patch => 0040-Shared-Data-Storage.patch} | 16 +- .../{0043-Vanish.patch => 0041-Vanish.patch} | 10 +- 48 files changed, 222 insertions(+), 366 deletions(-) create mode 100644 build-data/mappings-patch.tiny create mode 100644 build-data/paper.at delete mode 100644 patches/server/0003-Add-BlockDestroyedByNeighborEvent.patch rename patches/server/{0004-Add-provided-Material-to-getDrops.patch => 0003-Add-provided-Material-to-getDrops.patch} (93%) rename patches/server/{0005-Add-Player-to-SpongeAbsorbEvent.patch => 0004-Add-Player-to-SpongeAbsorbEvent.patch} (100%) rename patches/server/{0006-Add-World-Instance-flag.patch => 0005-Add-World-Instance-flag.patch} (80%) rename patches/server/{0007-Add-PlayerData-Events.patch => 0006-Add-PlayerData-Events.patch} (94%) create mode 100644 patches/server/0007-Add-PlayerGetRespawnLocationEvent.patch delete mode 100644 patches/server/0008-Add-PlayerGetRespawnLocationEvent.patch rename patches/server/{0009-Set-multiple-team-settings-at-once.patch => 0008-Set-multiple-team-settings-at-once.patch} (98%) rename patches/server/{0010-Smooth-Teleports.patch => 0009-Smooth-Teleports.patch} (90%) rename patches/server/{0011-Ignore-durability-changes-for-equipment-updates.patch => 0010-Ignore-durability-changes-for-equipment-updates.patch} (83%) rename patches/server/{0012-Disable-Azalea-generation.patch => 0011-Disable-Azalea-generation.patch} (100%) rename patches/server/{0013-AntiXray-Bypass.patch => 0012-AntiXray-Bypass.patch} (96%) rename patches/server/{0014-Add-PlayerPreChunkLoadEvent.patch => 0013-Add-PlayerPreChunkLoadEvent.patch} (95%) rename patches/server/{0015-Allow-opening-covered-chests.patch => 0014-Allow-opening-covered-chests.patch} (100%) rename patches/server/{0016-Don-t-send-fire-packets-if-player-has-FR.patch => 0015-Don-t-send-fire-packets-if-player-has-FR.patch} (86%) rename patches/server/{0017-Allow-access-to-LightEngine.patch => 0016-Allow-access-to-LightEngine.patch} (89%) rename patches/server/{0018-Disable-geode-and-monsterspawners-generation.patch => 0017-Disable-geode-and-monsterspawners-generation.patch} (100%) rename patches/server/{0019-Set-Mutton-nutrition-equal-to-beef.patch => 0018-Set-Mutton-nutrition-equal-to-beef.patch} (100%) rename patches/server/{0020-PlayerLoadStatsEvent.patch => 0019-PlayerLoadStatsEvent.patch} (95%) rename patches/server/{0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch => 0020-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch} (89%) rename patches/server/{0022-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch => 0021-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch} (93%) rename patches/server/{0023-noEntityCollisions-for-Entity.patch => 0022-noEntityCollisions-for-Entity.patch} (91%) rename patches/server/{0024-Do-not-freeze-MappedRegistry.patch => 0023-Do-not-freeze-MappedRegistry.patch} (100%) rename patches/server/{0025-Add-jackson.patch => 0024-Add-jackson.patch} (89%) rename patches/server/{0026-Maybe-can-t-tostring.patch => 0025-Maybe-can-t-tostring.patch} (89%) rename patches/server/{0027-Allow-inventory-clicks-in-Spectator.patch => 0026-Allow-inventory-clicks-in-Spectator.patch} (88%) rename patches/server/{0028-Packet-obfuscation-and-reduction.patch => 0027-Packet-obfuscation-and-reduction.patch} (92%) rename patches/server/{0029-Long-distance-tracking.patch => 0028-Long-distance-tracking.patch} (89%) rename patches/server/{0030-Equipment-Packet-Caching.patch => 0029-Equipment-Packet-Caching.patch} (92%) rename patches/server/{0031-Add-canDespawn-to-Warden.patch => 0030-Add-canDespawn-to-Warden.patch} (93%) rename patches/server/{0033-Add-reason-to-PlayerConnectionCloseEvent.patch => 0031-Add-reason-to-PlayerConnectionCloseEvent.patch} (100%) rename patches/server/{0034-Disable-feature-generation.patch => 0032-Disable-feature-generation.patch} (100%) rename patches/server/{0035-Biome-freeze-override.patch => 0033-Biome-freeze-override.patch} (100%) rename patches/server/{0036-Change-KeepAlive-interval.patch => 0034-Change-KeepAlive-interval.patch} (92%) rename patches/server/{0037-Non-saveable-entities.patch => 0035-Non-saveable-entities.patch} (88%) rename patches/server/{0038-ChunkStatusChangeEvent.patch => 0036-ChunkStatusChangeEvent.patch} (100%) rename patches/server/{0039-Disable-sending-Entity-Movement-Packets.patch => 0037-Disable-sending-Entity-Movement-Packets.patch} (90%) rename patches/server/{0040-Player-spawnsOwnMobs.patch => 0038-Player-spawnsOwnMobs.patch} (83%) rename patches/server/{0041-Set-location-on-a-Custom-Inventory.patch => 0039-Set-location-on-a-Custom-Inventory.patch} (100%) rename patches/server/{0042-Shared-Data-Storage.patch => 0040-Shared-Data-Storage.patch} (90%) rename patches/server/{0043-Vanish.patch => 0041-Vanish.patch} (82%) diff --git a/build-data/dev-imports.txt b/build-data/dev-imports.txt index f35428a89..8c500e912 100644 --- a/build-data/dev-imports.txt +++ b/build-data/dev-imports.txt @@ -7,4 +7,8 @@ # datafixerupper com/mojang/datafixers/util/Either.java # To import classes from the vanilla Minecraft jar use `minecraft` as the artifactId: # minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter -# minecraft net/minecraft/world/level/entity/LevelEntityGetter.java \ No newline at end of file +# minecraft net/minecraft/world/level/entity/LevelEntityGetter.java +# To import minecraft data files, like the default chat type, use `mc_data` as the prefix: +# mc_data chat_type/chat.json +# mc_data dimension_type/overworld.json +# \ No newline at end of file diff --git a/build-data/mappings-patch.tiny b/build-data/mappings-patch.tiny new file mode 100644 index 000000000..14a2a3582 --- /dev/null +++ b/build-data/mappings-patch.tiny @@ -0,0 +1,5 @@ +tiny 2 0 spigot mojang+yarn + +# Originally DistanceManager, which also implements DistanceManager, so clashes since the implemented class +# is imported and not fully qualified. Easiest fix is to just change the name +c net/minecraft/server/level/PlayerChunkMap$a net/minecraft/server/level/ChunkMap$ChunkDistanceManager diff --git a/build-data/paper.at b/build-data/paper.at new file mode 100644 index 000000000..48a44de36 --- /dev/null +++ b/build-data/paper.at @@ -0,0 +1,18 @@ +# You can use this file to change the access modifiers on a member +# This line would make the field rollAmount public in Bee +#public net.minecraft.world.entity.animal.Bee rollAmount +# This line would make the field public and remove the final modifier +#public-f net.minecraft.network.protocol.game.ClientboundChatPacket sender +# Leave out the member and it will apply to the class itself +# More info, see here https://mcforge.readthedocs.io/en/latest/advanced/accesstransformers/#access-modifiers + +# Remap/Decompile fix (unclear why this is happening) +public net.minecraft.server.MinecraftServer doRunTask(Lnet/minecraft/server/TickTask;)V + +# AT remap issue? todo 1.18 +public net.minecraft.world.level.dimension.end.EndDragonFight findExitPortal()Lnet/minecraft/world/level/block/state/pattern/BlockPattern$BlockPatternMatch; +public net.minecraft.nbt.TagParser readArrayTag()Lnet/minecraft/nbt/Tag; + +# TODO 1.20 remapSpigotAt.at doesn't remap the return type for this method for some reason +public net/minecraft/world/entity/Display$TextDisplay getText()Lnet/minecraft/network/chat/Component; +public net/minecraft/world/entity/Display$BlockDisplay getBlockState()Lnet/minecraft/world/level/block/state/BlockState; diff --git a/build-data/reobf-mappings-patch.tiny b/build-data/reobf-mappings-patch.tiny index e975a3cbf..347b2b8fd 100644 --- a/build-data/reobf-mappings-patch.tiny +++ b/build-data/reobf-mappings-patch.tiny @@ -9,10 +9,20 @@ # of these issues. Due to the complex nature of mappings generation and the debugging difficulty involved it may take # a significant amount of time for us to track down every possible issue, so this file will likely be around and in # use - at least in some capacity - for a long time. -# -# If you are adding mappings patches which are correcting for issues in paperweight's reobf mappings generation, -# unrelated to any changes in your patches, we ask that you PR the mapping to Paper so more users can benefit rather -# than keep the fix for your own fork. If the mappings patch is there to correct reobf for changes made in your patches, -# then obviously it doesn't make any sense to PR them upstream. tiny 2 0 mojang+yarn spigot + +# CraftBukkit changes type +c net/minecraft/server/level/ServerLevel net/minecraft/server/level/WorldServer + f Lnet/minecraft/world/level/storage/PrimaryLevelData; serverLevelData K + +c net/minecraft/world/level/chunk/LevelChunk net/minecraft/world/level/chunk/Chunk + f Lnet/minecraft/server/level/ServerLevel; level r + +# See mappings-patch.tiny +c net/minecraft/server/level/ChunkMap net/minecraft/server/level/PlayerChunkMap + f Lnet/minecraft/server/level/ChunkMap$ChunkDistanceManager; distanceManager F + +# The method is made public by Spigot, which then causes accidental overrides +c net/minecraft/world/entity/Entity net/minecraft/world/entity/Entity + m ()Z isInRain isInRain0 diff --git a/gradle.properties b/gradle.properties index a8fc93ab7..ff57b293a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=com.lokamc.slice version=1.20.4-R0.1-SNAPSHOT mcVersion=1.20.4 -paperRef=a58e29db993120e8cb625b63ada06e2638ff2ac2 +paperRef=8d94596e309ed6d8d00c501336b7899b7c53562f org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/server/0001-Build-Changes.patch b/patches/server/0001-Build-Changes.patch index 5904759c8..d3054d3ae 100644 --- a/patches/server/0001-Build-Changes.patch +++ b/patches/server/0001-Build-Changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Build Changes diff --git a/build.gradle.kts b/build.gradle.kts -index 58da26ad2f128ba0b66f86820f60853f4be352f0..f9df4ced9b313333102d5f76dff20841a789e53f 100644 +index 376e8983fdfdbb6c3e5fd8ad0f6a05e655b622bf..c9868e781ce212285a9621236efa65788c7a1cca 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -23,7 +23,7 @@ index 58da26ad2f128ba0b66f86820f60853f4be352f0..f9df4ced9b313333102d5f76dff20841 // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -70,7 +74,7 @@ tasks.jar { +@@ -69,7 +73,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -32,7 +32,7 @@ index 58da26ad2f128ba0b66f86820f60853f4be352f0..f9df4ced9b313333102d5f76dff20841 "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -154,7 +158,7 @@ fun TaskContainer.registerRunTask( +@@ -153,7 +157,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -42,10 +42,10 @@ index 58da26ad2f128ba0b66f86820f60853f4be352f0..f9df4ced9b313333102d5f76dff20841 standardInput = System.`in` workingDir = rootProject.layout.projectDirectory diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 34f19ac897a30c0c4e3ab406013fcca1c8b7db93..04c6357d24a095bcff40e267cd40920e3b3c3c5d 100644 +index 71dd7a881fff1a25e65efce0e9c0074584bcd0e8..078f6e9d081f6efd9417da0798197cf4b5661198 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1866,7 +1866,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -Date: Mon, 10 Apr 2023 07:30:29 -0500 -Subject: [PATCH] Add BlockDestroyedByNeighborEvent - - -diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 58f972832c39a27a8ccd606f9144e1c54adbf6f3..4f00c2e8d6ff3a03a334542f699c5e35bfd03ce8 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -419,6 +419,7 @@ public class ServerPlayerGameMode { - this.level.captureDrops = new ArrayList<>(); - // CraftBukkit end - BlockState iblockdata1 = block.playerWillDestroy(this.level, pos, iblockdata, this.player); -+ level.pendingPlayerBlockEvents.put(pos, new Level.PendingBlockEvent(pos, this.player)); // Paper - boolean flag = this.level.removeBlock(pos, false); - - if (flag) { -@@ -446,6 +447,7 @@ public class ServerPlayerGameMode { - // CraftBukkit start - java.util.List itemsToDrop = this.level.captureDrops; // Paper - store current list - this.level.captureDrops = null; // Paper - Remove this earlier so that we can actually drop stuff -+ level.pendingPlayerBlockEvents.remove(pos); // Paper - if (event.isDropItems()) { - org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockDropItemEvent(bblock, state, this.player, itemsToDrop); // Paper - use stored ref - } -diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index de277d61b718fe07a87d75a2547bb1c7f8553aa1..625a852db818d95365ad7ae56e6b1de541bbdada 100644 ---- a/src/main/java/net/minecraft/world/item/ItemStack.java -+++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -378,6 +378,7 @@ public final class ItemStack { - CompoundTag oldData = this.getTagClone(); - int oldCount = this.getCount(); - ServerLevel world = (ServerLevel) context.getLevel(); -+ if (entityhuman != null) world.pendingPlayerBlockEvents.put(blockposition, new Level.PendingBlockEvent(blockposition, entityhuman)); // Paper - - if (!(item instanceof BucketItem/* || item instanceof SolidBucketItem*/)) { // if not bucket // Paper - capture block states for snow buckets - world.captureBlockStates = true; -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index fe62e872f0c989f612dcbfc58894bd1787345d25..465bbaeff36f4d03db40fcaf9b6ab98550316afb 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -187,6 +187,27 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - public final Map explosionDensityCache = new HashMap<>(); // Paper - Optimize explosions - public java.util.ArrayDeque redstoneUpdateInfos; // Paper - Move from Map in BlockRedstoneTorch to here - -+ // Paper start - Holder class used to track what Player is responsible the last block event -+ public static class PendingBlockEvent { -+ -+ public final BlockPos block; -+ public final Player player; -+ public @Nullable BlockPos sourceBlock; -+ -+ public PendingBlockEvent(BlockPos block, Player player) { -+ this(block, player, null); -+ } -+ -+ public PendingBlockEvent(BlockPos block, Player player, @Nullable BlockPos sourceBlock) { -+ this.block = block; -+ this.player = player; -+ this.sourceBlock = sourceBlock; -+ } -+ -+ } -+ public final Map pendingPlayerBlockEvents = new HashMap<>(); -+ // Paper end -+ - // Paper start - fix and optimise world upgrading - // copied from below - public static ResourceKey getDimensionKey(DimensionType manager) { -@@ -1056,6 +1077,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - if (!this.preventPoiUpdated) { - this.onBlockStateChange(blockposition, iblockdata1, iblockdata2); - } -+ pendingPlayerBlockEvents.remove(blockposition); // Paper - // CraftBukkit end - } - } -@@ -1077,6 +1099,17 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - if (iblockdata.isAir()) { - return false; - } else { -+ // Paper start -+ PendingBlockEvent blockEvent = pendingPlayerBlockEvents.get(pos); -+ if (blockEvent != null && blockEvent.sourceBlock != null) { -+ io.papermc.paper.event.block.BlockDestroyedByNeighborEvent event = -+ new io.papermc.paper.event.block.BlockDestroyedByNeighborEvent(org.bukkit.craftbukkit.block.CraftBlock.at(this, pos), -+ (org.bukkit.entity.Player) blockEvent.player.getBukkitEntity(), -+ org.bukkit.craftbukkit.block.CraftBlock.at(this, blockEvent.sourceBlock)); -+ event.callEvent(); -+ } -+ // Paper end -+ - FluidState fluid = this.getFluidState(pos); - // Paper start - while the above setAir method is named same and looks very similar - // they are NOT used with same intent and the above should not fire this event. The above method is more of a BlockSetToAirEvent, -diff --git a/src/main/java/net/minecraft/world/level/block/DoublePlantBlock.java b/src/main/java/net/minecraft/world/level/block/DoublePlantBlock.java -index 81d2140351775ad55546af52eb635ccdc8509d89..0ed9f6ae968c06e63e1431ed1ce153dd1e90e908 100644 ---- a/src/main/java/net/minecraft/world/level/block/DoublePlantBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/DoublePlantBlock.java -@@ -112,6 +112,15 @@ public class DoublePlantBlock extends BushBlock { - BlockPos blockposition1 = pos.below(); - BlockState iblockdata1 = world.getBlockState(blockposition1); - -+ Level.PendingBlockEvent blockEvent = world.pendingPlayerBlockEvents.remove(pos); -+ if (blockEvent != null) { -+ io.papermc.paper.event.block.BlockDestroyedByNeighborEvent event = -+ new io.papermc.paper.event.block.BlockDestroyedByNeighborEvent(org.bukkit.craftbukkit.block.CraftBlock.at(world, blockposition1), -+ (org.bukkit.entity.Player) blockEvent.player.getBukkitEntity(), -+ org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)); -+ if (!event.callEvent()) return; -+ } -+ - if (iblockdata1.is(state.getBlock()) && iblockdata1.getValue(DoublePlantBlock.HALF) == DoubleBlockHalf.LOWER) { - BlockState iblockdata2 = iblockdata1.getFluidState().is((Fluid) Fluids.WATER) ? Blocks.WATER.defaultBlockState() : Blocks.AIR.defaultBlockState(); - -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 3ab8b99837b1d1faea722c598b0228b2780be8b1..45bd7b9e684f71d9186a33277e5772dc7e04e9da 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 -@@ -1242,11 +1242,22 @@ public abstract class BlockBehaviour implements FeatureElement { - BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); - Direction[] aenumdirection = BlockBehaviour.UPDATE_SHAPE_ORDER; - int k = aenumdirection.length; -+ BlockState blockState = world.getBlockState(pos); // Slice - - for (int l = 0; l < k; ++l) { - Direction enumdirection = aenumdirection[l]; - - blockposition_mutableblockposition.setWithOffset(pos, enumdirection); -+ // Paper start - Propagate the PendingBlockEvent from the current blockPos to the next block -+ // if it will break (!canSurvive) -+ if (blockState.getBukkitMaterial() == org.bukkit.Material.AIR && !world.getBlockState(blockposition_mutableblockposition).canSurvive(world, blockposition_mutableblockposition)) { -+ Level.PendingBlockEvent blockEvent = ((Level) world).pendingPlayerBlockEvents.get(pos); -+ if (blockEvent != null) { -+ BlockPos blockPosCopy = blockposition_mutableblockposition.immutable(); -+ ((Level) world).pendingPlayerBlockEvents.put(blockPosCopy, new Level.PendingBlockEvent(blockPosCopy, blockEvent.player, pos)); -+ } -+ } -+ // Paper end - world.neighborShapeChanged(enumdirection.getOpposite(), this.asState(), blockposition_mutableblockposition, pos, flags, maxUpdateDepth); - } - diff --git a/patches/server/0004-Add-provided-Material-to-getDrops.patch b/patches/server/0003-Add-provided-Material-to-getDrops.patch similarity index 93% rename from patches/server/0004-Add-provided-Material-to-getDrops.patch rename to patches/server/0003-Add-provided-Material-to-getDrops.patch index 835a2cc7f..0b6bf4c63 100644 --- a/patches/server/0004-Add-provided-Material-to-getDrops.patch +++ b/patches/server/0003-Add-provided-Material-to-getDrops.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add provided Material to getDrops diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index 5b0a5c6ba424eeeb071f362f4ffc856b50dd7b2f..6b764644493accf8b17773120b39cc0c0b7f39d0 100644 +index 7cdd76f87a10529df5b9476bd2728eb8db9448b1..88ac6604decf8711ffba07bec4851ba6b75084b3 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -591,7 +591,18 @@ public class CraftBlock implements Block { diff --git a/patches/server/0005-Add-Player-to-SpongeAbsorbEvent.patch b/patches/server/0004-Add-Player-to-SpongeAbsorbEvent.patch similarity index 100% rename from patches/server/0005-Add-Player-to-SpongeAbsorbEvent.patch rename to patches/server/0004-Add-Player-to-SpongeAbsorbEvent.patch diff --git a/patches/server/0006-Add-World-Instance-flag.patch b/patches/server/0005-Add-World-Instance-flag.patch similarity index 80% rename from patches/server/0006-Add-World-Instance-flag.patch rename to patches/server/0005-Add-World-Instance-flag.patch index 581be28c9..c624d55c2 100644 --- a/patches/server/0006-Add-World-Instance-flag.patch +++ b/patches/server/0005-Add-World-Instance-flag.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Add World Instance flag diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6041f1f5151f26d389f946d70f16e1de76db496b..a530dd1b15093803ffb87848f4c28dcf5da6476c 100644 +index fb3f71f9824e522df22c50f55b4d41e70a1d1c63..7f81f3c3339ee1858013a2e1b18c457d9f3eaf03 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -224,6 +224,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -223,6 +223,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public final UUID uuid; public boolean hasPhysicsEvent = true; // Paper - public boolean hasEntityMoveEvent = false; // Paper + public boolean hasEntityMoveEvent = false; // Paper - Add EntityMoveEvent + public boolean instance; // Slice private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) public static Throwable getAddToWorldStackTrace(Entity entity) { final Throwable thr = new Throwable(entity + " Added to world at " + new java.util.Date()); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 38d842bc0fb7d9c39a3673983a643248e9563fe2..7727a4322155c9b208f097bec751368c01671a07 100644 +index ec61ed7da1531b26e372a72e824c72d5b314524c..2f7ca95e8ac48ea63a2ee28afc50521d8d71accb 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -1301,6 +1301,18 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -38,4 +38,4 @@ index 38d842bc0fb7d9c39a3673983a643248e9563fe2..7727a4322155c9b208f097bec751368c + @Override public void setDifficulty(Difficulty difficulty) { - this.getHandle().getServer().setDifficulty(this.getHandle(), net.minecraft.world.Difficulty.byId(difficulty.getValue()), true); // Paper - don't skip other difficulty-changing logic + this.getHandle().getServer().setDifficulty(this.getHandle(), net.minecraft.world.Difficulty.byId(difficulty.getValue()), true); // Paper - per level difficulty; don't skip other difficulty-changing logic diff --git a/patches/server/0007-Add-PlayerData-Events.patch b/patches/server/0006-Add-PlayerData-Events.patch similarity index 94% rename from patches/server/0007-Add-PlayerData-Events.patch rename to patches/server/0006-Add-PlayerData-Events.patch index 5f939417c..70129231e 100644 --- a/patches/server/0007-Add-PlayerData-Events.patch +++ b/patches/server/0006-Add-PlayerData-Events.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add PlayerData Events diff --git a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -index 4f00c2e8d6ff3a03a334542f699c5e35bfd03ce8..f31fc572413c2e1350adca3691316ac6b0d66fef 100644 +index a9126548672522eb2b824221783453f707c5dd40..cbb044a168c96cd62660a24cb44c7e860bb85609 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -603,6 +603,8 @@ public class ServerPlayerGameMode { +@@ -601,6 +601,8 @@ public class ServerPlayerGameMode { enuminteractionresult1 = stack.useOn(itemactioncontext); } @@ -18,10 +18,10 @@ index 4f00c2e8d6ff3a03a334542f699c5e35bfd03ce8..f31fc572413c2e1350adca3691316ac6 CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockposition, itemstack1); } diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java -index 9bb8d4d7be6a937980aa653db82be084d066a563..9838435fbc31cfbba487d1e62ec5d2e70776517c 100644 +index f890738d3bb9fb5e70a9d323c6cec97f9948f9cf..0e02785ec35e635bef33cc89c54b146c8e7dac99 100644 --- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java +++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java -@@ -199,7 +199,12 @@ public class ServerStatsCounter extends StatsCounter { +@@ -204,7 +204,12 @@ public class ServerStatsCounter extends StatsCounter { return nbttagcompound; } @@ -35,7 +35,7 @@ index 9bb8d4d7be6a937980aa653db82be084d066a563..9838435fbc31cfbba487d1e62ec5d2e7 Map, JsonObject> map = Maps.newHashMap(); ObjectIterator objectiterator = this.stats.object2IntEntrySet().iterator(); -@@ -225,7 +230,7 @@ public class ServerStatsCounter extends StatsCounter { +@@ -230,7 +235,7 @@ public class ServerStatsCounter extends StatsCounter { jsonobject1.add("stats", jsonobject); jsonobject1.addProperty("DataVersion", SharedConstants.getCurrentVersion().getDataVersion().getVersion()); diff --git a/patches/server/0007-Add-PlayerGetRespawnLocationEvent.patch b/patches/server/0007-Add-PlayerGetRespawnLocationEvent.patch new file mode 100644 index 000000000..936933157 --- /dev/null +++ b/patches/server/0007-Add-PlayerGetRespawnLocationEvent.patch @@ -0,0 +1,64 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Cryptite +Date: Mon, 10 Apr 2023 07:46:18 -0500 +Subject: [PATCH] Add PlayerGetRespawnLocationEvent + + +diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java +index e2eb3feb786d6348b6d45dd9babb7b36eebccd6e..5c7721aa768ec3b2ad659b7242681b4a04153db9 100644 +--- a/src/main/java/net/minecraft/server/players/PlayerList.java ++++ b/src/main/java/net/minecraft/server/players/PlayerList.java +@@ -867,16 +867,24 @@ public abstract class PlayerList { + + // CraftBukkit start - fire PlayerRespawnEvent + if (location == null) { +- // boolean isBedSpawn = false; // Paper - moved up +- ServerLevel worldserver1 = this.server.getLevel(entityplayer.getRespawnDimension()); +- if (worldserver1 != null) { +- Optional optional; ++ // Slice start ++ Player respawnPlayer = entityplayer1.getBukkitEntity(); ++ org.bukkit.event.player.PlayerGetRespawnLocationEvent preRespawnEvent = new org.bukkit.event.player.PlayerGetRespawnLocationEvent(respawnPlayer); ++ preRespawnEvent.callEvent(); ++ location = preRespawnEvent.getRespawnLocation(); + +- if (blockposition != null) { +- optional = net.minecraft.world.entity.player.Player.findRespawnPositionAndUseSpawnBlock(worldserver1, blockposition, f, flag1, true); // Paper - Fix SPIGOT-5989 +- } else { +- optional = Optional.empty(); +- } ++ if (location == null) { ++ // Slice end ++ // boolean isBedSpawn = false; // Paper - moved up ++ ServerLevel worldserver1 = this.server.getLevel(entityplayer.getRespawnDimension()); ++ if (worldserver1 != null) { ++ Optional optional; ++ ++ if (blockposition != null) { ++ optional = net.minecraft.world.entity.player.Player.findRespawnPositionAndUseSpawnBlock(worldserver1, blockposition, f, flag1, true); // Paper - Fix SPIGOT-5989 ++ } else { ++ optional = Optional.empty(); ++ } + + if (optional.isPresent()) { + BlockState iblockdata = worldserver1.getBlockState(blockposition); +@@ -885,13 +893,13 @@ public abstract class PlayerList { + Vec3 vec3d = (Vec3) optional.get(); + float f1; + +- if (!iblockdata.is(BlockTags.BEDS) && !flag3) { +- f1 = f; +- } else { +- Vec3 vec3d1 = Vec3.atBottomCenterOf(blockposition).subtract(vec3d).normalize(); ++ if (!iblockdata.is(BlockTags.BEDS) && !flag3) { ++ f1 = f; ++ } else { ++ Vec3 vec3d1 = Vec3.atBottomCenterOf(blockposition).subtract(vec3d).normalize(); + +- f1 = (float) Mth.wrapDegrees(Mth.atan2(vec3d1.z, vec3d1.x) * 57.2957763671875D - 90.0D); +- } ++ f1 = (float) Mth.wrapDegrees(Mth.atan2(vec3d1.z, vec3d1.x) * 57.2957763671875D - 90.0D); ++ } + + // entityplayer1.setRespawnPosition(worldserver1.dimension(), blockposition, f, flag1, false); // CraftBukkit - not required, just copies old location into reused entity + flag2 = !flag && flag3; diff --git a/patches/server/0008-Add-PlayerGetRespawnLocationEvent.patch b/patches/server/0008-Add-PlayerGetRespawnLocationEvent.patch deleted file mode 100644 index 42f88f7f8..000000000 --- a/patches/server/0008-Add-PlayerGetRespawnLocationEvent.patch +++ /dev/null @@ -1,102 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Cryptite -Date: Mon, 10 Apr 2023 07:46:18 -0500 -Subject: [PATCH] Add PlayerGetRespawnLocationEvent - - -diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index e98a455b6bca9d094d0da323bddd7b3f2c07bb23..6977fb1024db3e709e5c83215bf886e7c04d5326 100644 ---- a/src/main/java/net/minecraft/server/players/PlayerList.java -+++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -867,49 +867,57 @@ public abstract class PlayerList { - - // CraftBukkit start - fire PlayerRespawnEvent - if (location == null) { -- // boolean isBedSpawn = false; // Paper - moved up -- ServerLevel worldserver1 = this.server.getLevel(entityplayer.getRespawnDimension()); -- if (worldserver1 != null) { -- Optional optional; -+ // Slice start -+ Player respawnPlayer = entityplayer1.getBukkitEntity(); -+ org.bukkit.event.player.PlayerGetRespawnLocationEvent preRespawnEvent = new org.bukkit.event.player.PlayerGetRespawnLocationEvent(respawnPlayer); -+ preRespawnEvent.callEvent(); -+ location = preRespawnEvent.getRespawnLocation(); - -- if (blockposition != null) { -- optional = net.minecraft.world.entity.player.Player.findRespawnPositionAndUseSpawnBlock(worldserver1, blockposition, f, flag1, true); // Paper - Fix SPIGOT-5989 -- } else { -- optional = Optional.empty(); -- } -+ if (location == null) { -+ // Slice end -+ // boolean isBedSpawn = false; // Paper - moved up -+ ServerLevel worldserver1 = this.server.getLevel(entityplayer.getRespawnDimension()); -+ if (worldserver1 != null) { -+ Optional optional; -+ -+ if (blockposition != null) { -+ optional = net.minecraft.world.entity.player.Player.findRespawnPositionAndUseSpawnBlock(worldserver1, blockposition, f, flag1, true); // Paper - Fix SPIGOT-5989 -+ } else { -+ optional = Optional.empty(); -+ } - -- if (optional.isPresent()) { -- BlockState iblockdata = worldserver1.getBlockState(blockposition); -- boolean flag3 = iblockdata.is(Blocks.RESPAWN_ANCHOR); -- isAnchorSpawn = flag3; // Paper - Fix anchor respawn acting as a bed respawn from the end portal -- Vec3 vec3d = (Vec3) optional.get(); -- float f1; -+ if (optional.isPresent()) { -+ BlockState iblockdata = worldserver1.getBlockState(blockposition); -+ boolean flag3 = iblockdata.is(Blocks.RESPAWN_ANCHOR); -+ isAnchorSpawn = flag3; // Paper - Fix anchor respawn acting as a bed respawn from the end portal -+ Vec3 vec3d = (Vec3) optional.get(); -+ float f1; - -- if (!iblockdata.is(BlockTags.BEDS) && !flag3) { -- f1 = f; -- } else { -- Vec3 vec3d1 = Vec3.atBottomCenterOf(blockposition).subtract(vec3d).normalize(); -+ if (!iblockdata.is(BlockTags.BEDS) && !flag3) { -+ f1 = f; -+ } else { -+ Vec3 vec3d1 = Vec3.atBottomCenterOf(blockposition).subtract(vec3d).normalize(); - -- f1 = (float) Mth.wrapDegrees(Mth.atan2(vec3d1.z, vec3d1.x) * 57.2957763671875D - 90.0D); -- } -+ f1 = (float) Mth.wrapDegrees(Mth.atan2(vec3d1.z, vec3d1.x) * 57.2957763671875D - 90.0D); -+ } - -- // entityplayer1.setRespawnPosition(worldserver1.dimension(), blockposition, f, flag1, false); // CraftBukkit - not required, just copies old location into reused entity -- flag2 = !flag && flag3; -- isBedSpawn = true; -- location = CraftLocation.toBukkit(vec3d, worldserver1.getWorld(), f1, 0.0F); -- } else if (blockposition != null) { -- entityplayer1.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.NO_RESPAWN_BLOCK_AVAILABLE, 0.0F)); -- entityplayer1.setRespawnPosition(null, null, 0f, false, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLAYER_RESPAWN); // CraftBukkit - SPIGOT-5988: Clear respawn location when obstructed // Paper - PlayerSetSpawnEvent -+ // entityplayer1.setRespawnPosition(worldserver1.dimension(), blockposition, f, flag1, false); // CraftBukkit - not required, just copies old location into reused entity -+ flag2 = !flag && flag3; -+ isBedSpawn = true; -+ location = CraftLocation.toBukkit(vec3d, worldserver1.getWorld(), f1, 0.0F); -+ } else if (blockposition != null) { -+ entityplayer1.connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.NO_RESPAWN_BLOCK_AVAILABLE, 0.0F)); -+ entityplayer1.setRespawnPosition(null, null, 0f, false, false, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.PLAYER_RESPAWN); // CraftBukkit - SPIGOT-5988: Clear respawn location when obstructed // Paper - PlayerSetSpawnEvent -+ } - } -- } - -- if (location == null) { -- worldserver1 = this.server.getLevel(Level.OVERWORLD); -- blockposition = entityplayer1.getSpawnPoint(worldserver1); -- location = CraftLocation.toBukkit(blockposition, worldserver1.getWorld(), worldserver1.levelData.getSpawnAngle(), 0.0F).add(0.5F, 0.1F, 0.5F); // Paper - use world spawn angle -+ if (location == null) { -+ worldserver1 = this.server.getLevel(Level.OVERWORLD); -+ blockposition = entityplayer1.getSpawnPoint(worldserver1); -+ location = CraftLocation.toBukkit(blockposition, worldserver1.getWorld(), worldserver1.levelData.getSpawnAngle(), 0.0F).add(0.5F, 0.1F, 0.5F); // Paper - use world spawn angle -+ } - } - -- Player respawnPlayer = entityplayer1.getBukkitEntity(); - PlayerRespawnEvent respawnEvent = new PlayerRespawnEvent(respawnPlayer, location, isBedSpawn && !isAnchorSpawn, isAnchorSpawn, reason, com.google.common.collect.ImmutableSet.builder().add(respawnFlags)); // Paper - Fix anchor respawn acting as a bed respawn from the end portal - this.cserver.getPluginManager().callEvent(respawnEvent); - // Spigot Start diff --git a/patches/server/0009-Set-multiple-team-settings-at-once.patch b/patches/server/0008-Set-multiple-team-settings-at-once.patch similarity index 98% rename from patches/server/0009-Set-multiple-team-settings-at-once.patch rename to patches/server/0008-Set-multiple-team-settings-at-once.patch index 3aa58fcfe..c553b6b68 100644 --- a/patches/server/0009-Set-multiple-team-settings-at-once.patch +++ b/patches/server/0008-Set-multiple-team-settings-at-once.patch @@ -106,7 +106,7 @@ index 9464054912e19fc78dd965b71fce20a18564b351..1624a0f8ea211a4c43fd01612674ca50 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java -index fd86c1d43cccd036f60cb270b56fd33f95707720..9d81ae52f55db1c330ebe2daa2d4008ee9b845c3 100644 +index 2b335c750ce5f9ccc2651a8701497ca9b8f46704..c508b2003cb7980b41dce542e5c3053b2fb9d1d8 100644 --- a/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java +++ b/src/main/java/org/bukkit/craftbukkit/scoreboard/CraftTeam.java @@ -341,6 +341,37 @@ final class CraftTeam extends CraftScoreboardComponent implements Team { diff --git a/patches/server/0010-Smooth-Teleports.patch b/patches/server/0009-Smooth-Teleports.patch similarity index 90% rename from patches/server/0010-Smooth-Teleports.patch rename to patches/server/0009-Smooth-Teleports.patch index 9968527ff..d19a4b76d 100644 --- a/patches/server/0010-Smooth-Teleports.patch +++ b/patches/server/0009-Smooth-Teleports.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Smooth Teleports diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index be05a52be037042c6158100e2ce880b8ed415d53..6fbd96970505ffcc75331584cac96bbdf2bde658 100644 +index 4858282de0ad6758b487b80dc3d746ae0357ad39..260bcff54607b61db8f2bb5d4ee7c468b80c900a 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -281,6 +281,7 @@ public class ServerPlayer extends Player { public com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - public @Nullable String clientBrandName = null; // Paper - Brand name - public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event + public @Nullable String clientBrandName = null; // Paper - Brand support + public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event + public boolean smoothWorldTeleport; // Slice // Paper start - replace player chunk loader private final java.util.concurrent.atomic.AtomicReference viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1)); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 6977fb1024db3e709e5c83215bf886e7c04d5326..2d6a0e30e47e4df22fd9aba1aca0f1f0d03740d2 100644 +index 5c7721aa768ec3b2ad659b7242681b4a04153db9..eca931c9915dc6fa702f6178e720fe47658fa046 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -953,10 +953,10 @@ public abstract class PlayerList { @@ -34,7 +34,7 @@ index 6977fb1024db3e709e5c83215bf886e7c04d5326..2d6a0e30e47e4df22fd9aba1aca0f1f0 entityplayer1.connection.send(new ClientboundChangeDifficultyPacket(worlddata.getDifficulty(), worlddata.isDifficultyLocked())); entityplayer1.connection.send(new ClientboundSetExperiencePacket(entityplayer1.experienceProgress, entityplayer1.totalExperience, entityplayer1.experienceLevel)); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2ec8b8f65661001716d1cb34dcc21cda7286e5d7..16734cf6cb5203a9d40be56672a698b761f8ce8a 100644 +index b364a042a9b5d1b3c604f6bf6d03b6aeff03ec82..331b47b82d2f0c6544e5417accb5a962daac3111 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1267,6 +1267,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0011-Ignore-durability-changes-for-equipment-updates.patch b/patches/server/0010-Ignore-durability-changes-for-equipment-updates.patch similarity index 83% rename from patches/server/0011-Ignore-durability-changes-for-equipment-updates.patch rename to patches/server/0010-Ignore-durability-changes-for-equipment-updates.patch index 8c111ba93..ea8d05b8f 100644 --- a/patches/server/0011-Ignore-durability-changes-for-equipment-updates.patch +++ b/patches/server/0010-Ignore-durability-changes-for-equipment-updates.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ignore durability changes for equipment updates diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index bc908b75cb99536df658281ae7f8b4eeedbbedc9..edfd68dd73deb703efc6e7164a2af0cb8744a0bd 100644 +index f0d565ac0b3c8d3c3a200348a16e7db21ff3920a..f1459e5929f178cdab864506d1a485df61fde035 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3166,7 +3166,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3167,7 +3167,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } public boolean equipmentHasChanged(ItemStack stack, ItemStack stack2) { diff --git a/patches/server/0012-Disable-Azalea-generation.patch b/patches/server/0011-Disable-Azalea-generation.patch similarity index 100% rename from patches/server/0012-Disable-Azalea-generation.patch rename to patches/server/0011-Disable-Azalea-generation.patch diff --git a/patches/server/0013-AntiXray-Bypass.patch b/patches/server/0012-AntiXray-Bypass.patch similarity index 96% rename from patches/server/0013-AntiXray-Bypass.patch rename to patches/server/0012-AntiXray-Bypass.patch index fdff9b092..24f1c9923 100644 --- a/patches/server/0013-AntiXray-Bypass.patch +++ b/patches/server/0012-AntiXray-Bypass.patch @@ -17,7 +17,7 @@ index e7fe98ea30ae6d0baea3ec1f9f98a89502a49a12..7e2651aa63cc9ddbe28fb9ecbc518835 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 4166b68e495fa47093af1b1afc360529a1a15b8d..2d52154d6e6ac586f4d38186347958e0f6d35361 100644 +index 331b47b82d2f0c6544e5417accb5a962daac3111..82eb22d1539951cd04267d7269b1447ebc4ee2c6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -193,6 +193,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0014-Add-PlayerPreChunkLoadEvent.patch b/patches/server/0013-Add-PlayerPreChunkLoadEvent.patch similarity index 95% rename from patches/server/0014-Add-PlayerPreChunkLoadEvent.patch rename to patches/server/0013-Add-PlayerPreChunkLoadEvent.patch index 8817a447b..871e7516a 100644 --- a/patches/server/0014-Add-PlayerPreChunkLoadEvent.patch +++ b/patches/server/0013-Add-PlayerPreChunkLoadEvent.patch @@ -18,7 +18,7 @@ index 1b090f1e79b996e52097afc49c1cec85936653e6..5185bcbf5363fa2c7e2b0226706cc66d private static final byte CHUNK_TICKET_STAGE_NONE = 0; private static final byte CHUNK_TICKET_STAGE_LOADING = 1; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 7727a4322155c9b208f097bec751368c01671a07..d71b6e3b3535ab2815ef5ec15361732d13593c37 100644 +index 2f7ca95e8ac48ea63a2ee28afc50521d8d71accb..e22d13ee45e586ed0aad5bd16778ebc6c2a76e81 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -538,6 +538,13 @@ public class CraftWorld extends CraftRegionAccessor implements World { diff --git a/patches/server/0015-Allow-opening-covered-chests.patch b/patches/server/0014-Allow-opening-covered-chests.patch similarity index 100% rename from patches/server/0015-Allow-opening-covered-chests.patch rename to patches/server/0014-Allow-opening-covered-chests.patch diff --git a/patches/server/0016-Don-t-send-fire-packets-if-player-has-FR.patch b/patches/server/0015-Don-t-send-fire-packets-if-player-has-FR.patch similarity index 86% rename from patches/server/0016-Don-t-send-fire-packets-if-player-has-FR.patch rename to patches/server/0015-Don-t-send-fire-packets-if-player-has-FR.patch index faf644843..036ae8bef 100644 --- a/patches/server/0016-Don-t-send-fire-packets-if-player-has-FR.patch +++ b/patches/server/0015-Don-t-send-fire-packets-if-player-has-FR.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Don't send fire packets if player has FR diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1be10c57e374ad4018c08d96cfb69397a2f541d3..14f54b038d2cd9f3ca7f81f2b556bc4e71701cb6 100644 +index ef2ef6f34e2045ccbf93de123785b44886072cee..1412e120cfcaf03f266a8a2c9b4336cfcc010b5d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -876,7 +876,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -878,7 +878,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.checkBelowWorld(); if (!this.level().isClientSide) { diff --git a/patches/server/0017-Allow-access-to-LightEngine.patch b/patches/server/0016-Allow-access-to-LightEngine.patch similarity index 89% rename from patches/server/0017-Allow-access-to-LightEngine.patch rename to patches/server/0016-Allow-access-to-LightEngine.patch index fcf1adc64..19e3dee2e 100644 --- a/patches/server/0017-Allow-access-to-LightEngine.patch +++ b/patches/server/0016-Allow-access-to-LightEngine.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow access to LightEngine diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index d9cd497bc1b654030ff1a597f038b6a881df9f6b..4407f04904af9b17987ce595cc8b6e9e129ccec7 100644 +index 673f0d1ee4e4228a52c07fc1b570822257e59300..bccd73960976be2838ccc803a4a9574437689f98 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -435,7 +435,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider diff --git a/patches/server/0018-Disable-geode-and-monsterspawners-generation.patch b/patches/server/0017-Disable-geode-and-monsterspawners-generation.patch similarity index 100% rename from patches/server/0018-Disable-geode-and-monsterspawners-generation.patch rename to patches/server/0017-Disable-geode-and-monsterspawners-generation.patch diff --git a/patches/server/0019-Set-Mutton-nutrition-equal-to-beef.patch b/patches/server/0018-Set-Mutton-nutrition-equal-to-beef.patch similarity index 100% rename from patches/server/0019-Set-Mutton-nutrition-equal-to-beef.patch rename to patches/server/0018-Set-Mutton-nutrition-equal-to-beef.patch diff --git a/patches/server/0020-PlayerLoadStatsEvent.patch b/patches/server/0019-PlayerLoadStatsEvent.patch similarity index 95% rename from patches/server/0020-PlayerLoadStatsEvent.patch rename to patches/server/0019-PlayerLoadStatsEvent.patch index 04a7c0349..bd8ffc385 100644 --- a/patches/server/0020-PlayerLoadStatsEvent.patch +++ b/patches/server/0019-PlayerLoadStatsEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] PlayerLoadStatsEvent diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 2d6a0e30e47e4df22fd9aba1aca0f1f0d03740d2..f2658cb7540a4e2a575bf935de278dd06a820f59 100644 +index eca931c9915dc6fa702f6178e720fe47658fa046..96c8f9952b86129ddda6063c4129e4b971d10211 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -1495,7 +1495,7 @@ public abstract class PlayerList { @@ -18,7 +18,7 @@ index 2d6a0e30e47e4df22fd9aba1aca0f1f0d03740d2..f2658cb7540a4e2a575bf935de278dd0 } diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java -index 9838435fbc31cfbba487d1e62ec5d2e70776517c..ef601d98e97a7e541cc855822ff46f9dd887435e 100644 +index 0e02785ec35e635bef33cc89c54b146c8e7dac99..5f13740dbf354291bca33fe91ba581562531f6fe 100644 --- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java +++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java @@ -45,10 +45,16 @@ public class ServerStatsCounter extends StatsCounter { @@ -40,7 +40,7 @@ index 9838435fbc31cfbba487d1e62ec5d2e70776517c..ef601d98e97a7e541cc855822ff46f9d try { this.parseLocal(server.getFixerUpper(), FileUtils.readFileToString(file)); } catch (IOException ioexception) { -@@ -104,46 +110,8 @@ public class ServerStatsCounter extends StatsCounter { +@@ -109,46 +115,8 @@ public class ServerStatsCounter extends StatsCounter { if (!jsonelement.isJsonNull()) { CompoundTag nbttagcompound = ServerStatsCounter.fromJson(jsonelement.getAsJsonObject()); @@ -89,7 +89,7 @@ index 9838435fbc31cfbba487d1e62ec5d2e70776517c..ef601d98e97a7e541cc855822ff46f9d } ServerStatsCounter.LOGGER.error("Unable to parse Stat data from {}", this.file); -@@ -168,6 +136,48 @@ public class ServerStatsCounter extends StatsCounter { +@@ -173,6 +141,48 @@ public class ServerStatsCounter extends StatsCounter { } diff --git a/patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch b/patches/server/0020-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch similarity index 89% rename from patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch rename to patches/server/0020-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch index 6b2535f64..8c4addfc3 100644 --- a/patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch +++ b/patches/server/0020-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch @@ -5,16 +5,16 @@ Subject: [PATCH] Add Force Crit to PlayerPreAttackEntityEvent 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 ccc1caafb0ada52c7b99b7358253826f5390843e..58b59a76db1acbbc7977abc53b2c8b2e5475eda2 100644 +index 9044458491fc9a33923852e324a15ac59d6660b2..433cca813b5c56aadc6c4b44ff5eb19b4d1f67a6 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -1278,10 +1278,11 @@ public abstract class Player extends LivingEntity { flag1 = true; } -- boolean flag2 = flag && this.fallDistance > 0.0F && !this.onGround() && !this.onClimbable() && !this.isInWater() && !this.hasEffect(MobEffects.BLINDNESS) && !this.isPassenger() && target instanceof LivingEntity; // Paper - Add critical damage API - conflict on change +- boolean flag2 = flag && this.fallDistance > 0.0F && !this.onGround() && !this.onClimbable() && !this.isInWater() && !this.hasEffect(MobEffects.BLINDNESS) && !this.isPassenger() && target instanceof LivingEntity; // Paper - Add critical damage API; diff on change + boolean forceCrit = playerAttackEntityEvent.isForceCrit(); -+ boolean flag2 = forceCrit || (flag && this.fallDistance > 0.0F && !this.onGround() && !this.onClimbable() && !this.isInWater() && !this.hasEffect(MobEffects.BLINDNESS) && !this.isPassenger() && target instanceof LivingEntity); // Paper - Add critical damage API - conflict on change // Slice ++ boolean flag2 = forceCrit || (flag && this.fallDistance > 0.0F && !this.onGround() && !this.onClimbable() && !this.isInWater() && !this.hasEffect(MobEffects.BLINDNESS) && !this.isPassenger() && target instanceof LivingEntity); // Paper - Add critical damage API; diff on change - flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - flag2 = flag2 && !this.isSprinting(); diff --git a/patches/server/0022-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch b/patches/server/0021-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch similarity index 93% rename from patches/server/0022-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch rename to patches/server/0021-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch index 145fc42a5..bfbf4c21f 100644 --- a/patches/server/0022-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch +++ b/patches/server/0021-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add Preventing KB Bonus to PlayerPreAttackEntityEvent 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 58b59a76db1acbbc7977abc53b2c8b2e5475eda2..64df32011e94cb68cfa32a3a236a70cfc1da7c05 100644 +index 433cca813b5c56aadc6c4b44ff5eb19b4d1f67a6..2a6a85519c63bd3f879a8dbe146a9d05310cee3c 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -1270,7 +1270,11 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0023-noEntityCollisions-for-Entity.patch b/patches/server/0022-noEntityCollisions-for-Entity.patch similarity index 91% rename from patches/server/0023-noEntityCollisions-for-Entity.patch rename to patches/server/0022-noEntityCollisions-for-Entity.patch index fa9953e6c..ff40fee71 100644 --- a/patches/server/0023-noEntityCollisions-for-Entity.patch +++ b/patches/server/0022-noEntityCollisions-for-Entity.patch @@ -18,10 +18,10 @@ index ee0331a6bc40cdde08d926fd8eb1dc642630c2e5..d1094f6a61976a81f400ab5b2b604f96 } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 91fc0da2cc01c24f9d69ef008a8f6a79c6eaaa5e..25c28dd37e729627739c91e929c208f6aa2539c0 100644 +index 1412e120cfcaf03f266a8a2c9b4336cfcc010b5d..bee42880274cf36c57abc5f633e6f14f41a0ea2b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -457,6 +457,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -459,6 +459,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S * Overriding this field will cause memory leaks. */ private final boolean hardCollides; diff --git a/patches/server/0024-Do-not-freeze-MappedRegistry.patch b/patches/server/0023-Do-not-freeze-MappedRegistry.patch similarity index 100% rename from patches/server/0024-Do-not-freeze-MappedRegistry.patch rename to patches/server/0023-Do-not-freeze-MappedRegistry.patch diff --git a/patches/server/0025-Add-jackson.patch b/patches/server/0024-Add-jackson.patch similarity index 89% rename from patches/server/0025-Add-jackson.patch rename to patches/server/0024-Add-jackson.patch index 81755dd6c..86a5a685d 100644 --- a/patches/server/0025-Add-jackson.patch +++ b/patches/server/0024-Add-jackson.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add jackson diff --git a/build.gradle.kts b/build.gradle.kts -index f9df4ced9b313333102d5f76dff20841a789e53f..1d78ff5def3357c4b4fed3e6b66f092c237c1a0b 100644 +index c9868e781ce212285a9621236efa65788c7a1cca..223e80ea0ede575cf8f73191ef2799ae0ee41ba7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,6 +19,13 @@ dependencies { diff --git a/patches/server/0026-Maybe-can-t-tostring.patch b/patches/server/0025-Maybe-can-t-tostring.patch similarity index 89% rename from patches/server/0026-Maybe-can-t-tostring.patch rename to patches/server/0025-Maybe-can-t-tostring.patch index ee735380a..d3be3e4b5 100644 --- a/patches/server/0026-Maybe-can-t-tostring.patch +++ b/patches/server/0025-Maybe-can-t-tostring.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Maybe can't tostring? diff --git a/src/main/java/net/minecraft/nbt/CompoundTag.java b/src/main/java/net/minecraft/nbt/CompoundTag.java -index e464ada187fd1f15efef29a0e5033aeb0c688059..b2e800c653ba423e40de734218a8e4a020069076 100644 +index 22106323902ceb4fc58a95918c754234a581f7a1..72d7f519a28bc76733e67e2d0d0fcda581999242 100644 --- a/src/main/java/net/minecraft/nbt/CompoundTag.java +++ b/src/main/java/net/minecraft/nbt/CompoundTag.java @@ -507,6 +507,9 @@ public class CompoundTag implements Tag { @@ -19,10 +19,10 @@ index e464ada187fd1f15efef29a0e5033aeb0c688059..b2e800c653ba423e40de734218a8e4a0 java.util.Iterator> iterator = (this.tags instanceof it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap) ? ((it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap)this.tags).object2ObjectEntrySet().fastIterator() : this.tags.entrySet().iterator(); while (iterator.hasNext()) { diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java -index 625a852db818d95365ad7ae56e6b1de541bbdada..f721dd923711d65338820642dfca89ab8022e9a5 100644 +index d7d51f16396ad5539d39b7914125b559bd7dd2b4..d3eef784aec88a22330efd1ad62c8fc492df0ab7 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -765,7 +765,11 @@ public final class ItemStack { +@@ -764,7 +764,11 @@ public final class ItemStack { itemstack.setPopTime(this.getPopTime()); if (this.tag != null) { diff --git a/patches/server/0027-Allow-inventory-clicks-in-Spectator.patch b/patches/server/0026-Allow-inventory-clicks-in-Spectator.patch similarity index 88% rename from patches/server/0027-Allow-inventory-clicks-in-Spectator.patch rename to patches/server/0026-Allow-inventory-clicks-in-Spectator.patch index 5143f3db5..2d43f1718 100644 --- a/patches/server/0027-Allow-inventory-clicks-in-Spectator.patch +++ b/patches/server/0026-Allow-inventory-clicks-in-Spectator.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow inventory clicks in Spectator diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 64255f7db85886421d5029766e8a6d1eadb94cff..33c6bc2a35c00c9316cec2eb45a08536f1f73e80 100644 +index 6a85b44021df6226b53da478ac6f35dcfb55c3ed..b5765dfaf21c03f98d2309072851319f32997d39 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2883,7 +2883,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2880,7 +2880,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl if (this.player.isImmobile()) return; // CraftBukkit this.player.resetLastActionTime(); if (this.player.containerMenu.containerId == packet.getContainerId() && this.player.containerMenu.stillValid(this.player)) { // CraftBukkit diff --git a/patches/server/0028-Packet-obfuscation-and-reduction.patch b/patches/server/0027-Packet-obfuscation-and-reduction.patch similarity index 92% rename from patches/server/0028-Packet-obfuscation-and-reduction.patch rename to patches/server/0027-Packet-obfuscation-and-reduction.patch index c3c7f45cb..8032a5164 100644 --- a/patches/server/0028-Packet-obfuscation-and-reduction.patch +++ b/patches/server/0027-Packet-obfuscation-and-reduction.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Packet obfuscation and reduction diff --git a/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java b/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java -index a043c382c37058032548a5192e17f5f816abe5a6..ee38f646f66fd69cd64ad6b74c6b76e42792cf39 100644 +index 58b602e550258c1062ee940bc46538dac95d8979..3ad5950d05fed7ff8810a8a7969fcb58547b1021 100644 --- a/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java +++ b/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java @@ -165,15 +165,29 @@ public class SynchedEntityData { @@ -118,10 +118,10 @@ index a043c382c37058032548a5192e17f5f816abe5a6..ee38f646f66fd69cd64ad6b74c6b76e4 public static record DataValue(int id, EntityDataSerializer serializer, T value) { // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 35674f92a67f93382103c2766df4b678ba5c862f..97dbcb6f527bd5c567e77200d7f6cbc1abb15792 100644 +index ae188ae314336d971303023c7b7b8ecf32bae253..506e4d80e47723a0764703578370a45ad2f126fd 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -374,7 +374,20 @@ public class ServerEntity { +@@ -380,7 +380,20 @@ public class ServerEntity { if (list != null) { this.trackedDataValues = datawatcher.getNonDefaultValues(); @@ -144,7 +144,7 @@ index 35674f92a67f93382103c2766df4b678ba5c862f..97dbcb6f527bd5c567e77200d7f6cbc1 if (this.entity instanceof LivingEntity) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 84d88e71a187e74a40faa1aa9a6a300cdeb8fd60..35fa9a43154b08bccc50d7c626c4b10289ef61da 100644 +index bee42880274cf36c57abc5f633e6f14f41a0ea2b..12fa631aa176e67dcda522dca6376a69ca5b34d8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3388,7 +3388,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -157,10 +157,10 @@ index 84d88e71a187e74a40faa1aa9a6a300cdeb8fd60..35fa9a43154b08bccc50d7c626c4b102 } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index edfd68dd73deb703efc6e7164a2af0cb8744a0bd..3c453de303422f96abf3aa67fa23523dd71327cb 100644 +index f1459e5929f178cdab864506d1a485df61fde035..6e7a3acb40ef3ed062c3e6cc2c5bf5cd35f2d2d6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3166,7 +3166,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3167,7 +3167,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } public boolean equipmentHasChanged(ItemStack stack, ItemStack stack2) { @@ -170,7 +170,7 @@ index edfd68dd73deb703efc6e7164a2af0cb8744a0bd..3c453de303422f96abf3aa67fa23523d private void handleHandSwap(Map equipmentChanges) { 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 64df32011e94cb68cfa32a3a236a70cfc1da7c05..6a642996eb149a71585ef8f6b74b567a245fe635 100644 +index 2a6a85519c63bd3f879a8dbe146a9d05310cee3c..d6cdb7c3314004ee25cbed96eb289d420999c01c 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -644,7 +644,7 @@ public abstract class Player extends LivingEntity { @@ -183,7 +183,7 @@ index 64df32011e94cb68cfa32a3a236a70cfc1da7c05..6a642996eb149a71585ef8f6b74b567a public void startAutoSpinAttack(int riptideTicks) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2d52154d6e6ac586f4d38186347958e0f6d35361..6cbfbd81d93d7db8798b3eb3849fe2de07913992 100644 +index 82eb22d1539951cd04267d7269b1447ebc4ee2c6..d95d08fd519ca633c1c126982f3720e7c3aabe28 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -2733,7 +2733,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0029-Long-distance-tracking.patch b/patches/server/0028-Long-distance-tracking.patch similarity index 89% rename from patches/server/0029-Long-distance-tracking.patch rename to patches/server/0028-Long-distance-tracking.patch index 3ee1aa935..8d4737bb0 100644 --- a/patches/server/0029-Long-distance-tracking.patch +++ b/patches/server/0028-Long-distance-tracking.patch @@ -5,24 +5,24 @@ Subject: [PATCH] Long distance tracking diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 4407f04904af9b17987ce595cc8b6e9e129ccec7..2d97c4445bd172a901c8dcf144b03081e0679468 100644 +index bccd73960976be2838ccc803a4a9574437689f98..0d36816f679f08c81aecf683584ecd932bfcf8f7 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1421,6 +1421,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - Vec3 vec3d = player.position().subtract(this.entity.position()); +@@ -1425,6 +1425,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + // Paper end - remove allocation of Vec3D here int i = ChunkMap.this.getPlayerViewDistance(player); double d0 = (double) Math.min(this.getEffectiveRange(), i * 16); + if (this.entity instanceof ServerPlayer serverPlayer && player.canSeeFromLongDistance(serverPlayer)) d0 = Math.min(level.spigotConfig.flyingPlayerTrackingRange, d0); // Slice - double d1 = vec3d.x * vec3d.x + vec3d.z * vec3d.z; + double d1 = vec3d_dx * vec3d_dx + vec3d_dz * vec3d_dz; // Paper double d2 = d0 * d0; boolean flag = d1 <= d2 && this.entity.broadcastToPlayer(player) && ChunkMap.this.isChunkTracked(player, this.entity.chunkPosition().x, this.entity.chunkPosition().z); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 6fbd96970505ffcc75331584cac96bbdf2bde658..3e618dd6bf02b51dd267b903ffa54b3a1c180c4d 100644 +index 260bcff54607b61db8f2bb5d4ee7c468b80c900a..466a4eed74729e7ff8a3d634ad4ca5f2befcca25 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -282,6 +282,7 @@ public class ServerPlayer extends Player { - public @Nullable String clientBrandName = null; // Paper - Brand name - public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - there are a lot of changes to do if we change all methods leading to the event + public @Nullable String clientBrandName = null; // Paper - Brand support + public org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event public boolean smoothWorldTeleport; // Slice + public boolean hasLongDistanceTracking; // Slice diff --git a/patches/server/0030-Equipment-Packet-Caching.patch b/patches/server/0029-Equipment-Packet-Caching.patch similarity index 92% rename from patches/server/0030-Equipment-Packet-Caching.patch rename to patches/server/0029-Equipment-Packet-Caching.patch index 47bbb87cc..48928d957 100644 --- a/patches/server/0030-Equipment-Packet-Caching.patch +++ b/patches/server/0029-Equipment-Packet-Caching.patch @@ -25,10 +25,10 @@ index 5a8f850b447fc3a4bd0eb0c505bbdfc8be7115e8..34d74735b7a7d258c6bd14bb7e540693 this.entity = buf.readVarInt(); EquipmentSlot[] equipmentSlots = EquipmentSlot.values(); diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 97dbcb6f527bd5c567e77200d7f6cbc1abb15792..248a4af1b9c6684502570c879efae20a36558414 100644 +index 506e4d80e47723a0764703578370a45ad2f126fd..a1d03e7d4f0a73930e932fffc870723859ca5e43 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -325,27 +325,8 @@ public class ServerEntity { +@@ -331,27 +331,8 @@ public class ServerEntity { sender.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.ap)); } @@ -44,8 +44,8 @@ index 97dbcb6f527bd5c567e77200d7f6cbc1abb15792..248a4af1b9c6684502570c879efae20a - if (!itemstack.isEmpty()) { - // Paper start - prevent oversized data - final ItemStack sanitized = LivingEntity.sanitizeItemStack(itemstack.copy(), false); -- list.add(Pair.of(enumitemslot, ((LivingEntity) this.entity).stripMeta(sanitized, false))); // Paper - remove unnecessary item meta -- // Paper end +- list.add(Pair.of(enumitemslot, ((LivingEntity) this.entity).stripMeta(sanitized, false))); // Paper - Hide unnecessary item meta +- // Paper end - prevent oversized data - } - } - @@ -59,19 +59,19 @@ index 97dbcb6f527bd5c567e77200d7f6cbc1abb15792..248a4af1b9c6684502570c879efae20a if (!this.entity.getPassengers().isEmpty()) { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3c453de303422f96abf3aa67fa23523dd71327cb..416d71d91addc7b59c292377459f04512c5d9db7 100644 +index 6e7a3acb40ef3ed062c3e6cc2c5bf5cd35f2d2d6..5e5450aeb355ad396ac369816050f297ca0f309f 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -262,6 +262,8 @@ public abstract class LivingEntity extends Entity implements Attackable { public org.bukkit.craftbukkit.entity.CraftLivingEntity getBukkitLivingEntity() { return (org.bukkit.craftbukkit.entity.CraftLivingEntity) super.getBukkitEntity(); } // Paper public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event - public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper + public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API + private final com.google.common.collect.Table equipmentPacketCache = com.google.common.collect.HashBasedTable.create(); // Slice + public java.util.Map cachedEquipmentMap = new java.util.HashMap<>(); // Slice @Override public float getBukkitYaw() { -@@ -3110,6 +3112,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3111,6 +3113,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (map != null) { this.handleHandSwap(map); if (!map.isEmpty()) { @@ -79,7 +79,7 @@ index 3c453de303422f96abf3aa67fa23523dd71327cb..416d71d91addc7b59c292377459f0451 this.handleEquipmentChanges(map); } } -@@ -3202,7 +3205,25 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3203,7 +3206,25 @@ public abstract class LivingEntity extends Entity implements Attackable { } }); @@ -105,8 +105,8 @@ index 3c453de303422f96abf3aa67fa23523dd71327cb..416d71d91addc7b59c292377459f0451 + // Slice end } - // Paper start - hide unnecessary item meta -@@ -4543,4 +4564,74 @@ public abstract class LivingEntity extends Entity implements Attackable { + // Paper start - Hide unnecessary item meta +@@ -4544,4 +4565,74 @@ public abstract class LivingEntity extends Entity implements Attackable { public static record Fallsounds(SoundEvent small, SoundEvent big) { } @@ -164,7 +164,7 @@ index 3c453de303422f96abf3aa67fa23523dd71327cb..416d71d91addc7b59c292377459f0451 + } + + list.add(Pair.of(enumitemslot, strippedItem)); // Paper - remove unnecessary item meta -+ // Paper end ++ // Paper end - prevent oversized data + } + } + @@ -182,7 +182,7 @@ index 3c453de303422f96abf3aa67fa23523dd71327cb..416d71d91addc7b59c292377459f0451 + // Slice end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 1f1ef68a9a449a4a90c284f34a397ab4b6d905f6..3efaa46456a38eac7431552f92761ed1c9b76f5f 100644 +index 4afc1c9d2a7638e84a55fe30932dc36db465c31a..c8ed26388e7becf0b4426735068dc1f5b7b3dc34 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1118,4 +1118,14 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0031-Add-canDespawn-to-Warden.patch b/patches/server/0030-Add-canDespawn-to-Warden.patch similarity index 93% rename from patches/server/0031-Add-canDespawn-to-Warden.patch rename to patches/server/0030-Add-canDespawn-to-Warden.patch index 16c1c57f5..11ad148a6 100644 --- a/patches/server/0031-Add-canDespawn-to-Warden.patch +++ b/patches/server/0030-Add-canDespawn-to-Warden.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Add canDespawn to Warden diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 00389d7ec3e8b059d5591a2019ba240fda2901fe..f7530dd768353921465a887d161845c1a943e527 100644 +index e52f3da3b63cc3dba59d3e874a8420dd312b5e96..1cd7075feb2aeb61dfb9d8665d07ed82fc14ba3a 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -599,7 +599,7 @@ public class EntityType implements FeatureElement, EntityTypeT - if (generation) entity.generation = true; // Paper - add generation bool param + if (generation) entity.generation = true; // Paper - Don't fire sync event during generation entity.load(nbt); }, () -> { - EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); @@ -18,7 +18,7 @@ index 00389d7ec3e8b059d5591a2019ba240fda2901fe..f7530dd768353921465a887d161845c1 } diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 9f1b7c629644931074293151ed58a523ca6d488c..175d019f65499cf7a5743914d2c0b06f3c081eda 100644 +index 937f81a859953498abe73bea560c86e6560e1c33..b925176496639524d80de33c2b4e7a42877c4bca 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java @@ -112,6 +112,7 @@ public class Warden extends Monster implements VibrationSystem { diff --git a/patches/server/0033-Add-reason-to-PlayerConnectionCloseEvent.patch b/patches/server/0031-Add-reason-to-PlayerConnectionCloseEvent.patch similarity index 100% rename from patches/server/0033-Add-reason-to-PlayerConnectionCloseEvent.patch rename to patches/server/0031-Add-reason-to-PlayerConnectionCloseEvent.patch diff --git a/patches/server/0034-Disable-feature-generation.patch b/patches/server/0032-Disable-feature-generation.patch similarity index 100% rename from patches/server/0034-Disable-feature-generation.patch rename to patches/server/0032-Disable-feature-generation.patch diff --git a/patches/server/0035-Biome-freeze-override.patch b/patches/server/0033-Biome-freeze-override.patch similarity index 100% rename from patches/server/0035-Biome-freeze-override.patch rename to patches/server/0033-Biome-freeze-override.patch diff --git a/patches/server/0036-Change-KeepAlive-interval.patch b/patches/server/0034-Change-KeepAlive-interval.patch similarity index 92% rename from patches/server/0036-Change-KeepAlive-interval.patch rename to patches/server/0034-Change-KeepAlive-interval.patch index dea3aaf84..dd9d0eaa2 100644 --- a/patches/server/0036-Change-KeepAlive-interval.patch +++ b/patches/server/0034-Change-KeepAlive-interval.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Change KeepAlive interval diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index d28d0ef6105ddeb562ddf31ae9088739856941fc..6a9bbe6b9efd068e4c7a2aec5baa0cb7d481a027 100644 +index f5f2d65d2e02b0d79352585d9d4ef588ab59dce7..1490a552eaf01228ef46ef8360038c268f8952a3 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java @@ -215,7 +215,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack diff --git a/patches/server/0037-Non-saveable-entities.patch b/patches/server/0035-Non-saveable-entities.patch similarity index 88% rename from patches/server/0037-Non-saveable-entities.patch rename to patches/server/0035-Non-saveable-entities.patch index 350f06122..c07340bb4 100644 --- a/patches/server/0037-Non-saveable-entities.patch +++ b/patches/server/0035-Non-saveable-entities.patch @@ -18,18 +18,18 @@ index 7e8dc9e8f381abfdcce2746edc93122d623622d1..303e5ed4d5cf2a64b998656bfd189f19 if (entity.isVehicle()) { // we cannot assume that these entities are contained within this chunk, because entities can diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 35fa9a43154b08bccc50d7c626c4b10289ef61da..3179abc5b548cc203bd68aeb77fdd558c2df3c4a 100644 +index 12fa631aa176e67dcda522dca6376a69ca5b34d8..f62b6e4777486721a1f9d3b5a80591c26b50bd66 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -422,6 +422,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -424,6 +424,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S private UUID originWorld; public boolean freezeLocked = false; // Paper - Freeze Tick Lock API - public boolean fixedPose = false; // Paper + public boolean fixedPose = false; // Paper - Expand Pose API + public boolean saveable = true; // Slice public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -4830,7 +4831,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -4825,7 +4826,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @Override public boolean shouldBeSaved() { @@ -39,7 +39,7 @@ index 35fa9a43154b08bccc50d7c626c4b10289ef61da..3179abc5b548cc203bd68aeb77fdd558 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 1c3e1153d08b59d29b3613fc3b50a4780aa7a3ac..19c56ef79cacfb6d65dea5741d9ce71998c1eacc 100644 +index f16ac1d640fc97f348c244d4ea86e3278b30ae19..3e1c22cd06ecaa26b0c36563a4d0c44ee7e91b1d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1227,4 +1227,16 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0038-ChunkStatusChangeEvent.patch b/patches/server/0036-ChunkStatusChangeEvent.patch similarity index 100% rename from patches/server/0038-ChunkStatusChangeEvent.patch rename to patches/server/0036-ChunkStatusChangeEvent.patch diff --git a/patches/server/0039-Disable-sending-Entity-Movement-Packets.patch b/patches/server/0037-Disable-sending-Entity-Movement-Packets.patch similarity index 90% rename from patches/server/0039-Disable-sending-Entity-Movement-Packets.patch rename to patches/server/0037-Disable-sending-Entity-Movement-Packets.patch index 384be094e..bfef0eb14 100644 --- a/patches/server/0039-Disable-sending-Entity-Movement-Packets.patch +++ b/patches/server/0037-Disable-sending-Entity-Movement-Packets.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable sending Entity Movement Packets diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 97dbcb6f527bd5c567e77200d7f6cbc1abb15792..fa4e0bcf752693c34aff8b53aea3eeaa65834fc1 100644 +index a1d03e7d4f0a73930e932fffc870723859ca5e43..2718501470b958daa581c4cb169fe9561f21ea54 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java @@ -151,7 +151,7 @@ public class ServerEntity { @@ -17,7 +17,7 @@ index 97dbcb6f527bd5c567e77200d7f6cbc1abb15792..fa4e0bcf752693c34aff8b53aea3eeaa this.yRotp = i; this.xRotp = j; } -@@ -180,14 +180,14 @@ public class ServerEntity { +@@ -186,14 +186,14 @@ public class ServerEntity { if (!flag6 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.onGround()&& !(io.papermc.paper.configuration.GlobalConfiguration.get().collisions.sendFullPosForHardCollidingEntities && this.entity.hardCollides())) { // Paper - send full pos for hard colliding entities to prevent collision problems due to desync if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) { if (flag2) { @@ -36,12 +36,12 @@ index 97dbcb6f527bd5c567e77200d7f6cbc1abb15792..fa4e0bcf752693c34aff8b53aea3eeaa flag5 = true; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a6db17c51d6b8e58936e52e7f6cbe07dcebd5418..1c75f943055b27d435ba36275fa7cd704e7a7b1a 100644 +index f62b6e4777486721a1f9d3b5a80591c26b50bd66..b405ef4ba9343e9dcd7d3b136899bff879e82362 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -423,6 +423,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -425,6 +425,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S public boolean freezeLocked = false; // Paper - Freeze Tick Lock API - public boolean fixedPose = false; // Paper + public boolean fixedPose = false; // Paper - Expand Pose API public boolean saveable = true; // Slice + public boolean sendMovementPackets = true; // Slice diff --git a/patches/server/0040-Player-spawnsOwnMobs.patch b/patches/server/0038-Player-spawnsOwnMobs.patch similarity index 83% rename from patches/server/0040-Player-spawnsOwnMobs.patch rename to patches/server/0038-Player-spawnsOwnMobs.patch index 783c28018..181b79e0c 100644 --- a/patches/server/0040-Player-spawnsOwnMobs.patch +++ b/patches/server/0038-Player-spawnsOwnMobs.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Player spawnsOwnMobs diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..9c5be1f0fd4d6cb62e7bc7faa8fa4c4e5879ab4e 100644 +index 7b3dc5ba8ce6fb5c7091f82c2eea1cb63eb07149..b1bc5a645385a931d56699e852c398e22e04100a 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -557,7 +557,7 @@ public class ServerChunkCache extends ChunkSource { +@@ -564,7 +564,7 @@ public class ServerChunkCache extends ChunkSource { // Paper start - optimise chunk tick iteration ChunkMap playerChunkMap = this.chunkMap; for (ServerPlayer player : this.level.players) { @@ -18,11 +18,11 @@ index 44ada45d9bf2d9b48e5de1c3cb1a855902f3884b..9c5be1f0fd4d6cb62e7bc7faa8fa4c4e player.playerNaturallySpawnedEvent = null; player.lastEntitySpawnRadiusSquared = -1.0; 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 6a642996eb149a71585ef8f6b74b567a245fe635..a4b476149ca2baa2df87a37a86d082a2875f45d6 100644 +index d6cdb7c3314004ee25cbed96eb289d420999c01c..3bc1c402aadd5af534fc343f2d90a20a602e82d1 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -184,6 +184,8 @@ public abstract class Player extends LivingEntity { - public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; + public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage // Paper end + public boolean spawnsOwnMobs = false; // Slice diff --git a/patches/server/0041-Set-location-on-a-Custom-Inventory.patch b/patches/server/0039-Set-location-on-a-Custom-Inventory.patch similarity index 100% rename from patches/server/0041-Set-location-on-a-Custom-Inventory.patch rename to patches/server/0039-Set-location-on-a-Custom-Inventory.patch diff --git a/patches/server/0042-Shared-Data-Storage.patch b/patches/server/0040-Shared-Data-Storage.patch similarity index 90% rename from patches/server/0042-Shared-Data-Storage.patch rename to patches/server/0040-Shared-Data-Storage.patch index f47c68db6..7fb66beae 100644 --- a/patches/server/0042-Shared-Data-Storage.patch +++ b/patches/server/0040-Shared-Data-Storage.patch @@ -17,7 +17,7 @@ index a6f58b3457b7477015c5c6d969e7d83017dd3fa1..7f2070bd2d7eb7f0256a96df00103d20 public BlockUpdates blockUpdates; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 04c6357d24a095bcff40e267cd40920e3b3c3c5d..1c0b55cb77616811270c9b3ee1223184fe189832 100644 +index 078f6e9d081f6efd9417da0798197cf4b5661198..968e35f34584b22bb5bc71dd82482fcc44b99262 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2,6 +2,7 @@ package net.minecraft.server; @@ -38,7 +38,7 @@ index 04c6357d24a095bcff40e267cd40920e3b3c3c5d..1c0b55cb77616811270c9b3ee1223184 AtomicReference atomicreference = new AtomicReference(); Thread thread = new io.papermc.paper.util.TickThread(() -> { // Paper - rewrite chunk system @@ -416,6 +419,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop