diff --git a/build.gradle.kts b/build.gradle.kts index 9a667814d..abe997aab 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.5" + id("io.papermc.paperweight.patcher") version "1.5.6" } val paperMavenPublicUrl = "https://papermc.io/repo/repository/maven-public/" diff --git a/gradle.properties b/gradle.properties index f543ecb30..bee5d769e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group=com.lokamc.slice -version=1.20.1-R0.1-SNAPSHOT +version=1.20.2-R0.1-SNAPSHOT -mcVersion=1.20.1 -paperRef=29d1c7b60244bb002d29a5dcfc9c995019f550ab +mcVersion=1.20.2 +paperRef=02cfaa8ff81fed20f4c635d8ccf344083d938973 org.gradle.caching=true org.gradle.parallel=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e1bef7e87..db9a6b825 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/patches/api/0004-Add-provided-Material-to-getDrops.patch b/patches/api/0004-Add-provided-Material-to-getDrops.patch index 30e9021a0..44287eeb7 100644 --- a/patches/api/0004-Add-provided-Material-to-getDrops.patch +++ b/patches/api/0004-Add-provided-Material-to-getDrops.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Add provided Material to getDrops diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java -index 384e5700b6899850d91a34e1d13d1ca0678cfaaa..9c1aef68b1b6f4fddfa171f7189dda5619e758d6 100644 +index 93fcb1562e58a3a613eccd28cae1e87e26a158c9..66a6200a243034e6676ea707fc53e5330994bca1 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -666,6 +666,20 @@ public interface Block extends Metadatable, Translatable, net.kyori.adventure.tr @NotNull - Collection getDrops(@NotNull ItemStack tool, @Nullable Entity entity); + Collection getDrops(@Nullable ItemStack tool, @Nullable Entity entity); // Paper + // Slice start + /** diff --git a/patches/api/0010-Smooth-Teleports.patch b/patches/api/0010-Smooth-Teleports.patch index a1f8dfe44..45a5319e3 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 f9dd00210c1762a40259f823aeb8d8a5ddc78e3e..bb0c49ed971d71904b9172cac2e724133754f32c 100644 +index 20fa1024f9ad8f478a347be5c554b5e45b398a1c..d422017c54d49a5a6aaa5226162cb152c20183a9 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3153,6 +3153,19 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -3160,6 +3160,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 57770ecde..4d2889307 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 bb0c49ed971d71904b9172cac2e724133754f32c..8fc53e32d09f1678d59da0d01f28b6ef96527011 100644 +index d422017c54d49a5a6aaa5226162cb152c20183a9..702a1b611bb107ea134830446ee748ebf6328bca 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -2950,6 +2950,10 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -2952,6 +2952,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 0d7c38dec..7816d93a6 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 fb98936bb8a5488db75d676c5bcb4060597fbbf8..2e1cea360bb6ff85eb8da54237bc407653eb91f6 100644 +index c187641f0ec6444a10e0e1583e1697d07e8f0267..566ff8fa0b8791bbac886b1ea09ef5043d0665bb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,8 +13,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { @@ -32,7 +32,7 @@ index fb98936bb8a5488db75d676c5bcb4060597fbbf8..2e1cea360bb6ff85eb8da54237bc4076 "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -149,7 +153,7 @@ fun TaskContainer.registerRunTask( +@@ -156,7 +160,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -42,10 +42,10 @@ index fb98936bb8a5488db75d676c5bcb4060597fbbf8..2e1cea360bb6ff85eb8da54237bc4076 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 67ee3a4ca8a6cdeb275653d492a1fea8037c51fb..915340fedc6c0b3d70ee065482dbe621b7c0b0a8 100644 +index 97745f0bab8d82d397c6c2a5775aed92bca0a034..6684f4f4b9aff1c2f3037feb7bcdee55a9d21f93 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1692,7 +1692,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getDimensionKey(DimensionType manager) { -@@ -748,6 +769,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1053,6 +1074,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { if (!this.preventPoiUpdated) { this.onBlockStateChange(blockposition, iblockdata1, iblockdata2); } @@ -76,7 +76,7 @@ index c7ee934d4f890bc86596d36079ffed5050133b47..1d17c6471449fe4f4fd2bae6bc8a9c50 // CraftBukkit end } } -@@ -769,6 +791,17 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1074,6 +1096,17 @@ public abstract class Level implements LevelAccessor, AutoCloseable { if (iblockdata.isAir()) { return false; } else { @@ -115,10 +115,10 @@ index 030b38d5d5d2578d6ef482a239ef58787efa3b08..329053cf5c342747985f9079e87edc6f 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 de4c1e4701236e7d5ec77339c51ad6a9d8288bb6..4beb56de55d5584ce7f6e04ae30f7c3cffc1440e 100644 +index e6a4a5898ffdcb2aa2bc01371a6d7dbc06d610ce..204f0cd86a318efb3545a24c0e25a2f9cb7b9f58 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 -@@ -1127,11 +1127,22 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -1175,11 +1175,22 @@ public abstract class BlockBehaviour implements FeatureElement { BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); Direction[] aenumdirection = BlockBehaviour.UPDATE_SHAPE_ORDER; int k = aenumdirection.length; diff --git a/patches/server/0004-Add-provided-Material-to-getDrops.patch b/patches/server/0004-Add-provided-Material-to-getDrops.patch index 351c87b8f..11f6b9fe5 100644 --- a/patches/server/0004-Add-provided-Material-to-getDrops.patch +++ b/patches/server/0004-Add-provided-Material-to-getDrops.patch @@ -5,10 +5,10 @@ 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 243b5823ea99eefd812134b5c80d4d3c9f008499..ee97b4352fcdb3fd55eeb5a4a57981b2f0aed28b 100644 +index cb2826852ea38850eb0c553ab3b626253fd8e7a2..a65f1362bcdb064f3213830e9c9c7f9966ce4623 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -@@ -616,7 +616,18 @@ public class CraftBlock implements Block { +@@ -590,7 +590,18 @@ public class CraftBlock implements Block { @Override public Collection getDrops(ItemStack item, Entity entity) { @@ -28,7 +28,7 @@ index 243b5823ea99eefd812134b5c80d4d3c9f008499..ee97b4352fcdb3fd55eeb5a4a57981b2 net.minecraft.world.item.ItemStack nms = CraftItemStack.asNMSCopy(item); // Modelled off EntityHuman#hasBlock -@@ -627,6 +638,7 @@ public class CraftBlock implements Block { +@@ -601,6 +612,7 @@ public class CraftBlock implements Block { return Collections.emptyList(); } } diff --git a/patches/server/0005-Add-Player-to-SpongeAbsorbEvent.patch b/patches/server/0005-Add-Player-to-SpongeAbsorbEvent.patch index 69792057d..48813dc2b 100644 --- a/patches/server/0005-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 4bce895268542531598a01a1bccd8ac1ed703b7d..8b552fc58a2909bced07eb743dd5d76c0357f9ab 100644 +index d810f6bf9a8a354e5b8994e51ec3672428277dde..b5eb4718a96ab9abf700a156a23ec3e19757c9aa 100644 --- a/src/main/java/net/minecraft/world/level/block/SpongeBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpongeBlock.java -@@ -104,7 +104,8 @@ public class SpongeBlock extends Block { +@@ -107,7 +107,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/0006-Add-World-Instance-flag.patch b/patches/server/0006-Add-World-Instance-flag.patch index 00a00782a..a5cd6e2ec 100644 --- a/patches/server/0006-Add-World-Instance-flag.patch +++ b/patches/server/0006-Add-World-Instance-flag.patch @@ -5,7 +5,7 @@ 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 18aac3da3c88f33b1a71a5920a8daa27e9723913..af0720fb8bd334aac5493121c6373d87421204b4 100644 +index 51d282b524b5249438f7744f7f0b1cc27b76470e..03e5981d62ff2e4bd81bccf0ab6d8373dfe661d2 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -222,6 +222,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -17,10 +17,10 @@ index 18aac3da3c88f33b1a71a5920a8daa27e9723913..af0720fb8bd334aac5493121c6373d87 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 1a481fb4f4228f0fea8a7dc6132248c98b727c90..836bdbf4a4742f0cce0f9612d694db03305c7a00 100644 +index 0e670de77a7f9926e295e1dd63d909bed1a959ca..92c0b18e5020f5193e060fbc4a0ceb4b72d55dcf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -1268,6 +1268,18 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1267,6 +1267,18 @@ public class CraftWorld extends CraftRegionAccessor implements World { world.noSave = !value; } diff --git a/patches/server/0007-Add-PlayerData-Events.patch b/patches/server/0007-Add-PlayerData-Events.patch index d0d0e8e57..93d7532f9 100644 --- a/patches/server/0007-Add-PlayerData-Events.patch +++ b/patches/server/0007-Add-PlayerData-Events.patch @@ -5,7 +5,7 @@ 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 df2a4449bdc00eb936bf219807d401fc99663926..939d29db3c535c45866fe67cabbe9304601230b0 100644 +index 1d32eb837517f2b949613498b1a68c8b1edf0b9a..a31ea11234da240e56bbfd14725dd76295c8f338 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayerGameMode.java @@ -602,6 +602,8 @@ public class ServerPlayerGameMode { @@ -18,10 +18,10 @@ index df2a4449bdc00eb936bf219807d401fc99663926..939d29db3c535c45866fe67cabbe9304 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 9501e5f25f5c4d3069e554d4dc82b0e094156682..8afd9b785fb8734255e3ea926b8375bb9cae60be 100644 +index 9bb8d4d7be6a937980aa653db82be084d066a563..9838435fbc31cfbba487d1e62ec5d2e70776517c 100644 --- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java +++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java -@@ -198,7 +198,12 @@ public class ServerStatsCounter extends StatsCounter { +@@ -199,7 +199,12 @@ public class ServerStatsCounter extends StatsCounter { return nbttagcompound; } @@ -35,7 +35,7 @@ index 9501e5f25f5c4d3069e554d4dc82b0e094156682..8afd9b785fb8734255e3ea926b8375bb Map, JsonObject> map = Maps.newHashMap(); ObjectIterator objectiterator = this.stats.object2IntEntrySet().iterator(); -@@ -224,7 +229,7 @@ public class ServerStatsCounter extends StatsCounter { +@@ -225,7 +230,7 @@ public class ServerStatsCounter extends StatsCounter { jsonobject1.add("stats", jsonobject); jsonobject1.addProperty("DataVersion", SharedConstants.getCurrentVersion().getDataVersion().getVersion()); diff --git a/patches/server/0008-Add-PlayerGetRespawnLocationEvent.patch b/patches/server/0008-Add-PlayerGetRespawnLocationEvent.patch index dfe954af7..2196cf724 100644 --- a/patches/server/0008-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 f097ec5b4e3ad6b1a7c464a8cff4f8b2568fcf4f..20a0b9835c47ca153a6f77dacf4b775de32e4ef2 100644 +index 48d1444fbad1c57738807d0128b94160a5a17a4d..1c2abe2fd63e535f8a8f73dfe4033dfdc7fabc1d 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -853,49 +853,57 @@ public abstract class PlayerList { +@@ -848,49 +848,57 @@ public abstract class PlayerList { // CraftBukkit start - fire PlayerRespawnEvent if (location == null) { diff --git a/patches/server/0010-Smooth-Teleports.patch b/patches/server/0010-Smooth-Teleports.patch index 6cd7cc820..d0acb8acb 100644 --- a/patches/server/0010-Smooth-Teleports.patch +++ b/patches/server/0010-Smooth-Teleports.patch @@ -5,41 +5,39 @@ 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 161c40692e8d469fad4169908b9353be0f85d0d8..2b93a37ee1f711c14140eb96f29dfdd3290641ad 100644 +index d4aec99cac3f83d764e21946cc904c00e084704e..4286c29a9b2a703f951159b1a407c3cd5bc4c5cc 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 { +@@ -273,6 +273,7 @@ public class ServerPlayer extends Player { public final com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet cachedSingleHashSet; // Paper 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 + // 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)); - 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 20a0b9835c47ca153a6f77dacf4b775de32e4ef2..97c6f1c622af02b3761b23a4d3a67b385e45ea84 100644 +index 1c2abe2fd63e535f8a8f73dfe4033dfdc7fabc1d..c09a652fdb2fd40935e03fb779652c57156cffee 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -935,12 +935,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(), 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())); +@@ -934,10 +934,10 @@ public abstract class PlayerList { + ServerLevel worldserver2 = entityplayer1.serverLevel(); + LevelData worlddata = worldserver2.getLevelData(); + +- entityplayer1.connection.send(new ClientboundRespawnPacket(entityplayer1.createCommonSpawnInfo(worldserver2), (byte) i)); ++ if (!entityplayer.smoothWorldTeleport) entityplayer1.connection.send(new ClientboundRespawnPacket(entityplayer1.createCommonSpawnInfo(worldserver2), (byte) i)); 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())); -+ if (!entityplayer.smoothWorldTeleport) entityplayer1.connection.teleport(CraftLocation.toBukkit(entityplayer1.position(), worldserver1.getWorld(), entityplayer1.getYRot(), entityplayer1.getXRot())); - entityplayer1.setShiftKeyDown(false); - - // entityplayer1.connection.teleport(entityplayer1.getX(), entityplayer1.getY(), entityplayer1.getZ(), entityplayer1.getYRot(), entityplayer1.getXRot()); +- entityplayer1.connection.teleport(CraftLocation.toBukkit(entityplayer1.position(), worldserver2.getWorld(), entityplayer1.getYRot(), entityplayer1.getXRot())); // CraftBukkit ++ if (!entityplayer.smoothWorldTeleport) entityplayer1.connection.teleport(CraftLocation.toBukkit(entityplayer1.position(), worldserver2.getWorld(), entityplayer1.getYRot(), entityplayer1.getXRot())); // CraftBukkit + entityplayer1.connection.send(new ClientboundSetDefaultSpawnPositionPacket(worldserver1.getSharedSpawnPos(), worldserver1.getSharedSpawnAngle())); + 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 4e6fea7cf11b1e29ae7c7098a6f5d06bb5f93cc2..767a33cdce4b438164bf4101ff39cd7b1e8f929e 100644 +index e188bb3ba5d2ec28421947c0b66b25eecb569bfe..7e5b0c9b1518ff871b400b88f14de61180645ef1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1254,6 +1254,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1256,6 +1256,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper end } diff --git a/patches/server/0011-Ignore-durability-changes-for-equipment-updates.patch b/patches/server/0011-Ignore-durability-changes-for-equipment-updates.patch index f324238ac..5d9fd2918 100644 --- a/patches/server/0011-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 e11d7283662834047b2ff81a2fd25a4263792deb..d0e49ae973a91344f3973dc6e00e7e6c649e87cb 100644 +index 77a1c7dfbaccc2e74da5c78ce4dfcd1717a7ac65..3ac315b664b36bf0a3934e6f944e8dd4e0e545cb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3127,7 +3127,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3164,7 +3164,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/0012-Disable-Azalea-generation.patch index 4a7652173..f6a15f331 100644 --- a/patches/server/0012-Disable-Azalea-generation.patch +++ b/patches/server/0012-Disable-Azalea-generation.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable Azalea generation diff --git a/src/main/java/net/minecraft/data/worldgen/BiomeDefaultFeatures.java b/src/main/java/net/minecraft/data/worldgen/BiomeDefaultFeatures.java -index 8f5178e934b5f9bc48beacd082e479fd9fb80fa6..d580238d733ba2dbbbbaa2659d1a7834c8cf7dac 100644 +index b9b7d2e668d9f7f36ac3cf1e1716460c4ad5ed3a..9fdd765b65777a1a82b54326bc7ad152416c617e 100644 --- a/src/main/java/net/minecraft/data/worldgen/BiomeDefaultFeatures.java +++ b/src/main/java/net/minecraft/data/worldgen/BiomeDefaultFeatures.java -@@ -161,7 +161,7 @@ public class BiomeDefaultFeatures { +@@ -162,7 +162,7 @@ public class BiomeDefaultFeatures { builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, CavePlacements.CAVE_VINES); builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, CavePlacements.LUSH_CAVES_CLAY); builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, CavePlacements.LUSH_CAVES_VEGETATION); diff --git a/patches/server/0013-AntiXray-Bypass.patch b/patches/server/0013-AntiXray-Bypass.patch index 62cba8625..4abbabe5e 100644 --- a/patches/server/0013-AntiXray-Bypass.patch +++ b/patches/server/0013-AntiXray-Bypass.patch @@ -17,10 +17,10 @@ index 42fdce97d99618a53f2e9c51804ff2205b574f69..7e8d58e3481be2d7ebbe5fe388d61932 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 767a33cdce4b438164bf4101ff39cd7b1e8f929e..0af1801085701437f06c9ecaf8864fe875e90509 100644 +index 7e5b0c9b1518ff871b400b88f14de61180645ef1..1b0b09a7507bd26254e7ac469829698ca7894070 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -196,6 +196,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -198,6 +198,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { private static final boolean DISABLE_CHANNEL_LIMIT = System.getProperty("paper.disableChannelLimit") != null; // Paper - add a flag to disable the channel limit private long lastSaveTime; // Paper end @@ -28,7 +28,7 @@ index 767a33cdce4b438164bf4101ff39cd7b1e8f929e..0af1801085701437f06c9ecaf8864fe8 public CraftPlayer(CraftServer server, ServerPlayer entity) { super(server, entity); -@@ -2827,6 +2828,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2843,6 +2844,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 index d523d6e76..30e1ef624 100644 --- a/patches/server/0014-Add-PlayerPreChunkLoadEvent.patch +++ b/patches/server/0014-Add-PlayerPreChunkLoadEvent.patch @@ -5,10 +5,10 @@ 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 924539d4ac50c70178ba220424ffacd6ff277c8b..f9b30f2904d06f2a7de6fa03287bc2e40e879e2d 100644 +index 1b090f1e79b996e52097afc49c1cec85936653e6..5185bcbf5363fa2c7e2b0226706cc66d46fa16ee 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 { +@@ -410,7 +410,7 @@ public class RegionizedPlayerChunkLoader { private boolean canGenerateChunks = true; private final ArrayDeque> delayedTicketOps = new ArrayDeque<>(); @@ -18,10 +18,10 @@ index 924539d4ac50c70178ba220424ffacd6ff277c8b..f9b30f2904d06f2a7de6fa03287bc2e4 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 836bdbf4a4742f0cce0f9612d694db03305c7a00..fb79e3ee663709538d6e322fd8401564dcbbe5a7 100644 +index 92c0b18e5020f5193e060fbc4a0ceb4b72d55dcf..5a9570963b16dd0fa888c4f06ca90f62b8cd3f0d 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -530,6 +530,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -529,6 +529,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { return true; } diff --git a/patches/server/0016-Don-t-send-fire-packets-if-player-has-FR.patch b/patches/server/0016-Don-t-send-fire-packets-if-player-has-FR.patch index d3de3cb81..8dee7ae4f 100644 --- a/patches/server/0016-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,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 e8485fb900b25e911a858678a833852731cb2ace..a0f8740c93fe86d4c49b9e43f1044ef03d8e3de7 100644 +index f20ae9153b7098980ce6c0e75fcbbb4da652661b..7960a2467cae9420f0da0eaad8dd428456362efe 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -868,7 +868,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -835,7 +835,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.checkBelowWorld(); if (!this.level().isClientSide) { diff --git a/patches/server/0017-Allow-access-to-LightEngine.patch b/patches/server/0017-Allow-access-to-LightEngine.patch index ec34be1e8..a3aef710b 100644 --- a/patches/server/0017-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 65d947df910d60f478e7a449eb161e5105e2c0c9..e08b72010f22ce680e88f443782bdfe6a46285f9 100644 +index 0c2617574e21037d94ac56ad08b490f9bca5c5af..df414c88a73a5f4eb1c19924a600a21bb0fff7c8 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -524,7 +524,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); +@@ -356,7 +356,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider + // Paper end - rewrite player chunk loader } - protected ThreadedLevelLightEngine getLightEngine() { diff --git a/patches/server/0020-PlayerLoadStatsEvent.patch b/patches/server/0020-PlayerLoadStatsEvent.patch index e690411ba..a0c3558cf 100644 --- a/patches/server/0020-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 97c6f1c622af02b3761b23a4d3a67b385e45ea84..7f059a71d25170e8e3215c7d91ab7927394cfeb5 100644 +index c09a652fdb2fd40935e03fb779652c57156cffee..c55a9a228fbb64680354b9ca308f973866bb53d5 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1474,7 +1474,7 @@ public abstract class PlayerList { +@@ -1468,7 +1468,7 @@ public abstract class PlayerList { } } @@ -18,10 +18,10 @@ index 97c6f1c622af02b3761b23a4d3a67b385e45ea84..7f059a71d25170e8e3215c7d91ab7927 } diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java -index 8afd9b785fb8734255e3ea926b8375bb9cae60be..9bd42eac43f068df8f7f49249bb47840d87d799a 100644 +index 9838435fbc31cfbba487d1e62ec5d2e70776517c..ef601d98e97a7e541cc855822ff46f9dd887435e 100644 --- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java +++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java -@@ -45,7 +45,7 @@ public class ServerStatsCounter extends StatsCounter { +@@ -45,10 +45,16 @@ public class ServerStatsCounter extends StatsCounter { private final File file; private final Set> dirty = Sets.newHashSet(); @@ -29,11 +29,6 @@ index 8afd9b785fb8734255e3ea926b8375bb9cae60be..9bd42eac43f068df8f7f49249bb47840 + public ServerStatsCounter(MinecraftServer server, File file, java.util.UUID uuid) { // Slice this.server = server; this.file = file; - // Spigot start -@@ -55,7 +55,13 @@ public class ServerStatsCounter extends StatsCounter { - this.stats.put( wrapper, entry.getValue().intValue() ); - } - // Spigot end - if (file.isFile()) { + // Slice start - If event supplies stats, use it. Otherwise just load from disk as usual + com.destroystokyo.paper.event.player.PlayerLoadStatsEvent event = new com.destroystokyo.paper.event.player.PlayerLoadStatsEvent(uuid); @@ -45,7 +40,7 @@ index 8afd9b785fb8734255e3ea926b8375bb9cae60be..9bd42eac43f068df8f7f49249bb47840 try { this.parseLocal(server.getFixerUpper(), FileUtils.readFileToString(file)); } catch (IOException ioexception) { -@@ -103,46 +109,8 @@ public class ServerStatsCounter extends StatsCounter { +@@ -104,46 +110,8 @@ public class ServerStatsCounter extends StatsCounter { if (!jsonelement.isJsonNull()) { CompoundTag nbttagcompound = ServerStatsCounter.fromJson(jsonelement.getAsJsonObject()); @@ -94,7 +89,7 @@ index 8afd9b785fb8734255e3ea926b8375bb9cae60be..9bd42eac43f068df8f7f49249bb47840 } ServerStatsCounter.LOGGER.error("Unable to parse Stat data from {}", this.file); -@@ -167,6 +135,48 @@ public class ServerStatsCounter extends StatsCounter { +@@ -168,6 +136,48 @@ public class ServerStatsCounter extends StatsCounter { } diff --git a/patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch b/patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch index 7e16660a9..913c8c9f2 100644 --- a/patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch +++ b/patches/server/0021-Add-Force-Crit-to-PlayerPreAttackEntityEvent.patch @@ -5,10 +5,10 @@ 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 58152160d609d0e9d105153aeb166a56a7955603..5d52d8821edc8dd2cac3391081a223811297faf8 100644 +index d58b4c0dbe651b5068212e5f14dce3164ee520f5..32d6615ea73c1c149049d16dfd1b395621ad634b 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1277,10 +1277,11 @@ public abstract class Player extends LivingEntity { +@@ -1283,10 +1283,11 @@ public abstract class Player extends LivingEntity { flag1 = true; } @@ -23,7 +23,7 @@ index 58152160d609d0e9d105153aeb166a56a7955603..5d52d8821edc8dd2cac3391081a22381 if (flag2) { f *= 1.5F; } -@@ -2411,27 +2412,6 @@ public abstract class Player extends LivingEntity { +@@ -2413,27 +2414,6 @@ public abstract class Player extends LivingEntity { this.lastDeathLocation = lastDeathPos; } diff --git a/patches/server/0022-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch b/patches/server/0022-Add-Preventing-KB-Bonus-to-PlayerPreAttackEntityEven.patch index 577d07530..9ef459d39 100644 --- a/patches/server/0022-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 5d52d8821edc8dd2cac3391081a223811297faf8..38e110a226aac27d86dfe89bc0e9ecaada6ff268 100644 +index 32d6615ea73c1c149049d16dfd1b395621ad634b..0325086157b846da7da0ca291fd33c55fc91f229 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1269,7 +1269,11 @@ public abstract class Player extends LivingEntity { +@@ -1275,7 +1275,11 @@ public abstract class Player extends LivingEntity { boolean flag = f2 > 0.9F; boolean flag1 = false; byte b0 = 0; diff --git a/patches/server/0023-noEntityCollisions-for-Entity.patch b/patches/server/0023-noEntityCollisions-for-Entity.patch index 31e6a0e06..11ed591c7 100644 --- a/patches/server/0023-noEntityCollisions-for-Entity.patch +++ b/patches/server/0023-noEntityCollisions-for-Entity.patch @@ -5,23 +5,22 @@ Subject: [PATCH] noEntityCollisions for Entity diff --git a/src/main/java/io/papermc/paper/util/CollisionUtil.java b/src/main/java/io/papermc/paper/util/CollisionUtil.java -index a87f6380b2c387fb0cdd40d5087b5c93492e3c88..cd35c2136a638c07fed683a2f92e70aa57bcfa8e 100644 +index bfb1de19f53d5d7c7b65e25a606fabfa416706b3..63262cc017b15b076f27143309b3e38c48289261 100644 --- a/src/main/java/io/papermc/paper/util/CollisionUtil.java +++ b/src/main/java/io/papermc/paper/util/CollisionUtil.java -@@ -809,7 +809,7 @@ public final class CollisionUtil { +@@ -1777,6 +1777,7 @@ public final class CollisionUtil { public static boolean getEntityHardCollisions(final CollisionGetter getter, final Entity entity, AABB aabb, - final List into, final boolean checkOnly, final Predicate predicate) { -- if (isEmpty(aabb) || !(getter instanceof EntityGetter entityGetter)) { -+ if ((entity != null && entity.noEntityCollisions) || isEmpty(aabb) || !(getter instanceof EntityGetter entityGetter)) { // Slice + final List into, final int collisionFlags, final Predicate predicate) { ++ if (entity != null && entity.noEntityCollisions) return false; // Slice + final boolean checkOnly = (collisionFlags & COLLISION_FLAG_CHECK_ONLY) != 0; + if (!(getter instanceof EntityGetter entityGetter)) { return false; - } - diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a0f8740c93fe86d4c49b9e43f1044ef03d8e3de7..6d6baa82bb7a67c3f6de4bdb0987e4d1f68b6ec8 100644 +index 7960a2467cae9420f0da0eaad8dd428456362efe..383c40f6f7ea7cbf6f88347ccb559f4c458fcc40 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -453,6 +453,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -452,6 +452,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/0024-Do-not-freeze-MappedRegistry.patch b/patches/server/0024-Do-not-freeze-MappedRegistry.patch index e4c341669..a10b5a8f0 100644 --- a/patches/server/0024-Do-not-freeze-MappedRegistry.patch +++ b/patches/server/0024-Do-not-freeze-MappedRegistry.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Do not freeze MappedRegistry diff --git a/src/main/java/net/minecraft/core/MappedRegistry.java b/src/main/java/net/minecraft/core/MappedRegistry.java -index 1e33434f9f361542e03da3e4812bc6d76768a202..828d9472bf90fe098825c15bc55949497a40ae39 100644 +index 26b92e27de1f079ab8440538c65377ed80e8b6ef..2a52ba73849b3f1f86ab4a5c41fcaf65ad452e41 100644 --- a/src/main/java/net/minecraft/core/MappedRegistry.java +++ b/src/main/java/net/minecraft/core/MappedRegistry.java -@@ -338,7 +338,7 @@ public class MappedRegistry implements WritableRegistry { +@@ -337,7 +337,7 @@ public class MappedRegistry implements WritableRegistry { if (this.frozen) { return this; } else { @@ -17,7 +17,7 @@ index 1e33434f9f361542e03da3e4812bc6d76768a202..828d9472bf90fe098825c15bc5594949 this.byValue.forEach((value, entry) -> { entry.bindValue(value); }); -@@ -365,14 +365,16 @@ public class MappedRegistry implements WritableRegistry { +@@ -364,14 +364,16 @@ public class MappedRegistry implements WritableRegistry { @Override public Holder.Reference createIntrusiveHolder(T value) { diff --git a/patches/server/0026-Maybe-can-t-tostring.patch b/patches/server/0026-Maybe-can-t-tostring.patch index 415007e85..edac1b435 100644 --- a/patches/server/0026-Maybe-can-t-tostring.patch +++ b/patches/server/0026-Maybe-can-t-tostring.patch @@ -5,10 +5,10 @@ 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 7e94ebe06fc62293e665d6db19e42d947e7eb30f..158c012b8a6808ca0f820c2997af282529148c7c 100644 +index 84fc2adf591f02a14862f7c1cd645c2efde55c3d..f088d316aac7626204cff330f90468d89ac3581b 100644 --- a/src/main/java/net/minecraft/nbt/CompoundTag.java +++ b/src/main/java/net/minecraft/nbt/CompoundTag.java -@@ -466,6 +466,9 @@ public class CompoundTag implements Tag { +@@ -503,6 +503,9 @@ public class CompoundTag implements Tag { @Override public CompoundTag copy() { // Paper start - reduce memory footprint of NBTTagCompound @@ -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 2b3b1c5ccdf58ee9b46d404cfa3790d0fdc2df3d..b31f21e2d9faa00174bbcbbd1e0cf1b22c8b69d4 100644 +index e30aaa502f5e98b5658a0dd78853e865cbf91f96..c9cd6d3a3678ec38fbfb9ca3975d2ddbe2ce2881 100644 --- a/src/main/java/net/minecraft/world/item/ItemStack.java +++ b/src/main/java/net/minecraft/world/item/ItemStack.java -@@ -736,7 +736,11 @@ public final class ItemStack { +@@ -742,7 +742,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/0027-Allow-inventory-clicks-in-Spectator.patch index d1c9d214c..73043b9a4 100644 --- a/patches/server/0027-Allow-inventory-clicks-in-Spectator.patch +++ b/patches/server/0027-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 3c0651fa5a5db880202c9a3805a6455269c5f16d..42e61e55ef45935e1f690eefa56bc36842cdd974 100644 +index 8bd243a8d5a4be54f907af2b02e96ea833cee62f..e93738332eaef720abb303b382f902c95aa87d72 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3030,7 +3030,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic +@@ -2873,7 +2873,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/0028-Packet-obfuscation-and-reduction.patch index 3bc2ab77c..3e99e4fa4 100644 --- a/patches/server/0028-Packet-obfuscation-and-reduction.patch +++ b/patches/server/0028-Packet-obfuscation-and-reduction.patch @@ -118,10 +118,10 @@ index 5dfb35117c285e0b202dc9c088ad5848beb8d054..b3d2cbf9f60c4a4b34df20bfe45a80ac 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 196280f54e397c69d32bd4d1f6ae666efdd93773..a514a1f26e439b5959093488ec9905fec327a404 100644 +index 35674f92a67f93382103c2766df4b678ba5c862f..97dbcb6f527bd5c567e77200d7f6cbc1abb15792 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -381,7 +381,20 @@ public class ServerEntity { +@@ -374,7 +374,20 @@ public class ServerEntity { if (list != null) { this.trackedDataValues = datawatcher.getNonDefaultValues(); @@ -144,10 +144,10 @@ index 196280f54e397c69d32bd4d1f6ae666efdd93773..a514a1f26e439b5959093488ec9905fe 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 6d6baa82bb7a67c3f6de4bdb0987e4d1f68b6ec8..b23b6be85496d031b81b2d3abb9690322c340a80 100644 +index 383c40f6f7ea7cbf6f88347ccb559f4c458fcc40..119f839051d691ff09805d22b95186cdb38403af 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3272,7 +3272,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { +@@ -3322,7 +3322,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { this.entityData.markDirty(Entity.DATA_AIR_SUPPLY_ID); return; } @@ -157,10 +157,10 @@ index 6d6baa82bb7a67c3f6de4bdb0987e4d1f68b6ec8..b23b6be85496d031b81b2d3abb969032 } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d0e49ae973a91344f3973dc6e00e7e6c649e87cb..b7c9876eaff4365d136a9af20c1a5845b3094336 100644 +index 3ac315b664b36bf0a3934e6f944e8dd4e0e545cb..cad14a4e7e39982c0df779a67c2e735c0186678f 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3127,7 +3127,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3164,7 +3164,7 @@ public abstract class LivingEntity extends Entity implements Attackable { } public boolean equipmentHasChanged(ItemStack stack, ItemStack stack2) { @@ -170,10 +170,10 @@ index d0e49ae973a91344f3973dc6e00e7e6c649e87cb..b7c9876eaff4365d136a9af20c1a5845 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 38e110a226aac27d86dfe89bc0e9ecaada6ff268..15515e871c89498ec936ab24871741f883f18a3b 100644 +index 0325086157b846da7da0ca291fd33c55fc91f229..22a74eb4946b0b92da922227326d972e91a1c4b7 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -643,7 +643,7 @@ public abstract class Player extends LivingEntity { +@@ -649,7 +649,7 @@ public abstract class Player extends LivingEntity { public void increaseScore(int score) { int j = this.getScore(); @@ -183,10 +183,10 @@ index 38e110a226aac27d86dfe89bc0e9ecaada6ff268..15515e871c89498ec936ab24871741f8 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 0af1801085701437f06c9ecaf8864fe875e90509..48402f6be39ca1fe65453ca3ab3b995ad33051b0 100644 +index 1b0b09a7507bd26254e7ac469829698ca7894070..225e7663a9ad7b9924db777bb9741a93e31c567d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2593,7 +2593,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2609,7 +2609,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.sendHealthUpdate(); } } diff --git a/patches/server/0029-Long-distance-tracking.patch b/patches/server/0029-Long-distance-tracking.patch index 5aeb3d84a..533e6f94a 100644 --- a/patches/server/0029-Long-distance-tracking.patch +++ b/patches/server/0029-Long-distance-tracking.patch @@ -5,30 +5,30 @@ 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 e08b72010f22ce680e88f443782bdfe6a46285f9..3809b2125254424d4939794961a9f08254af54c8 100644 +index df414c88a73a5f4eb1c19924a600a21bb0fff7c8..48e25187e68b8b3099b514a224a552f130bd77e3 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1551,6 +1551,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - // Paper end - remove allocation of Vec3D here +@@ -1288,6 +1288,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider 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 + 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_dx * vec3d_dx + vec3d_dz * vec3d_dz; // Paper + double d1 = vec3d.x * vec3d.x + vec3d.z * vec3d.z; double d2 = d0 * d0; - boolean flag = d1 <= d2 && this.entity.broadcastToPlayer(player); + 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 c610111cde3d1cecac661549511742231e1e47c3..069665c210f2c3f8aec8c13c1c0c2ab5c50d3e24 100644 +index 4286c29a9b2a703f951159b1a407c3cd5bc4c5cc..8dce1a7868e2bd14b570823fbdcd9f71557c8b82 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -279,6 +279,7 @@ public class ServerPlayer extends Player { +@@ -274,6 +274,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 boolean hasLongDistanceTracking; // 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)); - public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; -@@ -2656,4 +2657,18 @@ public class ServerPlayer extends Player { +@@ -2648,4 +2649,18 @@ public class ServerPlayer extends Player { return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -68,7 +68,7 @@ index 5b5109e942b18418b3a3a0e2109fe4ef15045fe5..507519c75fabe8991cddbc1aa7813cec 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 8fca15099952626ee537f5ce3eefdfaa6518dc1b..1ddf149ce3d962905bec8c4562e4d86fbbe6e570 100644 +index 172d231adecf043f9f06b7f5e0365ae82327998d..e8a6c5f3f6208bc539e913eab47a14e2258817d7 100644 --- a/src/main/java/org/spigotmc/TrackingRange.java +++ b/src/main/java/org/spigotmc/TrackingRange.java @@ -26,9 +26,9 @@ public class TrackingRange diff --git a/patches/server/0030-Shared-Data-Storage.patch b/patches/server/0030-Shared-Data-Storage.patch index 7dc749d36..b35c62c48 100644 --- a/patches/server/0030-Shared-Data-Storage.patch +++ b/patches/server/0030-Shared-Data-Storage.patch @@ -5,10 +5,10 @@ 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 3bc7230ca62ebe3426da293e436a962bb0134f85..a812bd61e0352023cfd44e62a9cf722616ba4358 100644 +index a6f58b3457b7477015c5c6d969e7d83017dd3fa1..7f2070bd2d7eb7f0256a96df00103d20c45e65a0 100644 --- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java -@@ -318,6 +318,7 @@ public class GlobalConfiguration extends ConfigurationPart { +@@ -331,6 +331,7 @@ public class GlobalConfiguration extends ConfigurationPart { public boolean useDimensionTypeForCustomSpawners = false; public boolean strictAdvancementDimensionCheck = false; public IntOr.Default compressionLevel = IntOr.Default.USE_DEFAULT; @@ -17,7 +17,7 @@ index 3bc7230ca62ebe3426da293e436a962bb0134f85..a812bd61e0352023cfd44e62a9cf7226 public BlockUpdates blockUpdates; diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 915340fedc6c0b3d70ee065482dbe621b7c0b0a8..fc6fa65dae66d695b5fd732cc495d3649a28862c 100644 +index 6684f4f4b9aff1c2f3037feb7bcdee55a9d21f93..4ecd1f7d7c5889fb58553333d095716386448860 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; @@ -28,17 +28,17 @@ index 915340fedc6c0b3d70ee065482dbe621b7c0b0a8..fc6fa65dae66d695b5fd732cc495d364 import com.google.common.collect.ImmutableList; import co.aikar.timings.Timings; import com.destroystokyo.paper.event.server.PaperServerListPingEvent; -@@ -310,6 +311,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -410,6 +412,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 { + // Paper start - Call missing map initialize event & set id +- final DimensionDataStorage storage = this.getServer().overworld().getDataStorage(); ++ final DimensionDataStorage storage = this.getServer().getMapDataStorage(); + + final net.minecraft.world.level.saveddata.SavedData existing = storage.cache.get(id); + if (existing == null && !storage.cache.containsKey(id)) { +@@ -2122,12 +2122,22 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override public void setMapData(String id, MapItemSavedData state) { state.id = id; // CraftBukkit @@ -104,10 +104,10 @@ index af0720fb8bd334aac5493121c6373d87421204b4..564591e9f18dd6bb0f76ae4f153adcc0 @Override public int getFreeMapId() { -- return ((MapIndex) this.getServer().overworld().getDataStorage().computeIfAbsent(MapIndex::load, MapIndex::new, "idcounts")).getFreeAuxValueForMap(); +- return ((MapIndex) this.getServer().overworld().getDataStorage().computeIfAbsent(MapIndex.factory(), "idcounts")).getFreeAuxValueForMap(); + // Slice start + DimensionDataStorage storage = this.getServer().getMapDataStorage(); -+ MapIndex mapIndex = storage.readSavedData(MapIndex::load, "idcounts"); ++ MapIndex mapIndex = storage.get(MapIndex.factory(), "idcounts"); + if (mapIndex == null) { + mapIndex = new MapIndex(); + } @@ -119,16 +119,3 @@ index af0720fb8bd334aac5493121c6373d87421204b4..564591e9f18dd6bb0f76ae4f153adcc0 } // 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/0031-Equipment-Packet-Caching.patch b/patches/server/0031-Equipment-Packet-Caching.patch index 0a4265748..14e7b48ad 100644 --- a/patches/server/0031-Equipment-Packet-Caching.patch +++ b/patches/server/0031-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 a514a1f26e439b5959093488ec9905fec327a404..0ac580f3cf8f95025992420702d67ad56db2ba05 100644 +index 97dbcb6f527bd5c567e77200d7f6cbc1abb15792..248a4af1b9c6684502570c879efae20a36558414 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -328,27 +328,8 @@ public class ServerEntity { +@@ -325,27 +325,8 @@ public class ServerEntity { sender.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.ap)); } @@ -52,14 +52,14 @@ index a514a1f26e439b5959093488ec9905fec327a404..0ac580f3cf8f95025992420702d67ad5 - if (!list.isEmpty()) { - sender.accept(new ClientboundSetEquipmentPacket(this.entity.getId(), list)); - } -- ((LivingEntity) this.entity).detectEquipmentUpdates(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending +- ((LivingEntity) this.entity).detectEquipmentUpdatesPublic(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending + if (this.entity instanceof LivingEntity livingEntity) { + livingEntity.sendEquipment(sender, player); // Slice } - // CraftBukkit start - MC-109346: Fix for nonsensical head yaw + 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 836c007db96b115a0f7a869649e9ed4738920093..b6c320554693d1b55a385c45784feb45d7cac757 100644 +index cad14a4e7e39982c0df779a67c2e735c0186678f..39a69334c9bea26228a428b3db7e7a2bd021e44b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -263,6 +263,8 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -71,7 +71,7 @@ index 836c007db96b115a0f7a869649e9ed4738920093..b6c320554693d1b55a385c45784feb45 @Override public float getBukkitYaw() { -@@ -3071,6 +3073,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3108,6 +3110,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (map != null) { this.handleHandSwap(map); if (!map.isEmpty()) { @@ -79,7 +79,7 @@ index 836c007db96b115a0f7a869649e9ed4738920093..b6c320554693d1b55a385c45784feb45 this.handleEquipmentChanges(map); } } -@@ -3163,7 +3166,25 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3200,7 +3203,25 @@ public abstract class LivingEntity extends Entity implements Attackable { } }); @@ -106,7 +106,7 @@ index 836c007db96b115a0f7a869649e9ed4738920093..b6c320554693d1b55a385c45784feb45 } // Paper start - hide unnecessary item meta -@@ -4450,4 +4471,74 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4527,4 +4548,74 @@ public abstract class LivingEntity extends Entity implements Attackable { public static record Fallsounds(SoundEvent small, SoundEvent big) { } @@ -176,13 +176,13 @@ index 836c007db96b115a0f7a869649e9ed4738920093..b6c320554693d1b55a385c45784feb45 + consumer.accept(equipmentPacket); + } + -+ detectEquipmentUpdates(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending ++ detectEquipmentUpdatesPublic(); // CraftBukkit - SPIGOT-3789: sync again immediately after sending + } + } + // 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 b25f5931f836fd4d8695120f0bcb7c52deff8583..68507518df679a354534a82f32a011727ae7cea0 100644 +index fe2124694eb080cab685a1ce1f6a66e2fcdf6a17..fa70fae582a9415322d967996458902f5aea3e01 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -1099,4 +1099,14 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { diff --git a/patches/server/0032-Add-canDespawn-to-Warden.patch b/patches/server/0032-Add-canDespawn-to-Warden.patch index 1e3a547a4..a2130545b 100644 --- a/patches/server/0032-Add-canDespawn-to-Warden.patch +++ b/patches/server/0032-Add-canDespawn-to-Warden.patch @@ -5,10 +5,10 @@ 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 9afc81ccb237c3655d64cdbe8a0db9a4d7791043..286e2ad0887379b5b16ca3ca89a8f0d62be258e7 100644 +index 73871f456a85bda1e51f54986d0e61fb629822e8..fb0079c527d91e6f6f0ad7ab926418e2fc90c984 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -588,7 +588,7 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -589,7 +589,7 @@ public class EntityType implements FeatureElement, EntityTypeT }), (entity) -> { entity.load(nbt); }, () -> { @@ -18,10 +18,10 @@ index 9afc81ccb237c3655d64cdbe8a0db9a4d7791043..286e2ad0887379b5b16ca3ca89a8f0d6 } 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 97b763431bc5015448ee7a26a340635a932c950b..e8b748eb16d7409a69dbd364a59dcf217ce701ec 100644 +index b2bc3a832c310448046ccde37a04918aa6d63197..a4cef5d81b0eeef933440bc7f96a9a8ef3a5afdf 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 -@@ -110,6 +110,7 @@ public class Warden extends Monster implements VibrationSystem { +@@ -111,6 +111,7 @@ public class Warden extends Monster implements VibrationSystem { private final VibrationSystem.User vibrationUser = new Warden.VibrationUser(); private VibrationSystem.Data vibrationData = new VibrationSystem.Data(); AngerManagement angerManagement = new AngerManagement(this::canTargetEntity, Collections.emptyList()); diff --git a/patches/server/0033-Save-DimensionDataStorage-async.patch b/patches/server/0033-Save-DimensionDataStorage-async.patch index c9fa2b10f..9a3fb6e3c 100644 --- a/patches/server/0033-Save-DimensionDataStorage-async.patch +++ b/patches/server/0033-Save-DimensionDataStorage-async.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Save DimensionDataStorage async 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 637a86e74d633901fdd2f2f1ba6aa4ed49780ead..8cf3880d9168b5ba6b383ec921bfb490ea51ac38 100644 +index f921f55e815a4da01828e025881a7a03591c3978..f44dbf56062148ff442141bc0058accc275617b2 100644 --- a/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java +++ b/src/main/java/net/minecraft/world/level/storage/DimensionDataStorage.java @@ -9,6 +9,8 @@ import java.io.FileInputStream; @@ -15,9 +15,9 @@ index 637a86e74d633901fdd2f2f1ba6aa4ed49780ead..8cf3880d9168b5ba6b383ec921bfb490 +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; - import java.util.function.Supplier; import javax.annotation.Nullable; -@@ -18,11 +20,12 @@ import net.minecraft.nbt.NbtIo; + import net.minecraft.SharedConstants; +@@ -17,11 +19,12 @@ import net.minecraft.nbt.NbtIo; import net.minecraft.nbt.NbtUtils; import net.minecraft.util.datafix.DataFixTypes; import net.minecraft.world.level.saveddata.SavedData; @@ -31,16 +31,16 @@ index 637a86e74d633901fdd2f2f1ba6aa4ed49780ead..8cf3880d9168b5ba6b383ec921bfb490 private final DataFixer fixerUpper; private final File dataFolder; -@@ -51,7 +54,7 @@ public class DimensionDataStorage { +@@ -50,7 +53,7 @@ public class DimensionDataStorage { SavedData savedData = this.cache.get(id); if (savedData == null && !this.cache.containsKey(id)) { - savedData = this.readSavedData(readFunction, id); + savedData = this.readSavedData(type.deserializer(), type.type(), id); - this.cache.put(id, savedData); + if (savedData != null) this.cache.put(id, savedData); } return (T)savedData; -@@ -119,11 +122,12 @@ public class DimensionDataStorage { +@@ -118,11 +121,12 @@ public class DimensionDataStorage { } public void save() { diff --git a/patches/server/0034-Add-reason-to-PlayerConnectionCloseEvent.patch b/patches/server/0034-Add-reason-to-PlayerConnectionCloseEvent.patch index 584e68b81..b6d02039e 100644 --- a/patches/server/0034-Add-reason-to-PlayerConnectionCloseEvent.patch +++ b/patches/server/0034-Add-reason-to-PlayerConnectionCloseEvent.patch @@ -4,15 +4,15 @@ Date: Tue, 22 Aug 2023 06:22:16 -0500 Subject: [PATCH] Add reason to PlayerConnectionCloseEvent -diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -index 2ff578e4a953ffcf5176815ba8e3f06f73499989..f9a1b0e3be862cc00370c130621a07be5deebf0c 100644 ---- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java -@@ -193,6 +193,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, - - this.connection.send(new ClientboundDisconnectPacket(ichatmutablecomponent)); - this.connection.disconnect(ichatmutablecomponent); -+ new com.destroystokyo.paper.event.player.PlayerConnectionCloseEvent(this.gameProfile.getId(), this.gameProfile.getName(), ((java.net.InetSocketAddress)this.connection.address).getAddress(), com.destroystokyo.paper.event.player.PlayerConnectionCloseEvent.ConnectionCloseReason.INVALID_PLAYER_DATA, false).callEvent(); // Slice - } +diff --git a/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java +index 8dbcc1b3a70b6bbea3bd2d15b6d66cc4f9cd53f8..9ae791c7a71c8ebfe9018c42d109c0f4a51a9dda 100644 +--- a/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java +@@ -138,6 +138,7 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis + // Paper end + this.connection.send(new ClientboundDisconnectPacket(ServerConfigurationPacketListenerImpl.DISCONNECT_REASON_INVALID_DATA)); + this.connection.disconnect(ServerConfigurationPacketListenerImpl.DISCONNECT_REASON_INVALID_DATA); ++ new com.destroystokyo.paper.event.player.PlayerConnectionCloseEvent(this.gameProfile.getId(), this.gameProfile.getName(), ((java.net.InetSocketAddress)this.connection.address).getAddress(), com.destroystokyo.paper.event.player.PlayerConnectionCloseEvent.ConnectionCloseReason.INVALID_PLAYER_DATA, false).callEvent(); // Slice } + } diff --git a/patches/server/0037-Change-KeepAlive-interval.patch b/patches/server/0037-Change-KeepAlive-interval.patch index 59a931e25..5e724bc74 100644 --- a/patches/server/0037-Change-KeepAlive-interval.patch +++ b/patches/server/0037-Change-KeepAlive-interval.patch @@ -4,12 +4,12 @@ Date: Tue, 3 Oct 2023 09:18:59 -0500 Subject: [PATCH] Change KeepAlive interval -diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 42e61e55ef45935e1f690eefa56bc36842cdd974..049c1417968d89ba7b6208339e4a812bc72e007b 100644 ---- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -409,7 +409,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic - this.disconnect(Component.translatable("disconnect.timeout", new Object[0]), org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause +diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +index 231150bac0ae61e9722c2cdfd70d6f7d254681e4..75e9c680979d9e6e8605db800f2d5d35bf32f212 100644 +--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +@@ -210,7 +210,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack + this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause } } else { - if (elapsedTime >= 15000L) { // 15 seconds diff --git a/settings.gradle.kts b/settings.gradle.kts index 382db6c0c..5bf67525c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,7 +1,7 @@ pluginManagement { repositories { gradlePluginPortal() - maven("https://papermc.io/repo/repository/maven-public/") + maven("https://repo.papermc.io/repository/maven-public/") } }