diff --git a/gradle.properties b/gradle.properties index 283ca340d..1a0fc629f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.3-R0.1-SNAPSHOT mcVersion = 1.21.3 -paperCommit = fe2f3d46933c9f3dc0e4bda238e5af34b01d2a48 +paperCommit = 92131adaf2687f350b2f8dc7cd1213ab833d1831 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/dropped-server/0043-Option-to-toggle-milk-curing-bad-omen.patch b/patches/dropped-server/0043-Option-to-toggle-milk-curing-bad-omen.patch deleted file mode 100644 index c7294e1a8..000000000 --- a/patches/dropped-server/0043-Option-to-toggle-milk-curing-bad-omen.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Wed, 10 Jul 2019 20:43:05 -0500 -Subject: [PATCH] Option to toggle milk curing bad omen - - -diff --git a/src/main/java/net/minecraft/world/item/MilkBucketItem.java b/src/main/java/net/minecraft/world/item/MilkBucketItem.java -index 43c9dea6b0db7f8d6070dedcb472883ab46d9eaf..15a1f9ffbf640bffadca97e28f72b6a5d43c65d7 100644 ---- a/src/main/java/net/minecraft/world/item/MilkBucketItem.java -+++ b/src/main/java/net/minecraft/world/item/MilkBucketItem.java -@@ -25,7 +25,9 @@ public class MilkBucketItem extends Item { - } - - if (!world.isClientSide) { -+ net.minecraft.world.effect.MobEffectInstance badOmen = user.getEffect(net.minecraft.world.effect.MobEffects.BAD_OMEN); // Purpur - user.removeAllEffects(org.bukkit.event.entity.EntityPotionEffectEvent.Cause.MILK); // CraftBukkit -+ if (!world.purpurConfig.milkCuresBadOmen && badOmen != null) user.addEffect(badOmen); // Purpur - } - - if (user instanceof Player entityhuman) { -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 830ba18f1695bbf4099a9579166e29618206ba83..3273ac8bb8f836ea9d2d5d304985ca8152eb2d4a 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -97,8 +97,10 @@ public class PurpurWorldConfig { - } - - public boolean disableDropsOnCrammingDeath = false; -+ public boolean milkCuresBadOmen = true; - private void miscGameplayMechanicsSettings() { - disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); -+ milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); - } - - public double minecartMaxSpeed = 0.4D; diff --git a/patches/dropped-server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/dropped-server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch deleted file mode 100644 index bf8146bf9..000000000 --- a/patches/dropped-server/0091-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sat, 3 Oct 2020 17:40:52 -0500 -Subject: [PATCH] Add predicate to recipe's ExactChoice ingredient - - -diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -index e314f36951e9ac15c57137e24fce8c410373130a..21dfb8e91c5427ac12133de2c05d923d87adf5ba 100644 ---- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -+++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java -@@ -41,6 +41,7 @@ public final class Ingredient implements Predicate { - @Nullable - private IntList stackingIds; - public boolean exact; // CraftBukkit -+ public Predicate predicate; // Purpur - public static final Codec CODEC = Ingredient.codec(true); - public static final Codec CODEC_NONEMPTY = Ingredient.codec(false); - -@@ -72,6 +73,12 @@ public final class Ingredient implements Predicate { - } else if (this.isEmpty()) { - return itemstack.isEmpty(); - } else { -+ // Purpur start -+ if (predicate != null) { -+ return predicate.test(itemstack.asBukkitCopy()); -+ } -+ // Purpur end -+ - ItemStack[] aitemstack = this.getItems(); - int i = aitemstack.length; - -diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -index c76c78bb7757d407102271463e14716a1b012deb..458b91582a22fb1e6deb1551c38d2a10e33e24f1 100644 ---- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java -@@ -29,6 +29,7 @@ public interface CraftRecipe extends Recipe { - } else if (bukkit instanceof RecipeChoice.ExactChoice) { - stack = new Ingredient(((RecipeChoice.ExactChoice) bukkit).getChoices().stream().map((mat) -> new net.minecraft.world.item.crafting.Ingredient.ItemValue(CraftItemStack.asNMSCopy(mat)))); - stack.exact = true; -+ stack.predicate = ((RecipeChoice.ExactChoice) bukkit).getPredicate(); // Purpur - // Paper start - support "empty" choices - } else if (bukkit == RecipeChoice.empty()) { - stack = Ingredient.EMPTY; diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 3c84f13d8..d00526469 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -267,10 +267,10 @@ index 6fef86e47e37eab6721cfd67d494afb25a2ded68..c914e1e13c4f64f24efa5f825e58efb6 // (async tasks must live with race-conditions if they attempt to cancel between these few lines of code) } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 05a62b2cf9ca8e0141274bd7f44ef8fb703466d1..fcb5bc76955edd773488dd3e476ea5e6fd09ca9b 100644 +index 83020837e29ee627b1081daddb4bdee147b95af3..9bd91ddb964ff4d10a3a87ee50849ddf3c4d22e8 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -494,7 +494,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -505,7 +505,7 @@ public final class CraftMagicNumbers implements UnsafeValues { // Paper start @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/patches/server/0003-Purpur-client-support.patch b/patches/server/0003-Purpur-client-support.patch index c7b0d4ea3..bc24462f7 100644 --- a/patches/server/0003-Purpur-client-support.patch +++ b/patches/server/0003-Purpur-client-support.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Purpur client support diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 4e4e5b7e8c387cf13cf5bc5e39d334c3222c9103..8640965d238d2983942ba3a3f08b048e84656cdd 100644 +index cffbd3300967e5d80b5973b35a76235bb2aa1b73..b9cad91aa728415a52a43d18301311e2c996da91 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -329,6 +329,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -43,10 +43,10 @@ index b0bc66dc7248aae691dcab68b925b52a1695e63f..b6dd6bde947ac7502f25d31603995961 try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9e4c416ddeccff87ea9ed5b45a2ef04eae2280bf..2c30bf2b0bdb29e549db10c324daceaa3fde38fd 100644 +index 2c7ec674f55b3178b9dcba7f2bc1ff5efccb50ea..c860c87a23b4d4b4328ccefbf7f1f127905f3605 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3592,4 +3592,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3590,4 +3590,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundEntityEventPacket(((CraftEntity) target).getHandle(), effect.getData())); } // Paper end - entity effect API diff --git a/patches/server/0006-Component-related-conveniences.patch b/patches/server/0006-Component-related-conveniences.patch index dd6b39e65..2ba07c998 100644 --- a/patches/server/0006-Component-related-conveniences.patch +++ b/patches/server/0006-Component-related-conveniences.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Component related conveniences diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 8640965d238d2983942ba3a3f08b048e84656cdd..2de732451096f13d5df160500267cb2db0101c63 100644 +index b9cad91aa728415a52a43d18301311e2c996da91..4cd799505ad4f9e02eef5f015a6c092af0efba14 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2252,6 +2252,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2253,6 +2253,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.lastSentExp = -1; // CraftBukkit - Added to reset } @@ -35,7 +35,7 @@ index 8640965d238d2983942ba3a3f08b048e84656cdd..2de732451096f13d5df160500267cb2d @Override public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); -@@ -2476,6 +2496,20 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2477,6 +2497,20 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple return new CommandSourceStack(this.commandSource(), this.position(), this.getRotationVector(), this.serverLevel(), this.getPermissionLevel(), this.getName().getString(), this.getDisplayName(), this.server, this); } @@ -57,10 +57,10 @@ index 8640965d238d2983942ba3a3f08b048e84656cdd..2de732451096f13d5df160500267cb2d this.sendSystemMessage(message, false); } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index cf42042c754b30e41c0ec8a6a15195369bdbd199..0423eb224f21ad482d7bc9916f8f7597d80060d4 100644 +index 1fcd9cd9344b0d2c4752042b07142db7d727dce8..99472b1ae2261a53555c5212f5d8b0deebaa4c48 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -985,6 +985,20 @@ public abstract class PlayerList { +@@ -991,6 +991,20 @@ public abstract class PlayerList { } // CraftBukkit end diff --git a/patches/server/0007-Ridables.patch b/patches/server/0007-Ridables.patch index 35d47bd3f..9013013a4 100644 --- a/patches/server/0007-Ridables.patch +++ b/patches/server/0007-Ridables.patch @@ -22,10 +22,10 @@ index f58a94efafbc01d402cd03a108bb90f60930a316..21ea63da99c5b3e2e1ab9cc1049c903b super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7933d6900dac67a24fb5f9378097dbde34be30b1..ef01653f889be21747205d9059ad86b7e51326d5 100644 +index 64b56abf8900d0424100da460fc68ac964394793..e37e11c7912cc2824b67928811a8e542fa0a9337 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1854,6 +1854,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = worldserver.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers worldserver.updateLagCompensationTick(); // Paper - lag compensation @@ -34,7 +34,7 @@ index 7933d6900dac67a24fb5f9378097dbde34be30b1..ef01653f889be21747205d9059ad86b7 gameprofilerfiller.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index e65cfb1132f5f0c9e1fa5ae4a46a8abed0c56be1..43c976c5b61f26662d6e57b5cd39c3e153985db3 100644 +index 5964d601c05176f48167cc92057a59e52a4da92b..6a704739b1e4e12b6e3dcee4144fede634c559c8 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -230,6 +230,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -46,10 +46,10 @@ index e65cfb1132f5f0c9e1fa5ae4a46a8abed0c56be1..43c976c5b61f26662d6e57b5cd39c3e1 public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 2de732451096f13d5df160500267cb2db0101c63..b345e0eb7145b5a3800dc9c73508e53d83ea0171 100644 +index 4cd799505ad4f9e02eef5f015a6c092af0efba14..c69080f68ac1a7e7113da692ae7baba467393d48 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1032,6 +1032,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1033,6 +1033,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this); @@ -66,10 +66,10 @@ index 2de732451096f13d5df160500267cb2db0101c63..b345e0eb7145b5a3800dc9c73508e53d private void updatePlayerAttributes() { diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c4b016a2fb5c79fb3f191e243712bee7cbe5cd2c..e670a3d04fca7bea2bc732d10e7865b76e396586 100644 +index b5d5dbc50a7b8c40739a15f164ffd08fdc534f9c..5d322e613a0116057373a3c9d7125620c63b43d7 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2820,6 +2820,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2821,6 +2821,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); @@ -79,7 +79,7 @@ index c4b016a2fb5c79fb3f191e243712bee7cbe5cd2c..e670a3d04fca7bea2bc732d10e7865b7 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index bc81faf083e2a5455a7da0ba7cc18eae5e014a7a..fada28327176e8f3aab4b3f7f33b00fa83a7127c 100644 +index 341c324d15996a74b113f8879d7da737a1be86a1..1d23428d23c1281eea456fe6175e050826246848 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -383,7 +383,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -190,7 +190,7 @@ index b851c3ee1426bc0a259bf6c4a662af0c9883dd71..7c11b5e73d4f3c0be7c467f7522c2d97 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0831d69d6ac1aa112dfe8243b01adcf5e8eba6a0..56613c25850f89d125cb213d37fd5fed9deee7f7 100644 +index 9c61225a728a2ca91a1c71dead75fc7cd93668b6..e8c1ffe30e0f211ae563e28afa2101e51a122777 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -248,9 +248,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -5112,7 +5112,7 @@ index 179886dcbda29c5cdb7dbd43e44951ae38d9df96..cf1797c6ba877c510bba5c8016e57003 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 1e98f68e51618606f1178c12be77c1a945362630..4046f911b1f0da909dbb4d8ff856fb869f61a0f8 100644 +index deba03eb37012c638e08e20cd1c98e9db190c790..26d7e7ace4491c444c31dc11359427259c04f93c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -602,6 +602,15 @@ public class CraftEventFactory { diff --git a/patches/server/0009-Barrels-and-enderchests-6-rows.patch b/patches/server/0009-Barrels-and-enderchests-6-rows.patch index 63a606b48..b4ad896f3 100644 --- a/patches/server/0009-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0009-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 75e5e540f03d28b64fa5fef1f342a157598c3fa7..0dace6f1e1377c9eb5ae70524edf1e3aae2cfc91 100644 +index 99472b1ae2261a53555c5212f5d8b0deebaa4c48..718b9f237448685900cbb722510c93353a8c28b2 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1110,6 +1110,27 @@ public abstract class PlayerList { +@@ -1116,6 +1116,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API diff --git a/patches/server/0011-AFK-API.patch b/patches/server/0011-AFK-API.patch index 6602d3c96..45676b034 100644 --- a/patches/server/0011-AFK-API.patch +++ b/patches/server/0011-AFK-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] AFK API diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b345e0eb7145b5a3800dc9c73508e53d83ea0171..3403d74ec3ef30ec110031f3972a8482eea0bf41 100644 +index c69080f68ac1a7e7113da692ae7baba467393d48..a9228aa69e31b0e69f0b07170de0ac99b64fe0fe 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2643,8 +2643,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -2644,8 +2644,68 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void resetLastActionTime() { this.lastActionTime = Util.getMillis(); @@ -78,7 +78,7 @@ index b345e0eb7145b5a3800dc9c73508e53d83ea0171..3403d74ec3ef30ec110031f3972a8482 return this.stats; } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e670a3d04fca7bea2bc732d10e7865b76e396586..c65c924f739b1c2ed328c936ec1854e0bc1d5b84 100644 +index 5d322e613a0116057373a3c9d7125620c63b43d7..58540f1b04e569198c09ada7415a48b9af69147a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -342,6 +342,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -223,7 +223,7 @@ index 5d7a6e4b73f032db356e7ec369b150013e940ee6..6b2cda6d578a0983b2401ea206292754 if (range < 0.0 || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2c30bf2b0bdb29e549db10c324daceaa3fde38fd..9d7def9b9a5c54efc661bffbc4926707101f65cb 100644 +index c860c87a23b4d4b4328ccefbf7f1f127905f3605..fab0b33b9a3f0520f9b754a1c409557c9fb2acbd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -583,10 +583,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -243,7 +243,7 @@ index 2c30bf2b0bdb29e549db10c324daceaa3fde38fd..9d7def9b9a5c54efc661bffbc4926707 if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { -@@ -3598,5 +3603,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3596,5 +3601,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -317,7 +317,7 @@ index 65cbd35892ab48fccda9bccf2b4dd66be5c84a0d..42bff6f2d864a31dcb1c0087a4e0c902 public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 6ffe86aa887ebf96f21114a468e16376c2449911..64cf620bde9807d77658c9f17015445070a3e634 100644 +index 133bcf639a45bd7fa1a2d02410ea3e8568265007..b7df4f62eb5f128ef6202b30ed2ffdea10e8a241 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -198,6 +198,8 @@ public class ActivationRange diff --git a/patches/server/0014-Lagging-threshold.patch b/patches/server/0014-Lagging-threshold.patch index 047dc9a2d..1d2435d1e 100644 --- a/patches/server/0014-Lagging-threshold.patch +++ b/patches/server/0014-Lagging-threshold.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ea9947022e036a3e32eca7325bb71380c58533f9..941463daa771010031765818fcec4fe541b96659 100644 +index 3b49ba20c2d5f3a202996b8a5ca5cbba46975985..28985699d407a69906de670ee67f922df4a6d714 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 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index d8fcd6d1edec1f31a861fab4b86cbeb15ddc799d..c328f4155c0c4cc4f590d9d7a992497d8d129421 100644 +index d277f56fef882313d6d21f636fafae2f26630ad7..a1593297b6764ba0229cc1c8f5a55aef107ff9df 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -92,6 +92,7 @@ public abstract class AbstractMinecart extends VehicleEntity { @@ -26,9 +26,9 @@ index d8fcd6d1edec1f31a861fab4b86cbeb15ddc799d..c328f4155c0c4cc4f590d9d7a992497d public double maxSpeed = 0.4D; + public double storedMaxSpeed; // Purpur // CraftBukkit end + public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API - protected AbstractMinecart(EntityType type, Level world) { -@@ -102,6 +103,7 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -103,6 +104,7 @@ public abstract class AbstractMinecart extends VehicleEntity { } else { this.behavior = new OldMinecartBehavior(this); } @@ -36,7 +36,7 @@ index d8fcd6d1edec1f31a861fab4b86cbeb15ddc799d..c328f4155c0c4cc4f590d9d7a992497d } -@@ -288,6 +290,12 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -289,6 +291,12 @@ public abstract class AbstractMinecart extends VehicleEntity { @Override public void tick() { @@ -49,7 +49,7 @@ index d8fcd6d1edec1f31a861fab4b86cbeb15ddc799d..c328f4155c0c4cc4f590d9d7a992497d // CraftBukkit start double prevX = this.getX(); double prevY = this.getY(); -@@ -425,16 +433,62 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -426,16 +434,62 @@ public abstract class AbstractMinecart extends VehicleEntity { this.behavior.moveAlongTrack(world); } diff --git a/patches/server/0041-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0041-Option-to-toggle-milk-curing-bad-omen.patch new file mode 100644 index 000000000..eacc9572e --- /dev/null +++ b/patches/server/0041-Option-to-toggle-milk-curing-bad-omen.patch @@ -0,0 +1,38 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Wed, 10 Jul 2019 20:43:05 -0500 +Subject: [PATCH] Option to toggle milk curing bad omen + + +diff --git a/src/main/java/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java b/src/main/java/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java +index 0651c2af040e3f248860cfb3c5effce91589380e..d884df481b4bbb978113a4ac7a1feac31cf2f951 100644 +--- a/src/main/java/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java ++++ b/src/main/java/net/minecraft/world/item/consume_effects/ClearAllStatusEffectsConsumeEffect.java +@@ -24,6 +24,12 @@ public record ClearAllStatusEffectsConsumeEffect() implements ConsumeEffect { + @Override + // CraftBukkit start + public boolean apply(Level world, ItemStack itemstack, LivingEntity entityliving, EntityPotionEffectEvent.Cause cause) { ++ // Purpur start ++ net.minecraft.world.effect.MobEffectInstance badOmen = entityliving.getEffect(net.minecraft.world.effect.MobEffects.BAD_OMEN); ++ if (!world.purpurConfig.milkCuresBadOmen && itemstack.is(net.minecraft.world.item.Items.MILK_BUCKET) && badOmen != null) { ++ return entityliving.removeAllEffects(cause) && entityliving.addEffect(badOmen); ++ } ++ // Purpur end + return entityliving.removeAllEffects(cause); + // CraftBukkit end + } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 03f5aea7bc98984ced82c7dce93cc4ea4c48179f..dc90d85b1c9e44163a92d25590d2e82901e32262 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -97,8 +97,10 @@ public class PurpurWorldConfig { + } + + public boolean disableDropsOnCrammingDeath = false; ++ public boolean milkCuresBadOmen = true; + private void miscGameplayMechanicsSettings() { + disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); ++ milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + } + + public double minecartMaxSpeed = 0.4D; diff --git a/patches/server/0041-Skip-events-if-there-s-no-listeners.patch b/patches/server/0042-Skip-events-if-there-s-no-listeners.patch similarity index 100% rename from patches/server/0041-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0042-Skip-events-if-there-s-no-listeners.patch diff --git a/patches/server/0042-Add-permission-for-F3-N-debug.patch b/patches/server/0043-Add-permission-for-F3-N-debug.patch similarity index 83% rename from patches/server/0042-Add-permission-for-F3-N-debug.patch rename to patches/server/0043-Add-permission-for-F3-N-debug.patch index 4b1efac08..14affcf66 100644 --- a/patches/server/0042-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0043-Add-permission-for-F3-N-debug.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 7ec26117aa6d98140e994567fd0ded33d308e3d4..e8f43bcf810b200f0dfcac6feae7761f54dda6fe 100644 +index 718b9f237448685900cbb722510c93353a8c28b2..54e8d35edd45afd2dc152e60cc4ac96dd2916d55 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1102,6 +1102,7 @@ public abstract class PlayerList { +@@ -1108,6 +1108,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + permissionLevel); } diff --git a/patches/server/0043-Configurable-TPS-Catchup.patch b/patches/server/0044-Configurable-TPS-Catchup.patch similarity index 93% rename from patches/server/0043-Configurable-TPS-Catchup.patch rename to patches/server/0044-Configurable-TPS-Catchup.patch index 4bd58258f..89f65d1ec 100644 --- a/patches/server/0043-Configurable-TPS-Catchup.patch +++ b/patches/server/0044-Configurable-TPS-Catchup.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 941463daa771010031765818fcec4fe541b96659..a1ba1896963ab0127de00f5906351872760e5439 100644 +index 28985699d407a69906de670ee67f922df4a6d714..9a48d35cf1266c6fb7ab6cbf23b63a0b56451c0d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1342,6 +1342,10 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return itemstack.isEmpty() || entity.getEquipmentSlotForItem(itemstack) == slot; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cd90555354713be9a26c0a0abed43535a61281e8..680a89bff31861c25d76bf7ab59d87232228b34c 100644 +index 6668d186ff2f8e94ac7a7ce1de9fa0ee86757380..4a3fd89f79d539dd167fe3b616a0e0c539a9ac8f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -219,6 +219,11 @@ public class PurpurWorldConfig { +@@ -221,6 +221,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch similarity index 87% rename from patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch index 86c06e580..9fbf0da7c 100644 --- a/patches/server/0054-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0055-Add-option-for-boats-to-eject-players-on-land.patch @@ -17,18 +17,19 @@ index 1fdbef16cd29c8fc74578ac3328f985eca61088d..e523f651e8776a89ffba015921d708f5 } else { return AbstractBoat.Status.IN_AIR; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4b3727f9c4e4f1de2745e4984ad660b6a0ac7797..b87d96e31d5b0f931a420ae302ce944c94ffa97b 100644 +index 4a3fd89f79d539dd167fe3b616a0e0c539a9ac8f..968ac3249b4971c68be4e32ce35ae9456a92e52f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -96,9 +96,11 @@ public class PurpurWorldConfig { +@@ -96,10 +96,12 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } + public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; + public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; private void miscGameplayMechanicsSettings() { + boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - } diff --git a/patches/server/0055-Mending-mends-most-damages-equipment-first.patch b/patches/server/0056-Mending-mends-most-damages-equipment-first.patch similarity index 95% rename from patches/server/0055-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0056-Mending-mends-most-damages-equipment-first.patch index 3ddb5c70d..1239e5826 100644 --- a/patches/server/0055-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0056-Mending-mends-most-damages-equipment-first.patch @@ -110,19 +110,20 @@ index d8fc10f9cd0ab2c26e64613006569a86ce201550..73241113e50dc8be89ef8850d49d95ec + // Purpur end - Add option to mend the most damaged equipment first } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b87d96e31d5b0f931a420ae302ce944c94ffa97b..49efe798ae09c000c708001ca896620c468933d5 100644 +index 968ac3249b4971c68be4e32ce35ae9456a92e52f..2aa4a46418d37fd53ab215cf1bb4438f5efd8df7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -96,10 +96,12 @@ public class PurpurWorldConfig { +@@ -96,11 +96,13 @@ public class PurpurWorldConfig { armorstandStepHeight = (float) getDouble("gameplay-mechanics.armorstand.step-height", armorstandStepHeight); } + public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; + public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; private void miscGameplayMechanicsSettings() { + useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); - tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0056-Add-5-second-tps-average-in-tps.patch b/patches/server/0057-Add-5-second-tps-average-in-tps.patch similarity index 95% rename from patches/server/0056-Add-5-second-tps-average-in-tps.patch rename to patches/server/0057-Add-5-second-tps-average-in-tps.patch index eea79596b..9c6612f77 100644 --- a/patches/server/0056-Add-5-second-tps-average-in-tps.patch +++ b/patches/server/0057-Add-5-second-tps-average-in-tps.patch @@ -26,7 +26,7 @@ index 12b327eea95e0de9e9c39b7d039badee8ec46508..849ecc5af70901f1e40cb6c419f33f1c } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5b917da2009c31f62a21b3064c865dc181986843..49ed4f9d930b50bb11a9ecbfff0b99ea2ccd29c7 100644 +index d6b97aed27a628110145f83e120a54fcf650c621..9b93c5e5671bc910e8880a29ced9c4a5f0d36d53 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -324,7 +324,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> 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 5d8885bca55503bf7e1a2a4e1bb9b3bd86d55391..89d89a1b07231f3f009a8fa66374af3fcc3e2549 100644 +index 0f086af57a5ff08c264dcbf89a8c3931ec73a609..c63cf322e0d00b5ec9929db8c22d4a392049160f 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java @@ -64,6 +64,12 @@ public class ItemEntity extends Entity implements TraceableEntity { @@ -117,10 +117,10 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..01e4395f1669d21c30465aa1366bd2f1 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 95a7e0870e45004523278ae78c25b9db80882630..2a566e9eec02cf19d409dadff3ffaabc7715e05a 100644 +index b8113e86c3b4dfa4ebb8fc668057a902dd8c30d8..0766f4cb00caac477e7ee0d537dc1f5304cd7d1a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -118,6 +118,49 @@ public class PurpurWorldConfig { +@@ -120,6 +120,49 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0059-Add-ping-command.patch b/patches/server/0060-Add-ping-command.patch similarity index 100% rename from patches/server/0059-Add-ping-command.patch rename to patches/server/0060-Add-ping-command.patch diff --git a/patches/server/0060-Add-demo-command.patch b/patches/server/0061-Add-demo-command.patch similarity index 100% rename from patches/server/0060-Add-demo-command.patch rename to patches/server/0061-Add-demo-command.patch diff --git a/patches/server/0061-Add-credits-command.patch b/patches/server/0062-Add-credits-command.patch similarity index 100% rename from patches/server/0061-Add-credits-command.patch rename to patches/server/0062-Add-credits-command.patch diff --git a/patches/server/0062-Configurable-jockey-options.patch b/patches/server/0063-Configurable-jockey-options.patch similarity index 95% rename from patches/server/0062-Configurable-jockey-options.patch rename to patches/server/0063-Configurable-jockey-options.patch index d9df6aa8e..364d3e4ff 100644 --- a/patches/server/0062-Configurable-jockey-options.patch +++ b/patches/server/0063-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ index ba1ce7e0ed888bd47312e9d7da5426f5c1015d07..650f9e1ca3a5ddec5123133c9604f331 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b4145efa08ba 100644 +index 0766f4cb00caac477e7ee0d537dc1f5304cd7d1a..7c1f903c41839251a69d38ba58fb4a7038f8901a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -634,6 +634,9 @@ public class PurpurWorldConfig { +@@ -636,6 +636,9 @@ public class PurpurWorldConfig { public double drownedMaxHealth = 20.0D; public double drownedScale = 1.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b414 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -646,6 +649,9 @@ public class PurpurWorldConfig { +@@ -648,6 +651,9 @@ public class PurpurWorldConfig { drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedScale = Mth.clamp(getDouble("mobs.drowned.attributes.scale", drownedScale), 0.0625D, 16.0D); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -190,7 +190,7 @@ index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b414 } public boolean elderGuardianRidable = false; -@@ -917,6 +923,9 @@ public class PurpurWorldConfig { +@@ -919,6 +925,9 @@ public class PurpurWorldConfig { public double huskMaxHealth = 20.0D; public double huskScale = 1.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b414 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -929,6 +938,9 @@ public class PurpurWorldConfig { +@@ -931,6 +940,9 @@ public class PurpurWorldConfig { huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskScale = Mth.clamp(getDouble("mobs.husk.attributes.scale", huskScale), 0.0625D, 16.0D); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); @@ -210,7 +210,7 @@ index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b414 } public boolean illusionerRidable = false; -@@ -1822,6 +1834,9 @@ public class PurpurWorldConfig { +@@ -1824,6 +1836,9 @@ public class PurpurWorldConfig { public double zombieMaxHealth = 20.0D; public double zombieScale = 1.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b414 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1834,6 +1849,9 @@ public class PurpurWorldConfig { +@@ -1836,6 +1851,9 @@ public class PurpurWorldConfig { zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieScale = Mth.clamp(getDouble("mobs.zombie.attributes.scale", zombieScale), 0.0625D, 16.0D); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); @@ -230,7 +230,7 @@ index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b414 } public boolean zombieHorseRidable = false; -@@ -1871,6 +1889,9 @@ public class PurpurWorldConfig { +@@ -1873,6 +1891,9 @@ public class PurpurWorldConfig { public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerScale = 1.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b414 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1883,6 +1904,9 @@ public class PurpurWorldConfig { +@@ -1885,6 +1906,9 @@ public class PurpurWorldConfig { zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerScale = Mth.clamp(getDouble("mobs.zombie_villager.attributes.scale", zombieVillagerScale), 0.0625D, 16.0D); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); @@ -250,7 +250,7 @@ index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b414 } public boolean zombifiedPiglinRidable = false; -@@ -1891,6 +1915,9 @@ public class PurpurWorldConfig { +@@ -1893,6 +1917,9 @@ public class PurpurWorldConfig { public double zombifiedPiglinMaxHealth = 20.0D; public double zombifiedPiglinScale = 1.0D; public double zombifiedPiglinSpawnReinforcements = 0.0D; @@ -260,7 +260,7 @@ index 75e969ed3887fe2c57ca080e4f4b56dc53e295cb..6c5729b86a0540aa1ced33640170b414 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1903,5 +1930,8 @@ public class PurpurWorldConfig { +@@ -1905,5 +1932,8 @@ public class PurpurWorldConfig { zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinScale = Mth.clamp(getDouble("mobs.zombified_piglin.attributes.scale", zombifiedPiglinScale), 0.0625D, 16.0D); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 98% rename from patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index ce29528d9..f89f2bd38 100644 --- a/patches/server/0063-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0064-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -256,10 +256,10 @@ index e44d6d02ceaf1f133705efcd58b94e36014389ec..bd1c23d849269df504c94da9d0ca0a68 private float speed = 0.1F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 247f476b060221daaec64b975ebce74b458c5ec2..cfdb01c51909ac44a952fcd720af4b88157835b8 100644 +index 7c1f903c41839251a69d38ba58fb4a7038f8901a..50db395f519db1d25174e2bdb930e11a05167603 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1148,6 +1148,9 @@ public class PurpurWorldConfig { +@@ -1150,6 +1150,9 @@ public class PurpurWorldConfig { public String phantomAttackDamage = "6 + size"; public Map phantomMaxHealthCache = new HashMap<>(); public Map phantomAttackDamageCache = new HashMap<>(); @@ -269,7 +269,7 @@ index 247f476b060221daaec64b975ebce74b458c5ec2..cfdb01c51909ac44a952fcd720af4b88 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1169,6 +1172,9 @@ public class PurpurWorldConfig { +@@ -1171,6 +1174,9 @@ public class PurpurWorldConfig { phantomAttackDamage = getString("mobs.phantom.attributes.attack_damage", phantomAttackDamage); phantomMaxHealthCache.clear(); phantomAttackDamageCache.clear(); diff --git a/patches/server/0064-Add-phantom-spawning-options.patch b/patches/server/0065-Add-phantom-spawning-options.patch similarity index 96% rename from patches/server/0064-Add-phantom-spawning-options.patch rename to patches/server/0065-Add-phantom-spawning-options.patch index bc2a56259..f54bf5f4b 100644 --- a/patches/server/0064-Add-phantom-spawning-options.patch +++ b/patches/server/0065-Add-phantom-spawning-options.patch @@ -40,10 +40,10 @@ index 021221da5d0315f6e371380a705ac6b3f6ac18d3..27eb9a365006884c85603dc6d9dd8eee for (int l = 0; l < k; ++l) { // Paper start - PhantomPreSpawnEvent diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 65c8b2e76677b92fee94e1149a9ce3803b3f1737..2858714275c2e3e9c0defaf264eeaade89e7cdaa 100644 +index 50db395f519db1d25174e2bdb930e11a05167603..862e65def7fd59810ca9bf206298556d900aa28d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1151,6 +1151,12 @@ public class PurpurWorldConfig { +@@ -1153,6 +1153,12 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -56,7 +56,7 @@ index 65c8b2e76677b92fee94e1149a9ce3803b3f1737..2858714275c2e3e9c0defaf264eeaade private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1175,6 +1181,12 @@ public class PurpurWorldConfig { +@@ -1177,6 +1183,12 @@ public class PurpurWorldConfig { phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius); phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage); phantomOrbitCrystalRadius = getDouble("mobs.phantom.orbit-crystal-radius", phantomOrbitCrystalRadius); diff --git a/patches/server/0065-Implement-bed-explosion-options.patch b/patches/server/0066-Implement-bed-explosion-options.patch similarity index 96% rename from patches/server/0065-Implement-bed-explosion-options.patch rename to patches/server/0066-Implement-bed-explosion-options.patch index 4747dde25..9b3cd9ab1 100644 --- a/patches/server/0065-Implement-bed-explosion-options.patch +++ b/patches/server/0066-Implement-bed-explosion-options.patch @@ -27,10 +27,10 @@ index c02c4834ace843633b77fb43eeadd3ddc7b1f743..3b19395f2ddee654a77df5738a1942a0 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2858714275c2e3e9c0defaf264eeaade89e7cdaa..60bc2a992d407ad99705af0e34ec3c2182e1cc23 100644 +index 862e65def7fd59810ca9bf206298556d900aa28d..cecd694e5a3f6ce3ce4e92b71f7e6f917d5091c7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -277,6 +277,27 @@ public class PurpurWorldConfig { +@@ -279,6 +279,27 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0066-Implement-respawn-anchor-explosion-options.patch b/patches/server/0067-Implement-respawn-anchor-explosion-options.patch similarity index 95% rename from patches/server/0066-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0067-Implement-respawn-anchor-explosion-options.patch index f09d906f6..0ebfecc1b 100644 --- a/patches/server/0066-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0067-Implement-respawn-anchor-explosion-options.patch @@ -18,10 +18,10 @@ index 9117c035d5a6ff114b028fad3380ceb1fc2b9691..2c5e394156dbf76107adb4913a094dfd public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 60bc2a992d407ad99705af0e34ec3c2182e1cc23..a168eb5c1f08ad4def8421e298512c532ec06988 100644 +index cecd694e5a3f6ce3ce4e92b71f7e6f917d5091c7..df753eb03c427268d404598b96b8285a00460e2d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -317,6 +317,27 @@ public class PurpurWorldConfig { +@@ -319,6 +319,27 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0067-Add-allow-water-in-end-world-option.patch b/patches/server/0068-Add-allow-water-in-end-world-option.patch similarity index 100% rename from patches/server/0067-Add-allow-water-in-end-world-option.patch rename to patches/server/0068-Add-allow-water-in-end-world-option.patch diff --git a/patches/server/0068-Allow-color-codes-in-books.patch b/patches/server/0069-Allow-color-codes-in-books.patch similarity index 98% rename from patches/server/0068-Allow-color-codes-in-books.patch rename to patches/server/0069-Allow-color-codes-in-books.patch index 86b0e8aa8..2e0399bda 100644 --- a/patches/server/0068-Allow-color-codes-in-books.patch +++ b/patches/server/0069-Allow-color-codes-in-books.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c65c924f739b1c2ed328c936ec1854e0bc1d5b84..fc3eda4b692482d95aade888e624ba0343a541f8 100644 +index 58540f1b04e569198c09ada7415a48b9af69147a..97caf27fe92ff6e34e2edba77abd3fa42211b00a 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1248,10 +1248,14 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0069-Entity-lifespan.patch b/patches/server/0070-Entity-lifespan.patch similarity index 94% rename from patches/server/0069-Entity-lifespan.patch rename to patches/server/0070-Entity-lifespan.patch index 749ed8586..cb291d89a 100644 --- a/patches/server/0069-Entity-lifespan.patch +++ b/patches/server/0070-Entity-lifespan.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index fc3eda4b692482d95aade888e624ba0343a541f8..d6ba87cd80abe6126a21df0aafc208a8a2260322 100644 +index 97caf27fe92ff6e34e2edba77abd3fa42211b00a..c5f36e6a37d1d718e145de85b9a0a89114790d36 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2855,6 +2855,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2856,6 +2856,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl AABB axisalignedbb = entity.getBoundingBox(); if (this.player.canInteractWithEntity(axisalignedbb, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0D))) { // Paper - configurable lenience value for interact range @@ -94,10 +94,10 @@ index bc2380a71aa65c40f326c1f6bdf15ee25346ffee..8ce316292850353231e529f75630d3fd } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cc890a4ac7cb6fc24f5903538d0f002e1df09d37..1bf4fa7b9652347a48010a0713190aec9a5fc166 100644 +index df753eb03c427268d404598b96b8285a00460e2d..722c95adbed966ddec57250a5fdc1978594fd499 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -118,6 +118,11 @@ public class PurpurWorldConfig { +@@ -120,6 +120,11 @@ public class PurpurWorldConfig { elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost); } diff --git a/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 88% rename from patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 2b894b42b..483b49721 100644 --- a/patches/server/0070-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0071-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index cc586ae7c58ff5a662c572af47e22468fe301152..a0f3371520702a3a1643abd45bf6754336385397 100644 +index b5054c762382bb81fa83069a97467af08946f6e5..3d05da7985402f1cf361182084b62145c9bf9856 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -3412,4 +3412,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3413,4 +3413,26 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple return (CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end @@ -36,7 +36,7 @@ index cc586ae7c58ff5a662c572af47e22468fe301152..a0f3371520702a3a1643abd45bf67543 + // Purpur end } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e49b530e8bdcff5aacc693f6e859c9c98fd50a19..418456bb08e00c6a9af492bda4f0600921fc5b77 100644 +index 66ae89ade2bb19b0a8498573f8c0c68ff0628594..ba9fc0f5d9979aee43dcf716cf25ff42928a9f1b 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -479,6 +479,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -48,10 +48,10 @@ index e49b530e8bdcff5aacc693f6e859c9c98fd50a19..418456bb08e00c6a9af492bda4f06009 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1bf4fa7b9652347a48010a0713190aec9a5fc166..0111b9e3484df5958ed5dee55a9b510ef4a1f35e 100644 +index 722c95adbed966ddec57250a5fdc1978594fd499..89151a9538e22941ad55aab1807d6871a852364c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -235,6 +235,7 @@ public class PurpurWorldConfig { +@@ -237,6 +237,7 @@ public class PurpurWorldConfig { public boolean idleTimeoutTargetPlayer = true; public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; @@ -59,7 +59,7 @@ index 1bf4fa7b9652347a48010a0713190aec9a5fc166..0111b9e3484df5958ed5dee55a9b510e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -248,6 +249,7 @@ public class PurpurWorldConfig { +@@ -250,6 +251,7 @@ public class PurpurWorldConfig { idleTimeoutTargetPlayer = getBoolean("gameplay-mechanics.player.idle-timeout.mobs-target", idleTimeoutTargetPlayer); playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); diff --git a/patches/server/0071-Squid-EAR-immunity.patch b/patches/server/0072-Squid-EAR-immunity.patch similarity index 85% rename from patches/server/0071-Squid-EAR-immunity.patch rename to patches/server/0072-Squid-EAR-immunity.patch index ebdfb0439..f7589199f 100644 --- a/patches/server/0071-Squid-EAR-immunity.patch +++ b/patches/server/0072-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0111b9e3484df5958ed5dee55a9b510ef4a1f35e..c0cb7399a1a8753bd5a5c390cb6f334d5aaf3907 100644 +index 89151a9538e22941ad55aab1807d6871a852364c..30c0c6d582069c6a01b033bb9707f4fa1c82f4e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1571,6 +1571,7 @@ public class PurpurWorldConfig { +@@ -1573,6 +1573,7 @@ public class PurpurWorldConfig { public boolean squidControllable = true; public double squidMaxHealth = 10.0D; public double squidScale = 1.0D; @@ -16,7 +16,7 @@ index 0111b9e3484df5958ed5dee55a9b510ef4a1f35e..c0cb7399a1a8753bd5a5c390cb6f334d private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1581,6 +1582,7 @@ public class PurpurWorldConfig { +@@ -1583,6 +1584,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); @@ -25,7 +25,7 @@ index 0111b9e3484df5958ed5dee55a9b510ef4a1f35e..c0cb7399a1a8753bd5a5c390cb6f334d public boolean spiderRidable = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index 64cf620bde9807d77658c9f17015445070a3e634..813b8aeb7bf39e03346fd9ca63c4c6498e162965 100644 +index b7df4f62eb5f128ef6202b30ed2ffdea10e8a241..66e7b1966602f6d9f5978d66df7cb81b8c89e75b 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -377,6 +377,7 @@ public class ActivationRange diff --git a/patches/server/0072-Phantoms-burn-in-light.patch b/patches/server/0073-Phantoms-burn-in-light.patch similarity index 94% rename from patches/server/0072-Phantoms-burn-in-light.patch rename to patches/server/0073-Phantoms-burn-in-light.patch index 284ff1ba0..dcf38640b 100644 --- a/patches/server/0072-Phantoms-burn-in-light.patch +++ b/patches/server/0073-Phantoms-burn-in-light.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java -index 5d62be4ae4561262820d011f5e7318411d749bbb..11e0ba7ec12ba3b93589f451ef4f251598eb29c9 100644 +index bd1c23d849269df504c94da9d0ca0a6846b22c41..987b860f85a1be3159233fb3291773792d291348 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java +++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java @@ -49,6 +49,7 @@ public class Phantom extends FlyingMob implements Enemy { @@ -51,10 +51,10 @@ index 5d62be4ae4561262820d011f5e7318411d749bbb..11e0ba7ec12ba3b93589f451ef4f2515 list.sort(Comparator.comparing((Entity e) -> { return e.getY(); }).reversed()); // CraftBukkit - decompile error Iterator iterator = list.iterator(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f686584f2f9205c3594daa52c4b3daf32f8e57b..3e0113f24c49e9922ce3981855c810b0907cba07 100644 +index 30c0c6d582069c6a01b033bb9707f4fa1c82f4e9..feddf1aeb817e5bf3fbde76943c36da6bd4c1133 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1206,6 +1206,9 @@ public class PurpurWorldConfig { +@@ -1208,6 +1208,9 @@ public class PurpurWorldConfig { public double phantomSpawnLocalDifficultyChance = 3.0D; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -64,7 +64,7 @@ index 5f686584f2f9205c3594daa52c4b3daf32f8e57b..3e0113f24c49e9922ce3981855c810b0 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1236,6 +1239,9 @@ public class PurpurWorldConfig { +@@ -1238,6 +1241,9 @@ public class PurpurWorldConfig { phantomSpawnLocalDifficultyChance = getDouble("mobs.phantom.spawn.local-difficulty-chance", phantomSpawnLocalDifficultyChance); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0073-Configurable-villager-breeding.patch b/patches/server/0074-Configurable-villager-breeding.patch similarity index 91% rename from patches/server/0073-Configurable-villager-breeding.patch rename to patches/server/0074-Configurable-villager-breeding.patch index 2d7498927..bd25bbd6a 100644 --- a/patches/server/0073-Configurable-villager-breeding.patch +++ b/patches/server/0074-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index 9008eeae3187024862bef886801d197c4c425df3..62a1d6876ce75676c5fa381e48bc58b8 private boolean hungry() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3e0113f24c49e9922ce3981855c810b0907cba07..5175aff0fe60a9f1c71882d01f8ad29dac84f579 100644 +index feddf1aeb817e5bf3fbde76943c36da6bd4c1133..436f04b56ac6795e393008e4eeae4fc09cd2e2a9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1743,6 +1743,7 @@ public class PurpurWorldConfig { +@@ -1745,6 +1745,7 @@ public class PurpurWorldConfig { public double villagerScale = 1.0D; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; @@ -29,7 +29,7 @@ index 3e0113f24c49e9922ce3981855c810b0907cba07..5175aff0fe60a9f1c71882d01f8ad29d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1756,6 +1757,7 @@ public class PurpurWorldConfig { +@@ -1758,6 +1759,7 @@ public class PurpurWorldConfig { villagerScale = Mth.clamp(getDouble("mobs.villager.attributes.scale", villagerScale), 0.0625D, 16.0D); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); diff --git a/patches/server/0074-Redstone-deactivates-spawners.patch b/patches/server/0075-Redstone-deactivates-spawners.patch similarity index 91% rename from patches/server/0074-Redstone-deactivates-spawners.patch rename to patches/server/0075-Redstone-deactivates-spawners.patch index 2e0222d30..15279b020 100644 --- a/patches/server/0074-Redstone-deactivates-spawners.patch +++ b/patches/server/0075-Redstone-deactivates-spawners.patch @@ -17,10 +17,10 @@ index 7de66aa435dd36899b80f4ecc64480680e474d94..bb4411cfdf1bc7adc12c2f918d2eec83 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5175aff0fe60a9f1c71882d01f8ad29dac84f579..0c8ec8f1f6a79a0764ff05d34b40cf18c5590862 100644 +index 436f04b56ac6795e393008e4eeae4fc09cd2e2a9..8bd53ffbf41b45a2aa62f115884f2ec55574ec21 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -345,6 +345,11 @@ public class PurpurWorldConfig { +@@ -347,6 +347,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0075-Totems-work-in-inventory.patch b/patches/server/0076-Totems-work-in-inventory.patch similarity index 90% rename from patches/server/0075-Totems-work-in-inventory.patch rename to patches/server/0076-Totems-work-in-inventory.patch index c87929005..e9fda6ae3 100644 --- a/patches/server/0075-Totems-work-in-inventory.patch +++ b/patches/server/0076-Totems-work-in-inventory.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 418456bb08e00c6a9af492bda4f0600921fc5b77..cccd99d642ea14eb175946656d4dead436268d01 100644 +index ba9fc0f5d9979aee43dcf716cf25ff42928a9f1b..7de429f377fa4880c3b0cfb9b72df06a9b89722e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1707,6 +1707,18 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -28,10 +28,10 @@ index 418456bb08e00c6a9af492bda4f0600921fc5b77..cccd99d642ea14eb175946656d4dead4 EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemstack == null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc158fefad2a9d0b9be693ba892ddd1fa5189e8e..c03ded82f52f53e8d0e7b138e2fa34f86f46f180 100644 +index 8bd53ffbf41b45a2aa62f115884f2ec55574ec21..575d9dd236287ce26a1c080df2d05fa27849845e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -236,6 +236,7 @@ public class PurpurWorldConfig { +@@ -238,6 +238,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -39,7 +39,7 @@ index dc158fefad2a9d0b9be693ba892ddd1fa5189e8e..c03ded82f52f53e8d0e7b138e2fa34f8 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -250,6 +251,7 @@ public class PurpurWorldConfig { +@@ -252,6 +253,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch similarity index 91% rename from patches/server/0076-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0077-Add-vindicator-johnny-spawn-chance.patch index 44249d81c..bccaf18f1 100644 --- a/patches/server/0076-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0077-Add-vindicator-johnny-spawn-chance.patch @@ -21,10 +21,10 @@ index 2bfce82bee8f3a16a33bd937eb610d9df1b6ceeb..2f7da09e14787395e95211acadd5c693 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bd3c6364051419544cc1c5db110920ad51c1dbc7..fa69de1709b41faef119474b98bcd2839d0ae67d 100644 +index 575d9dd236287ce26a1c080df2d05fa27849845e..4ea6246187a94e596800f0c26c604c5bfb644823 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1772,6 +1772,7 @@ public class PurpurWorldConfig { +@@ -1774,6 +1774,7 @@ public class PurpurWorldConfig { public boolean vindicatorControllable = true; public double vindicatorMaxHealth = 24.0D; public double vindicatorScale = 1.0D; @@ -32,7 +32,7 @@ index bd3c6364051419544cc1c5db110920ad51c1dbc7..fa69de1709b41faef119474b98bcd283 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1783,6 +1784,7 @@ public class PurpurWorldConfig { +@@ -1785,6 +1786,7 @@ public class PurpurWorldConfig { } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); diff --git a/patches/server/0077-Dispensers-place-anvils-option.patch b/patches/server/0078-Dispensers-place-anvils-option.patch similarity index 89% rename from patches/server/0077-Dispensers-place-anvils-option.patch rename to patches/server/0078-Dispensers-place-anvils-option.patch index 923e6574e..b6fe7a408 100644 --- a/patches/server/0077-Dispensers-place-anvils-option.patch +++ b/patches/server/0078-Dispensers-place-anvils-option.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dispensers place anvils option diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -index cd77e86ff289634d2dd1c56002e569ff70d15f25..f5d7008ab65be21980063c6c5da783e4077252f5 100644 +index 0d12605dc84dad49faa18bf1fd058c3c168623ee..c6490554a3025f4de3f3218178fad76cd1848a19 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -922,5 +922,22 @@ public interface DispenseItemBehavior { +@@ -930,5 +930,22 @@ public interface DispenseItemBehavior { DispenserBlock.registerBehavior(Items.TNT_MINECART, new MinecartDispenseItemBehavior(EntityType.TNT_MINECART)); DispenserBlock.registerBehavior(Items.HOPPER_MINECART, new MinecartDispenseItemBehavior(EntityType.HOPPER_MINECART)); DispenserBlock.registerBehavior(Items.COMMAND_BLOCK_MINECART, new MinecartDispenseItemBehavior(EntityType.COMMAND_BLOCK_MINECART)); @@ -32,10 +32,10 @@ index cd77e86ff289634d2dd1c56002e569ff70d15f25..f5d7008ab65be21980063c6c5da783e4 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fa69de1709b41faef119474b98bcd2839d0ae67d..0aaf03f290a9bf410a5f854add927aca58d09ec3 100644 +index 4ea6246187a94e596800f0c26c604c5bfb644823..729123a4eb3323457819961685a6a088ca650de3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -308,8 +308,10 @@ public class PurpurWorldConfig { +@@ -310,8 +310,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0078-Allow-anvil-colors.patch b/patches/server/0079-Allow-anvil-colors.patch similarity index 97% rename from patches/server/0078-Allow-anvil-colors.patch rename to patches/server/0079-Allow-anvil-colors.patch index c0100a7a9..22f80aa3c 100644 --- a/patches/server/0078-Allow-anvil-colors.patch +++ b/patches/server/0079-Allow-anvil-colors.patch @@ -64,10 +64,10 @@ index 0dfcce766872d9b1a9b898f56e6f4d9179a46bc4..f1834eec821a14ef6a7f42f827b7e0b8 } } else if (itemstack.has(DataComponents.CUSTOM_NAME)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0aaf03f290a9bf410a5f854add927aca58d09ec3..cc35a98e9602b261da8613ae9cf95a0940bfeb19 100644 +index 729123a4eb3323457819961685a6a088ca650de3..1264d6e7304db19e8e10bace19d750fcf51fc995 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -286,6 +286,13 @@ public class PurpurWorldConfig { +@@ -288,6 +288,13 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 90% rename from patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch index c3bc55676..06ef8231d 100644 --- a/patches/server/0079-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0080-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index a5a23c7f733d49c20c870f819eec2607781dccbf..be74a5732bc24eb3c909d28b4ef46d51 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index cc35a98e9602b261da8613ae9cf95a0940bfeb19..c1302e6cd7db386c94d95e03b901c65b3aca1887 100644 +index 1264d6e7304db19e8e10bace19d750fcf51fc995..f57bdfe69273a62dda9839b1725625aa969b2b78 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -654,6 +654,7 @@ public class PurpurWorldConfig { +@@ -656,6 +656,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public double dolphinScale = 1.0D; @@ -28,7 +28,7 @@ index cc35a98e9602b261da8613ae9cf95a0940bfeb19..c1302e6cd7db386c94d95e03b901c65b private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -667,6 +668,7 @@ public class PurpurWorldConfig { +@@ -669,6 +670,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); diff --git a/patches/server/0080-Short-enderman-height.patch b/patches/server/0081-Short-enderman-height.patch similarity index 96% rename from patches/server/0080-Short-enderman-height.patch rename to patches/server/0081-Short-enderman-height.patch index 86cdb723a..715a5839a 100644 --- a/patches/server/0080-Short-enderman-height.patch +++ b/patches/server/0081-Short-enderman-height.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Short enderman height diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index d0efef43b71298491b2e03b9ce5505729c3c4afc..5752388a5013a3054c3f453db844a6b4ca285bda 100644 +index 48386124487a1f0fdc1d476895fa118102fb4003..5796f9bdde43d5b681ee2aaa7bc47076114af321 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java @@ -388,7 +388,8 @@ public class EntityType implements FeatureElement, EntityTypeT diff --git a/patches/server/0081-Stop-squids-floating-on-top-of-water.patch b/patches/server/0082-Stop-squids-floating-on-top-of-water.patch similarity index 92% rename from patches/server/0081-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0082-Stop-squids-floating-on-top-of-water.patch index 4703a2fe2..49d3a7bd0 100644 --- a/patches/server/0081-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0082-Stop-squids-floating-on-top-of-water.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 16efd32b5320fb0c7fcbeb1487075fe815e22b0a..ba4b903b034131cfc244a74fad9f6070b764ac32 100644 +index 863780d37c804fc7a085f540af2b70491c570877..3d25c9ec52dfcd85ab7220c5b2f760f31b564724 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -4751,6 +4751,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -54,10 +54,10 @@ index 6cf6d4ec7b9e43c7b2b4c0e2fb080964ff588130..e74866e5195a5eeae7666ad7be750eda + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9bf9fe0fa23f24e097e21584da8526dd10993bb6..9f2192a5a22827a6d453fc326fffe161ff42aac1 100644 +index f57bdfe69273a62dda9839b1725625aa969b2b78..3fb03b012873999e2ff82b480908655303e47aaf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1596,6 +1596,7 @@ public class PurpurWorldConfig { +@@ -1598,6 +1598,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public double squidScale = 1.0D; public boolean squidImmuneToEAR = true; @@ -65,7 +65,7 @@ index 9bf9fe0fa23f24e097e21584da8526dd10993bb6..9f2192a5a22827a6d453fc326fffe161 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1607,6 +1608,7 @@ public class PurpurWorldConfig { +@@ -1609,6 +1610,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch similarity index 100% rename from patches/server/0082-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0083-Crying-obsidian-valid-for-portal-frames.patch diff --git a/patches/server/0083-Entities-can-use-portals.patch b/patches/server/0084-Entities-can-use-portals.patch similarity index 87% rename from patches/server/0083-Entities-can-use-portals.patch rename to patches/server/0084-Entities-can-use-portals.patch index c271422e7..eee6244c4 100644 --- a/patches/server/0083-Entities-can-use-portals.patch +++ b/patches/server/0084-Entities-can-use-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entities can use portals diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ba4b903b034131cfc244a74fad9f6070b764ac32..6ed1567d1133cad36a4825aad9757baf23dd11aa 100644 +index 3d25c9ec52dfcd85ab7220c5b2f760f31b564724..ebffeb41944df4e097fad259f48b2d18941e55b3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3473,7 +3473,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -27,18 +27,19 @@ index ba4b903b034131cfc244a74fad9f6070b764ac32..6ed1567d1133cad36a4825aad9757baf public boolean canTeleport(Level from, Level to) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9f2192a5a22827a6d453fc326fffe161ff42aac1..ec22d8f33387615b46a578be746f79b624674055 100644 +index 3fb03b012873999e2ff82b480908655303e47aaf..b901f058f82033fe1750bfc4fb472c80268f1920 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -100,11 +100,13 @@ public class PurpurWorldConfig { - public boolean boatEjectPlayersOnLand = false; +@@ -101,12 +101,14 @@ public class PurpurWorldConfig { public boolean disableDropsOnCrammingDeath = false; + public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; + public boolean entitiesCanUsePortals = true; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); + entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); } diff --git a/patches/server/0084-Customizable-wither-health-and-healing.patch b/patches/server/0085-Customizable-wither-health-and-healing.patch similarity index 92% rename from patches/server/0084-Customizable-wither-health-and-healing.patch rename to patches/server/0085-Customizable-wither-health-and-healing.patch index cd108b2e3..43e85b997 100644 --- a/patches/server/0084-Customizable-wither-health-and-healing.patch +++ b/patches/server/0085-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index f55842cf85dec8e5c26cd5ac52c63599f3b19cf3..2ec12ec298446b556132785d4d376130 this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 85c896145bd1489a9bcdfe580f959db308c59b65..119904f2c4e9f8c4b3596a26220833d457bb60df 100644 +index b901f058f82033fe1750bfc4fb472c80268f1920..26e89ab042792a627efdb5a8cee5c5972bba80ef 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1857,6 +1857,8 @@ public class PurpurWorldConfig { +@@ -1859,6 +1859,8 @@ public class PurpurWorldConfig { public double witherMaxY = 320D; public double witherMaxHealth = 300.0D; public double witherScale = 1.0D; @@ -35,7 +35,7 @@ index 85c896145bd1489a9bcdfe580f959db308c59b65..119904f2c4e9f8c4b3596a26220833d4 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1873,6 +1875,8 @@ public class PurpurWorldConfig { +@@ -1875,6 +1877,8 @@ public class PurpurWorldConfig { } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); diff --git a/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch similarity index 95% rename from patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch index f74d9522e..47d0cff26 100644 --- a/patches/server/0085-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0086-Allow-toggling-special-MobSpawners-per-world.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Allow toggling special MobSpawners per world In vanilla, these are all hardcoded on for world type 0 (overworld) and hardcoded off for every other world type. Default config behaviour matches this. diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 943ef063efa000da0810b079b47ec18ed2aa5a63..54f7545f35ba615ac942c82a2602b9466646f012 100644 +index bfe46102dd41a46c1cc0cdf7fa03a6a60254c529..0ba171e226eee4e140f6bae61dcb6f7660554548 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -598,7 +598,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -59,7 +59,7 @@ index a728dcbf956f108f01c966c7531449a506a14a87..4c1378132201c1e5d1bc01f8c0cbba91 if (spawnplacementtype.isSpawnPositionOk(world, blockposition2, EntityType.WANDERING_TRADER)) { blockposition1 = blockposition2; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f82f5405f3ff0bc91806da3b1ffdeb30206b6297..9ddd1796c83a68e1837cbdfe8db0baf9e3b1fdfa 100644 +index 26e89ab042792a627efdb5a8cee5c5972bba80ef..35c8798e3c839656758f11bf55f09983da337815 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -70,6 +70,12 @@ public class PurpurWorldConfig { @@ -75,7 +75,7 @@ index f82f5405f3ff0bc91806da3b1ffdeb30206b6297..9ddd1796c83a68e1837cbdfe8db0baf9 private double getDouble(String path, double def) { PurpurConfig.config.addDefault("world-settings.default." + path, def); return PurpurConfig.config.getDouble("world-settings." + worldName + "." + path, PurpurConfig.config.getDouble("world-settings.default." + path)); -@@ -230,6 +236,21 @@ public class PurpurWorldConfig { +@@ -232,6 +238,21 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0086-Raid-cooldown-setting.patch b/patches/server/0087-Raid-cooldown-setting.patch similarity index 91% rename from patches/server/0086-Raid-cooldown-setting.patch rename to patches/server/0087-Raid-cooldown-setting.patch index 8b65d0084..7c38302e4 100644 --- a/patches/server/0086-Raid-cooldown-setting.patch +++ b/patches/server/0087-Raid-cooldown-setting.patch @@ -49,18 +49,19 @@ index 439d61d8689fabe940006b9b317a6810175dccfb..6b30941a84054efb5fcccb5d9e6c80d7 if (!raid.isStarted() && !this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 668ea98aee2f74ff6ac961b61360fb2e48513ebf..0e1992ba3bbd470eee6bdd461d2f00abec5c6d55 100644 +index 35c8798e3c839656758f11bf55f09983da337815..2d34c9dc0f1bbd2b6c56ed80f088b604793b9a2a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -107,12 +107,14 @@ public class PurpurWorldConfig { - public boolean disableDropsOnCrammingDeath = false; +@@ -108,6 +108,7 @@ public class PurpurWorldConfig { + public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; public boolean entitiesCanUsePortals = true; + public int raidCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); - disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); +@@ -115,6 +116,7 @@ public class PurpurWorldConfig { + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); diff --git a/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 95% rename from patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 3fe5096a1..568d39c1d 100644 --- a/patches/server/0087-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0088-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to disable zombie aggressiveness towards villagers diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -index f7241c5292f1c012404eea11256813fbc2c2df1a..fad407d0cec0605e303e93a79752435f0b4646d7 100644 +index 3470720466fc81f977c18e3a97bb918926025a22..c8651af322927c46d075f88890fcd0476bd85440 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java @@ -136,6 +136,10 @@ public class MobGoalHelper { @@ -70,10 +70,10 @@ index cb5cf34781de4e87074a70a447fd463280147bdc..e6fb53b828c1a2e76d398e88449260f6 this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0e1992ba3bbd470eee6bdd461d2f00abec5c6d55..a0a5059e5d86ff3626b7e4a6d378f9b34d6ba8dc 100644 +index 2d34c9dc0f1bbd2b6c56ed80f088b604793b9a2a..3c185f89b6f90720620f1fa93e13da60a944613e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1965,6 +1965,7 @@ public class PurpurWorldConfig { +@@ -1967,6 +1967,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -81,7 +81,7 @@ index 0e1992ba3bbd470eee6bdd461d2f00abec5c6d55..a0a5059e5d86ff3626b7e4a6d378f9b3 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1980,6 +1981,7 @@ public class PurpurWorldConfig { +@@ -1982,6 +1983,7 @@ public class PurpurWorldConfig { zombieJockeyOnlyBaby = getBoolean("mobs.zombie.jockey.only-babies", zombieJockeyOnlyBaby); zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); diff --git a/patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch new file mode 100644 index 000000000..c821e5997 --- /dev/null +++ b/patches/server/0089-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch @@ -0,0 +1,42 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sat, 3 Oct 2020 17:40:52 -0500 +Subject: [PATCH] Add predicate to recipe's ExactChoice ingredient + + +diff --git a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java +index 2dce801e06687c218be3333ac9f000bae09f0caf..ed9548341eb226cf5a5d2370419a01208cf0f742 100644 +--- a/src/main/java/net/minecraft/world/item/crafting/Ingredient.java ++++ b/src/main/java/net/minecraft/world/item/crafting/Ingredient.java +@@ -45,6 +45,7 @@ public final class Ingredient implements Predicate { + // CraftBukkit start + @Nullable + private List itemStacks; ++ public Predicate predicate; // Purpur + + public boolean isExact() { + return this.itemStacks != null; +@@ -100,6 +101,11 @@ public final class Ingredient implements Predicate { + + return false; + } ++ // Purpur start ++ if (predicate != null) { ++ return predicate.test(itemstack.asBukkitCopy()); ++ } ++ // Purpur end + // CraftBukkit end + List> list = this.items(); + +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java +index 3592091c6d1371224e82e1f95b003951ad2f8779..4fdc78a9c74b42a8894030221e0452493d68020e 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java +@@ -38,6 +38,7 @@ public interface CraftRecipe extends Recipe { + stack = Ingredient.of(((RecipeChoice.MaterialChoice) bukkit).getChoices().stream().map((mat) -> CraftItemType.bukkitToMinecraft(mat))); + } else if (bukkit instanceof RecipeChoice.ExactChoice) { + stack = Ingredient.ofStacks(((RecipeChoice.ExactChoice) bukkit).getChoices().stream().map((mat) -> CraftItemStack.asNMSCopy(mat)).toList()); ++ stack.predicate = ((RecipeChoice.ExactChoice) bukkit).getPredicate(); // Purpur + // Paper start - support "empty" choices - legacy method that spigot might incorrectly call + // Their impl of Ingredient.of() will error, ingredients need at least one entry. + // Callers running into this exception may have passed an incorrect empty() recipe choice to a non-empty slot or diff --git a/patches/server/0088-Flying-squids-Oh-my.patch b/patches/server/0090-Flying-squids-Oh-my.patch similarity index 93% rename from patches/server/0088-Flying-squids-Oh-my.patch rename to patches/server/0090-Flying-squids-Oh-my.patch index 181184811..4a571fdeb 100644 --- a/patches/server/0088-Flying-squids-Oh-my.patch +++ b/patches/server/0090-Flying-squids-Oh-my.patch @@ -21,7 +21,7 @@ index 27aee968718af1ae78e2076ddc890114b2c9bb94..0f5be53c6f6a66c61dc3f2bebeb18ca6 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index a0aa4ac61de870a374152018ebdeab47dc5b5a85..548f140c56277d46a3381b48d6f0b660c6e8feeb 100644 +index 7891d015d2f8dadcff8f457145574ea8ba48fe8d..4d2992a16865fa60dd38d0ff6dc341f9c5f6bd00 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -84,6 +84,15 @@ public class Squid extends AgeableWaterCreature { @@ -58,10 +58,10 @@ index a0aa4ac61de870a374152018ebdeab47dc5b5a85..548f140c56277d46a3381b48d6f0b660 this.squid.movementVector = new Vec3( (double)(Mth.cos(f) * 0.2F), (double)(-0.1F + this.squid.getRandom().nextFloat() * 0.2F), (double)(Mth.sin(f) * 0.2F) diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a0a5059e5d86ff3626b7e4a6d378f9b34d6ba8dc..166a7513ee9c309cc4dd16367fcb86b2ab3b243e 100644 +index 3c185f89b6f90720620f1fa93e13da60a944613e..32ceab27543b01a0340796255b6f48bc2834de9d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -931,11 +931,13 @@ public class PurpurWorldConfig { +@@ -933,11 +933,13 @@ public class PurpurWorldConfig { public boolean glowSquidControllable = true; public double glowSquidMaxHealth = 10.0D; public double glowSquidScale = 1.0D; @@ -75,7 +75,7 @@ index a0a5059e5d86ff3626b7e4a6d378f9b34d6ba8dc..166a7513ee9c309cc4dd16367fcb86b2 } public boolean goatRidable = false; -@@ -1622,6 +1624,7 @@ public class PurpurWorldConfig { +@@ -1624,6 +1626,7 @@ public class PurpurWorldConfig { public double squidScale = 1.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -83,7 +83,7 @@ index a0a5059e5d86ff3626b7e4a6d378f9b34d6ba8dc..166a7513ee9c309cc4dd16367fcb86b2 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1634,6 +1637,7 @@ public class PurpurWorldConfig { +@@ -1636,6 +1639,7 @@ public class PurpurWorldConfig { squidScale = Mth.clamp(getDouble("mobs.squid.attributes.scale", squidScale), 0.0625D, 16.0D); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0089-Infinity-bow-settings.patch b/patches/server/0091-Infinity-bow-settings.patch similarity index 94% rename from patches/server/0089-Infinity-bow-settings.patch rename to patches/server/0091-Infinity-bow-settings.patch index 92b2f7fc2..bca5a8f9b 100644 --- a/patches/server/0089-Infinity-bow-settings.patch +++ b/patches/server/0091-Infinity-bow-settings.patch @@ -30,10 +30,10 @@ index bb593209c95c9cf1f9c5d52d52fab4a33ddbabcf..1d4d0799a86b9940b5e3b614c5a188ad } else { user.startUsingItem(hand); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 166a7513ee9c309cc4dd16367fcb86b2ab3b243e..9031028533afbc896be2b1402b073c1bdd06dcfe 100644 +index 32ceab27543b01a0340796255b6f48bc2834de9d..b78f6b3e8b70a10f260c233be93947ac27e9edbd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -133,6 +133,11 @@ public class PurpurWorldConfig { +@@ -135,6 +135,11 @@ public class PurpurWorldConfig { entityLifeSpan = getInt("gameplay-mechanics.entity-lifespan", entityLifeSpan); } diff --git a/patches/server/0090-Configurable-daylight-cycle.patch b/patches/server/0092-Configurable-daylight-cycle.patch similarity index 91% rename from patches/server/0090-Configurable-daylight-cycle.patch rename to patches/server/0092-Configurable-daylight-cycle.patch index 671d3e7ae..eaa5d6d42 100644 --- a/patches/server/0090-Configurable-daylight-cycle.patch +++ b/patches/server/0092-Configurable-daylight-cycle.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable daylight cycle diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 7c5ab96dfa458afadbf8748dbdcbde7be8701a45..642439fe010b1b85b549e7971f98424bac6b334a 100644 +index 9b93c5e5671bc910e8880a29ced9c4a5f0d36d53..f937454c9bb398a612a6f25ab8579c8800dfa4d0 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1853,7 +1853,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop recipe, SingleRecipeInput input, NonNullList inventory, int maxCount) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 50cc76689e64b27172e1806e564c8fae43378234..8c2a26c150bf43f4e344c4bdf49b90926cd044b0 100644 +index c895c2e2bbdcc0cbdd69b2086e2d2d76a105f225..d1a7e79ca23ad7a9b589578c91b2dd3427545a05 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -363,6 +363,17 @@ public class PurpurWorldConfig { +@@ -365,6 +365,17 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0092-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0094-Arrows-should-not-reset-despawn-counter.patch similarity index 95% rename from patches/server/0092-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0094-Arrows-should-not-reset-despawn-counter.patch index 325581d94..beaac476f 100644 --- a/patches/server/0092-Arrows-should-not-reset-despawn-counter.patch +++ b/patches/server/0094-Arrows-should-not-reset-despawn-counter.patch @@ -20,7 +20,7 @@ index accc246f441c8bf5e1a755cfc0db8f97c0c01c6b..75d65b795a7802c0c5b5bd4a6ed42920 public boolean isInGround() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8c2a26c150bf43f4e344c4bdf49b90926cd044b0..1b005150d1ab5e561d2e30c895432c2c50fb061c 100644 +index d1a7e79ca23ad7a9b589578c91b2dd3427545a05..af54385705cb2a52cb50e939c4517339b1da5cac 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -102,6 +102,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 92% rename from patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 895124a48..c46ae9179 100644 --- a/patches/server/0093-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0095-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index df89b18f0d5d2dad5745ec65bcd9e4a7bf2f1f2b..e744a117d2f25ad24c87263ba2ab7f76 return; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1b005150d1ab5e561d2e30c895432c2c50fb061c..0e05ebe9ee52033d86373bd2ad1c6f12503b3128 100644 +index af54385705cb2a52cb50e939c4517339b1da5cac..cbab2382562e3fc4a275433f1ffca879c563e09a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -364,8 +364,10 @@ public class PurpurWorldConfig { +@@ -366,8 +366,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch similarity index 97% rename from patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch index 59cf19386..81566a006 100644 --- a/patches/server/0094-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0096-Add-adjustable-breeding-cooldown-to-config.patch @@ -104,10 +104,10 @@ index 6847be7f95dc37e6259d6903798e6db20702cea8..c2aff2f03451b97f1ec6bd4ee987bb72 this.world = new CraftWorld((ServerLevel) this, gen, biomeProvider, env); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c2d7b2787704614d2e3a3a8512a994e5434c093f..2640c1f0079f7f340e57d8f9e75f04185da064e7 100644 +index cbab2382562e3fc4a275433f1ffca879c563e09a..7895ad54e7c22cb25edb45d7ce38e87306673578 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -113,6 +113,7 @@ public class PurpurWorldConfig { +@@ -114,6 +114,7 @@ public class PurpurWorldConfig { public double tridentLoyaltyVoidReturnHeight = 0.0D; public boolean entitiesCanUsePortals = true; public int raidCooldownSeconds = 0; @@ -115,7 +115,7 @@ index c2d7b2787704614d2e3a3a8512a994e5434c093f..2640c1f0079f7f340e57d8f9e75f0418 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -120,6 +121,7 @@ public class PurpurWorldConfig { +@@ -122,6 +123,7 @@ public class PurpurWorldConfig { tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); diff --git a/patches/server/0095-Make-entity-breeding-times-configurable.patch b/patches/server/0097-Make-entity-breeding-times-configurable.patch similarity index 94% rename from patches/server/0095-Make-entity-breeding-times-configurable.patch rename to patches/server/0097-Make-entity-breeding-times-configurable.patch index 4b992085c..14c901ecc 100644 --- a/patches/server/0095-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0097-Make-entity-breeding-times-configurable.patch @@ -538,10 +538,10 @@ index 08c4a32b1195820eb574cdf4a499107565a551d6..0220fb517d99e8c9629d191eb554799a public boolean canBeLeashed() { return true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f50df33bce 100644 +index 7895ad54e7c22cb25edb45d7ce38e87306673578..295db9e5854f0a936832046f8ad436f722e8cacf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -461,23 +461,27 @@ public class PurpurWorldConfig { +@@ -463,23 +463,27 @@ public class PurpurWorldConfig { public boolean armadilloControllable = true; public double armadilloMaxHealth = 12.0D; public double armadilloScale = 1.0D; @@ -569,7 +569,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean batRidable = false; -@@ -520,6 +524,7 @@ public class PurpurWorldConfig { +@@ -522,6 +526,7 @@ public class PurpurWorldConfig { public double beeMaxY = 320D; public double beeMaxHealth = 10.0D; public double beeScale = 1.0D; @@ -577,7 +577,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -532,6 +537,7 @@ public class PurpurWorldConfig { +@@ -534,6 +539,7 @@ public class PurpurWorldConfig { } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); @@ -585,7 +585,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean blazeRidable = false; -@@ -574,6 +580,7 @@ public class PurpurWorldConfig { +@@ -576,6 +582,7 @@ public class PurpurWorldConfig { public double camelJumpStrengthMax = 0.42D; public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; @@ -593,7 +593,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -@@ -582,6 +589,7 @@ public class PurpurWorldConfig { +@@ -584,6 +591,7 @@ public class PurpurWorldConfig { camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); @@ -601,7 +601,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean catRidable = false; -@@ -592,6 +600,7 @@ public class PurpurWorldConfig { +@@ -594,6 +602,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -609,7 +609,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -606,6 +615,7 @@ public class PurpurWorldConfig { +@@ -608,6 +617,7 @@ public class PurpurWorldConfig { catSpawnDelay = getInt("mobs.cat.spawn-delay", catSpawnDelay); catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); @@ -617,7 +617,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean caveSpiderRidable = false; -@@ -632,6 +642,7 @@ public class PurpurWorldConfig { +@@ -634,6 +644,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public double chickenScale = 1.0D; public boolean chickenRetaliate = false; @@ -625,7 +625,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -644,6 +655,7 @@ public class PurpurWorldConfig { +@@ -646,6 +657,7 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -633,7 +633,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean codRidable = false; -@@ -668,6 +680,7 @@ public class PurpurWorldConfig { +@@ -670,6 +682,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public double cowScale = 1.0D; public int cowFeedMushrooms = 0; @@ -641,7 +641,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -680,6 +693,7 @@ public class PurpurWorldConfig { +@@ -682,6 +695,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -649,7 +649,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean creeperRidable = false; -@@ -735,6 +749,7 @@ public class PurpurWorldConfig { +@@ -737,6 +751,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -657,7 +657,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -750,6 +765,7 @@ public class PurpurWorldConfig { +@@ -752,6 +767,7 @@ public class PurpurWorldConfig { donkeyJumpStrengthMax = getDouble("mobs.donkey.attributes.jump_strength.max", donkeyJumpStrengthMax); donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); @@ -665,7 +665,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean drownedRidable = false; -@@ -880,6 +896,7 @@ public class PurpurWorldConfig { +@@ -882,6 +898,7 @@ public class PurpurWorldConfig { public double foxMaxHealth = 10.0D; public double foxScale = 1.0D; public boolean foxTypeChangesWithTulips = false; @@ -673,7 +673,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -892,17 +909,20 @@ public class PurpurWorldConfig { +@@ -894,17 +911,20 @@ public class PurpurWorldConfig { foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -694,7 +694,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean ghastRidable = false; -@@ -977,12 +997,14 @@ public class PurpurWorldConfig { +@@ -979,12 +999,14 @@ public class PurpurWorldConfig { public boolean goatControllable = true; public double goatMaxHealth = 10.0D; public double goatScale = 1.0D; @@ -709,7 +709,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean guardianRidable = false; -@@ -1006,6 +1028,7 @@ public class PurpurWorldConfig { +@@ -1008,6 +1030,7 @@ public class PurpurWorldConfig { public boolean hoglinControllable = true; public double hoglinMaxHealth = 40.0D; public double hoglinScale = 1.0D; @@ -717,7 +717,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1017,6 +1040,7 @@ public class PurpurWorldConfig { +@@ -1019,6 +1042,7 @@ public class PurpurWorldConfig { } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); @@ -725,7 +725,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean horseRidableInWater = false; -@@ -1026,6 +1050,7 @@ public class PurpurWorldConfig { +@@ -1028,6 +1052,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -733,7 +733,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1041,6 +1066,7 @@ public class PurpurWorldConfig { +@@ -1043,6 +1068,7 @@ public class PurpurWorldConfig { horseJumpStrengthMax = getDouble("mobs.horse.attributes.jump_strength.max", horseJumpStrengthMax); horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); @@ -741,7 +741,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean huskRidable = false; -@@ -1124,6 +1150,7 @@ public class PurpurWorldConfig { +@@ -1126,6 +1152,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -749,7 +749,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1141,6 +1168,7 @@ public class PurpurWorldConfig { +@@ -1143,6 +1170,7 @@ public class PurpurWorldConfig { llamaJumpStrengthMax = getDouble("mobs.llama.attributes.jump_strength.max", llamaJumpStrengthMax); llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); @@ -757,7 +757,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean magmaCubeRidable = false; -@@ -1170,6 +1198,7 @@ public class PurpurWorldConfig { +@@ -1172,6 +1200,7 @@ public class PurpurWorldConfig { public boolean mooshroomControllable = true; public double mooshroomMaxHealth = 10.0D; public double mooshroomScale = 1.0D; @@ -765,7 +765,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1181,6 +1210,7 @@ public class PurpurWorldConfig { +@@ -1183,6 +1212,7 @@ public class PurpurWorldConfig { } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); @@ -773,7 +773,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean muleRidableInWater = false; -@@ -1190,6 +1220,7 @@ public class PurpurWorldConfig { +@@ -1192,6 +1222,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -781,7 +781,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1205,6 +1236,7 @@ public class PurpurWorldConfig { +@@ -1207,6 +1238,7 @@ public class PurpurWorldConfig { muleJumpStrengthMax = getDouble("mobs.mule.attributes.jump_strength.max", muleJumpStrengthMax); muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); @@ -789,7 +789,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean ocelotRidable = false; -@@ -1212,6 +1244,7 @@ public class PurpurWorldConfig { +@@ -1214,6 +1246,7 @@ public class PurpurWorldConfig { public boolean ocelotControllable = true; public double ocelotMaxHealth = 10.0D; public double ocelotScale = 1.0D; @@ -797,7 +797,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1223,6 +1256,7 @@ public class PurpurWorldConfig { +@@ -1225,6 +1258,7 @@ public class PurpurWorldConfig { } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); @@ -805,7 +805,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean pandaRidable = false; -@@ -1230,6 +1264,7 @@ public class PurpurWorldConfig { +@@ -1232,6 +1266,7 @@ public class PurpurWorldConfig { public boolean pandaControllable = true; public double pandaMaxHealth = 20.0D; public double pandaScale = 1.0D; @@ -813,7 +813,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1241,6 +1276,7 @@ public class PurpurWorldConfig { +@@ -1243,6 +1278,7 @@ public class PurpurWorldConfig { } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); @@ -821,7 +821,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean parrotRidable = false; -@@ -1327,6 +1363,7 @@ public class PurpurWorldConfig { +@@ -1329,6 +1365,7 @@ public class PurpurWorldConfig { public double pigMaxHealth = 10.0D; public double pigScale = 1.0D; public boolean pigGiveSaddleBack = false; @@ -829,7 +829,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1339,6 +1376,7 @@ public class PurpurWorldConfig { +@@ -1341,6 +1378,7 @@ public class PurpurWorldConfig { pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -837,7 +837,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean piglinRidable = false; -@@ -1402,6 +1440,7 @@ public class PurpurWorldConfig { +@@ -1404,6 +1442,7 @@ public class PurpurWorldConfig { public double polarBearScale = 1.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -845,7 +845,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1416,6 +1455,7 @@ public class PurpurWorldConfig { +@@ -1418,6 +1457,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = BuiltInRegistries.ITEM.getValue(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -853,7 +853,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean pufferfishRidable = false; -@@ -1441,6 +1481,7 @@ public class PurpurWorldConfig { +@@ -1443,6 +1483,7 @@ public class PurpurWorldConfig { public double rabbitScale = 1.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -861,7 +861,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1454,6 +1495,7 @@ public class PurpurWorldConfig { +@@ -1456,6 +1497,7 @@ public class PurpurWorldConfig { rabbitScale = Mth.clamp(getDouble("mobs.rabbit.attributes.scale", rabbitScale), 0.0625D, 16.0D); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -869,7 +869,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean ravagerRidable = false; -@@ -1495,6 +1537,7 @@ public class PurpurWorldConfig { +@@ -1497,6 +1539,7 @@ public class PurpurWorldConfig { public boolean sheepControllable = true; public double sheepMaxHealth = 8.0D; public double sheepScale = 1.0D; @@ -877,7 +877,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1506,6 +1549,7 @@ public class PurpurWorldConfig { +@@ -1508,6 +1551,7 @@ public class PurpurWorldConfig { } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); @@ -885,7 +885,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean shulkerRidable = false; -@@ -1642,12 +1686,14 @@ public class PurpurWorldConfig { +@@ -1644,12 +1688,14 @@ public class PurpurWorldConfig { public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; public double snifferScale = 1.0D; @@ -900,7 +900,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean squidRidable = false; -@@ -1713,6 +1759,7 @@ public class PurpurWorldConfig { +@@ -1715,6 +1761,7 @@ public class PurpurWorldConfig { public boolean striderControllable = true; public double striderMaxHealth = 20.0D; public double striderScale = 1.0D; @@ -908,7 +908,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1724,6 +1771,7 @@ public class PurpurWorldConfig { +@@ -1726,6 +1773,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); @@ -916,7 +916,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean tadpoleRidable = false; -@@ -1744,6 +1792,7 @@ public class PurpurWorldConfig { +@@ -1746,6 +1794,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -924,7 +924,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1761,6 +1810,7 @@ public class PurpurWorldConfig { +@@ -1763,6 +1812,7 @@ public class PurpurWorldConfig { traderLlamaJumpStrengthMax = getDouble("mobs.trader_llama.attributes.jump_strength.max", traderLlamaJumpStrengthMax); traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); @@ -932,7 +932,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean tropicalFishRidable = false; -@@ -1784,6 +1834,7 @@ public class PurpurWorldConfig { +@@ -1786,6 +1836,7 @@ public class PurpurWorldConfig { public boolean turtleControllable = true; public double turtleMaxHealth = 30.0D; public double turtleScale = 1.0D; @@ -940,7 +940,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1795,6 +1846,7 @@ public class PurpurWorldConfig { +@@ -1797,6 +1848,7 @@ public class PurpurWorldConfig { } turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); @@ -948,7 +948,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean vexRidable = false; -@@ -1825,6 +1877,7 @@ public class PurpurWorldConfig { +@@ -1827,6 +1879,7 @@ public class PurpurWorldConfig { public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; @@ -956,7 +956,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1839,6 +1892,7 @@ public class PurpurWorldConfig { +@@ -1841,6 +1894,7 @@ public class PurpurWorldConfig { villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -964,7 +964,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 } public boolean vindicatorRidable = false; -@@ -1961,6 +2015,7 @@ public class PurpurWorldConfig { +@@ -1963,6 +2017,7 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -972,7 +972,7 @@ index 2640c1f0079f7f340e57d8f9e75f04185da064e7..638a93788422a2deb277e9d2aedfa8f5 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1972,6 +2027,7 @@ public class PurpurWorldConfig { +@@ -1974,6 +2029,7 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0096-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 96% rename from patches/server/0096-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch index d211fd15e..ab5ff4819 100644 --- a/patches/server/0096-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0098-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -18,7 +18,7 @@ index edb0cd90e28016c44b0aaf5c9ed5d7bdbced5295..12ff824ffa81ea45f76337ec2b6d80b0 this.drops.add(new DefaultDrop(itemstack, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior return this.brokenByAnything(world, damageSource); // Paper diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -index d6f835320014c07f9d174d05929ed8cc16a10c10..9992a4e791495baae07645444f6374f083c56552 100644 +index bbdaaa1cc0b4aed28bc39385508d221055b99d4d..bd5e034ce58ebe53d2121209d76ae60134ce72fe 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java @@ -240,7 +240,13 @@ public class ItemFrame extends HangingEntity { @@ -126,7 +126,7 @@ index cdc17ad948d8ac5de62f14b1a561433d33211f32..44a7cee7df2927a923455e8cedaab593 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c78b2c5098dc67a3aadf9f6d4ea5289b7d5124ea..a241c190532b0afd6d00deff3ec9c9100562524a 100644 +index 295db9e5854f0a936832046f8ad436f722e8cacf..509eac0592bcb5b67b8f1fcb68b53caa0e10a37b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -98,8 +98,10 @@ public class PurpurWorldConfig { @@ -140,7 +140,7 @@ index c78b2c5098dc67a3aadf9f6d4ea5289b7d5124ea..a241c190532b0afd6d00deff3ec9c910 } public boolean arrowMovementResetsDespawnCounter = true; -@@ -114,6 +116,7 @@ public class PurpurWorldConfig { +@@ -115,6 +117,7 @@ public class PurpurWorldConfig { public boolean entitiesCanUsePortals = true; public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; @@ -148,7 +148,7 @@ index c78b2c5098dc67a3aadf9f6d4ea5289b7d5124ea..a241c190532b0afd6d00deff3ec9c910 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -122,6 +125,8 @@ public class PurpurWorldConfig { +@@ -124,6 +127,8 @@ public class PurpurWorldConfig { entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); diff --git a/patches/server/0097-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 96% rename from patches/server/0097-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 306e7682c..f6bc20b4e 100644 --- a/patches/server/0097-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0099-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 000d1863bfba98b5132dfc6743362d687b2f54f3..20fece9908382f40b4082f7b1fb7d419 // Paper end - Add PlayerNameEntityEvent mob.setPersistenceRequired(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a241c190532b0afd6d00deff3ec9c9100562524a..258f973c9debcaf09f95f73b8ca1276e107d29f8 100644 +index 509eac0592bcb5b67b8f1fcb68b53caa0e10a37b..07e997fd9adb318820e6acafc781a8bfa9d2d0d8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,9 +99,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 88% rename from patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 01b7ed638..bac1f521b 100644 --- a/patches/server/0098-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0100-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -8,7 +8,7 @@ This should help to reduce the amount of dirt, gravel, grass, and etc. that Endermen like to randomly place all over the world. 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 1a33a41f79f9d661cb958a6ecee2ab7e8a819877..3a37ff8bd8ca792393fa10fed4d38eb72559d4db 100644 +index 8933b1f16617f0373cc99f93254533cc7d1e923f..02336ee7a002a620cd76570c84d1d53194a23668 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -468,7 +468,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -21,10 +21,10 @@ index 1a33a41f79f9d661cb958a6ecee2ab7e8a819877..3a37ff8bd8ca792393fa10fed4d38eb7 private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 258f973c9debcaf09f95f73b8ca1276e107d29f8..bc28a4851dd68874042c05bed3486eace3db5963 100644 +index 07e997fd9adb318820e6acafc781a8bfa9d2d0d8..5e3240a67fac56631b5611176d9bf8fd426ad97b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -847,6 +847,7 @@ public class PurpurWorldConfig { +@@ -849,6 +849,7 @@ public class PurpurWorldConfig { public double endermanMaxHealth = 40.0D; public double endermanScale = 1.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 258f973c9debcaf09f95f73b8ca1276e107d29f8..bc28a4851dd68874042c05bed3486eac private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -859,6 +860,7 @@ public class PurpurWorldConfig { +@@ -861,6 +862,7 @@ public class PurpurWorldConfig { endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0099-Add-configurable-snowball-damage.patch b/patches/server/0101-Add-configurable-snowball-damage.patch similarity index 92% rename from patches/server/0099-Add-configurable-snowball-damage.patch rename to patches/server/0101-Add-configurable-snowball-damage.patch index f0ee56d8a..5e655b1f7 100644 --- a/patches/server/0099-Add-configurable-snowball-damage.patch +++ b/patches/server/0101-Add-configurable-snowball-damage.patch @@ -18,10 +18,10 @@ index 70961e151666a0ecf5b791853f4581eaebbdcc8b..8c853b6fbbc966ee6ba9ad3770d4e2e2 entity.hurt(this.damageSources().thrown(this, this.getOwner()), (float) i); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bc28a4851dd68874042c05bed3486eace3db5963..3bbc81e6a97728b032f0097b2a88a7ff69bd18ce 100644 +index 5e3240a67fac56631b5611176d9bf8fd426ad97b..c005d1932f41b2b4959b7753e14f0463d2eccec5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -337,6 +337,11 @@ public class PurpurWorldConfig { +@@ -339,6 +339,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch similarity index 86% rename from patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch index 3d29927e9..f8220fca1 100644 --- a/patches/server/0100-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0102-Changeable-Mob-Left-Handed-Chance.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Changeable Mob Left Handed Chance diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 17e6e4a858d3a2332c14d2860d2f5d1e87e1c629..7b0cb3f4d8d810b32cda964c20437fea5ea00e24 100644 +index 8ce316292850353231e529f75630d3fde290a161..43a37611c046c70833349c2ff5313f312bebf25b 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1422,7 +1422,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -18,10 +18,10 @@ index 17e6e4a858d3a2332c14d2860d2f5d1e87e1c629..7b0cb3f4d8d810b32cda964c20437fea } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3bbc81e6a97728b032f0097b2a88a7ff69bd18ce..a5f51c2dff32452ad5dda0623dda90da358fe322 100644 +index c005d1932f41b2b4959b7753e14f0463d2eccec5..23ee0ca0ce934e3cd30c0ad86481988223698372 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -150,8 +150,10 @@ public class PurpurWorldConfig { +@@ -152,8 +152,10 @@ public class PurpurWorldConfig { } public int entityLifeSpan = 0; diff --git a/patches/server/0101-Add-boat-fall-damage-config.patch b/patches/server/0103-Add-boat-fall-damage-config.patch similarity index 86% rename from patches/server/0101-Add-boat-fall-damage-config.patch rename to patches/server/0103-Add-boat-fall-damage-config.patch index 6c6962790..ef761a46d 100644 --- a/patches/server/0101-Add-boat-fall-damage-config.patch +++ b/patches/server/0103-Add-boat-fall-damage-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add boat fall damage config diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a0f3371520702a3a1643abd45bf6754336385397..0823fd91cbee711847c4a3d06f46c7d3b694833c 100644 +index 3d05da7985402f1cf361182084b62145c9bf9856..3b9ebf98eab678938e2b619eb42025c0322bf5dd 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1441,7 +1441,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1442,7 +1442,16 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple if (this.isInvulnerableTo(world, source)) { return false; } else { @@ -27,7 +27,7 @@ index a0f3371520702a3a1643abd45bf6754336385397..0823fd91cbee711847c4a3d06f46c7d3 if (!flag && this.spawnInvulnerableTime > 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ac20878dfa363c3a28b784e3cba8cba8874a105..13107decd92901bae038ca5bfa69a83adabd3e3d 100644 +index 23ee0ca0ce934e3cd30c0ad86481988223698372..db63c982a19e8e95f4601dadc17cd5f52f29253a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -113,6 +113,7 @@ public class PurpurWorldConfig { @@ -36,13 +36,13 @@ index 0ac20878dfa363c3a28b784e3cba8cba8874a105..13107decd92901bae038ca5bfa69a83a public boolean boatEjectPlayersOnLand = false; + public boolean boatsDoFallDamage = false; public boolean disableDropsOnCrammingDeath = false; + public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; - public boolean entitiesCanUsePortals = true; -@@ -122,6 +123,7 @@ public class PurpurWorldConfig { +@@ -123,6 +124,7 @@ public class PurpurWorldConfig { private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); + boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); diff --git a/patches/server/0102-Snow-Golem-rate-of-fire-config.patch b/patches/server/0104-Snow-Golem-rate-of-fire-config.patch similarity index 94% rename from patches/server/0102-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0104-Snow-Golem-rate-of-fire-config.patch index 8e3542522..592d7f3ab 100644 --- a/patches/server/0102-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0104-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index bfdb0c52db44e7cc4f37fd42a22c8dae2cc28fac..3f97118c8ce4f4e9a5f2a2fc3acdc68a this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d5a546191014dc1cc9ed8b314c67983b0401d37b..e7a09087dc2382d7739f8955be1bfc966fbc4c70 100644 +index db63c982a19e8e95f4601dadc17cd5f52f29253a..60c89f3e4cbf5b02479dacd21ebe61ef41bc3478 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1684,6 +1684,10 @@ public class PurpurWorldConfig { +@@ -1686,6 +1686,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public double snowGolemScale = 1.0D; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index d5a546191014dc1cc9ed8b314c67983b0401d37b..e7a09087dc2382d7739f8955be1bfc96 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1697,6 +1701,10 @@ public class PurpurWorldConfig { +@@ -1699,6 +1703,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemScale = Mth.clamp(getDouble("mobs.snow_golem.attributes.scale", snowGolemScale), 0.0625D, 16.0D); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0103-EMC-Configurable-disable-give-dropping.patch b/patches/server/0105-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0103-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0105-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 98% rename from patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 6ee4dcf1b..13cc20acb 100644 --- a/patches/server/0104-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0106-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -174,10 +174,10 @@ index 8734ab1bd8299bbf43906d81a349c2a13e0981a7..3ca83269311cbc18c9ef3ce62cff6a2d "farmer", PoiTypes.FARMER, diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e7a09087dc2382d7739f8955be1bfc966fbc4c70..24855a55bc90c5b57cec3bfcf2efc36523d817f2 100644 +index 60c89f3e4cbf5b02479dacd21ebe61ef41bc3478..5e1da3824ef5e8dc9333f2248fde1548f496abc1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1904,6 +1904,8 @@ public class PurpurWorldConfig { +@@ -1906,6 +1906,8 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -186,7 +186,7 @@ index e7a09087dc2382d7739f8955be1bfc966fbc4c70..24855a55bc90c5b57cec3bfcf2efc365 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1919,6 +1921,8 @@ public class PurpurWorldConfig { +@@ -1921,6 +1923,8 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 94% rename from patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index befa54882..d07185e32 100644 --- a/patches/server/0105-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0107-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 650f9e1ca3a5ddec5123133c9604f33140e948a8..cb47b15d197b1167dcbac1b989903bbf } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 24855a55bc90c5b57cec3bfcf2efc36523d817f2..71b5f351c539584ccb1d215b7d4dce3e4541ac41 100644 +index 5e1da3824ef5e8dc9333f2248fde1548f496abc1..1433d56c0830b0b91bac87df0ac400977ee3a24f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2170,6 +2170,7 @@ public class PurpurWorldConfig { +@@ -2172,6 +2172,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 24855a55bc90c5b57cec3bfcf2efc36523d817f2..71b5f351c539584ccb1d215b7d4dce3e private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2185,5 +2186,6 @@ public class PurpurWorldConfig { +@@ -2187,5 +2188,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyOnlyBaby = getBoolean("mobs.zombified_piglin.jockey.only-babies", zombifiedPiglinJockeyOnlyBaby); zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); diff --git a/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 98% rename from patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch index 531b01e08..5c5c4710f 100644 --- a/patches/server/0106-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0108-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -182,10 +182,10 @@ index ecd33b4add46acbe4e4f8879c0601220423d66ca..1506a8c0fa490726eb4a4ae14f3aa194 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 14fe426bac1cc6711b264a03e472f3b48b8f9b07..8f2f978dbd10b742c6bfad36fb0e0aaf37e4deeb 100644 +index 1433d56c0830b0b91bac87df0ac400977ee3a24f..f6a47daaf8f03d9f0cfc8a49e242e8c1dffe62f8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2045,6 +2045,8 @@ public class PurpurWorldConfig { +@@ -2047,6 +2047,8 @@ public class PurpurWorldConfig { public boolean wolfControllable = true; public double wolfMaxHealth = 8.0D; public double wolfScale = 1.0D; @@ -194,7 +194,7 @@ index 14fe426bac1cc6711b264a03e472f3b48b8f9b07..8f2f978dbd10b742c6bfad36fb0e0aaf public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -2057,6 +2059,8 @@ public class PurpurWorldConfig { +@@ -2059,6 +2061,8 @@ public class PurpurWorldConfig { } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); wolfScale = Mth.clamp(getDouble("mobs.wolf.attributes.scale", wolfScale), 0.0625D, 16.0D); diff --git a/patches/server/0107-Configurable-default-collar-color.patch b/patches/server/0109-Configurable-default-collar-color.patch similarity index 91% rename from patches/server/0107-Configurable-default-collar-color.patch rename to patches/server/0109-Configurable-default-collar-color.patch index d2bec2528..5f052e7b4 100644 --- a/patches/server/0107-Configurable-default-collar-color.patch +++ b/patches/server/0109-Configurable-default-collar-color.patch @@ -26,7 +26,7 @@ index f79146925e99da08492e7b445006be003a56f340..8a89ea47d79065e85bb831578c6a1ab7 @Override public Cat getBreedOffspring(ServerLevel world, AgeableMob entity) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 54effd4230d1b231ef94a3e3948a535e6ba15537..e8f825288aaa6f513f1ac25689a9669e3cfc015f 100644 +index 37687335041ae47725c6931e2c7d54c192e2de36..7343c5a81ddf7db1e9e434796489fd8a98b9a70c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -212,6 +212,12 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9775eda4e445a29852cbf12db43282cf8ac9a118..f218c12634f40a171a5022cb3d2956236d9a4d20 100644 +index cd61cf137bfe39633414c59beaf7e4fb303fa2f1..afd52da926501e8a99b7d889e8fdbb8c5d20f5cc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -283,6 +283,19 @@ public class PurpurWorldConfig { +@@ -285,6 +285,19 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch similarity index 95% rename from patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch rename to patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch index d93d8c92a..8577c3f93 100644 --- a/patches/server/0114-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0116-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cccd99d642ea14eb175946656d4dead436268d01..beb573d8fdc5f9e07146a7bd4d7c51d596a791a1 100644 +index 7de429f377fa4880c3b0cfb9b72df06a9b89722e..d6c1910cdc9bbdda217f1f13334312fafdb3c8fa 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1884,7 +1884,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -285,10 +285,10 @@ index 2f00676f62478897ae4931ea06e047567c407535..6bd6113cabfae068aa421991f0a90164 // CraftBukkit start - fire ExplosionPrimeEvent ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 49c0f09f91f9ea2428fd3b13b00c99073074beba..b0e258d6025dd9536f1656e087bf85fee60e642d 100644 +index 6c2d4d6f3a36ab452dfd3c33f66e54f152906639..275347d563fbcffa896b6c1c9f7f51c8797c2379 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -479,7 +479,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -480,7 +480,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { public boolean mayInteract(ServerLevel world, BlockPos pos) { Entity entity = this.getOwner(); @@ -376,10 +376,10 @@ index bae4931fff0db56aa125248e17b29f7c2557221f..4eb0f7a9cf6b12c02d0bd42980ae302d } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a8c2f8034 100644 +index afd52da926501e8a99b7d889e8fdbb8c5d20f5cc..9b0bdd1d70f7c50e81d273612919e7ccf7721df8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -120,6 +120,9 @@ public class PurpurWorldConfig { +@@ -121,6 +121,9 @@ public class PurpurWorldConfig { public int raidCooldownSeconds = 0; public int animalBreedingCooldownSeconds = 0; public boolean persistentDroppableEntityDisplayNames = true; @@ -389,7 +389,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -130,6 +133,9 @@ public class PurpurWorldConfig { +@@ -132,6 +135,9 @@ public class PurpurWorldConfig { raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); @@ -399,7 +399,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } -@@ -399,9 +405,11 @@ public class PurpurWorldConfig { +@@ -401,9 +407,11 @@ public class PurpurWorldConfig { dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); } @@ -411,7 +411,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); } -@@ -426,6 +434,11 @@ public class PurpurWorldConfig { +@@ -428,6 +436,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -423,7 +423,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -455,10 +468,12 @@ public class PurpurWorldConfig { +@@ -457,10 +470,12 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = false; public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; @@ -436,7 +436,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public int waterInfiniteRequiredSources = 2; -@@ -743,6 +758,7 @@ public class PurpurWorldConfig { +@@ -745,6 +760,7 @@ public class PurpurWorldConfig { public double creeperScale = 1.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -444,7 +444,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -756,6 +772,7 @@ public class PurpurWorldConfig { +@@ -758,6 +774,7 @@ public class PurpurWorldConfig { creeperScale = Mth.clamp(getDouble("mobs.creeper.attributes.scale", creeperScale), 0.0625D, 16.0D); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); @@ -452,7 +452,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean dolphinRidable = false; -@@ -856,6 +873,7 @@ public class PurpurWorldConfig { +@@ -858,6 +875,7 @@ public class PurpurWorldConfig { public double enderDragonMaxY = 320D; public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; @@ -460,7 +460,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -872,6 +890,7 @@ public class PurpurWorldConfig { +@@ -874,6 +892,7 @@ public class PurpurWorldConfig { } enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); @@ -468,7 +468,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean endermanRidable = false; -@@ -881,6 +900,7 @@ public class PurpurWorldConfig { +@@ -883,6 +902,7 @@ public class PurpurWorldConfig { public double endermanScale = 1.0D; public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; @@ -476,7 +476,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -894,6 +914,7 @@ public class PurpurWorldConfig { +@@ -896,6 +916,7 @@ public class PurpurWorldConfig { endermanScale = Mth.clamp(getDouble("mobs.enderman.attributes.scale", endermanScale), 0.0625D, 16.0D); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); @@ -484,7 +484,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean endermiteRidable = false; -@@ -919,6 +940,7 @@ public class PurpurWorldConfig { +@@ -921,6 +942,7 @@ public class PurpurWorldConfig { public boolean evokerControllable = true; public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; @@ -492,7 +492,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -930,6 +952,7 @@ public class PurpurWorldConfig { +@@ -932,6 +954,7 @@ public class PurpurWorldConfig { } evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); @@ -500,7 +500,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean foxRidable = false; -@@ -939,6 +962,7 @@ public class PurpurWorldConfig { +@@ -941,6 +964,7 @@ public class PurpurWorldConfig { public double foxScale = 1.0D; public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; @@ -508,7 +508,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -952,6 +976,7 @@ public class PurpurWorldConfig { +@@ -954,6 +978,7 @@ public class PurpurWorldConfig { foxScale = Mth.clamp(getDouble("mobs.fox.attributes.scale", foxScale), 0.0625D, 16.0D); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); @@ -516,7 +516,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean frogRidable = false; -@@ -1428,6 +1453,7 @@ public class PurpurWorldConfig { +@@ -1430,6 +1455,7 @@ public class PurpurWorldConfig { public boolean piglinControllable = true; public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; @@ -524,7 +524,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1439,6 +1465,7 @@ public class PurpurWorldConfig { +@@ -1441,6 +1467,7 @@ public class PurpurWorldConfig { } piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); @@ -532,7 +532,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean piglinBruteRidable = false; -@@ -1464,6 +1491,7 @@ public class PurpurWorldConfig { +@@ -1466,6 +1493,7 @@ public class PurpurWorldConfig { public boolean pillagerControllable = true; public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; @@ -540,7 +540,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1475,6 +1503,7 @@ public class PurpurWorldConfig { +@@ -1477,6 +1505,7 @@ public class PurpurWorldConfig { } pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); @@ -548,7 +548,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean polarBearRidable = false; -@@ -1526,6 +1555,7 @@ public class PurpurWorldConfig { +@@ -1528,6 +1557,7 @@ public class PurpurWorldConfig { public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; @@ -556,7 +556,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1540,6 +1570,7 @@ public class PurpurWorldConfig { +@@ -1542,6 +1572,7 @@ public class PurpurWorldConfig { rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); @@ -564,7 +564,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean ravagerRidable = false; -@@ -1547,6 +1578,7 @@ public class PurpurWorldConfig { +@@ -1549,6 +1580,7 @@ public class PurpurWorldConfig { public boolean ravagerControllable = true; public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; @@ -572,7 +572,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1558,6 +1590,7 @@ public class PurpurWorldConfig { +@@ -1560,6 +1592,7 @@ public class PurpurWorldConfig { } ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); @@ -580,7 +580,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean salmonRidable = false; -@@ -1582,6 +1615,7 @@ public class PurpurWorldConfig { +@@ -1584,6 +1617,7 @@ public class PurpurWorldConfig { public double sheepMaxHealth = 8.0D; public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; @@ -588,7 +588,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1594,6 +1628,7 @@ public class PurpurWorldConfig { +@@ -1596,6 +1630,7 @@ public class PurpurWorldConfig { sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); @@ -596,7 +596,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean shulkerRidable = false; -@@ -1621,6 +1656,7 @@ public class PurpurWorldConfig { +@@ -1623,6 +1658,7 @@ public class PurpurWorldConfig { public double silverfishScale = 1.0D; public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; @@ -604,7 +604,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1634,6 +1670,7 @@ public class PurpurWorldConfig { +@@ -1636,6 +1672,7 @@ public class PurpurWorldConfig { silverfishScale = Mth.clamp(getDouble("mobs.silverfish.attributes.scale", silverfishScale), 0.0625D, 16.0D); silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed); silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); @@ -612,7 +612,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean skeletonRidable = false; -@@ -1714,6 +1751,7 @@ public class PurpurWorldConfig { +@@ -1716,6 +1753,7 @@ public class PurpurWorldConfig { public int snowGolemSnowBallMax = 20; public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; @@ -620,7 +620,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1731,6 +1769,7 @@ public class PurpurWorldConfig { +@@ -1733,6 +1771,7 @@ public class PurpurWorldConfig { snowGolemSnowBallMax = getInt("mobs.snow_golem.max-shoot-interval-ticks", snowGolemSnowBallMax); snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); @@ -628,7 +628,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean snifferRidable = false; -@@ -1934,6 +1973,7 @@ public class PurpurWorldConfig { +@@ -1936,6 +1975,7 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; @@ -636,7 +636,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1951,6 +1991,7 @@ public class PurpurWorldConfig { +@@ -1953,6 +1993,7 @@ public class PurpurWorldConfig { villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); @@ -644,7 +644,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean vindicatorRidable = false; -@@ -2030,6 +2071,7 @@ public class PurpurWorldConfig { +@@ -2032,6 +2073,7 @@ public class PurpurWorldConfig { public double witherScale = 1.0D; public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; @@ -652,7 +652,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2048,6 +2090,7 @@ public class PurpurWorldConfig { +@@ -2050,6 +2092,7 @@ public class PurpurWorldConfig { witherScale = Mth.clamp(getDouble("mobs.wither.attributes.scale", witherScale), 0.0625D, 16.0D); witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); @@ -660,7 +660,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a } public boolean witherSkeletonRidable = false; -@@ -2126,6 +2169,7 @@ public class PurpurWorldConfig { +@@ -2128,6 +2171,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -668,7 +668,7 @@ index f218c12634f40a171a5022cb3d2956236d9a4d20..f0d8e44aee5cd3b0e4012e41e622d89a private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2142,6 +2186,7 @@ public class PurpurWorldConfig { +@@ -2144,6 +2188,7 @@ public class PurpurWorldConfig { zombieJockeyChance = getDouble("mobs.zombie.jockey.chance", zombieJockeyChance); zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); diff --git a/patches/server/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch b/patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch similarity index 93% rename from patches/server/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch rename to patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch index 775aee19f..3b172052e 100644 --- a/patches/server/0115-Config-to-allow-Note-Block-sounds-when-blocked.patch +++ b/patches/server/0117-Config-to-allow-Note-Block-sounds-when-blocked.patch @@ -22,10 +22,10 @@ index 6582db84c5307257f16c321453491cf24e40c9c7..f9015d4e478efeec8a796b7a897638f7 // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); // if (event.isCancelled()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b1d63425dc952c0ee0b3bd371a0910787ce628b7..eed88f28a22665b2998297af2d74535610cf9d58 100644 +index 9b0bdd1d70f7c50e81d273612919e7ccf7721df8..6843771f4946ca459ade3617d7320a05cc57e24d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -123,6 +123,7 @@ public class PurpurWorldConfig { +@@ -124,6 +124,7 @@ public class PurpurWorldConfig { public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean fireballsBypassMobGriefing = false; public boolean projectilesBypassMobGriefing = false; @@ -33,7 +33,7 @@ index b1d63425dc952c0ee0b3bd371a0910787ce628b7..eed88f28a22665b2998297af2d745356 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -136,7 +137,7 @@ public class PurpurWorldConfig { +@@ -138,7 +139,7 @@ public class PurpurWorldConfig { entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); diff --git a/patches/server/0116-Add-EntityTeleportHinderedEvent.patch b/patches/server/0118-Add-EntityTeleportHinderedEvent.patch similarity index 96% rename from patches/server/0116-Add-EntityTeleportHinderedEvent.patch rename to patches/server/0118-Add-EntityTeleportHinderedEvent.patch index a703662db..d6c8fb707 100644 --- a/patches/server/0116-Add-EntityTeleportHinderedEvent.patch +++ b/patches/server/0118-Add-EntityTeleportHinderedEvent.patch @@ -83,10 +83,10 @@ index cf1797c6ba877c510bba5c8016e57003373d8220..f68c1d6c7003202c4d107663b9c60c2f } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 9d7def9b9a5c54efc661bffbc4926707101f65cb..7f10bfe1d28bbc5b32b7554129552088711ebce5 100644 +index fab0b33b9a3f0520f9b754a1c409557c9fb2acbd..d936cc20fc2b06d72531747176d7578ddf83dd14 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1452,6 +1452,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1450,6 +1450,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -95,10 +95,10 @@ index 9d7def9b9a5c54efc661bffbc4926707101f65cb..7f10bfe1d28bbc5b32b7554129552088 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3bba2c5e91d1b4679759c9fc32ee03e28bfbfe49..a820e3a66da8147f2526e98597b523a165cd4f93 100644 +index 6843771f4946ca459ade3617d7320a05cc57e24d..4fcb78a5dee5c7a12ba443c4d52b39a28ea9c061 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -124,6 +124,9 @@ public class PurpurWorldConfig { +@@ -125,6 +125,9 @@ public class PurpurWorldConfig { public boolean fireballsBypassMobGriefing = false; public boolean projectilesBypassMobGriefing = false; public boolean noteBlockIgnoreAbove = false; @@ -108,7 +108,7 @@ index 3bba2c5e91d1b4679759c9fc32ee03e28bfbfe49..a820e3a66da8147f2526e98597b523a1 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -138,6 +141,10 @@ public class PurpurWorldConfig { +@@ -140,6 +143,10 @@ public class PurpurWorldConfig { fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); noteBlockIgnoreAbove = getBoolean("gameplay-mechanics.note-block-ignore-above", noteBlockIgnoreAbove); diff --git a/patches/server/0117-Farmland-trampling-changes.patch b/patches/server/0119-Farmland-trampling-changes.patch similarity index 95% rename from patches/server/0117-Farmland-trampling-changes.patch rename to patches/server/0119-Farmland-trampling-changes.patch index d8587105e..2847186fe 100644 --- a/patches/server/0117-Farmland-trampling-changes.patch +++ b/patches/server/0119-Farmland-trampling-changes.patch @@ -37,10 +37,10 @@ index e1abec46177887a92726de80f66226fe7fbbb4a2..bc149eb17695ac727aa8db08db620949 if (!CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.DIRT.defaultBlockState())) { return; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 929bb86a823f3283d9abae278186b9f24a8543a8..ec44bddaedef83fa9feedee6253df78213f71280 100644 +index 4fcb78a5dee5c7a12ba443c4d52b39a28ea9c061..2431777ccdf0e2aa0f8488e13da3f64baa079c11 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -416,10 +416,16 @@ public class PurpurWorldConfig { +@@ -418,10 +418,16 @@ public class PurpurWorldConfig { public boolean farmlandBypassMobGriefing = false; public boolean farmlandGetsMoistFromBelow = false; public boolean farmlandAlpha = false; diff --git a/patches/server/0118-Movement-options-for-armor-stands.patch b/patches/server/0120-Movement-options-for-armor-stands.patch similarity index 96% rename from patches/server/0118-Movement-options-for-armor-stands.patch rename to patches/server/0120-Movement-options-for-armor-stands.patch index 7fcafbe2c..2939568e9 100644 --- a/patches/server/0118-Movement-options-for-armor-stands.patch +++ b/patches/server/0120-Movement-options-for-armor-stands.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f326f3a0a5b218addbf9d41837f5653248a39a1d..89d4d749336b2947b0ac12d7df140c0240f67636 100644 +index ebffeb41944df4e097fad259f48b2d18941e55b3..106dadefc463ba1f59e89e9c5d1386b0eda40d48 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2049,7 +2049,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -66,7 +66,7 @@ index 12ff824ffa81ea45f76337ec2b6d80b01047b698..c954cb3255145e18e8ab1e5a1b0267b8 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec44bddaedef83fa9feedee6253df78213f71280..63b38c9c0862a5bd00468024015e62d0485b2619 100644 +index 2431777ccdf0e2aa0f8488e13da3f64baa079c11..c51747bf291561359b028500652e556f677a0aa0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -100,10 +100,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0119-Fix-stuck-in-portals.patch b/patches/server/0121-Fix-stuck-in-portals.patch similarity index 89% rename from patches/server/0119-Fix-stuck-in-portals.patch rename to patches/server/0121-Fix-stuck-in-portals.patch index 4a91d7ded..bc81272d1 100644 --- a/patches/server/0119-Fix-stuck-in-portals.patch +++ b/patches/server/0121-Fix-stuck-in-portals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a3d163500999dae1552da9cccea06d58f735c9cf..ddce8eb3ac5962c0e93c879ede1bbb34f7b72166 100644 +index 976dfffac3895015d0eb00bab0ea93f9e5cc27a2..430ea84cbca69b6d119c2739bed9de37a970c2e5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1686,6 +1686,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1687,6 +1687,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple worldserver1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); this.unsetRemoved(); // CraftBukkit end @@ -17,7 +17,7 @@ index a3d163500999dae1552da9cccea06d58f735c9cf..ddce8eb3ac5962c0e93c879ede1bbb34 this.connection.internalTeleport(PositionMoveRotation.of(teleportTarget), teleportTarget.relatives()); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ba080a23e88d6eafc2af97acef415c736eb1cc28..f90e6a515a0d614f0b784c4ee37819bc14bf3af3 100644 +index 106dadefc463ba1f59e89e9c5d1386b0eda40d48..93468974af35aa2f4f72d80b72aabe2dc8519f9e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -3470,14 +3470,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -39,10 +39,10 @@ index ba080a23e88d6eafc2af97acef415c736eb1cc28..f90e6a515a0d614f0b784c4ee37819bc } else { this.portalProcess = new PortalProcessor(portal, pos.immutable()); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b1c53b3f490ee39184ce868bdb38eaa69e35e7f2..f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3 100644 +index c51747bf291561359b028500652e556f677a0aa0..0347b0d83a9824a355bdcaaaf36f98fd6828effd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -325,6 +325,7 @@ public class PurpurWorldConfig { +@@ -327,6 +327,7 @@ public class PurpurWorldConfig { public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; @@ -50,7 +50,7 @@ index b1c53b3f490ee39184ce868bdb38eaa69e35e7f2..f9fde0c0cdc14cf5427df3c8ecfa8d40 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -340,6 +341,7 @@ public class PurpurWorldConfig { +@@ -342,6 +343,7 @@ public class PurpurWorldConfig { playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); diff --git a/patches/server/0120-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch similarity index 94% rename from patches/server/0120-Toggle-for-water-sensitive-mob-damage.patch rename to patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch index eb9f8c12a..5f39fa49f 100644 --- a/patches/server/0120-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0122-Toggle-for-water-sensitive-mob-damage.patch @@ -1199,10 +1199,10 @@ index 7b8b5a7b1fea50c7b238afc4b3d79746da08b641..5eac0ba67b3ab258dd594ad1e1aaa7a2 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad20747fbc 100644 +index 0347b0d83a9824a355bdcaaaf36f98fd6828effd..dbb6f3eb9b36fe47d04cdee51b829f11587a4dbf 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -547,12 +547,14 @@ public class PurpurWorldConfig { +@@ -549,12 +549,14 @@ public class PurpurWorldConfig { public double axolotlMaxHealth = 14.0D; public double axolotlScale = 1.0D; public int axolotlBreedingTicks = 6000; @@ -1217,7 +1217,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean batRidable = false; -@@ -568,6 +570,7 @@ public class PurpurWorldConfig { +@@ -570,6 +572,7 @@ public class PurpurWorldConfig { public double batArmor = 0.0D; public double batArmorToughness = 0.0D; public double batAttackKnockback = 0.0D; @@ -1225,7 +1225,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void batSettings() { batRidable = getBoolean("mobs.bat.ridable", batRidable); batRidableInWater = getBoolean("mobs.bat.ridable-in-water", batRidableInWater); -@@ -587,6 +590,7 @@ public class PurpurWorldConfig { +@@ -589,6 +592,7 @@ public class PurpurWorldConfig { batArmor = getDouble("mobs.bat.attributes.armor", batArmor); batArmorToughness = getDouble("mobs.bat.attributes.armor_toughness", batArmorToughness); batAttackKnockback = getDouble("mobs.bat.attributes.attack_knockback", batAttackKnockback); @@ -1233,7 +1233,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean beeRidable = false; -@@ -596,6 +600,7 @@ public class PurpurWorldConfig { +@@ -598,6 +602,7 @@ public class PurpurWorldConfig { public double beeMaxHealth = 10.0D; public double beeScale = 1.0D; public int beeBreedingTicks = 6000; @@ -1241,7 +1241,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -609,6 +614,7 @@ public class PurpurWorldConfig { +@@ -611,6 +616,7 @@ public class PurpurWorldConfig { beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); @@ -1249,7 +1249,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean blazeRidable = false; -@@ -617,6 +623,7 @@ public class PurpurWorldConfig { +@@ -619,6 +625,7 @@ public class PurpurWorldConfig { public double blazeMaxY = 320D; public double blazeMaxHealth = 20.0D; public double blazeScale = 1.0D; @@ -1257,7 +1257,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void blazeSettings() { blazeRidable = getBoolean("mobs.blaze.ridable", blazeRidable); blazeRidableInWater = getBoolean("mobs.blaze.ridable-in-water", blazeRidableInWater); -@@ -629,6 +636,7 @@ public class PurpurWorldConfig { +@@ -631,6 +638,7 @@ public class PurpurWorldConfig { } blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); blazeScale = Mth.clamp(getDouble("mobs.blaze.attributes.scale", blazeScale), 0.0625D, 16.0D); @@ -1265,7 +1265,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean boggedRidable = false; -@@ -673,6 +681,7 @@ public class PurpurWorldConfig { +@@ -675,6 +683,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1273,7 +1273,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -693,6 +702,7 @@ public class PurpurWorldConfig { +@@ -695,6 +704,7 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1281,7 +1281,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean caveSpiderRidable = false; -@@ -700,6 +710,7 @@ public class PurpurWorldConfig { +@@ -702,6 +712,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public double caveSpiderScale = 1.0D; @@ -1289,7 +1289,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -711,6 +722,7 @@ public class PurpurWorldConfig { +@@ -713,6 +724,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderScale = Mth.clamp(getDouble("mobs.cave_spider.attributes.scale", caveSpiderScale), 0.0625D, 16.0D); @@ -1297,7 +1297,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean chickenRidable = false; -@@ -720,6 +732,7 @@ public class PurpurWorldConfig { +@@ -722,6 +734,7 @@ public class PurpurWorldConfig { public double chickenScale = 1.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1305,7 +1305,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -733,12 +746,14 @@ public class PurpurWorldConfig { +@@ -735,12 +748,14 @@ public class PurpurWorldConfig { chickenScale = Mth.clamp(getDouble("mobs.chicken.attributes.scale", chickenScale), 0.0625D, 16.0D); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1320,7 +1320,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -749,6 +764,7 @@ public class PurpurWorldConfig { +@@ -751,6 +766,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codScale = Mth.clamp(getDouble("mobs.cod.attributes.scale", codScale), 0.0625D, 16.0D); @@ -1328,7 +1328,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean cowRidable = false; -@@ -758,6 +774,7 @@ public class PurpurWorldConfig { +@@ -760,6 +776,7 @@ public class PurpurWorldConfig { public double cowScale = 1.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1336,7 +1336,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -771,6 +788,7 @@ public class PurpurWorldConfig { +@@ -773,6 +790,7 @@ public class PurpurWorldConfig { cowScale = Mth.clamp(getDouble("mobs.cow.attributes.scale", cowScale), 0.0625D, 16.0D); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1344,7 +1344,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean creeperRidable = false; -@@ -781,6 +799,7 @@ public class PurpurWorldConfig { +@@ -783,6 +801,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1352,7 +1352,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -795,6 +814,7 @@ public class PurpurWorldConfig { +@@ -797,6 +816,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1360,7 +1360,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean dolphinRidable = false; -@@ -805,6 +825,7 @@ public class PurpurWorldConfig { +@@ -807,6 +827,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1368,7 +1368,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -819,6 +840,7 @@ public class PurpurWorldConfig { +@@ -821,6 +842,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1376,7 +1376,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean donkeyRidableInWater = false; -@@ -829,6 +851,7 @@ public class PurpurWorldConfig { +@@ -831,6 +853,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1384,7 +1384,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -845,6 +868,7 @@ public class PurpurWorldConfig { +@@ -847,6 +870,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1392,7 +1392,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean drownedRidable = false; -@@ -856,6 +880,7 @@ public class PurpurWorldConfig { +@@ -858,6 +882,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1400,7 +1400,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -871,12 +896,14 @@ public class PurpurWorldConfig { +@@ -873,12 +898,14 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); @@ -1415,7 +1415,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void elderGuardianSettings() { elderGuardianRidable = getBoolean("mobs.elder_guardian.ridable", elderGuardianRidable); elderGuardianControllable = getBoolean("mobs.elder_guardian.controllable", elderGuardianControllable); -@@ -887,6 +914,7 @@ public class PurpurWorldConfig { +@@ -889,6 +916,7 @@ public class PurpurWorldConfig { } elderGuardianMaxHealth = getDouble("mobs.elder_guardian.attributes.max_health", elderGuardianMaxHealth); elderGuardianScale = Mth.clamp(getDouble("mobs.elder_guardian.attributes.scale", elderGuardianScale), 0.0625D, 16.0D); @@ -1423,7 +1423,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean enderDragonRidable = false; -@@ -896,6 +924,7 @@ public class PurpurWorldConfig { +@@ -898,6 +926,7 @@ public class PurpurWorldConfig { public double enderDragonMaxHealth = 200.0D; public boolean enderDragonAlwaysDropsFullExp = false; public boolean enderDragonBypassMobGriefing = false; @@ -1431,7 +1431,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void enderDragonSettings() { enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); -@@ -913,6 +942,7 @@ public class PurpurWorldConfig { +@@ -915,6 +944,7 @@ public class PurpurWorldConfig { enderDragonMaxHealth = getDouble("mobs.ender_dragon.attributes.max_health", enderDragonMaxHealth); enderDragonAlwaysDropsFullExp = getBoolean("mobs.ender_dragon.always-drop-full-exp", enderDragonAlwaysDropsFullExp); enderDragonBypassMobGriefing = getBoolean("mobs.ender_dragon.bypass-mob-griefing", enderDragonBypassMobGriefing); @@ -1439,7 +1439,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean endermanRidable = false; -@@ -923,6 +953,7 @@ public class PurpurWorldConfig { +@@ -925,6 +955,7 @@ public class PurpurWorldConfig { public boolean endermanAllowGriefing = true; public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; @@ -1447,7 +1447,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -937,6 +968,7 @@ public class PurpurWorldConfig { +@@ -939,6 +970,7 @@ public class PurpurWorldConfig { endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); endermanDespawnEvenWithBlock = getBoolean("mobs.enderman.can-despawn-with-held-block", endermanDespawnEvenWithBlock); endermanBypassMobGriefing = getBoolean("mobs.enderman.bypass-mob-griefing", endermanBypassMobGriefing); @@ -1455,7 +1455,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean endermiteRidable = false; -@@ -944,6 +976,7 @@ public class PurpurWorldConfig { +@@ -946,6 +978,7 @@ public class PurpurWorldConfig { public boolean endermiteControllable = true; public double endermiteMaxHealth = 8.0D; public double endermiteScale = 1.0D; @@ -1463,7 +1463,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void endermiteSettings() { endermiteRidable = getBoolean("mobs.endermite.ridable", endermiteRidable); endermiteRidableInWater = getBoolean("mobs.endermite.ridable-in-water", endermiteRidableInWater); -@@ -955,6 +988,7 @@ public class PurpurWorldConfig { +@@ -957,6 +990,7 @@ public class PurpurWorldConfig { } endermiteMaxHealth = getDouble("mobs.endermite.attributes.max_health", endermiteMaxHealth); endermiteScale = Mth.clamp(getDouble("mobs.endermite.attributes.scale", endermiteScale), 0.0625D, 16.0D); @@ -1471,7 +1471,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean evokerRidable = false; -@@ -963,6 +997,7 @@ public class PurpurWorldConfig { +@@ -965,6 +999,7 @@ public class PurpurWorldConfig { public double evokerMaxHealth = 24.0D; public double evokerScale = 1.0D; public boolean evokerBypassMobGriefing = false; @@ -1479,7 +1479,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void evokerSettings() { evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); -@@ -975,6 +1010,7 @@ public class PurpurWorldConfig { +@@ -977,6 +1012,7 @@ public class PurpurWorldConfig { evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); evokerScale = Mth.clamp(getDouble("mobs.evoker.attributes.scale", evokerScale), 0.0625D, 16.0D); evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); @@ -1487,7 +1487,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean foxRidable = false; -@@ -985,6 +1021,7 @@ public class PurpurWorldConfig { +@@ -987,6 +1023,7 @@ public class PurpurWorldConfig { public boolean foxTypeChangesWithTulips = false; public int foxBreedingTicks = 6000; public boolean foxBypassMobGriefing = false; @@ -1495,7 +1495,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -999,6 +1036,7 @@ public class PurpurWorldConfig { +@@ -1001,6 +1038,7 @@ public class PurpurWorldConfig { foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); @@ -1503,7 +1503,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean frogRidable = false; -@@ -1020,6 +1058,7 @@ public class PurpurWorldConfig { +@@ -1022,6 +1060,7 @@ public class PurpurWorldConfig { public double ghastMaxY = 320D; public double ghastMaxHealth = 10.0D; public double ghastScale = 1.0D; @@ -1511,7 +1511,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void ghastSettings() { ghastRidable = getBoolean("mobs.ghast.ridable", ghastRidable); ghastRidableInWater = getBoolean("mobs.ghast.ridable-in-water", ghastRidableInWater); -@@ -1032,6 +1071,7 @@ public class PurpurWorldConfig { +@@ -1034,6 +1073,7 @@ public class PurpurWorldConfig { } ghastMaxHealth = getDouble("mobs.ghast.attributes.max_health", ghastMaxHealth); ghastScale = Mth.clamp(getDouble("mobs.ghast.attributes.scale", ghastScale), 0.0625D, 16.0D); @@ -1519,7 +1519,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean giantRidable = false; -@@ -1045,6 +1085,7 @@ public class PurpurWorldConfig { +@@ -1047,6 +1087,7 @@ public class PurpurWorldConfig { public float giantJumpHeight = 1.0F; public boolean giantHaveAI = false; public boolean giantHaveHostileAI = false; @@ -1527,7 +1527,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void giantSettings() { giantRidable = getBoolean("mobs.giant.ridable", giantRidable); giantRidableInWater = getBoolean("mobs.giant.ridable-in-water", giantRidableInWater); -@@ -1066,6 +1107,7 @@ public class PurpurWorldConfig { +@@ -1068,6 +1109,7 @@ public class PurpurWorldConfig { giantJumpHeight = (float) getDouble("mobs.giant.jump-height", giantJumpHeight); giantHaveAI = getBoolean("mobs.giant.have-ai", giantHaveAI); giantHaveHostileAI = getBoolean("mobs.giant.have-hostile-ai", giantHaveHostileAI); @@ -1535,7 +1535,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean glowSquidRidable = false; -@@ -1073,12 +1115,14 @@ public class PurpurWorldConfig { +@@ -1075,12 +1117,14 @@ public class PurpurWorldConfig { public double glowSquidMaxHealth = 10.0D; public double glowSquidScale = 1.0D; public boolean glowSquidsCanFly = false; @@ -1550,7 +1550,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean goatRidable = false; -@@ -1087,6 +1131,7 @@ public class PurpurWorldConfig { +@@ -1089,6 +1133,7 @@ public class PurpurWorldConfig { public double goatMaxHealth = 10.0D; public double goatScale = 1.0D; public int goatBreedingTicks = 6000; @@ -1558,7 +1558,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void goatSettings() { goatRidable = getBoolean("mobs.goat.ridable", goatRidable); goatRidableInWater = getBoolean("mobs.goat.ridable-in-water", goatRidableInWater); -@@ -1094,12 +1139,14 @@ public class PurpurWorldConfig { +@@ -1096,12 +1141,14 @@ public class PurpurWorldConfig { goatMaxHealth = getDouble("mobs.goat.attributes.max_health", goatMaxHealth); goatScale = Mth.clamp(getDouble("mobs.goat.attributes.scale", goatScale), 0.0625D, 16.0D); goatBreedingTicks = getInt("mobs.goat.breeding-delay-ticks", goatBreedingTicks); @@ -1573,7 +1573,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void guardianSettings() { guardianRidable = getBoolean("mobs.guardian.ridable", guardianRidable); guardianControllable = getBoolean("mobs.guardian.controllable", guardianControllable); -@@ -1110,6 +1157,7 @@ public class PurpurWorldConfig { +@@ -1112,6 +1159,7 @@ public class PurpurWorldConfig { } guardianMaxHealth = getDouble("mobs.guardian.attributes.max_health", guardianMaxHealth); guardianScale = Mth.clamp(getDouble("mobs.guardian.attributes.scale", guardianScale), 0.0625D, 16.0D); @@ -1581,7 +1581,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean hoglinRidable = false; -@@ -1118,6 +1166,7 @@ public class PurpurWorldConfig { +@@ -1120,6 +1168,7 @@ public class PurpurWorldConfig { public double hoglinMaxHealth = 40.0D; public double hoglinScale = 1.0D; public int hoglinBreedingTicks = 6000; @@ -1589,7 +1589,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -1130,6 +1179,7 @@ public class PurpurWorldConfig { +@@ -1132,6 +1181,7 @@ public class PurpurWorldConfig { hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); hoglinScale = Mth.clamp(getDouble("mobs.hoglin.attributes.scale", hoglinScale), 0.0625D, 16.0D); hoglinBreedingTicks = getInt("mobs.hoglin.breeding-delay-ticks", hoglinBreedingTicks); @@ -1597,7 +1597,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean horseRidableInWater = false; -@@ -1140,6 +1190,7 @@ public class PurpurWorldConfig { +@@ -1142,6 +1192,7 @@ public class PurpurWorldConfig { public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; public int horseBreedingTicks = 6000; @@ -1605,7 +1605,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -1156,6 +1207,7 @@ public class PurpurWorldConfig { +@@ -1158,6 +1209,7 @@ public class PurpurWorldConfig { horseMovementSpeedMin = getDouble("mobs.horse.attributes.movement_speed.min", horseMovementSpeedMin); horseMovementSpeedMax = getDouble("mobs.horse.attributes.movement_speed.max", horseMovementSpeedMax); horseBreedingTicks = getInt("mobs.horse.breeding-delay-ticks", horseBreedingTicks); @@ -1613,7 +1613,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean huskRidable = false; -@@ -1167,6 +1219,7 @@ public class PurpurWorldConfig { +@@ -1169,6 +1221,7 @@ public class PurpurWorldConfig { public boolean huskJockeyOnlyBaby = true; public double huskJockeyChance = 0.05D; public boolean huskJockeyTryExistingChickens = true; @@ -1621,7 +1621,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1182,6 +1235,7 @@ public class PurpurWorldConfig { +@@ -1184,6 +1237,7 @@ public class PurpurWorldConfig { huskJockeyOnlyBaby = getBoolean("mobs.husk.jockey.only-babies", huskJockeyOnlyBaby); huskJockeyChance = getDouble("mobs.husk.jockey.chance", huskJockeyChance); huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); @@ -1629,7 +1629,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean illusionerRidable = false; -@@ -1191,6 +1245,7 @@ public class PurpurWorldConfig { +@@ -1193,6 +1247,7 @@ public class PurpurWorldConfig { public double illusionerFollowRange = 18.0D; public double illusionerMaxHealth = 32.0D; public double illusionerScale = 1.0D; @@ -1637,7 +1637,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void illusionerSettings() { illusionerRidable = getBoolean("mobs.illusioner.ridable", illusionerRidable); illusionerRidableInWater = getBoolean("mobs.illusioner.ridable-in-water", illusionerRidableInWater); -@@ -1208,6 +1263,7 @@ public class PurpurWorldConfig { +@@ -1210,6 +1265,7 @@ public class PurpurWorldConfig { } illusionerMaxHealth = getDouble("mobs.illusioner.attributes.max_health", illusionerMaxHealth); illusionerScale = Mth.clamp(getDouble("mobs.illusioner.attributes.scale", illusionerScale), 0.0625D, 16.0D); @@ -1645,7 +1645,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean ironGolemRidable = false; -@@ -1216,6 +1272,7 @@ public class PurpurWorldConfig { +@@ -1218,6 +1274,7 @@ public class PurpurWorldConfig { public boolean ironGolemCanSwim = false; public double ironGolemMaxHealth = 100.0D; public double ironGolemScale = 1.0D; @@ -1653,7 +1653,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void ironGolemSettings() { ironGolemRidable = getBoolean("mobs.iron_golem.ridable", ironGolemRidable); ironGolemRidableInWater = getBoolean("mobs.iron_golem.ridable-in-water", ironGolemRidableInWater); -@@ -1228,6 +1285,7 @@ public class PurpurWorldConfig { +@@ -1230,6 +1287,7 @@ public class PurpurWorldConfig { } ironGolemMaxHealth = getDouble("mobs.iron_golem.attributes.max_health", ironGolemMaxHealth); ironGolemScale = Mth.clamp(getDouble("mobs.iron_golem.attributes.scale", ironGolemScale), 0.0625D, 16.0D); @@ -1661,7 +1661,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean llamaRidable = false; -@@ -1240,6 +1298,7 @@ public class PurpurWorldConfig { +@@ -1242,6 +1300,7 @@ public class PurpurWorldConfig { public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; public int llamaBreedingTicks = 6000; @@ -1669,7 +1669,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -1258,6 +1317,7 @@ public class PurpurWorldConfig { +@@ -1260,6 +1319,7 @@ public class PurpurWorldConfig { llamaMovementSpeedMin = getDouble("mobs.llama.attributes.movement_speed.min", llamaMovementSpeedMin); llamaMovementSpeedMax = getDouble("mobs.llama.attributes.movement_speed.max", llamaMovementSpeedMax); llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); @@ -1677,7 +1677,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean magmaCubeRidable = false; -@@ -1267,6 +1327,7 @@ public class PurpurWorldConfig { +@@ -1269,6 +1329,7 @@ public class PurpurWorldConfig { public String magmaCubeAttackDamage = "size"; public Map magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); @@ -1685,7 +1685,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1280,6 +1341,7 @@ public class PurpurWorldConfig { +@@ -1282,6 +1343,7 @@ public class PurpurWorldConfig { magmaCubeAttackDamage = getString("mobs.magma_cube.attributes.attack_damage", magmaCubeAttackDamage); magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); @@ -1693,7 +1693,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean mooshroomRidable = false; -@@ -1288,6 +1350,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1352,7 @@ public class PurpurWorldConfig { public double mooshroomMaxHealth = 10.0D; public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; @@ -1701,7 +1701,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1300,6 +1363,7 @@ public class PurpurWorldConfig { +@@ -1302,6 +1365,7 @@ public class PurpurWorldConfig { mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); @@ -1709,7 +1709,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean muleRidableInWater = false; -@@ -1310,6 +1374,7 @@ public class PurpurWorldConfig { +@@ -1312,6 +1376,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; @@ -1717,7 +1717,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1326,6 +1391,7 @@ public class PurpurWorldConfig { +@@ -1328,6 +1393,7 @@ public class PurpurWorldConfig { muleMovementSpeedMin = getDouble("mobs.mule.attributes.movement_speed.min", muleMovementSpeedMin); muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); @@ -1725,7 +1725,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean ocelotRidable = false; -@@ -1334,6 +1400,7 @@ public class PurpurWorldConfig { +@@ -1336,6 +1402,7 @@ public class PurpurWorldConfig { public double ocelotMaxHealth = 10.0D; public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; @@ -1733,7 +1733,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1346,6 +1413,7 @@ public class PurpurWorldConfig { +@@ -1348,6 +1415,7 @@ public class PurpurWorldConfig { ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); @@ -1741,7 +1741,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean pandaRidable = false; -@@ -1354,6 +1422,7 @@ public class PurpurWorldConfig { +@@ -1356,6 +1424,7 @@ public class PurpurWorldConfig { public double pandaMaxHealth = 20.0D; public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; @@ -1749,7 +1749,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1366,6 +1435,7 @@ public class PurpurWorldConfig { +@@ -1368,6 +1437,7 @@ public class PurpurWorldConfig { pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); @@ -1757,7 +1757,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean parrotRidable = false; -@@ -1374,6 +1444,7 @@ public class PurpurWorldConfig { +@@ -1376,6 +1446,7 @@ public class PurpurWorldConfig { public double parrotMaxY = 320D; public double parrotMaxHealth = 6.0D; public double parrotScale = 1.0D; @@ -1765,7 +1765,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -1386,6 +1457,7 @@ public class PurpurWorldConfig { +@@ -1388,6 +1459,7 @@ public class PurpurWorldConfig { } parrotMaxHealth = getDouble("mobs.parrot.attributes.max_health", parrotMaxHealth); parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); @@ -1773,7 +1773,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean phantomRidable = false; -@@ -1412,6 +1484,7 @@ public class PurpurWorldConfig { +@@ -1414,6 +1486,7 @@ public class PurpurWorldConfig { public boolean phantomIgnorePlayersWithTorch = false; public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; @@ -1781,7 +1781,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -1446,6 +1519,7 @@ public class PurpurWorldConfig { +@@ -1448,6 +1521,7 @@ public class PurpurWorldConfig { phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight); phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); @@ -1789,7 +1789,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean pigRidable = false; -@@ -1455,6 +1529,7 @@ public class PurpurWorldConfig { +@@ -1457,6 +1531,7 @@ public class PurpurWorldConfig { public double pigScale = 1.0D; public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; @@ -1797,7 +1797,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1468,6 +1543,7 @@ public class PurpurWorldConfig { +@@ -1470,6 +1545,7 @@ public class PurpurWorldConfig { pigScale = Mth.clamp(getDouble("mobs.pig.attributes.scale", pigScale), 0.0625D, 16.0D); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); @@ -1805,7 +1805,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean piglinRidable = false; -@@ -1476,6 +1552,7 @@ public class PurpurWorldConfig { +@@ -1478,6 +1554,7 @@ public class PurpurWorldConfig { public double piglinMaxHealth = 16.0D; public double piglinScale = 1.0D; public boolean piglinBypassMobGriefing = false; @@ -1813,7 +1813,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -1488,6 +1565,7 @@ public class PurpurWorldConfig { +@@ -1490,6 +1567,7 @@ public class PurpurWorldConfig { piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); piglinScale = Mth.clamp(getDouble("mobs.piglin.attributes.scale", piglinScale), 0.0625D, 16.0D); piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); @@ -1821,7 +1821,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean piglinBruteRidable = false; -@@ -1495,6 +1573,7 @@ public class PurpurWorldConfig { +@@ -1497,6 +1575,7 @@ public class PurpurWorldConfig { public boolean piglinBruteControllable = true; public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; @@ -1829,7 +1829,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -1506,6 +1585,7 @@ public class PurpurWorldConfig { +@@ -1508,6 +1587,7 @@ public class PurpurWorldConfig { } piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D); @@ -1837,7 +1837,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean pillagerRidable = false; -@@ -1514,6 +1594,7 @@ public class PurpurWorldConfig { +@@ -1516,6 +1596,7 @@ public class PurpurWorldConfig { public double pillagerMaxHealth = 24.0D; public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; @@ -1845,7 +1845,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -1526,6 +1607,7 @@ public class PurpurWorldConfig { +@@ -1528,6 +1609,7 @@ public class PurpurWorldConfig { pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); @@ -1853,7 +1853,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean polarBearRidable = false; -@@ -1536,6 +1618,7 @@ public class PurpurWorldConfig { +@@ -1538,6 +1620,7 @@ public class PurpurWorldConfig { public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; @@ -1861,7 +1861,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1551,12 +1634,14 @@ public class PurpurWorldConfig { +@@ -1553,12 +1636,14 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.getValue(ResourceLocation.parse(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); @@ -1876,7 +1876,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -1567,6 +1652,7 @@ public class PurpurWorldConfig { +@@ -1569,6 +1654,7 @@ public class PurpurWorldConfig { } pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D); @@ -1884,7 +1884,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean rabbitRidable = false; -@@ -1578,6 +1664,7 @@ public class PurpurWorldConfig { +@@ -1580,6 +1666,7 @@ public class PurpurWorldConfig { public double rabbitNaturalKiller = 0.0D; public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; @@ -1892,7 +1892,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1593,6 +1680,7 @@ public class PurpurWorldConfig { +@@ -1595,6 +1682,7 @@ public class PurpurWorldConfig { rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); @@ -1900,7 +1900,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean ravagerRidable = false; -@@ -1601,6 +1689,7 @@ public class PurpurWorldConfig { +@@ -1603,6 +1691,7 @@ public class PurpurWorldConfig { public double ravagerMaxHealth = 100.0D; public double ravagerScale = 1.0D; public boolean ravagerBypassMobGriefing = false; @@ -1908,7 +1908,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1613,12 +1702,14 @@ public class PurpurWorldConfig { +@@ -1615,12 +1704,14 @@ public class PurpurWorldConfig { ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ravagerScale = Mth.clamp(getDouble("mobs.ravager.attributes.scale", ravagerScale), 0.0625D, 16.0D); ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); @@ -1923,7 +1923,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -1629,6 +1720,7 @@ public class PurpurWorldConfig { +@@ -1631,6 +1722,7 @@ public class PurpurWorldConfig { } salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D); @@ -1931,7 +1931,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean sheepRidable = false; -@@ -1638,6 +1730,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1732,7 @@ public class PurpurWorldConfig { public double sheepScale = 1.0D; public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; @@ -1939,7 +1939,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1651,6 +1744,7 @@ public class PurpurWorldConfig { +@@ -1653,6 +1746,7 @@ public class PurpurWorldConfig { sheepScale = Mth.clamp(getDouble("mobs.sheep.attributes.scale", sheepScale), 0.0625D, 16.0D); sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); @@ -1947,7 +1947,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean shulkerRidable = false; -@@ -1658,6 +1752,7 @@ public class PurpurWorldConfig { +@@ -1660,6 +1754,7 @@ public class PurpurWorldConfig { public boolean shulkerControllable = true; public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; @@ -1955,7 +1955,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1669,6 +1764,7 @@ public class PurpurWorldConfig { +@@ -1671,6 +1766,7 @@ public class PurpurWorldConfig { } shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE); @@ -1963,7 +1963,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean silverfishRidable = false; -@@ -1679,6 +1775,7 @@ public class PurpurWorldConfig { +@@ -1681,6 +1777,7 @@ public class PurpurWorldConfig { public double silverfishMovementSpeed = 0.25D; public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; @@ -1971,7 +1971,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -1693,6 +1790,7 @@ public class PurpurWorldConfig { +@@ -1695,6 +1792,7 @@ public class PurpurWorldConfig { silverfishMovementSpeed = getDouble("mobs.silverfish.attributes.movement_speed", silverfishMovementSpeed); silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); @@ -1979,7 +1979,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean skeletonRidable = false; -@@ -1700,6 +1798,7 @@ public class PurpurWorldConfig { +@@ -1702,6 +1800,7 @@ public class PurpurWorldConfig { public boolean skeletonControllable = true; public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; @@ -1987,7 +1987,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -1711,6 +1810,7 @@ public class PurpurWorldConfig { +@@ -1713,6 +1812,7 @@ public class PurpurWorldConfig { } skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); @@ -1995,7 +1995,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean skeletonHorseRidable = false; -@@ -1722,6 +1822,7 @@ public class PurpurWorldConfig { +@@ -1724,6 +1824,7 @@ public class PurpurWorldConfig { public double skeletonHorseJumpStrengthMax = 1.0D; public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; @@ -2003,7 +2003,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -1738,6 +1839,7 @@ public class PurpurWorldConfig { +@@ -1740,6 +1841,7 @@ public class PurpurWorldConfig { skeletonHorseJumpStrengthMax = getDouble("mobs.skeleton_horse.attributes.jump_strength.max", skeletonHorseJumpStrengthMax); skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); @@ -2011,7 +2011,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean slimeRidable = false; -@@ -1747,6 +1849,7 @@ public class PurpurWorldConfig { +@@ -1749,6 +1851,7 @@ public class PurpurWorldConfig { public String slimeAttackDamage = "size"; public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); @@ -2019,7 +2019,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -1760,6 +1863,7 @@ public class PurpurWorldConfig { +@@ -1762,6 +1865,7 @@ public class PurpurWorldConfig { slimeAttackDamage = getString("mobs.slime.attributes.attack_damage", slimeAttackDamage); slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); @@ -2027,7 +2027,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean snowGolemRidable = false; -@@ -1774,6 +1878,7 @@ public class PurpurWorldConfig { +@@ -1776,6 +1880,7 @@ public class PurpurWorldConfig { public float snowGolemSnowBallModifier = 10.0F; public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; @@ -2035,7 +2035,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1792,6 +1897,7 @@ public class PurpurWorldConfig { +@@ -1794,6 +1899,7 @@ public class PurpurWorldConfig { snowGolemSnowBallModifier = (float) getDouble("mobs.snow_golem.snow-ball-modifier", snowGolemSnowBallModifier); snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); @@ -2043,7 +2043,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean snifferRidable = false; -@@ -1816,6 +1922,7 @@ public class PurpurWorldConfig { +@@ -1818,6 +1924,7 @@ public class PurpurWorldConfig { public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; @@ -2051,7 +2051,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -1829,6 +1936,7 @@ public class PurpurWorldConfig { +@@ -1831,6 +1938,7 @@ public class PurpurWorldConfig { squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); @@ -2059,7 +2059,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean spiderRidable = false; -@@ -1836,6 +1944,7 @@ public class PurpurWorldConfig { +@@ -1838,6 +1946,7 @@ public class PurpurWorldConfig { public boolean spiderControllable = true; public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; @@ -2067,7 +2067,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -1847,6 +1956,7 @@ public class PurpurWorldConfig { +@@ -1849,6 +1958,7 @@ public class PurpurWorldConfig { } spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D); @@ -2075,7 +2075,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean strayRidable = false; -@@ -1854,6 +1964,7 @@ public class PurpurWorldConfig { +@@ -1856,6 +1966,7 @@ public class PurpurWorldConfig { public boolean strayControllable = true; public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; @@ -2083,7 +2083,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -1865,6 +1976,7 @@ public class PurpurWorldConfig { +@@ -1867,6 +1978,7 @@ public class PurpurWorldConfig { } strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D); @@ -2091,7 +2091,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean striderRidable = false; -@@ -1874,6 +1986,7 @@ public class PurpurWorldConfig { +@@ -1876,6 +1988,7 @@ public class PurpurWorldConfig { public double striderScale = 1.0D; public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; @@ -2099,7 +2099,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1887,6 +2000,7 @@ public class PurpurWorldConfig { +@@ -1889,6 +2002,7 @@ public class PurpurWorldConfig { striderScale = Mth.clamp(getDouble("mobs.strider.attributes.scale", striderScale), 0.0625D, 16.0D); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); @@ -2107,7 +2107,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean tadpoleRidable = false; -@@ -1908,6 +2022,7 @@ public class PurpurWorldConfig { +@@ -1910,6 +2024,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; @@ -2115,7 +2115,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1926,12 +2041,14 @@ public class PurpurWorldConfig { +@@ -1928,12 +2043,14 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMin = getDouble("mobs.trader_llama.attributes.movement_speed.min", traderLlamaMovementSpeedMin); traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); @@ -2130,7 +2130,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -1942,6 +2059,7 @@ public class PurpurWorldConfig { +@@ -1944,6 +2061,7 @@ public class PurpurWorldConfig { } tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D); @@ -2138,7 +2138,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean turtleRidable = false; -@@ -1950,6 +2068,7 @@ public class PurpurWorldConfig { +@@ -1952,6 +2070,7 @@ public class PurpurWorldConfig { public double turtleMaxHealth = 30.0D; public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; @@ -2146,7 +2146,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1962,6 +2081,7 @@ public class PurpurWorldConfig { +@@ -1964,6 +2083,7 @@ public class PurpurWorldConfig { turtleMaxHealth = getDouble("mobs.turtle.attributes.max_health", turtleMaxHealth); turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); @@ -2154,7 +2154,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean vexRidable = false; -@@ -1970,6 +2090,7 @@ public class PurpurWorldConfig { +@@ -1972,6 +2092,7 @@ public class PurpurWorldConfig { public double vexMaxY = 320D; public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; @@ -2162,7 +2162,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -1982,6 +2103,7 @@ public class PurpurWorldConfig { +@@ -1984,6 +2105,7 @@ public class PurpurWorldConfig { } vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D); @@ -2170,7 +2170,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean villagerRidable = false; -@@ -1996,6 +2118,7 @@ public class PurpurWorldConfig { +@@ -1998,6 +2120,7 @@ public class PurpurWorldConfig { public boolean villagerClericsFarmWarts = false; public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; @@ -2178,7 +2178,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2014,6 +2137,7 @@ public class PurpurWorldConfig { +@@ -2016,6 +2139,7 @@ public class PurpurWorldConfig { villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); @@ -2186,7 +2186,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean vindicatorRidable = false; -@@ -2022,6 +2146,7 @@ public class PurpurWorldConfig { +@@ -2024,6 +2148,7 @@ public class PurpurWorldConfig { public double vindicatorMaxHealth = 24.0D; public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; @@ -2194,7 +2194,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2034,6 +2159,7 @@ public class PurpurWorldConfig { +@@ -2036,6 +2161,7 @@ public class PurpurWorldConfig { vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); @@ -2202,7 +2202,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean wanderingTraderRidable = false; -@@ -2043,6 +2169,7 @@ public class PurpurWorldConfig { +@@ -2045,6 +2171,7 @@ public class PurpurWorldConfig { public double wanderingTraderScale = 1.0D; public boolean wanderingTraderFollowEmeraldBlock = false; public boolean wanderingTraderCanBeLeashed = false; @@ -2210,7 +2210,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2056,6 +2183,7 @@ public class PurpurWorldConfig { +@@ -2058,6 +2185,7 @@ public class PurpurWorldConfig { wanderingTraderScale = Mth.clamp(getDouble("mobs.wandering_trader.attributes.scale", wanderingTraderScale), 0.0625D, 16.0D); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); @@ -2218,7 +2218,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean wardenRidable = false; -@@ -2072,6 +2200,7 @@ public class PurpurWorldConfig { +@@ -2074,6 +2202,7 @@ public class PurpurWorldConfig { public boolean witchControllable = true; public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; @@ -2226,7 +2226,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2083,6 +2212,7 @@ public class PurpurWorldConfig { +@@ -2085,6 +2214,7 @@ public class PurpurWorldConfig { } witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D); @@ -2234,7 +2234,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean witherRidable = false; -@@ -2094,6 +2224,7 @@ public class PurpurWorldConfig { +@@ -2096,6 +2226,7 @@ public class PurpurWorldConfig { public float witherHealthRegenAmount = 1.0f; public int witherHealthRegenDelay = 20; public boolean witherBypassMobGriefing = false; @@ -2242,7 +2242,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2113,6 +2244,7 @@ public class PurpurWorldConfig { +@@ -2115,6 +2246,7 @@ public class PurpurWorldConfig { witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount); witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay); witherBypassMobGriefing = getBoolean("mobs.wither.bypass-mob-griefing", witherBypassMobGriefing); @@ -2250,7 +2250,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean witherSkeletonRidable = false; -@@ -2120,6 +2252,7 @@ public class PurpurWorldConfig { +@@ -2122,6 +2254,7 @@ public class PurpurWorldConfig { public boolean witherSkeletonControllable = true; public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; @@ -2258,7 +2258,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2131,6 +2264,7 @@ public class PurpurWorldConfig { +@@ -2133,6 +2266,7 @@ public class PurpurWorldConfig { } witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D); @@ -2266,7 +2266,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean wolfRidable = false; -@@ -2142,6 +2276,7 @@ public class PurpurWorldConfig { +@@ -2144,6 +2278,7 @@ public class PurpurWorldConfig { public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; @@ -2274,7 +2274,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2161,6 +2296,7 @@ public class PurpurWorldConfig { +@@ -2163,6 +2298,7 @@ public class PurpurWorldConfig { wolfMilkCuresRabies = getBoolean("mobs.wolf.milk-cures-rabid-wolves", wolfMilkCuresRabies); wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); @@ -2282,7 +2282,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean zoglinRidable = false; -@@ -2168,6 +2304,7 @@ public class PurpurWorldConfig { +@@ -2170,6 +2306,7 @@ public class PurpurWorldConfig { public boolean zoglinControllable = true; public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; @@ -2290,7 +2290,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2179,6 +2316,7 @@ public class PurpurWorldConfig { +@@ -2181,6 +2318,7 @@ public class PurpurWorldConfig { } zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D); @@ -2298,7 +2298,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean zombieRidable = false; -@@ -2192,6 +2330,7 @@ public class PurpurWorldConfig { +@@ -2194,6 +2332,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; @@ -2306,7 +2306,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2209,6 +2348,7 @@ public class PurpurWorldConfig { +@@ -2211,6 +2350,7 @@ public class PurpurWorldConfig { zombieJockeyTryExistingChickens = getBoolean("mobs.zombie.jockey.try-existing-chickens", zombieJockeyTryExistingChickens); zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); @@ -2314,7 +2314,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean zombieHorseRidable = false; -@@ -2221,6 +2361,7 @@ public class PurpurWorldConfig { +@@ -2223,6 +2363,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2322,7 +2322,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -2238,6 +2379,7 @@ public class PurpurWorldConfig { +@@ -2240,6 +2381,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2330,7 +2330,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean zombieVillagerRidable = false; -@@ -2249,6 +2391,7 @@ public class PurpurWorldConfig { +@@ -2251,6 +2393,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -2338,7 +2338,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2264,6 +2407,7 @@ public class PurpurWorldConfig { +@@ -2266,6 +2409,7 @@ public class PurpurWorldConfig { zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); @@ -2346,7 +2346,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad } public boolean zombifiedPiglinRidable = false; -@@ -2276,6 +2420,7 @@ public class PurpurWorldConfig { +@@ -2278,6 +2422,7 @@ public class PurpurWorldConfig { public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; @@ -2354,7 +2354,7 @@ index f9fde0c0cdc14cf5427df3c8ecfa8d407233cdc3..6ab44612b686907e48e05dd41c96d2ad private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -2292,5 +2437,6 @@ public class PurpurWorldConfig { +@@ -2294,5 +2439,6 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyChance = getDouble("mobs.zombified_piglin.jockey.chance", zombifiedPiglinJockeyChance); zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); diff --git a/patches/server/0121-Config-to-always-tame-in-Creative.patch b/patches/server/0123-Config-to-always-tame-in-Creative.patch similarity index 96% rename from patches/server/0121-Config-to-always-tame-in-Creative.patch rename to patches/server/0123-Config-to-always-tame-in-Creative.patch index 884b215ba..279e6a049 100644 --- a/patches/server/0121-Config-to-always-tame-in-Creative.patch +++ b/patches/server/0123-Config-to-always-tame-in-Creative.patch @@ -46,7 +46,7 @@ index b3dab2eda7aa109c4715e027fd6bba6ac320a106..9c7e29307b811d859a0d743b232463e1 this.level().broadcastEntityEvent(this, (byte) 7); } else { diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index ec8dc3d02920580103e534f3102063c80bfab5f0..27fb659a92606a89e5e669d41618f94996bf0c5a 100644 +index 91474a8a795a278493c07002bd99ec75effa659c..15675dd5df0ec88636019ac57fd0540bef3af5f6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java @@ -637,7 +637,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>(); public List itemImmuneToLightning = new ArrayList<>(); @@ -163,7 +163,7 @@ index 7ba94e40a7ca1b6e81b1404736ee2ec6dc10dca9..dfea07d861779bc6f8c6041ac57bde15 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -226,6 +230,10 @@ public class PurpurWorldConfig { +@@ -228,6 +232,10 @@ public class PurpurWorldConfig { Item item = BuiltInRegistries.ITEM.getValue(ResourceLocation.parse(key.toString())); if (item != Items.AIR) itemImmuneToLightning.add(item); }); diff --git a/patches/server/0125-One-Punch-Man.patch b/patches/server/0127-One-Punch-Man.patch similarity index 90% rename from patches/server/0125-One-Punch-Man.patch rename to patches/server/0127-One-Punch-Man.patch index 3ead264f6..09bc2ba18 100644 --- a/patches/server/0125-One-Punch-Man.patch +++ b/patches/server/0127-One-Punch-Man.patch @@ -6,7 +6,7 @@ Subject: [PATCH] One Punch Man! inspired by https://modrinth.com/mod/creative-one-punch diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index beb573d8fdc5f9e07146a7bd4d7c51d596a791a1..42755171ccaf9cb23494d3bd53154d934fe68a77 100644 +index d6c1910cdc9bbdda217f1f13334312fafdb3c8fa..a7a6f8b7b1dfa2002f57fb6e0aaae376357dd5b4 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1455,6 +1455,24 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -35,10 +35,10 @@ index beb573d8fdc5f9e07146a7bd4d7c51d596a791a1..42755171ccaf9cb23494d3bd53154d93 if (amount < 0.0F) { amount = 0.0F; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dfea07d861779bc6f8c6041ac57bde1596a65e92..69f59d4d1cf30358f26f11e9c4cb9b8e2e6ce486 100644 +index a036097666a22f17953dd6fbf541c4976de37436..317d79355d534a484aabfdd6776cb8ff5b6f3d79 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -336,6 +336,7 @@ public class PurpurWorldConfig { +@@ -338,6 +338,7 @@ public class PurpurWorldConfig { public boolean teleportIfOutsideBorder = false; public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; @@ -46,7 +46,7 @@ index dfea07d861779bc6f8c6041ac57bde1596a65e92..69f59d4d1cf30358f26f11e9c4cb9b8e private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -352,6 +353,7 @@ public class PurpurWorldConfig { +@@ -354,6 +355,7 @@ public class PurpurWorldConfig { teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); diff --git a/patches/server/0126-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch b/patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch similarity index 94% rename from patches/server/0126-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch rename to patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch index 3cc696de6..950dc9250 100644 --- a/patches/server/0126-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch +++ b/patches/server/0128-Configurable-Ender-Pearl-cooldown-damage-and-Endermi.patch @@ -8,7 +8,7 @@ Subject: [PATCH] Configurable Ender Pearl cooldown, damage, and Endermite RNG - Endermite spawn chance diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 5f790dd24f2bdae827c6dc597064b9b265089751..88bb9ef154faf45a270750914b9b6b769819ccb9 100644 +index bd2684528157f928460f2143dd71a48e11983123..a044a5242ce1d1f6e34ecd5b4568553428d2f0b8 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java @@ -152,7 +152,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { @@ -42,10 +42,10 @@ index b232390d8ee8e449e61c0ea7f3af60df507abb97..ad99c6fb7bcd8ccbdeb405ca7ff73ae4 // Paper end - PlayerLaunchProjectileEvent if (user instanceof net.minecraft.server.level.ServerPlayer) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index bdf8bdf14cc54ddb44c6e6f7bc1572bb7920dd45..428fd6150856e3f247c37779891c5ccc92dddcc1 100644 +index 317d79355d534a484aabfdd6776cb8ff5b6f3d79..64d202df3bf8219d391f23b9c5f0be328ec55947 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -193,6 +193,10 @@ public class PurpurWorldConfig { +@@ -195,6 +195,10 @@ public class PurpurWorldConfig { public boolean ignoreScissorsInWater = false; public boolean ignoreScissorsInLava = false; public double scissorsRunningDamage = 1D; @@ -56,7 +56,7 @@ index bdf8bdf14cc54ddb44c6e6f7bc1572bb7920dd45..428fd6150856e3f247c37779891c5ccc private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -234,6 +238,10 @@ public class PurpurWorldConfig { +@@ -236,6 +240,10 @@ public class PurpurWorldConfig { ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater); ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava); scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage); diff --git a/patches/server/0127-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch similarity index 85% rename from patches/server/0127-Config-to-ignore-nearby-mobs-when-sleeping.patch rename to patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch index 154fb33c3..35af9b7e1 100644 --- a/patches/server/0127-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ b/patches/server/0129-Config-to-ignore-nearby-mobs-when-sleeping.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Config to ignore nearby mobs when sleeping diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index ddce8eb3ac5962c0e93c879ede1bbb34f7b72166..813192b363dc59e2afa2289414726edf40123370 100644 +index 430ea84cbca69b6d119c2739bed9de37a970c2e5..803eaf29e33c939b23719611d1d19b297f12d7c2 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1797,7 +1797,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1798,7 +1798,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple return entitymonster.isPreventingPlayerRest(this.serverLevel(), this); }); @@ -18,10 +18,10 @@ index ddce8eb3ac5962c0e93c879ede1bbb34f7b72166..813192b363dc59e2afa2289414726edf } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a53b1209743fc1944764436255bb1c8a195303d1..c3343c0ffcee58b8dffeef4f6ff14be2701df443 100644 +index 64d202df3bf8219d391f23b9c5f0be328ec55947..3397c9fbdad9e7c6023c013d38e5061663b4434a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -345,6 +345,7 @@ public class PurpurWorldConfig { +@@ -347,6 +347,7 @@ public class PurpurWorldConfig { public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; @@ -29,7 +29,7 @@ index a53b1209743fc1944764436255bb1c8a195303d1..c3343c0ffcee58b8dffeef4f6ff14be2 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -362,6 +363,7 @@ public class PurpurWorldConfig { +@@ -364,6 +365,7 @@ public class PurpurWorldConfig { totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory); playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); diff --git a/patches/server/0128-Add-back-player-spawned-endermite-API.patch b/patches/server/0130-Add-back-player-spawned-endermite-API.patch similarity index 97% rename from patches/server/0128-Add-back-player-spawned-endermite-API.patch rename to patches/server/0130-Add-back-player-spawned-endermite-API.patch index 8dd320556..c476559f1 100644 --- a/patches/server/0128-Add-back-player-spawned-endermite-API.patch +++ b/patches/server/0130-Add-back-player-spawned-endermite-API.patch @@ -47,7 +47,7 @@ index e8b7e291c96ff6856832fc6612f792fc778e5162..806719a3673f3c333bfc720a7ccf07f7 @Override diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 88bb9ef154faf45a270750914b9b6b769819ccb9..7cc4a2a6cfef90a84859a128a9e0521ce3110854 100644 +index a044a5242ce1d1f6e34ecd5b4568553428d2f0b8..0720df603b4f89dd6aa346091b13033ad5d62907 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java @@ -156,6 +156,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { diff --git a/patches/server/0129-Config-Enderman-aggressiveness-towards-Endermites.patch b/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch similarity index 94% rename from patches/server/0129-Config-Enderman-aggressiveness-towards-Endermites.patch rename to patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch index 6e790d8f0..b633ff036 100644 --- a/patches/server/0129-Config-Enderman-aggressiveness-towards-Endermites.patch +++ b/patches/server/0131-Config-Enderman-aggressiveness-towards-Endermites.patch @@ -18,10 +18,10 @@ index 491d63bd648c0f0a82c2e9f8a899b352b553a697..a3cf68f3a43fb525112eaa669f2766b5 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c3343c0ffcee58b8dffeef4f6ff14be2701df443..e05b261fb0b81469ba707ad200f57d01cf29671f 100644 +index 3397c9fbdad9e7c6023c013d38e5061663b4434a..27d10afc896600b0e4f3a696367d66821eddc033 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1015,6 +1015,8 @@ public class PurpurWorldConfig { +@@ -1017,6 +1017,8 @@ public class PurpurWorldConfig { public boolean endermanDespawnEvenWithBlock = false; public boolean endermanBypassMobGriefing = false; public boolean endermanTakeDamageFromWater = true; @@ -30,7 +30,7 @@ index c3343c0ffcee58b8dffeef4f6ff14be2701df443..e05b261fb0b81469ba707ad200f57d01 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1024,12 +1026,18 @@ public class PurpurWorldConfig { +@@ -1026,12 +1028,18 @@ public class PurpurWorldConfig { set("mobs.enderman.attributes.max-health", null); set("mobs.enderman.attributes.max_health", oldValue); } diff --git a/patches/server/0130-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch similarity index 89% rename from patches/server/0130-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch rename to patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch index 96e4a57cf..b22ab6bfd 100644 --- a/patches/server/0130-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ b/patches/server/0132-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch @@ -7,7 +7,7 @@ Prevents Enderman from becoming aggresive towards players that are wearing a Dra Adds functionality to a useless item! 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 4a223113757320610eddd89d5404dd54e38fc87d..27a4b47ad46700b595dd829e6aab558d170c0a8f 100644 +index a3cf68f3a43fb525112eaa669f2766b562bda535..737c3367faee2286984c8e7d161b128d7b6632a5 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -260,7 +260,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -20,10 +20,10 @@ index 4a223113757320610eddd89d5404dd54e38fc87d..27a4b47ad46700b595dd829e6aab558d event.setCancelled(!shouldAttack); return event.callEvent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2b0984f7a2dd0d2f42f59b85a5b6e8d7b09319c2..d138bb202fd13c92800e634543ff4559fe19b9d4 100644 +index 27d10afc896600b0e4f3a696367d66821eddc033..55b3b2c781215c1c6e3caab72fa7e31706a046d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1017,6 +1017,7 @@ public class PurpurWorldConfig { +@@ -1019,6 +1019,7 @@ public class PurpurWorldConfig { public boolean endermanTakeDamageFromWater = true; public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; @@ -31,7 +31,7 @@ index 2b0984f7a2dd0d2f42f59b85a5b6e8d7b09319c2..d138bb202fd13c92800e634543ff4559 private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1038,6 +1039,7 @@ public class PurpurWorldConfig { +@@ -1040,6 +1041,7 @@ public class PurpurWorldConfig { endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); diff --git a/patches/server/0131-Tick-fluids-config.patch b/patches/server/0133-Tick-fluids-config.patch similarity index 94% rename from patches/server/0131-Tick-fluids-config.patch rename to patches/server/0133-Tick-fluids-config.patch index 4a532cf05..b79ee232e 100644 --- a/patches/server/0131-Tick-fluids-config.patch +++ b/patches/server/0133-Tick-fluids-config.patch @@ -36,10 +36,10 @@ index a2d023ff011f71f80032f02430a53d6a08a23623..399441dd8388dcdec08768665d3cfa18 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d138bb202fd13c92800e634543ff4559fe19b9d4..58fb417f9f59fc5d97d963afdbf9a69e64c69057 100644 +index 55b3b2c781215c1c6e3caab72fa7e31706a046d4..28853730bd4df2978b840a7aaa891c8a9cc96189 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -134,6 +134,7 @@ public class PurpurWorldConfig { +@@ -135,6 +135,7 @@ public class PurpurWorldConfig { public boolean imposeTeleportRestrictionsOnGateways = false; public boolean imposeTeleportRestrictionsOnNetherPortals = false; public boolean imposeTeleportRestrictionsOnEndPortals = false; @@ -47,7 +47,7 @@ index d138bb202fd13c92800e634543ff4559fe19b9d4..58fb417f9f59fc5d97d963afdbf9a69e private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -152,7 +153,7 @@ public class PurpurWorldConfig { +@@ -154,7 +155,7 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnGateways = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-gateways", imposeTeleportRestrictionsOnGateways); imposeTeleportRestrictionsOnNetherPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-nether-portals", imposeTeleportRestrictionsOnNetherPortals); imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals); diff --git a/patches/server/0132-Config-to-disable-Llama-caravans.patch b/patches/server/0134-Config-to-disable-Llama-caravans.patch similarity index 91% rename from patches/server/0132-Config-to-disable-Llama-caravans.patch rename to patches/server/0134-Config-to-disable-Llama-caravans.patch index ca3261081..c4180a384 100644 --- a/patches/server/0132-Config-to-disable-Llama-caravans.patch +++ b/patches/server/0134-Config-to-disable-Llama-caravans.patch @@ -19,7 +19,7 @@ index eb0faf58fa1a408f294fc62120b140def97f998d..0f4f546cd0eda4bd82b47446ae23ac32 List list = this.llama.level().getEntities(this.llama, this.llama.getBoundingBox().inflate(9.0, 4.0, 9.0), entity -> { EntityType entityType = entity.getType(); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 1c23531fed535e61afe47bfb66fc4e5ffb1d2dc5..be4429f922bab5fd389759f85aeadbd0335d75b4 100644 +index 0b81415233df20fe7143c87ee964a6a1f490476f..227638f369a6581f37e892fa457e2d6775ef857d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -461,7 +461,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder minecartControllableBlockSpeeds = new HashMap<>(); @@ -45,7 +45,7 @@ index 6994e136f188ae11a77a691d05dc7355906544e5..0c52f8486f59eaca46309b31ac877f60 private void minecartSettings() { if (PurpurConfig.version < 12) { boolean oldBool = getBoolean("gameplay-mechanics.controllable-minecarts.place-anywhere", minecartPlaceAnywhere); -@@ -318,6 +319,7 @@ public class PurpurWorldConfig { +@@ -320,6 +321,7 @@ public class PurpurWorldConfig { set("gameplay-mechanics.minecart.controllable.block-speed.grass_block", 0.3D); set("gameplay-mechanics.minecart.controllable.block-speed.stone", 0.5D); } diff --git a/patches/server/0159-Add-config-change-multiplier-critical-damage-value.patch b/patches/server/0161-Add-config-change-multiplier-critical-damage-value.patch similarity index 92% rename from patches/server/0159-Add-config-change-multiplier-critical-damage-value.patch rename to patches/server/0161-Add-config-change-multiplier-critical-damage-value.patch index 845718964..1c631465e 100644 --- a/patches/server/0159-Add-config-change-multiplier-critical-damage-value.patch +++ b/patches/server/0161-Add-config-change-multiplier-critical-damage-value.patch @@ -18,10 +18,10 @@ index ae5f7c275003b6fb9f6c5a0277482b4fddf8e74c..4c42ad7e43ab1f19456a89f1b0e82b7a float f3 = f + f1; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6912a7bb0f849c0d283b36f71bb5fa8508b5d25d..0d618c7af0d53ba3bdad85799e7e7cffcdcda125 100644 +index d109f26e7b0c248f51f16fa940c2d770bf79fd20..533dd49ba9474b22ba95504084da118d4562804d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -363,6 +363,7 @@ public class PurpurWorldConfig { +@@ -365,6 +365,7 @@ public class PurpurWorldConfig { public boolean creativeOnePunch = false; public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; @@ -29,7 +29,7 @@ index 6912a7bb0f849c0d283b36f71bb5fa8508b5d25d..0d618c7af0d53ba3bdad85799e7e7cff private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -382,6 +383,7 @@ public class PurpurWorldConfig { +@@ -384,6 +385,7 @@ public class PurpurWorldConfig { creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); diff --git a/patches/server/0160-Option-to-disable-dragon-egg-teleporting.patch b/patches/server/0162-Option-to-disable-dragon-egg-teleporting.patch similarity index 92% rename from patches/server/0160-Option-to-disable-dragon-egg-teleporting.patch rename to patches/server/0162-Option-to-disable-dragon-egg-teleporting.patch index 944a7936c..1b69e5a0b 100644 --- a/patches/server/0160-Option-to-disable-dragon-egg-teleporting.patch +++ b/patches/server/0162-Option-to-disable-dragon-egg-teleporting.patch @@ -19,10 +19,10 @@ index 30d15686b1a81de7ac28feb0c6188eb007c6f2fd..b6799db00e157892dd4339a01d2ca360 BlockPos blockposition1 = pos.offset(world.random.nextInt(16) - world.random.nextInt(16), world.random.nextInt(8) - world.random.nextInt(8), world.random.nextInt(16) - world.random.nextInt(16)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 920964b0f6c91c9d49ea3c73351c1d5a0e3e2acd..7109c4733ffa658d0221aa2064660844968807ff 100644 +index 533dd49ba9474b22ba95504084da118d4562804d..cf07ee866e9b12be43a129a541e17b6cde0d936b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -495,6 +495,11 @@ public class PurpurWorldConfig { +@@ -497,6 +497,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0161-Config-for-unverified-username-message.patch b/patches/server/0163-Config-for-unverified-username-message.patch similarity index 100% rename from patches/server/0161-Config-for-unverified-username-message.patch rename to patches/server/0163-Config-for-unverified-username-message.patch diff --git a/patches/server/0162-Make-anvil-cumulative-cost-configurable.patch b/patches/server/0164-Make-anvil-cumulative-cost-configurable.patch similarity index 100% rename from patches/server/0162-Make-anvil-cumulative-cost-configurable.patch rename to patches/server/0164-Make-anvil-cumulative-cost-configurable.patch diff --git a/patches/server/0163-Bee-can-work-when-raining-or-at-night.patch b/patches/server/0165-Bee-can-work-when-raining-or-at-night.patch similarity index 91% rename from patches/server/0163-Bee-can-work-when-raining-or-at-night.patch rename to patches/server/0165-Bee-can-work-when-raining-or-at-night.patch index c5bd60c80..3c7aaa3ff 100644 --- a/patches/server/0163-Bee-can-work-when-raining-or-at-night.patch +++ b/patches/server/0165-Bee-can-work-when-raining-or-at-night.patch @@ -18,10 +18,10 @@ index d47e5f774567aa4710686430b66eb1409c2f0c97..8caee835f524d23d061ff73d9fb60948 public void setStayOutOfHiveCountdown(int cannotEnterHiveTicks) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7109c4733ffa658d0221aa2064660844968807ff..ed5c6b053bea67350d067b8ed69312b1a6273332 100644 +index cf07ee866e9b12be43a129a541e17b6cde0d936b..398cb3dfc7baac5ee610475b3709fdd3252c02e9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -746,6 +746,8 @@ public class PurpurWorldConfig { +@@ -748,6 +748,8 @@ public class PurpurWorldConfig { public double beeScale = 1.0D; public int beeBreedingTicks = 6000; public boolean beeTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 7109c4733ffa658d0221aa2064660844968807ff..ed5c6b053bea67350d067b8ed69312b1 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -760,6 +762,8 @@ public class PurpurWorldConfig { +@@ -762,6 +764,8 @@ public class PurpurWorldConfig { beeScale = Mth.clamp(getDouble("mobs.bee.attributes.scale", beeScale), 0.0625D, 16.0D); beeBreedingTicks = getInt("mobs.bee.breeding-delay-ticks", beeBreedingTicks); beeTakeDamageFromWater = getBoolean("mobs.bee.takes-damage-from-water", beeTakeDamageFromWater); diff --git a/patches/server/0164-API-for-any-mob-to-burn-daylight.patch b/patches/server/0166-API-for-any-mob-to-burn-daylight.patch similarity index 99% rename from patches/server/0164-API-for-any-mob-to-burn-daylight.patch rename to patches/server/0166-API-for-any-mob-to-burn-daylight.patch index 29730d65e..e4653c771 100644 --- a/patches/server/0164-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0166-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ed34d94af712c945a35145bcb2d9603e5e6db1da..01e3da9e5e6a27b3ee54f0b28b67637d8f9271d7 100644 +index 96f49fd358ee0cc1c45573638343a1492b32eb83..7b1a5d7a84690865d7263f5c6cd1393d5cc9495e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -617,6 +617,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -33,7 +33,7 @@ index ed34d94af712c945a35145bcb2d9603e5e6db1da..01e3da9e5e6a27b3ee54f0b28b67637d this.id = Entity.ENTITY_COUNTER.incrementAndGet(); this.passengers = ImmutableList.of(); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 0665b87872b8f5284d5947d68ca04a0850768a90..3177c786e927b8979da74c3144bee9d523155bc1 100644 +index ab28b28118810a4d55300d5b5590016e318a9720..4c5f573594c53edee96b498fa0852a3dee59cef8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -297,6 +297,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0165-Config-MobEffect-by-world.patch b/patches/server/0167-Config-MobEffect-by-world.patch similarity index 97% rename from patches/server/0165-Config-MobEffect-by-world.patch rename to patches/server/0167-Config-MobEffect-by-world.patch index cc8d146a8..d3fd4c516 100644 --- a/patches/server/0165-Config-MobEffect-by-world.patch +++ b/patches/server/0167-Config-MobEffect-by-world.patch @@ -72,10 +72,10 @@ index 303cefba51e19ac43b1f6188ad64ef480715ebaf..98ec88751b3e71c2e7aad633096b7f41 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ed5c6b053bea67350d067b8ed69312b1a6273332..0ac0a4b0e781af5877f0c7ad4a8398763d9f4b7c 100644 +index 398cb3dfc7baac5ee610475b3709fdd3252c02e9..54cc4795be1f76bcd00294a8a9a84c2d24f99c4b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -322,6 +322,21 @@ public class PurpurWorldConfig { +@@ -324,6 +324,21 @@ public class PurpurWorldConfig { poweredRailBoostModifier = getDouble("gameplay-mechanics.minecart.powered-rail.boost-modifier", poweredRailBoostModifier); } diff --git a/patches/server/0166-Beacon-Activation-Range-Configurable.patch b/patches/server/0168-Beacon-Activation-Range-Configurable.patch similarity index 94% rename from patches/server/0166-Beacon-Activation-Range-Configurable.patch rename to patches/server/0168-Beacon-Activation-Range-Configurable.patch index e11025931..a970877ab 100644 --- a/patches/server/0166-Beacon-Activation-Range-Configurable.patch +++ b/patches/server/0168-Beacon-Activation-Range-Configurable.patch @@ -26,10 +26,10 @@ index 0e0d178f2793ab014358f534c8dc53218b89f083..fbc6b0099af34b0247f6144a9cef020f } else { return effectRange; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0ac0a4b0e781af5877f0c7ad4a8398763d9f4b7c..0adfc605365b5671dadebdd7143ba92417e5bb22 100644 +index 54cc4795be1f76bcd00294a8a9a84c2d24f99c4b..91620b1d72e8109422946efa97e60c386baa6e4f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -462,6 +462,17 @@ public class PurpurWorldConfig { +@@ -464,6 +464,17 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } diff --git a/patches/server/0167-Make-lightning-rod-range-configurable.patch b/patches/server/0169-Make-lightning-rod-range-configurable.patch similarity index 96% rename from patches/server/0167-Make-lightning-rod-range-configurable.patch rename to patches/server/0169-Make-lightning-rod-range-configurable.patch index 8277f9ce4..cc4765051 100644 --- a/patches/server/0167-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0169-Make-lightning-rod-range-configurable.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index bd2001cbc8aac2f00f643f1b98a42c4a0d0ec720..3f43f52a977b4e7908021dd820fb1f818a4614a9 100644 +index 95802eb8de88dc3e8d9266184e88a5b8530edd49..b4b0579b84ae26f8ca2d0ab34e8bc963b09cf93e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1065,7 +1065,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe diff --git a/patches/server/0168-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch b/patches/server/0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch similarity index 97% rename from patches/server/0168-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch rename to patches/server/0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch index 9229d113e..67601846a 100644 --- a/patches/server/0168-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch +++ b/patches/server/0170-Burp-delay-burp-after-eating-food-fills-hunger-bar-c.patch @@ -80,10 +80,10 @@ index 648c2510beb162e73aed236a3169d0bbb8fc5050..3563a241c0b697dc0167cf7b1aa73fef } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5f6ae1b46df321ac1ec73007091dec4260732552..faf54de4d563d1cc7d8d5b5b6090ade2801c390b 100644 +index 91620b1d72e8109422946efa97e60c386baa6e4f..8f075735eaefe238cd776e0bb8ee848f2f2b78d4 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -379,6 +379,8 @@ public class PurpurWorldConfig { +@@ -381,6 +381,8 @@ public class PurpurWorldConfig { public boolean playerSleepNearMonsters = false; public boolean playersSkipNight = true; public double playerCriticalDamageMultiplier = 1.5D; @@ -92,7 +92,7 @@ index 5f6ae1b46df321ac1ec73007091dec4260732552..faf54de4d563d1cc7d8d5b5b6090ade2 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -399,6 +401,8 @@ public class PurpurWorldConfig { +@@ -401,6 +403,8 @@ public class PurpurWorldConfig { playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); diff --git a/patches/server/0169-Allow-player-join-full-server-by-permission.patch b/patches/server/0171-Allow-player-join-full-server-by-permission.patch similarity index 90% rename from patches/server/0169-Allow-player-join-full-server-by-permission.patch rename to patches/server/0171-Allow-player-join-full-server-by-permission.patch index 5a7d6b0d1..5ba758362 100644 --- a/patches/server/0169-Allow-player-join-full-server-by-permission.patch +++ b/patches/server/0171-Allow-player-join-full-server-by-permission.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow player join full server by permission diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 44f1048b231e56fae00feb1bcf935c4f65508b69..a170b6b357987d6e1cb42a9b54a2b8d965395db6 100644 +index 5476701392abb1b6fb70ab90e72b59a8bfbef02b..7d57f9b7fc4837f0f44f5c1cb76a5751a15b9254 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -705,7 +705,7 @@ public abstract class PlayerList { +@@ -711,7 +711,7 @@ public abstract class PlayerList { event.disallow(PlayerLoginEvent.Result.KICK_BANNED, io.papermc.paper.adventure.PaperAdventure.asAdventure(ichatmutablecomponent)); // Paper - Adventure } else { // return this.players.size() >= this.maxPlayers && !this.canBypassPlayerLimit(gameprofile) ? IChatBaseComponent.translatable("multiplayer.disconnect.server_full") : null; diff --git a/patches/server/0170-Add-portal-permission-bypass.patch b/patches/server/0172-Add-portal-permission-bypass.patch similarity index 96% rename from patches/server/0170-Add-portal-permission-bypass.patch rename to patches/server/0172-Add-portal-permission-bypass.patch index ffa47d69a..d03a1a846 100644 --- a/patches/server/0170-Add-portal-permission-bypass.patch +++ b/patches/server/0172-Add-portal-permission-bypass.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add portal permission bypass diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 8852740d584ad4bafe14787572c2e238ddf2f584..098256932c2e637726e77bbfcd329f1a329c9969 100644 +index c7393d9c8cb2bc4583cd3715a154f9411cc223e1..81f88c838f35860fdb7d7f62ed1b98f5734c766e 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -199,6 +199,7 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0171-Shulker-spawn-from-bullet-options.patch b/patches/server/0173-Shulker-spawn-from-bullet-options.patch similarity index 96% rename from patches/server/0171-Shulker-spawn-from-bullet-options.patch rename to patches/server/0173-Shulker-spawn-from-bullet-options.patch index 8325cf40a..1c56a2250 100644 --- a/patches/server/0171-Shulker-spawn-from-bullet-options.patch +++ b/patches/server/0173-Shulker-spawn-from-bullet-options.patch @@ -68,10 +68,10 @@ index 79dc7cf5bfe92b4df21d164f39726dfe618331e4..6721432f9cdd11c9658c34f0ac407be2 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b94017de09e67afbf5778867025d57e2cdf8efb8..798160f40deb31511d7d120e66a3464c68203ff3 100644 +index 8f075735eaefe238cd776e0bb8ee848f2f2b78d4..adb3a868bac580e65a72560c863f0d948bc6e5b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1976,6 +1976,11 @@ public class PurpurWorldConfig { +@@ -1978,6 +1978,11 @@ public class PurpurWorldConfig { public double shulkerMaxHealth = 30.0D; public double shulkerScale = 1.0D; public boolean shulkerTakeDamageFromWater = false; @@ -83,7 +83,7 @@ index b94017de09e67afbf5778867025d57e2cdf8efb8..798160f40deb31511d7d120e66a3464c private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -1988,6 +1993,11 @@ public class PurpurWorldConfig { +@@ -1990,6 +1995,11 @@ public class PurpurWorldConfig { shulkerMaxHealth = getDouble("mobs.shulker.attributes.max_health", shulkerMaxHealth); shulkerScale = Mth.clamp(getDouble("mobs.shulker.attributes.scale", shulkerScale), 0.0625D, Shulker.MAX_SCALE); shulkerTakeDamageFromWater = getBoolean("mobs.shulker.takes-damage-from-water", shulkerTakeDamageFromWater); diff --git a/patches/server/0172-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0174-Eating-glow-berries-adds-glow-effect.patch similarity index 95% rename from patches/server/0172-Eating-glow-berries-adds-glow-effect.patch rename to patches/server/0174-Eating-glow-berries-adds-glow-effect.patch index 3b9c1f7d9..67116c030 100644 --- a/patches/server/0172-Eating-glow-berries-adds-glow-effect.patch +++ b/patches/server/0174-Eating-glow-berries-adds-glow-effect.patch @@ -18,10 +18,10 @@ index bf7d12594375d5b252db540a6d669a6e6aca7de8..580bd63fdbf9555f867362d3c1f39f41 public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item SOUL_CAMPFIRE = registerBlock( diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4d37fdd48a36e2608e192ca115f3a15c7fc9064b..b43e6fe2556595ab05e69c17eae3cca628462ed8 100644 +index adb3a868bac580e65a72560c863f0d948bc6e5b5..35f0bd3947ef9152ee0392d87a1d2abb64ca6d43 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -211,6 +211,7 @@ public class PurpurWorldConfig { +@@ -213,6 +213,7 @@ public class PurpurWorldConfig { public int enderPearlCooldown = 20; public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; @@ -29,7 +29,7 @@ index 4d37fdd48a36e2608e192ca115f3a15c7fc9064b..b43e6fe2556595ab05e69c17eae3cca6 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -256,6 +257,7 @@ public class PurpurWorldConfig { +@@ -258,6 +259,7 @@ public class PurpurWorldConfig { enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown); enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); diff --git a/patches/server/0173-Option-to-make-drowned-break-doors.patch b/patches/server/0175-Option-to-make-drowned-break-doors.patch similarity index 92% rename from patches/server/0173-Option-to-make-drowned-break-doors.patch rename to patches/server/0175-Option-to-make-drowned-break-doors.patch index c29e6352e..180e526c8 100644 --- a/patches/server/0173-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0175-Option-to-make-drowned-break-doors.patch @@ -17,10 +17,10 @@ index 1f41e4a88fb41347b8b1ac6b3d1c454ad35ebfc4..ec00c6b2a8b6a5e0ef030d65f86d4a7d this.targetSelector.addGoal(1, new HurtByTargetGoal(this, Drowned.class).setAlertOthers(ZombifiedPiglin.class)); this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (target, world) -> this.okTarget(target))); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f9df0bc403a19f4ddedf95907928d9f3003804ab..c5bcf86c2fcbcb5048ee73f9aba848867eb3c3c1 100644 +index 35f0bd3947ef9152ee0392d87a1d2abb64ca6d43..0a490f119ab9ca4fd2c1237b8bc0ee8edcbe1c4f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1066,6 +1066,7 @@ public class PurpurWorldConfig { +@@ -1068,6 +1068,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -28,7 +28,7 @@ index f9df0bc403a19f4ddedf95907928d9f3003804ab..c5bcf86c2fcbcb5048ee73f9aba84886 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1082,6 +1083,7 @@ public class PurpurWorldConfig { +@@ -1084,6 +1085,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); diff --git a/patches/server/0174-Configurable-hunger-starvation-damage.patch b/patches/server/0176-Configurable-hunger-starvation-damage.patch similarity index 92% rename from patches/server/0174-Configurable-hunger-starvation-damage.patch rename to patches/server/0176-Configurable-hunger-starvation-damage.patch index 289a59df7..8d5648761 100644 --- a/patches/server/0174-Configurable-hunger-starvation-damage.patch +++ b/patches/server/0176-Configurable-hunger-starvation-damage.patch @@ -18,10 +18,10 @@ index 4f8ee2e5db3352306f3c035052866d95630f4aaf..b8b0b89b7f0a21ecff4ab6286f8a114e this.tickTimer = 0; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dceae3b39f761a6e34dbcfb316cfa1704ada7729..a67cc3a25596e01e12b83ee6269f00a5e2e33324 100644 +index 0a490f119ab9ca4fd2c1237b8bc0ee8edcbe1c4f..8c065c6a4c26cd048fbaebb47f844837fe772b0c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2684,4 +2684,9 @@ public class PurpurWorldConfig { +@@ -2686,4 +2686,9 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); } diff --git a/patches/server/0175-Enhance-SysoutCatcher.patch b/patches/server/0177-Enhance-SysoutCatcher.patch similarity index 100% rename from patches/server/0175-Enhance-SysoutCatcher.patch rename to patches/server/0177-Enhance-SysoutCatcher.patch diff --git a/patches/server/0176-Add-uptime-command.patch b/patches/server/0178-Add-uptime-command.patch similarity index 98% rename from patches/server/0176-Add-uptime-command.patch rename to patches/server/0178-Add-uptime-command.patch index 5fc1c8e5c..cbd163144 100644 --- a/patches/server/0176-Add-uptime-command.patch +++ b/patches/server/0178-Add-uptime-command.patch @@ -17,7 +17,7 @@ index 5d94b71bd54f99040b76cca74964a32d55339767..0090243f7e1a966534e489cebb88d71d } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3c28590feaec355d94b1a8c7228c3b62e9d815ad..ec8af36c230e36a59fe8a02a868fb36a8212cd8b 100644 +index 509175e1dd9f64d1a4f343cc21e0dc6d04dea68d..11a93d772164bd104be860ac9e8855ba5b6904c3 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -314,6 +314,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { // Paper if (!level.isClientSide()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a67cc3a25596e01e12b83ee6269f00a5e2e33324..94ef6f963ecd749b3b69e74559edc0c9cd0e1e45 100644 +index 8c065c6a4c26cd048fbaebb47f844837fe772b0c..ab67708d127cb4309d40969fb8064360da5199b8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -461,6 +461,280 @@ public class PurpurWorldConfig { +@@ -463,6 +463,280 @@ public class PurpurWorldConfig { snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); } diff --git a/patches/server/0178-Store-placer-on-Block-when-placed.patch b/patches/server/0180-Store-placer-on-Block-when-placed.patch similarity index 100% rename from patches/server/0178-Store-placer-on-Block-when-placed.patch rename to patches/server/0180-Store-placer-on-Block-when-placed.patch diff --git a/patches/server/0179-Summoner-API.patch b/patches/server/0181-Summoner-API.patch similarity index 100% rename from patches/server/0179-Summoner-API.patch rename to patches/server/0181-Summoner-API.patch diff --git a/patches/server/0180-Customizable-sleeping-actionbar-messages.patch b/patches/server/0182-Customizable-sleeping-actionbar-messages.patch similarity index 95% rename from patches/server/0180-Customizable-sleeping-actionbar-messages.patch rename to patches/server/0182-Customizable-sleeping-actionbar-messages.patch index e3cd8237b..12cbdc2a0 100644 --- a/patches/server/0180-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0182-Customizable-sleeping-actionbar-messages.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3f43f52a977b4e7908021dd820fb1f818a4614a9..70484e722a1cccb626edc55addc302b587c25c8e 100644 +index b4b0579b84ae26f8ca2d0ab34e8bc963b09cf93e..c866bf67b28e3a40c76837145a4ab4abcebd72dd 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1114,11 +1114,27 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -38,10 +38,10 @@ index 3f43f52a977b4e7908021dd820fb1f818a4614a9..70484e722a1cccb626edc55addc302b5 } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 2300d1e1b283efb897afba4cccd1d697400677a1..40181213c200d2180f3001061358730298f64b7f 100644 +index ab8cb645cd388c3db395fadfb932ca414cb90726..7bfb43f9163e690069249fb1fa401ec06a52bbf1 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1838,7 +1838,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1839,7 +1839,19 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple }); if (!this.serverLevel().canSleepThroughNights()) { diff --git a/patches/server/0181-option-to-disable-shulker-box-items-from-dropping-co.patch b/patches/server/0183-option-to-disable-shulker-box-items-from-dropping-co.patch similarity index 92% rename from patches/server/0181-option-to-disable-shulker-box-items-from-dropping-co.patch rename to patches/server/0183-option-to-disable-shulker-box-items-from-dropping-co.patch index cce03c5b2..123ebbe04 100644 --- a/patches/server/0181-option-to-disable-shulker-box-items-from-dropping-co.patch +++ b/patches/server/0183-option-to-disable-shulker-box-items-from-dropping-co.patch @@ -18,10 +18,10 @@ index b5b7f1db21a22f16f06ced775c8173f90e36a91c..33d9b5fb6897fefb0f7b9009df733934 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e19b5e1611a78c8dbd614797d8949c329f507e6..d703c467a3d9d1bee5e91b3a1c022cf6fc83497a 100644 +index ab67708d127cb4309d40969fb8064360da5199b8..0d6385d74468307d4b9e151bf1ce8e0eaf86220b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -212,6 +212,7 @@ public class PurpurWorldConfig { +@@ -214,6 +214,7 @@ public class PurpurWorldConfig { public int enderPearlCooldownCreative = 20; public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; @@ -29,7 +29,7 @@ index 8e19b5e1611a78c8dbd614797d8949c329f507e6..d703c467a3d9d1bee5e91b3a1c022cf6 private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -258,6 +259,7 @@ public class PurpurWorldConfig { +@@ -260,6 +261,7 @@ public class PurpurWorldConfig { enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); diff --git a/patches/server/0182-Big-dripleaf-tilt-delay.patch b/patches/server/0184-Big-dripleaf-tilt-delay.patch similarity index 94% rename from patches/server/0182-Big-dripleaf-tilt-delay.patch rename to patches/server/0184-Big-dripleaf-tilt-delay.patch index 7274621fe..f9e982b45 100644 --- a/patches/server/0182-Big-dripleaf-tilt-delay.patch +++ b/patches/server/0184-Big-dripleaf-tilt-delay.patch @@ -24,10 +24,10 @@ index 9e3f1441d62128535112621bf259c24f1a90595b..2535e6d71b690f8dfde41a7d9cb76b6f if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d703c467a3d9d1bee5e91b3a1c022cf6fc83497a..c2ba7e7e6d927635979531f6ef08643bcbac5bc0 100644 +index 0d6385d74468307d4b9e151bf1ce8e0eaf86220b..366f19dd6622dec26d856ca1e7f0ee42f37da038 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -776,6 +776,22 @@ public class PurpurWorldConfig { +@@ -778,6 +778,22 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0183-Player-ridable-in-water-option.patch b/patches/server/0185-Player-ridable-in-water-option.patch similarity index 91% rename from patches/server/0183-Player-ridable-in-water-option.patch rename to patches/server/0185-Player-ridable-in-water-option.patch index c1d6703ca..aa55c4630 100644 --- a/patches/server/0183-Player-ridable-in-water-option.patch +++ b/patches/server/0185-Player-ridable-in-water-option.patch @@ -23,10 +23,10 @@ index 81f88c838f35860fdb7d7f62ed1b98f5734c766e..d7d5ce7ea223248ebda0a3e4b104baed if (!this.isPassenger() && this.onGround() && !this.isInWater() && !this.isInPowderSnow) { if (this.getShoulderEntityLeft().isEmpty()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6bb5b805a3f35a07607b6766e3ca4a1abe9c3f06..07688502620716592971226105149f55a7489758 100644 +index 366f19dd6622dec26d856ca1e7f0ee42f37da038..e70f67fe1c038490983026fc21ccaed8b761d279 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -385,6 +385,7 @@ public class PurpurWorldConfig { +@@ -387,6 +387,7 @@ public class PurpurWorldConfig { public double playerCriticalDamageMultiplier = 1.5D; public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; @@ -34,7 +34,7 @@ index 6bb5b805a3f35a07607b6766e3ca4a1abe9c3f06..07688502620716592971226105149f55 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -407,6 +408,7 @@ public class PurpurWorldConfig { +@@ -409,6 +410,7 @@ public class PurpurWorldConfig { playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); diff --git a/patches/server/0184-Config-to-disable-Enderman-teleport-on-projectile-hi.patch b/patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch similarity index 92% rename from patches/server/0184-Config-to-disable-Enderman-teleport-on-projectile-hi.patch rename to patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch index 53b99cd62..e7beeef5d 100644 --- a/patches/server/0184-Config-to-disable-Enderman-teleport-on-projectile-hi.patch +++ b/patches/server/0186-Config-to-disable-Enderman-teleport-on-projectile-hi.patch @@ -17,10 +17,10 @@ index 737c3367faee2286984c8e7d161b128d7b6632a5..b8fe9665bed428e8e97d1b8a6527cbef for (int i = 0; i < 64; ++i) { if (this.teleport()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 07688502620716592971226105149f55a7489758..12da1422d9a5fe4a742856d2cac8e77aa3a59818 100644 +index e70f67fe1c038490983026fc21ccaed8b761d279..8858336b39b97329457f7ee5f23139f1cc796330 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1440,6 +1440,7 @@ public class PurpurWorldConfig { +@@ -1442,6 +1442,7 @@ public class PurpurWorldConfig { public boolean endermanAggroEndermites = true; public boolean endermanAggroEndermitesOnlyIfPlayerSpawned = false; public boolean endermanDisableStareAggro = false; @@ -28,7 +28,7 @@ index 07688502620716592971226105149f55a7489758..12da1422d9a5fe4a742856d2cac8e77a private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -1462,6 +1463,7 @@ public class PurpurWorldConfig { +@@ -1464,6 +1465,7 @@ public class PurpurWorldConfig { endermanAggroEndermites = getBoolean("mobs.enderman.aggressive-towards-endermites", endermanAggroEndermites); endermanAggroEndermitesOnlyIfPlayerSpawned = getBoolean("mobs.enderman.aggressive-towards-endermites-only-spawned-by-player-thrown-ender-pearls", endermanAggroEndermitesOnlyIfPlayerSpawned); endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); diff --git a/patches/server/0185-Add-compass-command.patch b/patches/server/0187-Add-compass-command.patch similarity index 97% rename from patches/server/0185-Add-compass-command.patch rename to patches/server/0187-Add-compass-command.patch index 9fbf23501..a61a55ceb 100644 --- a/patches/server/0185-Add-compass-command.patch +++ b/patches/server/0187-Add-compass-command.patch @@ -17,7 +17,7 @@ index 0090243f7e1a966534e489cebb88d71d9cbab7bb..d8ee4422a13c7f09b84e9bbe8b57f0c1 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 40181213c200d2180f3001061358730298f64b7f..5bbf3bb49d47b5b4acce00af4b9cdcffaa3be383 100644 +index 7bfb43f9163e690069249fb1fa401ec06a52bbf1..9c5c5912931ce96bd61d08922d8eb55143639f0d 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -331,6 +331,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -44,7 +44,7 @@ index 40181213c200d2180f3001061358730298f64b7f..5bbf3bb49d47b5b4acce00af4b9cdcff } private void saveParentVehicle(CompoundTag nbt) { -@@ -3467,5 +3470,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3468,5 +3471,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void tpsBar(boolean tpsBar) { this.tpsBar = tpsBar; } @@ -89,10 +89,10 @@ index 8d41d9a8a2b5b7946c13b8c3ce961fea1a2bc728..e8dc97694f59cfce67e2fe061868a9f0 hideHiddenPlayersFromEntitySelector = getBoolean("settings.command.hide-hidden-players-from-entity-selector", hideHiddenPlayersFromEntitySelector); uptimeFormat = getString("settings.command.uptime.format", uptimeFormat); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 12da1422d9a5fe4a742856d2cac8e77aa3a59818..a563b33677d3067030d733aa5d66fc3f39eab782 100644 +index 8858336b39b97329457f7ee5f23139f1cc796330..b621943e9cdeaa6a547216c9525978e6d0f7c02f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -213,6 +213,7 @@ public class PurpurWorldConfig { +@@ -215,6 +215,7 @@ public class PurpurWorldConfig { public float enderPearlEndermiteChance = 0.05F; public int glowBerriesEatGlowDuration = 0; public boolean shulkerBoxItemDropContentsWhenDestroyed = true; @@ -100,7 +100,7 @@ index 12da1422d9a5fe4a742856d2cac8e77aa3a59818..a563b33677d3067030d733aa5d66fc3f private void itemSettings() { itemImmuneToCactus.clear(); getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { -@@ -260,6 +261,7 @@ public class PurpurWorldConfig { +@@ -262,6 +263,7 @@ public class PurpurWorldConfig { enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); diff --git a/patches/server/0186-Toggle-for-kinetic-damage.patch b/patches/server/0188-Toggle-for-kinetic-damage.patch similarity index 88% rename from patches/server/0186-Toggle-for-kinetic-damage.patch rename to patches/server/0188-Toggle-for-kinetic-damage.patch index e1f628c08..e6f83c5c8 100644 --- a/patches/server/0186-Toggle-for-kinetic-damage.patch +++ b/patches/server/0188-Toggle-for-kinetic-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3177c786e927b8979da74c3144bee9d523155bc1..125b55068d017b96aa8410bf1936e71b593ce43f 100644 +index 4c5f573594c53edee96b498fa0852a3dee59cef8..fd18e01249d9b9958200ee16efaeeaf11360bafe 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -3178,6 +3178,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -17,10 +17,10 @@ index 3177c786e927b8979da74c3144bee9d523155bc1..125b55068d017b96aa8410bf1936e71b } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a563b33677d3067030d733aa5d66fc3f39eab782..70bedb84753cf404631a8747f06758ba1fa93e81 100644 +index b621943e9cdeaa6a547216c9525978e6d0f7c02f..ff6da1fcbae5c41aeaf4a21eee77541f5e80df43 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -180,11 +180,13 @@ public class PurpurWorldConfig { +@@ -182,11 +182,13 @@ public class PurpurWorldConfig { public double elytraDamageMultiplyBySpeed = 0; public int elytraDamagePerFireworkBoost = 0; public int elytraDamagePerTridentBoost = 0; diff --git a/patches/server/0187-Add-Option-for-disable-observer-clocks.patch b/patches/server/0189-Add-Option-for-disable-observer-clocks.patch similarity index 93% rename from patches/server/0187-Add-Option-for-disable-observer-clocks.patch rename to patches/server/0189-Add-Option-for-disable-observer-clocks.patch index a12806015..4cbb1e122 100644 --- a/patches/server/0187-Add-Option-for-disable-observer-clocks.patch +++ b/patches/server/0189-Add-Option-for-disable-observer-clocks.patch @@ -18,10 +18,10 @@ index 93ed9406c34804831b86d006dbd6087db9948f08..26cb9990b91991e0a2eadc2dcbbf229e } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 35796c711fa4aaf2cd456b3f90cfafba1a27f886..5a9a4a78be81abbd49e9c464864825265f5cb58b 100644 +index ff6da1fcbae5c41aeaf4a21eee77541f5e80df43..7066d1b294ef907cdfe49359a610a48171fb1ba8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -360,6 +360,11 @@ public class PurpurWorldConfig { +@@ -362,6 +362,11 @@ public class PurpurWorldConfig { villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); } diff --git a/patches/server/0188-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch similarity index 93% rename from patches/server/0188-Customizeable-Zombie-Villager-curing-times.patch rename to patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch index a068023d0..ec58ffd85 100644 --- a/patches/server/0188-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0190-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index 7298ba35cb27269e778de6b265933baed3077b36..623e8ef53d6336b3e3c83fd37eda1324 return InteractionResult.SUCCESS_SERVER; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5a9a4a78be81abbd49e9c464864825265f5cb58b..15dd9e812f96652314be7f381ef5db5882fdffe0 100644 +index 7066d1b294ef907cdfe49359a610a48171fb1ba8..5b0bea76d109d7dcf3fe20aab5e2d0e7efb87713 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2942,6 +2942,8 @@ public class PurpurWorldConfig { +@@ -2944,6 +2944,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; @@ -30,7 +30,7 @@ index 5a9a4a78be81abbd49e9c464864825265f5cb58b..15dd9e812f96652314be7f381ef5db58 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -2958,6 +2960,8 @@ public class PurpurWorldConfig { +@@ -2960,6 +2962,8 @@ public class PurpurWorldConfig { zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); diff --git a/patches/server/0189-Option-for-sponges-to-work-on-lava-and-mud.patch b/patches/server/0191-Option-for-sponges-to-work-on-lava-and-mud.patch similarity index 95% rename from patches/server/0189-Option-for-sponges-to-work-on-lava-and-mud.patch rename to patches/server/0191-Option-for-sponges-to-work-on-lava-and-mud.patch index 99fe0ca26..c3eb1f40e 100644 --- a/patches/server/0189-Option-for-sponges-to-work-on-lava-and-mud.patch +++ b/patches/server/0191-Option-for-sponges-to-work-on-lava-and-mud.patch @@ -30,10 +30,10 @@ index d82c62cdb219cee0bbc3083e38e18b7615ad09ef..4c5bc71fef307d13b640e534ace0b441 if (!iblockdata.is(Blocks.KELP) && !iblockdata.is(Blocks.KELP_PLANT) && !iblockdata.is(Blocks.SEAGRASS) && !iblockdata.is(Blocks.TALL_SEAGRASS)) { return false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 15dd9e812f96652314be7f381ef5db5882fdffe0..c99081ab84abc507523060a667e5978c711b2ee1 100644 +index 5b0bea76d109d7dcf3fe20aab5e2d0e7efb87713..019ca3f4a506b5b964f78b4efb79111ea1b5fd76 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -962,9 +962,13 @@ public class PurpurWorldConfig { +@@ -964,9 +964,13 @@ public class PurpurWorldConfig { public int spongeAbsorptionArea = 65; public int spongeAbsorptionRadius = 6; diff --git a/patches/server/0190-Toggle-for-Wither-s-spawn-sound.patch b/patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch similarity index 91% rename from patches/server/0190-Toggle-for-Wither-s-spawn-sound.patch rename to patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch index 73470b484..a1f0fd19f 100644 --- a/patches/server/0190-Toggle-for-Wither-s-spawn-sound.patch +++ b/patches/server/0192-Toggle-for-Wither-s-spawn-sound.patch @@ -18,10 +18,10 @@ index 4e59cbd95d2ee1b69a38fc23015a6262d1a2c53b..1857e0899b32a078bd0e9e4b784ea60b // worldserver.globalLevelEvent(1023, new BlockPosition(this), 0); int viewDistance = world.getCraftServer().getViewDistance() * 16; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c99081ab84abc507523060a667e5978c711b2ee1..2d7cce0181138191055da707fcdd1c7504c96675 100644 +index 019ca3f4a506b5b964f78b4efb79111ea1b5fd76..28a444c0ed6b8dffedf00a4bc95d6351d4a08212 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2777,6 +2777,7 @@ public class PurpurWorldConfig { +@@ -2779,6 +2779,7 @@ public class PurpurWorldConfig { public boolean witherTakeDamageFromWater = false; public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; @@ -29,7 +29,7 @@ index c99081ab84abc507523060a667e5978c711b2ee1..2d7cce0181138191055da707fcdd1c75 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2799,6 +2800,7 @@ public class PurpurWorldConfig { +@@ -2801,6 +2802,7 @@ public class PurpurWorldConfig { witherTakeDamageFromWater = getBoolean("mobs.wither.takes-damage-from-water", witherTakeDamageFromWater); witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); diff --git a/patches/server/0191-Cactus-breaks-from-solid-neighbors-config.patch b/patches/server/0193-Cactus-breaks-from-solid-neighbors-config.patch similarity index 92% rename from patches/server/0191-Cactus-breaks-from-solid-neighbors-config.patch rename to patches/server/0193-Cactus-breaks-from-solid-neighbors-config.patch index f7ee028aa..afb026cda 100644 --- a/patches/server/0191-Cactus-breaks-from-solid-neighbors-config.patch +++ b/patches/server/0193-Cactus-breaks-from-solid-neighbors-config.patch @@ -18,10 +18,10 @@ index c045b1cccf0047dbef8c04d5a28d31d53389054f..bbfd8f5d404d0add94f0d8ac89a29646 return false; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2d7cce0181138191055da707fcdd1c7504c96675..20cc04b4d9ce8f08ed620a26e501afd1cb8ffd6f 100644 +index 28a444c0ed6b8dffedf00a4bc95d6351d4a08212..a2ee88ca23bbaad1e4566ae3b18d0ef549636580 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -803,6 +803,11 @@ public class PurpurWorldConfig { +@@ -805,6 +805,11 @@ public class PurpurWorldConfig { }); } diff --git a/patches/server/0192-Config-to-remove-curse-of-binding-with-weakness.patch b/patches/server/0194-Config-to-remove-curse-of-binding-with-weakness.patch similarity index 92% rename from patches/server/0192-Config-to-remove-curse-of-binding-with-weakness.patch rename to patches/server/0194-Config-to-remove-curse-of-binding-with-weakness.patch index 639b33c40..e1d3da093 100644 --- a/patches/server/0192-Config-to-remove-curse-of-binding-with-weakness.patch +++ b/patches/server/0194-Config-to-remove-curse-of-binding-with-weakness.patch @@ -18,10 +18,10 @@ index 6c0b6abb1698fac9bb902f695b725d4ab783ee90..091e3c3514fcb378b68098114106d09f } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 20cc04b4d9ce8f08ed620a26e501afd1cb8ffd6f..c85acd8ceaa2b36a7fcf298076016c682c987871 100644 +index a2ee88ca23bbaad1e4566ae3b18d0ef549636580..eb09366f743a2f471f126259e2ef608d14639377 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -395,6 +395,7 @@ public class PurpurWorldConfig { +@@ -397,6 +397,7 @@ public class PurpurWorldConfig { public int playerBurpDelay = 10; public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; @@ -29,7 +29,7 @@ index 20cc04b4d9ce8f08ed620a26e501afd1cb8ffd6f..c85acd8ceaa2b36a7fcf298076016c68 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -418,6 +419,7 @@ public class PurpurWorldConfig { +@@ -420,6 +421,7 @@ public class PurpurWorldConfig { playerBurpDelay = getInt("gameplay-mechanics.player.burp-delay", playerBurpDelay); playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); diff --git a/patches/server/0193-Conduit-behavior-configuration.patch b/patches/server/0195-Conduit-behavior-configuration.patch similarity index 98% rename from patches/server/0193-Conduit-behavior-configuration.patch rename to patches/server/0195-Conduit-behavior-configuration.patch index de289d503..9de8511fb 100644 --- a/patches/server/0193-Conduit-behavior-configuration.patch +++ b/patches/server/0195-Conduit-behavior-configuration.patch @@ -97,10 +97,10 @@ index c1759aeb3e6ad0e4eb66cba3da1b120dd1dce812..1a91bc2e422db0eba65694ac046f1b36 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d86c8a35219291c20ad8128a3e9316a4d8ca772..1df14efb834bb2f434e16549c43b48eb2a195b22 100644 +index eb09366f743a2f471f126259e2ef608d14639377..b8be7d5fb350a7a782404abbae295e313f9948ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3011,4 +3011,27 @@ public class PurpurWorldConfig { +@@ -3013,4 +3013,27 @@ public class PurpurWorldConfig { private void hungerSettings() { hungerStarvationDamage = (float) getDouble("hunger.starvation-damage", hungerStarvationDamage); } diff --git a/patches/server/0194-Cauldron-fill-chances.patch b/patches/server/0196-Cauldron-fill-chances.patch similarity index 96% rename from patches/server/0194-Cauldron-fill-chances.patch rename to patches/server/0196-Cauldron-fill-chances.patch index 4aef2f98c..e54387799 100644 --- a/patches/server/0194-Cauldron-fill-chances.patch +++ b/patches/server/0196-Cauldron-fill-chances.patch @@ -47,10 +47,10 @@ index 53cea36ec931de89e0060613acf87beb51dc16ec..fd5489993dca0f940da69e9163f78e5c if (dripChance < f1) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fc6ebb8ee607b8d54d5b66c119161e59c11b9ea8..4f3a1e897834f1ea7c4de04651489351f6407be3 100644 +index b8be7d5fb350a7a782404abbae295e313f9948ed..87374995aef0061ffbd64a1ee7a88e21935e6759 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3034,4 +3034,15 @@ public class PurpurWorldConfig { +@@ -3036,4 +3036,15 @@ public class PurpurWorldConfig { }); conduitBlocks = conduitBlockList.toArray(Block[]::new); } diff --git a/patches/server/0195-Config-to-allow-mobs-to-pathfind-over-rails.patch b/patches/server/0197-Config-to-allow-mobs-to-pathfind-over-rails.patch similarity index 92% rename from patches/server/0195-Config-to-allow-mobs-to-pathfind-over-rails.patch rename to patches/server/0197-Config-to-allow-mobs-to-pathfind-over-rails.patch index 00b28c9f3..b9b8046b0 100644 --- a/patches/server/0195-Config-to-allow-mobs-to-pathfind-over-rails.patch +++ b/patches/server/0197-Config-to-allow-mobs-to-pathfind-over-rails.patch @@ -18,10 +18,10 @@ index c84fd369d92932903c76bb2012602617d3e2d213..f6291ff377b38cb84692a9fd564b4b1a && pathType != PathType.POWDER_SNOW) { node = this.tryJumpOn(x, y, z, maxYStep, prevFeetY, direction, nodeType, mutableBlockPos); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 4f3a1e897834f1ea7c4de04651489351f6407be3..aa49d0b5c1e21172af898648a0fe1ff65da7d7a9 100644 +index 87374995aef0061ffbd64a1ee7a88e21935e6759..8392bed4344d6880b2e2a00e42e12b705095b3cd 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -138,6 +138,7 @@ public class PurpurWorldConfig { +@@ -139,6 +139,7 @@ public class PurpurWorldConfig { public boolean imposeTeleportRestrictionsOnEndPortals = false; public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; @@ -29,7 +29,7 @@ index 4f3a1e897834f1ea7c4de04651489351f6407be3..aa49d0b5c1e21172af898648a0fe1ff6 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -158,6 +159,7 @@ public class PurpurWorldConfig { +@@ -160,6 +161,7 @@ public class PurpurWorldConfig { imposeTeleportRestrictionsOnEndPortals = getBoolean("gameplay-mechanics.impose-teleport-restrictions-on-end-portals", imposeTeleportRestrictionsOnEndPortals); tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); mobsBlindnessMultiplier = getDouble("gameplay-mechanics.entity-blindness-multiplier", mobsBlindnessMultiplier); diff --git a/patches/server/0196-Shulker-change-color-with-dye.patch b/patches/server/0198-Shulker-change-color-with-dye.patch similarity index 93% rename from patches/server/0196-Shulker-change-color-with-dye.patch rename to patches/server/0198-Shulker-change-color-with-dye.patch index 604adf79d..799ddb9f6 100644 --- a/patches/server/0196-Shulker-change-color-with-dye.patch +++ b/patches/server/0198-Shulker-change-color-with-dye.patch @@ -29,10 +29,10 @@ index 79bf3d04fa2c7bcadfff08dc9a464e589866f7db..131c7d7e85a3d9ac0e485fd8e56bd419 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aa49d0b5c1e21172af898648a0fe1ff65da7d7a9..cce5813f0624fabf8a9e38d2eb9d1d1d63f15b70 100644 +index 8392bed4344d6880b2e2a00e42e12b705095b3cd..cff0dfea430955ea4211d06ea2cff8db7ca4159a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2303,6 +2303,7 @@ public class PurpurWorldConfig { +@@ -2305,6 +2305,7 @@ public class PurpurWorldConfig { public double shulkerSpawnFromBulletNearbyRange = 8.0D; public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; @@ -40,7 +40,7 @@ index aa49d0b5c1e21172af898648a0fe1ff65da7d7a9..cce5813f0624fabf8a9e38d2eb9d1d1d private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2320,6 +2321,7 @@ public class PurpurWorldConfig { +@@ -2322,6 +2323,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyRange = getDouble("mobs.shulker.spawn-from-bullet.nearby-range", shulkerSpawnFromBulletNearbyRange); shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); diff --git a/patches/server/0197-Extended-OfflinePlayer-API.patch b/patches/server/0199-Extended-OfflinePlayer-API.patch similarity index 98% rename from patches/server/0197-Extended-OfflinePlayer-API.patch rename to patches/server/0199-Extended-OfflinePlayer-API.patch index 7b04e2917..56261c317 100644 --- a/patches/server/0197-Extended-OfflinePlayer-API.patch +++ b/patches/server/0199-Extended-OfflinePlayer-API.patch @@ -243,10 +243,10 @@ index 94ca0407303c4493ab4928b12ec6ecc75aaca549..a138e1b6b66d99f2035de054137a607a + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 7f10bfe1d28bbc5b32b7554129552088711ebce5..c7bdded671d72f9b4915292b8c8752e7d73c2b38 100644 +index d936cc20fc2b06d72531747176d7578ddf83dd14..db62bab7ef0fbd53e1840eb8b87699ed9d08fb01 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2787,6 +2787,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2785,6 +2785,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return this.getHandle().getAbilities().walkingSpeed * 2f; } diff --git a/patches/server/0198-Added-the-ability-to-add-combustible-items.patch b/patches/server/0200-Added-the-ability-to-add-combustible-items.patch similarity index 97% rename from patches/server/0198-Added-the-ability-to-add-combustible-items.patch rename to patches/server/0200-Added-the-ability-to-add-combustible-items.patch index d52e9e18d..48e30c9f5 100644 --- a/patches/server/0198-Added-the-ability-to-add-combustible-items.patch +++ b/patches/server/0200-Added-the-ability-to-add-combustible-items.patch @@ -37,7 +37,7 @@ index 61ef08ac941b1e8988d001241780d3a1582f7a2d..2eab5b43ab654966d26424597c1f3baa FuelValues(Object2IntSortedMap fuelValues) { this.values = fuelValues; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 6e92cc1832510a9ed776f54e43d596fe4f8831d9..7bc58c693db720ca75dc4925bfb8d41aa69f5b90 100644 +index c08ed484a5fd32ce06855eab786e2b222ccfa2a3..a8ae9eab152e5d3dfe413708646265587e297910 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1617,6 +1617,22 @@ public final class CraftServer implements Server { diff --git a/patches/server/0199-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch similarity index 90% rename from patches/server/0199-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch rename to patches/server/0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 1107115d6..960b0ff65 100644 --- a/patches/server/0199-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0201-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 70484e722a1cccb626edc55addc302b587c25c8e..adfd2ef5688049d039faa47b1616f1b382428d5b 100644 +index c866bf67b28e3a40c76837145a4ab4abcebd72dd..c99ac408f5e3cfa7b56633a7768c60fd16227485 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1274,6 +1274,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -25,10 +25,10 @@ index 70484e722a1cccb626edc55addc302b587c25c8e..adfd2ef5688049d039faa47b1616f1b3 // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1894c6c3b2949d8d7d3bf537750c57fcc44168c2..45cd8aa8f659538020980ba35c8126279cc3a775 100644 +index cff0dfea430955ea4211d06ea2cff8db7ca4159a..316beb19c6ee2e5b1f2bd1e7b849992c69a26b94 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -139,6 +139,8 @@ public class PurpurWorldConfig { +@@ -140,6 +140,8 @@ public class PurpurWorldConfig { public boolean tickFluids = true; public double mobsBlindnessMultiplier = 1; public boolean mobsIgnoreRails = false; @@ -37,7 +37,7 @@ index 1894c6c3b2949d8d7d3bf537750c57fcc44168c2..45cd8aa8f659538020980ba35c812627 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -160,6 +162,8 @@ public class PurpurWorldConfig { +@@ -162,6 +164,8 @@ public class PurpurWorldConfig { tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); mobsBlindnessMultiplier = getDouble("gameplay-mechanics.entity-blindness-multiplier", mobsBlindnessMultiplier); mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); diff --git a/patches/server/0200-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch b/patches/server/0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch similarity index 94% rename from patches/server/0200-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch rename to patches/server/0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch index 0031b0cf0..c2e00aabc 100644 --- a/patches/server/0200-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch +++ b/patches/server/0202-Chance-for-azalea-blocks-to-grow-into-trees-naturall.patch @@ -50,10 +50,10 @@ index 66a07f7cbf1c1d6ecbe055cbf4f63eb07d93e90c..63d67d46d30ed8ed57cdc0e59b6cb6b7 .sound(SoundType.FLOWERING_AZALEA) .noOcclusion() diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 91debf506c8f1ece992586a1d0328304e358d88a..0a4626ea59c854d072972e78f06df3808797503f 100644 +index 316beb19c6ee2e5b1f2bd1e7b849992c69a26b94..3083bfce93ea0b059c0abe823920eca75872f916 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -763,6 +763,11 @@ public class PurpurWorldConfig { +@@ -765,6 +765,11 @@ public class PurpurWorldConfig { anvilColorsUseMiniMessage = getBoolean("blocks.anvil.use-mini-message", anvilColorsUseMiniMessage); } @@ -65,7 +65,7 @@ index 91debf506c8f1ece992586a1d0328304e358d88a..0a4626ea59c854d072972e78f06df380 public int beaconLevelOne = 20; public int beaconLevelTwo = 30; public int beaconLevelThree = 40; -@@ -900,6 +905,11 @@ public class PurpurWorldConfig { +@@ -902,6 +907,11 @@ public class PurpurWorldConfig { farmlandTramplingFeatherFalling = getBoolean("blocks.farmland.feather-fall-distance-affects-trampling", farmlandTramplingFeatherFalling); } diff --git a/patches/server/0201-Shift-right-click-to-use-exp-for-mending.patch b/patches/server/0203-Shift-right-click-to-use-exp-for-mending.patch similarity index 92% rename from patches/server/0201-Shift-right-click-to-use-exp-for-mending.patch rename to patches/server/0203-Shift-right-click-to-use-exp-for-mending.patch index 138c663db..b0a35cb5f 100644 --- a/patches/server/0201-Shift-right-click-to-use-exp-for-mending.patch +++ b/patches/server/0203-Shift-right-click-to-use-exp-for-mending.patch @@ -36,10 +36,10 @@ index 7315e604a2f9cb068eb5bbca744e44eeabac09c9..88eb3774f688bcff383efa7f113bd0b1 + // Purpur end } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e3a67829d6d3e2594387e7e02ad619dc373f305a..ec0849f3b26a8571323d1aa2be5357d00e45a63a 100644 +index 37515387f91c9493dd259b677e9a6aa2dc19912d..35b9951554a41213003badfa38e6db7825097055 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2092,6 +2092,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2093,6 +2093,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl boolean cancelled; if (movingobjectposition == null || movingobjectposition.getType() != HitResult.Type.BLOCK) { @@ -48,10 +48,10 @@ index e3a67829d6d3e2594387e7e02ad619dc373f305a..ec0849f3b26a8571323d1aa2be5357d0 cancelled = event.useItemInHand() == Event.Result.DENY; } else { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index feabdb3fec0a8bb16cfe09e5f857d7b86211b234..7f9b948191a2160b8e1b11ff04468f47bf1a498e 100644 +index 3083bfce93ea0b059c0abe823920eca75872f916..948712e75fe4f0083178a8f5bcd918e9fcabd8df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -402,6 +402,7 @@ public class PurpurWorldConfig { +@@ -404,6 +404,7 @@ public class PurpurWorldConfig { public boolean playerBurpWhenFull = false; public boolean playerRidableInWater = false; public boolean playerRemoveBindingWithWeakness = false; @@ -59,7 +59,7 @@ index feabdb3fec0a8bb16cfe09e5f857d7b86211b234..7f9b948191a2160b8e1b11ff04468f47 private void playerSettings() { if (PurpurConfig.version < 19) { boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer); -@@ -426,6 +427,7 @@ public class PurpurWorldConfig { +@@ -428,6 +429,7 @@ public class PurpurWorldConfig { playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); playerRidableInWater = getBoolean("gameplay-mechanics.player.ridable-in-water", playerRidableInWater); playerRemoveBindingWithWeakness = getBoolean("gameplay-mechanics.player.curse-of-binding.remove-with-weakness", playerRemoveBindingWithWeakness); diff --git a/patches/server/0202-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch similarity index 95% rename from patches/server/0202-Dolphins-naturally-aggressive-to-players-chance.patch rename to patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch index 650f62a0c..0d982a84c 100644 --- a/patches/server/0202-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0204-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index bcc6435c177189aa59a3fbe67795ae5092685133..fad0b8157a9c30a0e9b35fe32b6a9f2e public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 7f9b948191a2160b8e1b11ff04468f47bf1a498e..93be2146696ec724cca8017708265953ee4f25b3 100644 +index 948712e75fe4f0083178a8f5bcd918e9fcabd8df..39663ab70587b62c52804955081af1c740cac429 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1343,6 +1343,7 @@ public class PurpurWorldConfig { +@@ -1345,6 +1345,7 @@ public class PurpurWorldConfig { public double dolphinScale = 1.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index 7f9b948191a2160b8e1b11ff04468f47bf1a498e..93be2146696ec724cca8017708265953 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1358,6 +1359,7 @@ public class PurpurWorldConfig { +@@ -1360,6 +1361,7 @@ public class PurpurWorldConfig { dolphinScale = Mth.clamp(getDouble("mobs.dolphin.attributes.scale", dolphinScale), 0.0625D, 16.0D); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0203-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch similarity index 96% rename from patches/server/0203-Cows-naturally-aggressive-to-players-chance.patch rename to patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch index 4a1b0df2b..c375c6e20 100644 --- a/patches/server/0203-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0205-Cows-naturally-aggressive-to-players-chance.patch @@ -61,10 +61,10 @@ index 4ad3571403ee8044d17f53987bd47b6c43d42f0e..380bd41336d8d24bffd4e10885e46c95 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 93be2146696ec724cca8017708265953ee4f25b3..bbb0cfa4bbb36c6833785633ee6e616d6355894c 100644 +index 39663ab70587b62c52804955081af1c740cac429..4e4fda61d820a320215a64635421a804f6f63df5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1288,7 +1288,14 @@ public class PurpurWorldConfig { +@@ -1290,7 +1290,14 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -79,7 +79,7 @@ index 93be2146696ec724cca8017708265953ee4f25b3..bbb0cfa4bbb36c6833785633ee6e616d cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); cowControllable = getBoolean("mobs.cow.controllable", cowControllable); -@@ -1302,6 +1309,8 @@ public class PurpurWorldConfig { +@@ -1304,6 +1311,8 @@ public class PurpurWorldConfig { cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); diff --git a/patches/server/0204-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch similarity index 92% rename from patches/server/0204-Option-for-beds-to-explode-on-villager-sleep.patch rename to patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch index 78b7c7907..de21780d9 100644 --- a/patches/server/0204-Option-for-beds-to-explode-on-villager-sleep.patch +++ b/patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch @@ -22,10 +22,10 @@ index 3b17133289f95e5420f1c0a73b34b953470df533..cd57f70a20f3b6b1eb1fd5d336be6297 this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 09465c479f1074d76be88713f727c648be61bf06..e869e2d3511991f8a88349c4db4328d68b4c234d 100644 +index 4e4fda61d820a320215a64635421a804f6f63df5..7e40f5790c243994d86cc8fdedc3ce7dcb94e24e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -782,6 +782,7 @@ public class PurpurWorldConfig { +@@ -784,6 +784,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; @@ -33,7 +33,7 @@ index 09465c479f1074d76be88713f727c648be61bf06..e869e2d3511991f8a88349c4db4328d6 public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -792,6 +793,7 @@ public class PurpurWorldConfig { +@@ -794,6 +795,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); diff --git a/patches/server/0205-Halloween-options-and-optimizations.patch b/patches/server/0207-Halloween-options-and-optimizations.patch similarity index 97% rename from patches/server/0205-Halloween-options-and-optimizations.patch rename to patches/server/0207-Halloween-options-and-optimizations.patch index 6ae8daf8f..6a4333c4c 100644 --- a/patches/server/0205-Halloween-options-and-optimizations.patch +++ b/patches/server/0207-Halloween-options-and-optimizations.patch @@ -64,10 +64,10 @@ index b34dec421adc3ce56c0720a839a43ce42faeefaf..98e7b57a45ae3cae704c65ec6db5f715 this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e869e2d3511991f8a88349c4db4328d68b4c234d..8f2ec3a415ef8dd5e9c9f45e5135702ed5e34a96 100644 +index 7e40f5790c243994d86cc8fdedc3ce7dcb94e24e..5226f3ad75ca94820c4b8de13b7cb8342268cbc9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1706,6 +1706,13 @@ public class PurpurWorldConfig { +@@ -1708,6 +1708,13 @@ public class PurpurWorldConfig { guardianTakeDamageFromWater = getBoolean("mobs.guardian.takes-damage-from-water", guardianTakeDamageFromWater); } diff --git a/patches/server/0206-Config-for-grindstones.patch b/patches/server/0208-Config-for-grindstones.patch similarity index 100% rename from patches/server/0206-Config-for-grindstones.patch rename to patches/server/0208-Config-for-grindstones.patch diff --git a/patches/server/0207-UPnP-Port-Forwarding.patch b/patches/server/0209-UPnP-Port-Forwarding.patch similarity index 94% rename from patches/server/0207-UPnP-Port-Forwarding.patch rename to patches/server/0209-UPnP-Port-Forwarding.patch index 1ef739e62..f30cd07b1 100644 --- a/patches/server/0207-UPnP-Port-Forwarding.patch +++ b/patches/server/0209-UPnP-Port-Forwarding.patch @@ -5,7 +5,7 @@ Subject: [PATCH] UPnP Port Forwarding diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index ec8af36c230e36a59fe8a02a868fb36a8212cd8b..95e1dbd7a423d57c2cfc8546aa6f5741f00e31bb 100644 +index 11a93d772164bd104be860ac9e8855ba5b6904c3..f46523e4eeeca027fe116625741b7af21041a027 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -330,6 +330,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop()).forEach(key -> { -@@ -270,6 +273,9 @@ public class PurpurWorldConfig { +@@ -272,6 +275,9 @@ public class PurpurWorldConfig { glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); shulkerBoxItemDropContentsWhenDestroyed = getBoolean("gameplay-mechanics.item.shulker_box.drop-contents-when-destroyed", shulkerBoxItemDropContentsWhenDestroyed); compassItemShowsBossBar = getBoolean("gameplay-mechanics.item.compass.holding-shows-bossbar", compassItemShowsBossBar); diff --git a/patches/server/0210-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch similarity index 92% rename from patches/server/0210-Add-option-to-disable-zombie-villagers-cure.patch rename to patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch index 938920fc6..2bfc8db22 100644 --- a/patches/server/0210-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0212-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 623e8ef53d6336b3e3c83fd37eda13244a3b4ab6..3759f28c7f516a94ca8fe1b8f82230b9 if (!this.level().isClientSide) { this.startConverting(player.getUUID(), this.random.nextInt(level().purpurConfig.zombieVillagerCuringTimeMax - level().purpurConfig.zombieVillagerCuringTimeMin + 1) + level().purpurConfig.zombieVillagerCuringTimeMin); // Purpur diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ce6cbfc763cc617952c9e64dc50847254a310a7f..4bd07e6ef30f6ff3e026492f36b0b3e8de363088 100644 +index dcd17df4935b06108d41b6d652d030c31364e413..1b516481d32eb9d90faeb2c51ca3658685961ed1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3008,6 +3008,7 @@ public class PurpurWorldConfig { +@@ -3010,6 +3010,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; @@ -29,7 +29,7 @@ index ce6cbfc763cc617952c9e64dc50847254a310a7f..4bd07e6ef30f6ff3e026492f36b0b3e8 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3026,6 +3027,7 @@ public class PurpurWorldConfig { +@@ -3028,6 +3029,7 @@ public class PurpurWorldConfig { zombieVillagerTakeDamageFromWater = getBoolean("mobs.zombie_villager.takes-damage-from-water", zombieVillagerTakeDamageFromWater); zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); diff --git a/patches/server/0211-Persistent-BlockEntity-Lore-and-DisplayName.patch b/patches/server/0213-Persistent-BlockEntity-Lore-and-DisplayName.patch similarity index 97% rename from patches/server/0211-Persistent-BlockEntity-Lore-and-DisplayName.patch rename to patches/server/0213-Persistent-BlockEntity-Lore-and-DisplayName.patch index f0da8dcc8..1185af227 100644 --- a/patches/server/0211-Persistent-BlockEntity-Lore-and-DisplayName.patch +++ b/patches/server/0213-Persistent-BlockEntity-Lore-and-DisplayName.patch @@ -135,10 +135,10 @@ index 1f929b467a0ece3143af58a657cf5983c07a8d51..eaa6ece956f90632831f0558924eaf18 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 56591fdf3bd5a407d938bcac243be0f03672bc06..340f1cde7eafdc3b6e2e2a4e84b54e93ff15eb1d 100644 +index 1b516481d32eb9d90faeb2c51ca3658685961ed1..2e32d07c1a99dd944285b14f1b1fd6598aab30dc 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -141,6 +141,8 @@ public class PurpurWorldConfig { +@@ -142,6 +142,8 @@ public class PurpurWorldConfig { public boolean mobsIgnoreRails = false; public boolean rainStopsAfterSleep = true; public boolean thunderStopsAfterSleep = true; @@ -147,7 +147,7 @@ index 56591fdf3bd5a407d938bcac243be0f03672bc06..340f1cde7eafdc3b6e2e2a4e84b54e93 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -164,6 +166,14 @@ public class PurpurWorldConfig { +@@ -166,6 +168,14 @@ public class PurpurWorldConfig { mobsIgnoreRails = getBoolean("gameplay-mechanics.mobs-ignore-rails", mobsIgnoreRails); rainStopsAfterSleep = getBoolean("gameplay-mechanics.rain-stops-after-sleep", rainStopsAfterSleep); thunderStopsAfterSleep = getBoolean("gameplay-mechanics.thunder-stops-after-sleep", thunderStopsAfterSleep); diff --git a/patches/server/0212-Signs-allow-color-codes.patch b/patches/server/0214-Signs-allow-color-codes.patch similarity index 95% rename from patches/server/0212-Signs-allow-color-codes.patch rename to patches/server/0214-Signs-allow-color-codes.patch index cdb39f1dd..fe83bec71 100644 --- a/patches/server/0212-Signs-allow-color-codes.patch +++ b/patches/server/0214-Signs-allow-color-codes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 5bbf3bb49d47b5b4acce00af4b9cdcffaa3be383..51229d600ea8a58e5c75bd97a1926f5cdf3704d4 100644 +index 9c5c5912931ce96bd61d08922d8eb55143639f0d..dc8198b6282523009a5a6f6b1069b7b463b3f136 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1975,6 +1975,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -1976,6 +1976,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @Override public void openTextEdit(SignBlockEntity sign, boolean front) { @@ -84,10 +84,10 @@ index 8ac19e1e052e73ff3fd09089bb8e3fd687390ee4..6da1eec98c08e4909ecbd48fe90b3fd6 public ClientboundBlockEntityDataPacket getUpdatePacket() { return ClientboundBlockEntityDataPacket.create(this); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 340f1cde7eafdc3b6e2e2a4e84b54e93ff15eb1d..b571a7224f91fe2fd3eeaca48939b7a9b373a4d9 100644 +index 2e32d07c1a99dd944285b14f1b1fd6598aab30dc..1dc0c3fcdd870ba3e365ed151660d5c39cbc3664 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -998,6 +998,11 @@ public class PurpurWorldConfig { +@@ -1000,6 +1000,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0213-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch b/patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch similarity index 100% rename from patches/server/0213-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch rename to patches/server/0215-Kelp-cave-weeping-and-twisting-vines-configurable-ma.patch diff --git a/patches/server/0214-Mobs-always-drop-experience.patch b/patches/server/0216-Mobs-always-drop-experience.patch similarity index 93% rename from patches/server/0214-Mobs-always-drop-experience.patch rename to patches/server/0216-Mobs-always-drop-experience.patch index 8184680d3..1ba9bb199 100644 --- a/patches/server/0214-Mobs-always-drop-experience.patch +++ b/patches/server/0216-Mobs-always-drop-experience.patch @@ -101,7 +101,7 @@ index 2343325fa9a771de7b9445cda24a2bcd7a7c1761..f0b6118a9995bb41836685bbf94d2e7f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index 234785a387f445b3e40978978a647140b3490072..596003002007ecc13ba26e44d73a146fc2067f1e 100644 +index 380bd41336d8d24bffd4e10885e46c95e5bb71fd..6b517deec01445de4205eedb1557995a92d3ae67 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -85,6 +85,11 @@ public class Cow extends Animal { @@ -117,7 +117,7 @@ index 234785a387f445b3e40978978a647140b3490072..596003002007ecc13ba26e44d73a146f protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java -index 515fa6120554d9b2aad32257c48577e6458cd2ff..50b9f026c4dfcccb5bca27b7926caf9909207e02 100644 +index fad0b8157a9c30a0e9b35fe32b6a9f2e8a6dd43e..c1842894f96a567707992d8ff938dbf689dd0df6 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java +++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java @@ -173,6 +173,11 @@ public class Dolphin extends AgeableWaterCreature { @@ -133,7 +133,7 @@ index 515fa6120554d9b2aad32257c48577e6458cd2ff..50b9f026c4dfcccb5bca27b7926caf99 @Override public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, EntitySpawnReason spawnReason, @Nullable SpawnGroupData entityData) { diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index cd100063ae1cb62a1bc59bfa07042a7591173a7b..247aca0bf52fe21673b508240d5212f549864508 100644 +index c442b119f699449bdac73cb1b4c139f093ec2a96..0e229955d9ea7036fab124fa7685df22280671f2 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java @@ -198,6 +198,11 @@ public class Fox extends Animal implements VariantHolder { @@ -213,7 +213,7 @@ index 95d70b140aaeddc771d05420347e5ce0cf0f5ad2..83372c86bd54eedd9b136ddfcbfc67d3 protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java -index 0afa483c6436c4f51955b04a4fe6920a27092284..de579b9e45b878e2f616d04569b69d639c32e232 100644 +index 00759f484cab0d7c8d4e8914dd9f27061c8b7d45..28a9d267099f6c24f71dc5a11179d59c27265a88 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java +++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java @@ -204,6 +204,11 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder magmaCubeMaxHealthCache = new HashMap<>(); public Map magmaCubeAttackDamageCache = new HashMap<>(); public boolean magmaCubeTakeDamageFromWater = false; @@ -1632,7 +1632,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void magmaCubeSettings() { magmaCubeRidable = getBoolean("mobs.magma_cube.ridable", magmaCubeRidable); magmaCubeRidableInWater = getBoolean("mobs.magma_cube.ridable-in-water", magmaCubeRidableInWater); -@@ -1927,6 +1986,7 @@ public class PurpurWorldConfig { +@@ -1929,6 +1988,7 @@ public class PurpurWorldConfig { magmaCubeMaxHealthCache.clear(); magmaCubeAttackDamageCache.clear(); magmaCubeTakeDamageFromWater = getBoolean("mobs.magma_cube.takes-damage-from-water", magmaCubeTakeDamageFromWater); @@ -1640,7 +1640,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean mooshroomRidable = false; -@@ -1936,6 +1996,7 @@ public class PurpurWorldConfig { +@@ -1938,6 +1998,7 @@ public class PurpurWorldConfig { public double mooshroomScale = 1.0D; public int mooshroomBreedingTicks = 6000; public boolean mooshroomTakeDamageFromWater = false; @@ -1648,7 +1648,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1949,6 +2010,7 @@ public class PurpurWorldConfig { +@@ -1951,6 +2012,7 @@ public class PurpurWorldConfig { mooshroomScale = Mth.clamp(getDouble("mobs.mooshroom.attributes.scale", mooshroomScale), 0.0625D, 16.0D); mooshroomBreedingTicks = getInt("mobs.mooshroom.breeding-delay-ticks", mooshroomBreedingTicks); mooshroomTakeDamageFromWater = getBoolean("mobs.mooshroom.takes-damage-from-water", mooshroomTakeDamageFromWater); @@ -1656,7 +1656,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean muleRidableInWater = false; -@@ -1960,6 +2022,7 @@ public class PurpurWorldConfig { +@@ -1962,6 +2024,7 @@ public class PurpurWorldConfig { public double muleMovementSpeedMax = 0.175D; public int muleBreedingTicks = 6000; public boolean muleTakeDamageFromWater = false; @@ -1664,7 +1664,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1977,6 +2040,7 @@ public class PurpurWorldConfig { +@@ -1979,6 +2042,7 @@ public class PurpurWorldConfig { muleMovementSpeedMax = getDouble("mobs.mule.attributes.movement_speed.max", muleMovementSpeedMax); muleBreedingTicks = getInt("mobs.mule.breeding-delay-ticks", muleBreedingTicks); muleTakeDamageFromWater = getBoolean("mobs.mule.takes-damage-from-water", muleTakeDamageFromWater); @@ -1672,7 +1672,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean ocelotRidable = false; -@@ -1986,6 +2050,7 @@ public class PurpurWorldConfig { +@@ -1988,6 +2052,7 @@ public class PurpurWorldConfig { public double ocelotScale = 1.0D; public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; @@ -1680,7 +1680,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1999,6 +2064,7 @@ public class PurpurWorldConfig { +@@ -2001,6 +2066,7 @@ public class PurpurWorldConfig { ocelotScale = Mth.clamp(getDouble("mobs.ocelot.attributes.scale", ocelotScale), 0.0625D, 16.0D); ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); @@ -1688,7 +1688,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean pandaRidable = false; -@@ -2008,6 +2074,7 @@ public class PurpurWorldConfig { +@@ -2010,6 +2076,7 @@ public class PurpurWorldConfig { public double pandaScale = 1.0D; public int pandaBreedingTicks = 6000; public boolean pandaTakeDamageFromWater = false; @@ -1696,7 +1696,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -2021,6 +2088,7 @@ public class PurpurWorldConfig { +@@ -2023,6 +2090,7 @@ public class PurpurWorldConfig { pandaScale = Mth.clamp(getDouble("mobs.panda.attributes.scale", pandaScale), 0.0625D, 16.0D); pandaBreedingTicks = getInt("mobs.panda.breeding-delay-ticks", pandaBreedingTicks); pandaTakeDamageFromWater = getBoolean("mobs.panda.takes-damage-from-water", pandaTakeDamageFromWater); @@ -1704,7 +1704,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean parrotRidable = false; -@@ -2031,6 +2099,7 @@ public class PurpurWorldConfig { +@@ -2033,6 +2101,7 @@ public class PurpurWorldConfig { public double parrotScale = 1.0D; public boolean parrotTakeDamageFromWater = false; public boolean parrotBreedable = false; @@ -1712,7 +1712,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void parrotSettings() { parrotRidable = getBoolean("mobs.parrot.ridable", parrotRidable); parrotRidableInWater = getBoolean("mobs.parrot.ridable-in-water", parrotRidableInWater); -@@ -2045,6 +2114,7 @@ public class PurpurWorldConfig { +@@ -2047,6 +2116,7 @@ public class PurpurWorldConfig { parrotScale = Mth.clamp(getDouble("mobs.parrot.attributes.scale", parrotScale), 0.0625D, 16.0D); parrotTakeDamageFromWater = getBoolean("mobs.parrot.takes-damage-from-water", parrotTakeDamageFromWater); parrotBreedable = getBoolean("mobs.parrot.can-breed", parrotBreedable); @@ -1720,7 +1720,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean phantomRidable = false; -@@ -2072,6 +2142,7 @@ public class PurpurWorldConfig { +@@ -2074,6 +2144,7 @@ public class PurpurWorldConfig { public boolean phantomBurnInDaylight = true; public boolean phantomFlamesOnSwoop = false; public boolean phantomTakeDamageFromWater = false; @@ -1728,7 +1728,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -2107,6 +2178,7 @@ public class PurpurWorldConfig { +@@ -2109,6 +2180,7 @@ public class PurpurWorldConfig { phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch); phantomFlamesOnSwoop = getBoolean("mobs.phantom.flames-on-swoop", phantomFlamesOnSwoop); phantomTakeDamageFromWater = getBoolean("mobs.phantom.takes-damage-from-water", phantomTakeDamageFromWater); @@ -1736,7 +1736,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean pigRidable = false; -@@ -2117,6 +2189,7 @@ public class PurpurWorldConfig { +@@ -2119,6 +2191,7 @@ public class PurpurWorldConfig { public boolean pigGiveSaddleBack = false; public int pigBreedingTicks = 6000; public boolean pigTakeDamageFromWater = false; @@ -1744,7 +1744,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -2131,6 +2204,7 @@ public class PurpurWorldConfig { +@@ -2133,6 +2206,7 @@ public class PurpurWorldConfig { pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); pigBreedingTicks = getInt("mobs.pig.breeding-delay-ticks", pigBreedingTicks); pigTakeDamageFromWater = getBoolean("mobs.pig.takes-damage-from-water", pigTakeDamageFromWater); @@ -1752,7 +1752,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean piglinRidable = false; -@@ -2141,6 +2215,7 @@ public class PurpurWorldConfig { +@@ -2143,6 +2217,7 @@ public class PurpurWorldConfig { public boolean piglinBypassMobGriefing = false; public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; @@ -1760,7 +1760,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2155,6 +2230,7 @@ public class PurpurWorldConfig { +@@ -2157,6 +2232,7 @@ public class PurpurWorldConfig { piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); @@ -1768,7 +1768,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean piglinBruteRidable = false; -@@ -2163,6 +2239,7 @@ public class PurpurWorldConfig { +@@ -2165,6 +2241,7 @@ public class PurpurWorldConfig { public double piglinBruteMaxHealth = 50.0D; public double piglinBruteScale = 1.0D; public boolean piglinBruteTakeDamageFromWater = false; @@ -1776,7 +1776,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void piglinBruteSettings() { piglinBruteRidable = getBoolean("mobs.piglin_brute.ridable", piglinBruteRidable); piglinBruteRidableInWater = getBoolean("mobs.piglin_brute.ridable-in-water", piglinBruteRidableInWater); -@@ -2175,6 +2252,7 @@ public class PurpurWorldConfig { +@@ -2177,6 +2254,7 @@ public class PurpurWorldConfig { piglinBruteMaxHealth = getDouble("mobs.piglin_brute.attributes.max_health", piglinBruteMaxHealth); piglinBruteScale = Mth.clamp(getDouble("mobs.piglin_brute.attributes.scale", piglinBruteScale), 0.0625D, 16.0D); piglinBruteTakeDamageFromWater = getBoolean("mobs.piglin_brute.takes-damage-from-water", piglinBruteTakeDamageFromWater); @@ -1784,7 +1784,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean pillagerRidable = false; -@@ -2184,6 +2262,7 @@ public class PurpurWorldConfig { +@@ -2186,6 +2264,7 @@ public class PurpurWorldConfig { public double pillagerScale = 1.0D; public boolean pillagerBypassMobGriefing = false; public boolean pillagerTakeDamageFromWater = false; @@ -1792,7 +1792,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void pillagerSettings() { pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); -@@ -2197,6 +2276,7 @@ public class PurpurWorldConfig { +@@ -2199,6 +2278,7 @@ public class PurpurWorldConfig { pillagerScale = Mth.clamp(getDouble("mobs.pillager.attributes.scale", pillagerScale), 0.0625D, 16.0D); pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); pillagerTakeDamageFromWater = getBoolean("mobs.pillager.takes-damage-from-water", pillagerTakeDamageFromWater); @@ -1800,7 +1800,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean polarBearRidable = false; -@@ -2208,6 +2288,7 @@ public class PurpurWorldConfig { +@@ -2210,6 +2290,7 @@ public class PurpurWorldConfig { public Item polarBearBreedableItem = null; public int polarBearBreedingTicks = 6000; public boolean polarBearTakeDamageFromWater = false; @@ -1808,7 +1808,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -2224,6 +2305,7 @@ public class PurpurWorldConfig { +@@ -2226,6 +2307,7 @@ public class PurpurWorldConfig { if (item != Items.AIR) polarBearBreedableItem = item; polarBearBreedingTicks = getInt("mobs.polar_bear.breeding-delay-ticks", polarBearBreedingTicks); polarBearTakeDamageFromWater = getBoolean("mobs.polar_bear.takes-damage-from-water", polarBearTakeDamageFromWater); @@ -1816,7 +1816,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean pufferfishRidable = false; -@@ -2231,6 +2313,7 @@ public class PurpurWorldConfig { +@@ -2233,6 +2315,7 @@ public class PurpurWorldConfig { public double pufferfishMaxHealth = 3.0D; public double pufferfishScale = 1.0D; public boolean pufferfishTakeDamageFromWater = false; @@ -1824,7 +1824,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void pufferfishSettings() { pufferfishRidable = getBoolean("mobs.pufferfish.ridable", pufferfishRidable); pufferfishControllable = getBoolean("mobs.pufferfish.controllable", pufferfishControllable); -@@ -2242,6 +2325,7 @@ public class PurpurWorldConfig { +@@ -2244,6 +2327,7 @@ public class PurpurWorldConfig { pufferfishMaxHealth = getDouble("mobs.pufferfish.attributes.max_health", pufferfishMaxHealth); pufferfishScale = Mth.clamp(getDouble("mobs.pufferfish.attributes.scale", pufferfishScale), 0.0625D, 16.0D); pufferfishTakeDamageFromWater = getBoolean("mobs.pufferfish.takes-damage-from-water", pufferfishTakeDamageFromWater); @@ -1832,7 +1832,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean rabbitRidable = false; -@@ -2254,6 +2338,7 @@ public class PurpurWorldConfig { +@@ -2256,6 +2340,7 @@ public class PurpurWorldConfig { public int rabbitBreedingTicks = 6000; public boolean rabbitBypassMobGriefing = false; public boolean rabbitTakeDamageFromWater = false; @@ -1840,7 +1840,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -2270,6 +2355,7 @@ public class PurpurWorldConfig { +@@ -2272,6 +2357,7 @@ public class PurpurWorldConfig { rabbitBreedingTicks = getInt("mobs.rabbit.breeding-delay-ticks", rabbitBreedingTicks); rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); rabbitTakeDamageFromWater = getBoolean("mobs.rabbit.takes-damage-from-water", rabbitTakeDamageFromWater); @@ -1848,7 +1848,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean ravagerRidable = false; -@@ -2280,6 +2366,7 @@ public class PurpurWorldConfig { +@@ -2282,6 +2368,7 @@ public class PurpurWorldConfig { public boolean ravagerBypassMobGriefing = false; public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); @@ -1856,7 +1856,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2310,6 +2397,7 @@ public class PurpurWorldConfig { +@@ -2312,6 +2399,7 @@ public class PurpurWorldConfig { ravagerGriefableBlocks.add(block); } }); @@ -1864,7 +1864,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean salmonRidable = false; -@@ -2317,6 +2405,7 @@ public class PurpurWorldConfig { +@@ -2319,6 +2407,7 @@ public class PurpurWorldConfig { public double salmonMaxHealth = 3.0D; public double salmonScale = 1.0D; public boolean salmonTakeDamageFromWater = false; @@ -1872,7 +1872,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void salmonSettings() { salmonRidable = getBoolean("mobs.salmon.ridable", salmonRidable); salmonControllable = getBoolean("mobs.salmon.controllable", salmonControllable); -@@ -2328,6 +2417,7 @@ public class PurpurWorldConfig { +@@ -2330,6 +2419,7 @@ public class PurpurWorldConfig { salmonMaxHealth = getDouble("mobs.salmon.attributes.max_health", salmonMaxHealth); salmonScale = Mth.clamp(getDouble("mobs.salmon.attributes.scale", salmonScale), 0.0625D, 16.0D); salmonTakeDamageFromWater = getBoolean("mobs.salmon.takes-damage-from-water", salmonTakeDamageFromWater); @@ -1880,7 +1880,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean sheepRidable = false; -@@ -2338,6 +2428,7 @@ public class PurpurWorldConfig { +@@ -2340,6 +2430,7 @@ public class PurpurWorldConfig { public int sheepBreedingTicks = 6000; public boolean sheepBypassMobGriefing = false; public boolean sheepTakeDamageFromWater = false; @@ -1888,7 +1888,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -2352,6 +2443,7 @@ public class PurpurWorldConfig { +@@ -2354,6 +2445,7 @@ public class PurpurWorldConfig { sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); sheepTakeDamageFromWater = getBoolean("mobs.sheep.takes-damage-from-water", sheepTakeDamageFromWater); @@ -1896,7 +1896,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean shulkerRidable = false; -@@ -2366,6 +2458,7 @@ public class PurpurWorldConfig { +@@ -2368,6 +2460,7 @@ public class PurpurWorldConfig { public String shulkerSpawnFromBulletNearbyEquation = "(nearby - 1) / 5.0"; public boolean shulkerSpawnFromBulletRandomColor = false; public boolean shulkerChangeColorWithDye = false; @@ -1904,7 +1904,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void shulkerSettings() { shulkerRidable = getBoolean("mobs.shulker.ridable", shulkerRidable); shulkerRidableInWater = getBoolean("mobs.shulker.ridable-in-water", shulkerRidableInWater); -@@ -2384,6 +2477,7 @@ public class PurpurWorldConfig { +@@ -2386,6 +2479,7 @@ public class PurpurWorldConfig { shulkerSpawnFromBulletNearbyEquation = getString("mobs.shulker.spawn-from-bullet.nearby-equation", shulkerSpawnFromBulletNearbyEquation); shulkerSpawnFromBulletRandomColor = getBoolean("mobs.shulker.spawn-from-bullet.random-color", shulkerSpawnFromBulletRandomColor); shulkerChangeColorWithDye = getBoolean("mobs.shulker.change-color-with-dye", shulkerChangeColorWithDye); @@ -1912,7 +1912,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean silverfishRidable = false; -@@ -2395,6 +2489,7 @@ public class PurpurWorldConfig { +@@ -2397,6 +2491,7 @@ public class PurpurWorldConfig { public double silverfishAttackDamage = 1.0D; public boolean silverfishBypassMobGriefing = false; public boolean silverfishTakeDamageFromWater = false; @@ -1920,7 +1920,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void silverfishSettings() { silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); -@@ -2410,6 +2505,7 @@ public class PurpurWorldConfig { +@@ -2412,6 +2507,7 @@ public class PurpurWorldConfig { silverfishAttackDamage = getDouble("mobs.silverfish.attributes.attack_damage", silverfishAttackDamage); silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); silverfishTakeDamageFromWater = getBoolean("mobs.silverfish.takes-damage-from-water", silverfishTakeDamageFromWater); @@ -1928,7 +1928,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean skeletonRidable = false; -@@ -2418,6 +2514,7 @@ public class PurpurWorldConfig { +@@ -2420,6 +2516,7 @@ public class PurpurWorldConfig { public double skeletonMaxHealth = 20.0D; public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; @@ -1936,7 +1936,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2430,6 +2527,7 @@ public class PurpurWorldConfig { +@@ -2432,6 +2529,7 @@ public class PurpurWorldConfig { skeletonMaxHealth = getDouble("mobs.skeleton.attributes.max_health", skeletonMaxHealth); skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); @@ -1944,7 +1944,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean skeletonHorseRidable = false; -@@ -2442,6 +2540,7 @@ public class PurpurWorldConfig { +@@ -2444,6 +2542,7 @@ public class PurpurWorldConfig { public double skeletonHorseMovementSpeedMin = 0.2D; public double skeletonHorseMovementSpeedMax = 0.2D; public boolean skeletonHorseTakeDamageFromWater = false; @@ -1952,7 +1952,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void skeletonHorseSettings() { skeletonHorseRidable = getBoolean("mobs.skeleton_horse.ridable", skeletonHorseRidable); skeletonHorseRidableInWater = getBoolean("mobs.skeleton_horse.ridable-in-water", skeletonHorseRidableInWater); -@@ -2459,6 +2558,7 @@ public class PurpurWorldConfig { +@@ -2461,6 +2560,7 @@ public class PurpurWorldConfig { skeletonHorseMovementSpeedMin = getDouble("mobs.skeleton_horse.attributes.movement_speed.min", skeletonHorseMovementSpeedMin); skeletonHorseMovementSpeedMax = getDouble("mobs.skeleton_horse.attributes.movement_speed.max", skeletonHorseMovementSpeedMax); skeletonHorseTakeDamageFromWater = getBoolean("mobs.skeleton_horse.takes-damage-from-water", skeletonHorseTakeDamageFromWater); @@ -1960,7 +1960,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean slimeRidable = false; -@@ -2469,6 +2569,7 @@ public class PurpurWorldConfig { +@@ -2471,6 +2571,7 @@ public class PurpurWorldConfig { public Map slimeMaxHealthCache = new HashMap<>(); public Map slimeAttackDamageCache = new HashMap<>(); public boolean slimeTakeDamageFromWater = false; @@ -1968,7 +1968,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void slimeSettings() { slimeRidable = getBoolean("mobs.slime.ridable", slimeRidable); slimeRidableInWater = getBoolean("mobs.slime.ridable-in-water", slimeRidableInWater); -@@ -2483,6 +2584,7 @@ public class PurpurWorldConfig { +@@ -2485,6 +2586,7 @@ public class PurpurWorldConfig { slimeMaxHealthCache.clear(); slimeAttackDamageCache.clear(); slimeTakeDamageFromWater = getBoolean("mobs.slime.takes-damage-from-water", slimeTakeDamageFromWater); @@ -1976,7 +1976,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean snowGolemRidable = false; -@@ -2498,6 +2600,7 @@ public class PurpurWorldConfig { +@@ -2500,6 +2602,7 @@ public class PurpurWorldConfig { public double snowGolemAttackDistance = 1.25D; public boolean snowGolemBypassMobGriefing = false; public boolean snowGolemTakeDamageFromWater = true; @@ -1984,7 +1984,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -2517,6 +2620,7 @@ public class PurpurWorldConfig { +@@ -2519,6 +2622,7 @@ public class PurpurWorldConfig { snowGolemAttackDistance = getDouble("mobs.snow_golem.attack-distance", snowGolemAttackDistance); snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); snowGolemTakeDamageFromWater = getBoolean("mobs.snow_golem.takes-damage-from-water", snowGolemTakeDamageFromWater); @@ -1992,7 +1992,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean snifferRidable = false; -@@ -2542,6 +2646,7 @@ public class PurpurWorldConfig { +@@ -2544,6 +2648,7 @@ public class PurpurWorldConfig { public double squidOffsetWaterCheck = 0.0D; public boolean squidsCanFly = false; public boolean squidTakeDamageFromWater = false; @@ -2000,7 +2000,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); squidControllable = getBoolean("mobs.squid.controllable", squidControllable); -@@ -2556,6 +2661,7 @@ public class PurpurWorldConfig { +@@ -2558,6 +2663,7 @@ public class PurpurWorldConfig { squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); squidsCanFly = getBoolean("mobs.squid.can-fly", squidsCanFly); squidTakeDamageFromWater = getBoolean("mobs.squid.takes-damage-from-water", squidTakeDamageFromWater); @@ -2008,7 +2008,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean spiderRidable = false; -@@ -2564,6 +2670,7 @@ public class PurpurWorldConfig { +@@ -2566,6 +2672,7 @@ public class PurpurWorldConfig { public double spiderMaxHealth = 16.0D; public double spiderScale = 1.0D; public boolean spiderTakeDamageFromWater = false; @@ -2016,7 +2016,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void spiderSettings() { spiderRidable = getBoolean("mobs.spider.ridable", spiderRidable); spiderRidableInWater = getBoolean("mobs.spider.ridable-in-water", spiderRidableInWater); -@@ -2576,6 +2683,7 @@ public class PurpurWorldConfig { +@@ -2578,6 +2685,7 @@ public class PurpurWorldConfig { spiderMaxHealth = getDouble("mobs.spider.attributes.max_health", spiderMaxHealth); spiderScale = Mth.clamp(getDouble("mobs.spider.attributes.scale", spiderScale), 0.0625D, 16.0D); spiderTakeDamageFromWater = getBoolean("mobs.spider.takes-damage-from-water", spiderTakeDamageFromWater); @@ -2024,7 +2024,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean strayRidable = false; -@@ -2584,6 +2692,7 @@ public class PurpurWorldConfig { +@@ -2586,6 +2694,7 @@ public class PurpurWorldConfig { public double strayMaxHealth = 20.0D; public double strayScale = 1.0D; public boolean strayTakeDamageFromWater = false; @@ -2032,7 +2032,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void straySettings() { strayRidable = getBoolean("mobs.stray.ridable", strayRidable); strayRidableInWater = getBoolean("mobs.stray.ridable-in-water", strayRidableInWater); -@@ -2596,6 +2705,7 @@ public class PurpurWorldConfig { +@@ -2598,6 +2707,7 @@ public class PurpurWorldConfig { strayMaxHealth = getDouble("mobs.stray.attributes.max_health", strayMaxHealth); strayScale = Mth.clamp(getDouble("mobs.stray.attributes.scale", strayScale), 0.0625D, 16.0D); strayTakeDamageFromWater = getBoolean("mobs.stray.takes-damage-from-water", strayTakeDamageFromWater); @@ -2040,7 +2040,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean striderRidable = false; -@@ -2606,6 +2716,7 @@ public class PurpurWorldConfig { +@@ -2608,6 +2718,7 @@ public class PurpurWorldConfig { public int striderBreedingTicks = 6000; public boolean striderGiveSaddleBack = false; public boolean striderTakeDamageFromWater = true; @@ -2048,7 +2048,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -2620,6 +2731,7 @@ public class PurpurWorldConfig { +@@ -2622,6 +2733,7 @@ public class PurpurWorldConfig { striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); striderGiveSaddleBack = getBoolean("mobs.strider.give-saddle-back", striderGiveSaddleBack); striderTakeDamageFromWater = getBoolean("mobs.strider.takes-damage-from-water", striderTakeDamageFromWater); @@ -2056,7 +2056,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean tadpoleRidable = false; -@@ -2642,6 +2754,7 @@ public class PurpurWorldConfig { +@@ -2644,6 +2756,7 @@ public class PurpurWorldConfig { public double traderLlamaMovementSpeedMax = 0.175D; public int traderLlamaBreedingTicks = 6000; public boolean traderLlamaTakeDamageFromWater = false; @@ -2064,7 +2064,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -2661,6 +2774,7 @@ public class PurpurWorldConfig { +@@ -2663,6 +2776,7 @@ public class PurpurWorldConfig { traderLlamaMovementSpeedMax = getDouble("mobs.trader_llama.attributes.movement_speed.max", traderLlamaMovementSpeedMax); traderLlamaBreedingTicks = getInt("mobs.trader_llama.breeding-delay-ticks", traderLlamaBreedingTicks); traderLlamaTakeDamageFromWater = getBoolean("mobs.trader_llama.takes-damage-from-water", traderLlamaTakeDamageFromWater); @@ -2072,7 +2072,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean tropicalFishRidable = false; -@@ -2668,6 +2782,7 @@ public class PurpurWorldConfig { +@@ -2670,6 +2784,7 @@ public class PurpurWorldConfig { public double tropicalFishMaxHealth = 3.0D; public double tropicalFishScale = 1.0D; public boolean tropicalFishTakeDamageFromWater = false; @@ -2080,7 +2080,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void tropicalFishSettings() { tropicalFishRidable = getBoolean("mobs.tropical_fish.ridable", tropicalFishRidable); tropicalFishControllable = getBoolean("mobs.tropical_fish.controllable", tropicalFishControllable); -@@ -2679,6 +2794,7 @@ public class PurpurWorldConfig { +@@ -2681,6 +2796,7 @@ public class PurpurWorldConfig { tropicalFishMaxHealth = getDouble("mobs.tropical_fish.attributes.max_health", tropicalFishMaxHealth); tropicalFishScale = Mth.clamp(getDouble("mobs.tropical_fish.attributes.scale", tropicalFishScale), 0.0625D, 16.0D); tropicalFishTakeDamageFromWater = getBoolean("mobs.tropical_fish.takes-damage-from-water", tropicalFishTakeDamageFromWater); @@ -2088,7 +2088,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean turtleRidable = false; -@@ -2688,6 +2804,7 @@ public class PurpurWorldConfig { +@@ -2690,6 +2806,7 @@ public class PurpurWorldConfig { public double turtleScale = 1.0D; public int turtleBreedingTicks = 6000; public boolean turtleTakeDamageFromWater = false; @@ -2096,7 +2096,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void turtleSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -2701,6 +2818,7 @@ public class PurpurWorldConfig { +@@ -2703,6 +2820,7 @@ public class PurpurWorldConfig { turtleScale = Mth.clamp(getDouble("mobs.turtle.attributes.scale", turtleScale), 0.0625D, 16.0D); turtleBreedingTicks = getInt("mobs.turtle.breeding-delay-ticks", turtleBreedingTicks); turtleTakeDamageFromWater = getBoolean("mobs.turtle.takes-damage-from-water", turtleTakeDamageFromWater); @@ -2104,7 +2104,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean vexRidable = false; -@@ -2710,6 +2828,7 @@ public class PurpurWorldConfig { +@@ -2712,6 +2830,7 @@ public class PurpurWorldConfig { public double vexMaxHealth = 14.0D; public double vexScale = 1.0D; public boolean vexTakeDamageFromWater = false; @@ -2112,7 +2112,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void vexSettings() { vexRidable = getBoolean("mobs.vex.ridable", vexRidable); vexRidableInWater = getBoolean("mobs.vex.ridable-in-water", vexRidableInWater); -@@ -2723,6 +2842,7 @@ public class PurpurWorldConfig { +@@ -2725,6 +2844,7 @@ public class PurpurWorldConfig { vexMaxHealth = getDouble("mobs.vex.attributes.max_health", vexMaxHealth); vexScale = Mth.clamp(getDouble("mobs.vex.attributes.scale", vexScale), 0.0625D, 16.0D); vexTakeDamageFromWater = getBoolean("mobs.vex.takes-damage-from-water", vexTakeDamageFromWater); @@ -2120,7 +2120,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean villagerRidable = false; -@@ -2739,6 +2859,7 @@ public class PurpurWorldConfig { +@@ -2741,6 +2861,7 @@ public class PurpurWorldConfig { public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; public boolean villagerAllowTrading = true; @@ -2128,7 +2128,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2759,6 +2880,7 @@ public class PurpurWorldConfig { +@@ -2761,6 +2882,7 @@ public class PurpurWorldConfig { villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); @@ -2136,7 +2136,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean vindicatorRidable = false; -@@ -2768,6 +2890,7 @@ public class PurpurWorldConfig { +@@ -2770,6 +2892,7 @@ public class PurpurWorldConfig { public double vindicatorScale = 1.0D; public double vindicatorJohnnySpawnChance = 0D; public boolean vindicatorTakeDamageFromWater = false; @@ -2144,7 +2144,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -2781,6 +2904,7 @@ public class PurpurWorldConfig { +@@ -2783,6 +2906,7 @@ public class PurpurWorldConfig { vindicatorScale = Mth.clamp(getDouble("mobs.vindicator.attributes.scale", vindicatorScale), 0.0625D, 16.0D); vindicatorJohnnySpawnChance = getDouble("mobs.vindicator.johnny.spawn-chance", vindicatorJohnnySpawnChance); vindicatorTakeDamageFromWater = getBoolean("mobs.vindicator.takes-damage-from-water", vindicatorTakeDamageFromWater); @@ -2152,7 +2152,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean wanderingTraderRidable = false; -@@ -2792,6 +2916,7 @@ public class PurpurWorldConfig { +@@ -2794,6 +2918,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; public boolean wanderingTraderAllowTrading = true; @@ -2160,7 +2160,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2807,6 +2932,7 @@ public class PurpurWorldConfig { +@@ -2809,6 +2934,7 @@ public class PurpurWorldConfig { wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); @@ -2168,7 +2168,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean wardenRidable = false; -@@ -2824,6 +2950,7 @@ public class PurpurWorldConfig { +@@ -2826,6 +2952,7 @@ public class PurpurWorldConfig { public double witchMaxHealth = 26.0D; public double witchScale = 1.0D; public boolean witchTakeDamageFromWater = false; @@ -2176,7 +2176,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void witchSettings() { witchRidable = getBoolean("mobs.witch.ridable", witchRidable); witchRidableInWater = getBoolean("mobs.witch.ridable-in-water", witchRidableInWater); -@@ -2836,6 +2963,7 @@ public class PurpurWorldConfig { +@@ -2838,6 +2965,7 @@ public class PurpurWorldConfig { witchMaxHealth = getDouble("mobs.witch.attributes.max_health", witchMaxHealth); witchScale = Mth.clamp(getDouble("mobs.witch.attributes.scale", witchScale), 0.0625D, 16.0D); witchTakeDamageFromWater = getBoolean("mobs.witch.takes-damage-from-water", witchTakeDamageFromWater); @@ -2184,7 +2184,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean witherRidable = false; -@@ -2851,6 +2979,7 @@ public class PurpurWorldConfig { +@@ -2853,6 +2981,7 @@ public class PurpurWorldConfig { public boolean witherCanRideVehicles = false; public float witherExplosionRadius = 1.0F; public boolean witherPlaySpawnSound = true; @@ -2192,7 +2192,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -2874,6 +3003,7 @@ public class PurpurWorldConfig { +@@ -2876,6 +3005,7 @@ public class PurpurWorldConfig { witherCanRideVehicles = getBoolean("mobs.wither.can-ride-vehicles", witherCanRideVehicles); witherExplosionRadius = (float) getDouble("mobs.wither.explosion-radius", witherExplosionRadius); witherPlaySpawnSound = getBoolean("mobs.wither.play-spawn-sound", witherPlaySpawnSound); @@ -2200,7 +2200,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean witherSkeletonRidable = false; -@@ -2882,6 +3012,7 @@ public class PurpurWorldConfig { +@@ -2884,6 +3014,7 @@ public class PurpurWorldConfig { public double witherSkeletonMaxHealth = 20.0D; public double witherSkeletonScale = 1.0D; public boolean witherSkeletonTakeDamageFromWater = false; @@ -2208,7 +2208,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void witherSkeletonSettings() { witherSkeletonRidable = getBoolean("mobs.wither_skeleton.ridable", witherSkeletonRidable); witherSkeletonRidableInWater = getBoolean("mobs.wither_skeleton.ridable-in-water", witherSkeletonRidableInWater); -@@ -2894,6 +3025,7 @@ public class PurpurWorldConfig { +@@ -2896,6 +3027,7 @@ public class PurpurWorldConfig { witherSkeletonMaxHealth = getDouble("mobs.wither_skeleton.attributes.max_health", witherSkeletonMaxHealth); witherSkeletonScale = Mth.clamp(getDouble("mobs.wither_skeleton.attributes.scale", witherSkeletonScale), 0.0625D, 16.0D); witherSkeletonTakeDamageFromWater = getBoolean("mobs.wither_skeleton.takes-damage-from-water", witherSkeletonTakeDamageFromWater); @@ -2216,7 +2216,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean wolfRidable = false; -@@ -2906,6 +3038,7 @@ public class PurpurWorldConfig { +@@ -2908,6 +3040,7 @@ public class PurpurWorldConfig { public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; public boolean wolfTakeDamageFromWater = false; @@ -2224,7 +2224,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -2926,6 +3059,7 @@ public class PurpurWorldConfig { +@@ -2928,6 +3061,7 @@ public class PurpurWorldConfig { wolfNaturalRabid = getDouble("mobs.wolf.spawn-rabid-chance", wolfNaturalRabid); wolfBreedingTicks = getInt("mobs.wolf.breeding-delay-ticks", wolfBreedingTicks); wolfTakeDamageFromWater = getBoolean("mobs.wolf.takes-damage-from-water", wolfTakeDamageFromWater); @@ -2232,7 +2232,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean zoglinRidable = false; -@@ -2934,6 +3068,7 @@ public class PurpurWorldConfig { +@@ -2936,6 +3070,7 @@ public class PurpurWorldConfig { public double zoglinMaxHealth = 40.0D; public double zoglinScale = 1.0D; public boolean zoglinTakeDamageFromWater = false; @@ -2240,7 +2240,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void zoglinSettings() { zoglinRidable = getBoolean("mobs.zoglin.ridable", zoglinRidable); zoglinRidableInWater = getBoolean("mobs.zoglin.ridable-in-water", zoglinRidableInWater); -@@ -2946,6 +3081,7 @@ public class PurpurWorldConfig { +@@ -2948,6 +3083,7 @@ public class PurpurWorldConfig { zoglinMaxHealth = getDouble("mobs.zoglin.attributes.max_health", zoglinMaxHealth); zoglinScale = Mth.clamp(getDouble("mobs.zoglin.attributes.scale", zoglinScale), 0.0625D, 16.0D); zoglinTakeDamageFromWater = getBoolean("mobs.zoglin.takes-damage-from-water", zoglinTakeDamageFromWater); @@ -2248,7 +2248,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean zombieRidable = false; -@@ -2960,6 +3096,7 @@ public class PurpurWorldConfig { +@@ -2962,6 +3098,7 @@ public class PurpurWorldConfig { public boolean zombieAggressiveTowardsVillagerWhenLagging = true; public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; @@ -2256,7 +2256,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -2978,6 +3115,7 @@ public class PurpurWorldConfig { +@@ -2980,6 +3117,7 @@ public class PurpurWorldConfig { zombieAggressiveTowardsVillagerWhenLagging = getBoolean("mobs.zombie.aggressive-towards-villager-when-lagging", zombieAggressiveTowardsVillagerWhenLagging); zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); @@ -2264,7 +2264,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean zombieHorseRidable = false; -@@ -2991,6 +3129,7 @@ public class PurpurWorldConfig { +@@ -2993,6 +3131,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2272,7 +2272,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void zombieHorseSettings() { zombieHorseRidable = getBoolean("mobs.zombie_horse.ridable", zombieHorseRidable); zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); -@@ -3009,6 +3148,7 @@ public class PurpurWorldConfig { +@@ -3011,6 +3150,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2280,7 +2280,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean zombieVillagerRidable = false; -@@ -3024,6 +3164,7 @@ public class PurpurWorldConfig { +@@ -3026,6 +3166,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; @@ -2288,7 +2288,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3043,6 +3184,7 @@ public class PurpurWorldConfig { +@@ -3045,6 +3186,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMin = getInt("mobs.zombie_villager.curing_time.min", zombieVillagerCuringTimeMin); zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); @@ -2296,7 +2296,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 } public boolean zombifiedPiglinRidable = false; -@@ -3056,6 +3198,7 @@ public class PurpurWorldConfig { +@@ -3058,6 +3200,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyTryExistingChickens = true; public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; @@ -2304,7 +2304,7 @@ index 9cfee77da2b368c2be4a91902df8e9085d07974b..27b6b2c8dfa709229f709c1a030e7c68 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -3073,6 +3216,7 @@ public class PurpurWorldConfig { +@@ -3075,6 +3218,7 @@ public class PurpurWorldConfig { zombifiedPiglinJockeyTryExistingChickens = getBoolean("mobs.zombified_piglin.jockey.try-existing-chickens", zombifiedPiglinJockeyTryExistingChickens); zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); diff --git a/patches/server/0215-Grindstone-API.patch b/patches/server/0217-Grindstone-API.patch similarity index 100% rename from patches/server/0215-Grindstone-API.patch rename to patches/server/0217-Grindstone-API.patch diff --git a/patches/server/0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch b/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch similarity index 96% rename from patches/server/0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch rename to patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch index 073cbf07d..dff0db32f 100644 --- a/patches/server/0216-Ability-for-hoe-to-replant-crops-and-nether-warts.patch +++ b/patches/server/0218-Ability-for-hoe-to-replant-crops-and-nether-warts.patch @@ -74,10 +74,10 @@ index acbd60a2f162fe0e254e36d0e8e7face3fc8a7b3..da1c7999ca64199387054de46489d3ff + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 27b6b2c8dfa709229f709c1a030e7c680a1813e4..e49ddabb865e88782990024253d646cb0e8b32b4 100644 +index ce2c25871cacd7de0f22ac8942ada42daab2ebab..46c55ace74524aacaba1bbc453b16821b7922e0c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -505,6 +505,8 @@ public class PurpurWorldConfig { +@@ -507,6 +507,8 @@ public class PurpurWorldConfig { public Map axeWeatherables = new HashMap<>(); public Map hoeTillables = new HashMap<>(); public Map shovelFlattenables = new HashMap<>(); @@ -86,7 +86,7 @@ index 27b6b2c8dfa709229f709c1a030e7c680a1813e4..e49ddabb865e88782990024253d646cb private void toolSettings() { axeStrippables.clear(); axeWaxables.clear(); -@@ -772,6 +774,8 @@ public class PurpurWorldConfig { +@@ -774,6 +776,8 @@ public class PurpurWorldConfig { }); shovelFlattenables.put(block, new Flattenable(into, drops)); }); diff --git a/patches/server/0217-Turtle-eggs-random-tick-crack-chance.patch b/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch similarity index 93% rename from patches/server/0217-Turtle-eggs-random-tick-crack-chance.patch rename to patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch index 5b7cf621c..8efd358f7 100644 --- a/patches/server/0217-Turtle-eggs-random-tick-crack-chance.patch +++ b/patches/server/0219-Turtle-eggs-random-tick-crack-chance.patch @@ -18,10 +18,10 @@ index 4eb0f7a9cf6b12c02d0bd42980ae302dd56c1b8a..e1c984ec64565584c78fe0a6c7db3537 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e49ddabb865e88782990024253d646cb0e8b32b4..16fecadf20523f2a2bf72082bd558e59805e02ca 100644 +index 46c55ace74524aacaba1bbc453b16821b7922e0c..212ae6988d67fac1354ebd6a8cb7cd252f261c2f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1032,11 +1032,13 @@ public class PurpurWorldConfig { +@@ -1034,11 +1034,13 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromItems = false; public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; diff --git a/patches/server/0218-Mob-head-visibility-percent.patch b/patches/server/0220-Mob-head-visibility-percent.patch similarity index 90% rename from patches/server/0218-Mob-head-visibility-percent.patch rename to patches/server/0220-Mob-head-visibility-percent.patch index ef3dff7f4..b1235872b 100644 --- a/patches/server/0218-Mob-head-visibility-percent.patch +++ b/patches/server/0220-Mob-head-visibility-percent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mob head visibility percent diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 125b55068d017b96aa8410bf1936e71b593ce43f..c09ef8271f45e62629bcdca1b3885334fdb79211 100644 +index fd18e01249d9b9958200ee16efaeeaf11360bafe..9790c3ad54ff28ccb85db224b799bbdb08a34ba5 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1069,9 +1069,20 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -32,10 +32,10 @@ index 125b55068d017b96aa8410bf1936e71b593ce43f..c09ef8271f45e62629bcdca1b3885334 // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eaa909e9d1923fac9cb7ab6de228df48519c7fcf..a4f0aba3f0ecf59fa915ef3b6c537e3eb8ab18fc 100644 +index 212ae6988d67fac1354ebd6a8cb7cd252f261c2f..7863dda1663e2d6794e0c5fa6ee4fe1628c5afd3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1377,6 +1377,7 @@ public class PurpurWorldConfig { +@@ -1379,6 +1379,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index eaa909e9d1923fac9cb7ab6de228df48519c7fcf..a4f0aba3f0ecf59fa915ef3b6c537e3e private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1395,6 +1396,7 @@ public class PurpurWorldConfig { +@@ -1397,6 +1398,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); @@ -51,7 +51,7 @@ index eaa909e9d1923fac9cb7ab6de228df48519c7fcf..a4f0aba3f0ecf59fa915ef3b6c537e3e } public boolean dolphinRidable = false; -@@ -2222,6 +2224,7 @@ public class PurpurWorldConfig { +@@ -2224,6 +2226,7 @@ public class PurpurWorldConfig { public boolean piglinTakeDamageFromWater = false; public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; @@ -59,7 +59,7 @@ index eaa909e9d1923fac9cb7ab6de228df48519c7fcf..a4f0aba3f0ecf59fa915ef3b6c537e3e private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2237,6 +2240,7 @@ public class PurpurWorldConfig { +@@ -2239,6 +2242,7 @@ public class PurpurWorldConfig { piglinTakeDamageFromWater = getBoolean("mobs.piglin.takes-damage-from-water", piglinTakeDamageFromWater); piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); @@ -67,7 +67,7 @@ index eaa909e9d1923fac9cb7ab6de228df48519c7fcf..a4f0aba3f0ecf59fa915ef3b6c537e3e } public boolean piglinBruteRidable = false; -@@ -2521,6 +2525,7 @@ public class PurpurWorldConfig { +@@ -2523,6 +2527,7 @@ public class PurpurWorldConfig { public double skeletonScale = 1.0D; public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; @@ -75,7 +75,7 @@ index eaa909e9d1923fac9cb7ab6de228df48519c7fcf..a4f0aba3f0ecf59fa915ef3b6c537e3e private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2534,6 +2539,7 @@ public class PurpurWorldConfig { +@@ -2536,6 +2541,7 @@ public class PurpurWorldConfig { skeletonScale = Mth.clamp(getDouble("mobs.skeleton.attributes.scale", skeletonScale), 0.0625D, 16.0D); skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); @@ -83,7 +83,7 @@ index eaa909e9d1923fac9cb7ab6de228df48519c7fcf..a4f0aba3f0ecf59fa915ef3b6c537e3e } public boolean skeletonHorseRidable = false; -@@ -3103,6 +3109,7 @@ public class PurpurWorldConfig { +@@ -3105,6 +3111,7 @@ public class PurpurWorldConfig { public boolean zombieBypassMobGriefing = false; public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; @@ -91,7 +91,7 @@ index eaa909e9d1923fac9cb7ab6de228df48519c7fcf..a4f0aba3f0ecf59fa915ef3b6c537e3e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3122,6 +3129,7 @@ public class PurpurWorldConfig { +@@ -3124,6 +3131,7 @@ public class PurpurWorldConfig { zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); diff --git a/patches/server/0219-Configurable-valid-characters-for-usernames.patch b/patches/server/0221-Configurable-valid-characters-for-usernames.patch similarity index 100% rename from patches/server/0219-Configurable-valid-characters-for-usernames.patch rename to patches/server/0221-Configurable-valid-characters-for-usernames.patch diff --git a/patches/server/0220-Stop-bees-from-dying-after-stinging.patch b/patches/server/0222-Stop-bees-from-dying-after-stinging.patch similarity index 90% rename from patches/server/0220-Stop-bees-from-dying-after-stinging.patch rename to patches/server/0222-Stop-bees-from-dying-after-stinging.patch index a32a3c4f2..65eddc8d3 100644 --- a/patches/server/0220-Stop-bees-from-dying-after-stinging.patch +++ b/patches/server/0222-Stop-bees-from-dying-after-stinging.patch @@ -17,10 +17,10 @@ index db382cf32d215f1b98b960e0c1a8dfaf6e19422f..4b32a783cabf05f5bae0dba22eea8ac7 ++this.timeSinceSting; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8e9c7d1d913e3ed5015f4016c96e56942ce07f5e..ad407f1b3b343244e5323d022702cc075b910b48 100644 +index 7863dda1663e2d6794e0c5fa6ee4fe1628c5afd3..cd53426663b15a1c077b27db6fc28f722cd2bb41 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1151,6 +1151,7 @@ public class PurpurWorldConfig { +@@ -1153,6 +1153,7 @@ public class PurpurWorldConfig { public boolean beeCanWorkAtNight = false; public boolean beeCanWorkInRain = false; public boolean beeAlwaysDropExp = false; @@ -28,7 +28,7 @@ index 8e9c7d1d913e3ed5015f4016c96e56942ce07f5e..ad407f1b3b343244e5323d022702cc07 private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -1168,6 +1169,7 @@ public class PurpurWorldConfig { +@@ -1170,6 +1171,7 @@ public class PurpurWorldConfig { beeCanWorkAtNight = getBoolean("mobs.bee.can-work-at-night", beeCanWorkAtNight); beeCanWorkInRain = getBoolean("mobs.bee.can-work-in-rain", beeCanWorkInRain); beeAlwaysDropExp = getBoolean("mobs.bee.always-drop-exp", beeAlwaysDropExp); diff --git a/patches/server/0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch b/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch similarity index 98% rename from patches/server/0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch rename to patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch index f1c618603..c7b8f0a0c 100644 --- a/patches/server/0221-Give-bee-counts-in-beehives-to-Purpur-clients.patch +++ b/patches/server/0223-Give-bee-counts-in-beehives-to-Purpur-clients.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Give bee counts in beehives to Purpur clients diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 95e1dbd7a423d57c2cfc8546aa6f5741f00e31bb..9d2ece075144b036304025354e65d2cdcf5301fe 100644 +index f46523e4eeeca027fe116625741b7af21041a027..d1c13456353b5c83bd764bfa1ec2076b88e356ba 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1168,6 +1168,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0 && entity.getBrain().getMemory(MemoryModuleType.INTERACTION_TARGET).isPresent(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f43b835c9a7af1e19b9dd5de40fb2267c153595f..ac3042705a8ef4154b6feac9115bac19f7fdead3 100644 +index a46e3c0d5ef33f4ef39be237ab24e434dda8c570..19624a2e4f6cf83b9e43f338cb8fcafb2dfa562e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2893,6 +2893,7 @@ public class PurpurWorldConfig { +@@ -2895,6 +2895,7 @@ public class PurpurWorldConfig { public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; @@ -28,7 +28,7 @@ index f43b835c9a7af1e19b9dd5de40fb2267c153595f..ac3042705a8ef4154b6feac9115bac19 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2927,6 +2928,7 @@ public class PurpurWorldConfig { +@@ -2929,6 +2930,7 @@ public class PurpurWorldConfig { villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); diff --git a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch similarity index 93% rename from patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch rename to patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch index be2f10f95..35918ac1a 100644 --- a/patches/server/0230-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ b/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -17,10 +17,10 @@ index 8c4532a250f8679d729a35c17e9b5bd339264450..2b8336bd88641cfb29e94c8f01abfbdb } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a2c202fdc7cc0352e940d08751e958c7516bff75..1a4a756943a1ba888b85b8896db0942dce19ab8d 100644 +index 19624a2e4f6cf83b9e43f338cb8fcafb2dfa562e..e414b6d00b67d902ac782753a3c1ad84228de3d1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1019,8 +1019,10 @@ public class PurpurWorldConfig { +@@ -1021,8 +1021,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; diff --git a/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch similarity index 92% rename from patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch rename to patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch index 03f0ac5a7..a2ef132f8 100644 --- a/patches/server/0231-Config-for-mob-last-hurt-by-player-time.patch +++ b/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Config for mob last hurt by player time diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index c09ef8271f45e62629bcdca1b3885334fdb79211..e2a5d66e4b945f69d9f2b538b95aa0b187749d8b 100644 +index 9790c3ad54ff28ccb85db224b799bbdb08a34ba5..199a2619de1b6754edf89ffe0c63c0e5104e3055 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1601,13 +1601,13 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -38,10 +38,10 @@ index bf84c9664ca6d6c3d862e592c39bcc59374b63fe..051ffc663317fe5a4fafe0750c89fafd // Paper end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1a4a756943a1ba888b85b8896db0942dce19ab8d..9fd228060bd31deee69c0b76aba11883140a7d0b 100644 +index e414b6d00b67d902ac782753a3c1ad84228de3d1..5e8476fd89a1cf12ec5baa94c41fda8c494db694 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -143,6 +143,7 @@ public class PurpurWorldConfig { +@@ -144,6 +144,7 @@ public class PurpurWorldConfig { public boolean thunderStopsAfterSleep = true; public boolean persistentTileEntityLore = false; public boolean persistentTileEntityDisplayName = true; @@ -49,7 +49,7 @@ index 1a4a756943a1ba888b85b8896db0942dce19ab8d..9fd228060bd31deee69c0b76aba11883 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -174,6 +175,7 @@ public class PurpurWorldConfig { +@@ -176,6 +177,7 @@ public class PurpurWorldConfig { } persistentTileEntityLore = getBoolean("gameplay-mechanics.persistent-tileentity-lore", persistentTileEntityLore); persistentTileEntityDisplayName = getBoolean("gameplay-mechanics.persistent-tileentity-display-name", persistentTileEntityDisplayName); diff --git a/patches/server/0232-Anvil-repair-damage-options.patch b/patches/server/0234-Anvil-repair-damage-options.patch similarity index 97% rename from patches/server/0232-Anvil-repair-damage-options.patch rename to patches/server/0234-Anvil-repair-damage-options.patch index 1de4d3502..d8cfcd68b 100644 --- a/patches/server/0232-Anvil-repair-damage-options.patch +++ b/patches/server/0234-Anvil-repair-damage-options.patch @@ -63,10 +63,10 @@ index 50c907c962f936d2035bb7550750cdbd220b29c2..f9a2d2d4f798efa0d691996ec5ff7fe0 protected InteractionResult useWithoutItem(BlockState state, Level world, BlockPos pos, Player player, BlockHitResult hit) { if (!world.isClientSide) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9fd228060bd31deee69c0b76aba11883140a7d0b..71d8d33d31584aa9bb0d3b0c868d1b2028ba1e18 100644 +index 5e8476fd89a1cf12ec5baa94c41fda8c494db694..68585a9a1a1c62e7e6b075c6b12ca0397d43eb5a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -786,9 +786,13 @@ public class PurpurWorldConfig { +@@ -788,9 +788,13 @@ public class PurpurWorldConfig { public boolean anvilAllowColors = false; public boolean anvilColorsUseMiniMessage; diff --git a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch b/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch similarity index 94% rename from patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch rename to patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch index 5a76e719b..8187990a4 100644 --- a/patches/server/0233-Option-to-disable-turtle-egg-trampling-with-feather-.patch +++ b/patches/server/0235-Option-to-disable-turtle-egg-trampling-with-feather-.patch @@ -24,10 +24,10 @@ index e1c984ec64565584c78fe0a6c7db3537108bac59..3829dbae8542396f8360eae54f0ed18f return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9f4f3d94e6790b29cfda030780d95caf48eee0e5..d5b19afb053ff01962939d1584b2d00db3f9cea3 100644 +index 68585a9a1a1c62e7e6b075c6b12ca0397d43eb5a..86eea11d91a8d0f4d6d40ddbf83bdba9f7525ab1 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1047,12 +1047,14 @@ public class PurpurWorldConfig { +@@ -1049,12 +1049,14 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromMinecarts = false; public boolean turtleEggsBypassMobGriefing = false; public int turtleEggsRandomTickCrackChance = 500; diff --git a/patches/server/0234-Add-toggle-for-enchant-level-clamping.patch b/patches/server/0236-Add-toggle-for-enchant-level-clamping.patch similarity index 100% rename from patches/server/0234-Add-toggle-for-enchant-level-clamping.patch rename to patches/server/0236-Add-toggle-for-enchant-level-clamping.patch diff --git a/patches/server/0235-Skip-junit-tests-for-purpur-commands.patch b/patches/server/0237-Skip-junit-tests-for-purpur-commands.patch similarity index 100% rename from patches/server/0235-Skip-junit-tests-for-purpur-commands.patch rename to patches/server/0237-Skip-junit-tests-for-purpur-commands.patch diff --git a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch similarity index 93% rename from patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch index b4d142ded..fbb74462c 100644 --- a/patches/server/0236-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0238-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,10 +18,10 @@ index 052a131d7222ac490b5c40e65c1f801a4299b4e9..c885b214f4d7d91627e98d8779aab851 AABB axisalignedbb = this.getBoundingBox().inflate(10.0D, 10.0D, 10.0D); List list = world.getEntitiesOfClass(Villager.class, axisalignedbb); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d5b19afb053ff01962939d1584b2d00db3f9cea3..cc6b3d249cd63a4cf9f1888f21f251199cdccde4 100644 +index 86eea11d91a8d0f4d6d40ddbf83bdba9f7525ab1..3bfdb3c2c1f67a1281cfca44eb1eae6c888d8e92 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2904,6 +2904,8 @@ public class PurpurWorldConfig { +@@ -2906,6 +2906,8 @@ public class PurpurWorldConfig { public int villagerLobotomizeCheckInterval = 100; public boolean villagerLobotomizeWaitUntilTradeLocked = false; public boolean villagerDisplayTradeItem = true; @@ -30,7 +30,7 @@ index d5b19afb053ff01962939d1584b2d00db3f9cea3..cc6b3d249cd63a4cf9f1888f21f25119 private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2939,6 +2941,8 @@ public class PurpurWorldConfig { +@@ -2941,6 +2943,8 @@ public class PurpurWorldConfig { villagerLobotomizeCheckInterval = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheckInterval); villagerLobotomizeWaitUntilTradeLocked = getBoolean("mobs.villager.lobotomize.wait-until-trade-locked", villagerLobotomizeWaitUntilTradeLocked); villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); diff --git a/patches/server/0237-Stonecutter-damage.patch b/patches/server/0239-Stonecutter-damage.patch similarity index 97% rename from patches/server/0237-Stonecutter-damage.patch rename to patches/server/0239-Stonecutter-damage.patch index c097758f7..f0b810f67 100644 --- a/patches/server/0237-Stonecutter-damage.patch +++ b/patches/server/0239-Stonecutter-damage.patch @@ -115,7 +115,7 @@ index f6291ff377b38cb84692a9fd564b4b1a9780cf4f..224896124706764412033c8726c822e1 } else if (blockState.is(Blocks.HONEY_BLOCK)) { return PathType.STICKY_HONEY; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index c9f5047bfa48c12a9090cb8da4bb9045e38e8f89..483b2fa71df29e064e35694a6017286bf30f1568 100644 +index 26d7e7ace4491c444c31dc11359427259c04f93c..1f22e7cf584bf7361f3ca078b9935a096d1acba6 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -1140,7 +1140,7 @@ public class CraftEventFactory { @@ -143,10 +143,10 @@ index 2090ecfebe8bc164239d198c1c50b134c7bc60c5..dba6a69891f50ba057187a8138ff227a public static boolean advancementOnlyBroadcastToAffectedPlayer = false; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 369e63acfae5cc5fe1981b4750c4272ccec8f595..7218fa676a3f15b04282ad85098d4131c8464b78 100644 +index 3bfdb3c2c1f67a1281cfca44eb1eae6c888d8e92..52cb5982fc9550c5aea98b6926fbefbe32051b3c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1042,6 +1042,11 @@ public class PurpurWorldConfig { +@@ -1044,6 +1044,11 @@ public class PurpurWorldConfig { spongeAbsorbsWaterFromMud = getBoolean("blocks.sponge.absorbs-water-from-mud", spongeAbsorbsWaterFromMud); } diff --git a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch b/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch similarity index 92% rename from patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch rename to patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch index ca7a64b12..1ce277c74 100644 --- a/patches/server/0238-Configurable-damage-settings-for-magma-blocks.patch +++ b/patches/server/0240-Configurable-damage-settings-for-magma-blocks.patch @@ -18,10 +18,10 @@ index 7ffdcf18bf4bd8b5325c76945b2d80ca3fe52958..dfa931316fde0b2e80068a0edd1427ff } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c1b269ebd90be16888f7fcace9efc0e0c08a4448..f370e1e5132e5800114f8bd8700444d7892590ac 100644 +index 52cb5982fc9550c5aea98b6926fbefbe32051b3c..21898260e674dc1508a9c0689479be36826834b6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -983,6 +983,11 @@ public class PurpurWorldConfig { +@@ -985,6 +985,11 @@ public class PurpurWorldConfig { pistonBlockPushLimit = getInt("blocks.piston.block-push-limit", pistonBlockPushLimit); } diff --git a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch b/patches/server/0241-Add-config-for-snow-on-blue-ice.patch similarity index 93% rename from patches/server/0239-Add-config-for-snow-on-blue-ice.patch rename to patches/server/0241-Add-config-for-snow-on-blue-ice.patch index 3cbd2017d..a5bfa21c1 100644 --- a/patches/server/0239-Add-config-for-snow-on-blue-ice.patch +++ b/patches/server/0241-Add-config-for-snow-on-blue-ice.patch @@ -22,10 +22,10 @@ index 9908a0b5b1fec5f9de518a733f7abbbff7e1a9f9..0ad444cf7f798f63e9140a42c5d5d8ca } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f370e1e5132e5800114f8bd8700444d7892590ac..ac183cb85490adc2312f5ec674a515826e540ae4 100644 +index 21898260e674dc1508a9c0689479be36826834b6..7ac4f4f07fc6a7421706526d940ed22c28c2cf8d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -964,9 +964,11 @@ public class PurpurWorldConfig { +@@ -966,9 +966,11 @@ public class PurpurWorldConfig { public boolean mobsSpawnOnPackedIce = true; public boolean mobsSpawnOnBlueIce = true; diff --git a/patches/server/0240-Skeletons-eat-wither-roses.patch b/patches/server/0242-Skeletons-eat-wither-roses.patch similarity index 96% rename from patches/server/0240-Skeletons-eat-wither-roses.patch rename to patches/server/0242-Skeletons-eat-wither-roses.patch index 03eb14920..c7d62d94f 100644 --- a/patches/server/0240-Skeletons-eat-wither-roses.patch +++ b/patches/server/0242-Skeletons-eat-wither-roses.patch @@ -90,10 +90,10 @@ index 61b5f27c1125ed1b183dd3b86b44a10b7098f91c..3cbe4c1ed514936a00e0181cb1e647fb + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 823be371f4678bfe324db1a261c27361f22a7108..4dd70114e6d1b17cfddbeedf5f16751bfc36c8ef 100644 +index 7ac4f4f07fc6a7421706526d940ed22c28c2cf8d..9cc8e514663a35747d8e96786e8a338248b7a1df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2565,6 +2565,7 @@ public class PurpurWorldConfig { +@@ -2567,6 +2567,7 @@ public class PurpurWorldConfig { public boolean skeletonTakeDamageFromWater = false; public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; @@ -101,7 +101,7 @@ index 823be371f4678bfe324db1a261c27361f22a7108..4dd70114e6d1b17cfddbeedf5f16751b private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2579,6 +2580,7 @@ public class PurpurWorldConfig { +@@ -2581,6 +2582,7 @@ public class PurpurWorldConfig { skeletonTakeDamageFromWater = getBoolean("mobs.skeleton.takes-damage-from-water", skeletonTakeDamageFromWater); skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); diff --git a/patches/server/0241-Enchantment-Table-Persists-Lapis.patch b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch similarity index 98% rename from patches/server/0241-Enchantment-Table-Persists-Lapis.patch rename to patches/server/0243-Enchantment-Table-Persists-Lapis.patch index af44183a1..d98f94d93 100644 --- a/patches/server/0241-Enchantment-Table-Persists-Lapis.patch +++ b/patches/server/0243-Enchantment-Table-Persists-Lapis.patch @@ -136,10 +136,10 @@ index 39aac959775afeaeea211f21d498cb0ddf0a3fcb..6349a342c023f378af431a73a62fb017 + // Purpur } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a7f750506e03cae0e965dfd874e92d3157576fb0..b28282fc3a2715d77187fab816dce9b38adbe6c1 100644 +index 9cc8e514663a35747d8e96786e8a338248b7a1df..9b777b356044241951fed1990e166735100ff1fb 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1541,6 +1541,11 @@ public class PurpurWorldConfig { +@@ -1543,6 +1543,11 @@ public class PurpurWorldConfig { elderGuardianAlwaysDropExp = getBoolean("mobs.elder_guardian.always-drop-exp", elderGuardianAlwaysDropExp); } diff --git a/patches/server/0242-Option-to-disable-kick-for-out-of-order-chat.patch b/patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch similarity index 100% rename from patches/server/0242-Option-to-disable-kick-for-out-of-order-chat.patch rename to patches/server/0244-Option-to-disable-kick-for-out-of-order-chat.patch diff --git a/patches/server/0243-Config-for-sculk-shrieker-can_summon-state.patch b/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch similarity index 92% rename from patches/server/0243-Config-for-sculk-shrieker-can_summon-state.patch rename to patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch index 02af9f61a..4e201b760 100644 --- a/patches/server/0243-Config-for-sculk-shrieker-can_summon-state.patch +++ b/patches/server/0245-Config-for-sculk-shrieker-can_summon-state.patch @@ -18,10 +18,10 @@ index 0e05bfef55dcacb50766bba8328ffeb8a5394c31..e00fcea07e74de647c26ff9eb32bc682 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b28282fc3a2715d77187fab816dce9b38adbe6c1..b6b0ebe3c96c4c8f4ce9ed454ec64a7f64e6b950 100644 +index 9b777b356044241951fed1990e166735100ff1fb..92d6494169e34d5d7c29dd60835c647ce0dd36df 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1021,6 +1021,11 @@ public class PurpurWorldConfig { +@@ -1023,6 +1023,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0244-Config-to-not-let-coral-die.patch b/patches/server/0246-Config-to-not-let-coral-die.patch similarity index 94% rename from patches/server/0244-Config-to-not-let-coral-die.patch rename to patches/server/0246-Config-to-not-let-coral-die.patch index 9893e0d31..4145370bc 100644 --- a/patches/server/0244-Config-to-not-let-coral-die.patch +++ b/patches/server/0246-Config-to-not-let-coral-die.patch @@ -29,10 +29,10 @@ index a59b23f4062fa896836dec72cbd5097411774ad1..c526ea13a726624adaa654f09ff84c89 int i = aenumdirection.length; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b6b0ebe3c96c4c8f4ce9ed454ec64a7f64e6b950..3853e9e894c19da5a0e74c30a5e248c3e8790160 100644 +index 92d6494169e34d5d7c29dd60835c647ce0dd36df..26b8f6f80e06e5c71c41c438e96de84e4cd59024 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -870,6 +870,11 @@ public class PurpurWorldConfig { +@@ -872,6 +872,11 @@ public class PurpurWorldConfig { composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); } diff --git a/patches/server/0245-Add-local-difficulty-api.patch b/patches/server/0247-Add-local-difficulty-api.patch similarity index 100% rename from patches/server/0245-Add-local-difficulty-api.patch rename to patches/server/0247-Add-local-difficulty-api.patch diff --git a/patches/server/0247-Remove-Mojang-Profiler.patch b/patches/server/0247-Remove-Mojang-Profiler.patch deleted file mode 100644 index 6bd55ce39..000000000 --- a/patches/server/0247-Remove-Mojang-Profiler.patch +++ /dev/null @@ -1,2108 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Sat, 16 Jul 2022 21:37:10 -0500 -Subject: [PATCH] Remove Mojang Profiler - - -diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index d8ee4422a13c7f09b84e9bbe8b57f0c139caac32..0ba926b6ff0bd54159765cc7f37d1753ded89dee 100644 ---- a/src/main/java/net/minecraft/commands/Commands.java -+++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -169,7 +169,7 @@ public class Commands { - DamageCommand.register(this.dispatcher, commandRegistryAccess); - DataCommands.register(this.dispatcher); - DataPackCommand.register(this.dispatcher); -- DebugCommand.register(this.dispatcher); -+ //DebugCommand.register(this.dispatcher); // Purpur - DefaultGameModeCommands.register(this.dispatcher); - DifficultyCommand.register(this.dispatcher); - EffectCommands.register(this.dispatcher, commandRegistryAccess); -@@ -351,9 +351,9 @@ public class Commands { - // Paper end - CommandSourceStack commandlistenerwrapper = (CommandSourceStack) parseresults.getContext().getSource(); - -- Profiler.get().push(() -> { -+ /*Profiler.get().push(() -> { // Purpur - return "/" + s; -- }); -+ });*/ // Purpur - ContextChain contextchain = this.finishParsing(parseresults, s, commandlistenerwrapper, label); // CraftBukkit // Paper - Add UnknownCommandEvent - - try { -@@ -383,7 +383,7 @@ public class Commands { - Commands.LOGGER.error("'/{}' threw an exception", s, exception); - } - } finally { -- Profiler.get().pop(); -+ //Profiler.get().pop(); // Purpur - } - - } -diff --git a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -index 9f5c3ec2eae9b30bdb8dbcb328d7f701cb7aeb9d..e7cc8105fff9cb952eabfd006e0a4e4638091019 100644 ---- a/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -+++ b/src/main/java/net/minecraft/commands/execution/tasks/BuildContexts.java -@@ -42,7 +42,7 @@ public class BuildContexts> { - ChainModifiers chainModifiers = flags; - List list = sources; - if (contextChain.getStage() != Stage.EXECUTE) { -- context.profiler().push(() -> "prepare " + this.commandInput); -+ //context.profiler().push(() -> "prepare " + this.commandInput); // Purpur - - try { - for (int i = context.forkLimit(); contextChain.getStage() != Stage.EXECUTE; contextChain = contextChain.nextStage()) { -@@ -86,7 +86,7 @@ public class BuildContexts> { - } - } - } finally { -- context.profiler().pop(); -+ //context.profiler().pop(); // Purpur - } - } - -diff --git a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java -index e9775b4506909bee65a74964f0d5391a0513de1d..684f7f202305c09b1037c5d38a52a5ea7f00751b 100644 ---- a/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java -+++ b/src/main/java/net/minecraft/commands/execution/tasks/ExecuteCommand.java -@@ -23,7 +23,7 @@ public class ExecuteCommand> implements Unbo - - @Override - public void execute(T executionCommandSource, ExecutionContext executionContext, Frame frame) { -- executionContext.profiler().push(() -> "execute " + this.commandInput); -+ //executionContext.profiler().push(() -> "execute " + this.commandInput); // Purpur - - try { - executionContext.incrementCost(); -@@ -37,7 +37,7 @@ public class ExecuteCommand> implements Unbo - } catch (CommandSyntaxException var9) { - executionCommandSource.handleError(var9, this.modifiers.isForked(), executionContext.tracer()); - } finally { -- executionContext.profiler().pop(); -+ //executionContext.profiler().pop(); // Purpur - } - } - } -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 2065f03b70bc77fffd8bac4fab6efc89d598f8b4..cb18ba70ea12785a95de90e4f9d1533ab755a576 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -431,12 +431,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { -+ //this.metricsRecorder = InactiveMetricsRecorder.INSTANCE; // Purpur -+ /*this.onMetricsRecordingStopped = (methodprofilerresults) -> { // Purpur - this.stopRecordingMetrics(); -- }; -- this.onMetricsRecordingFinished = (path) -> { -- }; -+ };*/ // Purpur -+ //this.onMetricsRecordingFinished = (path) -> { // Purpur -+ //}; // Purpur - this.random = RandomSource.create(); - this.port = -1; - this.levels = Maps.newLinkedHashMap(); -@@ -1050,9 +1050,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - return false; -@@ -1365,7 +1365,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur - -- gameprofilerfiller.push(() -> { -+ /*gameprofilerfiller.push(() -> { // Purpur - String s = String.valueOf(worldserver); - - return s + " " + String.valueOf(worldserver.dimension().location()); -- }); -+ });*/ // Purpur - /* Drop global time updates - if (this.tickCount % 20 == 0) { -- gameprofilerfiller.push("timeSync"); -+ //gameprofilerfiller.push("timeSync"); // Purpur - this.synchronizeTime(worldserver); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - // CraftBukkit end */ - -- gameprofilerfiller.push("tick"); -+ //gameprofilerfiller.push("tick"); // Purpur - - try { - worldserver.tick(shouldKeepTicking); -@@ -1912,26 +1912,26 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - this.executeBlocking(() -> { - this.saveDebugReport(path.resolve("server")); -@@ -2927,37 +2927,38 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop resultConsumer, Consumer dumpConsumer) { -- this.onMetricsRecordingStopped = (methodprofilerresults) -> { -+ /*this.onMetricsRecordingStopped = (methodprofilerresults) -> { // Purpur - this.stopRecordingMetrics(); - resultConsumer.accept(methodprofilerresults); - }; - this.onMetricsRecordingFinished = dumpConsumer; -- this.willStartRecordingMetrics = true; -+ this.willStartRecordingMetrics = true;*/ // Purpur - } - - public void stopRecordingMetrics() { -- this.metricsRecorder = InactiveMetricsRecorder.INSTANCE; -+ //this.metricsRecorder = InactiveMetricsRecorder.INSTANCE; // Purpur - } - - public void finishRecordingMetrics() { -- this.metricsRecorder.end(); -+ //this.metricsRecorder.end(); // Purpur - } - - public void cancelRecordingMetrics() { -- this.metricsRecorder.cancel(); -+ //this.metricsRecorder.cancel(); // Purpur - } - - public Path getWorldPath(LevelResource worldSavePath) { -@@ -3010,15 +3011,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> functions, ResourceLocation label) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - - Objects.requireNonNull(label); -- gameprofilerfiller.push(label::toString); -+ //gameprofilerfiller.push(label::toString); // Purpur - Iterator iterator = functions.iterator(); - - while (iterator.hasNext()) { -@@ -66,15 +66,15 @@ public class ServerFunctionManager { - this.execute(commandfunction, this.getGameLoopSender()); - } - -- Profiler.get().pop(); -+ //Profiler.get().pop(); // Purpur - } - - public void execute(CommandFunction function, CommandSourceStack source) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push(() -> { -+ /*gameprofilerfiller.push(() -> { // Purpur - return "function " + String.valueOf(function.id()); -- }); -+ });*/ // Purpur - - try { - InstantiatedFunction instantiatedfunction = function.instantiate((CompoundTag) null, this.getDispatcher()); -@@ -87,7 +87,7 @@ public class ServerFunctionManager { - } catch (Exception exception) { - ServerFunctionManager.LOGGER.warn("Failed to execute function {}", function.id(), exception); - } finally { -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - } -diff --git a/src/main/java/net/minecraft/server/commands/PerfCommand.java b/src/main/java/net/minecraft/server/commands/PerfCommand.java -index 8c587f829c5e8c6b6df3150024c4ae704988c47b..8ac4d5dbe7f8febf4226f26a6b035282dcdf1b0f 100644 ---- a/src/main/java/net/minecraft/server/commands/PerfCommand.java -+++ b/src/main/java/net/minecraft/server/commands/PerfCommand.java -@@ -42,6 +42,7 @@ public class PerfCommand { - } - - private static int startProfilingDedicatedServer(CommandSourceStack source) throws CommandSyntaxException { -+ if (true) return removedMessage(source); // Purpur - MinecraftServer minecraftServer = source.getServer(); - if (minecraftServer.isRecordingMetrics()) { - throw ERROR_ALREADY_RUNNING.create(); -@@ -55,6 +56,7 @@ public class PerfCommand { - } - - private static int stopProfilingDedicatedServer(CommandSourceStack source) throws CommandSyntaxException { -+ if (true) return removedMessage(source); // Purpur - MinecraftServer minecraftServer = source.getServer(); - if (!minecraftServer.isRecordingMetrics()) { - throw ERROR_NOT_RUNNING.create(); -@@ -64,6 +66,18 @@ public class PerfCommand { - } - } - -+ // Purpur start -+ private static int removedMessage(CommandSourceStack source) { -+ if (true) { -+ net.kyori.adventure.text.minimessage.MiniMessage mm = net.kyori.adventure.text.minimessage.MiniMessage.miniMessage(); -+ source.getSender().sendMessage(mm.deserialize("Purpur has removed Mojang's Profiler to save your performance. Please use /spark instead")); -+ source.getSender().sendMessage(mm.deserialize("For more information, view its documentation at")); -+ source.getSender().sendMessage(mm.deserialize("https://spark.lucko.me/docs/Command-Usage")); -+ } -+ return 0; -+ } -+ // Purpur end -+ - private static void saveResults(CommandSourceStack source, Path tempProfilingDirectory, MinecraftServer server) { - String string = String.format( - Locale.ROOT, "%s-%s-%s", Util.getFilenameFormattedDateTime(), server.getWorldData().getLevelName(), SharedConstants.getCurrentVersion().getId() -diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 5b3a886c624b36557cbfaccdc3fb05a46a4ba36a..e16f22dd82b4315da34af3c9a189d9d5fec0fd2f 100644 ---- a/src/main/java/net/minecraft/server/level/ChunkMap.java -+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -406,16 +406,16 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider - } - - protected void tick(BooleanSupplier shouldKeepTicking) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("poi"); -+ //gameprofilerfiller.push("poi"); // Purpur - this.poiManager.tick(shouldKeepTicking); -- gameprofilerfiller.popPush("chunk_unload"); -+ //gameprofilerfiller.popPush("chunk_unload"); // Purpur - if (!this.level.noSave()) { - this.processUnloads(shouldKeepTicking); - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - public boolean hasWork() { -diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -index 3c711e1df57ac5b0f8795ebb12299d275792b1d4..bb168636cbf23b5b0c7232529e390f434546dc37 100644 ---- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java -+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java -@@ -442,38 +442,38 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - // CraftBukkit start - modelled on below - public void purgeUnload() { - if (true) return; // Paper - rewrite chunk system -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("purge"); -+ //gameprofilerfiller.push("purge"); // Purpur - this.distanceManager.purgeStaleTickets(); - this.runDistanceManagerUpdates(); -- gameprofilerfiller.popPush("unload"); -+ //gameprofilerfiller.popPush("unload"); // Purpur - this.chunkMap.tick(() -> true); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - this.clearCache(); - } - // CraftBukkit end - - @Override - public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("purge"); -+ //gameprofilerfiller.push("purge"); // Purpur - if (this.level.tickRateManager().runsNormally() || !tickChunks || this.level.spigotConfig.unloadFrozenChunks) { // Spigot - this.distanceManager.purgeStaleTickets(); - } - - this.runDistanceManagerUpdates(); -- gameprofilerfiller.popPush("chunks"); -+ //gameprofilerfiller.popPush("chunks"); // Purpur - if (tickChunks) { - ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getPlayerChunkLoader().tick(); // Paper - rewrite chunk system - this.tickChunks(); - this.chunkMap.tick(); - } - -- gameprofilerfiller.popPush("unload"); -+ //gameprofilerfiller.popPush("unload"); // Purpur - this.chunkMap.tick(shouldKeepTicking); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - this.clearCache(); - } - -@@ -483,34 +483,34 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - - this.lastInhabitedUpdate = i; - if (!this.level.isDebug()) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("pollingChunks"); -+ //gameprofilerfiller.push("pollingChunks"); // Purpur - if (this.level.tickRateManager().runsNormally()) { - List list = this.tickingChunks; - - try { -- gameprofilerfiller.push("filteringTickingChunks"); -+ //gameprofilerfiller.push("filteringTickingChunks"); // Purpur - this.collectTickingChunks(list); -- gameprofilerfiller.popPush("shuffleChunks"); -+ //gameprofilerfiller.popPush("shuffleChunks"); // Purpur - // Paper start - chunk tick iteration optimisation - this.shuffleRandom.setSeed(this.level.random.nextLong()); - if (!this.level.paperConfig().entities.spawning.perPlayerMobSpawns) Util.shuffle(list, this.shuffleRandom); // Paper - Optional per player mob spawns; do not need this when per-player is enabled - // Paper end - chunk tick iteration optimisation -- this.tickChunks(gameprofilerfiller, j, list); -- gameprofilerfiller.pop(); -+ this.tickChunks(null, j, list); // Purpur -+ //gameprofilerfiller.pop(); // Purpur - } finally { - list.clear(); - } - } - -- this.broadcastChangedChunks(gameprofilerfiller); -- gameprofilerfiller.pop(); -+ this.broadcastChangedChunks(null); // Purpur -+ //gameprofilerfiller.pop(); // Purpur - } - } - -- private void broadcastChangedChunks(ProfilerFiller profiler) { -- profiler.push("broadcast"); -+ private void broadcastChangedChunks(ProfilerFiller profiler) { // Purpur -+ //profiler.push("broadcast"); // Purpur - Iterator iterator = this.chunkHoldersToBroadcast.iterator(); - - while (iterator.hasNext()) { -@@ -523,7 +523,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - } - - this.chunkHoldersToBroadcast.clear(); -- profiler.pop(); -+ //profiler.pop(); // Purpur - } - - private void collectTickingChunks(List chunks) { -@@ -550,7 +550,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - } - - private void tickChunks(ProfilerFiller profiler, long timeDelta, List chunks) { -- profiler.popPush("naturalSpawnCount"); -+ //profiler.popPush("naturalSpawnCount"); // Purpur - int j = this.distanceManager.getNaturalSpawnChunkCount(); - // Paper start - Optional per player mob spawns - final int naturalSpawnChunkCount = j; -@@ -577,7 +577,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - // Paper end - Optional per player mob spawns - - this.lastSpawnState = spawnercreature_d; -- profiler.popPush("spawnAndTick"); -+ //profiler.popPush("spawnAndTick"); // Purpur - boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && !this.level.players().isEmpty(); // CraftBukkit - int k = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING); - List list1; -@@ -615,7 +615,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - } - } - -- profiler.popPush("customSpawners"); -+ //profiler.popPush("customSpawners"); // Purpur - if (flag) { - this.level.tickCustomSpawners(this.spawnEnemies, this.spawnFriendlies); - } -@@ -813,7 +813,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon - - @Override - protected void doRunTask(Runnable task) { -- Profiler.get().incrementCounter("runTask"); -+ //Profiler.get().incrementCounter("runTask"); // Purpur - super.doRunTask(task); - } - -diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index a8650040b69fe92f18606e5029ecd881961b39e7..4c11f0a23ee897691d8a8022baa134ef6f5e3d89 100644 ---- a/src/main/java/net/minecraft/server/level/ServerLevel.java -+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -724,18 +724,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - } - - public void tick(BooleanSupplier shouldKeepTicking) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - - this.handlingTick = true; - TickRateManager tickratemanager = this.tickRateManager(); - boolean flag = tickratemanager.runsNormally(); - - if (flag) { -- gameprofilerfiller.push("world border"); -+ //gameprofilerfiller.push("world border"); // Purpur - this.getWorldBorder().tick(); -- gameprofilerfiller.popPush("weather"); -+ //gameprofilerfiller.popPush("weather"); // Purpur - this.advanceWeatherCycle(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); -@@ -766,30 +766,30 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - this.tickTime(); - } - -- gameprofilerfiller.push("tickPending"); -+ //gameprofilerfiller.push("tickPending"); // Purpur - if (!this.isDebug() && flag) { - j = this.getGameTime(); -- gameprofilerfiller.push("blockTicks"); -+ //gameprofilerfiller.push("blockTicks"); // Purpur - this.blockTicks.tick(j, paperConfig().environment.maxBlockTicks, this::tickBlock); // Paper - configurable max block ticks -- gameprofilerfiller.popPush("fluidTicks"); -+ //gameprofilerfiller.popPush("fluidTicks"); // Purpur - this.fluidTicks.tick(j, paperConfig().environment.maxFluidTicks, this::tickFluid); // Paper - configurable max fluid ticks -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - -- gameprofilerfiller.popPush("raid"); -+ //gameprofilerfiller.popPush("raid"); // Purpur - if (flag) { - this.raids.tick(); - } - -- gameprofilerfiller.popPush("chunkSource"); -+ //gameprofilerfiller.popPush("chunkSource"); // Purpur - this.getChunkSource().tick(shouldKeepTicking, true); -- gameprofilerfiller.popPush("blockEvents"); -+ //gameprofilerfiller.popPush("blockEvents"); // Purpur - if (flag) { - this.runBlockEvents(); - } - - this.handlingTick = false; -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - boolean flag1 = !paperConfig().unsupportedSettings.disableWorldTickingWhenEmpty || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players // Paper - restore this - - if (flag1) { -@@ -797,20 +797,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - } - - if (flag1 || this.emptyTime++ < 300) { -- gameprofilerfiller.push("entities"); -+ //gameprofilerfiller.push("entities"); // Purpur - if (this.dragonFight != null && flag) { -- gameprofilerfiller.push("dragonFight"); -+ //gameprofilerfiller.push("dragonFight"); // Purpur - this.dragonFight.tick(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - org.spigotmc.ActivationRange.activateEntities(this); // Spigot - this.entityTickList.forEach((entity) -> { - if (!entity.isRemoved()) { - if (!tickratemanager.isEntityFrozen(entity)) { -- gameprofilerfiller.push("checkDespawn"); -+ //gameprofilerfiller.push("checkDespawn"); // Purpur - entity.checkDespawn(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - if (true) { // Paper - rewrite chunk system - Entity entity1 = entity.getVehicle(); - -@@ -822,20 +822,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - entity.stopRiding(); - } - -- gameprofilerfiller.push("tick"); -+ //gameprofilerfiller.push("tick"); // Purpur - this.guardEntityTick(this::tickNonPassenger, entity); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - } - } - }); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - this.tickBlockEntities(); - } - -- gameprofilerfiller.push("entityManagement"); -+ //gameprofilerfiller.push("entityManagement"); // Purpur - // Paper - rewrite chunk system -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - @Override -@@ -962,9 +962,9 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - boolean flag = this.isRaining(); - int j = chunkcoordintpair.getMinBlockX(); - int k = chunkcoordintpair.getMinBlockZ(); -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("thunder"); -+ //gameprofilerfiller.push("thunder"); // Purpur - if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && simpleRandom.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder // Paper - optimise random ticking - BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); - -@@ -1001,7 +1001,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - } - } - -- gameprofilerfiller.popPush("iceandsnow"); -+ //gameprofilerfiller.popPush("iceandsnow"); // Purpur - - if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow - for (int l = 0; l < randomTickSpeed; ++l) { -@@ -1011,12 +1011,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - } - } // Paper - Option to disable ice and snow - -- gameprofilerfiller.popPush("tickBlocks"); -+ //gameprofilerfiller.popPush("tickBlocks"); // Purpur - if (randomTickSpeed > 0) { - this.optimiseRandomTick(chunk, randomTickSpeed); // Paper - optimise random ticking - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - @VisibleForTesting -@@ -1355,18 +1355,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - // Spigot end - final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); // Paper - EAR 2 - entity.setOldPosAndRot(); -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - - ++entity.tickCount; -- gameprofilerfiller.push(() -> { -+ /*gameprofilerfiller.push(() -> { // Purpur - return BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType()).toString(); -- }); -- gameprofilerfiller.incrementCounter("tickNonPassenger"); -+ });*/ // Purpur -+ //gameprofilerfiller.incrementCounter("tickNonPassenger"); // Purpur - if (isActive) { // Paper - EAR 2 - entity.tick(); - entity.postTick(); // CraftBukkit - } else { entity.inactiveTick(); } // Paper - EAR 2 -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - Iterator iterator = entity.getPassengers().iterator(); - - while (iterator.hasNext()) { -@@ -1389,12 +1389,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - if (passenger instanceof Player || this.entityTickList.contains(passenger)) { - passenger.setOldPosAndRot(); - ++passenger.tickCount; -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push(() -> { -+ /*gameprofilerfiller.push(() -> { // Purpur - return BuiltInRegistries.ENTITY_TYPE.getKey(passenger.getType()).toString(); -- }); -- gameprofilerfiller.incrementCounter("tickPassenger"); -+ });*/ // Purpur -+ //gameprofilerfiller.incrementCounter("tickPassenger"); // Purpur - // Paper start - EAR 2 - if (isActive) { - passenger.rideTick(); -@@ -1406,7 +1406,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe - vehicle.positionRider(passenger); - } - // Paper end - EAR 2 -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - Iterator iterator = passenger.getPassengers().iterator(); - - while (iterator.hasNext()) { -diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 51229d600ea8a58e5c75bd97a1926f5cdf3704d4..0286b1bd461a5050cb78b9485bac84909ae91150 100644 ---- a/src/main/java/net/minecraft/server/level/ServerPlayer.java -+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1669,15 +1669,15 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple - this.unsetRemoved(); - */ - // CraftBukkit end -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("moving"); -+ //gameprofilerfiller.push("moving"); // Purpur - if (worldserver != null && resourcekey == LevelStem.OVERWORLD && worldserver.getTypeKey() == LevelStem.NETHER) { // CraftBukkit - empty to fall through to null to event - this.enteredNetherPosition = this.position(); - } - -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("placing"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("placing"); // Purpur - // CraftBukkit start - this.isChangingDimension = true; // CraftBukkit - Set teleport invulnerability only if player changing worlds - LevelData worlddata = worldserver.getLevelData(); -@@ -1695,7 +1695,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple - this.connection.internalTeleport(PositionMoveRotation.of(teleportTarget), teleportTarget.relatives()); // CraftBukkit - use internal teleport without event - this.connection.resetPosition(); - worldserver.addDuringTeleport(this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - this.triggerDimensionChangeTriggers(worldserver1); - this.stopUsingItem(); - this.connection.send(new ClientboundPlayerAbilitiesPacket(this.getAbilities())); -diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 7d276c191b391bca24948ddb36b8b7d0f1f03b03..49cb116fd55e6d5cd36b9773b39191e4ab06b7e0 100644 ---- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -274,7 +274,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack - } - - protected void keepConnectionAlive() { -- Profiler.get().push("keepAlive"); -+ //Profiler.get().push("keepAlive"); // Purpur - // Paper start - give clients a longer time to respond to pings as per pre 1.12.2 timings - // This should effectively place the keepalive handling back to "as it was" before 1.12.2 - long currentTime = Util.getMillis(); -@@ -307,7 +307,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack - } - // Paper end - give clients a longer time to respond to pings as per pre 1.12.2 timings - -- Profiler.get().pop(); -+ //Profiler.get().pop(); // Purpur - } - - private boolean checkIfClosed(long time) { -diff --git a/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java b/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java -index d2d82e4f22bfeac8881b6815e4bef56c254fded9..abc92e09b7bb636612f04ace8232947c8d454e68 100644 ---- a/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java -+++ b/src/main/java/net/minecraft/server/packs/resources/ResourceManagerReloadListener.java -@@ -12,10 +12,10 @@ public interface ResourceManagerReloadListener extends PreparableReloadListener - PreparableReloadListener.PreparationBarrier synchronizer, ResourceManager manager, Executor prepareExecutor, Executor applyExecutor - ) { - return synchronizer.wait(Unit.INSTANCE).thenRunAsync(() -> { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("listener"); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("listener"); // Purpur - this.onResourceManagerReload(manager); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - }, applyExecutor); - } - -diff --git a/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java b/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java -index bce2dac613d29083dd5fbb68739304cc5a6d4d27..600a7036b503f60cc9c95f189f73c2dbf020e2e1 100644 ---- a/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java -+++ b/src/main/java/net/minecraft/util/profiling/ActiveProfiler.java -@@ -55,7 +55,7 @@ public class ActiveProfiler implements ProfileCollector { - this.started = true; - this.path = ""; - this.paths.clear(); -- this.push("root"); -+ //this.push("root"); // Purpur - } - } - -@@ -64,7 +64,7 @@ public class ActiveProfiler implements ProfileCollector { - if (!this.started) { - LOGGER.error("Profiler tick already ended - missing startTick()?"); - } else { -- this.pop(); -+ //this.pop(); // Purpur - this.started = false; - if (!this.path.isEmpty()) { - LOGGER.error( -@@ -93,7 +93,7 @@ public class ActiveProfiler implements ProfileCollector { - - @Override - public void push(Supplier locationGetter) { -- this.push(locationGetter.get()); -+ //this.push(locationGetter.get()); // Purpur - } - - @Override -@@ -132,14 +132,14 @@ public class ActiveProfiler implements ProfileCollector { - - @Override - public void popPush(String location) { -- this.pop(); -- this.push(location); -+ //this.pop(); // Purpur -+ //this.push(location); // Purpur - } - - @Override - public void popPush(Supplier locationGetter) { -- this.pop(); -- this.push(locationGetter); -+ //this.pop(); // Purpur -+ //this.push(locationGetter); // Purpur - } - - private ActiveProfiler.PathEntry getCurrentEntry() { -diff --git a/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java b/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java -index bc5c8879befe849ce81becf5e3fba6757b01cb70..ce81d6bd87f688a24003f2fbf6d5010ad6273917 100644 ---- a/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java -+++ b/src/main/java/net/minecraft/util/profiling/ProfilerFiller.java -@@ -6,51 +6,68 @@ import net.minecraft.util.profiling.metrics.MetricCategory; - public interface ProfilerFiller { - String ROOT = "root"; - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void startTick(); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void endTick(); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void push(String location); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void push(Supplier locationGetter); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void pop(); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void popPush(String location); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void popPush(Supplier locationGetter); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - default void addZoneText(String label) { - } - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - default void addZoneValue(long value) { - } - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - default void setZoneColor(int color) { - } - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - default Zone zone(String name) { - this.push(name); - return new Zone(this); - } - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - default Zone zone(Supplier nameSupplier) { - this.push(nameSupplier); - return new Zone(this); - } - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void markForCharting(MetricCategory type); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - default void incrementCounter(String marker) { -- this.incrementCounter(marker, 1); -+ //this.incrementCounter(marker, 1); // Purpur - } - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void incrementCounter(String marker, int num); - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - default void incrementCounter(Supplier markerGetter) { -- this.incrementCounter(markerGetter, 1); -+ //this.incrementCounter(markerGetter, 1); // Purpur - } - -+ @io.papermc.paper.annotation.DoNotUse // Purpur - void incrementCounter(Supplier markerGetter, int num); - - static ProfilerFiller combine(ProfilerFiller first, ProfilerFiller second) { -@@ -72,80 +89,80 @@ public interface ProfilerFiller { - - @Override - public void startTick() { -- this.first.startTick(); -- this.second.startTick(); -+ //this.first.startTick(); // Purpur -+ //this.second.startTick(); // Purpur - } - - @Override - public void endTick() { -- this.first.endTick(); -- this.second.endTick(); -+ //this.first.endTick(); // Purpur -+ //this.second.endTick(); // Purpur - } - - @Override - public void push(String location) { -- this.first.push(location); -- this.second.push(location); -+ //this.first.push(location); // Purpur -+ //this.second.push(location); // Purpur - } - - @Override - public void push(Supplier locationGetter) { -- this.first.push(locationGetter); -- this.second.push(locationGetter); -+ //this.first.push(locationGetter); // Purpur -+ //this.second.push(locationGetter); // Purpur - } - - @Override - public void markForCharting(MetricCategory type) { -- this.first.markForCharting(type); -- this.second.markForCharting(type); -+ //this.first.markForCharting(type); // Purpur -+ //this.second.markForCharting(type); // Purpur - } - - @Override - public void pop() { -- this.first.pop(); -- this.second.pop(); -+ //this.first.pop(); // Purpur -+ //this.second.pop(); // Purpur - } - - @Override - public void popPush(String location) { -- this.first.popPush(location); -- this.second.popPush(location); -+ //this.first.popPush(location); // Purpur -+ //this.second.popPush(location); // Purpur - } - - @Override - public void popPush(Supplier locationGetter) { -- this.first.popPush(locationGetter); -- this.second.popPush(locationGetter); -+ //this.first.popPush(locationGetter); // Purpur -+ //this.second.popPush(locationGetter); // Purpur - } - - @Override - public void incrementCounter(String marker, int num) { -- this.first.incrementCounter(marker, num); -- this.second.incrementCounter(marker, num); -+ //this.first.incrementCounter(marker, num); // Purpur -+ //this.second.incrementCounter(marker, num); // Purpur - } - - @Override - public void incrementCounter(Supplier markerGetter, int num) { -- this.first.incrementCounter(markerGetter, num); -- this.second.incrementCounter(markerGetter, num); -+ //this.first.incrementCounter(markerGetter, num); // Purpur -+ //this.second.incrementCounter(markerGetter, num); // Purpur - } - - @Override - public void addZoneText(String label) { -- this.first.addZoneText(label); -- this.second.addZoneText(label); -+ //this.first.addZoneText(label); // Purpur -+ //this.second.addZoneText(label); // Purpur - } - - @Override - public void addZoneValue(long value) { -- this.first.addZoneValue(value); -- this.second.addZoneValue(value); -+ //this.first.addZoneValue(value); // Purpur -+ //this.second.addZoneValue(value); // Purpur - } - - @Override - public void setZoneColor(int color) { -- this.first.setZoneColor(color); -- this.second.setZoneColor(color); -+ //this.first.setZoneColor(color); // Purpur -+ //this.second.setZoneColor(color); // Purpur - } - } - } -diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 520808a1238b28ec42f261b58b2b768cdb1d8277..1e740178898720cffff0a18255ebb9b46265f45f 100644 ---- a/src/main/java/net/minecraft/world/entity/Entity.java -+++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -946,9 +946,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - // CraftBukkit end - - public void baseTick() { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("entityBaseTick"); -+ //gameprofilerfiller.push("entityBaseTick"); // Purpur - if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups - this.inBlockState = null; - if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -1017,7 +1017,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - public void setSharedFlagOnFire(boolean onFire) { -@@ -1243,9 +1243,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - } - -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("move"); -+ //gameprofilerfiller.push("move"); // Purpur - if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { - movement = movement.multiply(this.stuckSpeedMultiplier); - this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1254,7 +1254,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - // Paper start - ignore movement changes while inactive. - if (isTemporarilyActive && !(this instanceof ItemEntity) && movement == getDeltaMovement() && type == MoverType.SELF) { - setDeltaMovement(Vec3.ZERO); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - return; - } - // Paper end -@@ -1275,8 +1275,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); - } - -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("rest"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("rest"); // Purpur - boolean flag = !Mth.equal(movement.x, vec3d1.x); - boolean flag1 = !Mth.equal(movement.z, vec3d1.z); - -@@ -1298,7 +1298,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - - if (this.isRemoved()) { -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } else { - if (this.horizontalCollision) { - Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1347,7 +1347,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - float f = this.getBlockSpeedFactor(); - - this.setDeltaMovement(this.getDeltaMovement().multiply((double) f, 1.0D, (double) f)); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - } - // Paper start - detailed watchdog information -@@ -3512,9 +3512,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - this.processPortalCooldown(); - if (this.portalProcess != null) { - if (this.portalProcess.processPortalTeleportation(worldserver, this, this.canUsePortal(false))) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("portal"); -+ //gameprofilerfiller.push("portal"); // Purpur - this.setPortalCooldown(); - TeleportTransition teleporttransition = this.portalProcess.getPortalDestination(worldserver, this); - -@@ -3526,7 +3526,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } else if (this.portalProcess.hasExpired()) { - this.portalProcess = null; - } -@@ -4079,12 +4079,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - } - } - -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("teleportCrossDimension"); -+ //gameprofilerfiller.push("teleportCrossDimension"); // Purpur - entity = this.getType().create(world, EntitySpawnReason.DIMENSION_TRAVEL); - if (entity == null) { -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - return null; - } else { - // Paper start - Fix item duplication and teleport issues -@@ -4110,7 +4110,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess - - world.resetEmptyTime(); - teleportTarget.postTeleportTransition().onTransition(entity); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - return entity; - } - } -diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e2a5d66e4b945f69d9f2b538b95aa0b187749d8b..cd2fd85178acdfffc07b72bc0419a73e1d1bef64 100644 ---- a/src/main/java/net/minecraft/world/entity/LivingEntity.java -+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -457,9 +457,9 @@ public abstract class LivingEntity extends Entity implements Attackable { - } - - super.baseTick(); -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("livingEntityBaseTick"); -+ //gameprofilerfiller.push("livingEntityBaseTick"); // Purpur - if (this.fireImmune() || this.level().isClientSide) { - this.clearFire(); - } -@@ -567,7 +567,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.yHeadRotO = this.yHeadRot; - this.yRotO = this.getYRot(); - this.xRotO = this.getXRot(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - @Override -@@ -3382,12 +3382,12 @@ public abstract class LivingEntity extends Entity implements Attackable { - } - - this.run += (f3 - this.run) * 0.3F; -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("headTurn"); -+ //gameprofilerfiller.push("headTurn"); // Purpur - f2 = this.tickHeadTurn(f1, f2); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("rangeChecks"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("rangeChecks"); // Purpur - - // Paper start - stop large pitch and yaw changes from crashing the server - this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3399,7 +3399,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; - // Paper end - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - this.animStep += f2; - if (this.isFallFlying()) { - ++this.fallFlyTicks; -@@ -3629,21 +3629,21 @@ public abstract class LivingEntity extends Entity implements Attackable { - } - - this.setDeltaMovement(d0, d1, d2); -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("ai"); -+ //gameprofilerfiller.push("ai"); // Purpur - if (this.isImmobile()) { - this.jumping = false; - this.xxa = 0.0F; - this.zza = 0.0F; - } else if (this.isEffectiveAi()) { -- gameprofilerfiller.push("newAi"); -+ //gameprofilerfiller.push("newAi"); // Purpur - this.serverAiStep(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("jump"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("jump"); // Purpur - if (this.jumping && this.isAffectedByFluids()) { - double d3; - -@@ -3670,8 +3670,8 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.noJumpDelay = 0; - } - -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("travel"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("travel"); // Purpur - this.xxa *= 0.98F; - this.zza *= 0.98F; - if (this.isFallFlying()) { -@@ -3704,8 +3704,8 @@ public abstract class LivingEntity extends Entity implements Attackable { - } - - this.calculateEntityAnimation(this instanceof FlyingAnimal); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("freezing"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("freezing"); // Purpur - if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API - int i = this.getTicksFrozen(); - -@@ -3726,15 +3726,15 @@ public abstract class LivingEntity extends Entity implements Attackable { - } - } - -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("push"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("push"); // Purpur - if (this.autoSpinAttackTicks > 0) { - --this.autoSpinAttackTicks; - this.checkAutoSpinAttack(axisalignedbb, this.getBoundingBox()); - } - - this.pushEntities(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - // Paper start - Add EntityMoveEvent - // Purpur start - if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { -diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 7978e307e7bb7f80993c49dcc5ada319a907c648..ff9d23aef4658922692b43a859bd83632fe23612 100644 ---- a/src/main/java/net/minecraft/world/entity/Mob.java -+++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -371,15 +371,15 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - @Override - public void baseTick() { - super.baseTick(); -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("mobBaseTick"); -+ //gameprofilerfiller.push("mobBaseTick"); // Purpur - if (this.isAlive() && this.random.nextInt(1000) < this.ambientSoundTime++) { - this.resetAmbientSoundTime(); - this.playAmbientSound(); - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - incrementTicksSinceLastInteraction(); // Purpur - } - -@@ -698,9 +698,9 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - @Override - public void aiStep() { - super.aiStep(); -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("looting"); -+ //gameprofilerfiller.push("looting"); // Purpur - Level world = this.level(); - - if (world instanceof ServerLevel worldserver) { -@@ -724,7 +724,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - } - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - protected Vec3i getPickupReach() { -@@ -946,44 +946,44 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - return; - } - // Paper end - Allow nerfed mobs to jump and float -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("sensing"); -+ //gameprofilerfiller.push("sensing"); // Purpur - this.sensing.tick(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - int i = this.tickCount + this.getId(); - - if (i % 2 != 0 && this.tickCount > 1) { -- gameprofilerfiller.push("targetSelector"); -+ //gameprofilerfiller.push("targetSelector"); // Purpur - this.targetSelector.tickRunningGoals(false); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("goalSelector"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("goalSelector"); // Purpur - this.goalSelector.tickRunningGoals(false); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } else { -- gameprofilerfiller.push("targetSelector"); -+ //gameprofilerfiller.push("targetSelector"); // Purpur - this.targetSelector.tick(); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("goalSelector"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("goalSelector"); // Purpur - this.goalSelector.tick(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - -- gameprofilerfiller.push("navigation"); -+ //gameprofilerfiller.push("navigation"); // Purpur - this.navigation.tick(); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("mob tick"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("mob tick"); // Purpur - this.customServerAiStep((ServerLevel) this.level()); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("controls"); -- gameprofilerfiller.push("move"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("controls"); // Purpur -+ //gameprofilerfiller.push("move"); // Purpur - this.moveControl.tick(); -- gameprofilerfiller.popPush("look"); -+ //gameprofilerfiller.popPush("look"); // Purpur - this.lookControl.tick(); -- gameprofilerfiller.popPush("jump"); -+ //gameprofilerfiller.popPush("jump"); // Purpur - this.jumpControl.tick(); -- gameprofilerfiller.pop(); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.pop(); // Purpur - this.sendDebugPackets(); - } - -diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -index 29ae74339a4831ccef3d01e8054931715ba192ad..74c5914bc51cff128d4b86853316e5e51e02b416 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -+++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java -@@ -82,8 +82,8 @@ public class GoalSelector { - } - - public void tick() { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("goalCleanup"); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("goalCleanup"); // Purpur - - for (WrappedGoal wrappedGoal : this.availableGoals) { - if (wrappedGoal.isRunning() && (goalContainsAnyFlags(wrappedGoal, this.goalTypes) || !wrappedGoal.canContinueToUse())) { // Paper - Perf: optimize goal types by removing streams -@@ -92,8 +92,8 @@ public class GoalSelector { - } - - this.lockedFlags.entrySet().removeIf(entry -> !entry.getValue().isRunning()); -- profilerFiller.pop(); -- profilerFiller.push("goalUpdate"); -+ //profilerFiller.pop(); // Purpur -+ //profilerFiller.push("goalUpdate"); // Purpur - - for (WrappedGoal wrappedGoal2 : this.availableGoals) { - // Paper start -@@ -113,13 +113,13 @@ public class GoalSelector { - } - } - -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - this.tickRunningGoals(true); - } - - public void tickRunningGoals(boolean tickAll) { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("goalTick"); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("goalTick"); // Purpur - - for (WrappedGoal wrappedGoal : this.availableGoals) { - if (wrappedGoal.isRunning() && (tickAll || wrappedGoal.requiresUpdateEveryTick())) { -@@ -127,7 +127,7 @@ public class GoalSelector { - } - } - -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - } - - public Set getAvailableGoals() { -diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index 48c0de870a5bbf647309e69361dfb10ab56c65ab..a5289b6c453c24cb7b8b3a301b72c3adf92c1d13 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java -@@ -188,13 +188,13 @@ public abstract class PathNavigation { - } - } - // Paper end - EntityPathfindEvent -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("pathfind"); -+ //ProfilerFiller profilerFiller = Profiler.get(); -+ //profilerFiller.push("pathfind"); // Purpur - BlockPos blockPos = useHeadPos ? this.mob.blockPosition().above() : this.mob.blockPosition(); - int i = (int)(followRange + (float)range); - PathNavigationRegion pathNavigationRegion = new PathNavigationRegion(this.level, blockPos.offset(-i, -i, -i), blockPos.offset(i, i, i)); - Path path = this.pathFinder.findPath(pathNavigationRegion, this.mob, positions, followRange, distance, this.maxVisitedNodesMultiplier); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - if (path != null && path.getTarget() != null) { - this.targetPos = path.getTarget(); - this.reachRange = distance; -diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java -index 116b1e251ffe68bae5c404d0823c2bc7c1afddf6..8f5a5db1a07fa6a95ecfacaab2f9de609202faf4 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java -+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensing.java -@@ -28,10 +28,10 @@ public class Sensing { - } else if (this.unseen.contains(i)) { - return false; - } else { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("hasLineOfSight"); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("hasLineOfSight"); // Purpur - boolean bl = this.mob.hasLineOfSight(entity); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - if (bl) { - this.seen.add(i); - } else { -diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 5904b82b87bcdbe41367843885f7c1bd1272d1f1..f60961bd5fdf6d1417e458b92e311c1a0a62463d 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -+++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -262,15 +262,15 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("allayBrain"); -+ //gameprofilerfiller.push("allayBrain"); // Purpur - //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish - this.getBrain().tick(world, this); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("allayActivityUpdate"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("allayActivityUpdate"); // Purpur - AllayAi.updateActivity(this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - super.customServerAiStep(world); - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index 9ef53608f1608e88de7a7b3e96b43d8d2b4230ae..84516dcfc6cd0fe16c26538ccb86fb5c85b44ffa 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java -+++ b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java -@@ -163,14 +163,14 @@ public class Armadillo extends Animal { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("armadilloBrain"); -+ //gameprofilerfiller.push("armadilloBrain"); // Purpur - ((Brain) this.brain).tick(world, this); // CraftBukkit - decompile error -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("armadilloActivityUpdate"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("armadilloActivityUpdate"); // Purpur - ArmadilloAi.updateActivity(this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - if (this.isAlive() && !this.isBaby() && --this.scuteTime <= 0) { - this.forceDrops = true; // CraftBukkit - if (this.dropFromGiftLootTable(world, BuiltInLootTables.ARMADILLO_SHED, this::spawnAtLocation)) { -diff --git a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 91768d49c3cbef0a135cfd0e60bdb4e84bf109b3..c80d74caa393a31e09f2776cdb3cb950ef99e2ef 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -+++ b/src/main/java/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -332,15 +332,15 @@ public class Axolotl extends Animal implements VariantHolder, B - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("axolotlBrain"); -+ //gameprofilerfiller.push("axolotlBrain"); // Purpur - //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish - this.getBrain().tick(world, this); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("axolotlActivityUpdate"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("axolotlActivityUpdate"); // Purpur - AxolotlAi.updateActivity(this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - if (!this.isNoAi()) { - Optional optional = this.getBrain().getMemory(MemoryModuleType.PLAY_DEAD_TICKS); - -diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index dbce71f45c008da883b6d244a06343d83ae25e7e..56d97225a909fd55f0d8aec992d5b6d42687c948 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -+++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -@@ -154,16 +154,16 @@ public class Camel extends AbstractHorse { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("camelBrain"); -+ //gameprofilerfiller.push("camelBrain"); // Purpur - Brain behaviorcontroller = (Brain) this.getBrain(); // CraftBukkit - decompile error - - behaviorcontroller.tick(world, this); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("camelActivityUpdate"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("camelActivityUpdate"); // Purpur - CamelAi.updateActivity(this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - super.customServerAiStep(world); - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -index 49915ec0ee5fb6e7d25b079e0410942d44aa1e33..501a12398c56fe0df4e76a3bbce0f98c6c5aa6cb 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java -@@ -240,14 +240,14 @@ public class Frog extends Animal implements VariantHolder> { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("frogBrain"); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("frogBrain"); // Purpur - //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish - this.getBrain().tick(world, this); -- profilerFiller.pop(); -- profilerFiller.push("frogActivityUpdate"); -+ //profilerFiller.pop(); // Purpur -+ //profilerFiller.push("frogActivityUpdate"); // Purpur - FrogAi.updateActivity(this); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - super.customServerAiStep(world); - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index fb91677fb03b7bc1decdf181b7b15d971ffacdc2..071d14cc6697587ec14f02c69c78df364e7d8a8f 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -122,15 +122,15 @@ public class Tadpole extends AbstractFish { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); - -- gameprofilerfiller.push("tadpoleBrain"); -+ //gameprofilerfiller.push("tadpoleBrain"); // Purpur - //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // // Purpur - TODO: Pufferfish - this.getBrain().tick(world, this); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("tadpoleActivityUpdate"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("tadpoleActivityUpdate"); // Purpur - TadpoleAi.updateActivity(this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - super.customServerAiStep(world); - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 7f196e8a8b5094375c9b13fe6e7311a3450dbb5f..51dcc3893b964e6d20a2b963d3105a2687b3c426 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -@@ -226,15 +226,15 @@ public class Goat extends Animal { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("goatBrain"); -+ //gameprofilerfiller.push("goatBrain"); // Purpur - //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish - this.getBrain().tick(world, this); -- gameprofilerfiller.pop(); -- gameprofilerfiller.push("goatActivityUpdate"); -+ //gameprofilerfiller.pop(); // Purpur -+ //gameprofilerfiller.push("goatActivityUpdate"); // Purpur - GoatAi.updateActivity(this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - super.customServerAiStep(world); - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 464a16df15d8759d66f94ad080d1ea28b3f6474c..3fb4f12095883ea4ec6e0d60e0600b9de6ed7be2 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -+++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -495,13 +495,13 @@ public class Sniffer extends Animal { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("snifferBrain"); -+ //gameprofilerfiller.push("snifferBrain"); // Purpur - this.getBrain().tick(world, this); -- gameprofilerfiller.popPush("snifferActivityUpdate"); -+ //gameprofilerfiller.popPush("snifferActivityUpdate"); // Purpur - SnifferAi.updateActivity(this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - super.customServerAiStep(world); - } - -diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index cb20c018c11a0e707c2083cf964bd5303d216edd..f30ad422f19757664228f2064465fbcb22bb54f6 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -+++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -281,11 +281,11 @@ public class Zoglin extends Monster implements HoglinBase { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("zoglinBrain"); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("zoglinBrain"); // Purpur - if (getRider() == null || !this.isControllable()) // Purpur - only use brain if no rider - this.getBrain().tick(world, this); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - this.updateActivity(); - } - -diff --git a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -index a16fd9c4679e874ad2d499f3c00c2ddfd780a7a5..0bc771e20a9bab139cd3fc03ff40baabf787b2f7 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -+++ b/src/main/java/net/minecraft/world/entity/monster/breeze/Breeze.java -@@ -235,12 +235,12 @@ public class Breeze extends Monster { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("breezeBrain"); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("breezeBrain"); // Purpur - this.getBrain().tick(world, this); -- profilerFiller.popPush("breezeActivityUpdate"); -+ //profilerFiller.popPush("breezeActivityUpdate"); // Purpur - BreezeAi.updateActivity(this); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - super.customServerAiStep(world); - } - -diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 7520ab7ec5902f083aefd68895a7d9c47bf4e418..7afde99f81ec222ecbffbdcdad3aa6404e8221e0 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -+++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -196,11 +196,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("hoglinBrain"); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("hoglinBrain"); // Purpur - //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // Purpur - TODO: Pufferfish - this.getBrain().tick(world, this); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - HoglinAi.updateActivity(this); - if (this.isConverting()) { - this.timeInOverworld++; -diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 7d5ce66c6691b0911ed5afcb1d4186525f09a15e..b53e4a312ea0dbbd16e948e61c3f6b836d46f3b8 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -339,12 +339,12 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("piglinBrain"); -+ //gameprofilerfiller.push("piglinBrain"); // Purpur - //if ((getRider() == null || !this.isControllable()) && this.behaviorTick++ % this.activatedPriority == 0) // Pufferfish // Purpur - only use brain if no rider // // Purpur - TODO: Pufferfish - this.getBrain().tick(world, this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - PiglinAi.updateActivity(this); - super.customServerAiStep(world); - } -diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index bc3b0eb21200eae7e419b2571871b36fc1e07c0f..719179fb232a4f39a2c1642cc0e9593f4dea4bb8 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -148,11 +148,11 @@ public class PiglinBrute extends AbstractPiglin { - - @Override - protected void customServerAiStep(ServerLevel world) { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("piglinBruteBrain"); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("piglinBruteBrain"); // Purpur - if (getRider() == null || this.isControllable()) // Purpur - only use brain if no rider - this.getBrain().tick(world, this); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - PiglinBruteAi.updateActivity(this); - PiglinBruteAi.maybePlayActivitySound(this); - super.customServerAiStep(world); -diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index fcfea2cdd5df9fe505df3f7c866cd8d27ad9b249..692261880d05daa75fc53dde31d0f2b95dc52746 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -+++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -303,9 +303,9 @@ public class Warden extends Monster implements VibrationSystem { - protected void customServerAiStep(ServerLevel world) { - ProfilerFiller gameprofilerfiller = Profiler.get(); - -- gameprofilerfiller.push("wardenBrain"); -+ //gameprofilerfiller.push("wardenBrain"); // Purpur - this.getBrain().tick(world, this); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - super.customServerAiStep(world); - if ((this.tickCount + this.getId()) % 120 == 0) { - Warden.applyDarknessAround(world, this.position(), this, 20); -diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index c885b214f4d7d91627e98d8779aab8515f205636..b4ffad429ace965f16ebf47119c880b709b27f2e 100644 ---- a/src/main/java/net/minecraft/world/entity/npc/Villager.java -+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -340,9 +340,9 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - } - protected void customServerAiStep(ServerLevel world, boolean inactive) { // Purpur - not final - // Paper end - EAR 2 -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("villagerBrain"); -+ //gameprofilerfiller.push("villagerBrain"); // Purpur - // Purpur start - if (this.level().purpurConfig.villagerLobotomizeEnabled) { - // treat as inactive if lobotomized -@@ -352,7 +352,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - } - // Purpur end - if (!inactive && (getRider() == null || !this.isControllable())) this.getBrain().tick(world, this); // Purpur -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - if (this.assignProfessionWhenSpawned) { - this.assignProfessionWhenSpawned = false; - } -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index c2aff2f03451b97f1ec6bd4ee987bb729177320a..7493262c2879af196e5585b15faad69ae42764e3 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -270,7 +270,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - - @Override - public final List getEntitiesOfClass(final Class entityClass, final AABB boundingBox, final Predicate predicate) { -- Profiler.get().incrementCounter("getEntities"); -+ //Profiler.get().incrementCounter("getEntities"); // Purpur - final List ret = new java.util.ArrayList<>(); - - ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getEntities(entityClass, null, boundingBox, ret, predicate); -@@ -280,7 +280,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - - @Override - public final List moonrise$getHardCollidingEntities(final Entity entity, final AABB box, final Predicate predicate) { -- Profiler.get().incrementCounter("getEntities"); -+ //Profiler.get().incrementCounter("getEntities"); // Purpur - final List ret = new java.util.ArrayList<>(); - - ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getHardCollidingEntities(entity, box, ret, predicate); -@@ -1486,9 +1486,9 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - } - - protected void tickBlockEntities() { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); // Purpur - -- gameprofilerfiller.push("blockEntities"); -+ //gameprofilerfiller.push("blockEntities"); // Purpur - this.tickingBlockEntities = true; - if (!this.pendingBlockEntityTickers.isEmpty()) { - this.blockEntityTickers.addAll(this.pendingBlockEntityTickers); -@@ -1526,7 +1526,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 - - this.tickingBlockEntities = false; -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - this.spigotConfig.currentPrimedTnt = 0; // Spigot - } - -@@ -1696,7 +1696,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - - @Override - public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { -- Profiler.get().incrementCounter("getEntities"); -+ //Profiler.get().incrementCounter("getEntities"); // Purpur - List list = Lists.newArrayList(); - - // Paper start - rewrite chunk system -@@ -1726,7 +1726,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl - public void getEntities(final EntityTypeTest entityTypeTest, - final AABB boundingBox, final Predicate predicate, - final List into, final int maxCount) { -- Profiler.get().incrementCounter("getEntities"); -+ //Profiler.get().incrementCounter("getEntities"); // Purpur - - if (entityTypeTest instanceof net.minecraft.world.entity.EntityType byType) { - if (maxCount != Integer.MAX_VALUE) { -diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 5297798c2be1ba85569c2b92ed221956bf75477a..fa47d14e17d9e7d1b62de7990c875245c3a445a3 100644 ---- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java -+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -211,7 +211,7 @@ public final class NaturalSpawner { - } - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - // Paper start - Add mobcaps commands -diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 4640baec5bed6c2d53cc0f8ca1d273cc115abe9b..15c83c6f5f56d6a27911d3bbd326cef1c21b1e58 100644 ---- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -407,11 +407,11 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p - if (LightEngine.hasDifferentLightProperties(iblockdata1, iblockdata)) { - ProfilerFiller gameprofilerfiller = Profiler.get(); - -- gameprofilerfiller.push("updateSkyLightSources"); -+ //gameprofilerfiller.push("updateSkyLightSources"); // Purpur - // Paper - rewrite chunk system -- gameprofilerfiller.popPush("queueCheckLight"); -+ //gameprofilerfiller.popPush("queueCheckLight"); // Purpur - this.level.getChunkSource().getLightEngine().checkBlock(blockposition); -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - - boolean flag3 = iblockdata1.hasBlockEntity(); -@@ -1058,9 +1058,9 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p - - if (LevelChunk.this.isTicking(blockposition)) { - try { -- ProfilerFiller gameprofilerfiller = Profiler.get(); -+ //ProfilerFiller gameprofilerfiller = Profiler.get(); - -- gameprofilerfiller.push(this::getType); -+ //gameprofilerfiller.push(this::getType); - BlockState iblockdata = LevelChunk.this.getBlockState(blockposition); - - if (this.blockEntity.getType().isValid(iblockdata)) { -@@ -1076,7 +1076,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p - // Paper end - Remove the Block Entity if it's invalid - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); - } catch (Throwable throwable) { - if (throwable instanceof ThreadDeath) throw throwable; // Paper - // Paper start - Prevent block entity and entity crashes -diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -index cc7d94144e39f7dace7b569b4567def98396e8f9..91abbda59446d462979dddc4b380c6f24d0b4c92 100644 ---- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -+++ b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java -@@ -58,9 +58,9 @@ public class PathFinder { - @Nullable - // Paper start - Perf: remove streams and optimize collection - private Path findPath(Node startNode, List> positions, float followRange, int distance, float rangeMultiplier) { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("find_path"); -- profilerFiller.markForCharting(MetricCategory.PATH_FINDING); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("find_path"); // Purpur -+ //profilerFiller.markForCharting(MetricCategory.PATH_FINDING); // Purpur - // Set set = positions.keySet(); - startNode.g = 0.0F; - startNode.h = this.getBestH(startNode, positions); // Paper - optimize collection -@@ -128,7 +128,7 @@ public class PathFinder { - if (best == null || comparator.compare(path, best) < 0) - best = path; - } -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - return best; - // Paper end - Perf: remove streams and optimize collection - } -diff --git a/src/main/java/net/minecraft/world/ticks/LevelTicks.java b/src/main/java/net/minecraft/world/ticks/LevelTicks.java -index 778e6476c86d823dc8efe603a95e589e8b2ea9d9..452fb3442221fd66debfe1e1d6e85ee17951e556 100644 ---- a/src/main/java/net/minecraft/world/ticks/LevelTicks.java -+++ b/src/main/java/net/minecraft/world/ticks/LevelTicks.java -@@ -79,20 +79,20 @@ public class LevelTicks implements LevelTickAccess { - } - - public void tick(long time, int maxTicks, BiConsumer ticker) { -- ProfilerFiller profilerFiller = Profiler.get(); -- profilerFiller.push("collect"); -- this.collectTicks(time, maxTicks, profilerFiller); -- profilerFiller.popPush("run"); -- profilerFiller.incrementCounter("ticksToRun", this.toRunThisTick.size()); -+ //ProfilerFiller profilerFiller = Profiler.get(); // Purpur -+ //profilerFiller.push("collect"); // Purpur -+ this.collectTicks(time, maxTicks, null); // Purpur -+ //profilerFiller.popPush("run"); // Purpur -+ //profilerFiller.incrementCounter("ticksToRun", this.toRunThisTick.size()); // Purpur - this.runCollectedTicks(ticker); -- profilerFiller.popPush("cleanup"); -+ //profilerFiller.popPush("cleanup"); // Purpur - this.cleanupAfterTick(); -- profilerFiller.pop(); -+ //profilerFiller.pop(); // Purpur - } - - private void collectTicks(long time, int maxTicks, ProfilerFiller profiler) { - this.sortContainersToTick(time); -- profiler.incrementCounter("containersToTick", this.containersToTick.size()); -+ //profiler.incrementCounter("containersToTick", this.containersToTick.size()); // Purpur - this.drainContainers(time, maxTicks); - this.rescheduleLeftoverContainers(); - } diff --git a/patches/server/0246-Add-toggle-for-RNG-manipulation.patch b/patches/server/0248-Add-toggle-for-RNG-manipulation.patch similarity index 89% rename from patches/server/0246-Add-toggle-for-RNG-manipulation.patch rename to patches/server/0248-Add-toggle-for-RNG-manipulation.patch index a182279db..03a1c9b65 100644 --- a/patches/server/0246-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0248-Add-toggle-for-RNG-manipulation.patch @@ -7,7 +7,7 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d2f2301cff71b8ce64b803dadcb09610e8a2a289..aa0771c7ab8302c03d7a54c6c1282e21defc4de7 100644 +index 7b1a5d7a84690865d7263f5c6cd1393d5cc9495e..d55668d897912991f3995d911bf5d22a4254aff9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -640,7 +640,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -20,7 +20,7 @@ index d2f2301cff71b8ce64b803dadcb09610e8a2a289..aa0771c7ab8302c03d7a54c6c1282e21 this.fluidHeight = new Object2DoubleArrayMap(2); this.fluidOnEyes = new HashSet(); diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index dd807cd532fbdbcc20bd29659e2b578714302d25..01cd55eaac78e35dc57f4f07628ad97bc535da5a 100644 +index 7cfd9e4e29b8f3cf277679f785bae3cb12d2bd20..36a56553702fa6e4a2ac92b3639c210c94faee73 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java @@ -46,7 +46,7 @@ public class Squid extends AgeableWaterCreature { @@ -33,10 +33,10 @@ index dd807cd532fbdbcc20bd29659e2b578714302d25..01cd55eaac78e35dc57f4f07628ad97b } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3853e9e894c19da5a0e74c30a5e248c3e8790160..a647855f277d79d4ebbf370cff0d15991acbb308 100644 +index 26b8f6f80e06e5c71c41c438e96de84e4cd59024..aa68b09686aec0ea58e04835baa33ddc7a5b5bad 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -209,9 +209,11 @@ public class PurpurWorldConfig { +@@ -211,9 +211,11 @@ public class PurpurWorldConfig { public int entityLifeSpan = 0; public float entityLeftHandedChance = 0.05f; diff --git a/patches/server/0248-Add-more-logger-output-for-invalid-movement-kicks.patch b/patches/server/0249-Add-more-logger-output-for-invalid-movement-kicks.patch similarity index 96% rename from patches/server/0248-Add-more-logger-output-for-invalid-movement-kicks.patch rename to patches/server/0249-Add-more-logger-output-for-invalid-movement-kicks.patch index bad0d8dbd..c4b0a4622 100644 --- a/patches/server/0248-Add-more-logger-output-for-invalid-movement-kicks.patch +++ b/patches/server/0249-Add-more-logger-output-for-invalid-movement-kicks.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add more logger output for invalid movement kicks diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index ec0849f3b26a8571323d1aa2be5357d00e45a63a..61b19f52aeb371abdd29f41291099f35a9b4c258 100644 +index 35b9951554a41213003badfa38e6db7825097055..50bc64000f24aa2ae0df2ce7fc77f27d760b8764 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -761,6 +761,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0249-Add-Bee-API.patch b/patches/server/0250-Add-Bee-API.patch similarity index 100% rename from patches/server/0249-Add-Bee-API.patch rename to patches/server/0250-Add-Bee-API.patch diff --git a/patches/server/0250-Debug-Marker-API.patch b/patches/server/0251-Debug-Marker-API.patch similarity index 96% rename from patches/server/0250-Debug-Marker-API.patch rename to patches/server/0251-Debug-Marker-API.patch index 4b1053a8c..39a7810ab 100644 --- a/patches/server/0250-Debug-Marker-API.patch +++ b/patches/server/0251-Debug-Marker-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Debug Marker API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 7bc58c693db720ca75dc4925bfb8d41aa69f5b90..e2d6bdac09fcef3f3c8a533139ae28c63df0241e 100644 +index a8ae9eab152e5d3dfe413708646265587e297910..7b2ae23cc5dc8d334ec22d85865050f61eae14cb 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1631,6 +1631,42 @@ public final class CraftServer implements Server { @@ -99,10 +99,10 @@ index 3be5c25f8ce15e2f035c92e5fe90693e0236967d..ea1b4f0073f775fdd18eb080886d60c7 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c7bdded671d72f9b4915292b8c8752e7d73c2b38..2b9da5a176937374c1162a8a14990951b3a5ed0b 100644 +index db62bab7ef0fbd53e1840eb8b87699ed9d08fb01..d939a339c2b4258a972d0412eb1ecf93ab8e06a6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3641,5 +3641,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3639,5 +3639,43 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void resetIdleTimer() { getHandle().resetLastActionTime(); } diff --git a/patches/server/0251-mob-spawning-option-to-ignore-creative-players.patch b/patches/server/0252-mob-spawning-option-to-ignore-creative-players.patch similarity index 88% rename from patches/server/0251-mob-spawning-option-to-ignore-creative-players.patch rename to patches/server/0252-mob-spawning-option-to-ignore-creative-players.patch index 2de471f6e..aa743a75b 100644 --- a/patches/server/0251-mob-spawning-option-to-ignore-creative-players.patch +++ b/patches/server/0252-mob-spawning-option-to-ignore-creative-players.patch @@ -5,7 +5,7 @@ Subject: [PATCH] mob spawning option to ignore creative players diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index fa47d14e17d9e7d1b62de7990c875245c3a445a3..7f936a7ba994ccb51c17168c798b42dde0877a5d 100644 +index 5297798c2be1ba85569c2b92ed221956bf75477a..e9e919fdcd61cb59e8b02a0ac5b33c8a1c7ca240 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -280,7 +280,7 @@ public final class NaturalSpawner { @@ -18,10 +18,10 @@ index fa47d14e17d9e7d1b62de7990c875245c3a445a3..7f936a7ba994ccb51c17168c798b42dd if (entityhuman != null) { double d2 = entityhuman.distanceToSqr(d0, (double) i, d1); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index e15e7b977a91cb8a972f057b321a3382362d884c..a793533817368077d70d120f8f443b4a87b70e64 100644 +index aa68b09686aec0ea58e04835baa33ddc7a5b5bad..92b5eecbb2474f5dbb4a9eca55bde27abced5680 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -376,6 +376,7 @@ public class PurpurWorldConfig { +@@ -378,6 +378,7 @@ public class PurpurWorldConfig { public boolean phantomSpawning; public boolean villagerTraderSpawning; public boolean villageSiegeSpawning; @@ -29,7 +29,7 @@ index e15e7b977a91cb8a972f057b321a3382362d884c..a793533817368077d70d120f8f443b4a private void mobSpawnerSettings() { // values of "default" or null will default to true only if the world environment is normal (aka overworld) Predicate predicate = (bool) -> (bool != null && bool) || (bool == null && environment == World.Environment.NORMAL); -@@ -384,6 +385,7 @@ public class PurpurWorldConfig { +@@ -386,6 +387,7 @@ public class PurpurWorldConfig { phantomSpawning = getBoolean("gameplay-mechanics.mob-spawning.phantoms", predicate); villagerTraderSpawning = getBoolean("gameplay-mechanics.mob-spawning.wandering-traders", predicate); villageSiegeSpawning = getBoolean("gameplay-mechanics.mob-spawning.village-sieges", predicate); diff --git a/patches/server/0252-Add-skeleton-bow-accuracy-option.patch b/patches/server/0253-Add-skeleton-bow-accuracy-option.patch similarity index 93% rename from patches/server/0252-Add-skeleton-bow-accuracy-option.patch rename to patches/server/0253-Add-skeleton-bow-accuracy-option.patch index 9a0d671ab..f58a51014 100644 --- a/patches/server/0252-Add-skeleton-bow-accuracy-option.patch +++ b/patches/server/0253-Add-skeleton-bow-accuracy-option.patch @@ -18,10 +18,10 @@ index 2cadbc0d56908ca978e1735eff07f5e634548606..39d02cf0e31832e30c4f034b0b5385e3 // CraftBukkit end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a793533817368077d70d120f8f443b4a87b70e64..c9f1f1340f69250c82f3dfcac593274dad34645e 100644 +index 92b5eecbb2474f5dbb4a9eca55bde27abced5680..28fdb5aaf7cd27cab1e3d04283f512b6786b19f6 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2585,6 +2585,8 @@ public class PurpurWorldConfig { +@@ -2587,6 +2587,8 @@ public class PurpurWorldConfig { public boolean skeletonAlwaysDropExp = false; public double skeletonHeadVisibilityPercent = 0.5D; public int skeletonFeedWitherRoses = 0; @@ -30,7 +30,7 @@ index a793533817368077d70d120f8f443b4a87b70e64..c9f1f1340f69250c82f3dfcac593274d private void skeletonSettings() { skeletonRidable = getBoolean("mobs.skeleton.ridable", skeletonRidable); skeletonRidableInWater = getBoolean("mobs.skeleton.ridable-in-water", skeletonRidableInWater); -@@ -2600,6 +2602,18 @@ public class PurpurWorldConfig { +@@ -2602,6 +2604,18 @@ public class PurpurWorldConfig { skeletonAlwaysDropExp = getBoolean("mobs.skeleton.always-drop-exp", skeletonAlwaysDropExp); skeletonHeadVisibilityPercent = getDouble("mobs.skeleton.head-visibility-percent", skeletonHeadVisibilityPercent); skeletonFeedWitherRoses = getInt("mobs.skeleton.feed-wither-roses", skeletonFeedWitherRoses); diff --git a/patches/server/0253-Add-death-screen-API.patch b/patches/server/0254-Add-death-screen-API.patch similarity index 87% rename from patches/server/0253-Add-death-screen-API.patch rename to patches/server/0254-Add-death-screen-API.patch index dabf4b609..b5958be2a 100644 --- a/patches/server/0253-Add-death-screen-API.patch +++ b/patches/server/0254-Add-death-screen-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add death screen API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 2b9da5a176937374c1162a8a14990951b3a5ed0b..3d01bd574614709434bb8e244bee72d15f65c497 100644 +index d939a339c2b4258a972d0412eb1ecf93ab8e06a6..e970ecee6cbcf2c1597e1afb1cbaa39d85183ce6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3679,5 +3679,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3677,5 +3677,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player { if (this.getHandle().connection == null) return; this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); } diff --git a/patches/server/0254-Implement-ram-and-rambar-commands.patch b/patches/server/0255-Implement-ram-and-rambar-commands.patch similarity index 98% rename from patches/server/0254-Implement-ram-and-rambar-commands.patch rename to patches/server/0255-Implement-ram-and-rambar-commands.patch index ecedd2674..bd820094b 100644 --- a/patches/server/0254-Implement-ram-and-rambar-commands.patch +++ b/patches/server/0255-Implement-ram-and-rambar-commands.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Implement ram and rambar commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 0ba926b6ff0bd54159765cc7f37d1753ded89dee..cbbddb924f46203bd600b838fc22902cbcb2124b 100644 +index d8ee4422a13c7f09b84e9bbe8b57f0c139caac32..96449b0d153ce4124403368e406354fb2412e353 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -261,6 +261,8 @@ public class Commands { @@ -18,7 +18,7 @@ index 0ba926b6ff0bd54159765cc7f37d1753ded89dee..cbbddb924f46203bd600b838fc22902c if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0286b1bd461a5050cb78b9485bac84909ae91150..627b69f08f609dc0a4d87327a187009651046cf4 100644 +index dc8198b6282523009a5a6f6b1069b7b463b3f136..07ad39d071cfb16bc9e2560fa1abffe92d42740e 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -332,6 +332,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple @@ -45,7 +45,7 @@ index 0286b1bd461a5050cb78b9485bac84909ae91150..627b69f08f609dc0a4d87327a1870096 nbt.putBoolean("Purpur.TPSBar", this.tpsBar); // Purpur nbt.putBoolean("Purpur.CompassBar", this.compassBar); // Purpur } -@@ -3479,5 +3482,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple +@@ -3480,5 +3483,13 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple public void compassBar(boolean compassBar) { this.compassBar = compassBar; } diff --git a/patches/server/0255-Configurable-block-blast-resistance.patch b/patches/server/0256-Configurable-block-blast-resistance.patch similarity index 100% rename from patches/server/0255-Configurable-block-blast-resistance.patch rename to patches/server/0256-Configurable-block-blast-resistance.patch diff --git a/patches/server/0256-Configurable-block-fall-damage-modifiers.patch b/patches/server/0257-Configurable-block-fall-damage-modifiers.patch similarity index 100% rename from patches/server/0256-Configurable-block-fall-damage-modifiers.patch rename to patches/server/0257-Configurable-block-fall-damage-modifiers.patch diff --git a/patches/server/0257-Language-API.patch b/patches/server/0258-Language-API.patch similarity index 93% rename from patches/server/0257-Language-API.patch rename to patches/server/0258-Language-API.patch index 216708704..f3ca9d940 100644 --- a/patches/server/0257-Language-API.patch +++ b/patches/server/0258-Language-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Language API diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e2d6bdac09fcef3f3c8a533139ae28c63df0241e..e7a4e019ce26b8fd21481e52356ee38130cbeeea 100644 +index 7b2ae23cc5dc8d334ec22d85865050f61eae14cb..eef85316dc310afef805f29c6665107a24a6a3d1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -414,6 +414,20 @@ public final class CraftServer implements Server { diff --git a/patches/server/0258-Milk-Keeps-Beneficial-Effects.patch b/patches/server/0259-Milk-Keeps-Beneficial-Effects.patch similarity index 92% rename from patches/server/0258-Milk-Keeps-Beneficial-Effects.patch rename to patches/server/0259-Milk-Keeps-Beneficial-Effects.patch index acb5afb01..2639d7f23 100644 --- a/patches/server/0258-Milk-Keeps-Beneficial-Effects.patch +++ b/patches/server/0259-Milk-Keeps-Beneficial-Effects.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Milk Keeps Beneficial Effects diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index cd2fd85178acdfffc07b72bc0419a73e1d1bef64..18648eed57dca05d89692064dcf4aa3172cd5914 100644 +index 199a2619de1b6754edf89ffe0c63c0e5104e3055..4539a6ad5334417b9c3ff239609466efd8516ef7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1149,6 +1149,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -30,10 +30,10 @@ index ac4b31ab1297b34b5105c7bdc30ddea6d2d5e9a3..959e10586cddaae2590d2d84f5fd809d this.goalSelector.addGoal(1, new TradeWithPlayerGoal(this)); this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zombie.class, 8.0F, 0.5D, 0.5D)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c9f1f1340f69250c82f3dfcac593274dad34645e..5d32b12a6743a40d30fd38692ad6f677b0076397 100644 +index 28fdb5aaf7cd27cab1e3d04283f512b6786b19f6..76ed4f11372088b8c3ad04f215d3f6dc0e50594e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -144,6 +144,7 @@ public class PurpurWorldConfig { +@@ -145,6 +145,7 @@ public class PurpurWorldConfig { public boolean persistentTileEntityLore = false; public boolean persistentTileEntityDisplayName = true; public int mobLastHurtByPlayerTime = 100; @@ -41,7 +41,7 @@ index c9f1f1340f69250c82f3dfcac593274dad34645e..5d32b12a6743a40d30fd38692ad6f677 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -176,6 +177,7 @@ public class PurpurWorldConfig { +@@ -178,6 +179,7 @@ public class PurpurWorldConfig { persistentTileEntityLore = getBoolean("gameplay-mechanics.persistent-tileentity-lore", persistentTileEntityLore); persistentTileEntityDisplayName = getBoolean("gameplay-mechanics.persistent-tileentity-display-name", persistentTileEntityDisplayName); mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); diff --git a/patches/server/0259-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch b/patches/server/0260-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch similarity index 100% rename from patches/server/0259-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch rename to patches/server/0260-MC-121706-Fix-mobs-not-looking-up-and-down-when-stra.patch diff --git a/patches/server/0260-Add-log-suppression-for-LibraryLoader.patch b/patches/server/0261-Add-log-suppression-for-LibraryLoader.patch similarity index 100% rename from patches/server/0260-Add-log-suppression-for-LibraryLoader.patch rename to patches/server/0261-Add-log-suppression-for-LibraryLoader.patch diff --git a/patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch b/patches/server/0262-Add-an-option-to-fix-MC-3304-projectile-looting.patch similarity index 100% rename from patches/server/0261-Add-an-option-to-fix-MC-3304-projectile-looting.patch rename to patches/server/0262-Add-an-option-to-fix-MC-3304-projectile-looting.patch diff --git a/patches/server/0262-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch similarity index 92% rename from patches/server/0262-Add-option-to-allow-creeper-to-encircle-target-when-.patch rename to patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch index 0d36509ad..4149bfdf5 100644 --- a/patches/server/0262-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0263-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index 137ec75ee803789deb7b1ca93dd9369c9af362b9..ca95d25af3e9a0536868b0c7fd8e7d2f } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5d32b12a6743a40d30fd38692ad6f677b0076397..12e536b6c4f8c3b000802d2cc76aeca9e4cf7b21 100644 +index 76ed4f11372088b8c3ad04f215d3f6dc0e50594e..1b948280b0d92ec607d4c9dee0d2f1749e9fe8b5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1424,6 +1424,7 @@ public class PurpurWorldConfig { +@@ -1426,6 +1426,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 5d32b12a6743a40d30fd38692ad6f677b0076397..12e536b6c4f8c3b000802d2cc76aeca9 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1443,6 +1444,7 @@ public class PurpurWorldConfig { +@@ -1445,6 +1446,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/patches/server/0263-Fire-Immunity-API.patch b/patches/server/0264-Fire-Immunity-API.patch similarity index 97% rename from patches/server/0263-Fire-Immunity-API.patch rename to patches/server/0264-Fire-Immunity-API.patch index fd3763e7d..194daca5e 100644 --- a/patches/server/0263-Fire-Immunity-API.patch +++ b/patches/server/0264-Fire-Immunity-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6474b375c05eebc1fa3468f2963770dfff8dec5c..c32803af95324003e803847e7a64735663811e2f 100644 +index d55668d897912991f3995d911bf5d22a4254aff9..dec1189caed215269f0a148954dad23e2260d81d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -432,6 +432,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess diff --git a/patches/server/0264-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch similarity index 90% rename from patches/server/0264-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch rename to patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index 382e5a0b3..1a6da032a 100644 --- a/patches/server/0264-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0265-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index c32803af95324003e803847e7a64735663811e2f..6b32cd1391f39b6fe61c3c8c00249d1d4278cbd0 100644 +index dec1189caed215269f0a148954dad23e2260d81d..1230b058d2ea791bebb0e05eabe4e789a93448af 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -1032,6 +1032,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -17,10 +17,10 @@ index c32803af95324003e803847e7a64735663811e2f..6b32cd1391f39b6fe61c3c8c00249d1d } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 12e536b6c4f8c3b000802d2cc76aeca9e4cf7b21..d4bb4e5d6caa7848aeec284ed19b53bf34bfd5cf 100644 +index 1b948280b0d92ec607d4c9dee0d2f1749e9fe8b5..f083d0efb0f0aee24779fc866204cbb936d3f55f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -416,6 +416,7 @@ public class PurpurWorldConfig { +@@ -418,6 +418,7 @@ public class PurpurWorldConfig { public String playerDeathExpDropEquation = "expLevel * 7"; public int playerDeathExpDropMax = 100; public boolean teleportIfOutsideBorder = false; @@ -28,7 +28,7 @@ index 12e536b6c4f8c3b000802d2cc76aeca9e4cf7b21..d4bb4e5d6caa7848aeec284ed19b53bf public boolean totemOfUndyingWorksInInventory = false; public boolean playerFixStuckPortal = false; public boolean creativeOnePunch = false; -@@ -443,6 +444,7 @@ public class PurpurWorldConfig { +@@ -445,6 +446,7 @@ public class PurpurWorldConfig { playerDeathExpDropEquation = getString("gameplay-mechanics.player.exp-dropped-on-death.equation", playerDeathExpDropEquation); playerDeathExpDropMax = getInt("gameplay-mechanics.player.exp-dropped-on-death.maximum", playerDeathExpDropMax); teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder); diff --git a/patches/server/0265-Added-got-ram-event.patch b/patches/server/0266-Added-got-ram-event.patch similarity index 91% rename from patches/server/0265-Added-got-ram-event.patch rename to patches/server/0266-Added-got-ram-event.patch index dcb26dc15..c5bdff62e 100644 --- a/patches/server/0265-Added-got-ram-event.patch +++ b/patches/server/0266-Added-got-ram-event.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Added got ram event diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java -index 51dcc3893b964e6d20a2b963d3105a2687b3c426..ebf53d48b09918c7453f982a5e4f9a1584dfc544 100644 +index 7f196e8a8b5094375c9b13fe6e7311a3450dbb5f..0a7042924aca35722fba4b46086a34c7e3ec04ad 100644 --- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java +++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java @@ -432,6 +432,7 @@ public class Goat extends Animal { diff --git a/patches/server/0266-Log-skipped-entity-s-position.patch b/patches/server/0267-Log-skipped-entity-s-position.patch similarity index 100% rename from patches/server/0266-Log-skipped-entity-s-position.patch rename to patches/server/0267-Log-skipped-entity-s-position.patch diff --git a/patches/server/0267-End-Crystal-Cramming.patch b/patches/server/0268-End-Crystal-Cramming.patch similarity index 91% rename from patches/server/0267-End-Crystal-Cramming.patch rename to patches/server/0268-End-Crystal-Cramming.patch index 2c0729ee0..97205e860 100644 --- a/patches/server/0267-End-Crystal-Cramming.patch +++ b/patches/server/0268-End-Crystal-Cramming.patch @@ -17,10 +17,10 @@ index 305c3350116f656c3d0e6134e4d8023eac50f3ad..b1db1e92de3a88a0f0e0fdb42b0bf973 // Purpur start diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index d4bb4e5d6caa7848aeec284ed19b53bf34bfd5cf..2dc5bf6ae677d6b78953f04fcfa2a937b9adde88 100644 +index f083d0efb0f0aee24779fc866204cbb936d3f55f..ed1089ac29f9c8d19f69ac64974bfbe64fa8de41 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -913,6 +913,7 @@ public class PurpurWorldConfig { +@@ -915,6 +915,7 @@ public class PurpurWorldConfig { public double basedEndCrystalExplosionPower = 6.0D; public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -28,7 +28,7 @@ index d4bb4e5d6caa7848aeec284ed19b53bf34bfd5cf..2dc5bf6ae677d6b78953f04fcfa2a937 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -940,6 +941,7 @@ public class PurpurWorldConfig { +@@ -942,6 +943,7 @@ public class PurpurWorldConfig { log(Level.SEVERE, "Unknown value for `blocks.end-crystal.base.explosion-effect`! Using default of `BLOCK`"); basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } diff --git a/patches/server/0268-Option-to-allow-beacon-effects-when-covered-by-tinte.patch b/patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch similarity index 95% rename from patches/server/0268-Option-to-allow-beacon-effects-when-covered-by-tinte.patch rename to patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch index d2157579c..0c4daaaa5 100644 --- a/patches/server/0268-Option-to-allow-beacon-effects-when-covered-by-tinte.patch +++ b/patches/server/0269-Option-to-allow-beacon-effects-when-covered-by-tinte.patch @@ -36,10 +36,10 @@ index fbc6b0099af34b0247f6144a9cef020f9ccddeef..2d190b3a6378b8cbadfa65510df1ccfb BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2dc5bf6ae677d6b78953f04fcfa2a937b9adde88..2a44f924fbfaf175b1fd172d311bb4ea13f73e26 100644 +index ed1089ac29f9c8d19f69ac64974bfbe64fa8de41..5030f8e746cf92619483a4b93f0398aa05182784 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -812,11 +812,13 @@ public class PurpurWorldConfig { +@@ -814,11 +814,13 @@ public class PurpurWorldConfig { public int beaconLevelTwo = 30; public int beaconLevelThree = 40; public int beaconLevelFour = 50; diff --git a/patches/server/0269-Add-attribute-clamping-and-armor-limit-config.patch b/patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch similarity index 100% rename from patches/server/0269-Add-attribute-clamping-and-armor-limit-config.patch rename to patches/server/0270-Add-attribute-clamping-and-armor-limit-config.patch diff --git a/patches/server/0270-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch similarity index 94% rename from patches/server/0270-Config-to-remove-explosion-radius-clamp.patch rename to patches/server/0271-Config-to-remove-explosion-radius-clamp.patch index 3ced0e34c..e30da58f8 100644 --- a/patches/server/0270-Config-to-remove-explosion-radius-clamp.patch +++ b/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch @@ -27,10 +27,10 @@ index bbbd451ff184be8fa13bd93d53c89a9502f9951a..913f7d5fd9823eea9fad2d4e6689511f } // CraftBukkit end diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2a44f924fbfaf175b1fd172d311bb4ea13f73e26..dc0759e6157aaaf1738c910848f2ccd4ae0a75b6 100644 +index 5030f8e746cf92619483a4b93f0398aa05182784..0c6e22dffa5e286ded2ca277c3c0a3a60014305c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -223,6 +223,11 @@ public class PurpurWorldConfig { +@@ -225,6 +225,11 @@ public class PurpurWorldConfig { infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); } diff --git a/patches/server/0271-bonemealable-sugarcane-cactus-and-netherwart.patch b/patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch similarity index 98% rename from patches/server/0271-bonemealable-sugarcane-cactus-and-netherwart.patch rename to patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch index 8fdd9512f..b75a9c9be 100644 --- a/patches/server/0271-bonemealable-sugarcane-cactus-and-netherwart.patch +++ b/patches/server/0272-bonemealable-sugarcane-cactus-and-netherwart.patch @@ -137,10 +137,10 @@ index 547ea09ed84595286c97c128b3b96f6d387ae25f..d0f8a13f27132257ece6dadf736c2dc6 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index dc0759e6157aaaf1738c910848f2ccd4ae0a75b6..777139fb7098a9df8877cfe2e74329685a6389e0 100644 +index 0c6e22dffa5e286ded2ca277c3c0a3a60014305c..be88a9c0847349d3460d1e7b851c2e9d673ff093 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -866,8 +866,20 @@ public class PurpurWorldConfig { +@@ -868,8 +868,20 @@ public class PurpurWorldConfig { } public boolean cactusBreaksFromSolidNeighbors = true; diff --git a/patches/server/0272-Add-PreExplodeEvents.patch b/patches/server/0273-Add-PreExplodeEvents.patch similarity index 100% rename from patches/server/0272-Add-PreExplodeEvents.patch rename to patches/server/0273-Add-PreExplodeEvents.patch diff --git a/patches/server/0273-Improve-output-of-plugins-command.patch b/patches/server/0274-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/server/0273-Improve-output-of-plugins-command.patch rename to patches/server/0274-Improve-output-of-plugins-command.patch diff --git a/patches/server/0274-Make-GUI-Great-Again.patch b/patches/server/0275-Make-GUI-Great-Again.patch similarity index 100% rename from patches/server/0274-Make-GUI-Great-Again.patch rename to patches/server/0275-Make-GUI-Great-Again.patch diff --git a/patches/server/0275-Stored-Bee-API.patch b/patches/server/0276-Stored-Bee-API.patch similarity index 100% rename from patches/server/0275-Stored-Bee-API.patch rename to patches/server/0276-Stored-Bee-API.patch diff --git a/patches/server/0276-Shears-can-defuse-TNT.patch b/patches/server/0277-Shears-can-defuse-TNT.patch similarity index 96% rename from patches/server/0276-Shears-can-defuse-TNT.patch rename to patches/server/0277-Shears-can-defuse-TNT.patch index 7c1a80749..0248089b2 100644 --- a/patches/server/0276-Shears-can-defuse-TNT.patch +++ b/patches/server/0277-Shears-can-defuse-TNT.patch @@ -44,10 +44,10 @@ index de87483600e55d88176fe25db621bbd3e464729f..287ba483614e79e78022e703ef891f59 + // Purpur end - Shears can defuse TNT } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 777139fb7098a9df8877cfe2e74329685a6389e0..463c8873ba1fcc8f081a1909c1fc8967589f4d4f 100644 +index be88a9c0847349d3460d1e7b851c2e9d673ff093..7b78365741d0a6bcf6381debdf3f2e5896b4c679 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -3395,4 +3395,11 @@ public class PurpurWorldConfig { +@@ -3397,4 +3397,11 @@ public class PurpurWorldConfig { cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); } diff --git a/patches/server/0277-Explorer-Map-API.patch b/patches/server/0278-Explorer-Map-API.patch similarity index 100% rename from patches/server/0277-Explorer-Map-API.patch rename to patches/server/0278-Explorer-Map-API.patch diff --git a/patches/server/0278-Option-Ocelot-Spawn-Under-Sea-Level.patch b/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch similarity index 91% rename from patches/server/0278-Option-Ocelot-Spawn-Under-Sea-Level.patch rename to patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch index c348487cf..b8094de8a 100644 --- a/patches/server/0278-Option-Ocelot-Spawn-Under-Sea-Level.patch +++ b/patches/server/0279-Option-Ocelot-Spawn-Under-Sea-Level.patch @@ -18,10 +18,10 @@ index 14634de26c218a3d26afd3e7e6ca89c1a0595178..dee59cb4b87845c940ee089aa932aa69 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 463c8873ba1fcc8f081a1909c1fc8967589f4d4f..2f9a512a8e4162385ca1b28c91e805112c11949b 100644 +index 7b78365741d0a6bcf6381debdf3f2e5896b4c679..ec20f5a874d51e0ceb82a865da235dec347c5d99 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2135,6 +2135,7 @@ public class PurpurWorldConfig { +@@ -2137,6 +2137,7 @@ public class PurpurWorldConfig { public int ocelotBreedingTicks = 6000; public boolean ocelotTakeDamageFromWater = false; public boolean ocelotAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 463c8873ba1fcc8f081a1909c1fc8967589f4d4f..2f9a512a8e4162385ca1b28c91e80511 private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -2149,6 +2150,7 @@ public class PurpurWorldConfig { +@@ -2151,6 +2152,7 @@ public class PurpurWorldConfig { ocelotBreedingTicks = getInt("mobs.ocelot.breeding-delay-ticks", ocelotBreedingTicks); ocelotTakeDamageFromWater = getBoolean("mobs.ocelot.takes-damage-from-water", ocelotTakeDamageFromWater); ocelotAlwaysDropExp = getBoolean("mobs.ocelot.always-drop-exp", ocelotAlwaysDropExp); diff --git a/patches/server/0279-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch b/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch similarity index 93% rename from patches/server/0279-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch rename to patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch index b3e473bbb..917bf8802 100644 --- a/patches/server/0279-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch +++ b/patches/server/0280-add-an-option-for-piglins-to-ignore-gold-trimmed-arm.patch @@ -29,10 +29,10 @@ index e283b1296c1e831376bfe9491cbf02ed4b3fffe4..27a6de70530c2a1cbe2f77a7fb493038 piglin.getBrain().eraseMemory(MemoryModuleType.WALK_TARGET); piglin.getNavigation().stop(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 2f9a512a8e4162385ca1b28c91e805112c11949b..341397cdf45be30cffbc65453dc643868ce51bcc 100644 +index ec20f5a874d51e0ceb82a865da235dec347c5d99..80561650178b5cb3c49422fb2b0d30aeca55fdd0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2312,6 +2312,7 @@ public class PurpurWorldConfig { +@@ -2314,6 +2314,7 @@ public class PurpurWorldConfig { public int piglinPortalSpawnModifier = 2000; public boolean piglinAlwaysDropExp = false; public double piglinHeadVisibilityPercent = 0.5D; @@ -40,7 +40,7 @@ index 2f9a512a8e4162385ca1b28c91e805112c11949b..341397cdf45be30cffbc65453dc64386 private void piglinSettings() { piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); -@@ -2328,6 +2329,7 @@ public class PurpurWorldConfig { +@@ -2330,6 +2331,7 @@ public class PurpurWorldConfig { piglinPortalSpawnModifier = getInt("mobs.piglin.portal-spawn-modifier", piglinPortalSpawnModifier); piglinAlwaysDropExp = getBoolean("mobs.piglin.always-drop-exp", piglinAlwaysDropExp); piglinHeadVisibilityPercent = getDouble("mobs.piglin.head-visibility-percent", piglinHeadVisibilityPercent); diff --git a/patches/server/0280-Add-option-for-always-showing-item-in-player-death-m.patch b/patches/server/0281-Add-option-for-always-showing-item-in-player-death-m.patch similarity index 100% rename from patches/server/0280-Add-option-for-always-showing-item-in-player-death-m.patch rename to patches/server/0281-Add-option-for-always-showing-item-in-player-death-m.patch diff --git a/patches/server/0281-place-end-crystal-on-any-block.patch b/patches/server/0282-place-end-crystal-on-any-block.patch similarity index 92% rename from patches/server/0281-place-end-crystal-on-any-block.patch rename to patches/server/0282-place-end-crystal-on-any-block.patch index b8f0c5da9..f64fdeef0 100644 --- a/patches/server/0281-place-end-crystal-on-any-block.patch +++ b/patches/server/0282-place-end-crystal-on-any-block.patch @@ -18,10 +18,10 @@ index b62db8c7c8c57e43869ee239ebf4b02f112355d9..f60e39e56a5dab2de62ae9cfd7a30a70 } else { BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 341397cdf45be30cffbc65453dc643868ce51bcc..9511547970d14bc779ba5afc3675439137c14ae6 100644 +index 80561650178b5cb3c49422fb2b0d30aeca55fdd0..cc3258704c5093bc6005d5d807c16a0bb3748052 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -933,6 +933,7 @@ public class PurpurWorldConfig { +@@ -935,6 +935,7 @@ public class PurpurWorldConfig { public boolean basedEndCrystalExplosionFire = false; public net.minecraft.world.level.Level.ExplosionInteraction basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; public int endCrystalCramming = 0; @@ -29,7 +29,7 @@ index 341397cdf45be30cffbc65453dc643868ce51bcc..9511547970d14bc779ba5afc36754391 private void endCrystalSettings() { if (PurpurConfig.version < 31) { if ("DESTROY".equals(getString("blocks.end-crystal.baseless.explosion-effect", baselessEndCrystalExplosionEffect.name()))) { -@@ -961,6 +962,7 @@ public class PurpurWorldConfig { +@@ -963,6 +964,7 @@ public class PurpurWorldConfig { basedEndCrystalExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; } endCrystalCramming = getInt("blocks.end-crystal.cramming-amount", endCrystalCramming); diff --git a/patches/server/0282-Add-option-to-disable-the-copper-oxidation-proximity.patch b/patches/server/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch similarity index 92% rename from patches/server/0282-Add-option-to-disable-the-copper-oxidation-proximity.patch rename to patches/server/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch index 0ed8f6d26..13ce167d0 100644 --- a/patches/server/0282-Add-option-to-disable-the-copper-oxidation-proximity.patch +++ b/patches/server/0283-Add-option-to-disable-the-copper-oxidation-proximity.patch @@ -18,10 +18,10 @@ index daae7fd6e0148cfba8e359d990748a0c83a3376e..0e06b1bcd906e92c083dc74d56d6d0a2 return random.nextFloat() < f1 ? this.getNext(state) : Optional.empty(); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9511547970d14bc779ba5afc3675439137c14ae6..ac77bcccd70be1a83e4125ba848eb8e6d676406a 100644 +index cc3258704c5093bc6005d5d807c16a0bb3748052..6bf2555fb77163f0a8243809095b72f2d13bc95d 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -145,6 +145,7 @@ public class PurpurWorldConfig { +@@ -146,6 +146,7 @@ public class PurpurWorldConfig { public boolean persistentTileEntityDisplayName = true; public int mobLastHurtByPlayerTime = 100; public boolean milkClearsBeneficialEffects = true; @@ -29,7 +29,7 @@ index 9511547970d14bc779ba5afc3675439137c14ae6..ac77bcccd70be1a83e4125ba848eb8e6 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -178,6 +179,7 @@ public class PurpurWorldConfig { +@@ -180,6 +181,7 @@ public class PurpurWorldConfig { persistentTileEntityDisplayName = getBoolean("gameplay-mechanics.persistent-tileentity-display-name", persistentTileEntityDisplayName); mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); milkClearsBeneficialEffects = getBoolean("gameplay-mechanics.milk-clears-beneficial-effects", milkClearsBeneficialEffects); diff --git a/patches/server/0283-register-minecraft-debug-commands.patch b/patches/server/0284-register-minecraft-debug-commands.patch similarity index 96% rename from patches/server/0283-register-minecraft-debug-commands.patch rename to patches/server/0284-register-minecraft-debug-commands.patch index 112f59508..1e6e3e1c4 100644 --- a/patches/server/0283-register-minecraft-debug-commands.patch +++ b/patches/server/0284-register-minecraft-debug-commands.patch @@ -5,7 +5,7 @@ Subject: [PATCH] register minecraft debug commands diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index cbbddb924f46203bd600b838fc22902cbcb2124b..647a3ac2aea4dadd638836f831cc3768d10c7b74 100644 +index 96449b0d153ce4124403368e406354fb2412e353..6a8248b43bf739b691c7e888ebf964cad0a92623 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -226,8 +226,8 @@ public class Commands { diff --git a/patches/server/0284-Configurable-villager-search-radius.patch b/patches/server/0285-Configurable-villager-search-radius.patch similarity index 95% rename from patches/server/0284-Configurable-villager-search-radius.patch rename to patches/server/0285-Configurable-villager-search-radius.patch index c1b222613..9f05a99b1 100644 --- a/patches/server/0284-Configurable-villager-search-radius.patch +++ b/patches/server/0285-Configurable-villager-search-radius.patch @@ -31,10 +31,10 @@ index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c // Paper end - optimise POI access if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ac77bcccd70be1a83e4125ba848eb8e6d676406a..303feea75a2f4b2c11526cfa4013433be623f16f 100644 +index 6bf2555fb77163f0a8243809095b72f2d13bc95d..e10c7273130d3c4cf5e42b71d78df2621b1bab83 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2988,6 +2988,8 @@ public class PurpurWorldConfig { +@@ -2990,6 +2990,8 @@ public class PurpurWorldConfig { public boolean villagerDisplayTradeItem = true; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -43,7 +43,7 @@ index ac77bcccd70be1a83e4125ba848eb8e6d676406a..303feea75a2f4b2c11526cfa4013433b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -3025,6 +3027,8 @@ public class PurpurWorldConfig { +@@ -3027,6 +3029,8 @@ public class PurpurWorldConfig { villagerDisplayTradeItem = getBoolean("mobs.villager.display-trade-item", villagerDisplayTradeItem); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0285-option-to-make-ravagers-afraid-of-rabbits.patch b/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch similarity index 92% rename from patches/server/0285-option-to-make-ravagers-afraid-of-rabbits.patch rename to patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch index 2c02c0abe..6b1e525d4 100644 --- a/patches/server/0285-option-to-make-ravagers-afraid-of-rabbits.patch +++ b/patches/server/0286-option-to-make-ravagers-afraid-of-rabbits.patch @@ -18,10 +18,10 @@ index 06aa58b0e036ce4e9615365d03060eb9d9a518b7..487f21c6e6ffc0dc9c0733241a8ded8c this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 0.4D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 303feea75a2f4b2c11526cfa4013433be623f16f..742a46ef95a5e46e9c338cedcecaf008a7108c58 100644 +index e10c7273130d3c4cf5e42b71d78df2621b1bab83..d39a0d455f10189054ebc894c55188c5cbc000d2 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2470,6 +2470,7 @@ public class PurpurWorldConfig { +@@ -2472,6 +2472,7 @@ public class PurpurWorldConfig { public boolean ravagerTakeDamageFromWater = false; public List ravagerGriefableBlocks = new ArrayList<>(); public boolean ravagerAlwaysDropExp = false; @@ -29,7 +29,7 @@ index 303feea75a2f4b2c11526cfa4013433be623f16f..742a46ef95a5e46e9c338cedcecaf008 private void ravagerSettings() { ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -2501,6 +2502,7 @@ public class PurpurWorldConfig { +@@ -2503,6 +2504,7 @@ public class PurpurWorldConfig { } }); ravagerAlwaysDropExp = getBoolean("mobs.ravager.always-drop-exp", ravagerAlwaysDropExp); diff --git a/patches/server/0286-config-for-startup-commands.patch b/patches/server/0287-config-for-startup-commands.patch similarity index 93% rename from patches/server/0286-config-for-startup-commands.patch rename to patches/server/0287-config-for-startup-commands.patch index bb466875c..d03d89b0a 100644 --- a/patches/server/0286-config-for-startup-commands.patch +++ b/patches/server/0287-config-for-startup-commands.patch @@ -5,10 +5,10 @@ Subject: [PATCH] config for startup commands diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 940a2aa8bd85d037792bc0ecb0d1f1a9e5456f0d..6acffd0d74f35ea9ec7e9937b65c3fc81c7769e5 100644 +index d1c13456353b5c83bd764bfa1ec2076b88e356ba..0a5cbfee55020e16af86044dbcd173cd3cd96f34 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1291,6 +1291,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop