From 39bdf3d2e045857f328bd628f785c54be951e9bd Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 10 Sep 2023 17:47:18 -0700 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@72e87ab Strip raytracing for EntityLiving#hasLineOfSight --- gradle.properties | 2 +- .../0001-Pufferfish-Server-Changes.patch | 166 +----------------- patches/server/0003-Rebrand.patch | 4 +- .../0015-LivingEntity-safeFallDistance.patch | 6 +- .../server/0062-Item-entity-immunities.patch | 6 +- ...-Add-allow-water-in-end-world-option.patch | 8 +- ...0088-LivingEntity-broadcastItemBreak.patch | 4 +- ...175-API-for-any-mob-to-burn-daylight.patch | 6 +- patches/server/0268-Remove-Timings.patch | 6 +- .../server/0269-Remove-Mojang-Profiler.patch | 14 +- 10 files changed, 32 insertions(+), 190 deletions(-) diff --git a/gradle.properties b/gradle.properties index 28b65b05e..02f02f3b6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.20.1-R0.1-SNAPSHOT mcVersion = 1.20.1 -paperCommit = 33bec7f20a5d3e20d9a8c0a16a1e5276add5d4fb +paperCommit = 72e87abc2db813ecd74a323c33a7b9c79b0c67b9 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0001-Pufferfish-Server-Changes.patch b/patches/server/0001-Pufferfish-Server-Changes.patch index adf859b99..30fc440d4 100644 --- a/patches/server/0001-Pufferfish-Server-Changes.patch +++ b/patches/server/0001-Pufferfish-Server-Changes.patch @@ -2134,7 +2134,7 @@ index 9afc81ccb237c3655d64cdbe8a0db9a4d7791043..aa5cec6d56d7a8e80861aa4c9b4a74ca private String descriptionId; @Nullable diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e11d7283662834047b2ff81a2fd25a4263792deb..e07140ef2f4c5b0019550eb3100c724699e7a05c 100644 +index 7763450e85146d43fcf84d380d0e7a8183d83747..0059ceabaed9c1888a6773efb906e761fd1ca252 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -142,7 +142,6 @@ import org.bukkit.event.entity.EntityTeleportEvent; @@ -2195,18 +2195,6 @@ index e11d7283662834047b2ff81a2fd25a4263792deb..e07140ef2f4c5b0019550eb3100c7246 public boolean onClimbable() { if (this.isSpectator()) { return false; -@@ -3651,7 +3677,10 @@ public abstract class LivingEntity extends Entity implements Attackable { - Vec3 vec3d1 = new Vec3(entity.getX(), entity.getEyeY(), entity.getZ()); - - // Paper - diff on change - used in CraftLivingEntity#hasLineOfSight(Location) and CraftWorld#lineOfSightExists -- return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level().clip(new ClipContext(vec3d, vec3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() == HitResult.Type.MISS; -+ // Pufferfish start -+ //return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level().clip(new ClipContext(vec3d, vec3d1, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() == HitResult.Type.MISS; -+ return vec3d1.distanceToSqr(vec3d) > 128D * 128D ? false : this.level().rayTraceDirect(vec3d, vec3d1, net.minecraft.world.phys.shapes.CollisionContext.of(this)) == net.minecraft.world.phys.BlockHitResult.Type.MISS; -+ // Pufferfish end - } - } - diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java index e2a25c29ec74147b3e66aa0b3deb85a8f6ee53a5..f6eb032897c6d5d16ab5c8c287e49e189c24571c 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java @@ -2281,18 +2269,6 @@ index dd1102d5291ef6f18e82400a6d8a0a376cc071e9..e283eb57c25f7de222f9d09dca851169 } @Nullable -diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index d4c91e0a0c64fcb7f1145de3f30134cb1f1f8ee6..fe502445a77afe7e3807afae48d7bf03f370e290 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -47,6 +47,7 @@ public class AcquirePoi { - return false; - } else { - mutableLong.setValue(time + 20L + (long)world.getRandom().nextInt(20)); -+ if (entity.getNavigation().isStuck()) mutableLong.add(200); // Pufferfish - wait an additional 10s to check again if they're stuck - PoiManager poiManager = world.getPoiManager(); - long2ObjectMap.long2ObjectEntrySet().removeIf((entry) -> { - return !entry.getValue().isStillValid(time); diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java index 646d9a121d908a2fc3e4e302484dd5cd1bfc6804..e546ecdccde352502e26a8668eaaafe048d6e282 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java @@ -2492,27 +2468,6 @@ index 1e07febcf7a3dfb281728cc5e3e4f15dd776d7e0..c65ab566c6241dd6a44bd11a449ef0c4 @Override protected SoundEvent getAmbientSound() { return SoundEvents.WITHER_AMBIENT; -diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index 52196431a6538872755344859a0454a0e50c3b6e..80fc7918cb294b0d88a293bd6a920441cb55c3ad 100644 ---- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -+++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -270,10 +270,16 @@ public class ItemEntity extends Entity implements TraceableEntity { - if (entityitem.isMergable()) { - // Paper Start - Fix items merging through walls - if (this.level().paperConfig().fixes.fixItemsMergingThroughWalls) { -+ // Pufferfish start - skip the allocations -+ /* - net.minecraft.world.level.ClipContext rayTrace = new net.minecraft.world.level.ClipContext(this.position(), entityitem.position(), - net.minecraft.world.level.ClipContext.Block.COLLIDER, net.minecraft.world.level.ClipContext.Fluid.NONE, this); - net.minecraft.world.phys.BlockHitResult rayTraceResult = this.level().clip(rayTrace); - if (rayTraceResult.getType() == net.minecraft.world.phys.HitResult.Type.BLOCK) continue; -+ */ -+ if (level().rayTraceDirect(this.position(), entityitem.position(), net.minecraft.world.phys.shapes.CollisionContext.of(this)) == -+ net.minecraft.world.phys.HitResult.Type.BLOCK) continue; -+ // Pufferfish end - } - // Paper End - this.tryToMerge(entityitem); diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java index b62457313a1e30aad0c5313d608667b5d3811455..410f10ad93935d1c078447a4596023f367a8e9b7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -2801,29 +2756,8 @@ index 2e60bdc44c33d434bfd9ca5bf8f75de799c6768c..565318c2afaa1661ed9963453a6354df StackedContents autorecipestackmanager = new StackedContents(); autorecipestackmanager.initialize(this); // Paper - better exact choice recipes int i = 0; -diff --git a/src/main/java/net/minecraft/world/level/BlockGetter.java b/src/main/java/net/minecraft/world/level/BlockGetter.java -index 0e8746759752b692668886370181aa5db1fd0bb0..58e5ce2afabf480f5dfd9adf43f8fc12666861c6 100644 ---- a/src/main/java/net/minecraft/world/level/BlockGetter.java -+++ b/src/main/java/net/minecraft/world/level/BlockGetter.java -@@ -68,6 +68,16 @@ public interface BlockGetter extends LevelHeightAccessor { - }); - } - -+ // Pufferfish start - broken down variant of below rayTraceBlock, used by World#rayTraceDirect -+ default net.minecraft.world.phys.BlockHitResult.Type rayTraceBlockDirect(Vec3 vec3d, Vec3 vec3d1, BlockPos blockposition, BlockState iblockdata, net.minecraft.world.phys.shapes.CollisionContext voxelshapecoll) { -+ if (iblockdata.isAir()) return null; // Tuinity - optimise air cases -+ VoxelShape voxelshape = ClipContext.Block.COLLIDER.get(iblockdata, this, blockposition, voxelshapecoll); -+ net.minecraft.world.phys.BlockHitResult movingobjectpositionblock = this.clipWithInteractionOverride(vec3d, vec3d1, blockposition, voxelshape, iblockdata); -+ -+ return movingobjectpositionblock == null ? null : movingobjectpositionblock.getType(); -+ } -+ // Pufferfish end -+ - // CraftBukkit start - moved block handling into separate method for use by Block#rayTrace - default BlockHitResult clip(ClipContext raytrace1, BlockPos blockposition) { - // Paper start - Prevent raytrace from loading chunks diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index f39ab10c5b0b8d86b579a5b683491204c51db70b..d8d4a1ca2eb062af8b2de4ab44503983587cdd77 100644 +index 773bfdd3ed457a352b5329f280c0d10297d579ba..5c83d703211725ddc36602bb480545288d6a06d9 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -273,6 +273,17 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -2858,99 +2792,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..d8d4a1ca2eb062af8b2de4ab44503983 this.dimension = resourcekey; this.isClientSide = flag; if (dimensionmanager.coordinateScale() != 1.0D) { -@@ -412,6 +430,91 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - return null; - } - -+ // Pufferfish start - broken down method of raytracing for EntityLiving#hasLineOfSight, replaces IBlockAccess#rayTrace(RayTrace) -+ public net.minecraft.world.phys.BlockHitResult.Type rayTraceDirect(net.minecraft.world.phys.Vec3 vec3d, net.minecraft.world.phys.Vec3 vec3d1, net.minecraft.world.phys.shapes.CollisionContext voxelshapecoll) { -+ // most of this code comes from IBlockAccess#a(RayTrace, BiFunction, Function), but removes the needless functions -+ if (vec3d.equals(vec3d1)) { -+ return net.minecraft.world.phys.BlockHitResult.Type.MISS; -+ } -+ -+ double endX = Mth.lerp(-1.0E-7D, vec3d1.x, vec3d.x); -+ double endY = Mth.lerp(-1.0E-7D, vec3d1.y, vec3d.y); -+ double endZ = Mth.lerp(-1.0E-7D, vec3d1.z, vec3d.z); -+ -+ double startX = Mth.lerp(-1.0E-7D, vec3d.x, vec3d1.x); -+ double startY = Mth.lerp(-1.0E-7D, vec3d.y, vec3d1.y); -+ double startZ = Mth.lerp(-1.0E-7D, vec3d.z, vec3d1.z); -+ -+ int currentX = Mth.floor(startX); -+ int currentY = Mth.floor(startY); -+ int currentZ = Mth.floor(startZ); -+ -+ BlockPos.MutableBlockPos currentBlock = new BlockPos.MutableBlockPos(currentX, currentY, currentZ); -+ -+ LevelChunk chunk = this.getChunkIfLoaded(currentBlock); -+ if (chunk == null) { -+ return net.minecraft.world.phys.BlockHitResult.Type.MISS; -+ } -+ -+ net.minecraft.world.phys.BlockHitResult.Type initialCheck = this.rayTraceBlockDirect(vec3d, vec3d1, currentBlock, chunk.getBlockState(currentBlock), voxelshapecoll); -+ -+ if (initialCheck != null) { -+ return initialCheck; -+ } -+ -+ double diffX = endX - startX; -+ double diffY = endY - startY; -+ double diffZ = endZ - startZ; -+ -+ int xDirection = Mth.sign(diffX); -+ int yDirection = Mth.sign(diffY); -+ int zDirection = Mth.sign(diffZ); -+ -+ double normalizedX = xDirection == 0 ? Double.MAX_VALUE : (double) xDirection / diffX; -+ double normalizedY = yDirection == 0 ? Double.MAX_VALUE : (double) yDirection / diffY; -+ double normalizedZ = zDirection == 0 ? Double.MAX_VALUE : (double) zDirection / diffZ; -+ -+ double normalizedXDirection = normalizedX * (xDirection > 0 ? 1.0D - Mth.frac(startX) : Mth.frac(startX)); -+ double normalizedYDirection = normalizedY * (yDirection > 0 ? 1.0D - Mth.frac(startY) : Mth.frac(startY)); -+ double normalizedZDirection = normalizedZ * (zDirection > 0 ? 1.0D - Mth.frac(startZ) : Mth.frac(startZ)); -+ -+ net.minecraft.world.phys.BlockHitResult.Type result; -+ -+ do { -+ if (normalizedXDirection > 1.0D && normalizedYDirection > 1.0D && normalizedZDirection > 1.0D) { -+ return net.minecraft.world.phys.BlockHitResult.Type.MISS; -+ } -+ -+ if (normalizedXDirection < normalizedYDirection) { -+ if (normalizedXDirection < normalizedZDirection) { -+ currentX += xDirection; -+ normalizedXDirection += normalizedX; -+ } else { -+ currentZ += zDirection; -+ normalizedZDirection += normalizedZ; -+ } -+ } else if (normalizedYDirection < normalizedZDirection) { -+ currentY += yDirection; -+ normalizedYDirection += normalizedY; -+ } else { -+ currentZ += zDirection; -+ normalizedZDirection += normalizedZ; -+ } -+ -+ currentBlock.set(currentX, currentY, currentZ); -+ if (chunk.getPos().x != currentBlock.getX() >> 4 || chunk.getPos().z != currentBlock.getZ() >> 4) { -+ chunk = this.getChunkIfLoaded(currentBlock); -+ if (chunk == null) { -+ return net.minecraft.world.phys.BlockHitResult.Type.MISS; -+ } -+ } -+ result = this.rayTraceBlockDirect(vec3d, vec3d1, currentBlock, chunk.getBlockState(currentBlock), voxelshapecoll); -+ } while (result == null); -+ -+ return result; -+ } -+ // Pufferfish end -+ - public boolean isInWorldBounds(BlockPos pos) { - return pos.isInsideBuildHeightAndWorldBoundsHorizontal(this); // Paper - use better/optimized check - } -@@ -919,13 +1022,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1003,13 +1021,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable { try { tickConsumer.accept(entity); MinecraftServer.getServer().executeMidTickTasks(); // Paper - execute chunk tasks mid tick @@ -2966,7 +2808,7 @@ index f39ab10c5b0b8d86b579a5b683491204c51db70b..d8d4a1ca2eb062af8b2de4ab44503983 // Paper end } } -@@ -1380,6 +1483,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1464,6 +1482,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() { diff --git a/patches/server/0003-Rebrand.patch b/patches/server/0003-Rebrand.patch index b91dc5d3c..03a1c18f7 100644 --- a/patches/server/0003-Rebrand.patch +++ b/patches/server/0003-Rebrand.patch @@ -239,10 +239,10 @@ index 4e56018b64d11f76c8da43fd8f85c6de72204e36..9607675e6c5bff2183c4420d11fc63ee @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index f0ce29d21fe9af803ce4e41b8c037b2ec5d1b124..7bc8b62ff6aa355f3f025fc6c3a3d4c6b355853b 100644 +index b25f5931f836fd4d8695120f0bcb7c52deff8583..9e3baf31775326e67a5a3bd5d9e836833b4810ba 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -907,7 +907,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -912,7 +912,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { return EntityCategory.WATER; } diff --git a/patches/server/0015-LivingEntity-safeFallDistance.patch b/patches/server/0015-LivingEntity-safeFallDistance.patch index 64357d08b..b33af2909 100644 --- a/patches/server/0015-LivingEntity-safeFallDistance.patch +++ b/patches/server/0015-LivingEntity-safeFallDistance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 734ca15f79186cb0385b845c40ea56be7ab085cf..287189fc95067d746e8253fc2633b843a72dcd73 100644 +index 67f6432160ddd85051305bc830bab4f922cdbba6..0d8c8f9529003a4a216e12e231e212058bb0fb28 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -69,10 +69,10 @@ index 3f7d21a5be726d301e1bcaa11f1788b51c23a7cd..db95323da1aef267aa4fbe56aaff63cb // Purpur start diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 7bc8b62ff6aa355f3f025fc6c3a3d4c6b355853b..f7ae6d11c6043a2037dbfd160b409579bd9a35fd 100644 +index 9e3baf31775326e67a5a3bd5d9e836833b4810ba..4ba5c78fa10c1e30962f30d97821fa105f804904 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1094,4 +1094,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1099,4 +1099,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end diff --git a/patches/server/0062-Item-entity-immunities.patch b/patches/server/0062-Item-entity-immunities.patch index e17d61bde..06c1cc881 100644 --- a/patches/server/0062-Item-entity-immunities.patch +++ b/patches/server/0062-Item-entity-immunities.patch @@ -18,7 +18,7 @@ index 8ab959dd588b5154b63e133b2e937fa2d0ab8e52..fb11b020d52988360562db23d8568e5e public ServerEntity(ServerLevel worldserver, Entity entity, int i, boolean flag, Consumer> consumer, Set trackedPlayers) { this.trackedPlayers = trackedPlayers; diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index 80fc7918cb294b0d88a293bd6a920441cb55c3ad..d045877bfb0f364a43c8448cad21cc39d0565964 100644 +index b3d809c48b041af03471942213070cc3e0b19f2f..2d9bc2ed2b6afae6e846a6f79bb68adff78e35a7 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -56,6 +56,12 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -34,7 +34,7 @@ index 80fc7918cb294b0d88a293bd6a920441cb55c3ad..d045877bfb0f364a43c8448cad21cc39 public ItemEntity(EntityType type, Level world) { super(type, world); -@@ -358,6 +364,15 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -350,6 +356,15 @@ public class ItemEntity extends Entity implements TraceableEntity { return false; } else if (!this.getItem().getItem().canBeHurtBy(source)) { return false; @@ -50,7 +50,7 @@ index 80fc7918cb294b0d88a293bd6a920441cb55c3ad..d045877bfb0f364a43c8448cad21cc39 } else if (this.level().isClientSide) { return true; } else { -@@ -555,6 +570,12 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -547,6 +562,12 @@ public class ItemEntity extends Entity implements TraceableEntity { // com.google.common.base.Preconditions.checkArgument(!stack.isEmpty(), "Cannot drop air"); // CraftBukkit // Paper - Remove check this.getEntityData().set(ItemEntity.DATA_ITEM, stack); this.despawnRate = this.level().paperConfig().entities.spawning.altItemDespawnRate.enabled ? this.level().paperConfig().entities.spawning.altItemDespawnRate.items.getOrDefault(stack.getItem(), this.level().spigotConfig.itemDespawnRate) : this.level().spigotConfig.itemDespawnRate; // Paper diff --git a/patches/server/0071-Add-allow-water-in-end-world-option.patch b/patches/server/0071-Add-allow-water-in-end-world-option.patch index 816d7f0fd..2f62e8786 100644 --- a/patches/server/0071-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0071-Add-allow-water-in-end-world-option.patch @@ -27,10 +27,10 @@ index 578c3db52dda4c169b5ea615a4ce4a79f15a4cad..0bd98b802f246a3f6061f716d470a479 return true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index dc71cf3c66a0a4390177428688e6f4ee39a981b6..a4c45ee8a5c6e55a6f9abde401cc06f13bd0b018 100644 +index bfbd8f7a6e13c76941df17178cd2d3ec785a3cef..227c17ea0a5135cffc85f9fc29e00088492bb5f0 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1576,4 +1576,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1575,4 +1575,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return null; } // Paper end @@ -46,7 +46,7 @@ index dc71cf3c66a0a4390177428688e6f4ee39a981b6..a4c45ee8a5c6e55a6f9abde401cc06f1 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/block/IceBlock.java b/src/main/java/net/minecraft/world/level/block/IceBlock.java -index 5fbdc96f29e29dfc092b9e84a988032db0fa36ab..1352168db8f3062943cc05396cbd9b535508c461 100644 +index 04089e6f7d6e3d532b00585870283922b6be5246..61e6d14abd54ecd5e43a5459f8daa7d86adedf44 100644 --- a/src/main/java/net/minecraft/world/level/block/IceBlock.java +++ b/src/main/java/net/minecraft/world/level/block/IceBlock.java @@ -33,7 +33,7 @@ public class IceBlock extends HalfTransparentBlock { @@ -68,7 +68,7 @@ index 5fbdc96f29e29dfc092b9e84a988032db0fa36ab..1352168db8f3062943cc05396cbd9b53 } else { world.setBlockAndUpdate(pos, IceBlock.meltsInto()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index 8e99128759e555cdef0efe9cea1b3b36f2c3fda9..8575753af39d19e485f915e3e12e377c325b4751 100644 +index d98e16bc47d3bc458281956bf538f4a37bd0f4b7..387da71594b75a43100790e8e8d69d9246598537 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java @@ -244,6 +244,11 @@ public class PurpurConfig { diff --git a/patches/server/0088-LivingEntity-broadcastItemBreak.patch b/patches/server/0088-LivingEntity-broadcastItemBreak.patch index 56b7db78c..99a0b5718 100644 --- a/patches/server/0088-LivingEntity-broadcastItemBreak.patch +++ b/patches/server/0088-LivingEntity-broadcastItemBreak.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index f7ae6d11c6043a2037dbfd160b409579bd9a35fd..f39747767d9a8da86bb25c34415b06172f39bcfc 100644 +index 4ba5c78fa10c1e30962f30d97821fa105f804904..88fc33afb4a88d8c8b0a41331791f1ca87b8a8fd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1105,5 +1105,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1110,5 +1110,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public void setSafeFallDistance(float safeFallDistance) { getHandle().safeFallDistance = safeFallDistance; } diff --git a/patches/server/0175-API-for-any-mob-to-burn-daylight.patch b/patches/server/0175-API-for-any-mob-to-burn-daylight.patch index 4f8405ba8..a5b83acd2 100644 --- a/patches/server/0175-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0175-API-for-any-mob-to-burn-daylight.patch @@ -32,7 +32,7 @@ index dbd61da31192896ced9839cf8a3b123a6625ae60..68be1bb59c7e5176c82ed128be5296a2 return this.hardCollides; } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4ab8dca4b0f1f555c4ef4963a429dd4c0d28b06c..4c5a0644918dc912feef17470d7fcfd1a3b14d88 100644 +index 74ab311271dc487fb11bc145b2ff07dc28082d56..e85ee34e745c155e555bea0c6af021ead36acc57 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -263,6 +263,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -369,10 +369,10 @@ index 283836981f5ed94dfc8999c3c5450213a1f2cfc1..feeca8d318fa0b7b22e728baa3bf3269 /* * Order is *EXTREMELY* important -- keep it right! =D diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index f39747767d9a8da86bb25c34415b06172f39bcfc..72dcac5708c06556549d268e54ecb4b6e71c93be 100644 +index 88fc33afb4a88d8c8b0a41331791f1ca87b8a8fd..0c9dec743ca3d83e3443c8be31c2c1589bbfa585 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1111,5 +1111,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1116,5 +1116,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { if (slot == null) return; getHandle().broadcastBreakEvent(org.bukkit.craftbukkit.CraftEquipmentSlot.getNMS(slot)); } diff --git a/patches/server/0268-Remove-Timings.patch b/patches/server/0268-Remove-Timings.patch index 068286968..4498fb294 100644 --- a/patches/server/0268-Remove-Timings.patch +++ b/patches/server/0268-Remove-Timings.patch @@ -745,10 +745,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..7094701d213c73ba47ace806962244c1 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 84ac5db63a51d1490fcf625d10ed0952d671017e..ed7ed29147a2bb681e5d4c44d34b06d936b8fa74 100644 +index 66ab51af8cec927835a62fcde9f79090ecad50ae..bd3403428ed721de913c86f508e8cc9349579913 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1016,15 +1016,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1015,15 +1015,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { ProfilerFiller gameprofilerfiller = this.getProfiler(); gameprofilerfiller.push("blockEntities"); @@ -767,7 +767,7 @@ index 84ac5db63a51d1490fcf625d10ed0952d671017e..ed7ed29147a2bb681e5d4c44d34b06d9 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); int tilesThisCycle = 0; -@@ -1057,7 +1057,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1056,7 +1056,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } this.blockEntityTickers.removeAll(toRemove); diff --git a/patches/server/0269-Remove-Mojang-Profiler.patch b/patches/server/0269-Remove-Mojang-Profiler.patch index cc0fed28c..6e9811556 100644 --- a/patches/server/0269-Remove-Mojang-Profiler.patch +++ b/patches/server/0269-Remove-Mojang-Profiler.patch @@ -1162,7 +1162,7 @@ index 156c2683d72c5e83b1cefb9ebf356c6e4d31e7f4..e634f9b7998979e00e4de4899214863e } } else { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 4d13f2645ae9e76ed7b36d381ae24cd826e722b3..ed99cd49c5d756bcf540dd8dfcebd32bb6298055 100644 +index fa8c8201d85ce1ceb87941ec082db61a7c9136da..028226133deaf7ca064e16917ea7238f778f82e2 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -410,7 +410,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1746,10 +1746,10 @@ index 8f97c9df726ac20cfce7bdddd5dd4f8c5aa76c35..e35ebb5b923c2f63e37e5dae006bc4a0 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index ed7ed29147a2bb681e5d4c44d34b06d936b8fa74..bdb32964524cb2a4398b8d3bedfb03b0cb805b6d 100644 +index bd3403428ed721de913c86f508e8cc9349579913..80ab17142c34d576409e5fb353ff31db9673b2c0 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1013,9 +1013,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1012,9 +1012,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } protected void tickBlockEntities() { @@ -1761,7 +1761,7 @@ index ed7ed29147a2bb681e5d4c44d34b06d936b8fa74..bdb32964524cb2a4398b8d3bedfb03b0 //timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1060,7 +1060,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1059,7 +1059,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { //timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1770,7 +1770,7 @@ index ed7ed29147a2bb681e5d4c44d34b06d936b8fa74..bdb32964524cb2a4398b8d3bedfb03b0 spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1253,7 +1253,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1252,7 +1252,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1779,7 +1779,7 @@ index ed7ed29147a2bb681e5d4c44d34b06d936b8fa74..bdb32964524cb2a4398b8d3bedfb03b0 List list = Lists.newArrayList(); ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call return list; -@@ -1272,7 +1272,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1271,7 +1271,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public void getEntities(EntityTypeTest filter, AABB box, Predicate predicate, List result, int limit) { @@ -1788,7 +1788,7 @@ index ed7ed29147a2bb681e5d4c44d34b06d936b8fa74..bdb32964524cb2a4398b8d3bedfb03b0 // Paper start - optimise this call //TODO use limit if (filter instanceof net.minecraft.world.entity.EntityType entityTypeTest) { -@@ -1529,7 +1529,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1528,7 +1528,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } public ProfilerFiller getProfiler() {