diff --git a/patches/api/0010-Smooth-Teleports.patch b/patches/api/0010-Smooth-Teleports.patch index 168a861d1..fa48d48cb 100644 --- a/patches/api/0010-Smooth-Teleports.patch +++ b/patches/api/0010-Smooth-Teleports.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Smooth Teleports diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 88c4885569d2b8b22fce55601d50608ac8e9388c..12c249be755580ec6d83dfe1781f892f222d9ecd 100644 +index 1e5e757b1e3bd02e595020704d14244330555bf0..895e1b57709edfbed7db3ed2d9e49baee663dbcf 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2950,6 +2950,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2956,6 +2956,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM String getClientBrandName(); // Paper end diff --git a/patches/api/0011-AntiXray-Bypass.patch b/patches/api/0011-AntiXray-Bypass.patch index eef809af0..4daf6e711 100644 --- a/patches/api/0011-AntiXray-Bypass.patch +++ b/patches/api/0011-AntiXray-Bypass.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AntiXray Bypass diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 12c249be755580ec6d83dfe1781f892f222d9ecd..804976415e79666c6b1df77b38e71c516847460e 100644 +index 895e1b57709edfbed7db3ed2d9e49baee663dbcf..1897af7e036483932924465719b6ab602be72a7f 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2732,6 +2732,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2761,6 +2761,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM */ boolean hasResourcePack(); diff --git a/patches/server/0001-Build-Changes.patch b/patches/server/0001-Build-Changes.patch index 62b8a079d..a3ba6476e 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 4f2fa65ade89c5703451dad4f80eeef162b277d1..8fddf1a856aa7113ba7140b79df6f4fb45e06e85 100644 +index e7a03ea1dab56e7725f718da0b44c736018ac995..9387d8fdb70e882104155abb284cba129d20585e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,8 +7,12 @@ plugins { @@ -42,10 +42,10 @@ index 4f2fa65ade89c5703451dad4f80eeef162b277d1..8fddf1a856aa7113ba7140b79df6f4fb 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 9f15d9dbdfa74a0640b1a2b4ff695609d4758a4c..fa14ab3d8117e9d357380d21d3c6a2cd1df7c04c 100644 +index fb82bb52f219e7683fe1d3c0fb3acbe2251de8d4..53188d488936c0ab97ed5dea558831c8ced4cd0d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1682,7 +1682,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -Date: Fri, 12 Aug 2022 08:16:16 -0500 -Subject: [PATCH] Add PlayerShieldDisableEvent - - -diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 02cb6b8c1d59855ff4a8aad3024fe12007eca0ee..e5d853e7a2feaae6236cf6aa2ee77e0472621c1b 100644 ---- a/src/main/java/net/minecraft/world/entity/Mob.java -+++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -1686,7 +1686,10 @@ public abstract class Mob extends LivingEntity implements Targeting { - float f = 0.25F + (float) EnchantmentHelper.getBlockEfficiency(this) * 0.05F; - - if (this.random.nextFloat() < f) { -- player.getCooldowns().addCooldown(Items.SHIELD, 100); -+ //Slice start -+ io.papermc.paper.event.player.PlayerShieldDisableEvent shieldDisableEvent = new io.papermc.paper.event.player.PlayerShieldDisableEvent((org.bukkit.entity.Player) player.getBukkitEntity(), getBukkitEntity(), 100); -+ if (!shieldDisableEvent.callEvent()) return; // Slice -+ player.getCooldowns().addCooldown(Items.SHIELD, shieldDisableEvent.getCooldown()); - this.level.broadcastEntityEvent(player, (byte) 30); - } - } -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 0629c471d38a77c44fc1c86ccdfcb0690f61ca17..a144f9a911297891645f704c361e1d8ba0e28a69 100644 ---- a/src/main/java/net/minecraft/world/entity/player/Player.java -+++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -976,7 +976,7 @@ public abstract class Player extends LivingEntity { - protected void blockUsingShield(LivingEntity attacker) { - super.blockUsingShield(attacker); - if (attacker.canDisableShield()) { -- this.disableShield(true); -+ this.disableShield(true, attacker); // Slice - } - - } -@@ -1461,6 +1461,12 @@ public abstract class Player extends LivingEntity { - } - - public void disableShield(boolean sprinting) { -+ // Slice start -+ disableShield(sprinting, null); -+ } -+ -+ public void disableShield(boolean sprinting, @Nullable LivingEntity attacker) { -+ // Slice end - float f = 0.25F + (float) EnchantmentHelper.getBlockEfficiency(this) * 0.05F; - - if (sprinting) { -@@ -1468,7 +1474,12 @@ public abstract class Player extends LivingEntity { - } - - if (this.random.nextFloat() < f) { -- this.getCooldowns().addCooldown(Items.SHIELD, 100); -+ // Slice start -+ org.bukkit.entity.Entity finalAttacker = attacker != null ? attacker.getBukkitEntity() : null; -+ 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()); -+ // Slice end - this.stopUsingItem(); - this.level.broadcastEntityEvent(this, (byte) 30); - } diff --git a/patches/server/0003-Set-BlockData-without-light-updates.patch b/patches/server/0002-Set-BlockData-without-light-updates.patch similarity index 85% rename from patches/server/0003-Set-BlockData-without-light-updates.patch rename to patches/server/0002-Set-BlockData-without-light-updates.patch index 2f09c2526..31989d474 100644 --- a/patches/server/0003-Set-BlockData-without-light-updates.patch +++ b/patches/server/0002-Set-BlockData-without-light-updates.patch @@ -27,10 +27,10 @@ index 877498729c66de9aa6a27c9148f7494d7895615c..63959d7f15c682c2935f872d50de03fd return false; } else { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 973ecd50f9cb6b86c353586e84d15dcb118ccb60..8e3db48534fc90bb55d0772084b1543f2239878f 100644 +index 147d802d9207e358fdb2d1c7806fc2f634dcfd98..22558f4d5ae2eba71e2392729c2c2d931741483c 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -515,12 +515,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -514,12 +514,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } @Override @@ -46,16 +46,7 @@ index 973ecd50f9cb6b86c353586e84d15dcb118ccb60..8e3db48534fc90bb55d0772084b1543f // CraftBukkit start - tree generation if (this.captureTreeGeneration) { // Paper start -@@ -568,7 +568,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - } else { - BlockState iblockdata2 = this.getBlockState(pos); - -- if ((flags & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.getLightBlock(this, pos) != iblockdata1.getLightBlock(this, pos) || iblockdata2.getLightEmission() != iblockdata1.getLightEmission() || iblockdata2.useShapeForLightOcclusion() || iblockdata1.useShapeForLightOcclusion())) { -+ if (checkLight && (flags & 128) == 0 && iblockdata2 != iblockdata1 && (iblockdata2.getLightBlock(this, pos) != iblockdata1.getLightBlock(this, pos) || iblockdata2.getLightEmission() != iblockdata1.getLightEmission() || iblockdata2.useShapeForLightOcclusion() || iblockdata1.useShapeForLightOcclusion())) { - this.getProfiler().push("queueCheckLight"); - this.getChunkSource().getLightEngine().checkBlock(pos); - this.getProfiler().pop(); -@@ -716,7 +716,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -709,7 +709,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { Block.dropResources(iblockdata, this, pos, tileentity, breakingEntity, ItemStack.EMPTY); } @@ -86,10 +77,10 @@ index 134e5ec79bf2dddd4e31930f8a7cb2c02fa29518..fd72d278a2719911a46b6bc9e7da2dc2 boolean removeBlock(BlockPos pos, boolean move); 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 4f91e4832a94c3facbc711fcae4cb5ad540a5ca0..5fe1a2c493c2a47ec3da8293428d45ef650249c1 100644 +index 9522e646529f3d849471931b4b3c0d133e7fcfc5..2f58b13c70ddc52312512f64b02dbda641788038 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -196,7 +196,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -194,7 +194,7 @@ public class Block extends BlockBehaviour implements ItemLike { world.destroyBlock(pos, (flags & 32) == 0, (Entity) null, maxUpdateDepth); } } else { @@ -99,7 +90,7 @@ index 4f91e4832a94c3facbc711fcae4cb5ad540a5ca0..5fe1a2c493c2a47ec3da8293428d45ef } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java -index 9868c1e58a41126b2b0f1014c74329015152ded6..38d28c35f2d9e147b8d5336b5d99e623af89b960 100644 +index cf6e22889437aa18fed66dc6a1b8394e6f21dcbc..f23fb2d82c8c612e6ae2708ace9d8bb777dd9140 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegionAccessor.java @@ -286,7 +286,7 @@ public abstract class CraftRegionAccessor implements RegionAccessor { @@ -112,7 +103,7 @@ index 9868c1e58a41126b2b0f1014c74329015152ded6..38d28c35f2d9e147b8d5336b5d99e623 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index b6c4f3d34603929a56073444be5f25fda15ff0c7..823857f89bbed57bf33d41501604502bdfeff67a 100644 +index 01b401f7d691ef451266bbc3a94980d613b96f21..a3baff85fe4df96602a2972082e6a6278eaef939 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -188,15 +188,20 @@ public class CraftBlock implements Block { diff --git a/patches/server/0004-Add-BlockDestroyedByNeighborEvent.patch b/patches/server/0003-Add-BlockDestroyedByNeighborEvent.patch similarity index 84% rename from patches/server/0004-Add-BlockDestroyedByNeighborEvent.patch rename to patches/server/0003-Add-BlockDestroyedByNeighborEvent.patch index 5e38fb356..7ea7c79ec 100644 --- a/patches/server/0004-Add-BlockDestroyedByNeighborEvent.patch +++ b/patches/server/0003-Add-BlockDestroyedByNeighborEvent.patch @@ -5,10 +5,10 @@ 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 1d33c02088c150189d7f4b0aa27f6a1de96b11cf..14f68a88a5dacaacc799787a9f451699bc4bd5cd 100644 +index 1635fee928d64f4d2c336dca6675ed4641918830..8e09fa09ad5171c49d66cd890f37ca59e2962f94 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -418,6 +418,7 @@ public class ServerPlayerGameMode { +@@ -419,6 +419,7 @@ public class ServerPlayerGameMode { org.bukkit.block.BlockState state = bblock.getState(); level.captureDrops = new ArrayList<>(); // CraftBukkit end @@ -16,7 +16,7 @@ index 1d33c02088c150189d7f4b0aa27f6a1de96b11cf..14f68a88a5dacaacc799787a9f451699 block.playerWillDestroy(this.level, pos, iblockdata, this.player); boolean flag = this.level.removeBlock(pos, false); -@@ -446,6 +447,7 @@ public class ServerPlayerGameMode { +@@ -447,6 +448,7 @@ public class ServerPlayerGameMode { // CraftBukkit start java.util.List itemsToDrop = level.captureDrops; // Paper - store current list level.captureDrops = null; // Paper - Remove this earlier so that we can actually drop stuff @@ -25,10 +25,10 @@ index 1d33c02088c150189d7f4b0aa27f6a1de96b11cf..14f68a88a5dacaacc799787a9f451699 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 a7533d18fe6148d7bfd3106b9cdcb6fa3347cf7c..588a4fdcb294b9b1a92ef9969ef64f999bf529cc 100644 +index adb7220be617d6d9f2cdd7fbe4fa2dd24cc7d142..79ce85f7f3471bab9bd647848836670c3de38a9a 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -356,6 +356,7 @@ public final class ItemStack { +@@ -360,6 +360,7 @@ public final class ItemStack { } } Item item = this.getItem(); @@ -37,10 +37,10 @@ index a7533d18fe6148d7bfd3106b9cdcb6fa3347cf7c..588a4fdcb294b9b1a92ef9969ef64f99 CompoundTag newData = this.getTagClone(); int newCount = this.getCount(); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8e3db48534fc90bb55d0772084b1543f2239878f..23630e4ab396158d8f3f77bf9aa05f66c6b27a9d 100644 +index 22558f4d5ae2eba71e2392729c2c2d931741483c..a601d5b40d3556c688832fd5f392003c2aac5cef 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -185,6 +185,27 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -184,6 +184,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 @@ -68,7 +68,7 @@ index 8e3db48534fc90bb55d0772084b1543f2239878f..23630e4ab396158d8f3f77bf9aa05f66 // Paper start - fix and optimise world upgrading // copied from below public static ResourceKey getDimensionKey(DimensionType manager) { -@@ -670,6 +691,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -663,6 +684,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { if (!this.preventPoiUpdated) { this.onBlockStateChange(blockposition, iblockdata1, iblockdata2); } @@ -76,7 +76,7 @@ index 8e3db48534fc90bb55d0772084b1543f2239878f..23630e4ab396158d8f3f77bf9aa05f66 // CraftBukkit end } } -@@ -691,6 +713,17 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -684,6 +706,17 @@ public abstract class Level implements LevelAccessor, AutoCloseable { if (iblockdata.isAir()) { return false; } else { @@ -115,16 +115,22 @@ index 9db66b393e057d93a8025b803ae0ad2a1bca61f6..4c7cd93daa2d4fcbf444fe7fceca9e77 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 505503a3f59d4b747649275c6f6faa504b7c7b64..0578f8e08b8079898be037e56eb093042a2df0cc 100644 +index de4c1e4701236e7d5ec77339c51ad6a9d8288bb6..4beb56de55d5584ce7f6e04ae30f7c3cffc1440e 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 -@@ -1036,6 +1036,16 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -1127,11 +1127,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 (this.getMaterial() == Material.AIR && !world.getBlockState(blockposition_mutableblockposition).canSurvive(world, blockposition_mutableblockposition)) { ++ 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(); diff --git a/patches/server/0005-Add-provided-Material-to-getDrops.patch b/patches/server/0004-Add-provided-Material-to-getDrops.patch similarity index 93% rename from patches/server/0005-Add-provided-Material-to-getDrops.patch rename to patches/server/0004-Add-provided-Material-to-getDrops.patch index 113ad19fe..41f53dda8 100644 --- a/patches/server/0005-Add-provided-Material-to-getDrops.patch +++ b/patches/server/0004-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 0a5b3a2f7db1042fe9f154ffaea99e1b9b4ce9ce..ad56206974135e3be74143d3ef86c37969855119 100644 +index a3baff85fe4df96602a2972082e6a6278eaef939..7164c583f0f15dab3b70376048b636ea98e82c68 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -618,7 +618,18 @@ public class CraftBlock implements Block { diff --git a/patches/server/0006-Add-Player-to-SpongeAbsorbEvent.patch b/patches/server/0005-Add-Player-to-SpongeAbsorbEvent.patch similarity index 88% rename from patches/server/0006-Add-Player-to-SpongeAbsorbEvent.patch rename to patches/server/0005-Add-Player-to-SpongeAbsorbEvent.patch index 93cdd2a9f..69792057d 100644 --- a/patches/server/0006-Add-Player-to-SpongeAbsorbEvent.patch +++ b/patches/server/0005-Add-Player-to-SpongeAbsorbEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player to SpongeAbsorbEvent diff --git a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -index 7304b2659eb45bc4bc9fa7c43e6ca07221d0fc73..63e385993022b6e708e981982c18060273d3e019 100644 +index 4bce895268542531598a01a1bccd8ac1ed703b7d..8b552fc58a2909bced07eb743dd5d76c0357f9ab 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -@@ -109,7 +109,8 @@ public class SpongeBlock extends Block { +@@ -104,7 +104,8 @@ public class SpongeBlock extends Block { if (!blocks.isEmpty()) { final org.bukkit.block.Block bblock = world.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()); diff --git a/patches/server/0007-Add-World-Instance-flag.patch b/patches/server/0006-Add-World-Instance-flag.patch similarity index 84% rename from patches/server/0007-Add-World-Instance-flag.patch rename to patches/server/0006-Add-World-Instance-flag.patch index 9d1eee8f5..3c554dc0e 100644 --- a/patches/server/0007-Add-World-Instance-flag.patch +++ b/patches/server/0006-Add-World-Instance-flag.patch @@ -5,10 +5,10 @@ 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 45804711255f04110e9509df8d60900314aa10b7..2cb6a61fb1963ceba8daaf703a1e1881e71c9ace 100644 +index 18aac3da3c88f33b1a71a5920a8daa27e9723913..af0720fb8bd334aac5493121c6373d87421204b4 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -219,6 +219,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -222,6 +222,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public final UUID uuid; public boolean hasPhysicsEvent = true; // Paper public boolean hasEntityMoveEvent = false; // Paper @@ -17,10 +17,10 @@ index 45804711255f04110e9509df8d60900314aa10b7..2cb6a61fb1963ceba8daaf703a1e1881 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 8f0234296397ca2d4a607dcea6093c6c606dc7d2..8334fbe6ffee640016ce17c1d331b6f88b569d65 100644 +index 89514af7f3771db496e7e2a40fa4e7fdf527f095..347becd2658a257a7253edccf62fb5923da28b29 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -1264,6 +1264,18 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1263,6 +1263,18 @@ public class CraftWorld extends CraftRegionAccessor implements World { world.noSave = !value; } diff --git a/patches/server/0008-Add-PlayerData-Events.patch b/patches/server/0007-Add-PlayerData-Events.patch similarity index 97% rename from patches/server/0008-Add-PlayerData-Events.patch rename to patches/server/0007-Add-PlayerData-Events.patch index ad0f2dcd5..8c50c707c 100644 --- a/patches/server/0008-Add-PlayerData-Events.patch +++ b/patches/server/0007-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 14f68a88a5dacaacc799787a9f451699bc4bd5cd..a1db0c83d472a87560ca1b3834dd1f1bdbb9fc1a 100644 +index 8e09fa09ad5171c49d66cd890f37ca59e2962f94..74eaa6be9676d3e4bc2cd71de84b2d3defa95ce2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java -@@ -600,6 +600,8 @@ public class ServerPlayerGameMode { +@@ -601,6 +601,8 @@ public class ServerPlayerGameMode { enuminteractionresult1 = stack.useOn(itemactioncontext, hand); } diff --git a/patches/server/0009-Add-PlayerGetRespawnLocationEvent.patch b/patches/server/0008-Add-PlayerGetRespawnLocationEvent.patch similarity index 97% rename from patches/server/0009-Add-PlayerGetRespawnLocationEvent.patch rename to patches/server/0008-Add-PlayerGetRespawnLocationEvent.patch index 9be06f3dc..4147c15b9 100644 --- a/patches/server/0009-Add-PlayerGetRespawnLocationEvent.patch +++ b/patches/server/0008-Add-PlayerGetRespawnLocationEvent.patch @@ -5,10 +5,10 @@ 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 5c21de0d48fba88c3164b72e0eb624706b683fab..2672d1d05abb9aeaaa18ee58174ed95b7ba9ae4d 100644 +index 683b5d78f9e3dc34e40c54683f64be32317797ac..aaa6283dec4570caf4c195059b44cc11e600d2ed 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -837,49 +837,57 @@ public abstract class PlayerList { +@@ -844,49 +844,57 @@ public abstract class PlayerList { // CraftBukkit start - fire PlayerRespawnEvent if (location == null) { diff --git a/patches/server/0010-Set-multiple-team-settings-at-once.patch b/patches/server/0009-Set-multiple-team-settings-at-once.patch similarity index 100% rename from patches/server/0010-Set-multiple-team-settings-at-once.patch rename to patches/server/0009-Set-multiple-team-settings-at-once.patch diff --git a/patches/server/0011-Smooth-Teleports.patch b/patches/server/0010-Smooth-Teleports.patch similarity index 74% rename from patches/server/0011-Smooth-Teleports.patch rename to patches/server/0010-Smooth-Teleports.patch index 3cd5d824b..aed74ce64 100644 --- a/patches/server/0011-Smooth-Teleports.patch +++ b/patches/server/0010-Smooth-Teleports.patch @@ -5,7 +5,7 @@ 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 98df2463bf41fc736aa6a2b6ddf89e5abde6eb39..35d24300f72cdd68d46db7c880ab17eec95fae68 100644 +index 5fad40fa88f697108e42461c41012d5964ed7d75..4aa043cc25d7d770ead47bcc3bf0373336768e5c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -277,6 +277,7 @@ public class ServerPlayer extends Player { @@ -14,20 +14,20 @@ index 98df2463bf41fc736aa6a2b6ddf89e5abde6eb39..35d24300f72cdd68d46db7c880ab17ee 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 boolean smoothWorldTeleport; // Slice - public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) { - super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); + 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)); + public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index c2e3ea95c6098536c03ded1e43f5ef692ed34800..83ee1b514aa4b5ed05f31c946956661dd0427eaf 100644 +index aaa6283dec4570caf4c195059b44cc11e600d2ed..998e8a79ba88cb8dc421b890f86aff7cff730480 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -919,12 +919,12 @@ public abstract class PlayerList { +@@ -926,12 +926,12 @@ public abstract class PlayerList { int i = flag ? 1 : 0; // CraftBukkit start LevelData worlddata = worldserver1.getLevelData(); -- entityplayer1.connection.send(new ClientboundRespawnPacket(worldserver1.dimensionTypeId(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), entityplayer1.gameMode.getGameModeForPlayer(), entityplayer1.gameMode.getPreviousGameModeForPlayer(), worldserver1.isDebug(), worldserver1.isFlat(), (byte) i, entityplayer1.getLastDeathLocation())); -+ if (!entityplayer.smoothWorldTeleport) entityplayer1.connection.send(new ClientboundRespawnPacket(worldserver1.dimensionTypeId(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), entityplayer1.gameMode.getGameModeForPlayer(), entityplayer1.gameMode.getPreviousGameModeForPlayer(), worldserver1.isDebug(), worldserver1.isFlat(), (byte) i, entityplayer1.getLastDeathLocation())); - entityplayer1.connection.send(new ClientboundSetChunkCacheRadiusPacket(worldserver1.getChunkSource().chunkMap.playerChunkManager.getTargetSendDistance())); // Spigot // Paper - replace old player chunk management - entityplayer1.connection.send(new ClientboundSetSimulationDistancePacket(worldserver1.getChunkSource().chunkMap.playerChunkManager.getTargetTickViewDistance())); // Spigot // Paper - replace old player chunk management +- entityplayer1.connection.send(new ClientboundRespawnPacket(worldserver1.dimensionTypeId(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), entityplayer1.gameMode.getGameModeForPlayer(), entityplayer1.gameMode.getPreviousGameModeForPlayer(), worldserver1.isDebug(), worldserver1.isFlat(), (byte) i, entityplayer1.getLastDeathLocation(), entityplayer1.getPortalCooldown())); ++ if (!entityplayer.smoothWorldTeleport) entityplayer1.connection.send(new ClientboundRespawnPacket(worldserver1.dimensionTypeId(), worldserver1.dimension(), BiomeManager.obfuscateSeed(worldserver1.getSeed()), entityplayer1.gameMode.getGameModeForPlayer(), entityplayer1.gameMode.getPreviousGameModeForPlayer(), worldserver1.isDebug(), worldserver1.isFlat(), (byte) i, entityplayer1.getLastDeathLocation(), entityplayer1.getPortalCooldown())); + entityplayer1.connection.send(new ClientboundSetChunkCacheRadiusPacket(worldserver1.getWorld().getSendViewDistance())); // Spigot // Paper - replace old player chunk management + entityplayer1.connection.send(new ClientboundSetSimulationDistancePacket(worldserver1.getWorld().getSimulationDistance())); // Spigot // Paper - replace old player chunk management entityplayer1.spawnIn(worldserver1); entityplayer1.unsetRemoved(); - entityplayer1.connection.teleport(CraftLocation.toBukkit(entityplayer1.position(), worldserver1.getWorld(), entityplayer1.getYRot(), entityplayer1.getXRot())); @@ -36,10 +36,10 @@ index c2e3ea95c6098536c03ded1e43f5ef692ed34800..83ee1b514aa4b5ed05f31c946956661d // entityplayer1.connection.teleport(entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot()); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index be64633c8bcee96f2ad5247525cac965b7b031b1..a96db3d93a54beac623f7d08b3c994d53b70dc1c 100644 +index e41f5417304f5b05fa7e2f6b6e1c0095e820f1cc..585dd6d62930735bdda0c70b27a31f021056fb14 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1262,6 +1262,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1239,6 +1239,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper end } diff --git a/patches/server/0012-Ignore-durability-changes-for-equipment-updates.patch b/patches/server/0011-Ignore-durability-changes-for-equipment-updates.patch similarity index 83% rename from patches/server/0012-Ignore-durability-changes-for-equipment-updates.patch rename to patches/server/0011-Ignore-durability-changes-for-equipment-updates.patch index 59fa3f0c2..739e71081 100644 --- a/patches/server/0012-Ignore-durability-changes-for-equipment-updates.patch +++ b/patches/server/0011-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 95a27d28f73039693ca64601954af62028413634..72739d5949314b242869fd5fef3b5f0c076434d0 100644 +index 67627bbf84f5aab2872f636b1dcb6728c8494147..e422d8352f6f7dda8fb7ae8f51ebd5ec2e116115 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3096,7 +3096,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3134,7 +3134,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } public boolean equipmentHasChanged(ItemStack stack, ItemStack stack2) { diff --git a/patches/server/0013-Disable-Azalea-generation.patch b/patches/server/0012-Disable-Azalea-generation.patch similarity index 98% rename from patches/server/0013-Disable-Azalea-generation.patch rename to patches/server/0012-Disable-Azalea-generation.patch index 7efb18d7f..4a7652173 100644 --- a/patches/server/0013-Disable-Azalea-generation.patch +++ b/patches/server/0012-Disable-Azalea-generation.patch @@ -18,7 +18,7 @@ index 8f5178e934b5f9bc48beacd082e479fd9fb80fa6..d580238d733ba2dbbbbaa2659d1a7834 builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, CavePlacements.CLASSIC_VINES); } diff --git a/src/main/java/net/minecraft/data/worldgen/features/CaveFeatures.java b/src/main/java/net/minecraft/data/worldgen/features/CaveFeatures.java -index feabf6db6a5987bec36b611b160b67ca30af2ecf..974c4d03dd36cd30ff0736cdc1605623e21e7c78 100644 +index 3d899e4dbb96f64279485bbd5b708df88ddbfe8f..89f33b92dc8cfa22d1e1edbda1a31179743979e8 100644 --- a/src/main/java/net/minecraft/data/worldgen/features/CaveFeatures.java +++ b/src/main/java/net/minecraft/data/worldgen/features/CaveFeatures.java @@ -110,7 +110,7 @@ public class CaveFeatures { diff --git a/patches/server/0014-AntiXray-Bypass.patch b/patches/server/0013-AntiXray-Bypass.patch similarity index 86% rename from patches/server/0014-AntiXray-Bypass.patch rename to patches/server/0013-AntiXray-Bypass.patch index 0cb6601f7..14b145b84 100644 --- a/patches/server/0014-AntiXray-Bypass.patch +++ b/patches/server/0013-AntiXray-Bypass.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AntiXray Bypass diff --git a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java -index cab91880a08c6fdc545804911d295e0f24f4d983..f90f27d9d9a4043198c33d65efa7068b76b58818 100644 +index 42fdce97d99618a53f2e9c51804ff2205b574f69..7e8d58e3481be2d7ebbe5fe388d61932479e7721 100644 --- a/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java +++ b/src/main/java/com/destroystokyo/paper/antixray/ChunkPacketBlockControllerAntiXray.java -@@ -163,6 +163,7 @@ public final class ChunkPacketBlockControllerAntiXray extends ChunkPacketBlockCo +@@ -165,6 +165,7 @@ public final class ChunkPacketBlockControllerAntiXray extends ChunkPacketBlockCo @Override public boolean shouldModify(ServerPlayer player, LevelChunk chunk) { @@ -17,7 +17,7 @@ index cab91880a08c6fdc545804911d295e0f24f4d983..f90f27d9d9a4043198c33d65efa7068b } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a96db3d93a54beac623f7d08b3c994d53b70dc1c..1b58330a0eff27eb920a37dad0b436049fe0bce6 100644 +index 585dd6d62930735bdda0c70b27a31f021056fb14..baccc49316bc3763add517650d364c908bf410b0 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -185,6 +185,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -28,7 +28,7 @@ index a96db3d93a54beac623f7d08b3c994d53b70dc1c..1b58330a0eff27eb920a37dad0b43604 public CraftPlayer(CraftServer server, ServerPlayer entity) { super(server, entity); -@@ -2750,6 +2751,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2727,6 +2728,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } // Paper end diff --git a/patches/server/0014-Add-PlayerPreChunkLoadEvent.patch b/patches/server/0014-Add-PlayerPreChunkLoadEvent.patch new file mode 100644 index 000000000..386b48da7 --- /dev/null +++ b/patches/server/0014-Add-PlayerPreChunkLoadEvent.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Cryptite +Date: Mon, 10 Apr 2023 08:47:43 -0500 +Subject: [PATCH] Add PlayerPreChunkLoadEvent + + +diff --git a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java +index a495d692841c1a6056ca82519ee9b9c66f1ff5cd..18e0fd0bcf3036f986f2726c89592f875a3c630e 100644 +--- a/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java ++++ b/src/main/java/io/papermc/paper/chunk/system/RegionizedPlayerChunkLoader.java +@@ -411,7 +411,7 @@ public class RegionizedPlayerChunkLoader { + private boolean canGenerateChunks = true; + + private final ArrayDeque> delayedTicketOps = new ArrayDeque<>(); +- private final LongOpenHashSet sentChunks = new LongOpenHashSet(); ++ public final LongOpenHashSet sentChunks = new LongOpenHashSet(); // Slice -> public + + 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 347becd2658a257a7253edccf62fb5923da28b29..524f56735c3f4781be86d0f31e8fb17c578e5b2f 100644 +--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java ++++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +@@ -531,6 +531,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { + return true; + } + ++ @Override ++ public it.unimi.dsi.fastutil.longs.LongOpenHashSet getSentChunks(Player p) { ++ ServerPlayer craftPlayer = ((CraftPlayer) p).getHandle(); ++ return craftPlayer.chunkLoader.sentChunks; ++ } ++ + @Override + public boolean isChunkInUse(int x, int z) { + return this.isChunkLoaded(x, z); diff --git a/patches/server/0015-Add-PlayerPreChunkLoadEvent.patch b/patches/server/0015-Add-PlayerPreChunkLoadEvent.patch deleted file mode 100644 index bf96cb098..000000000 --- a/patches/server/0015-Add-PlayerPreChunkLoadEvent.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Cryptite -Date: Mon, 10 Apr 2023 08:47:43 -0500 -Subject: [PATCH] Add PlayerPreChunkLoadEvent - - -diff --git a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java -index e77972c4c264100ffdd824bfa2dac58dbbc6d678..5b32567bcf532994a31f184743cf42f4ea0113a4 100644 ---- a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java -+++ b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java -@@ -787,7 +787,7 @@ public final class PlayerChunkLoader { - // warning: modifications of this field must be aware that the loadQueue inside PlayerChunkLoader uses this field - // in a comparator! - protected final ArrayDeque loadQueue = new ArrayDeque<>(); -- protected final LongOpenHashSet sentChunks = new LongOpenHashSet(); -+ public final LongOpenHashSet sentChunks = new LongOpenHashSet(); // Slice - public - protected final LongOpenHashSet chunksToBeSent = new LongOpenHashSet(); - - protected final TreeSet sendQueue = new TreeSet<>((final ChunkPriorityHolder p1, final ChunkPriorityHolder p2) -> { -@@ -871,7 +871,14 @@ public final class PlayerChunkLoader { - } - - public void sendChunk(final int chunkX, final int chunkZ, final Runnable onChunkSend) { -- if (this.sentChunks.add(CoordinateUtils.getChunkKey(chunkX, chunkZ))) { -+ // Slice start -+ if (!new io.papermc.paper.event.packet.PlayerPreChunkLoadEvent(this.player.getBukkitEntity().getWorld(), chunkX, chunkZ, this.player.getBukkitEntity()).callEvent()) { -+ this.player.connection.connection.execute(onChunkSend); -+ return; -+ } -+ // Slice end -+ -+ if (this.sentChunks.add(CoordinateUtils.getChunkKey(chunkX, chunkZ))) { // Slice - this.player.getLevel().getChunkSource().chunkMap.updateChunkTracking(this.player, - new ChunkPos(chunkX, chunkZ), new MutableObject<>(), false, true); // unloaded, loaded - this.player.connection.connection.execute(onChunkSend); -diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 8334fbe6ffee640016ce17c1d331b6f88b569d65..c591b248da7f6349ce6da339f96ad9b51be042ef 100644 ---- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -532,6 +532,13 @@ public class CraftWorld extends CraftRegionAccessor implements World { - return true; - } - -+ @Override -+ public it.unimi.dsi.fastutil.longs.LongOpenHashSet getSentChunks(Player p) { -+ CraftPlayer craftPlayer = (CraftPlayer) p; -+ io.papermc.paper.chunk.PlayerChunkLoader.PlayerLoaderData data = this.world.chunkSource.chunkMap.playerChunkManager.getData(craftPlayer.getHandle()); -+ return data != null ? data.sentChunks : null; -+ } -+ - @Override - public boolean isChunkInUse(int x, int z) { - return this.isChunkLoaded(x, z); diff --git a/patches/server/0016-Allow-opening-covered-chests.patch b/patches/server/0015-Allow-opening-covered-chests.patch similarity index 100% rename from patches/server/0016-Allow-opening-covered-chests.patch rename to patches/server/0015-Allow-opening-covered-chests.patch diff --git a/patches/server/0017-Don-t-send-fire-packets-if-player-has-FR.patch b/patches/server/0016-Don-t-send-fire-packets-if-player-has-FR.patch similarity index 80% rename from patches/server/0017-Don-t-send-fire-packets-if-player-has-FR.patch rename to patches/server/0016-Don-t-send-fire-packets-if-player-has-FR.patch index 2b60b6e60..53362fa56 100644 --- a/patches/server/0017-Don-t-send-fire-packets-if-player-has-FR.patch +++ b/patches/server/0016-Don-t-send-fire-packets-if-player-has-FR.patch @@ -5,13 +5,13 @@ 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 280ee1838106201f5e3ba7753caced6d030f7e55..53f33b19277cdfd364b84362475a72f8d1a3cd60 100644 +index 92202262eff01ae3bbeff0e6ebdcf26ad613c169..05b60a115c3bc9c34fd01a2ed199e152b57044b1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -848,7 +848,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -854,7 +854,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { - this.checkOutOfWorld(); - if (!this.level.isClientSide) { + this.checkBelowWorld(); + if (!this.level().isClientSide) { - this.setSharedFlagOnFire(this.remainingFireTicks > 0); + if (this instanceof net.minecraft.world.entity.LivingEntity livingEntity) { + this.setSharedFlagOnFire(this.remainingFireTicks > 0 && !livingEntity.hasEffect(net.minecraft.world.effect.MobEffects.FIRE_RESISTANCE)); diff --git a/patches/server/0018-Allow-access-to-LightEngine.patch b/patches/server/0017-Allow-access-to-LightEngine.patch similarity index 62% rename from patches/server/0018-Allow-access-to-LightEngine.patch rename to patches/server/0017-Allow-access-to-LightEngine.patch index fb78050e6..c0c220d09 100644 --- a/patches/server/0018-Allow-access-to-LightEngine.patch +++ b/patches/server/0017-Allow-access-to-LightEngine.patch @@ -5,11 +5,11 @@ 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 fbe209a66c77c47935ad026dd3e45e682af91fd8..67a8b0145e4ed096b4fc520202098b9b1d259bd6 100644 +index 9209b598d7168b82574e4800056b8b9f84265dd0..4321789e9222350266ea0830473861e2f5fd75ad 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -509,7 +509,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - return !ChunkMap.isChunkInRange(x1, z1, x2, z2, distance) ? false : (!ChunkMap.isChunkInRange(x1 + 1, z1, x2, z2, distance) ? true : (!ChunkMap.isChunkInRange(x1, z1 + 1, x2, z2, distance) ? true : (!ChunkMap.isChunkInRange(x1 - 1, z1, x2, z2, distance) ? true : !ChunkMap.isChunkInRange(x1, z1 - 1, x2, z2, distance)))); +@@ -505,7 +505,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + return !ChunkMap.isChunkInRange(x1, z1, x2, z2, distance) ? false : !ChunkMap.isChunkInRange(x1 + 1, z1 + 1, x2, z2, distance) || !ChunkMap.isChunkInRange(x1 - 1, z1 + 1, x2, z2, distance) || !ChunkMap.isChunkInRange(x1 + 1, z1 - 1, x2, z2, distance) || !ChunkMap.isChunkInRange(x1 - 1, z1 - 1, x2, z2, distance); } - protected ThreadedLevelLightEngine getLightEngine() { diff --git a/patches/server/0019-Disable-geode-and-monsterspawners-generation.patch b/patches/server/0018-Disable-geode-and-monsterspawners-generation.patch similarity index 93% rename from patches/server/0019-Disable-geode-and-monsterspawners-generation.patch rename to patches/server/0018-Disable-geode-and-monsterspawners-generation.patch index 46a0e404a..1639d2346 100644 --- a/patches/server/0019-Disable-geode-and-monsterspawners-generation.patch +++ b/patches/server/0018-Disable-geode-and-monsterspawners-generation.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Disable geode and monsterspawners generation diff --git a/src/main/java/net/minecraft/data/worldgen/biome/OverworldBiomes.java b/src/main/java/net/minecraft/data/worldgen/biome/OverworldBiomes.java -index 1b6195cd9878e66eb20c45247d7005f9822e79c6..1808399adbbe239c158fc1f2849f5ade8ba1f654 100644 +index 84aa56cbcaa5539b556f42eb284d3dd2e200e358..a6d2ead225841192c2eb80b3b2e54ceeaa76546b 100644 --- a/src/main/java/net/minecraft/data/worldgen/biome/OverworldBiomes.java +++ b/src/main/java/net/minecraft/data/worldgen/biome/OverworldBiomes.java @@ -54,8 +54,8 @@ public class OverworldBiomes { diff --git a/patches/server/0020-Set-Mutton-nutrition-equal-to-beef.patch b/patches/server/0019-Set-Mutton-nutrition-equal-to-beef.patch similarity index 100% rename from patches/server/0020-Set-Mutton-nutrition-equal-to-beef.patch rename to patches/server/0019-Set-Mutton-nutrition-equal-to-beef.patch diff --git a/patches/server/0022-PlayerLoadStatsEvent.patch b/patches/server/0020-PlayerLoadStatsEvent.patch similarity index 98% rename from patches/server/0022-PlayerLoadStatsEvent.patch rename to patches/server/0020-PlayerLoadStatsEvent.patch index 49467257e..5e8b96f8d 100644 --- a/patches/server/0022-PlayerLoadStatsEvent.patch +++ b/patches/server/0020-PlayerLoadStatsEvent.patch @@ -5,10 +5,10 @@ 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 a42a47b112a154f1cbfaad6d1c8bd3a8d6007a58..1b1a77cc0925245d58e2a33d5e25918de24b630e 100644 +index 998e8a79ba88cb8dc421b890f86aff7cff730480..8bc84bdc1f66bc9933cd96c9e3cb230e89269ff5 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1458,7 +1458,7 @@ public abstract class PlayerList { +@@ -1465,7 +1465,7 @@ public abstract class PlayerList { } } diff --git a/patches/server/0023-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch b/patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch similarity index 68% rename from patches/server/0023-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch rename to patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch index f0af3dfeb..7e16660a9 100644 --- a/patches/server/0023-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch +++ b/patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch @@ -5,24 +5,25 @@ 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 a144f9a911297891645f704c361e1d8ba0e28a69..a3f47872173eb9798b263c419e87b0adedcc4e25 100644 +index 58152160d609d0e9d105153aeb166a56a7955603..5d52d8821edc8dd2cac3391081a223811297faf8 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1276,10 +1276,11 @@ public abstract class Player extends LivingEntity { +@@ -1277,10 +1277,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 - conflict 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 - conflict on change // Slice - flag2 = flag2 && !level.paperConfig().entities.behavior.disablePlayerCrits; // Paper +- flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - flag2 = flag2 && !this.isSprinting(); ++ flag2 = flag2 && !level().paperConfig().entities.behavior.disablePlayerCrits; // Paper + flag2 = forceCrit || (flag2 && !this.isSprinting()); // Slice if (flag2) { f *= 1.5F; } -@@ -2394,27 +2395,6 @@ public abstract class Player extends LivingEntity { +@@ -2411,27 +2412,6 @@ public abstract class Player extends LivingEntity { this.lastDeathLocation = lastDeathPos; } diff --git a/patches/server/0024-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch b/patches/server/0022-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch similarity index 88% rename from patches/server/0024-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch rename to patches/server/0022-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch index 9f33c514e..577d07530 100644 --- a/patches/server/0024-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch +++ b/patches/server/0022-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch @@ -5,10 +5,10 @@ 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 a3f47872173eb9798b263c419e87b0adedcc4e25..28125492ceed99b244c5e177edb6739a9c2d68d9 100644 +index 5d52d8821edc8dd2cac3391081a223811297faf8..38e110a226aac27d86dfe89bc0e9ecaada6ff268 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1268,7 +1268,11 @@ public abstract class Player extends LivingEntity { +@@ -1269,7 +1269,11 @@ public abstract class Player extends LivingEntity { boolean flag = f2 > 0.9F; boolean flag1 = false; byte b0 = 0; diff --git a/patches/server/0026-noEntityCollisions-for-Entity.patch b/patches/server/0024-noEntityCollisions-for-Entity.patch similarity index 91% rename from patches/server/0026-noEntityCollisions-for-Entity.patch rename to patches/server/0024-noEntityCollisions-for-Entity.patch index 8cd5af0e2..76aecd1a9 100644 --- a/patches/server/0026-noEntityCollisions-for-Entity.patch +++ b/patches/server/0024-noEntityCollisions-for-Entity.patch @@ -18,10 +18,10 @@ index a87f6380b2c387fb0cdd40d5087b5c93492e3c88..cd35c2136a638c07fed683a2f92e70aa } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 53f33b19277cdfd364b84362475a72f8d1a3cd60..66bcacfafe25f2543d40eb959ef251da400a2c73 100644 +index 05b60a115c3bc9c34fd01a2ed199e152b57044b1..e6c16982b50754bae5a31a193c95ef616b735967 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -436,6 +436,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -440,6 +440,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { * Overriding this field will cause memory leaks. */ private final boolean hardCollides; diff --git a/patches/server/0027-Do-not-freeze-MappedRegistry.patch b/patches/server/0025-Do-not-freeze-MappedRegistry.patch similarity index 100% rename from patches/server/0027-Do-not-freeze-MappedRegistry.patch rename to patches/server/0025-Do-not-freeze-MappedRegistry.patch diff --git a/patches/server/0025-Player-specific-target-chunk-send-rate.patch b/patches/server/0025-Player-specific-target-chunk-send-rate.patch deleted file mode 100644 index 7f08beb01..000000000 --- a/patches/server/0025-Player-specific-target-chunk-send-rate.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Cryptite -Date: Tue, 25 Apr 2023 08:20:19 -0500 -Subject: [PATCH] Player specific target chunk send rate - - -diff --git a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java -index 5b32567bcf532994a31f184743cf42f4ea0113a4..cf2656a4290bbf57d8a911eee4b94af4dea44637 100644 ---- a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java -+++ b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java -@@ -386,8 +386,8 @@ public final class PlayerChunkLoader { - return (int)Math.ceil(Math.min(config * MinecraftServer.getServer().getPlayerCount(), max <= 1.0 ? Double.MAX_VALUE : max)); - } - -- protected long getTargetSendPerPlayerAddend() { -- return GlobalConfiguration.get().chunkLoading.targetPlayerChunkSendRate <= 1.0 ? 0L : (long)Math.round(1.0e9 / GlobalConfiguration.get().chunkLoading.targetPlayerChunkSendRate); -+ protected long getTargetSendPerPlayerAddend(ServerPlayer player) { // Slice -+ return player.targetChunkSendRate <= 1.0 ? 0L : (long)Math.round(1.0e9 / player.targetChunkSendRate); // Slice - } - - protected long getMaxSendAddend() { -@@ -541,7 +541,6 @@ public final class PlayerChunkLoader { - } - - final int maxSends = this.getMaxConcurrentChunkSends(); -- final long nextPlayerDeadline = this.getTargetSendPerPlayerAddend() + time; - for (;;) { - if (this.chunkSendQueue.isEmpty()) { - break; -@@ -574,7 +573,7 @@ public final class PlayerChunkLoader { - throw new IllegalStateException(); - } - -- data.nextChunkSendTarget = nextPlayerDeadline; -+ data.nextChunkSendTarget = this.getTargetSendPerPlayerAddend(data.player) + time; // Slice - this.chunkSendWaitQueue.add(data); - - synchronized (this.sendingChunkCounts) { -diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 35d24300f72cdd68d46db7c880ab17eec95fae68..e7ef3882461344cfd1c53ac03de9ef1991378623 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayer.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -278,6 +278,7 @@ public class ServerPlayer extends Player { - public PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - 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 boolean smoothWorldTeleport; // Slice -+ public double targetChunkSendRate = io.papermc.paper.configuration.GlobalConfiguration.get().chunkLoading.targetPlayerChunkSendRate; // Slice - - public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) { - super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); diff --git a/patches/server/0028-Add-Entry-ctor-to-ClientboundPlayerInfoUpdatePacket.patch b/patches/server/0026-Add-Entry-ctor-to-ClientboundPlayerInfoUpdatePacket.patch similarity index 100% rename from patches/server/0028-Add-Entry-ctor-to-ClientboundPlayerInfoUpdatePacket.patch rename to patches/server/0026-Add-Entry-ctor-to-ClientboundPlayerInfoUpdatePacket.patch diff --git a/patches/server/0029-Add-jackson.patch b/patches/server/0027-Add-jackson.patch similarity index 89% rename from patches/server/0029-Add-jackson.patch rename to patches/server/0027-Add-jackson.patch index d2f5b87b6..da3d93cbf 100644 --- a/patches/server/0029-Add-jackson.patch +++ b/patches/server/0027-Add-jackson.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add jackson diff --git a/build.gradle.kts b/build.gradle.kts -index 1c7c148feb1785839b9dad0aa8477a52a2e12b3c..d21acd988d623f4dea90250ea1a729af3cc908e7 100644 +index 9387d8fdb70e882104155abb284cba129d20585e..9342475e878978af75d7ea7aa125acfbe40bc28c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,6 +13,13 @@ dependencies { diff --git a/patches/server/0030-Maybe-can-t-tostring.patch b/patches/server/0028-Maybe-can-t-tostring.patch similarity index 93% rename from patches/server/0030-Maybe-can-t-tostring.patch rename to patches/server/0028-Maybe-can-t-tostring.patch index 1588db8d5..3a04071a8 100644 --- a/patches/server/0030-Maybe-can-t-tostring.patch +++ b/patches/server/0028-Maybe-can-t-tostring.patch @@ -19,10 +19,10 @@ index 7e94ebe06fc62293e665d6db19e42d947e7eb30f..158c012b8a6808ca0f820c2997af2825 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 588a4fdcb294b9b1a92ef9969ef64f999bf529cc..431ea53e4fb9c26c24003da7e216a1f5fe070985 100644 +index 79ce85f7f3471bab9bd647848836670c3de38a9a..947a4f20b5fc4ef9bdd8d50a2d6d457e5d7c5ed8 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -719,7 +719,11 @@ public final class ItemStack { +@@ -731,7 +731,11 @@ public final class ItemStack { itemstack.setPopTime(this.getPopTime()); if (this.tag != null) { diff --git a/patches/server/0031-Allow-inventory-clicks-in-Spectator.patch b/patches/server/0029-Allow-inventory-clicks-in-Spectator.patch similarity index 88% rename from patches/server/0031-Allow-inventory-clicks-in-Spectator.patch rename to patches/server/0029-Allow-inventory-clicks-in-Spectator.patch index d0b538489..a89d29542 100644 --- a/patches/server/0031-Allow-inventory-clicks-in-Spectator.patch +++ b/patches/server/0029-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 aa287d7f37f38d938d195114408cb6dbda59063d..76395ad7d42058705bd100b5ef57598ed6ca492c 100644 +index ae82ab0e3d8e99f87ca8465fbcbb44b5ce18bf96..35b2907b780a768b0fe62666e4be2a6f8daeec58 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2968,7 +2968,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2966,7 +2966,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic 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/0032-Packet-obfuscation-and-reduction.patch b/patches/server/0030-Packet-obfuscation-and-reduction.patch similarity index 88% rename from patches/server/0032-Packet-obfuscation-and-reduction.patch rename to patches/server/0030-Packet-obfuscation-and-reduction.patch index de308512a..14aed3430 100644 --- a/patches/server/0032-Packet-obfuscation-and-reduction.patch +++ b/patches/server/0030-Packet-obfuscation-and-reduction.patch @@ -5,10 +5,10 @@ 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 ff7ba7a161cfed7521354bc6e3f21ba0f17f3760..b5f4af655fdc6a9150802254811ed743cc61074c 100644 +index bf6a70a69bb695ec1a202cd1e863c468329f80fc..7af1c0bc7f458f766e3f67a5caa8ec9626b17735 100644 --- a/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java +++ b/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java -@@ -139,15 +139,29 @@ public class SynchedEntityData { +@@ -143,15 +143,29 @@ public class SynchedEntityData { } public void set(EntityDataAccessor key, T value, boolean force) { @@ -39,7 +39,7 @@ index ff7ba7a161cfed7521354bc6e3f21ba0f17f3760..b5f4af655fdc6a9150802254811ed743 } // CraftBukkit start - add method from above -@@ -189,6 +203,26 @@ public class SynchedEntityData { +@@ -193,6 +207,26 @@ public class SynchedEntityData { return list; } @@ -66,7 +66,7 @@ index ff7ba7a161cfed7521354bc6e3f21ba0f17f3760..b5f4af655fdc6a9150802254811ed743 @Nullable public List> getNonDefaultValues() { List> list = null; -@@ -296,11 +330,14 @@ public class SynchedEntityData { +@@ -300,11 +334,14 @@ public class SynchedEntityData { T value; private final T initialValue; private boolean dirty; @@ -81,7 +81,7 @@ index ff7ba7a161cfed7521354bc6e3f21ba0f17f3760..b5f4af655fdc6a9150802254811ed743 } public EntityDataAccessor getAccessor() { -@@ -330,6 +367,35 @@ public class SynchedEntityData { +@@ -334,6 +371,35 @@ public class SynchedEntityData { public SynchedEntityData.DataValue value() { return SynchedEntityData.DataValue.create(this.accessor, this.value); } @@ -118,10 +118,10 @@ index ff7ba7a161cfed7521354bc6e3f21ba0f17f3760..b5f4af655fdc6a9150802254811ed743 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 d86836541f5eaa654d3dc452fe7cc15eafff4dfa..5de01ea9b5bd6d4d67024cd045a68a730365a6fa 100644 +index 6670e657e08e130f7e0368f418379fd1ece00cdf..a3cff8bcc0e390865563c97c95f4e28e99a83948 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -378,7 +378,20 @@ public class ServerEntity { +@@ -380,7 +380,20 @@ public class ServerEntity { if (list != null) { this.trackedDataValues = datawatcher.getNonDefaultValues(); @@ -144,10 +144,10 @@ index d86836541f5eaa654d3dc452fe7cc15eafff4dfa..5de01ea9b5bd6d4d67024cd045a68a73 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 66bcacfafe25f2543d40eb959ef251da400a2c73..94a3d39f9802be7b71adf378985f132fd7f5c0fd 100644 +index e6c16982b50754bae5a31a193c95ef616b735967..aee2375bd72f3ab7f237132a05aada1eba708252 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3151,7 +3151,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3275,7 +3275,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.entityData.markDirty(Entity.DATA_AIR_SUPPLY_ID); return; } @@ -157,10 +157,10 @@ index 66bcacfafe25f2543d40eb959ef251da400a2c73..94a3d39f9802be7b71adf378985f132f } 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 28125492ceed99b244c5e177edb6739a9c2d68d9..8821d57e1f111fb4528d7645ba635c7d8687c8a9 100644 +index 38e110a226aac27d86dfe89bc0e9ecaada6ff268..15515e871c89498ec936ab24871741f883f18a3b 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -641,7 +641,7 @@ public abstract class Player extends LivingEntity { +@@ -643,7 +643,7 @@ public abstract class Player extends LivingEntity { public void increaseScore(int score) { int j = this.getScore(); @@ -170,10 +170,10 @@ index 28125492ceed99b244c5e177edb6739a9c2d68d9..8821d57e1f111fb4528d7645ba635c7d 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 1b58330a0eff27eb920a37dad0b436049fe0bce6..4ae992fd174135eda153015236c6a3b884af3dd8 100644 +index baccc49316bc3763add517650d364c908bf410b0..8b539beb563ef0d402e3d93fe9317cb386b65f53 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2515,7 +2515,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2492,7 +2492,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.sendHealthUpdate(); } } diff --git a/patches/server/0033-Long-distance-tracking.patch b/patches/server/0031-Long-distance-tracking.patch similarity index 68% rename from patches/server/0033-Long-distance-tracking.patch rename to patches/server/0031-Long-distance-tracking.patch index fcf946760..c08be8a2e 100644 --- a/patches/server/0033-Long-distance-tracking.patch +++ b/patches/server/0031-Long-distance-tracking.patch @@ -5,28 +5,19 @@ 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 67a8b0145e4ed096b4fc520202098b9b1d259bd6..47b500930645d8704f78d65e5dd6f148b08f8cb7 100644 +index 4321789e9222350266ea0830473861e2f5fd75ad..6245bbc5745787b835b9b3a89da088ee01d4d706 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1612,7 +1612,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - double vec3d_dx = player.getX() - this.entity.getX(); - double vec3d_dz = player.getZ() - this.entity.getZ(); +@@ -1532,6 +1532,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper end - remove allocation of Vec3D here -- double d0 = (double) Math.min(this.getEffectiveRange(), io.papermc.paper.chunk.PlayerChunkLoader.getSendViewDistance(player) * 16); // Paper - per player view distance -+ // Slice start -+ double d0 = io.papermc.paper.chunk.PlayerChunkLoader.getSendViewDistance(player) * 16; -+ if (this.entity instanceof ServerPlayer serverPlayer && player.canSeeFromLongDistance(serverPlayer)) { -+ d0 = Math.min(level.spigotConfig.flyingPlayerTrackingRange, d0); -+ } -+ else { -+ d0 = Math.min(this.getEffectiveRange(), d0); // Paper - per player view distance -+ } -+ // Slice end + Vec3 vec3d = player.position().subtract(this.entity.position()); + double d0 = (double) Math.min(this.getEffectiveRange(), io.papermc.paper.chunk.system.ChunkSystem.getSendViewDistance(player) * 16); // Paper - per player view distance ++ if (this.entity instanceof ServerPlayer serverPlayer && player.canSeeFromLongDistance(serverPlayer)) d0 = Math.min(level.spigotConfig.flyingPlayerTrackingRange, d0); // Slice double d1 = vec3d_dx * vec3d_dx + vec3d_dz * vec3d_dz; // Paper double d2 = d0 * d0; boolean flag = d1 <= d2 && this.entity.broadcastToPlayer(player); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index e7ef3882461344cfd1c53ac03de9ef1991378623..b043273a532ae994cca56f4516c3ba12f30b9495 100644 +index 66bedc539847f3bbe6f735898f53c1ea6f01a263..04b2c211db26ac851d5fdf3fb1277c8e1b4e4216 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -278,6 +278,7 @@ public class ServerPlayer extends Player { @@ -36,8 +27,8 @@ index e7ef3882461344cfd1c53ac03de9ef1991378623..b043273a532ae994cca56f4516c3ba12 + public boolean hasLongDistanceTracking; // Slice public double targetChunkSendRate = io.papermc.paper.configuration.GlobalConfiguration.get().chunkLoading.targetPlayerChunkSendRate; // Slice - public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile) { -@@ -2566,4 +2567,18 @@ public class ServerPlayer extends Player { + 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)); +@@ -2651,4 +2652,18 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -57,10 +48,10 @@ index e7ef3882461344cfd1c53ac03de9ef1991378623..b043273a532ae994cca56f4516c3ba12 + // Slice end } diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java -index bbfafb1400721251dfd2cac4dd8a31be2d682d4b..ec2467432a0a3a285039e7ced36c9a5220a86849 100644 +index 5638290c72e0daeddfa79fd55e87334fa7d86f72..9f1daa3f9e8e04430a2329e9cbfa9f94ffc72c02 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java -@@ -269,6 +269,7 @@ public class SpigotWorldConfig +@@ -271,6 +271,7 @@ public class SpigotWorldConfig } public int playerTrackingRange = 48; @@ -68,7 +59,7 @@ index bbfafb1400721251dfd2cac4dd8a31be2d682d4b..ec2467432a0a3a285039e7ced36c9a52 public int animalTrackingRange = 48; public int monsterTrackingRange = 48; public int miscTrackingRange = 32; -@@ -277,6 +278,7 @@ public class SpigotWorldConfig +@@ -279,6 +280,7 @@ public class SpigotWorldConfig private void trackingRange() { this.playerTrackingRange = this.getInt( "entity-tracking-range.players", this.playerTrackingRange ); @@ -77,13 +68,13 @@ index bbfafb1400721251dfd2cac4dd8a31be2d682d4b..ec2467432a0a3a285039e7ced36c9a52 this.monsterTrackingRange = this.getInt( "entity-tracking-range.monsters", this.monsterTrackingRange ); this.miscTrackingRange = this.getInt( "entity-tracking-range.misc", this.miscTrackingRange ); diff --git a/src/main/java/org/spigotmc/TrackingRange.java b/src/main/java/org/spigotmc/TrackingRange.java -index 6ac5de214d0da921d0d0c822e7063f6738788cac..4a76e87188739b5fc1b3e0de0ded0d96def03176 100644 +index 8fca15099952626ee537f5ce3eefdfaa6518dc1b..1ddf149ce3d962905bec8c4562e4d86fbbe6e570 100644 --- a/src/main/java/org/spigotmc/TrackingRange.java +++ b/src/main/java/org/spigotmc/TrackingRange.java -@@ -27,9 +27,9 @@ public class TrackingRange +@@ -26,9 +26,9 @@ public class TrackingRange + return defaultRange; } - if (entity instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon) return defaultRange; // Paper - enderdragon is exempt - SpigotWorldConfig config = entity.level.spigotConfig; + SpigotWorldConfig config = entity.level().spigotConfig; - if ( entity instanceof ServerPlayer ) + if ( entity instanceof ServerPlayer serverPlayer) { diff --git a/patches/server/0032-Shared-Data-Storage.patch b/patches/server/0032-Shared-Data-Storage.patch new file mode 100644 index 000000000..e3110ba66 --- /dev/null +++ b/patches/server/0032-Shared-Data-Storage.patch @@ -0,0 +1,134 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Cryptite +Date: Mon, 12 Jun 2023 14:09:36 -0500 +Subject: [PATCH] Shared Data Storage + + +diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +index 77d05f7efdcdceef681a75692c208075d873d368..c40bd0fdbfa793c56071f1a5c2fd33da8393054f 100644 +--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java ++++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +@@ -271,6 +271,7 @@ public class GlobalConfiguration extends ConfigurationPart { + public boolean lagCompensateBlockBreaking = true; + public boolean useDimensionTypeForCustomSpawners = false; + public boolean strictAdvancementDimensionCheck = false; ++ public String sharedDataFolder = ""; + } + + public ChunkLoadingBasic chunkLoadingBasic; +diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java +index 53188d488936c0ab97ed5dea558831c8ced4cd0d..3020deeb43a43522af53dce1330d7c7c25e5305d 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; + + import com.google.common.base.Preconditions; + import com.google.common.base.Splitter; ++import com.google.common.base.Strings; + import com.google.common.collect.ImmutableList; + import co.aikar.timings.Timings; + import com.destroystokyo.paper.event.server.PaperServerListPingEvent; +@@ -313,6 +314,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { + AtomicReference atomicreference = new AtomicReference(); +@@ -413,6 +415,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { ++ return (MapItemSavedData) this.getServer().getMapDataStorage().get((nbttagcompound) -> { // Slice + // We only get here when the data file exists, but is not a valid map + MapItemSavedData newMap = MapItemSavedData.load(nbttagcompound); + newMap.id = id; +@@ -2082,12 +2082,22 @@ public class ServerLevel extends Level implements WorldGenLevel { + @Override + public void setMapData(String id, MapItemSavedData state) { + state.id = id; // CraftBukkit +- this.getServer().overworld().getDataStorage().set(id, state); ++ this.getServer().getMapDataStorage().set(id, state); // Slice + } + + @Override + public int getFreeMapId() { +- return ((MapIndex) this.getServer().overworld().getDataStorage().computeIfAbsent(MapIndex::load, MapIndex::new, "idcounts")).getFreeAuxValueForMap(); ++ // Slice start ++ DimensionDataStorage storage = this.getServer().getMapDataStorage(); ++ MapIndex mapIndex = storage.readSavedData(MapIndex::load, "idcounts"); ++ if (mapIndex == null) { ++ mapIndex = new MapIndex(); ++ } ++ int newId = mapIndex.getFreeAuxValueForMap(); ++ storage.set("idcounts", mapIndex); ++ storage.save(); ++ return newId; ++ // Slice end + } + + // Paper start - helper function for configurable spawn radius +diff --git a/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java b/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java +index defe31a5d3aa89a3d18b94f2ff005594e38754b3..637a86e74d633901fdd2f2f1ba6aa4ed49780ead 100644 +--- a/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java ++++ b/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java +@@ -58,7 +58,7 @@ public class DimensionDataStorage { + } + + @Nullable +- private T readSavedData(Function readFunction, String id) { ++ public T readSavedData(Function readFunction, String id) { // Slice private -> public + try { + File file = this.getDataFile(id); + if (file.exists()) { diff --git a/patches/server/0021-Equipment-Packet-Caching.patch b/patches/server/0033-Equipment-Packet-Caching.patch similarity index 53% rename from patches/server/0021-Equipment-Packet-Caching.patch rename to patches/server/0033-Equipment-Packet-Caching.patch index 4eedb3b13..e61ad065b 100644 --- a/patches/server/0021-Equipment-Packet-Caching.patch +++ b/patches/server/0033-Equipment-Packet-Caching.patch @@ -1,20 +1,9 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Cryptite -Date: Tue, 18 Apr 2023 08:16:32 -0500 +Date: Mon, 12 Jun 2023 14:14:48 -0500 Subject: [PATCH] Equipment Packet Caching -diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -index 8d442c5a498ecf288a0cc0c54889c6e2fda849ce..1530d48a67ae548fd088edd3d575a1b8f694eb48 100644 ---- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -@@ -286,5 +286,6 @@ public class GlobalConfiguration extends ConfigurationPart { - public boolean lagCompensateBlockBreaking = true; - public boolean useDimensionTypeForCustomSpawners = false; - public boolean strictAdvancementDimensionCheck = false; -+ public String sharedDataFolder = ""; - } - } diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetEquipmentPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundSetEquipmentPacket.java index 5a8f850b447fc3a4bd0eb0c505bbdfc8be7115e8..34d74735b7a7d258c6bd14bb7e5406934a208a31 100644 --- a/src/main/java/net/minecraft/network/protocol/game/ClientboundSetEquipmentPacket.java @@ -35,77 +24,12 @@ index 5a8f850b447fc3a4bd0eb0c505bbdfc8be7115e8..34d74735b7a7d258c6bd14bb7e540693 public ClientboundSetEquipmentPacket(FriendlyByteBuf buf) { this.entity = buf.readVarInt(); EquipmentSlot[] equipmentSlots = EquipmentSlot.values(); -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index fa14ab3d8117e9d357380d21d3c6a2cd1df7c04c..e5462d8d3f89c93c7c691a4759860be1ff8117fc 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; - - import com.google.common.base.Preconditions; - import com.google.common.base.Splitter; -+import com.google.common.base.Strings; - import com.google.common.collect.ImmutableList; - import co.aikar.timings.Timings; - import com.destroystokyo.paper.event.server.PaperServerListPingEvent; -@@ -313,6 +314,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { - AtomicReference atomicreference = new AtomicReference(); -@@ -413,6 +415,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { -+ return (MapItemSavedData) this.getServer().getMapDataStorage().get((nbttagcompound) -> { // Slice - // We only get here when the data file exists, but is not a valid map - MapItemSavedData newMap = MapItemSavedData.load(nbttagcompound); - newMap.id = id; -@@ -1940,12 +1940,22 @@ public class ServerLevel extends Level implements WorldGenLevel { - @Override - public void setMapData(String id, MapItemSavedData state) { - state.id = id; // CraftBukkit -- this.getServer().overworld().getDataStorage().set(id, state); -+ this.getServer().getMapDataStorage().set(id, state); // Slice - } - - @Override - public int getFreeMapId() { -- return ((MapIndex) this.getServer().overworld().getDataStorage().computeIfAbsent(MapIndex::load, MapIndex::new, "idcounts")).getFreeAuxValueForMap(); -+ // Slice start -+ DimensionDataStorage storage = this.getServer().getMapDataStorage(); -+ MapIndex mapIndex = storage.readSavedData(MapIndex::load, "idcounts"); -+ if (mapIndex == null) { -+ mapIndex = new MapIndex(); -+ } -+ int newId = mapIndex.getFreeAuxValueForMap(); -+ storage.set("idcounts", mapIndex); -+ storage.save(); -+ return newId; -+ // Slice end - } - - // Paper start - helper function for configurable spawn radius diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 72739d5949314b242869fd5fef3b5f0c076434d0..8fad6542fa814a6d35a90970119c88d054b5cd3f 100644 +index e422d8352f6f7dda8fb7ae8f51ebd5ec2e116115..de88a8ba2e8308103ac0c5facbc428e443314b15 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -261,6 +261,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -264,6 +264,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 @@ -185,7 +71,7 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..8fad6542fa814a6d35a90970119c88d0 @Override public float getBukkitYaw() { -@@ -3040,6 +3042,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3078,6 +3080,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (map != null) { this.handleHandSwap(map); if (!map.isEmpty()) { @@ -193,20 +79,20 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..8fad6542fa814a6d35a90970119c88d0 this.handleEquipmentChanges(map); } } -@@ -3132,7 +3135,25 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3170,7 +3173,25 @@ public abstract class LivingEntity extends Entity implements Attackable { } }); -- ((ServerLevel) this.level).getChunkSource().broadcast(this, new ClientboundSetEquipmentPacket(this.getId(), list)); +- ((ServerLevel) this.level()).getChunkSource().broadcast(this, new ClientboundSetEquipmentPacket(this.getId(), list)); + + // Slice start -+ net.minecraft.server.level.ChunkMap.TrackedEntity entityTracker = ((ServerLevel) this.level).getChunkSource().chunkMap.entityMap.get(getId()); ++ net.minecraft.server.level.ChunkMap.TrackedEntity entityTracker = ((ServerLevel) this.level()).getChunkSource().chunkMap.entityMap.get(getId()); + if (entityTracker != null) { + ClientboundSetEquipmentPacket packet = new ClientboundSetEquipmentPacket(this.getId(), list); + for (net.minecraft.server.network.ServerPlayerConnection playerConnection : entityTracker.seenBy) { + ServerPlayer player = playerConnection.getPlayer(); + org.bukkit.event.player.PlayerReceiveEquipmentEvent event = new org.bukkit.event.player.PlayerReceiveEquipmentEvent(player.getBukkitEntity(), getBukkitEntity()); -+ level.getCraftServer().getPluginManager().callEvent(event); ++ level().getCraftServer().getPluginManager().callEvent(event); + + String tag = event.getTag(); + if (tag != null) { @@ -220,7 +106,7 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..8fad6542fa814a6d35a90970119c88d0 } // Paper start - hide unnecessary item meta -@@ -4402,4 +4423,74 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4451,4 +4472,74 @@ public abstract class LivingEntity extends Entity implements Attackable { public static record Fallsounds(SoundEvent small, SoundEvent big) { } @@ -238,7 +124,7 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..8fad6542fa814a6d35a90970119c88d0 + } + + org.bukkit.event.entity.EntityEquipmentItemLookup event = new org.bukkit.event.entity.EntityEquipmentItemLookup(getBukkitEntity(), tag, org.bukkit.inventory.EquipmentSlot.valueOf(name), CraftItemStack.asBukkitCopy(i)); -+ this.level.getCraftServer().getPluginManager().callEvent(event); ++ this.level().getCraftServer().getPluginManager().callEvent(event); + org.bukkit.inventory.ItemStack eventItem = event.getItemStack(); + return CraftItemStack.asNMSCopy(eventItem); + }); @@ -248,7 +134,7 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..8fad6542fa814a6d35a90970119c88d0 + // Slice start + public void sendEquipment(java.util.function.Consumer> consumer, ServerPlayer p) { + org.bukkit.event.player.PlayerReceiveEquipmentEvent event = new org.bukkit.event.player.PlayerReceiveEquipmentEvent(p.getBukkitEntity(), getBukkitEntity()); -+ level.getCraftServer().getPluginManager().callEvent(event); ++ level().getCraftServer().getPluginManager().callEvent(event); + + boolean sendEquipment = !event.isCancelled(); + String tag = event.getTag(); @@ -295,21 +181,8 @@ index 72739d5949314b242869fd5fef3b5f0c076434d0..8fad6542fa814a6d35a90970119c88d0 + } + // Slice end } -diff --git a/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java b/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java -index defe31a5d3aa89a3d18b94f2ff005594e38754b3..637a86e74d633901fdd2f2f1ba6aa4ed49780ead 100644 ---- a/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java -+++ b/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java -@@ -58,7 +58,7 @@ public class DimensionDataStorage { - } - - @Nullable -- private T readSavedData(Function readFunction, String id) { -+ public T readSavedData(Function readFunction, String id) { // Slice private -> public - try { - File file = this.getDataFile(id); - if (file.exists()) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index d43859f8aa7beed82dd3a146bb1086982cd0cda7..7d063ab5a136eebeb84b395dcb7b731dadc53e88 100644 +index 42a4a45ece562d543cc4fab9d9e7c70573705f10..012f5d2dc1dae4128871e1bcfa107db65642f58a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1071,4 +1071,14 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {