diff --git a/patches/server/0002-Remap-fixes.patch b/patches/server/0002-Remap-fixes.patch index 50ea8b2aa7..d7cff4215b 100644 --- a/patches/server/0002-Remap-fixes.patch +++ b/patches/server/0002-Remap-fixes.patch @@ -73,6 +73,19 @@ index f3a2612f0e27c36d5206334307eac1880ce8c4b7..4d4d413b8527e1a109276928611b8c85 private ContextKeySet paramSet; private Optional randomSequence; +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java +index eaa46bf5954ed7c2be6d4b3772b5f2e971505c78..c101d01b55472efc9fc2829b8c17db5377ed57ff 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java +@@ -133,7 +133,7 @@ public abstract class CraftBoat extends CraftVehicle implements Boat { + throw new EnumConstantNotPresentException(Type.class, boatType.toString()); + } + +- public static Status boatStatusFromNms(net.minecraft.world.entity.vehicle.Boat.EnumStatus enumStatus) { ++ public static Status boatStatusFromNms(net.minecraft.world.entity.vehicle.AbstractBoat.Status enumStatus) { // Paper - remap fixes + return switch (enumStatus) { + default -> throw new EnumConstantNotPresentException(Status.class, enumStatus.name()); + case IN_AIR -> Status.IN_AIR; diff --git a/src/test/java/org/bukkit/DyeColorsTest.java b/src/test/java/org/bukkit/DyeColorsTest.java index e96d821da0698dd42651500fb97a0856a9e9ce02..fb7d40181abdaa5b2ce607db47c09d0d0a19c86d 100644 --- a/src/test/java/org/bukkit/DyeColorsTest.java diff --git a/patches/server/0009-MC-Utils.patch b/patches/server/0009-MC-Utils.patch index 4b120d89b8..d98cff6991 100644 --- a/patches/server/0009-MC-Utils.patch +++ b/patches/server/0009-MC-Utils.patch @@ -4980,7 +4980,7 @@ index 23a611c9a83d1cea5ab2f64cdbd696c39872477d..bf660a057d135563b47e7b74d927a82a GameProfileCache usercache = this.server.getProfileCache(); // Optional optional; // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java b/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java -index ae25aec117a7272735c824a00c1ed117fa52a921..f877bc637fef7f446b328381316f1431b3a5dee8 100644 +index ae25aec117a7272735c824a00c1ed117fa52a921..d6e942aca1bcc769c390504a4119d6619872c4d4 100644 --- a/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java +++ b/src/main/java/net/minecraft/util/thread/BlockableEventLoop.java @@ -82,6 +82,13 @@ public abstract class BlockableEventLoop implements Profiler @@ -4991,7 +4991,7 @@ index ae25aec117a7272735c824a00c1ed117fa52a921..f877bc637fef7f446b328381316f1431 + public void scheduleOnMain(Runnable runnable) { + // postToMainThread does not work the same as older versions of mc + // This method is actually used to create a TickTask, which can then be posted onto main -+ this.tell(this.wrapRunnable(runnable)); ++ this.schedule(this.wrapRunnable(runnable)); + } + // Paper end diff --git a/patches/server/0023-Timings-v2.patch b/patches/server/0023-Timings-v2.patch index 19ddd183bb..5cb8445793 100644 --- a/patches/server/0023-Timings-v2.patch +++ b/patches/server/0023-Timings-v2.patch @@ -1032,7 +1032,7 @@ index 88e98f49565a098debcea8d58368e53d7623f6b5..84ea1974445fc7be80ed474d8a2133b5 } diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index c615510f3f59292715bcff1bd9e4e896c9733436..a29598ae54d5d20740a105f81bcaec2a152fe4ba 100644 +index c615510f3f59292715bcff1bd9e4e896c9733436..93422468474189343cdc1e29f06f6dfb12e4760a 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -207,13 +207,15 @@ public class ServerChunkCache extends ChunkSource { @@ -1076,15 +1076,7 @@ index c615510f3f59292715bcff1bd9e4e896c9733436..a29598ae54d5d20740a105f81bcaec2a } this.level.timings.doChunkUnload.startTiming(); // Spigot -@@ -442,6 +446,7 @@ public class ServerChunkCache extends ChunkSource { - gameprofilerfiller.pop(); - this.clearCache(); - } -+ if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper - - private void tickChunks() { - long i = this.level.getGameTime(); -@@ -481,7 +486,9 @@ public class ServerChunkCache extends ChunkSource { +@@ -481,7 +485,9 @@ public class ServerChunkCache extends ChunkSource { LevelChunk chunk = playerchunk.getTickingChunk(); if (chunk != null) { @@ -1094,7 +1086,7 @@ index c615510f3f59292715bcff1bd9e4e896c9733436..a29598ae54d5d20740a105f81bcaec2a } } -@@ -502,8 +509,10 @@ public class ServerChunkCache extends ChunkSource { +@@ -502,8 +508,10 @@ public class ServerChunkCache extends ChunkSource { private void tickChunks(ProfilerFiller profiler, long timeDelta, List chunks) { profiler.popPush("naturalSpawnCount"); @@ -1105,7 +1097,7 @@ index c615510f3f59292715bcff1bd9e4e896c9733436..a29598ae54d5d20740a105f81bcaec2a this.lastSpawnState = spawnercreature_d; profiler.popPush("spawnAndTick"); -@@ -531,15 +540,17 @@ public class ServerChunkCache extends ChunkSource { +@@ -531,15 +539,17 @@ public class ServerChunkCache extends ChunkSource { } if (this.level.shouldTickBlocksAt(chunkcoordintpair.toLong())) { diff --git a/patches/server/0164-PlayerNaturallySpawnCreaturesEvent.patch b/patches/server/0164-PlayerNaturallySpawnCreaturesEvent.patch index a6fcccab1a..1c3173436b 100644 --- a/patches/server/0164-PlayerNaturallySpawnCreaturesEvent.patch +++ b/patches/server/0164-PlayerNaturallySpawnCreaturesEvent.patch @@ -40,10 +40,10 @@ index 84ea1974445fc7be80ed474d8a2133b58ee4c8fe..aa3155bb57c09895d13914b46c77de78 return true; diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index a29598ae54d5d20740a105f81bcaec2a152fe4ba..3bbc7aa52a2ee797d6033684e73d6b307c2fadcc 100644 +index 93422468474189343cdc1e29f06f6dfb12e4760a..fef86453d5cf0fe0f11a2a061169cd301b777434 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -521,6 +521,15 @@ public class ServerChunkCache extends ChunkSource { +@@ -520,6 +520,15 @@ public class ServerChunkCache extends ChunkSource { List list1; if (flag && (this.spawnEnemies || this.spawnFriendlies)) { diff --git a/patches/server/0244-Prevent-various-interactions-from-causing-chunk-load.patch b/patches/server/0244-Prevent-various-interactions-from-causing-chunk-load.patch index b7f9185ebb..a2789a6dfa 100644 --- a/patches/server/0244-Prevent-various-interactions-from-causing-chunk-load.patch +++ b/patches/server/0244-Prevent-various-interactions-from-causing-chunk-load.patch @@ -77,7 +77,7 @@ index c02a2f9e1b4e727b1deeb73377e1f7193f5ee072..cdd1f6939ce33e62f6609f7eb3a5dff5 : new LodestoneTracker(Optional.empty(), true); } diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java -index 6850ac324ee4d202f112dbd057ea1bde9de17ea9..8e58efd0d8010a3499a1eb1add9fa976aa2b0a3e 100644 +index 6850ac324ee4d202f112dbd057ea1bde9de17ea9..f39ccc0d2a4eea4e1e0b15608780c7c4a749e672 100644 --- a/src/main/java/net/minecraft/world/level/BlockGetter.java +++ b/src/main/java/net/minecraft/world/level/BlockGetter.java @@ -71,7 +71,15 @@ public interface BlockGetter extends LevelHeightAccessor { @@ -91,7 +91,7 @@ index 6850ac324ee4d202f112dbd057ea1bde9de17ea9..8e58efd0d8010a3499a1eb1add9fa976 + // copied the last function parameter (listed below) + Vec3 vec3d = raytrace1.getFrom().subtract(raytrace1.getTo()); + -+ return BlockHitResult.miss(raytrace1.getTo(), Direction.getNearest(vec3d.x, vec3d.y, vec3d.z), BlockPos.containing(raytrace1.getTo())); ++ return BlockHitResult.miss(raytrace1.getTo(), Direction.getApproximateNearest(vec3d.x, vec3d.y, vec3d.z), BlockPos.containing(raytrace1.getTo())); + } + // Paper end - Prevent raytrace from loading chunks FluidState fluid = this.getFluidState(blockposition); diff --git a/patches/server/0309-Optimise-getChunkAt-calls-for-loaded-chunks.patch b/patches/server/0309-Optimise-getChunkAt-calls-for-loaded-chunks.patch index 8a7a310666..32dde0f0e4 100644 --- a/patches/server/0309-Optimise-getChunkAt-calls-for-loaded-chunks.patch +++ b/patches/server/0309-Optimise-getChunkAt-calls-for-loaded-chunks.patch @@ -7,7 +7,7 @@ bypass the need to get a player chunk, then get the either, then unwrap it... diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 3bbc7aa52a2ee797d6033684e73d6b307c2fadcc..4302d5119c43eb8de0c026162fc62ddeb5ab87cb 100644 +index fef86453d5cf0fe0f11a2a061169cd301b777434..9ab43b4273975d7599f8eee2f95773f2984b7c37 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -191,6 +191,12 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0310-Add-debug-for-sync-chunk-loads.patch b/patches/server/0310-Add-debug-for-sync-chunk-loads.patch index 73dc4103eb..a27b5deba2 100644 --- a/patches/server/0310-Add-debug-for-sync-chunk-loads.patch +++ b/patches/server/0310-Add-debug-for-sync-chunk-loads.patch @@ -302,7 +302,7 @@ index 0000000000000000000000000000000000000000..95d6022c9cfb2e36ec5a71be6e343540 + } +} diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 4302d5119c43eb8de0c026162fc62ddeb5ab87cb..7e5714fea4cda68b9ae21031c0e0d39061b07e2f 100644 +index 9ab43b4273975d7599f8eee2f95773f2984b7c37..350bfa9c891130b1aa2ab973e86668de187ee1e0 100644 --- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java +++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java @@ -218,6 +218,7 @@ public class ServerChunkCache extends ChunkSource { diff --git a/patches/server/0336-Don-t-run-entity-collision-code-if-not-needed.patch b/patches/server/0336-Don-t-run-entity-collision-code-if-not-needed.patch index 43b1d500a9..e0919bb4b1 100644 --- a/patches/server/0336-Don-t-run-entity-collision-code-if-not-needed.patch +++ b/patches/server/0336-Don-t-run-entity-collision-code-if-not-needed.patch @@ -12,7 +12,7 @@ The entity's current team collision rule causes them to NEVER collide. Co-authored-by: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 304a401fb1f378ff2cbfd888acf56a8516f79310..6ff464fef1f79cff9212135a30adcc6cb8792ed6 100644 +index 304a401fb1f378ff2cbfd888acf56a8516f79310..ecf188d659c8542ca2b52c5e7ec779bfacb5614c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3683,10 +3683,24 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -28,7 +28,7 @@ index 304a401fb1f378ff2cbfd888acf56a8516f79310..6ff464fef1f79cff9212135a30adcc6c + return; + } + -+ int i = this.level().getGameRules().getInt(GameRules.RULE_MAX_ENTITY_CRAMMING); ++ int i = worldserver.getGameRules().getInt(GameRules.RULE_MAX_ENTITY_CRAMMING); + if (i <= 0 && this.level().paperConfig().collisions.maxEntityCollisions <= 0) { + return; + } diff --git a/patches/server/0341-Add-PlayerAttackEntityCooldownResetEvent.patch b/patches/server/0341-Add-PlayerAttackEntityCooldownResetEvent.patch index 72ccb53f47..ce70659c90 100644 --- a/patches/server/0341-Add-PlayerAttackEntityCooldownResetEvent.patch +++ b/patches/server/0341-Add-PlayerAttackEntityCooldownResetEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerAttackEntityCooldownResetEvent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6ff464fef1f79cff9212135a30adcc6cb8792ed6..68e5f6f7013d6a014b9014d945cf3f7dc7a37cb2 100644 +index ecf188d659c8542ca2b52c5e7ec779bfacb5614c..324d654420c3d11f0695fdf029fde0300a865317 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2354,7 +2354,17 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0344-Fix-item-duplication-and-teleport-issues.patch b/patches/server/0344-Fix-item-duplication-and-teleport-issues.patch index 2b42b0e70c..128a755a95 100644 --- a/patches/server/0344-Fix-item-duplication-and-teleport-issues.patch +++ b/patches/server/0344-Fix-item-duplication-and-teleport-issues.patch @@ -16,7 +16,7 @@ So even if something NEW comes up, it would be impossible to drop the same item twice because the source was destroyed. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5b8e264098f1b713de15f714bae59d3efda365cf..4faba83eb73e0d313e9131794962b727f7628a50 100644 +index 5b8e264098f1b713de15f714bae59d3efda365cf..6f1e09087cf2d8dbb61882473b220100e3b0369a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2630,11 +2630,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -39,7 +39,7 @@ index 5b8e264098f1b713de15f714bae59d3efda365cf..4faba83eb73e0d313e9131794962b727 + // Paper start - Fix item duplication and teleport issues + if (!this.isAlive() || !this.valid) { -+ LOGGER.warn("Illegal Entity Teleport " + this + " to " + teleportTarget.newLevel() + ":" + teleportTarget.pos(), new Throwable()); ++ LOGGER.warn("Illegal Entity Teleport " + this + " to " + teleportTarget.newLevel() + ":" + teleportTarget.position(), new Throwable()); + return null; + } + // Paper end - Fix item duplication and teleport issues @@ -67,7 +67,7 @@ index 5b8e264098f1b713de15f714bae59d3efda365cf..4faba83eb73e0d313e9131794962b727 Iterator iterator = this.getPassengers().iterator(); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 68e5f6f7013d6a014b9014d945cf3f7dc7a37cb2..65909e0a8f8b68f9a4dacefda9069c8263a96ada 100644 +index 324d654420c3d11f0695fdf029fde0300a865317..f7323f54b2ac7236d26da8998a88432f9776e1ea 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1767,9 +1767,9 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0369-Ensure-Entity-position-and-AABB-are-never-invalid.patch b/patches/server/0369-Ensure-Entity-position-and-AABB-are-never-invalid.patch index 75a8ed8bfe..acac658b4d 100644 --- a/patches/server/0369-Ensure-Entity-position-and-AABB-are-never-invalid.patch +++ b/patches/server/0369-Ensure-Entity-position-and-AABB-are-never-invalid.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Ensure Entity position and AABB are never invalid Co-authored-by: Spottedleaf diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4faba83eb73e0d313e9131794962b727f7628a50..7fdfe1dd09812df1d8d7e5f95bcaf1b48c814e22 100644 +index 6f1e09087cf2d8dbb61882473b220100e3b0369a..a3e096525f89b7b66efa7987f9744618074ca38a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -677,8 +677,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0380-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch b/patches/server/0380-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch index e97a181c53..de62fde367 100644 --- a/patches/server/0380-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch +++ b/patches/server/0380-Don-t-check-chunk-for-portal-on-world-gen-entity-add.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Don't check chunk for portal on world gen entity add diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 65909e0a8f8b68f9a4dacefda9069c8263a96ada..91a5166e69a03d846a1b396ba964003c12a0dcdb 100644 +index f7323f54b2ac7236d26da8998a88432f9776e1ea..e0ccdbcdbc33d378ebe41e3741137b15ff9fd80a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3798,7 +3798,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0404-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch b/patches/server/0404-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch index a05ecacdce..6b069e9a8c 100644 --- a/patches/server/0404-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch +++ b/patches/server/0404-Fix-Entity-Teleportation-and-cancel-velocity-if-tele.patch @@ -22,7 +22,7 @@ index 49039d929681891beb76b8c7f6e6d8bb614a7bf0..b634a90e87f52c79b74c256c13b659b5 this.lastGoodY = this.awaitingPositionFromClient.y; this.lastGoodZ = this.awaitingPositionFromClient.z; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7fdfe1dd09812df1d8d7e5f95bcaf1b48c814e22..f8fd729d53248c7598a118d89fedf340f82cdd61 100644 +index a3e096525f89b7b66efa7987f9744618074ca38a..9e4483d31330dfe82fd794c9cfb8d2aa318a39ea 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -179,6 +179,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0408-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch b/patches/server/0408-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch index 2b99da73b9..3dec9f876b 100644 --- a/patches/server/0408-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch +++ b/patches/server/0408-Expose-the-Entity-Counter-to-allow-plugins-to-use-va.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Expose the Entity Counter to allow plugins to use valid and diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f8fd729d53248c7598a118d89fedf340f82cdd61..ac1b2b3982e5ceb8fecf20867dd2ac6e143463c3 100644 +index 9e4483d31330dfe82fd794c9cfb8d2aa318a39ea..b55ca652e0828bc34848ad4f1ebb9001832550dc 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4704,4 +4704,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0410-Entity-isTicking.patch b/patches/server/0410-Entity-isTicking.patch index e90c16901d..d4311d3a19 100644 --- a/patches/server/0410-Entity-isTicking.patch +++ b/patches/server/0410-Entity-isTicking.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity#isTicking diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ac1b2b3982e5ceb8fecf20867dd2ac6e143463c3..0bd608894ab596c773570f92b4662aee5a6934cc 100644 +index b55ca652e0828bc34848ad4f1ebb9001832550dc..8cb02a0aeab64e0333c61aa3b30685ad1a169c48 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4709,5 +4709,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0435-Climbing-should-not-bypass-cramming-gamerule.patch b/patches/server/0435-Climbing-should-not-bypass-cramming-gamerule.patch index e27625ee8e..23a3982b73 100644 --- a/patches/server/0435-Climbing-should-not-bypass-cramming-gamerule.patch +++ b/patches/server/0435-Climbing-should-not-bypass-cramming-gamerule.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Climbing should not bypass cramming gamerule diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0bd608894ab596c773570f92b4662aee5a6934cc..25f625e28c8c9f63a1b2207d5e8d1a48e2fea039 100644 +index 8cb02a0aeab64e0333c61aa3b30685ad1a169c48..2e9a836f16eace80b010d5a0421901f7a1af8622 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2195,6 +2195,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -44,7 +44,7 @@ index b8d57e25851dd7da905100dfd4022e4b99fd7f02..721321a19ce056f82de2bef44a8791dc } else if (entity1 instanceof Player && entity instanceof Player && !io.papermc.paper.configuration.GlobalConfiguration.get().collisions.enablePlayerCollisions) { // Paper - Configurable player collision return false; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 91a5166e69a03d846a1b396ba964003c12a0dcdb..7ea58478d3cde175a056f41cf945636a04128828 100644 +index e0ccdbcdbc33d378ebe41e3741137b15ff9fd80a..5a551e24be8d4d8157adb0f20f8e7bd3c5c61854 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3712,7 +3712,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0446-MC-4-Fix-item-position-desync.patch b/patches/server/0446-MC-4-Fix-item-position-desync.patch index 26cf19c2b6..93bbd49bf5 100644 --- a/patches/server/0446-MC-4-Fix-item-position-desync.patch +++ b/patches/server/0446-MC-4-Fix-item-position-desync.patch @@ -28,7 +28,7 @@ index 488ebd443903af812913437f1ade3002093f2470..a043ac10834562d357ef0b5aded2e916 public Vec3 decode(long x, long y, long z) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 25f625e28c8c9f63a1b2207d5e8d1a48e2fea039..ad34a525f54a157140323a26752a420a8e348a55 100644 +index 2e9a836f16eace80b010d5a0421901f7a1af8622..be547b0ef3b91da97fbc270cc00d922ba9c5896e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4449,6 +4449,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0448-API-to-get-Material-from-Boats-and-Minecarts.patch b/patches/server/0448-API-to-get-Material-from-Boats-and-Minecarts.patch index 8462025bf8..1b80594eba 100644 --- a/patches/server/0448-API-to-get-Material-from-Boats-and-Minecarts.patch +++ b/patches/server/0448-API-to-get-Material-from-Boats-and-Minecarts.patch @@ -5,7 +5,7 @@ Subject: [PATCH] API to get Material from Boats and Minecarts diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java -index eaa46bf5954ed7c2be6d4b3772b5f2e971505c78..5de1ada561d11c247a597effab1e0aa363b7c90f 100644 +index c101d01b55472efc9fc2829b8c17db5377ed57ff..5d51a49228eaee94f91cd04843e27c7918ca8796 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java @@ -78,6 +78,13 @@ public abstract class CraftBoat extends CraftVehicle implements Boat { diff --git a/patches/server/0469-Collision-option-for-requiring-a-player-participant.patch b/patches/server/0469-Collision-option-for-requiring-a-player-participant.patch index a1b916f2ad..251c412a50 100644 --- a/patches/server/0469-Collision-option-for-requiring-a-player-participant.patch +++ b/patches/server/0469-Collision-option-for-requiring-a-player-participant.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Collision option for requiring a player participant diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ad34a525f54a157140323a26752a420a8e348a55..1d2f0f8756addf0db7356b47ea8a1eddd2c4503d 100644 +index be547b0ef3b91da97fbc270cc00d922ba9c5896e..07aff05e2e8cd36ebb6b9fb9d2f19b95c5f9bfc4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2024,6 +2024,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0477-Expand-EntityUnleashEvent.patch b/patches/server/0477-Expand-EntityUnleashEvent.patch index 88cfdc582e..8d23e8ce85 100644 --- a/patches/server/0477-Expand-EntityUnleashEvent.patch +++ b/patches/server/0477-Expand-EntityUnleashEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Expand EntityUnleashEvent diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1d2f0f8756addf0db7356b47ea8a1eddd2c4503d..42004784a5421bd27d0a4a2bf1c17d14341fc5a4 100644 +index 07aff05e2e8cd36ebb6b9fb9d2f19b95c5f9bfc4..bb2cfec32b63d3786f9ec255d4beef7065245cae 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2689,12 +2689,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0480-Add-EntityMoveEvent.patch b/patches/server/0480-Add-EntityMoveEvent.patch index 7eb0eacb2e..bc7d0f0ad2 100644 --- a/patches/server/0480-Add-EntityMoveEvent.patch +++ b/patches/server/0480-Add-EntityMoveEvent.patch @@ -29,7 +29,7 @@ index d62d6a345837e1b63c1a1393f18e367ac0ef4c30..b91ed08e8d9fbd399834d19ef01ebe56 public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunk(x, z, false); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 7ea58478d3cde175a056f41cf945636a04128828..293490d124bc06c4a06b9f4a7f77a9c25a8d7d39 100644 +index 5a551e24be8d4d8157adb0f20f8e7bd3c5c61854..8bb10bcc26577ff7b806fbcc48c3d71b241c5963 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3628,6 +3628,20 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0503-Fix-PlayerItemConsumeEvent-cancelling-properly.patch b/patches/server/0503-Fix-PlayerItemConsumeEvent-cancelling-properly.patch index a1da72f499..fc40a810f1 100644 --- a/patches/server/0503-Fix-PlayerItemConsumeEvent-cancelling-properly.patch +++ b/patches/server/0503-Fix-PlayerItemConsumeEvent-cancelling-properly.patch @@ -9,7 +9,7 @@ till their item is switched. This patch clears the active item when the event is cancelled diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 293490d124bc06c4a06b9f4a7f77a9c25a8d7d39..b7cc3d84c724772e3e1250c5e99bb32e01112220 100644 +index 8bb10bcc26577ff7b806fbcc48c3d71b241c5963..9829419d3531ed6af55e37ac253903975c648a3e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -4136,6 +4136,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0548-Line-Of-Sight-Changes.patch b/patches/server/0548-Line-Of-Sight-Changes.patch index 2b40552d3f..d8a956a309 100644 --- a/patches/server/0548-Line-Of-Sight-Changes.patch +++ b/patches/server/0548-Line-Of-Sight-Changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Line Of Sight Changes diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index b7cc3d84c724772e3e1250c5e99bb32e01112220..eeed7d1d4b7fee0e8ab1f43f9b7ec6f74a01330d 100644 +index 9829419d3531ed6af55e37ac253903975c648a3e..1cb118c12e1b09cb6ae8d3b6949212b46c91b85b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3907,7 +3907,8 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0571-Optimize-indirect-passenger-iteration.patch b/patches/server/0571-Optimize-indirect-passenger-iteration.patch index 3d38516418..ea5798ac84 100644 --- a/patches/server/0571-Optimize-indirect-passenger-iteration.patch +++ b/patches/server/0571-Optimize-indirect-passenger-iteration.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Optimize indirect passenger iteration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 42004784a5421bd27d0a4a2bf1c17d14341fc5a4..ea1492559653063bb14b934f4d40d910b81d8801 100644 +index bb2cfec32b63d3786f9ec255d4beef7065245cae..674df993333ddee13415a4379b81dadc68489af7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4087,20 +4087,34 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0578-Add-back-EntityPortalExitEvent.patch b/patches/server/0578-Add-back-EntityPortalExitEvent.patch index 6c0fdf2ce9..c739f7010e 100644 --- a/patches/server/0578-Add-back-EntityPortalExitEvent.patch +++ b/patches/server/0578-Add-back-EntityPortalExitEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add back EntityPortalExitEvent diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ea1492559653063bb14b934f4d40d910b81d8801..0fd652a60bf9bedda903b734f4fd39153a9c418c 100644 +index 674df993333ddee13415a4379b81dadc68489af7..cb6a167ed778073be9f9e1f2eb27b46547b0a3ce 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3491,7 +3491,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0589-Add-Raw-Byte-Entity-Serialization.patch b/patches/server/0589-Add-Raw-Byte-Entity-Serialization.patch index 34f5031fb4..75c80fef00 100644 --- a/patches/server/0589-Add-Raw-Byte-Entity-Serialization.patch +++ b/patches/server/0589-Add-Raw-Byte-Entity-Serialization.patch @@ -7,7 +7,7 @@ Subject: [PATCH] Add Raw Byte Entity Serialization public net.minecraft.world.entity.Entity setLevel(Lnet/minecraft/world/level/Level;)V diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0fd652a60bf9bedda903b734f4fd39153a9c418c..92c743a354e95c8e12fc21673ee172aed07fe1fb 100644 +index cb6a167ed778073be9f9e1f2eb27b46547b0a3ce..3bac521f0be372198c8b83d514f3d14a041b76cd 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2260,6 +2260,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0593-Improve-and-expand-AsyncCatcher.patch b/patches/server/0593-Improve-and-expand-AsyncCatcher.patch index 3a42eb978d..c51af8278f 100644 --- a/patches/server/0593-Improve-and-expand-AsyncCatcher.patch +++ b/patches/server/0593-Improve-and-expand-AsyncCatcher.patch @@ -29,7 +29,7 @@ index ea793f9ccf3082a7abcb003b9df03901f9b4c0f0..8084bf547a52f3e5c890d2be3757acb3 if (player.isRemoved()) { LOGGER.info("Attempt to teleport removed player {} restricted", player.getScoreboardName()); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index eeed7d1d4b7fee0e8ab1f43f9b7ec6f74a01330d..f7e14d9668c74e20bc327b05cf84c8203e4e590b 100644 +index 1cb118c12e1b09cb6ae8d3b6949212b46c91b85b..21f9fc5c3111dc126d0197a02bb61541fc422933 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1145,7 +1145,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0600-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch b/patches/server/0600-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch index 96945dc001..e01f02928a 100644 --- a/patches/server/0600-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch +++ b/patches/server/0600-Don-t-lookup-fluid-state-when-raytracing-skip-air-bl.patch @@ -11,11 +11,11 @@ easy win. The remaining problems with this function are mostly with the block getting itself. diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java -index 8e58efd0d8010a3499a1eb1add9fa976aa2b0a3e..cc9ae2122b563d7b583c7335d0a8ce227f9b1af4 100644 +index f39ccc0d2a4eea4e1e0b15608780c7c4a749e672..7e1a332168357b9af14dbe3299549c2c93903fa6 100644 --- a/src/main/java/net/minecraft/world/level/BlockGetter.java +++ b/src/main/java/net/minecraft/world/level/BlockGetter.java @@ -80,7 +80,8 @@ public interface BlockGetter extends LevelHeightAccessor { - return BlockHitResult.miss(raytrace1.getTo(), Direction.getNearest(vec3d.x, vec3d.y, vec3d.z), BlockPos.containing(raytrace1.getTo())); + return BlockHitResult.miss(raytrace1.getTo(), Direction.getApproximateNearest(vec3d.x, vec3d.y, vec3d.z), BlockPos.containing(raytrace1.getTo())); } // Paper end - Prevent raytrace from loading chunks - FluidState fluid = this.getFluidState(blockposition); diff --git a/patches/server/0616-Update-head-rotation-in-missing-places.patch b/patches/server/0616-Update-head-rotation-in-missing-places.patch index 190dc41a6d..379a051545 100644 --- a/patches/server/0616-Update-head-rotation-in-missing-places.patch +++ b/patches/server/0616-Update-head-rotation-in-missing-places.patch @@ -8,7 +8,7 @@ This is because bukkit uses a separate head rotation field for yaw. This issue only applies to players. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 92c743a354e95c8e12fc21673ee172aed07fe1fb..b54dcebbd5d2f920efcf91ff2de485493dd2f487 100644 +index 3bac521f0be372198c8b83d514f3d14a041b76cd..366c3165783d3856d9f47f0dd4a594016d9f41ed 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1914,6 +1914,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0617-prevent-unintended-light-block-manipulation.patch b/patches/server/0617-prevent-unintended-light-block-manipulation.patch index 824f2a8ab9..12d564474a 100644 --- a/patches/server/0617-prevent-unintended-light-block-manipulation.patch +++ b/patches/server/0617-prevent-unintended-light-block-manipulation.patch @@ -5,17 +5,27 @@ Subject: [PATCH] prevent unintended light block manipulation diff --git a/src/main/java/net/minecraft/world/level/block/LightBlock.java b/src/main/java/net/minecraft/world/level/block/LightBlock.java -index 6c3ca57a29d3c5ad1add1cf2f707b930dfc422ea..71a1a152dca41ba9100bd38efd6758a42bab9f5d 100644 +index 6c3ca57a29d3c5ad1add1cf2f707b930dfc422ea..606c9b03cc69031faed33f437ca254f12224bb62 100644 --- a/src/main/java/net/minecraft/world/level/block/LightBlock.java +++ b/src/main/java/net/minecraft/world/level/block/LightBlock.java -@@ -50,6 +50,14 @@ public class LightBlock extends Block implements SimpleWaterloggedBlock { +@@ -5,7 +5,9 @@ import java.util.function.ToIntFunction; + import net.minecraft.core.BlockPos; + import net.minecraft.core.Direction; + import net.minecraft.core.component.DataComponents; ++import net.minecraft.server.level.ServerLevel; + import net.minecraft.util.RandomSource; ++import net.minecraft.world.InteractionHand; + import net.minecraft.world.InteractionResult; + import net.minecraft.world.entity.player.Player; + import net.minecraft.world.item.ItemStack; +@@ -50,6 +52,14 @@ public class LightBlock extends Block implements SimpleWaterloggedBlock { builder.add(LEVEL, WATERLOGGED); } + // Paper start - prevent unintended light block manipulation + @Override -+ protected net.minecraft.world.ItemInteractionResult useItemOn(final ItemStack stack, final BlockState state, final Level world, final BlockPos pos, final Player player, final net.minecraft.world.InteractionHand hand, final BlockHitResult hit) { -+ if (player.getItemInHand(hand).getItem() != Items.LIGHT || !player.mayInteract(world, pos) || !player.mayUseItemAt(pos, hit.getDirection(), player.getItemInHand(hand))) { return net.minecraft.world.ItemInteractionResult.SKIP_DEFAULT_BLOCK_INTERACTION; } // Paper - Prevent unintended light block manipulation ++ protected InteractionResult useItemOn(ItemStack stack, BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { ++ if (player.getItemInHand(hand).getItem() != Items.LIGHT || (world instanceof final ServerLevel serverLevel && !player.mayInteract(serverLevel, pos)) || !player.mayUseItemAt(pos, hit.getDirection(), player.getItemInHand(hand))) { return net.minecraft.world.InteractionResult.PASS; } // Paper - Prevent unintended light block manipulation + return super.useItemOn(stack, state, world, pos, player, hand, hit); + } + // Paper end - prevent unintended light block manipulation diff --git a/patches/server/0622-don-t-attempt-to-teleport-dead-entities.patch b/patches/server/0622-don-t-attempt-to-teleport-dead-entities.patch index 667b51a957..cefb2c7fc0 100644 --- a/patches/server/0622-don-t-attempt-to-teleport-dead-entities.patch +++ b/patches/server/0622-don-t-attempt-to-teleport-dead-entities.patch @@ -5,7 +5,7 @@ Subject: [PATCH] don't attempt to teleport dead entities diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index b54dcebbd5d2f920efcf91ff2de485493dd2f487..e311601d8e39e7ea632bc4805260da6d7d6d6776 100644 +index 366c3165783d3856d9f47f0dd4a594016d9f41ed..8b5dc4b3ddb89fcc286c432400e3bc94b8787e4c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -713,7 +713,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0623-Prevent-excessive-velocity-through-repeated-crits.patch b/patches/server/0623-Prevent-excessive-velocity-through-repeated-crits.patch index 8c7b52d7c5..9db70149e6 100644 --- a/patches/server/0623-Prevent-excessive-velocity-through-repeated-crits.patch +++ b/patches/server/0623-Prevent-excessive-velocity-through-repeated-crits.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent excessive velocity through repeated crits diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f7e14d9668c74e20bc327b05cf84c8203e4e590b..4db8ac288e59c5f14b260686e55a7d48e2f2791d 100644 +index 21f9fc5c3111dc126d0197a02bb61541fc422933..8c7ffa884f64a4263c9399953a7cfca6e35aab61 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2865,17 +2865,29 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0632-Forward-CraftEntity-in-teleport-command.patch b/patches/server/0632-Forward-CraftEntity-in-teleport-command.patch index b03dbe2831..1af3ec979c 100644 --- a/patches/server/0632-Forward-CraftEntity-in-teleport-command.patch +++ b/patches/server/0632-Forward-CraftEntity-in-teleport-command.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Forward CraftEntity in teleport command diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e311601d8e39e7ea632bc4805260da6d7d6d6776..1497c3b79e6dc9ecc270c0fd2003e606f967a56e 100644 +index 8b5dc4b3ddb89fcc286c432400e3bc94b8787e4c..ef923b1cdbe6276d6dc9776bd9e5a508bd021fc0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3480,6 +3480,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0651-Freeze-Tick-Lock-API.patch b/patches/server/0651-Freeze-Tick-Lock-API.patch index f978617977..76a992877a 100644 --- a/patches/server/0651-Freeze-Tick-Lock-API.patch +++ b/patches/server/0651-Freeze-Tick-Lock-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Freeze Tick Lock API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1497c3b79e6dc9ecc270c0fd2003e606f967a56e..a41bb1d80a84f487a8fb6fdefd7ccc7631902d04 100644 +index ef923b1cdbe6276d6dc9776bd9e5a508bd021fc0..681295efe26a75af61d9ac311e002dfb26ffd8c6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -414,6 +414,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -46,7 +46,7 @@ index 1497c3b79e6dc9ecc270c0fd2003e606f967a56e..a41bb1d80a84f487a8fb6fdefd7ccc76 } catch (Throwable throwable) { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4db8ac288e59c5f14b260686e55a7d48e2f2791d..6598f119edc5d890dcc9d065478e7c52ac5a5183 100644 +index 8c7ffa884f64a4263c9399953a7cfca6e35aab61..0aa7291b3c28c58767fed5f9f01e381b671b5d27 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3611,7 +3611,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0663-Option-to-have-default-CustomSpawners-in-custom-worl.patch b/patches/server/0663-Option-to-have-default-CustomSpawners-in-custom-worl.patch index 94613610ac..45ef226165 100644 --- a/patches/server/0663-Option-to-have-default-CustomSpawners-in-custom-worl.patch +++ b/patches/server/0663-Option-to-have-default-CustomSpawners-in-custom-worl.patch @@ -10,7 +10,7 @@ just looking at the LevelStem key, look at the DimensionType key which is one level below that. Defaults to off to keep vanilla behavior. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index af392711da61a1921be1f82396c2a04dc897d563..7841421f00a3408e52b8d060674e6a686681210e 100644 +index af392711da61a1921be1f82396c2a04dc897d563..2a92a8a4896a1ce27b3f6e8c5b965c1efb70127e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -647,7 +647,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop spawners; -+ if (io.papermc.paper.configuration.GlobalConfiguration.get().misc.useDimensionTypeForCustomSpawners && this.registryAccess().registryOrThrow(Registries.DIMENSION_TYPE).getResourceKey(worlddimension.type().value()).orElseThrow() == net.minecraft.world.level.dimension.BuiltinDimensionTypes.OVERWORLD) { ++ if (io.papermc.paper.configuration.GlobalConfiguration.get().misc.useDimensionTypeForCustomSpawners && this.registryAccess().lookupOrThrow(Registries.DIMENSION_TYPE).getResourceKey(worlddimension.type().value()).orElseThrow() == net.minecraft.world.level.dimension.BuiltinDimensionTypes.OVERWORLD) { + spawners = list; + } else { + spawners = Collections.emptyList(); diff --git a/patches/server/0664-Put-world-into-worldlist-before-initing-the-world.patch b/patches/server/0664-Put-world-into-worldlist-before-initing-the-world.patch index b1cada3470..1dfaf980a2 100644 --- a/patches/server/0664-Put-world-into-worldlist-before-initing-the-world.patch +++ b/patches/server/0664-Put-world-into-worldlist-before-initing-the-world.patch @@ -7,7 +7,7 @@ Some parts of legacy conversion will need the overworld to get the legacy structure data storage diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7841421f00a3408e52b8d060674e6a686681210e..cc162b2046c7d39d9a85bcb69fc45e53d15fe5ef 100644 +index 2a92a8a4896a1ce27b3f6e8c5b965c1efb70127e..6567f23cecae8ffc82d14ff34f054182443ce5fb 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -659,9 +659,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0); this.dropCustomDeathLoot(this.serverLevel(), damageSource, flag); diff --git a/patches/server/0681-Ensure-entity-passenger-world-matches-ridden-entity.patch b/patches/server/0681-Ensure-entity-passenger-world-matches-ridden-entity.patch index 941971cf97..6a4d8ee248 100644 --- a/patches/server/0681-Ensure-entity-passenger-world-matches-ridden-entity.patch +++ b/patches/server/0681-Ensure-entity-passenger-world-matches-ridden-entity.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Ensure entity passenger world matches ridden entity Bad plugins doing this would cause some obvious problems... diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a41bb1d80a84f487a8fb6fdefd7ccc7631902d04..325c8b178dfb39727107190e74663113ebb4ab54 100644 +index 681295efe26a75af61d9ac311e002dfb26ffd8c6..e1da49ec70f03940ce7c0fa23bcbc5cfb2494fc6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2802,7 +2802,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0694-Add-PlayerStopUsingItemEvent.patch b/patches/server/0694-Add-PlayerStopUsingItemEvent.patch index fb3326f4c0..c7cab9712f 100644 --- a/patches/server/0694-Add-PlayerStopUsingItemEvent.patch +++ b/patches/server/0694-Add-PlayerStopUsingItemEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerStopUsingItemEvent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 6598f119edc5d890dcc9d065478e7c52ac5a5183..682d0399b9b3729d16978eca258c55c2150afec7 100644 +index 0aa7291b3c28c58767fed5f9f01e381b671b5d27..d41c0f1aa501cbe17c88029bafbe034901f6d562 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -4204,6 +4204,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0702-Prevent-entity-loading-causing-async-lookups.patch b/patches/server/0702-Prevent-entity-loading-causing-async-lookups.patch index 342f805e03..ee2ca735fd 100644 --- a/patches/server/0702-Prevent-entity-loading-causing-async-lookups.patch +++ b/patches/server/0702-Prevent-entity-loading-causing-async-lookups.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Prevent entity loading causing async lookups diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 325c8b178dfb39727107190e74663113ebb4ab54..71efd269ea055f13e3ca898bad045448e24f73da 100644 +index e1da49ec70f03940ce7c0fa23bcbc5cfb2494fc6..37111113f6ab6d77c558b10c4162758135db99b0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -724,6 +724,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0703-Throw-exception-on-world-create-while-being-ticked.patch b/patches/server/0703-Throw-exception-on-world-create-while-being-ticked.patch index 1661a4705f..a447e15d32 100644 --- a/patches/server/0703-Throw-exception-on-world-create-while-being-ticked.patch +++ b/patches/server/0703-Throw-exception-on-world-create-while-being-ticked.patch @@ -7,7 +7,7 @@ There are no plans to support creating worlds while worlds are being ticked themselvess. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0b9f4541cc0d0f27e811c1a6798d6758a2687b0c..2101c0a3b000a60733ceada248c202e2c4783af5 100644 +index 9765951d0ed653ca5b4ae4903887ec7ef25cb50a..8030baa8ef189a17502da9c51baace0b7369137b 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -328,6 +328,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop net.minecraft.world.entity.RelativeMovement.X; -+ case Y -> net.minecraft.world.entity.RelativeMovement.Y; -+ case Z -> net.minecraft.world.entity.RelativeMovement.Z; -+ case PITCH -> net.minecraft.world.entity.RelativeMovement.X_ROT; -+ case YAW -> net.minecraft.world.entity.RelativeMovement.Y_ROT; ++ case X -> net.minecraft.world.entity.Relative.X; ++ case Y -> net.minecraft.world.entity.Relative.Y; ++ case Z -> net.minecraft.world.entity.Relative.Z; ++ case PITCH -> net.minecraft.world.entity.Relative.X_ROT; ++ case YAW -> net.minecraft.world.entity.Relative.Y_ROT; + }; + } + -+ public static io.papermc.paper.entity.TeleportFlag.Relative toApiRelativeFlag(net.minecraft.world.entity.RelativeMovement nmsFlag) { ++ public static io.papermc.paper.entity.TeleportFlag.Relative toApiRelativeFlag(net.minecraft.world.entity.Relative nmsFlag) { + return switch (nmsFlag) { + case X -> io.papermc.paper.entity.TeleportFlag.Relative.X; + case Y -> io.papermc.paper.entity.TeleportFlag.Relative.Y; + case Z -> io.papermc.paper.entity.TeleportFlag.Relative.Z; + case X_ROT -> io.papermc.paper.entity.TeleportFlag.Relative.PITCH; + case Y_ROT -> io.papermc.paper.entity.TeleportFlag.Relative.YAW; ++ default -> throw new RuntimeException("not yet"); // TODO figure out what to do with new flags + }; + } + @@ -218,7 +219,7 @@ index 0bb2a75b2dd3d6d5d7815d3f4b1d8b11b002db62..d2029d88a4d9b060e199431ae092ce87 location.checkFinite(); ServerPlayer entity = this.getHandle(); -@@ -1322,7 +1410,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1322,7 +1411,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return false; } @@ -227,7 +228,7 @@ index 0bb2a75b2dd3d6d5d7815d3f4b1d8b11b002db62..d2029d88a4d9b060e199431ae092ce87 return false; } -@@ -1331,7 +1419,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1331,7 +1420,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // To = Players new Location if Teleport is Successful Location to = location; // Create & Call the Teleport Event. @@ -236,7 +237,7 @@ index 0bb2a75b2dd3d6d5d7815d3f4b1d8b11b002db62..d2029d88a4d9b060e199431ae092ce87 this.server.getPluginManager().callEvent(event); // Return False to inform the Plugin that the Teleport was unsuccessful/cancelled. -@@ -1340,7 +1428,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1340,7 +1429,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } // If this player is riding another entity, we must dismount before teleporting. @@ -245,7 +246,7 @@ index 0bb2a75b2dd3d6d5d7815d3f4b1d8b11b002db62..d2029d88a4d9b060e199431ae092ce87 // SPIGOT-5509: Wakeup, similar to riding if (this.isSleeping()) { -@@ -1356,13 +1444,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1356,13 +1445,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player { ServerLevel toWorld = ((CraftWorld) to.getWorld()).getHandle(); // Close any foreign inventory @@ -258,7 +259,7 @@ index 0bb2a75b2dd3d6d5d7815d3f4b1d8b11b002db62..d2029d88a4d9b060e199431ae092ce87 if (fromWorld == toWorld) { - entity.connection.teleport(to); + // Paper start - Teleport API -+ final Set nms = java.util.EnumSet.noneOf(net.minecraft.world.entity.RelativeMovement.class); ++ final Set nms = java.util.EnumSet.noneOf(net.minecraft.world.entity.Relative.class); + for (final io.papermc.paper.entity.TeleportFlag.Relative bukkit : relativeArguments) { + nms.add(toNmsRelativeFlag(bukkit)); + } diff --git a/patches/server/0722-Custom-Chat-Completion-Suggestions-API.patch b/patches/server/0722-Custom-Chat-Completion-Suggestions-API.patch index f1b41f3210..7a419b3d74 100644 --- a/patches/server/0722-Custom-Chat-Completion-Suggestions-API.patch +++ b/patches/server/0722-Custom-Chat-Completion-Suggestions-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Custom Chat Completion Suggestions API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d2029d88a4d9b060e199431ae092ce87ad5a09de..7fd3cb7c69aa212449739f5733de661af662611f 100644 +index 2514fbae7c87a96c12e44d21ff7df1d2f3243387..dc360a7a8a8d23be9d8301a5e6fbff5499c9a947 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -708,6 +708,24 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0729-Fix-plugin-loggers-on-server-shutdown.patch b/patches/server/0729-Fix-plugin-loggers-on-server-shutdown.patch index 6c058f039b..2256a7261e 100644 --- a/patches/server/0729-Fix-plugin-loggers-on-server-shutdown.patch +++ b/patches/server/0729-Fix-plugin-loggers-on-server-shutdown.patch @@ -37,7 +37,7 @@ index 0000000000000000000000000000000000000000..c1d3bac79bb8b4796c013ff4472f75dc + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 2101c0a3b000a60733ceada248c202e2c4783af5..027d94dd08e7789b51c8779c65d4ddad4e62f21a 100644 +index 8030baa8ef189a17502da9c51baace0b7369137b..7d7e1848e7074a0ec94fe924e328f15cb247c291 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1279,6 +1279,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 682d0399b9b3729d16978eca258c55c2150afec7..16f349f8ce621c58f36f445016ea25d8af14910d 100644 +index d41c0f1aa501cbe17c88029bafbe034901f6d562..7705c791bfbb386f0b9f326c4b0ee0057ed0e6f5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3272,37 +3272,15 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0746-Add-PlayerInventorySlotChangeEvent.patch b/patches/server/0746-Add-PlayerInventorySlotChangeEvent.patch index 74685096a5..cca34b90d0 100644 --- a/patches/server/0746-Add-PlayerInventorySlotChangeEvent.patch +++ b/patches/server/0746-Add-PlayerInventorySlotChangeEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerInventorySlotChangeEvent diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index f87f12666d4708b7fb7ede3eff03570fed8d1f40..bb0aaa16f0de18b15764ba39a781e8b86d690bb9 100644 +index 312225a15261f2e80fbf6133c75c567574ade181..04e3c75c9abfaccb6d2d59d234e5169258b77553 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -381,6 +381,25 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { diff --git a/patches/server/0747-Elder-Guardian-appearance-API.patch b/patches/server/0747-Elder-Guardian-appearance-API.patch index 75a2208ae0..4a603b81c0 100644 --- a/patches/server/0747-Elder-Guardian-appearance-API.patch +++ b/patches/server/0747-Elder-Guardian-appearance-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Elder Guardian appearance API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7fd3cb7c69aa212449739f5733de661af662611f..997a90a7567a90ef357530f9ed5677f0fce4d402 100644 +index dc360a7a8a8d23be9d8301a5e6fbff5499c9a947..74cfa4313c8aba96b792d7855627be68efc41d51 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3325,6 +3325,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3326,6 +3326,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } // Paper end diff --git a/patches/server/0756-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch b/patches/server/0756-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch index 45c6c70db5..ff618c7595 100644 --- a/patches/server/0756-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch +++ b/patches/server/0756-Fix-EntityCombustEvent-cancellation-cant-fully-preve.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Fix EntityCombustEvent cancellation cant fully prevent diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 44f585b9dc9e3940193f07a2df1205907b4800ba..24834be9b5596745f9456488076bd89c3c7d2352 100644 +index 911b6391455402922e8bd52cfe9e5694231c81c3..31cb6c4357afc934a5e6e1a7a9222ac54175459d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3320,6 +3320,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0759-Add-Player-Warden-Warning-API.patch b/patches/server/0759-Add-Player-Warden-Warning-API.patch index 32eaa6033a..c44c1b1bc3 100644 --- a/patches/server/0759-Add-Player-Warden-Warning-API.patch +++ b/patches/server/0759-Add-Player-Warden-Warning-API.patch @@ -10,10 +10,10 @@ public net.minecraft.world.entity.monster.warden.WardenSpawnTracker cooldownTick public net.minecraft.world.entity.monster.warden.WardenSpawnTracker increaseWarningLevel()V diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 997a90a7567a90ef357530f9ed5677f0fce4d402..2eafa35e87411ae0b78f445d3d0573ba6e832797 100644 +index 74cfa4313c8aba96b792d7855627be68efc41d51..a000d41fd6b6d9e690ea2a16ac1bd77589b64f14 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3330,6 +3330,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3331,6 +3331,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void showElderGuardian(boolean silent) { if (getHandle().connection != null) getHandle().connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.GUARDIAN_ELDER_EFFECT, silent ? 0F : 1F)); } diff --git a/patches/server/0762-check-global-player-list-where-appropriate.patch b/patches/server/0762-check-global-player-list-where-appropriate.patch index f64210126b..586cac4e19 100644 --- a/patches/server/0762-check-global-player-list-where-appropriate.patch +++ b/patches/server/0762-check-global-player-list-where-appropriate.patch @@ -24,7 +24,7 @@ index 4b2309d27867eddc50093e895503e02184e1b825..3eaeeb3ec715d92fe99e14c37e224cb1 + // Paper end - check global player list where appropriate } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 16f349f8ce621c58f36f445016ea25d8af14910d..0a52f925b0ef28ca7cee067a40d5dc4d30c224b0 100644 +index 7705c791bfbb386f0b9f326c4b0ee0057ed0e6f5..2c343617f9467bbef03f4d131ce94b1f1a090a80 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3867,7 +3867,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0765-Friction-API.patch b/patches/server/0765-Friction-API.patch index ff71242367..469868818a 100644 --- a/patches/server/0765-Friction-API.patch +++ b/patches/server/0765-Friction-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Friction API diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0a52f925b0ef28ca7cee067a40d5dc4d30c224b0..abcb1065100597f66c9f76fdae5f873fa0d8f315 100644 +index 2c343617f9467bbef03f4d131ce94b1f1a090a80..5520d0cdd5af75a6188a68f809aafb6c5880878a 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -298,6 +298,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0767-Fix-premature-player-kicks-on-shutdown.patch b/patches/server/0767-Fix-premature-player-kicks-on-shutdown.patch index 0eec1f8900..75bc0623ab 100644 --- a/patches/server/0767-Fix-premature-player-kicks-on-shutdown.patch +++ b/patches/server/0767-Fix-premature-player-kicks-on-shutdown.patch @@ -47,7 +47,7 @@ index 4d9f1fc884050993287adfa4578a87da710623fb..a8dfe7a4b3d01bf75587be078f471d1e this.disconnect((Component) Component.translatable("multiplayer.disconnect.server_shutdown")); } catch (ClassCastException classcastexception) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 027d94dd08e7789b51c8779c65d4ddad4e62f21a..53c9be615a0f2939cd989e24e304e81e6e27f39d 100644 +index 7d7e1848e7074a0ec94fe924e328f15cb247c291..6cebf229cc5b1eedff45f10db70a4a4f323937b8 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2170,7 +2170,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= 2.0F) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 283e7caa8c564bb0455e29f1ee606b6993f3e57c..d9164eda358b56fe5e3b88e9bc7e23ab39034f0f 100644 +index a70db1d658127ed72f82580c1dd743c6c9d5f809..7029f8c76a18b76ab13e43f2d0ec4f910646caee 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2608,6 +2608,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2609,6 +2609,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.getHandle().onUpdateAbilities(); } diff --git a/patches/server/0781-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch b/patches/server/0781-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch index 7da0a4ef65..98305f38a5 100644 --- a/patches/server/0781-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch +++ b/patches/server/0781-Expose-pre-collision-moving-velocity-to-VehicleBlock.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Expose pre-collision moving velocity to diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 960b3541140bfe36fda5cdb43e3408bbc9db5fde..2c959a99376ed479415354c481801643c5f6b1a1 100644 +index 1d21914ee8193cee8d7a8273f8e6932697b15c3c..6c4171aa43afa679946c8d8a08445bf5741aba8e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -968,6 +968,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0784-Correctly-shrink-items-during-EntityResurrectEvent.patch b/patches/server/0784-Correctly-shrink-items-during-EntityResurrectEvent.patch index 48eae9b3ec..c14b325882 100644 --- a/patches/server/0784-Correctly-shrink-items-during-EntityResurrectEvent.patch +++ b/patches/server/0784-Correctly-shrink-items-during-EntityResurrectEvent.patch @@ -22,7 +22,7 @@ This patch corrects this behaviour by only shrinking the item if a totem of undying was found and the event was called uncancelled. diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index abcb1065100597f66c9f76fdae5f873fa0d8f315..447fb76a3eb1505b1ef1e1aed8a11239c0124f4f 100644 +index 5520d0cdd5af75a6188a68f809aafb6c5880878a..da42691504177e1e2614db777cbe346f73725eda 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1674,7 +1674,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0785-Win-Screen-API.patch b/patches/server/0785-Win-Screen-API.patch index f52ebd1415..981c12ddbe 100644 --- a/patches/server/0785-Win-Screen-API.patch +++ b/patches/server/0785-Win-Screen-API.patch @@ -7,7 +7,7 @@ Subject: [PATCH] Win Screen API public net.minecraft.server.level.ServerPlayer seenCredits diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d9164eda358b56fe5e3b88e9bc7e23ab39034f0f..e6a678dee21b51d5f7005c2cf5038089447d0e7c 100644 +index 7029f8c76a18b76ab13e43f2d0ec4f910646caee..e90f477207ca0107e23cb29da0cacf6fed3dcfc4 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1322,6 +1322,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0794-Fix-advancement-triggers-for-entity-damage.patch b/patches/server/0794-Fix-advancement-triggers-for-entity-damage.patch index fff5e6ce25..d85577a078 100644 --- a/patches/server/0794-Fix-advancement-triggers-for-entity-damage.patch +++ b/patches/server/0794-Fix-advancement-triggers-for-entity-damage.patch @@ -23,7 +23,7 @@ index 821bb93e1b055ba38fafe3b7079d79aa062ebe8a..221d73676fe2fd240a47cf312c1179e0 return !this.getResponse(); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 447fb76a3eb1505b1ef1e1aed8a11239c0124f4f..95bbde31de42e1e12d722de86085e59050f1c3ae 100644 +index da42691504177e1e2614db777cbe346f73725eda..a4d24269c1365f32f232116f1530ac75b096c6ab 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -2465,7 +2465,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0810-Expand-PlayerItemMendEvent.patch b/patches/server/0810-Expand-PlayerItemMendEvent.patch index 396bdd4c45..10de3ba9b2 100644 --- a/patches/server/0810-Expand-PlayerItemMendEvent.patch +++ b/patches/server/0810-Expand-PlayerItemMendEvent.patch @@ -30,10 +30,10 @@ index 3a7af27bb1ce0cbe56bd3760cd400083daf98d4c..bf0838f574fa3fb9654e087d602b8d38 if (l > 0) { // this.value = l; // CraftBukkit - update exp value of orb for PlayerItemMendEvent calls // Paper - the value field should not be mutated here because it doesn't take "count" into account diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e6a678dee21b51d5f7005c2cf5038089447d0e7c..90187f6412a073a3c89da3eb01310e39406bb69c 100644 +index e90f477207ca0107e23cb29da0cacf6fed3dcfc4..de0dc5b37bd0823409974befdd96676b2575cf48 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1880,11 +1880,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1881,11 +1881,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player { handle.serverLevel(), itemstack, amount ); int i = Math.min(possibleDurabilityFromXp, itemstack.getDamageValue()); diff --git a/patches/server/0811-Refresh-ProjectileSource-for-projectiles.patch b/patches/server/0811-Refresh-ProjectileSource-for-projectiles.patch index 7bc80ccda2..1cac178f6b 100644 --- a/patches/server/0811-Refresh-ProjectileSource-for-projectiles.patch +++ b/patches/server/0811-Refresh-ProjectileSource-for-projectiles.patch @@ -14,7 +14,7 @@ clearing the owner. Co-authored-by: Warrior <50800980+Warriorrrr@users.noreply.github.com> diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2c959a99376ed479415354c481801643c5f6b1a1..8cdef637f6343119fc77f87e7478ee23e9b8efab 100644 +index 6c4171aa43afa679946c8d8a08445bf5741aba8e..ebd2bf1c16833ea8157bc3e3ef1f5730f646294f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -393,6 +393,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0825-Don-t-load-chunks-for-supporting-block-checks.patch b/patches/server/0825-Don-t-load-chunks-for-supporting-block-checks.patch index 1feebdd77f..bcb87c4448 100644 --- a/patches/server/0825-Don-t-load-chunks-for-supporting-block-checks.patch +++ b/patches/server/0825-Don-t-load-chunks-for-supporting-block-checks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Don't load chunks for supporting block checks diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 8cdef637f6343119fc77f87e7478ee23e9b8efab..3ef1352030bf1d6f4d2053158caea852552e91a7 100644 +index ebd2bf1c16833ea8157bc3e3ef1f5730f646294f..82d7d0038b269ea310571eb1c109ddd2afac39f7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1228,7 +1228,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0829-Fix-BanList-API.patch b/patches/server/0829-Fix-BanList-API.patch index 2621cc9868..58b6ec4b04 100644 --- a/patches/server/0829-Fix-BanList-API.patch +++ b/patches/server/0829-Fix-BanList-API.patch @@ -208,10 +208,10 @@ index 172202accf4448a933fcf1ff820316c7910dd7f7..50ee7656580d386db473c054f5c5ec57 return null; } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 90187f6412a073a3c89da3eb01310e39406bb69c..78a12f857db37ec5305d6c14847bc7653669bcc0 100644 +index de0dc5b37bd0823409974befdd96676b2575cf48..642cdf6a205017b9835ad423206617fd3b9a32bf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1774,23 +1774,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1775,23 +1775,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } @Override @@ -240,7 +240,7 @@ index 90187f6412a073a3c89da3eb01310e39406bb69c..78a12f857db37ec5305d6c14847bc765 if (kickPlayer) { this.kickPlayer(reason); } -@@ -1798,12 +1798,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1799,12 +1799,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } @Override diff --git a/patches/server/0837-Folia-scheduler-and-owned-region-API.patch b/patches/server/0837-Folia-scheduler-and-owned-region-API.patch index e6316ec4c7..b390808ca1 100644 --- a/patches/server/0837-Folia-scheduler-and-owned-region-API.patch +++ b/patches/server/0837-Folia-scheduler-and-owned-region-API.patch @@ -1148,7 +1148,7 @@ index 0000000000000000000000000000000000000000..d306f911757a4d556c82c0070d4837db + } +} diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 53c9be615a0f2939cd989e24e304e81e6e27f39d..f1b1be0caff83720d77454d333abae4613c66e72 100644 +index 6cebf229cc5b1eedff45f10db70a4a4f323937b8..5699863e790bd5f452a37514d1309fbddec0c64a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1654,6 +1654,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> pluginWeakReferences = new WeakHashMap<>(); private int hash = 0; private double health = 20; -@@ -2119,7 +2120,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2120,7 +2121,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { otherPlayer.setUUID(uuidOverride); } // Paper end @@ -142,7 +142,7 @@ index 3b0d27c6c07ce4bce0b4ab8877d94a937708d2ae..2658c7a0257d7bab26d043626abb9f23 if (original != null) otherPlayer.setUUID(original); // Paper - uuid override } -@@ -2223,6 +2224,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2224,6 +2225,41 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return (entity != null) ? this.canSee(entity) : false; // If we can't find it, we can't see it } diff --git a/patches/server/0858-Fix-NPE-on-Boat-getStatus.patch b/patches/server/0858-Fix-NPE-on-Boat-getStatus.patch index b241399761..8ec449ba6c 100644 --- a/patches/server/0858-Fix-NPE-on-Boat-getStatus.patch +++ b/patches/server/0858-Fix-NPE-on-Boat-getStatus.patch @@ -9,7 +9,7 @@ Boat status is null until the entity is added to the world and the tick() method public net.minecraft.world.entity.vehicle.Boat getStatus()Lnet/minecraft/world/entity/vehicle/Boat$Status; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java -index 5de1ada561d11c247a597effab1e0aa363b7c90f..412fd9e87ec81cf50cb8bc82fe2dad5dd0029039 100644 +index 5d51a49228eaee94f91cd04843e27c7918ca8796..8e9d382693047ed202e9b7cafb934700fd830827 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java @@ -87,6 +87,17 @@ public abstract class CraftBoat extends CraftVehicle implements Boat { diff --git a/patches/server/0859-Expand-Pose-API.patch b/patches/server/0859-Expand-Pose-API.patch index fb6535a3d5..891dd712d6 100644 --- a/patches/server/0859-Expand-Pose-API.patch +++ b/patches/server/0859-Expand-Pose-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Expand Pose API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index aeeb90481a9ac0a8ec9e3c5af08a32ca3e32bfb6..a8a5b28d95f7c3ce944f51993dd0c0eb98e3c550 100644 +index d8331b2d4ad3ebebb6ecbbf083f3464dad38f623..63e68376d1854f4f7ff1a1d0a11fcec1b8c3b61a 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -427,6 +427,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0865-Implement-OfflinePlayer-isConnected.patch b/patches/server/0865-Implement-OfflinePlayer-isConnected.patch index 245ae43622..6c7d4f55cc 100644 --- a/patches/server/0865-Implement-OfflinePlayer-isConnected.patch +++ b/patches/server/0865-Implement-OfflinePlayer-isConnected.patch @@ -23,7 +23,7 @@ index 2c2c4db31a746b4eb853dc04c6b3e5631bbfa034..4f4e3ee18d586f61706504218cddc06a public String getName() { Player player = this.getPlayer(); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2658c7a0257d7bab26d043626abb9f2310f284e2..060f4cade69dbd41e96d1684b4fba34762f5eaa7 100644 +index 7104ffd4dd72a053793eb52c8df29eadbd184221..ea5e3973a4021a4584d3b8b33c9d50001f4c0fe6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -261,6 +261,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0866-Fix-slot-desync.patch b/patches/server/0866-Fix-slot-desync.patch index b85e196ed6..afdb75279e 100644 --- a/patches/server/0866-Fix-slot-desync.patch +++ b/patches/server/0866-Fix-slot-desync.patch @@ -10,7 +10,7 @@ Co-authored-by: Minecrell Co-authored-by: Newwind diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1a7d2ade0e85dd5e6cd6c9202e3277cc2fa43d4a..37defbc0674e67a26e5a9aebb811310ef12878ee 100644 +index f05a9fd321a4af28e9771bbf39d73f80dd4160c9..90aa8e401e1d092a31ff21699409b8366629cdcc 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -460,6 +460,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @@ -40,7 +40,7 @@ index d4250cc73bc51c51b78a9392a9879d47dc67f159..182897b4ab9415b7aab0b968274993dd if (event.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a8a5b28d95f7c3ce944f51993dd0c0eb98e3c550..ba57deb4e10bba180429cca4d8c864ab869065c7 100644 +index 63e68376d1854f4f7ff1a1d0a11fcec1b8c3b61a..e9142414c7d247ae2a27c0bc9ea2be3bb8e3db16 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2752,8 +2752,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0867-Add-titleOverride-to-InventoryOpenEvent.patch b/patches/server/0867-Add-titleOverride-to-InventoryOpenEvent.patch index 05e37009fd..1b98c1b4a0 100644 --- a/patches/server/0867-Add-titleOverride-to-InventoryOpenEvent.patch +++ b/patches/server/0867-Add-titleOverride-to-InventoryOpenEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add titleOverride to InventoryOpenEvent diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 37defbc0674e67a26e5a9aebb811310ef12878ee..b0b4bede6f25b8a0de54d954c7010021f87aadc3 100644 +index 90aa8e401e1d092a31ff21699409b8366629cdcc..419fcb4cd97cf10a2601e02024b999a51a0ff952 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1924,12 +1924,17 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { diff --git a/patches/server/0882-Fix-missing-map-initialize-event-call.patch b/patches/server/0882-Fix-missing-map-initialize-event-call.patch index 099784fcc0..795f551f59 100644 --- a/patches/server/0882-Fix-missing-map-initialize-event-call.patch +++ b/patches/server/0882-Fix-missing-map-initialize-event-call.patch @@ -7,10 +7,10 @@ Subject: [PATCH] Fix missing map initialize event call public net.minecraft.world.level.storage.DimensionDataStorage readSavedData(Ljava/util/function/Function;Lnet/minecraft/util/datafix/DataFixTypes;Ljava/lang/String;)Lnet/minecraft/world/level/saveddata/SavedData; diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1cb5e107a391ab56942cdb2d1cae7d5646a85ec6..39dba6c2e9de2c1d6716945a49d48d9b76a07c77 100644 +index 1cb5e107a391ab56942cdb2d1cae7d5646a85ec6..7acb24c2a34fdcbcb1c0e3cc03b01996689667d3 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1726,13 +1726,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1726,13 +1726,29 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Nullable @Override public MapItemSavedData getMapData(MapId id) { @@ -21,22 +21,27 @@ index 1cb5e107a391ab56942cdb2d1cae7d5646a85ec6..39dba6c2e9de2c1d6716945a49d48d9b + // Paper start - Call missing map initialize event and set id + final DimensionDataStorage storage = this.getServer().overworld().getDataStorage(); + -+ final net.minecraft.world.level.saveddata.SavedData existing = storage.cache.get(id.key()); -+ if (existing == null && !storage.cache.containsKey(id.key())) { -+ final MapItemSavedData worldmap = (MapItemSavedData) this.getServer().overworld().getDataStorage().get(MapItemSavedData.factory(), id.key()); -+ storage.cache.put(id.key(), worldmap); -+ if (worldmap != null) { ++ final Optional cacheEntry = storage.cache.get(id.key()); ++ if (cacheEntry == null) { // Cache did not contain, try to load and may init ++ final MapItemSavedData worldmap = storage.get(MapItemSavedData.factory(), id.key()); // get populates the cache ++ if (worldmap != null) { // map was read, init it and return + worldmap.id = id; + new MapInitializeEvent(worldmap.mapView).callEvent(); + return worldmap; + } -+ } else if (existing instanceof MapItemSavedData mapItemSavedData) { -+ mapItemSavedData.id = id; ++ ++ return null; // Map does not exist, reading failed. } - return worldmap; - // CraftBukkit end + -+ return existing instanceof MapItemSavedData data ? data : null; ++ // Cache entry exists, update it with the id ref and return. ++ if (cacheEntry.orElse(null) instanceof final MapItemSavedData mapItemSavedData) { ++ mapItemSavedData.id = id; ++ return mapItemSavedData; ++ } ++ ++ return null; + // Paper end - Call missing map initialize event and set id } diff --git a/patches/server/0885-Add-player-idle-duration-API.patch b/patches/server/0885-Add-player-idle-duration-API.patch index 69a1a77c2f..d715a2ed4a 100644 --- a/patches/server/0885-Add-player-idle-duration-API.patch +++ b/patches/server/0885-Add-player-idle-duration-API.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Add player idle duration API Implements API for getting and resetting a player's idle duration. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 060f4cade69dbd41e96d1684b4fba34762f5eaa7..1681653f686133b5d2c0c10c368f86134b295d20 100644 +index ea5e3973a4021a4584d3b8b33c9d50001f4c0fe6..c73089566eccc15aa747e3e3707d089a0f2b8d1d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3446,6 +3446,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3447,6 +3447,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } // Paper end diff --git a/patches/server/0888-Allow-null-itemstack-for-Player-sendEquipmentChange.patch b/patches/server/0888-Allow-null-itemstack-for-Player-sendEquipmentChange.patch index d52f931c35..fe05ccc109 100644 --- a/patches/server/0888-Allow-null-itemstack-for-Player-sendEquipmentChange.patch +++ b/patches/server/0888-Allow-null-itemstack-for-Player-sendEquipmentChange.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow null itemstack for Player#sendEquipmentChange diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 1681653f686133b5d2c0c10c368f86134b295d20..bdc9ac5bee552c1de110d6588d3850a6b3cd5723 100644 +index c73089566eccc15aa747e3e3707d089a0f2b8d1d..74b90ee971ec799cf19551ac63a9b01f77500967 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1144,7 +1144,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0891-Add-predicate-for-blocks-when-raytracing.patch b/patches/server/0891-Add-predicate-for-blocks-when-raytracing.patch index bd4cb684e6..438ccfb267 100644 --- a/patches/server/0891-Add-predicate-for-blocks-when-raytracing.patch +++ b/patches/server/0891-Add-predicate-for-blocks-when-raytracing.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add predicate for blocks when raytracing diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java -index cc9ae2122b563d7b583c7335d0a8ce227f9b1af4..d00ebcd6fccbf1d1efe83604ed86d317119be5f8 100644 +index 7e1a332168357b9af14dbe3299549c2c93903fa6..93738c7dea1ea3d19013a47380391274612a719b 100644 --- a/src/main/java/net/minecraft/world/level/BlockGetter.java +++ b/src/main/java/net/minecraft/world/level/BlockGetter.java @@ -71,6 +71,12 @@ public interface BlockGetter extends LevelHeightAccessor { @@ -22,7 +22,7 @@ index cc9ae2122b563d7b583c7335d0a8ce227f9b1af4..d00ebcd6fccbf1d1efe83604ed86d317 BlockState iblockdata = this.getBlockStateIfLoaded(blockposition); if (iblockdata == null) { @@ -80,7 +86,7 @@ public interface BlockGetter extends LevelHeightAccessor { - return BlockHitResult.miss(raytrace1.getTo(), Direction.getNearest(vec3d.x, vec3d.y, vec3d.z), BlockPos.containing(raytrace1.getTo())); + return BlockHitResult.miss(raytrace1.getTo(), Direction.getApproximateNearest(vec3d.x, vec3d.y, vec3d.z), BlockPos.containing(raytrace1.getTo())); } // Paper end - Prevent raytrace from loading chunks - if (iblockdata.isAir()) return null; // Paper - Perf: optimise air cases diff --git a/patches/server/0892-Broadcast-take-item-packets-with-collector-as-source.patch b/patches/server/0892-Broadcast-take-item-packets-with-collector-as-source.patch index 1e33c1acff..03d6650dc1 100644 --- a/patches/server/0892-Broadcast-take-item-packets-with-collector-as-source.patch +++ b/patches/server/0892-Broadcast-take-item-packets-with-collector-as-source.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Broadcast take item packets with collector as source This fixes players (which can't view the collector) seeing item pickups with themselves as the target. diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 95bbde31de42e1e12d722de86085e59050f1c3ae..c0646a4c023a34d4ca516390d748d29d7b9c265b 100644 +index a4d24269c1365f32f232116f1530ac75b096c6ab..30424789ba1c8d25f830145501b4a7399b91f2d1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3893,7 +3893,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0900-Don-t-fire-sync-events-during-worldgen.patch b/patches/server/0900-Don-t-fire-sync-events-during-worldgen.patch index 3146ea0138..53a3932e6f 100644 --- a/patches/server/0900-Don-t-fire-sync-events-during-worldgen.patch +++ b/patches/server/0900-Don-t-fire-sync-events-during-worldgen.patch @@ -19,7 +19,7 @@ where generation happened directly to a ServerLevel and the entity still has the flag set. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 39dba6c2e9de2c1d6716945a49d48d9b76a07c77..e3df141a2a49f10e83fe132514a9b1d969cc4417 100644 +index 7acb24c2a34fdcbcb1c0e3cc03b01996689667d3..7a713fd31a2155b1c77c54817a67e354b1d4640d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1219,6 +1219,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -31,7 +31,7 @@ index 39dba6c2e9de2c1d6716945a49d48d9b76a07c77..e3df141a2a49f10e83fe132514a9b1d9 if (entity.valid) { MinecraftServer.LOGGER.error("Attempted Double World add on {}", entity, new Throwable()); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ba57deb4e10bba180429cca4d8c864ab869065c7..1fb29f2c5e55d77eb5d04d423cf9f38a6e7d9f4c 100644 +index e9142414c7d247ae2a27c0bc9ea2be3bb8e3db16..1d66c35b1092b8101f0a803d8c087e5a958875b1 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -631,7 +631,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -68,7 +68,7 @@ index 6b2f0a4bc911888b72b796099760af38b1e28656..4eec58353343b414120e189afed04b98 }, () -> { EntityType.LOGGER.warn("Skipping Entity with id {}", nbt.getString("id")); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c0646a4c023a34d4ca516390d748d29d7b9c265b..d37e6651b7be89b14ed5781e1a72fc1b8f50c103 100644 +index 30424789ba1c8d25f830145501b4a7399b91f2d1..9bc6ed9fd8e5154d39fe12ffed1ecd5ec8e70df8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1161,6 +1161,11 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0903-Restore-vanilla-entity-drops-behavior.patch b/patches/server/0903-Restore-vanilla-entity-drops-behavior.patch index ae2eeec552..0eede4fd44 100644 --- a/patches/server/0903-Restore-vanilla-entity-drops-behavior.patch +++ b/patches/server/0903-Restore-vanilla-entity-drops-behavior.patch @@ -9,7 +9,7 @@ on dropping the item instead of generalizing it for all dropped items like CB does. diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b0b4bede6f25b8a0de54d954c7010021f87aadc3..52b18f2c333b7535929bb4e52e65cf5fb0f5692f 100644 +index 419fcb4cd97cf10a2601e02024b999a51a0ff952..df21cd1bd2a3dda7169edbea18bbfdf043db76f8 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1235,20 +1235,20 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player { @@ -28,7 +28,7 @@ index b0b4bede6f25b8a0de54d954c7010021f87aadc3..52b18f2c333b7535929bb4e52e65cf5f } } } - if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { // Paper - fix player loottables running when mob loot gamerule is false + if (this.shouldDropLoot() && this.serverLevel().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { // Paper - fix player loottables running when mob loot gamerule is false // SPIGOT-5071: manually add player loot tables (SPIGOT-5195 - ignores keepInventory rule) this.dropFromLootTable(this.serverLevel(), damageSource, this.lastHurtByPlayerTime > 0); - this.dropCustomDeathLoot(this.serverLevel(), damageSource, flag); @@ -37,7 +37,7 @@ index b0b4bede6f25b8a0de54d954c7010021f87aadc3..52b18f2c333b7535929bb4e52e65cf5f loot.addAll(this.drops); this.drops.clear(); // SPIGOT-5188: make sure to clear diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1fb29f2c5e55d77eb5d04d423cf9f38a6e7d9f4c..0223f2e282a85882645f4ed52891c566a268f37b 100644 +index 1d66c35b1092b8101f0a803d8c087e5a958875b1..aac1d620bf4cd1f18243f8c53cd32ab16fdeb616 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2678,19 +2678,45 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -86,10 +86,10 @@ index 1fb29f2c5e55d77eb5d04d423cf9f38a6e7d9f4c..0223f2e282a85882645f4ed52891c566 - entityitem.setDefaultPickUpDelay(); + entityitem.setDefaultPickUpDelay(); // Paper - diff on change (in dropConsumer) // Paper start - Call EntityDropItemEvent - return this.spawnAtLocation(entityitem); + return this.spawnAtLocation(world, entityitem); } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d37e6651b7be89b14ed5781e1a72fc1b8f50c103..0fcc5ed28b2371a62be57d7ea62f2e3dfedcf735 100644 +index 9bc6ed9fd8e5154d39fe12ffed1ecd5ec8e70df8..4b9108e48d052919bca000ddb54f9bf4589c33e6 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -291,7 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0907-Fix-NPE-on-null-loc-for-EntityTeleportEvent.patch b/patches/server/0907-Fix-NPE-on-null-loc-for-EntityTeleportEvent.patch index 0a3dc9f139..8082b201b8 100644 --- a/patches/server/0907-Fix-NPE-on-null-loc-for-EntityTeleportEvent.patch +++ b/patches/server/0907-Fix-NPE-on-null-loc-for-EntityTeleportEvent.patch @@ -26,7 +26,7 @@ index c6dcc37ac5fcf50bcb246f533b99983dfc5c19c2..c13b6f14c3061710c2b27034db240cc9 d3 = to.getX(); d4 = to.getY(); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0fcc5ed28b2371a62be57d7ea62f2e3dfedcf735..f42a98324ecfc992cf36c2f44cdb781ad4edbad4 100644 +index 4b9108e48d052919bca000ddb54f9bf4589c33e6..1c4ec3857c5c3ecf58f842292c280a4a1f00a04c 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -4365,7 +4365,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0908-Add-experience-points-API.patch b/patches/server/0908-Add-experience-points-API.patch index 0ab86e2d01..9111f82b8f 100644 --- a/patches/server/0908-Add-experience-points-API.patch +++ b/patches/server/0908-Add-experience-points-API.patch @@ -18,10 +18,10 @@ index aca888c2f02b09ac6739bdc81b194c4527dd69f5..a19a795deaa7f46c92b97912e2ade006 // Paper start - send while respecting visibility private static void sendSoundEffect(Player fromEntity, double x, double y, double z, SoundEvent soundEffect, SoundSource soundCategory, float volume, float pitch) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index bdc9ac5bee552c1de110d6588d3850a6b3cd5723..d5d30252241d5051b038cf4f487e956afd554ee0 100644 +index 74b90ee971ec799cf19551ac63a9b01f77500967..a807f37a4b937fc3a1d89cb5d116224c9b3c5f49 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1948,6 +1948,49 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1949,6 +1949,49 @@ public class CraftPlayer extends CraftHumanEntity implements Player { Preconditions.checkArgument(exp >= 0, "Total experience points must not be negative (%s)", exp); this.getHandle().totalExperience = exp; } diff --git a/patches/server/0911-Validate-ResourceLocation-in-NBT-reading.patch b/patches/server/0911-Validate-ResourceLocation-in-NBT-reading.patch index e0dee7a8de..05754abc5d 100644 --- a/patches/server/0911-Validate-ResourceLocation-in-NBT-reading.patch +++ b/patches/server/0911-Validate-ResourceLocation-in-NBT-reading.patch @@ -85,7 +85,7 @@ index 1a6448cccf79a94013f9f44c3067d91da3da1f7e..06af888e4c3d9d01a462b487742b5971 if (nbt.contains("leash", 11)) { Either either = (Either) NbtUtils.readBlockPos(nbt, "leash").map(Either::right).orElse(null); // CraftBukkit - decompile error diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f42a98324ecfc992cf36c2f44cdb781ad4edbad4..a7f0d49637eb72b4645997a97cc6927b16a59738 100644 +index 1c4ec3857c5c3ecf58f842292c280a4a1f00a04c..7196340fefd95845f290329faef489f2b2626ecb 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -911,11 +911,13 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0926-Add-BlockBreakProgressUpdateEvent.patch b/patches/server/0926-Add-BlockBreakProgressUpdateEvent.patch index 7d82cc97af..81399fe283 100644 --- a/patches/server/0926-Add-BlockBreakProgressUpdateEvent.patch +++ b/patches/server/0926-Add-BlockBreakProgressUpdateEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add BlockBreakProgressUpdateEvent diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e3df141a2a49f10e83fe132514a9b1d969cc4417..3f0e5bd457e3231d84b9d14396d8d8859989f3f4 100644 +index 7a713fd31a2155b1c77c54817a67e354b1d4640d..942eb8c1ef575de53b1591b39014a39edb054a1f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1315,6 +1315,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe diff --git a/patches/server/0930-Add-onboarding-message-for-initial-server-start.patch b/patches/server/0930-Add-onboarding-message-for-initial-server-start.patch index f6da9e5a3d..dd0167082e 100644 --- a/patches/server/0930-Add-onboarding-message-for-initial-server-start.patch +++ b/patches/server/0930-Add-onboarding-message-for-initial-server-start.patch @@ -29,7 +29,7 @@ index 73e8a524925ed6f2580d3bd01616646fabafda78..450a1cc8f1624dce2daf52210d017e07 return instance; } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f1b1be0caff83720d77454d333abae4613c66e72..f575c0042f67c70df0ddb1d1db68e0138cf0b534 100644 +index 5699863e790bd5f452a37514d1309fbddec0c64a..2168b8d29e1a53460ab83189ed457d38990c5c89 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1151,6 +1151,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop void loadContentsFromNetwork( diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index dcf046dd1eb8c2b724c971c4adf4462895183f0a..448961d7bd80e7e84959866906e6a4e3ac9ab4f7 100644 +index 1496bc9fa6fe8b5f3b426f4a70550bb66879dfcc..7dade9a2c0efac0bfb7208f70b16e4e440deebec 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -2251,7 +2251,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop