diff --git a/gradle.properties b/gradle.properties index a9b05822b..71bc0a970 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group=net.pl3x.purpur version=1.17-R0.1-SNAPSHOT packageVersion=1_17_R1 -paperCommit=ed5100faf11436cb924b1cdb2401c2c65881b739 +paperCommit=33d6b6fbcddcc768f36143b883fe8aaf9c2d3e09 org.gradle.parallel=true org.gradle.jvmargs=-Xmx3G diff --git a/patches/removed/0140-Config-migration-climbing-should-not-bypass-cramming.patch b/patches/removed/1.17/0140-Config-migration-climbing-should-not-bypass-cramming.patch similarity index 100% rename from patches/removed/0140-Config-migration-climbing-should-not-bypass-cramming.patch rename to patches/removed/1.17/0140-Config-migration-climbing-should-not-bypass-cramming.patch diff --git a/patches/server/0058-Entities-pick-up-loot-bypass-mob-griefing-gamerule.patch b/patches/server/0058-Entities-pick-up-loot-bypass-mob-griefing-gamerule.patch deleted file mode 100644 index 5506e032e..000000000 --- a/patches/server/0058-Entities-pick-up-loot-bypass-mob-griefing-gamerule.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Fri, 24 Apr 2020 09:33:11 -0500 -Subject: [PATCH] Entities pick up loot bypass mob-griefing gamerule - - -diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 75931cce0f430975fc54216f20e235833a74a72c..0dbce3ab5ff891b94d4209203b97fd7819cf5368 100644 ---- a/src/main/java/net/minecraft/world/entity/Mob.java -+++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -621,7 +621,7 @@ public abstract class Mob extends LivingEntity { - public void aiStep() { - super.aiStep(); - this.level.getProfiler().push("looting"); -- if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || level.purpurConfig.entitiesPickUpLootBypassMobGriefing)) { - List list = this.level.getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate(1.0D, 0.0D, 1.0D)); - Iterator iterator = list.iterator(); - -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a0183eefc826d8c8d8abfa7a3d8e9eba22c9b233..74850de943a3c0209358e872ea2c8ff2c8a2e4ee 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -174,10 +174,12 @@ public class PurpurWorldConfig { - } - - public boolean disableDropsOnCrammingDeath = false; -+ public boolean entitiesPickUpLootBypassMobGriefing = false; - public boolean milkCuresBadOmen = true; - public double tridentLoyaltyVoidReturnHeight = 0.0D; - private void miscGameplayMechanicsSettings() { - disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); -+ entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); - milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); - tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); - } diff --git a/patches/server/0060-Villagers-follow-emerald-blocks.patch b/patches/server/0058-Villagers-follow-emerald-blocks.patch similarity index 90% rename from patches/server/0060-Villagers-follow-emerald-blocks.patch rename to patches/server/0058-Villagers-follow-emerald-blocks.patch index 68ddbb1c8..f1175b02f 100644 --- a/patches/server/0060-Villagers-follow-emerald-blocks.patch +++ b/patches/server/0058-Villagers-follow-emerald-blocks.patch @@ -41,26 +41,26 @@ index d2588a91b55aebdecf8e1644498111ccf84a9dc9..393061e13375bf7a7ee57973b4abac83 this.goalSelector.addGoal(8, new WaterAvoidingRandomStrollGoal(this, 0.35D)); this.goalSelector.addGoal(9, new InteractGoal(this, Player.class, 3.0F, 1.0F)); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f674500a8e7cd50cf94ae2d13d0c54a9b29309f5..fcecd4391d43f6a56d8ca562c95973b53f053d63 100644 +index a0183eefc826d8c8d8abfa7a3d8e9eba22c9b233..eb9b74f2ed55dbfc458acbc989b2ad773605e13f 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1209,6 +1209,7 @@ public class PurpurWorldConfig { +@@ -1206,6 +1206,7 @@ public class PurpurWorldConfig { + public double villagerMaxHealth = 20.0D; public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; - public boolean villagerFarmingBypassMobGriefing = false; + public boolean villagerFollowEmeraldBlock = false; private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1221,6 +1222,7 @@ public class PurpurWorldConfig { +@@ -1217,6 +1218,7 @@ public class PurpurWorldConfig { + villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); - villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing); + villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); } public boolean vindicatorRidable = false; -@@ -1240,6 +1242,7 @@ public class PurpurWorldConfig { +@@ -1236,6 +1238,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidable = false; public boolean wanderingTraderRidableInWater = false; public double wanderingTraderMaxHealth = 20.0D; @@ -68,7 +68,7 @@ index f674500a8e7cd50cf94ae2d13d0c54a9b29309f5..fcecd4391d43f6a56d8ca562c95973b5 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1249,6 +1252,7 @@ public class PurpurWorldConfig { +@@ -1245,6 +1248,7 @@ public class PurpurWorldConfig { set("mobs.wandering_trader.attributes.max_health", oldValue); } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); diff --git a/patches/server/0061-Allow-leashing-villagers.patch b/patches/server/0059-Allow-leashing-villagers.patch similarity index 88% rename from patches/server/0061-Allow-leashing-villagers.patch rename to patches/server/0059-Allow-leashing-villagers.patch index 6a064082d..3e18eb2f0 100644 --- a/patches/server/0061-Allow-leashing-villagers.patch +++ b/patches/server/0059-Allow-leashing-villagers.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow leashing villagers diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 0dbce3ab5ff891b94d4209203b97fd7819cf5368..d6cb3688d913cb46d423c7fb1ab65d22b229f0f4 100644 +index 75931cce0f430975fc54216f20e235833a74a72c..5bea46a548703871d1c6743746886a6071581e07 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1209,6 +1209,7 @@ public abstract class Mob extends LivingEntity { @@ -49,26 +49,26 @@ index 393061e13375bf7a7ee57973b4abac83ffa15fa3..c48935d35a6141c41db22e3ec172d599 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index fcecd4391d43f6a56d8ca562c95973b53f053d63..a245101344ce1e2db2c57938644757364447963c 100644 +index eb9b74f2ed55dbfc458acbc989b2ad773605e13f..eaa3843b155f60ca118ebe039e80834c535eae4d 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1210,6 +1210,7 @@ public class PurpurWorldConfig { +@@ -1207,6 +1207,7 @@ public class PurpurWorldConfig { + public int villagerBrainTicks = 1; public boolean villagerUseBrainTicksOnlyWhenLagging = true; - public boolean villagerFarmingBypassMobGriefing = false; public boolean villagerFollowEmeraldBlock = false; + public boolean villagerCanBeLeashed = false; private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1223,6 +1224,7 @@ public class PurpurWorldConfig { +@@ -1219,6 +1220,7 @@ public class PurpurWorldConfig { + villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); - villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); + villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); } public boolean vindicatorRidable = false; -@@ -1243,6 +1245,7 @@ public class PurpurWorldConfig { +@@ -1239,6 +1241,7 @@ public class PurpurWorldConfig { public boolean wanderingTraderRidableInWater = false; public double wanderingTraderMaxHealth = 20.0D; public boolean wanderingTraderFollowEmeraldBlock = false; @@ -76,7 +76,7 @@ index fcecd4391d43f6a56d8ca562c95973b53f053d63..a245101344ce1e2db2c5793864475736 private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -1253,6 +1256,7 @@ public class PurpurWorldConfig { +@@ -1249,6 +1252,7 @@ public class PurpurWorldConfig { } wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); diff --git a/patches/server/0059-Villagers-farming-can-bypass-mob-griefing-gamerule.patch b/patches/server/0059-Villagers-farming-can-bypass-mob-griefing-gamerule.patch deleted file mode 100644 index c026e3664..000000000 --- a/patches/server/0059-Villagers-farming-can-bypass-mob-griefing-gamerule.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Fri, 24 Apr 2020 09:37:29 -0500 -Subject: [PATCH] Villagers farming can bypass mob-griefing gamerule - - -diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index 41b5652578e4a703cb6f03e82654b27ea6302b99..2d83b7252814a3a921db32a62f6bfb711d5b5ac1 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -@@ -40,7 +40,7 @@ public class HarvestFarmland extends Behavior { - } - - protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { -- if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { -+ if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !world.purpurConfig.villagerFarmingBypassMobGriefing) { // Purpur - return false; - } else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER) { - return false; -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 74850de943a3c0209358e872ea2c8ff2c8a2e4ee..f674500a8e7cd50cf94ae2d13d0c54a9b29309f5 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1208,6 +1208,7 @@ public class PurpurWorldConfig { - public double villagerMaxHealth = 20.0D; - public int villagerBrainTicks = 1; - public boolean villagerUseBrainTicksOnlyWhenLagging = true; -+ public boolean villagerFarmingBypassMobGriefing = false; - private void villagerSettings() { - villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); - villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1219,6 +1220,7 @@ public class PurpurWorldConfig { - villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); - villagerBrainTicks = getInt("mobs.villager.brain-ticks", villagerBrainTicks); - villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); -+ villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing); - } - - public boolean vindicatorRidable = false; diff --git a/patches/server/0062-Implement-configurable-search-radius-for-villagers-t.patch b/patches/server/0060-Implement-configurable-search-radius-for-villagers-t.patch similarity index 84% rename from patches/server/0062-Implement-configurable-search-radius-for-villagers-t.patch rename to patches/server/0060-Implement-configurable-search-radius-for-villagers-t.patch index a558513b4..529de9a07 100644 --- a/patches/server/0062-Implement-configurable-search-radius-for-villagers-t.patch +++ b/patches/server/0060-Implement-configurable-search-radius-for-villagers-t.patch @@ -18,11 +18,11 @@ index 52a592e569d020dca45916be7b5fad28c9d480de..5e100dbdbd6cfb4aa34b0d6b1ce09138 for (int i = 0; i < 10; ++i) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a245101344ce1e2db2c57938644757364447963c..c84ca5ddc36bf91252950ec609ce405b18348dcd 100644 +index eaa3843b155f60ca118ebe039e80834c535eae4d..322077863db0bfab4538e7c2b6b1dcc4dd576368 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1211,6 +1211,8 @@ public class PurpurWorldConfig { - public boolean villagerFarmingBypassMobGriefing = false; +@@ -1208,6 +1208,8 @@ public class PurpurWorldConfig { + public boolean villagerUseBrainTicksOnlyWhenLagging = true; public boolean villagerFollowEmeraldBlock = false; public boolean villagerCanBeLeashed = false; + public int villagerSpawnIronGolemRadius = 0; @@ -30,8 +30,8 @@ index a245101344ce1e2db2c57938644757364447963c..c84ca5ddc36bf91252950ec609ce405b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1225,6 +1227,8 @@ public class PurpurWorldConfig { - villagerFarmingBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerFarmingBypassMobGriefing); +@@ -1221,6 +1223,8 @@ public class PurpurWorldConfig { + villagerUseBrainTicksOnlyWhenLagging = getBoolean("mobs.villager.use-brain-ticks-only-when-lagging", villagerUseBrainTicksOnlyWhenLagging); villagerFollowEmeraldBlock = getBoolean("mobs.villager.follow-emerald-blocks", villagerFollowEmeraldBlock); villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); + villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); diff --git a/patches/server/0063-Implement-infinite-lava.patch b/patches/server/0061-Implement-infinite-lava.patch similarity index 95% rename from patches/server/0063-Implement-infinite-lava.patch rename to patches/server/0061-Implement-infinite-lava.patch index cf69cb9f8..984dc25ec 100644 --- a/patches/server/0063-Implement-infinite-lava.patch +++ b/patches/server/0061-Implement-infinite-lava.patch @@ -58,10 +58,10 @@ index 695783e64564b1d2a178d57a89737d2a97ab9014..cd1a33a1f10d04a91358f51d736bda34 protected boolean canConvertToSource() { return false; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index c84ca5ddc36bf91252950ec609ce405b18348dcd..8f0d4cf26d85de197fbddcdb7d42ee5f12cbd078 100644 +index 322077863db0bfab4538e7c2b6b1dcc4dd576368..96b97e2facd4bb27ccec2a3b971092f98277ca89 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -189,6 +189,13 @@ public class PurpurWorldConfig { +@@ -187,6 +187,13 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0064-Make-lava-flow-speed-configurable.patch b/patches/server/0062-Make-lava-flow-speed-configurable.patch similarity index 92% rename from patches/server/0064-Make-lava-flow-speed-configurable.patch rename to patches/server/0062-Make-lava-flow-speed-configurable.patch index 566b69e89..e1fa80ff8 100644 --- a/patches/server/0064-Make-lava-flow-speed-configurable.patch +++ b/patches/server/0062-Make-lava-flow-speed-configurable.patch @@ -18,10 +18,10 @@ index cd1a33a1f10d04a91358f51d736bda34110324c4..b0d671ba015d1ad37fdf600b8e70def2 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8f0d4cf26d85de197fbddcdb7d42ee5f12cbd078..3485b925d113a2619601a696acded3a16f9985f5 100644 +index 96b97e2facd4bb27ccec2a3b971092f98277ca89..9c5112e80d6321dbc138b93bdc4bb750b52c019e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -191,9 +191,13 @@ public class PurpurWorldConfig { +@@ -189,9 +189,13 @@ public class PurpurWorldConfig { public boolean lavaInfinite = false; public int lavaInfiniteRequiredSources = 2; diff --git a/patches/server/0065-Add-player-death-exp-control-options.patch b/patches/server/0063-Add-player-death-exp-control-options.patch similarity index 97% rename from patches/server/0065-Add-player-death-exp-control-options.patch rename to patches/server/0063-Add-player-death-exp-control-options.patch index 65acf9a0a..db35421a0 100644 --- a/patches/server/0065-Add-player-death-exp-control-options.patch +++ b/patches/server/0063-Add-player-death-exp-control-options.patch @@ -40,7 +40,7 @@ index 721767812c765ac70c66f5445950c39167f344de..3fd54f7d0f3372d83ccd135db44870fb return 0; } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 3485b925d113a2619601a696acded3a16f9985f5..a54fbb952a3334350453ee6df1e6954798f66876 100644 +index 9c5112e80d6321dbc138b93bdc4bb750b52c019e..f8784ee4d4299ce2a262852e2fd297c66b0fba45 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -141,6 +141,8 @@ public class PurpurWorldConfig { diff --git a/patches/server/0066-Configurable-void-damage-height-and-damage.patch b/patches/server/0064-Configurable-void-damage-height-and-damage.patch similarity index 86% rename from patches/server/0066-Configurable-void-damage-height-and-damage.patch rename to patches/server/0064-Configurable-void-damage-height-and-damage.patch index f0284a4e2..2a9bcfb61 100644 --- a/patches/server/0066-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0064-Configurable-void-damage-height-and-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable void damage height and damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index af6d0fbd6faff5e570510037be16ed59debc3fdb..ebb5fe12f18c10eba06db13de653ff53b33994d1 100644 +index 7864550877580c8240bbe642586b1c8f6264683e..a663de350f315596806253c961544d1ebb682751 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -698,7 +698,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n @@ -31,18 +31,17 @@ index 59988294eeba527ab28765ab2482e477802f5240..fda3a3f8fd354aa6dcb0696f0381a6dd protected void updateSwingTime() { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a54fbb952a3334350453ee6df1e6954798f66876..0e2f3e1ed22c72e8089d7c41c2cd2e55614416a3 100644 +index f8784ee4d4299ce2a262852e2fd297c66b0fba45..cd0700332234a585beb786f14625fd7224daf23e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -181,11 +181,15 @@ public class PurpurWorldConfig { - public boolean entitiesPickUpLootBypassMobGriefing = false; +@@ -180,10 +180,14 @@ public class PurpurWorldConfig { + public boolean disableDropsOnCrammingDeath = false; public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; + public double voidDamageHeight = -64.0D; + public double voidDamageDealt = 4.0D; private void miscGameplayMechanicsSettings() { disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); - entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); + voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); diff --git a/patches/server/0067-Add-canSaveToDisk-to-Entity.patch b/patches/server/0065-Add-canSaveToDisk-to-Entity.patch similarity index 100% rename from patches/server/0067-Add-canSaveToDisk-to-Entity.patch rename to patches/server/0065-Add-canSaveToDisk-to-Entity.patch diff --git a/patches/server/0068-Dispenser-curse-of-binding-protection.patch b/patches/server/0066-Dispenser-curse-of-binding-protection.patch similarity index 92% rename from patches/server/0068-Dispenser-curse-of-binding-protection.patch rename to patches/server/0066-Dispenser-curse-of-binding-protection.patch index 9d9c38d0c..ab6aa3414 100644 --- a/patches/server/0068-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0066-Dispenser-curse-of-binding-protection.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Dispenser curse of binding protection diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index d6cb3688d913cb46d423c7fb1ab65d22b229f0f4..45c9c4d751a51a524ff881d9fe3c1a48d141ba54 100644 +index 5bea46a548703871d1c6743746886a6071581e07..c7caa9531a761405d1793c90080bb8721626a7d2 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -62,6 +62,7 @@ import net.minecraft.world.item.ProjectileWeaponItem; @@ -43,10 +43,10 @@ index aab4a63e61aced51b1b6c885fd8b8426a4f14408..ad095c6bc7e00d286c83e37f84d8ed5d // CraftBukkit start Level world = pointer.getLevel(); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 0e2f3e1ed22c72e8089d7c41c2cd2e55614416a3..d876899a14de21498055fe776907241c075ab009 100644 +index cd0700332234a585beb786f14625fd7224daf23e..ee1ffc538333e4cd319fc8c6a37a8371ae4c2aba 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -192,6 +192,11 @@ public class PurpurWorldConfig { +@@ -190,6 +190,11 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } diff --git a/patches/server/0069-Add-option-for-boats-to-eject-players-on-land.patch b/patches/server/0067-Add-option-for-boats-to-eject-players-on-land.patch similarity index 81% rename from patches/server/0069-Add-option-for-boats-to-eject-players-on-land.patch rename to patches/server/0067-Add-option-for-boats-to-eject-players-on-land.patch index ee11dbdde..7b3a8067c 100644 --- a/patches/server/0069-Add-option-for-boats-to-eject-players-on-land.patch +++ b/patches/server/0067-Add-option-for-boats-to-eject-players-on-land.patch @@ -17,22 +17,21 @@ index aa7c022c4faade23bd9061311d4152cf845d3331..d4a19fc38027717e43353bc62ef23e56 } else { return Boat.Status.IN_AIR; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d876899a14de21498055fe776907241c075ab009..203e491dd43c39dbbf60e53aca7bb32e22f16fbb 100644 +index ee1ffc538333e4cd319fc8c6a37a8371ae4c2aba..edd40fa85f97a99d7b8e61a03ae2399952a6941c 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -177,6 +177,7 @@ public class PurpurWorldConfig { +@@ -177,12 +177,14 @@ public class PurpurWorldConfig { }); } + public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; - public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean milkCuresBadOmen = true; -@@ -184,6 +185,7 @@ public class PurpurWorldConfig { + public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; private void miscGameplayMechanicsSettings() { + boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); - entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); diff --git a/patches/server/0070-Mending-mends-most-damages-equipment-first.patch b/patches/server/0068-Mending-mends-most-damages-equipment-first.patch similarity index 92% rename from patches/server/0070-Mending-mends-most-damages-equipment-first.patch rename to patches/server/0068-Mending-mends-most-damages-equipment-first.patch index b2bb0968b..1f711013d 100644 --- a/patches/server/0070-Mending-mends-most-damages-equipment-first.patch +++ b/patches/server/0068-Mending-mends-most-damages-equipment-first.patch @@ -73,7 +73,7 @@ index e246bf034a86deba5a15e7c639f5e08213fe7eee..585b29a214d0306ac2d6a170125270c1 Entry entry = getRandomItemWith(enchantment, entityliving); return entry != null ? entry.getValue() : ItemStack.EMPTY; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 203e491dd43c39dbbf60e53aca7bb32e22f16fbb..99b021c43290309a96dfa0976c7d87f8f938d427 100644 +index edd40fa85f97a99d7b8e61a03ae2399952a6941c..fa206651a72e5826b4e8e2431774cd08f86d0e89 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -177,6 +177,7 @@ public class PurpurWorldConfig { @@ -83,12 +83,12 @@ index 203e491dd43c39dbbf60e53aca7bb32e22f16fbb..99b021c43290309a96dfa0976c7d87f8 + public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; - public boolean entitiesPickUpLootBypassMobGriefing = false; -@@ -185,6 +186,7 @@ public class PurpurWorldConfig { + public boolean milkCuresBadOmen = true; +@@ -184,6 +185,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.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); - entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0071-Add-5-second-tps-average-in-tps.patch b/patches/server/0069-Add-5-second-tps-average-in-tps.patch similarity index 100% rename from patches/server/0071-Add-5-second-tps-average-in-tps.patch rename to patches/server/0069-Add-5-second-tps-average-in-tps.patch diff --git a/patches/server/0072-Implement-elytra-settings.patch b/patches/server/0070-Implement-elytra-settings.patch similarity index 98% rename from patches/server/0072-Implement-elytra-settings.patch rename to patches/server/0070-Implement-elytra-settings.patch index 9dc202541..d2587b5a9 100644 --- a/patches/server/0072-Implement-elytra-settings.patch +++ b/patches/server/0070-Implement-elytra-settings.patch @@ -99,7 +99,7 @@ index 510ed67a7de2b503ab8b01db57ed09ee33b0d825..3f53dc8f250ad3f7616ce7ef0a2353ca entityhuman.startAutoSpinAttack(20); if (entityhuman.isOnGround()) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 99b021c43290309a96dfa0976c7d87f8f938d427..f0b7a5616040cb7d7f88bd98f43abf364b18343f 100644 +index fa206651a72e5826b4e8e2431774cd08f86d0e89..a4935e0192ee0d117521f8aee441effae4a25e4a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -73,6 +73,19 @@ public class PurpurWorldConfig { diff --git a/patches/server/0073-Item-entity-immunities.patch b/patches/server/0071-Item-entity-immunities.patch similarity index 98% rename from patches/server/0073-Item-entity-immunities.patch rename to patches/server/0071-Item-entity-immunities.patch index 0c7faf431..d1f8cdb8f 100644 --- a/patches/server/0073-Item-entity-immunities.patch +++ b/patches/server/0071-Item-entity-immunities.patch @@ -93,7 +93,7 @@ index 158719d46c96bb733a00e08c8285f41a48406abf..623a8b38b9d0ccbfe807afe328495b19 + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f0b7a5616040cb7d7f88bd98f43abf364b18343f..59096e683f1ed1675d142a9a737519f3f7cdc89a 100644 +index a4935e0192ee0d117521f8aee441effae4a25e4a..d23ad60007ae246c66d9dc9d6cf180cc3675b31b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -86,6 +86,49 @@ public class PurpurWorldConfig { diff --git a/patches/server/0074-Add-ping-command.patch b/patches/server/0072-Add-ping-command.patch similarity index 100% rename from patches/server/0074-Add-ping-command.patch rename to patches/server/0072-Add-ping-command.patch diff --git a/patches/server/0075-Add-demo-command.patch b/patches/server/0073-Add-demo-command.patch similarity index 100% rename from patches/server/0075-Add-demo-command.patch rename to patches/server/0073-Add-demo-command.patch diff --git a/patches/server/0076-Configurable-jockey-options.patch b/patches/server/0074-Configurable-jockey-options.patch similarity index 96% rename from patches/server/0076-Configurable-jockey-options.patch rename to patches/server/0074-Configurable-jockey-options.patch index 4a81d5a43..703362d15 100644 --- a/patches/server/0076-Configurable-jockey-options.patch +++ b/patches/server/0074-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ index 04d09123f70a192f1283c0d7e8a8254f3d30889a..43ef93d2c0c59e0d7021ee9aa2b44345 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456ce541e23 100644 +index d23ad60007ae246c66d9dc9d6cf180cc3675b31b..f29c21a93c5f608f74885f702bd443759f344044 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -493,6 +493,9 @@ public class PurpurWorldConfig { +@@ -491,6 +491,9 @@ public class PurpurWorldConfig { public boolean drownedRidableInWater = false; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -503,6 +506,9 @@ public class PurpurWorldConfig { +@@ -501,6 +504,9 @@ public class PurpurWorldConfig { } drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -190,7 +190,7 @@ index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456 } public boolean elderGuardianRidable = false; -@@ -715,6 +721,9 @@ public class PurpurWorldConfig { +@@ -713,6 +719,9 @@ public class PurpurWorldConfig { public boolean huskRidableInWater = false; public double huskMaxHealth = 20.0D; public double huskSpawnReinforcements = 0.1D; @@ -200,7 +200,7 @@ index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -725,6 +734,9 @@ public class PurpurWorldConfig { +@@ -723,6 +732,9 @@ public class PurpurWorldConfig { } huskMaxHealth = getDouble("mobs.husk.attributes.max_health", huskMaxHealth); huskSpawnReinforcements = getDouble("mobs.husk.attributes.spawn_reinforcements", huskSpawnReinforcements); @@ -210,7 +210,7 @@ index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456 } public boolean illusionerRidable = false; -@@ -1429,6 +1441,9 @@ public class PurpurWorldConfig { +@@ -1425,6 +1437,9 @@ public class PurpurWorldConfig { public boolean zombieRidableInWater = false; public double zombieMaxHealth = 20.0D; public double zombieSpawnReinforcements = 0.1D; @@ -220,7 +220,7 @@ index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1439,6 +1454,9 @@ public class PurpurWorldConfig { +@@ -1435,6 +1450,9 @@ public class PurpurWorldConfig { } zombieMaxHealth = getDouble("mobs.zombie.attributes.max_health", zombieMaxHealth); zombieSpawnReinforcements = getDouble("mobs.zombie.attributes.spawn_reinforcements", zombieSpawnReinforcements); @@ -230,7 +230,7 @@ index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456 } public boolean zombieHorseRidableInWater = false; -@@ -1472,6 +1490,9 @@ public class PurpurWorldConfig { +@@ -1468,6 +1486,9 @@ public class PurpurWorldConfig { public boolean zombieVillagerRidableInWater = false; public double zombieVillagerMaxHealth = 20.0D; public double zombieVillagerSpawnReinforcements = 0.1D; @@ -240,7 +240,7 @@ index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -1482,12 +1503,18 @@ public class PurpurWorldConfig { +@@ -1478,12 +1499,18 @@ public class PurpurWorldConfig { } zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); @@ -259,7 +259,7 @@ index 59096e683f1ed1675d142a9a737519f3f7cdc89a..d3796ea8bb8ad36a79d79a06ee250456 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1498,5 +1525,8 @@ public class PurpurWorldConfig { +@@ -1494,5 +1521,8 @@ public class PurpurWorldConfig { } zombifiedPiglinMaxHealth = getDouble("mobs.zombified_piglin.attributes.max_health", zombifiedPiglinMaxHealth); zombifiedPiglinSpawnReinforcements = getDouble("mobs.zombified_piglin.attributes.spawn_reinforcements", zombifiedPiglinSpawnReinforcements); diff --git a/patches/server/0077-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/patches/server/0075-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 98% rename from patches/server/0077-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to patches/server/0075-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index cb4cb9b26..eb4f65ce1 100644 --- a/patches/server/0077-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/patches/server/0075-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -258,10 +258,10 @@ index 359f5d01d144121e0ea129aebc45b3e796c16bf7..fcb383cea17217b6ee26fcd8b59e5ce6 private float speed = 0.1F; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d3796ea8bb8ad36a79d79a06ee250456ce541e23..f8a0044435e8c20395b8bc6700c625b391ca1a9e 100644 +index f29c21a93c5f608f74885f702bd443759f344044..cbba8100719c4a02271081c789a45d52d79f5279 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -906,6 +906,9 @@ public class PurpurWorldConfig { +@@ -904,6 +904,9 @@ public class PurpurWorldConfig { public int phantomFlameFireTime = 8; public boolean phantomAllowGriefing = false; public double phantomMaxHealth = 20.0D; @@ -271,7 +271,7 @@ index d3796ea8bb8ad36a79d79a06ee250456ce541e23..f8a0044435e8c20395b8bc6700c625b3 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -919,6 +922,9 @@ public class PurpurWorldConfig { +@@ -917,6 +920,9 @@ public class PurpurWorldConfig { set("mobs.phantom.attributes.max_health", oldValue); } phantomMaxHealth = getDouble("mobs.phantom.attributes.max_health", phantomMaxHealth); diff --git a/patches/server/0078-Add-phantom-spawning-options.patch b/patches/server/0076-Add-phantom-spawning-options.patch similarity index 98% rename from patches/server/0078-Add-phantom-spawning-options.patch rename to patches/server/0076-Add-phantom-spawning-options.patch index ab3e0f91f..701f54291 100644 --- a/patches/server/0078-Add-phantom-spawning-options.patch +++ b/patches/server/0076-Add-phantom-spawning-options.patch @@ -189,10 +189,10 @@ index 79504dc3448402e73b09c4232b1fd0488872cf68..5c7683058b79953aa4f7427d7654b7e4 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f8a0044435e8c20395b8bc6700c625b391ca1a9e..9b94df72ec46c37afc26f84e9faf484bef213dbb 100644 +index cbba8100719c4a02271081c789a45d52d79f5279..e63a5b2f8d750386b8b89d512ae93855779d48f1 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -909,6 +909,18 @@ public class PurpurWorldConfig { +@@ -907,6 +907,18 @@ public class PurpurWorldConfig { public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; public double phantomOrbitCrystalRadius = 0.0D; @@ -211,7 +211,7 @@ index f8a0044435e8c20395b8bc6700c625b391ca1a9e..9b94df72ec46c37afc26f84e9faf484b private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -925,6 +937,18 @@ public class PurpurWorldConfig { +@@ -923,6 +935,18 @@ 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/0079-Implement-bed-explosion-options.patch b/patches/server/0077-Implement-bed-explosion-options.patch similarity index 95% rename from patches/server/0079-Implement-bed-explosion-options.patch rename to patches/server/0077-Implement-bed-explosion-options.patch index 30b37cc21..eca870590 100644 --- a/patches/server/0079-Implement-bed-explosion-options.patch +++ b/patches/server/0077-Implement-bed-explosion-options.patch @@ -18,7 +18,7 @@ index 163a7861f987c3832aac51cc6df950c768546731..cfe4cdbd28ff11ea2781d47fe6d8c2de } else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) { if (!this.kickVillagerOutOfBed(world, pos)) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 9b94df72ec46c37afc26f84e9faf484bef213dbb..71b2eb0695a208a2d746589b4c60127a6c8cf91c 100644 +index e63a5b2f8d750386b8b89d512ae93855779d48f1..aef00994ecb56e83500c2005b41cbeb992bf5ea2 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -4,6 +4,7 @@ import net.minecraft.core.Registry; @@ -38,7 +38,7 @@ index 9b94df72ec46c37afc26f84e9faf484bef213dbb..71b2eb0695a208a2d746589b4c60127a import static net.pl3x.purpur.PurpurConfig.log; public class PurpurWorldConfig { -@@ -252,6 +255,22 @@ public class PurpurWorldConfig { +@@ -250,6 +253,22 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } diff --git a/patches/server/0080-Implement-respawn-anchor-explosion-options.patch b/patches/server/0078-Implement-respawn-anchor-explosion-options.patch similarity index 95% rename from patches/server/0080-Implement-respawn-anchor-explosion-options.patch rename to patches/server/0078-Implement-respawn-anchor-explosion-options.patch index 233d4fa5f..a3df6b464 100644 --- a/patches/server/0080-Implement-respawn-anchor-explosion-options.patch +++ b/patches/server/0078-Implement-respawn-anchor-explosion-options.patch @@ -18,10 +18,10 @@ index af4eb4a8814491afef449a2874521636957d7557..365c28300ecfbe0161716972adf22a8a public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 71b2eb0695a208a2d746589b4c60127a6c8cf91c..3e76349fb02722653c5765915941386f1fea3e00 100644 +index aef00994ecb56e83500c2005b41cbeb992bf5ea2..2d24f0002b63f83ef3950c218eeadf630a1591f4 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -292,6 +292,22 @@ public class PurpurWorldConfig { +@@ -290,6 +290,22 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } diff --git a/patches/server/0081-Add-allow-water-in-end-world-option.patch b/patches/server/0079-Add-allow-water-in-end-world-option.patch similarity index 98% rename from patches/server/0081-Add-allow-water-in-end-world-option.patch rename to patches/server/0079-Add-allow-water-in-end-world-option.patch index b70712e6c..57dff7cc9 100644 --- a/patches/server/0081-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0079-Add-allow-water-in-end-world-option.patch @@ -68,7 +68,7 @@ index df4f2c729f09d5229553308e4876f29de648543f..f2b0278679fa649bbc2904660e0dc9ab } else { world.setBlockAndUpdate(pos, Blocks.WATER.defaultBlockState()); diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index c143f2c95fddece9c97f6f5eeb9a0ba52dae18b5..d1085145b768911c66d48101c7c58f9698718467 100644 +index 8a515bbb2f680e27bf5169992bdb3cf19297660d..4d7208faacc42fe18162283e996779add46519e8 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -190,6 +190,11 @@ public class PurpurConfig { diff --git a/patches/server/0082-Allow-color-codes-in-books.patch b/patches/server/0080-Allow-color-codes-in-books.patch similarity index 100% rename from patches/server/0082-Allow-color-codes-in-books.patch rename to patches/server/0080-Allow-color-codes-in-books.patch diff --git a/patches/server/0083-Entity-lifespan.patch b/patches/server/0081-Entity-lifespan.patch similarity index 95% rename from patches/server/0083-Entity-lifespan.patch rename to patches/server/0081-Entity-lifespan.patch index d5a2ab684..bd44ed7d9 100644 --- a/patches/server/0083-Entity-lifespan.patch +++ b/patches/server/0081-Entity-lifespan.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity lifespan diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 45c9c4d751a51a524ff881d9fe3c1a48d141ba54..568c11075c7a45f210bb2ddc81c313d0dec8539e 100644 +index c7caa9531a761405d1793c90080bb8721626a7d2..2ca0c22a23916acd034f70edc9d94ea22bbd0b52 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -125,6 +125,7 @@ public abstract class Mob extends LivingEntity { @@ -89,7 +89,7 @@ index 45c9c4d751a51a524ff881d9fe3c1a48d141ba54..568c11075c7a45f210bb2ddc81c313d0 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 3e76349fb02722653c5765915941386f1fea3e00..f495a57ae90d5ca10d63a1f2e7fc6f215b1b04ec 100644 +index 2d24f0002b63f83ef3950c218eeadf630a1591f4..5a1f8bc6dca2f9e65ee2bd95a46f3bb3a3c5b447 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -89,6 +89,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch b/patches/server/0082-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch similarity index 97% rename from patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch rename to patches/server/0082-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch index 1bfd4c7ad..eb6704073 100644 --- a/patches/server/0084-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch +++ b/patches/server/0082-Add-option-to-teleport-to-spawn-if-outside-world-bor.patch @@ -55,7 +55,7 @@ index 5de1f9729ad0d2857e4c25bb3b9bf3f575217e99..f4eb8ea592e259bca1b961bbbf3f99c9 } } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f495a57ae90d5ca10d63a1f2e7fc6f215b1b04ec..f798517c786d8d887786deafa5c9c82a1f785114 100644 +index 5a1f8bc6dca2f9e65ee2bd95a46f3bb3a3c5b447..6b982ddaa5ee787561ce1ebd7eecf7fe464271fe 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -207,6 +207,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0085-Squid-EAR-immunity.patch b/patches/server/0083-Squid-EAR-immunity.patch similarity index 91% rename from patches/server/0085-Squid-EAR-immunity.patch rename to patches/server/0083-Squid-EAR-immunity.patch index 5c1c1d917..02c695ff6 100644 --- a/patches/server/0085-Squid-EAR-immunity.patch +++ b/patches/server/0083-Squid-EAR-immunity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Squid EAR immunity diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f798517c786d8d887786deafa5c9c82a1f785114..a6da4fb3799b9c3ce624f90479e7546fc071b9a5 100644 +index 6b982ddaa5ee787561ce1ebd7eecf7fe464271fe..dd88d36794257e053c80f73323bfdf1672bbfb4a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1245,6 +1245,7 @@ public class PurpurWorldConfig { +@@ -1243,6 +1243,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public double squidMaxHealth = 10.0D; @@ -16,7 +16,7 @@ index f798517c786d8d887786deafa5c9c82a1f785114..a6da4fb3799b9c3ce624f90479e7546f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1253,6 +1254,7 @@ public class PurpurWorldConfig { +@@ -1251,6 +1252,7 @@ public class PurpurWorldConfig { set("mobs.squid.attributes.max_health", oldValue); } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); diff --git a/patches/server/0086-Configurable-end-spike-seed.patch b/patches/server/0084-Configurable-end-spike-seed.patch similarity index 96% rename from patches/server/0086-Configurable-end-spike-seed.patch rename to patches/server/0084-Configurable-end-spike-seed.patch index 2efc18f32..a1c9c47d6 100644 --- a/patches/server/0086-Configurable-end-spike-seed.patch +++ b/patches/server/0084-Configurable-end-spike-seed.patch @@ -19,7 +19,7 @@ index c03bf5bdb67b00c75f9fcfead882c4d944282244..59f7ec9b307a99c5fe2def995523a5f6 return SPIKE_CACHE.getUnchecked(l); } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index d1085145b768911c66d48101c7c58f9698718467..f8bd48d530f2bc5463001b09d0dd526388c452f3 100644 +index 4d7208faacc42fe18162283e996779add46519e8..22da09e40f2b835868407ff808967dd7d393e08b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -1,5 +1,6 @@ diff --git a/patches/server/0087-Configurable-dungeon-seed.patch b/patches/server/0085-Configurable-dungeon-seed.patch similarity index 96% rename from patches/server/0087-Configurable-dungeon-seed.patch rename to patches/server/0085-Configurable-dungeon-seed.patch index cbe3ecae7..9bc798dca 100644 --- a/patches/server/0087-Configurable-dungeon-seed.patch +++ b/patches/server/0085-Configurable-dungeon-seed.patch @@ -32,7 +32,7 @@ index d36b6208077254af5f0ebed8e8ce20fd45cbb79d..b09611f7c5177d3f5b22ffcaa9a65480 int i = 3; int j = random.nextInt(2) + 2; diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index f8bd48d530f2bc5463001b09d0dd526388c452f3..a027ab69a2e3cd12ca730aeed8a67e0379db0e85 100644 +index 22da09e40f2b835868407ff808967dd7d393e08b..701bf8b781fb9f276a0c470a5f9434e51cd56bfd 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -146,10 +146,13 @@ public class PurpurConfig { diff --git a/patches/server/0088-Phantoms-burn-in-light.patch b/patches/server/0086-Phantoms-burn-in-light.patch similarity index 96% rename from patches/server/0088-Phantoms-burn-in-light.patch rename to patches/server/0086-Phantoms-burn-in-light.patch index e60d1b24c..94767b6a9 100644 --- a/patches/server/0088-Phantoms-burn-in-light.patch +++ b/patches/server/0086-Phantoms-burn-in-light.patch @@ -47,10 +47,10 @@ index fcb383cea17217b6ee26fcd8b59e5ce6a7ca0f8e..782d4499f925950d66072b63f34a828b list.sort(Comparator.comparing(Entity::getY).reversed()); // Paper - remap fix Iterator iterator = list.iterator(); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a6da4fb3799b9c3ce624f90479e7546fc071b9a5..ef7dc4fe0eb958e0b8faca8768a18054d0adcf15 100644 +index dd88d36794257e053c80f73323bfdf1672bbfb4a..5cd4122edfaaeff27bbb605922442454fc4d925b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -963,6 +963,9 @@ public class PurpurWorldConfig { +@@ -961,6 +961,9 @@ public class PurpurWorldConfig { public int phantomSpawnOverheadRadius = 10; public int phantomSpawnMinPerAttempt = 1; public int phantomSpawnMaxPerAttempt = -1; @@ -60,7 +60,7 @@ index a6da4fb3799b9c3ce624f90479e7546fc071b9a5..ef7dc4fe0eb958e0b8faca8768a18054 private void phantomSettings() { phantomRidable = getBoolean("mobs.phantom.ridable", phantomRidable); phantomRidableInWater = getBoolean("mobs.phantom.ridable-in-water", phantomRidableInWater); -@@ -991,6 +994,9 @@ public class PurpurWorldConfig { +@@ -989,6 +992,9 @@ public class PurpurWorldConfig { phantomSpawnOverheadRadius = getInt("mobs.phantom.spawn.overhead.radius", phantomSpawnOverheadRadius); phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt); phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt); diff --git a/patches/server/0089-Configurable-villager-breeding.patch b/patches/server/0087-Configurable-villager-breeding.patch similarity index 91% rename from patches/server/0089-Configurable-villager-breeding.patch rename to patches/server/0087-Configurable-villager-breeding.patch index 85ff8993b..f68ef1c6a 100644 --- a/patches/server/0089-Configurable-villager-breeding.patch +++ b/patches/server/0087-Configurable-villager-breeding.patch @@ -18,10 +18,10 @@ index 5e100dbdbd6cfb4aa34b0d6b1ce0913899f60b7c..1e05cc98a332e5b115c4670e5331e679 private boolean hungry() { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ef7dc4fe0eb958e0b8faca8768a18054d0adcf15..ad02fcc56677635448ec4b89932fe58bb676408e 100644 +index 5cd4122edfaaeff27bbb605922442454fc4d925b..68439a33a3cc8c55506dc0e6d977ac0c9d00fb50 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1389,6 +1389,7 @@ public class PurpurWorldConfig { +@@ -1386,6 +1386,7 @@ public class PurpurWorldConfig { public boolean villagerCanBeLeashed = false; public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; @@ -29,7 +29,7 @@ index ef7dc4fe0eb958e0b8faca8768a18054d0adcf15..ad02fcc56677635448ec4b89932fe58b private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1405,6 +1406,7 @@ public class PurpurWorldConfig { +@@ -1401,6 +1402,7 @@ public class PurpurWorldConfig { villagerCanBeLeashed = getBoolean("mobs.villager.can-be-leashed", villagerCanBeLeashed); villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); diff --git a/patches/server/0090-Redstone-deactivates-spawners.patch b/patches/server/0088-Redstone-deactivates-spawners.patch similarity index 92% rename from patches/server/0090-Redstone-deactivates-spawners.patch rename to patches/server/0088-Redstone-deactivates-spawners.patch index c8c0fef5c..2b4bbe579 100644 --- a/patches/server/0090-Redstone-deactivates-spawners.patch +++ b/patches/server/0088-Redstone-deactivates-spawners.patch @@ -17,10 +17,10 @@ index 9228c0bc797fb95c8ac949bdc568eadafee84a80..f2c9f841d397f445cd3d0420f19e765c } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ad02fcc56677635448ec4b89932fe58bb676408e..bb4a7534911b9718ec383f464ae2853a8efea2a2 100644 +index 68439a33a3cc8c55506dc0e6d977ac0c9d00fb50..12c3a1bd4bb991828084409a88c2375001f5ad01 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -322,6 +322,11 @@ public class PurpurWorldConfig { +@@ -320,6 +320,11 @@ public class PurpurWorldConfig { signRightClickEdit = getBoolean("blocks.sign.right-click-edit", signRightClickEdit); } diff --git a/patches/server/0091-Totems-work-in-inventory.patch b/patches/server/0089-Totems-work-in-inventory.patch similarity index 96% rename from patches/server/0091-Totems-work-in-inventory.patch rename to patches/server/0089-Totems-work-in-inventory.patch index 8be41b0c2..96fbddd20 100644 --- a/patches/server/0091-Totems-work-in-inventory.patch +++ b/patches/server/0089-Totems-work-in-inventory.patch @@ -29,7 +29,7 @@ index f4eb8ea592e259bca1b961bbbf3f99c9cb058640..c3aa354635d7e784726ec5086e652433 event.setCancelled(itemstack == null); this.level.getCraftServer().getPluginManager().callEvent(event); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index bb4a7534911b9718ec383f464ae2853a8efea2a2..f911e276e94016a4911e5685b3bb382f7e45f894 100644 +index 12c3a1bd4bb991828084409a88c2375001f5ad01..bebbe0fc92cabdd719f8ed5f61a470a94dfb7099 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -208,6 +208,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0092-Add-vindicator-johnny-spawn-chance.patch b/patches/server/0090-Add-vindicator-johnny-spawn-chance.patch similarity index 92% rename from patches/server/0092-Add-vindicator-johnny-spawn-chance.patch rename to patches/server/0090-Add-vindicator-johnny-spawn-chance.patch index 98c52904b..44e9e5624 100644 --- a/patches/server/0092-Add-vindicator-johnny-spawn-chance.patch +++ b/patches/server/0090-Add-vindicator-johnny-spawn-chance.patch @@ -30,10 +30,10 @@ index 76e6ea34db3942e9dd7646ad7ca1259f4387a4d8..9096c40ad5784d9097e889f0f43b6cf1 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f911e276e94016a4911e5685b3bb382f7e45f894..6697c7b15917c3d7213ccf329b564372239a5228 100644 +index bebbe0fc92cabdd719f8ed5f61a470a94dfb7099..d75b01c785986f9cc4174aea6b3afce303d4130e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1419,6 +1419,7 @@ public class PurpurWorldConfig { +@@ -1415,6 +1415,7 @@ public class PurpurWorldConfig { public boolean vindicatorRidable = false; public boolean vindicatorRidableInWater = false; public double vindicatorMaxHealth = 24.0D; @@ -41,7 +41,7 @@ index f911e276e94016a4911e5685b3bb382f7e45f894..6697c7b15917c3d7213ccf329b564372 private void vindicatorSettings() { vindicatorRidable = getBoolean("mobs.vindicator.ridable", vindicatorRidable); vindicatorRidableInWater = getBoolean("mobs.vindicator.ridable-in-water", vindicatorRidableInWater); -@@ -1428,6 +1429,7 @@ public class PurpurWorldConfig { +@@ -1424,6 +1425,7 @@ public class PurpurWorldConfig { set("mobs.vindicator.attributes.max_health", oldValue); } vindicatorMaxHealth = getDouble("mobs.vindicator.attributes.max_health", vindicatorMaxHealth); diff --git a/patches/server/0093-Add-option-to-disable-certain-block-updates.patch b/patches/server/0091-Add-option-to-disable-certain-block-updates.patch similarity index 99% rename from patches/server/0093-Add-option-to-disable-certain-block-updates.patch rename to patches/server/0091-Add-option-to-disable-certain-block-updates.patch index e21652872..57109b994 100644 --- a/patches/server/0093-Add-option-to-disable-certain-block-updates.patch +++ b/patches/server/0091-Add-option-to-disable-certain-block-updates.patch @@ -117,7 +117,7 @@ index f8e58d9f71703139a736d93e7f1996e027a29444..d3c8fd8399629efb8bcbaf7d9a0c4334 } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index a027ab69a2e3cd12ca730aeed8a67e0379db0e85..4dfe883f7e3184ca85341d724c306f17c5abc91e 100644 +index 701bf8b781fb9f276a0c470a5f9434e51cd56bfd..0a43200e28c9f499454858b1ec90f1082611c244 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -206,6 +206,15 @@ public class PurpurConfig { diff --git a/patches/server/0094-Dispensers-place-anvils-option.patch b/patches/server/0092-Dispensers-place-anvils-option.patch similarity index 95% rename from patches/server/0094-Dispensers-place-anvils-option.patch rename to patches/server/0092-Dispensers-place-anvils-option.patch index c358e1a11..883a9c50c 100644 --- a/patches/server/0094-Dispensers-place-anvils-option.patch +++ b/patches/server/0092-Dispensers-place-anvils-option.patch @@ -41,10 +41,10 @@ index 92623ae25249d63efb92be8bd6c95228f9155ad2..20bf6d01046488eff53a109f5239351a static void setEntityPokingOutOfBlock(BlockSource pointer, Entity entity, Direction direction) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 6697c7b15917c3d7213ccf329b564372239a5228..b67352c0f4d538ba4fc8dc41590fb4f871d46d3b 100644 +index d75b01c785986f9cc4174aea6b3afce303d4130e..78f3a0f2e9ccf855b91aa36bdd987c2616fc5544 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -281,8 +281,10 @@ public class PurpurWorldConfig { +@@ -279,8 +279,10 @@ public class PurpurWorldConfig { } public boolean dispenserApplyCursedArmor = true; diff --git a/patches/server/0095-Allow-anvil-colors.patch b/patches/server/0093-Allow-anvil-colors.patch similarity index 94% rename from patches/server/0095-Allow-anvil-colors.patch rename to patches/server/0093-Allow-anvil-colors.patch index 07a6820ea..39aebe58e 100644 --- a/patches/server/0095-Allow-anvil-colors.patch +++ b/patches/server/0093-Allow-anvil-colors.patch @@ -37,10 +37,10 @@ index 2db80c986e1dbd4aa9be288cc802f650169dc11a..1d186f9e3c2b10420abf8b3334cbcc42 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index b67352c0f4d538ba4fc8dc41590fb4f871d46d3b..f9d66b7aa5d2c13190f438b14bd4bf6626e2c123 100644 +index 78f3a0f2e9ccf855b91aa36bdd987c2616fc5544..36ab21f01abc8700a89c04266b9054dc38dfdbca 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -264,6 +264,11 @@ public class PurpurWorldConfig { +@@ -262,6 +262,11 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } diff --git a/patches/server/0096-Add-no-random-tick-block-list.patch b/patches/server/0094-Add-no-random-tick-block-list.patch similarity index 96% rename from patches/server/0096-Add-no-random-tick-block-list.patch rename to patches/server/0094-Add-no-random-tick-block-list.patch index 7a9f30126..11b9a9d0e 100644 --- a/patches/server/0096-Add-no-random-tick-block-list.patch +++ b/patches/server/0094-Add-no-random-tick-block-list.patch @@ -35,7 +35,7 @@ index a107304351381d68fdaa35a4d7ff214e6c1546a6..6e5dcf3c8a537729a18c085ebb5ab46b } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f9d66b7aa5d2c13190f438b14bd4bf6626e2c123..7d7644863256cc69077292fd1d2fdc38f9e378f1 100644 +index 36ab21f01abc8700a89c04266b9054dc38dfdbca..37c6816545d8b449e519454bc22c7b7d5e6aa44d 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -12,8 +12,10 @@ import org.bukkit.configuration.ConfigurationSection; @@ -49,7 +49,7 @@ index f9d66b7aa5d2c13190f438b14bd4bf6626e2c123..7d7644863256cc69077292fd1d2fdc38 import java.util.logging.Level; import static net.pl3x.purpur.PurpurConfig.log; -@@ -264,6 +266,28 @@ public class PurpurWorldConfig { +@@ -262,6 +264,28 @@ public class PurpurWorldConfig { voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); } diff --git a/patches/server/0097-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0095-Add-option-to-disable-dolphin-treasure-searching.patch similarity index 90% rename from patches/server/0097-Add-option-to-disable-dolphin-treasure-searching.patch rename to patches/server/0095-Add-option-to-disable-dolphin-treasure-searching.patch index e5b6b1429..f14926bb4 100644 --- a/patches/server/0097-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0095-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index c372d47a929e06c8cfb0df86cf4e9bfee4d4b300..2aead13e8f879b614445715fb1912a20 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7d7644863256cc69077292fd1d2fdc38f9e378f1..ad7b6e2df7d0579e95b7f0b82481868e21358ddb 100644 +index 37c6816545d8b449e519454bc22c7b7d5e6aa44d..12dd2095643721189d8f6b7bcc04591f8290da06 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -532,6 +532,7 @@ public class PurpurWorldConfig { +@@ -530,6 +530,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index 7d7644863256cc69077292fd1d2fdc38f9e378f1..ad7b6e2df7d0579e95b7f0b82481868e private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinSpitCooldown = getInt("mobs.dolphin.spit.cooldown", dolphinSpitCooldown); -@@ -543,6 +544,7 @@ public class PurpurWorldConfig { +@@ -541,6 +542,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0098-Short-enderman-height.patch b/patches/server/0096-Short-enderman-height.patch similarity index 97% rename from patches/server/0098-Short-enderman-height.patch rename to patches/server/0096-Short-enderman-height.patch index 3787271ea..42545ea7b 100644 --- a/patches/server/0098-Short-enderman-height.patch +++ b/patches/server/0096-Short-enderman-height.patch @@ -31,7 +31,7 @@ index 6e0b5fbf5b0d216b6b7c647d45ef37cd6b591717..5ebedd6a156b06e98aded57c817f6342 if (this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.INDIRECT)) { // Paper start for (int i = 0; i < 64; ++i) { diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 4dfe883f7e3184ca85341d724c306f17c5abc91e..1fab90fdafdcd9095d806727133bf3b7c17f2323 100644 +index 0a43200e28c9f499454858b1ec90f1082611c244..2ec5a60b1720f53cc9e58670932924ef9ec6da3a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -3,6 +3,8 @@ package net.pl3x.purpur; diff --git a/patches/server/0099-Stop-squids-floating-on-top-of-water.patch b/patches/server/0097-Stop-squids-floating-on-top-of-water.patch similarity index 94% rename from patches/server/0099-Stop-squids-floating-on-top-of-water.patch rename to patches/server/0097-Stop-squids-floating-on-top-of-water.patch index a6a2ad7ec..946978e45 100644 --- a/patches/server/0099-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0097-Stop-squids-floating-on-top-of-water.patch @@ -60,10 +60,10 @@ index 120498a39b7ca7aee9763084507508d4a1c425aa..0dfc639043998cd3bd32afaaf8153459 + // Purpur } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ad7b6e2df7d0579e95b7f0b82481868e21358ddb..b7987fe0d7a73ed4ab0c47648f5da23f8c15560c 100644 +index 12dd2095643721189d8f6b7bcc04591f8290da06..20dc02807c5416da15fc63e2c5975dc29d6cdf36 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1292,6 +1292,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1290,7 @@ public class PurpurWorldConfig { public boolean squidRidable = false; public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; @@ -71,7 +71,7 @@ index ad7b6e2df7d0579e95b7f0b82481868e21358ddb..b7987fe0d7a73ed4ab0c47648f5da23f private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1301,6 +1302,7 @@ public class PurpurWorldConfig { +@@ -1299,6 +1300,7 @@ public class PurpurWorldConfig { } squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); diff --git a/patches/server/0100-Use-configured-height-for-nether-surface-builders.patch b/patches/server/0098-Use-configured-height-for-nether-surface-builders.patch similarity index 100% rename from patches/server/0100-Use-configured-height-for-nether-surface-builders.patch rename to patches/server/0098-Use-configured-height-for-nether-surface-builders.patch diff --git a/patches/server/0101-Crying-obsidian-valid-for-portal-frames.patch b/patches/server/0099-Crying-obsidian-valid-for-portal-frames.patch similarity index 96% rename from patches/server/0101-Crying-obsidian-valid-for-portal-frames.patch rename to patches/server/0099-Crying-obsidian-valid-for-portal-frames.patch index 0bcf9c82e..e963f1238 100644 --- a/patches/server/0101-Crying-obsidian-valid-for-portal-frames.patch +++ b/patches/server/0099-Crying-obsidian-valid-for-portal-frames.patch @@ -18,7 +18,7 @@ index c07b5d1f1ef8b5e6026c7555d476880c8802d6c5..068f1b184a3694603f564d49fa45d5ce private final LevelAccessor level; private final Direction.Axis axis; diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 1fab90fdafdcd9095d806727133bf3b7c17f2323..289bc6840b6d3f68b93a565c9cf3079231fab367 100644 +index 2ec5a60b1720f53cc9e58670932924ef9ec6da3a..0210c671fe1708cb30314e338e690e68ecb13a56 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -182,6 +182,7 @@ public class PurpurConfig { diff --git a/patches/server/0102-Entities-can-use-portals-configuration.patch b/patches/server/0100-Entities-can-use-portals-configuration.patch similarity index 86% rename from patches/server/0102-Entities-can-use-portals-configuration.patch rename to patches/server/0100-Entities-can-use-portals-configuration.patch index 380a4f8fd..3849cf889 100644 --- a/patches/server/0102-Entities-can-use-portals-configuration.patch +++ b/patches/server/0100-Entities-can-use-portals-configuration.patch @@ -27,21 +27,21 @@ index 238acdec48ee5524ecb7645252bec7613e286cf7..98609a741b9a47417e7de1be4b972e2a public float getBlockExplosionResistance(Explosion explosion, BlockGetter world, BlockPos pos, BlockState blockState, FluidState fluidState, float max) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index b7987fe0d7a73ed4ab0c47648f5da23f8c15560c..842bc3d16f13d1a3daf663b2bdfb0135832c95da 100644 +index 20dc02807c5416da15fc63e2c5975dc29d6cdf36..7a611f8b16a5549be4d6d8681a74d2c6bd50f80c 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -251,6 +251,7 @@ public class PurpurWorldConfig { +@@ -250,6 +250,7 @@ public class PurpurWorldConfig { + public boolean useBetterMending = false; public boolean boatEjectPlayersOnLand = false; public boolean disableDropsOnCrammingDeath = false; - public boolean entitiesPickUpLootBypassMobGriefing = false; + public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; -@@ -260,6 +261,7 @@ public class PurpurWorldConfig { +@@ -258,6 +259,7 @@ public class PurpurWorldConfig { + 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); - entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); + entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); diff --git a/patches/server/0103-LivingEntity-broadcastItemBreak.patch b/patches/server/0101-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/server/0103-LivingEntity-broadcastItemBreak.patch rename to patches/server/0101-LivingEntity-broadcastItemBreak.patch diff --git a/patches/server/0104-Customizable-wither-health-and-healing.patch b/patches/server/0102-Customizable-wither-health-and-healing.patch similarity index 92% rename from patches/server/0104-Customizable-wither-health-and-healing.patch rename to patches/server/0102-Customizable-wither-health-and-healing.patch index 5eae50585..f8675e3c2 100644 --- a/patches/server/0104-Customizable-wither-health-and-healing.patch +++ b/patches/server/0102-Customizable-wither-health-and-healing.patch @@ -23,10 +23,10 @@ index 22dd455b3b9c148f38a63f72901009f864e63a4b..689df66281ef84f0cc31d89c6f2e654c this.bossEvent.setProgress(this.getHealth() / this.getMaxHealth()); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 842bc3d16f13d1a3daf663b2bdfb0135832c95da..8d70915300f563affb7d8ab631699c484fb9c8f8 100644 +index 7a611f8b16a5549be4d6d8681a74d2c6bd50f80c..9825fe8dd51f5dda74f6645f0ea78ee22746366e 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1505,6 +1505,8 @@ public class PurpurWorldConfig { +@@ -1501,6 +1501,8 @@ public class PurpurWorldConfig { public boolean witherRidableInWater = false; public double witherMaxY = 256D; public double witherMaxHealth = 300.0D; @@ -35,7 +35,7 @@ index 842bc3d16f13d1a3daf663b2bdfb0135832c95da..8d70915300f563affb7d8ab631699c48 private void witherSettings() { witherRidable = getBoolean("mobs.wither.ridable", witherRidable); witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); -@@ -1519,6 +1521,8 @@ public class PurpurWorldConfig { +@@ -1515,6 +1517,8 @@ public class PurpurWorldConfig { set("mobs.wither.attributes.max_health", oldValue); } witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); diff --git a/patches/server/0105-Allow-toggling-special-MobSpawners-per-world.patch b/patches/server/0103-Allow-toggling-special-MobSpawners-per-world.patch similarity index 99% rename from patches/server/0105-Allow-toggling-special-MobSpawners-per-world.patch rename to patches/server/0103-Allow-toggling-special-MobSpawners-per-world.patch index 9c1b4cdcd..9f447dfe4 100644 --- a/patches/server/0105-Allow-toggling-special-MobSpawners-per-world.patch +++ b/patches/server/0103-Allow-toggling-special-MobSpawners-per-world.patch @@ -107,7 +107,7 @@ index 1f9129180badb6df786b080edf926d04ef95125c..917a671894e16e024db941cea1845e39 this.world = new CraftWorld((ServerLevel) this, gen, env); this.ticksPerAnimalSpawns = this.getCraftServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 8d70915300f563affb7d8ab631699c484fb9c8f8..81b278aa74073b2e01a33635c33cb723de8cc3ad 100644 +index 9825fe8dd51f5dda74f6645f0ea78ee22746366e..ea1e7d9c917762457ecb8b22bcf790cdbe674da7 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -8,6 +8,8 @@ import net.minecraft.world.level.Explosion; diff --git a/patches/server/0106-Raid-cooldown-setting.patch b/patches/server/0104-Raid-cooldown-setting.patch similarity index 94% rename from patches/server/0106-Raid-cooldown-setting.patch rename to patches/server/0104-Raid-cooldown-setting.patch index 7ba234769..78a7ca8a7 100644 --- a/patches/server/0106-Raid-cooldown-setting.patch +++ b/patches/server/0104-Raid-cooldown-setting.patch @@ -52,10 +52,10 @@ index 45e369aa69a6b78def42b619b1b1b8259d4b30ea..de7443e7a27e51eabaed2d6d348ec8ea if (!this.raidMap.containsKey(raid.getId())) { this.raidMap.put(raid.getId(), raid); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 81b278aa74073b2e01a33635c33cb723de8cc3ad..e708ac646839854d20f0a88a1c1b81336b0cb850 100644 +index ea1e7d9c917762457ecb8b22bcf790cdbe674da7..9fabe3754c6097fbb3850b68ecf8873cc48beeac 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -282,6 +282,7 @@ public class PurpurWorldConfig { +@@ -281,6 +281,7 @@ public class PurpurWorldConfig { public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; @@ -63,7 +63,7 @@ index 81b278aa74073b2e01a33635c33cb723de8cc3ad..e708ac646839854d20f0a88a1c1b8133 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -292,6 +293,7 @@ public class PurpurWorldConfig { +@@ -290,6 +291,7 @@ public class PurpurWorldConfig { tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); diff --git a/patches/server/0107-Despawn-rate-config-options-per-projectile-type.patch b/patches/server/0105-Despawn-rate-config-options-per-projectile-type.patch similarity index 99% rename from patches/server/0107-Despawn-rate-config-options-per-projectile-type.patch rename to patches/server/0105-Despawn-rate-config-options-per-projectile-type.patch index d117000b1..1e567a5b0 100644 --- a/patches/server/0107-Despawn-rate-config-options-per-projectile-type.patch +++ b/patches/server/0105-Despawn-rate-config-options-per-projectile-type.patch @@ -271,7 +271,7 @@ index 4a11f7417b438ee5711a720aca3321c88e970b2a..46b74271ce5f614f07754db14d2a552c + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index e708ac646839854d20f0a88a1c1b81336b0cb850..6b44a1dce76913d2351c4491babef0c9ce59e5bf 100644 +index 9fabe3754c6097fbb3850b68ecf8873cc48beeac..ba8ecb633f612be228970473e3c2824102464520 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -250,6 +250,35 @@ public class PurpurWorldConfig { diff --git a/patches/server/0108-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/server/0106-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 96% rename from patches/server/0108-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/server/0106-Add-option-to-disable-zombie-aggressiveness-towards-.patch index 786bc0a7c..76aaf26bc 100644 --- a/patches/server/0108-Add-option-to-disable-zombie-aggressiveness-towards-.patch +++ b/patches/server/0106-Add-option-to-disable-zombie-aggressiveness-towards-.patch @@ -71,10 +71,10 @@ index 77002a4c3b03e0397515fd922f14e56b8e81074a..b80f7c71cbf7b10bda6fac3cfe673ac7 this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 6b44a1dce76913d2351c4491babef0c9ce59e5bf..eb9c4b2b3c5fdcb85e4e66afc745d62bf9cc2726 100644 +index ba8ecb633f612be228970473e3c2824102464520..ca0fc3079c48650f90535e356aa500928b92e693 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1633,6 +1633,7 @@ public class PurpurWorldConfig { +@@ -1629,6 +1629,7 @@ public class PurpurWorldConfig { public boolean zombieJockeyOnlyBaby = true; public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; @@ -82,7 +82,7 @@ index 6b44a1dce76913d2351c4491babef0c9ce59e5bf..eb9c4b2b3c5fdcb85e4e66afc745d62b private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1646,6 +1647,7 @@ public class PurpurWorldConfig { +@@ -1642,6 +1643,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/0109-Persistent-TileEntity-Lore-and-DisplayName.patch b/patches/server/0107-Persistent-TileEntity-Lore-and-DisplayName.patch similarity index 95% rename from patches/server/0109-Persistent-TileEntity-Lore-and-DisplayName.patch rename to patches/server/0107-Persistent-TileEntity-Lore-and-DisplayName.patch index e3b6ad4bd..e90208041 100644 --- a/patches/server/0109-Persistent-TileEntity-Lore-and-DisplayName.patch +++ b/patches/server/0107-Persistent-TileEntity-Lore-and-DisplayName.patch @@ -189,19 +189,19 @@ index c3a07ccccd5cc38552363c82398f432c8d624288..132c9e6a643995d9fde535a78d9edc9e + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index eb9c4b2b3c5fdcb85e4e66afc745d62bf9cc2726..ab5d9375d20c38e0eb73a030524d59f78b58e3e5 100644 +index ca0fc3079c48650f90535e356aa500928b92e693..267ca0aa7187f8aac27d0b675c702f181da6d13a 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -308,6 +308,7 @@ public class PurpurWorldConfig { - public boolean entitiesPickUpLootBypassMobGriefing = false; +@@ -307,6 +307,7 @@ public class PurpurWorldConfig { + public boolean disableDropsOnCrammingDeath = false; public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; + public boolean persistentTileEntityDisplayNames = false; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -319,6 +320,7 @@ public class PurpurWorldConfig { - entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); +@@ -317,6 +318,7 @@ public class PurpurWorldConfig { + disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames); diff --git a/patches/server/0110-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/server/0108-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/server/0110-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/server/0108-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/server/0111-Flying-squids-Oh-my.patch b/patches/server/0109-Flying-squids-Oh-my.patch similarity index 93% rename from patches/server/0111-Flying-squids-Oh-my.patch rename to patches/server/0109-Flying-squids-Oh-my.patch index df6e215f0..245056ae5 100644 --- a/patches/server/0111-Flying-squids-Oh-my.patch +++ b/patches/server/0109-Flying-squids-Oh-my.patch @@ -38,10 +38,10 @@ index 2affff346a7fe81480e86cb61996039df0569853..be9b800d81b4d5faed7a3fb95d605bfd float f1 = Mth.cos(f) * 0.2F; float f2 = -0.1F + this.squid.getRandom().nextFloat() * 0.2F; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ab5d9375d20c38e0eb73a030524d59f78b58e3e5..78391c281e649fbf4b8c13544536755edc09dd68 100644 +index 267ca0aa7187f8aac27d0b675c702f181da6d13a..9421df1069e16efd0bc121d1b433ae92d7e211ff 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1354,6 +1354,7 @@ public class PurpurWorldConfig { +@@ -1352,6 +1352,7 @@ public class PurpurWorldConfig { public double squidMaxHealth = 10.0D; public boolean squidImmuneToEAR = true; public double squidOffsetWaterCheck = 0.0D; @@ -49,7 +49,7 @@ index ab5d9375d20c38e0eb73a030524d59f78b58e3e5..78391c281e649fbf4b8c13544536755e private void squidSettings() { squidRidable = getBoolean("mobs.squid.ridable", squidRidable); if (PurpurConfig.version < 10) { -@@ -1364,6 +1365,7 @@ public class PurpurWorldConfig { +@@ -1362,6 +1363,7 @@ public class PurpurWorldConfig { squidMaxHealth = getDouble("mobs.squid.attributes.max_health", squidMaxHealth); squidImmuneToEAR = getBoolean("mobs.squid.immune-to-EAR", squidImmuneToEAR); squidOffsetWaterCheck = getDouble("mobs.squid.water-offset-check", squidOffsetWaterCheck); diff --git a/patches/server/0112-Infinity-bow-settings.patch b/patches/server/0110-Infinity-bow-settings.patch similarity index 96% rename from patches/server/0112-Infinity-bow-settings.patch rename to patches/server/0110-Infinity-bow-settings.patch index 4422d574a..88e27a2b5 100644 --- a/patches/server/0112-Infinity-bow-settings.patch +++ b/patches/server/0110-Infinity-bow-settings.patch @@ -18,7 +18,7 @@ index afe33f20578177cb517e1c116e6319481642e66c..93c58f7ef7f00c7f843444ad6d00bd85 if (!world.isClientSide) { ArrowItem itemarrow = (ArrowItem) (itemstack1.getItem() instanceof ArrowItem ? itemstack1.getItem() : Items.ARROW); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 78391c281e649fbf4b8c13544536755edc09dd68..7f4860ee1b0b95096e71b51059a29b9fbe541e2c 100644 +index 9421df1069e16efd0bc121d1b433ae92d7e211ff..c161b36df19e05a7721d3d814e32a6b046aa5e8c 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -107,6 +107,15 @@ public class PurpurWorldConfig { diff --git a/patches/server/0113-Stonecutter-damage.patch b/patches/server/0111-Stonecutter-damage.patch similarity index 96% rename from patches/server/0113-Stonecutter-damage.patch rename to patches/server/0111-Stonecutter-damage.patch index 78d4e9e05..4c40cdd9d 100644 --- a/patches/server/0113-Stonecutter-damage.patch +++ b/patches/server/0111-Stonecutter-damage.patch @@ -61,10 +61,10 @@ index 2ad5ff9a1d7de54e75436e99da8a73db9dc91bde..60605a8a021cc56f9c3ba22bc43c43c3 } else if (blockState.is(Blocks.HONEY_BLOCK)) { return BlockPathTypes.STICKY_HONEY; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7f4860ee1b0b95096e71b51059a29b9fbe541e2c..e3156b6ed40620d146fe28d7e60650fa7ab67bb0 100644 +index c161b36df19e05a7721d3d814e32a6b046aa5e8c..e9ad6f9d41889376d1d72317c408d16b8ef1bc27 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -430,6 +430,11 @@ public class PurpurWorldConfig { +@@ -428,6 +428,11 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } diff --git a/patches/server/0114-Configurable-daylight-cycle.patch b/patches/server/0112-Configurable-daylight-cycle.patch similarity index 98% rename from patches/server/0114-Configurable-daylight-cycle.patch rename to patches/server/0112-Configurable-daylight-cycle.patch index 33d2fcee3..f48f08259 100644 --- a/patches/server/0114-Configurable-daylight-cycle.patch +++ b/patches/server/0112-Configurable-daylight-cycle.patch @@ -80,7 +80,7 @@ index d10ebe9b094a0e8b62e6607a4fefaf0bcd412413..97697f2ee49ef1f3b0bfb291b1df99f5 public void tickCustomSpawners(boolean spawnMonsters, boolean spawnAnimals) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index e3156b6ed40620d146fe28d7e60650fa7ab67bb0..0dd7436691d5d009c360bbdb1645cd4f30bdeecf 100644 +index e9ad6f9d41889376d1d72317c408d16b8ef1bc27..ab0c03e69adc922dbe525cf4a9f7e603da51fb66 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -89,6 +89,13 @@ public class PurpurWorldConfig { diff --git a/patches/server/0115-Allow-infinite-and-mending-enchantments-together.patch b/patches/server/0113-Allow-infinite-and-mending-enchantments-together.patch similarity index 95% rename from patches/server/0115-Allow-infinite-and-mending-enchantments-together.patch rename to patches/server/0113-Allow-infinite-and-mending-enchantments-together.patch index 3bce6082c..529d090c0 100644 --- a/patches/server/0115-Allow-infinite-and-mending-enchantments-together.patch +++ b/patches/server/0113-Allow-infinite-and-mending-enchantments-together.patch @@ -17,7 +17,7 @@ index 3aece8245060dd1ba269c08d226c84247a6f0a83..6763d0b96c83d1b462999f525bf1f31c } } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 289bc6840b6d3f68b93a565c9cf3079231fab367..1727f4069f8f7172d4de7ddf72321e4a5b68ea80 100644 +index 0210c671fe1708cb30314e338e690e68ecb13a56..7c13409ab49326915830fe860d4f3457e9625c2f 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -200,6 +200,16 @@ public class PurpurConfig { diff --git a/patches/server/0116-Infinite-fuel-furnace.patch b/patches/server/0114-Infinite-fuel-furnace.patch similarity index 95% rename from patches/server/0116-Infinite-fuel-furnace.patch rename to patches/server/0114-Infinite-fuel-furnace.patch index 224119c87..02b406798 100644 --- a/patches/server/0116-Infinite-fuel-furnace.patch +++ b/patches/server/0114-Infinite-fuel-furnace.patch @@ -48,10 +48,10 @@ index c559ec5041474e585e4d95a664c84e1fa895cf16..806277d029a1c1a2d334a05d94163415 private static boolean canBurn(@Nullable Recipe recipe, NonNullList slots, int count) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 0dd7436691d5d009c360bbdb1645cd4f30bdeecf..42a9dbddefef715c5c21003a76fdfc33621d1f89 100644 +index ab0c03e69adc922dbe525cf4a9f7e603da51fb66..daccabe019d73879c6739964032624e86976c460 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -398,6 +398,11 @@ public class PurpurWorldConfig { +@@ -396,6 +396,11 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } diff --git a/patches/server/0117-Arrows-should-not-reset-despawn-counter.patch b/patches/server/0115-Arrows-should-not-reset-despawn-counter.patch similarity index 100% rename from patches/server/0117-Arrows-should-not-reset-despawn-counter.patch rename to patches/server/0115-Arrows-should-not-reset-despawn-counter.patch diff --git a/patches/server/0118-Ability-to-re-add-farmland-mechanics-from-Alpha.patch b/patches/server/0116-Ability-to-re-add-farmland-mechanics-from-Alpha.patch similarity index 92% rename from patches/server/0118-Ability-to-re-add-farmland-mechanics-from-Alpha.patch rename to patches/server/0116-Ability-to-re-add-farmland-mechanics-from-Alpha.patch index 13bb1dbe4..bafc85958 100644 --- a/patches/server/0118-Ability-to-re-add-farmland-mechanics-from-Alpha.patch +++ b/patches/server/0116-Ability-to-re-add-farmland-mechanics-from-Alpha.patch @@ -24,10 +24,10 @@ index 97e5cb4fd9f97c0bfa9d66c0ceac84e134f1053f..e92f6ffcda47aad76ad647bc2ad3d186 return; } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 42a9dbddefef715c5c21003a76fdfc33621d1f89..54bab3e1bcffadf9674d50169c44c9ffa04b8685 100644 +index daccabe019d73879c6739964032624e86976c460..b30e124fbf25cafd4c44a61f81030566b53a28ed 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -394,8 +394,10 @@ public class PurpurWorldConfig { +@@ -392,8 +392,10 @@ public class PurpurWorldConfig { } public boolean farmlandGetsMoistFromBelow = false; diff --git a/patches/server/0119-Add-adjustable-breeding-cooldown-to-config.patch b/patches/server/0117-Add-adjustable-breeding-cooldown-to-config.patch similarity index 97% rename from patches/server/0119-Add-adjustable-breeding-cooldown-to-config.patch rename to patches/server/0117-Add-adjustable-breeding-cooldown-to-config.patch index 0ac4383c3..79d22afb4 100644 --- a/patches/server/0119-Add-adjustable-breeding-cooldown-to-config.patch +++ b/patches/server/0117-Add-adjustable-breeding-cooldown-to-config.patch @@ -95,10 +95,10 @@ index 917a671894e16e024db941cea1845e39eaf93ef8..b17f250eec710c91a1d5995136d7dec2 this.world = new CraftWorld((ServerLevel) this, gen, env); this.ticksPerAnimalSpawns = this.getCraftServer().getTicksPerAnimalSpawns(); // CraftBukkit diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 54bab3e1bcffadf9674d50169c44c9ffa04b8685..a312da168c16d8fd2f28b43d7edb2a8002f8ac64 100644 +index b30e124fbf25cafd4c44a61f81030566b53a28ed..bde3fd58b152b80e07e112f8468349c8d8dab0e3 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -329,6 +329,7 @@ public class PurpurWorldConfig { +@@ -328,6 +328,7 @@ public class PurpurWorldConfig { public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; public int raidCooldownSeconds = 0; @@ -106,7 +106,7 @@ index 54bab3e1bcffadf9674d50169c44c9ffa04b8685..a312da168c16d8fd2f28b43d7edb2a80 private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); -@@ -341,6 +342,7 @@ public class PurpurWorldConfig { +@@ -339,6 +340,7 @@ public class PurpurWorldConfig { voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); diff --git a/patches/server/0120-Make-entity-breeding-times-configurable.patch b/patches/server/0118-Make-entity-breeding-times-configurable.patch similarity index 94% rename from patches/server/0120-Make-entity-breeding-times-configurable.patch rename to patches/server/0118-Make-entity-breeding-times-configurable.patch index 405a78f36..cc58d4d33 100644 --- a/patches/server/0120-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0118-Make-entity-breeding-times-configurable.patch @@ -474,10 +474,10 @@ index 5d289be8f0ef003abbce992e7662f6ddce4f4a99..5e3d7321a73144c3e4c43c18c5b748b2 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee0ea9288d 100644 +index bde3fd58b152b80e07e112f8468349c8d8dab0e3..652fadf7076a53a785551b2f4fb312832b1a2042 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -462,9 +462,11 @@ public class PurpurWorldConfig { +@@ -460,9 +460,11 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public double axolotlMaxHealth = 14.0D; @@ -489,7 +489,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean batRidable = false; -@@ -494,6 +496,7 @@ public class PurpurWorldConfig { +@@ -492,6 +494,7 @@ public class PurpurWorldConfig { public boolean beeRidableInWater = false; public double beeMaxY = 256D; public double beeMaxHealth = 10.0D; @@ -497,7 +497,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void beeSettings() { beeRidable = getBoolean("mobs.bee.ridable", beeRidable); beeRidableInWater = getBoolean("mobs.bee.ridable-in-water", beeRidableInWater); -@@ -504,6 +507,7 @@ public class PurpurWorldConfig { +@@ -502,6 +505,7 @@ public class PurpurWorldConfig { set("mobs.bee.attributes.max_health", oldValue); } beeMaxHealth = getDouble("mobs.bee.attributes.max_health", beeMaxHealth); @@ -505,7 +505,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean blazeRidable = false; -@@ -528,6 +532,7 @@ public class PurpurWorldConfig { +@@ -526,6 +530,7 @@ public class PurpurWorldConfig { public int catSpawnDelay = 1200; public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; @@ -513,7 +513,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -540,6 +545,7 @@ public class PurpurWorldConfig { +@@ -538,6 +543,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); @@ -521,7 +521,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean caveSpiderRidable = false; -@@ -560,6 +566,7 @@ public class PurpurWorldConfig { +@@ -558,6 +564,7 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; @@ -529,7 +529,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -570,6 +577,7 @@ public class PurpurWorldConfig { +@@ -568,6 +575,7 @@ public class PurpurWorldConfig { } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); @@ -537,7 +537,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean codRidable = false; -@@ -588,6 +596,7 @@ public class PurpurWorldConfig { +@@ -586,6 +594,7 @@ public class PurpurWorldConfig { public boolean cowRidableInWater = false; public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; @@ -545,7 +545,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -598,6 +607,7 @@ public class PurpurWorldConfig { +@@ -596,6 +605,7 @@ public class PurpurWorldConfig { } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); @@ -553,7 +553,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean creeperRidable = false; -@@ -645,6 +655,7 @@ public class PurpurWorldConfig { +@@ -643,6 +653,7 @@ public class PurpurWorldConfig { public double donkeyJumpStrengthMax = 0.5D; public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; @@ -561,7 +561,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -660,6 +671,7 @@ public class PurpurWorldConfig { +@@ -658,6 +669,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); @@ -569,7 +569,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean drownedRidable = false; -@@ -766,6 +778,7 @@ public class PurpurWorldConfig { +@@ -764,6 +776,7 @@ public class PurpurWorldConfig { public boolean foxRidableInWater = false; public double foxMaxHealth = 10.0D; public boolean foxTypeChangesWithTulips = false; @@ -577,7 +577,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void foxSettings() { foxRidable = getBoolean("mobs.fox.ridable", foxRidable); foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); -@@ -776,6 +789,7 @@ public class PurpurWorldConfig { +@@ -774,6 +787,7 @@ public class PurpurWorldConfig { } foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); @@ -585,7 +585,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean ghastRidable = false; -@@ -834,10 +848,12 @@ public class PurpurWorldConfig { +@@ -832,10 +846,12 @@ public class PurpurWorldConfig { public boolean goatRidable = false; public boolean goatRidableInWater = false; public double goatMaxHealth = 10.0D; @@ -598,7 +598,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean guardianRidable = false; -@@ -855,6 +871,7 @@ public class PurpurWorldConfig { +@@ -853,6 +869,7 @@ public class PurpurWorldConfig { public boolean hoglinRidable = false; public boolean hoglinRidableInWater = false; public double hoglinMaxHealth = 40.0D; @@ -606,7 +606,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void hoglinSettings() { hoglinRidable = getBoolean("mobs.hoglin.ridable", hoglinRidable); hoglinRidableInWater = getBoolean("mobs.hoglin.ridable-in-water", hoglinRidableInWater); -@@ -864,6 +881,7 @@ public class PurpurWorldConfig { +@@ -862,6 +879,7 @@ public class PurpurWorldConfig { set("mobs.hoglin.attributes.max_health", oldValue); } hoglinMaxHealth = getDouble("mobs.hoglin.attributes.max_health", hoglinMaxHealth); @@ -614,7 +614,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean horseRidableInWater = false; -@@ -873,6 +891,7 @@ public class PurpurWorldConfig { +@@ -871,6 +889,7 @@ public class PurpurWorldConfig { public double horseJumpStrengthMax = 1.0D; public double horseMovementSpeedMin = 0.1125D; public double horseMovementSpeedMax = 0.3375D; @@ -622,7 +622,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void horseSettings() { horseRidableInWater = getBoolean("mobs.horse.ridable-in-water", horseRidableInWater); if (PurpurConfig.version < 10) { -@@ -888,6 +907,7 @@ public class PurpurWorldConfig { +@@ -886,6 +905,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); @@ -630,7 +630,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean huskRidable = false; -@@ -958,6 +978,7 @@ public class PurpurWorldConfig { +@@ -956,6 +976,7 @@ public class PurpurWorldConfig { public double llamaJumpStrengthMax = 0.5D; public double llamaMovementSpeedMin = 0.175D; public double llamaMovementSpeedMax = 0.175D; @@ -638,7 +638,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void llamaSettings() { llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -@@ -974,6 +995,7 @@ public class PurpurWorldConfig { +@@ -972,6 +993,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); @@ -646,7 +646,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean magmaCubeRidable = false; -@@ -993,6 +1015,7 @@ public class PurpurWorldConfig { +@@ -991,6 +1013,7 @@ public class PurpurWorldConfig { public boolean mooshroomRidable = false; public boolean mooshroomRidableInWater = false; public double mooshroomMaxHealth = 10.0D; @@ -654,7 +654,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void mooshroomSettings() { mooshroomRidable = getBoolean("mobs.mooshroom.ridable", mooshroomRidable); mooshroomRidableInWater = getBoolean("mobs.mooshroom.ridable-in-water", mooshroomRidableInWater); -@@ -1002,6 +1025,7 @@ public class PurpurWorldConfig { +@@ -1000,6 +1023,7 @@ public class PurpurWorldConfig { set("mobs.mooshroom.attributes.max_health", oldValue); } mooshroomMaxHealth = getDouble("mobs.mooshroom.attributes.max_health", mooshroomMaxHealth); @@ -662,7 +662,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean muleRidableInWater = false; -@@ -1011,6 +1035,7 @@ public class PurpurWorldConfig { +@@ -1009,6 +1033,7 @@ public class PurpurWorldConfig { public double muleJumpStrengthMax = 0.5D; public double muleMovementSpeedMin = 0.175D; public double muleMovementSpeedMax = 0.175D; @@ -670,7 +670,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void muleSettings() { muleRidableInWater = getBoolean("mobs.mule.ridable-in-water", muleRidableInWater); if (PurpurConfig.version < 10) { -@@ -1026,11 +1051,13 @@ public class PurpurWorldConfig { +@@ -1024,11 +1049,13 @@ 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); @@ -684,7 +684,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void ocelotSettings() { ocelotRidable = getBoolean("mobs.ocelot.ridable", ocelotRidable); ocelotRidableInWater = getBoolean("mobs.ocelot.ridable-in-water", ocelotRidableInWater); -@@ -1040,11 +1067,13 @@ public class PurpurWorldConfig { +@@ -1038,11 +1065,13 @@ public class PurpurWorldConfig { set("mobs.ocelot.attributes.max_health", oldValue); } ocelotMaxHealth = getDouble("mobs.ocelot.attributes.max_health", ocelotMaxHealth); @@ -698,7 +698,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void pandaSettings() { pandaRidable = getBoolean("mobs.panda.ridable", pandaRidable); pandaRidableInWater = getBoolean("mobs.panda.ridable-in-water", pandaRidableInWater); -@@ -1054,6 +1083,7 @@ public class PurpurWorldConfig { +@@ -1052,6 +1081,7 @@ public class PurpurWorldConfig { set("mobs.panda.attributes.max_health", oldValue); } pandaMaxHealth = getDouble("mobs.panda.attributes.max_health", pandaMaxHealth); @@ -706,7 +706,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean parrotRidable = false; -@@ -1134,6 +1164,7 @@ public class PurpurWorldConfig { +@@ -1132,6 +1162,7 @@ public class PurpurWorldConfig { public boolean pigRidableInWater = false; public double pigMaxHealth = 10.0D; public boolean pigGiveSaddleBack = false; @@ -714,7 +714,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void pigSettings() { pigRidable = getBoolean("mobs.pig.ridable", pigRidable); pigRidableInWater = getBoolean("mobs.pig.ridable-in-water", pigRidableInWater); -@@ -1144,6 +1175,7 @@ public class PurpurWorldConfig { +@@ -1142,6 +1173,7 @@ public class PurpurWorldConfig { } pigMaxHealth = getDouble("mobs.pig.attributes.max_health", pigMaxHealth); pigGiveSaddleBack = getBoolean("mobs.pig.give-saddle-back", pigGiveSaddleBack); @@ -722,7 +722,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean piglinRidable = false; -@@ -1193,6 +1225,7 @@ public class PurpurWorldConfig { +@@ -1191,6 +1223,7 @@ public class PurpurWorldConfig { public double polarBearMaxHealth = 30.0D; public String polarBearBreedableItemString = ""; public Item polarBearBreedableItem = null; @@ -730,7 +730,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void polarBearSettings() { polarBearRidable = getBoolean("mobs.polar_bear.ridable", polarBearRidable); polarBearRidableInWater = getBoolean("mobs.polar_bear.ridable-in-water", polarBearRidableInWater); -@@ -1205,6 +1238,7 @@ public class PurpurWorldConfig { +@@ -1203,6 +1236,7 @@ public class PurpurWorldConfig { polarBearBreedableItemString = getString("mobs.polar_bear.breedable-item", polarBearBreedableItemString); Item item = Registry.ITEM.get(new ResourceLocation(polarBearBreedableItemString)); if (item != Items.AIR) polarBearBreedableItem = item; @@ -738,7 +738,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean pufferfishRidable = false; -@@ -1224,6 +1258,7 @@ public class PurpurWorldConfig { +@@ -1222,6 +1256,7 @@ public class PurpurWorldConfig { public double rabbitMaxHealth = 3.0D; public double rabbitNaturalToast = 0.0D; public double rabbitNaturalKiller = 0.0D; @@ -746,7 +746,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void rabbitSettings() { rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); -@@ -1235,6 +1270,7 @@ public class PurpurWorldConfig { +@@ -1233,6 +1268,7 @@ public class PurpurWorldConfig { rabbitMaxHealth = getDouble("mobs.rabbit.attributes.max_health", rabbitMaxHealth); rabbitNaturalToast = getDouble("mobs.rabbit.spawn-toast-chance", rabbitNaturalToast); rabbitNaturalKiller = getDouble("mobs.rabbit.spawn-killer-rabbit-chance", rabbitNaturalKiller); @@ -754,7 +754,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean ravagerRidable = false; -@@ -1266,6 +1302,7 @@ public class PurpurWorldConfig { +@@ -1264,6 +1300,7 @@ public class PurpurWorldConfig { public boolean sheepRidable = false; public boolean sheepRidableInWater = false; public double sheepMaxHealth = 8.0D; @@ -762,7 +762,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void sheepSettings() { sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); -@@ -1275,6 +1312,7 @@ public class PurpurWorldConfig { +@@ -1273,6 +1310,7 @@ public class PurpurWorldConfig { set("mobs.sheep.attributes.max_health", oldValue); } sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); @@ -770,7 +770,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean shulkerRidable = false; -@@ -1429,6 +1467,7 @@ public class PurpurWorldConfig { +@@ -1427,6 +1465,7 @@ public class PurpurWorldConfig { public boolean striderRidable = false; public boolean striderRidableInWater = false; public double striderMaxHealth = 20.0D; @@ -778,7 +778,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1438,6 +1477,7 @@ public class PurpurWorldConfig { +@@ -1436,6 +1475,7 @@ public class PurpurWorldConfig { set("mobs.strider.attributes.max_health", oldValue); } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); @@ -786,7 +786,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean traderLlamaRidable = false; -@@ -1448,6 +1488,7 @@ public class PurpurWorldConfig { +@@ -1446,6 +1486,7 @@ public class PurpurWorldConfig { public double traderLlamaJumpStrengthMax = 0.5D; public double traderLlamaMovementSpeedMin = 0.175D; public double traderLlamaMovementSpeedMax = 0.175D; @@ -794,7 +794,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void traderLlamaSettings() { traderLlamaRidable = getBoolean("mobs.trader_llama.ridable", traderLlamaRidable); traderLlamaRidableInWater = getBoolean("mobs.trader_llama.ridable-in-water", traderLlamaRidableInWater); -@@ -1464,6 +1505,7 @@ public class PurpurWorldConfig { +@@ -1462,6 +1503,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); @@ -802,7 +802,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean tropicalFishRidable = false; -@@ -1484,6 +1526,7 @@ public class PurpurWorldConfig { +@@ -1482,6 +1524,7 @@ public class PurpurWorldConfig { public boolean turtleEggsBreakFromExpOrbs = true; public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true; @@ -810,7 +810,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void turtleEggSettings() { turtleRidable = getBoolean("mobs.turtle.ridable", turtleRidable); turtleRidableInWater = getBoolean("mobs.turtle.ridable-in-water", turtleRidableInWater); -@@ -1496,6 +1539,7 @@ public class PurpurWorldConfig { +@@ -1494,6 +1537,7 @@ public class PurpurWorldConfig { turtleEggsBreakFromExpOrbs = getBoolean("blocks.turtle_egg.break-from-exp-orbs", turtleEggsBreakFromExpOrbs); turtleEggsBreakFromItems = getBoolean("blocks.turtle_egg.break-from-items", turtleEggsBreakFromItems); turtleEggsBreakFromMinecarts = getBoolean("blocks.turtle_egg.break-from-minecarts", turtleEggsBreakFromMinecarts); @@ -818,7 +818,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean vexRidable = false; -@@ -1525,6 +1569,7 @@ public class PurpurWorldConfig { +@@ -1522,6 +1566,7 @@ public class PurpurWorldConfig { public int villagerSpawnIronGolemRadius = 0; public int villagerSpawnIronGolemLimit = 0; public boolean villagerCanBreed = true; @@ -826,7 +826,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1542,6 +1587,7 @@ public class PurpurWorldConfig { +@@ -1538,6 +1583,7 @@ public class PurpurWorldConfig { villagerSpawnIronGolemRadius = getInt("mobs.villager.spawn-iron-golem.radius", villagerSpawnIronGolemRadius); villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); @@ -834,7 +834,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee } public boolean vindicatorRidable = false; -@@ -1635,6 +1681,7 @@ public class PurpurWorldConfig { +@@ -1631,6 +1677,7 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -842,7 +842,7 @@ index a312da168c16d8fd2f28b43d7edb2a8002f8ac64..fd773f696d5f3940a16debd545bf9fee private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); wolfRidableInWater = getBoolean("mobs.wolf.ridable-in-water", wolfRidableInWater); -@@ -1644,6 +1691,7 @@ public class PurpurWorldConfig { +@@ -1640,6 +1687,7 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0121-Apply-display-names-from-item-forms-of-entities-to-e.patch b/patches/server/0119-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 98% rename from patches/server/0121-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to patches/server/0119-Apply-display-names-from-item-forms-of-entities-to-e.patch index ab76b1ccc..862643af6 100644 --- a/patches/server/0121-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/patches/server/0119-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -142,7 +142,7 @@ index 282bfe4904637aaff1bd29e30ed18ba843c07cab..ddd50db8bb92c147d7c1eef4d1df3ac5 if (((HangingEntity) object).survives()) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index fd773f696d5f3940a16debd545bf9fee0ea9288d..08a969b85553409160911ea77b9caa5437f6ef5d 100644 +index 652fadf7076a53a785551b2f4fb312832b1a2042..2bdb2a2ddf9bda35deed49934860144981a30099 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -85,8 +85,10 @@ public class PurpurWorldConfig { @@ -156,7 +156,7 @@ index fd773f696d5f3940a16debd545bf9fee0ea9288d..08a969b85553409160911ea77b9caa54 } public int daytimeTicks = 12000; -@@ -325,6 +327,7 @@ public class PurpurWorldConfig { +@@ -324,6 +326,7 @@ public class PurpurWorldConfig { public boolean entitiesCanUsePortals = true; public boolean milkCuresBadOmen = true; public boolean persistentTileEntityDisplayNames = false; @@ -164,7 +164,7 @@ index fd773f696d5f3940a16debd545bf9fee0ea9288d..08a969b85553409160911ea77b9caa54 public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; public double voidDamageDealt = 4.0D; -@@ -338,6 +341,7 @@ public class PurpurWorldConfig { +@@ -336,6 +339,7 @@ public class PurpurWorldConfig { entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames); diff --git a/patches/server/0122-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch b/patches/server/0120-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch similarity index 95% rename from patches/server/0122-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch rename to patches/server/0120-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch index 432c539bf..11fdfdc63 100644 --- a/patches/server/0122-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch +++ b/patches/server/0120-Set-name-visible-when-using-a-Name-Tag-on-an-Armor-S.patch @@ -17,7 +17,7 @@ index 623f78c078fb3aa2665d7e8a37672438227bce6b..500c69e555c7247e20ef8cc59d834155 ((Mob) newEntityLiving).setPersistenceRequired(); // Paper end diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 08a969b85553409160911ea77b9caa5437f6ef5d..d2d5c5f92e5415f647cbebf16f3121f8230be24e 100644 +index 2bdb2a2ddf9bda35deed49934860144981a30099..55245e4b9551ec1ffcc1ef3c375b5ec31dfbb7c6 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -86,9 +86,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0123-Add-twisting-and-weeping-vines-growth-rates.patch b/patches/server/0121-Add-twisting-and-weeping-vines-growth-rates.patch similarity index 96% rename from patches/server/0123-Add-twisting-and-weeping-vines-growth-rates.patch rename to patches/server/0121-Add-twisting-and-weeping-vines-growth-rates.patch index e40e54a0c..808c89c05 100644 --- a/patches/server/0123-Add-twisting-and-weeping-vines-growth-rates.patch +++ b/patches/server/0121-Add-twisting-and-weeping-vines-growth-rates.patch @@ -67,10 +67,10 @@ index 35b2bad76c45b5a94ba7f2e9c7a8cfeb8c3f498b..d2cb1a7e7ea364cb8e2af4c4e756d8e4 + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d2d5c5f92e5415f647cbebf16f3121f8230be24e..f1b0d55f425b3028178323e710991fff481e0ba6 100644 +index 55245e4b9551ec1ffcc1ef3c375b5ec31dfbb7c6..1aa81f2330d6d22a0c3b0021575995e6f74ecdcd 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -457,6 +457,16 @@ public class PurpurWorldConfig { +@@ -455,6 +455,16 @@ public class PurpurWorldConfig { stonecutterDamage = (float) getDouble("blocks.stonecutter.damage", stonecutterDamage); } diff --git a/patches/server/0124-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch b/patches/server/0122-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch similarity index 97% rename from patches/server/0124-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch rename to patches/server/0122-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch index 123444ffe..818a1ac6d 100644 --- a/patches/server/0124-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch +++ b/patches/server/0122-Kelp-weeping-and-twisting-vines-configurable-max-gro.patch @@ -89,10 +89,10 @@ index d2cb1a7e7ea364cb8e2af4c4e756d8e45bc0ca10..bb99dda3c5167f23b2500a1f37cbc1ca // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f1b0d55f425b3028178323e710991fff481e0ba6..7f78c0b3e5bdcead269c5d169812b3d3d1b3ee33 100644 +index 1aa81f2330d6d22a0c3b0021575995e6f74ecdcd..0b83e98cac0894fdd186c00fc3e51a1d21e64651 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -424,6 +424,11 @@ public class PurpurWorldConfig { +@@ -422,6 +422,11 @@ public class PurpurWorldConfig { lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); } @@ -104,7 +104,7 @@ index f1b0d55f425b3028178323e710991fff481e0ba6..7f78c0b3e5bdcead269c5d169812b3d3 public boolean respawnAnchorExplode = true; public double respawnAnchorExplosionPower = 5.0D; public boolean respawnAnchorExplosionFire = true; -@@ -458,13 +463,17 @@ public class PurpurWorldConfig { +@@ -456,13 +461,17 @@ public class PurpurWorldConfig { } public double twistingVinesGrowthModifier = 0.10D; diff --git a/patches/server/0125-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch b/patches/server/0123-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch similarity index 91% rename from patches/server/0125-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch rename to patches/server/0123-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch index 10e51f26d..0dbd1ad67 100644 --- a/patches/server/0125-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch +++ b/patches/server/0123-Add-config-for-allowing-Endermen-to-despawn-even-whi.patch @@ -21,10 +21,10 @@ index 5ebedd6a156b06e98aded57c817f63429a1ae380..c99d295b999a28dd1eb504179250445d private static class EndermanFreezeWhenLookedAt extends Goal { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 7f78c0b3e5bdcead269c5d169812b3d3d1b3ee33..f7b7b4702b60103240405db75907cc3b463b8e20 100644 +index 0b83e98cac0894fdd186c00fc3e51a1d21e64651..d110713313fc3c9495fccf0ae2ea309d25cb1f26 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -759,6 +759,7 @@ public class PurpurWorldConfig { +@@ -757,6 +757,7 @@ public class PurpurWorldConfig { public boolean endermanRidableInWater = false; public double endermanMaxHealth = 40.0D; public boolean endermanAllowGriefing = true; @@ -32,7 +32,7 @@ index 7f78c0b3e5bdcead269c5d169812b3d3d1b3ee33..f7b7b4702b60103240405db75907cc3b private void endermanSettings() { endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -769,6 +770,7 @@ public class PurpurWorldConfig { +@@ -767,6 +768,7 @@ public class PurpurWorldConfig { } endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); endermanAllowGriefing = getBoolean("mobs.enderman.allow-griefing", endermanAllowGriefing); diff --git a/patches/server/0126-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch b/patches/server/0124-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch similarity index 100% rename from patches/server/0126-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch rename to patches/server/0124-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch diff --git a/patches/server/0127-Add-configurable-snowball-damage.patch b/patches/server/0125-Add-configurable-snowball-damage.patch similarity index 95% rename from patches/server/0127-Add-configurable-snowball-damage.patch rename to patches/server/0125-Add-configurable-snowball-damage.patch index 8bf0e9e51..d47fc8fd8 100644 --- a/patches/server/0127-Add-configurable-snowball-damage.patch +++ b/patches/server/0125-Add-configurable-snowball-damage.patch @@ -18,7 +18,7 @@ index ed2f039c4042861bcfa2e41d8281eefd37daa9fa..d5d84893c77b4e60a19032d765d76bfd } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index f7b7b4702b60103240405db75907cc3b463b8e20..6b8a664df100b391d897c992d6fa2ceb759b5523 100644 +index d110713313fc3c9495fccf0ae2ea309d25cb1f26..10c6e40c54bff7dfdba00e2febdc9f2bef343ba8 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -270,6 +270,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0128-Zombie-break-door-minimum-difficulty-option.patch b/patches/server/0126-Zombie-break-door-minimum-difficulty-option.patch similarity index 94% rename from patches/server/0128-Zombie-break-door-minimum-difficulty-option.patch rename to patches/server/0126-Zombie-break-door-minimum-difficulty-option.patch index 1650ed49d..bdc1e2d80 100644 --- a/patches/server/0128-Zombie-break-door-minimum-difficulty-option.patch +++ b/patches/server/0126-Zombie-break-door-minimum-difficulty-option.patch @@ -44,7 +44,7 @@ index fe045f8e35fe2aac51032a67ce52b27a53a8eff0..03bc86c776596ca5964c22adb757115d + // Purpur end } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 6b8a664df100b391d897c992d6fa2ceb759b5523..ee68bc02ed398ef61a29bee9d5be728ec730133c 100644 +index 10c6e40c54bff7dfdba00e2febdc9f2bef343ba8..fd3362058694b55bf3cc28a51d7c9c1306d86144 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -2,6 +2,7 @@ package net.pl3x.purpur; @@ -55,7 +55,7 @@ index 6b8a664df100b391d897c992d6fa2ceb759b5523..ee68bc02ed398ef61a29bee9d5be728e import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.Explosion; -@@ -1748,6 +1749,7 @@ public class PurpurWorldConfig { +@@ -1744,6 +1745,7 @@ public class PurpurWorldConfig { public double zombieJockeyChance = 0.05D; public boolean zombieJockeyTryExistingChickens = true; public boolean zombieAggressiveTowardsVillagerWhenLagging = true; @@ -63,7 +63,7 @@ index 6b8a664df100b391d897c992d6fa2ceb759b5523..ee68bc02ed398ef61a29bee9d5be728e private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -1762,6 +1764,11 @@ public class PurpurWorldConfig { +@@ -1758,6 +1760,11 @@ 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/0129-Left-handed-API.patch b/patches/server/0127-Left-handed-API.patch similarity index 100% rename from patches/server/0129-Left-handed-API.patch rename to patches/server/0127-Left-handed-API.patch diff --git a/patches/server/0130-Changeable-Mob-Left-Handed-Chance.patch b/patches/server/0128-Changeable-Mob-Left-Handed-Chance.patch similarity index 90% rename from patches/server/0130-Changeable-Mob-Left-Handed-Chance.patch rename to patches/server/0128-Changeable-Mob-Left-Handed-Chance.patch index cdc08f566..f8cc7ae5d 100644 --- a/patches/server/0130-Changeable-Mob-Left-Handed-Chance.patch +++ b/patches/server/0128-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 568c11075c7a45f210bb2ddc81c313d0dec8539e..54ad0989cea052bf500ad5b48bcfa77b08763731 100644 +index 2ca0c22a23916acd034f70edc9d94ea22bbd0b52..e0fa000738d2fb4472056e973159e40d3b9fa962 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1198,7 +1198,7 @@ public abstract class Mob extends LivingEntity { @@ -18,7 +18,7 @@ index 568c11075c7a45f210bb2ddc81c313d0dec8539e..54ad0989cea052bf500ad5b48bcfa77b } else { this.setLeftHanded(false); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index ee68bc02ed398ef61a29bee9d5be728ec730133c..0539ff14b22839d8e64162aaf38f5ae84a6cf84e 100644 +index fd3362058694b55bf3cc28a51d7c9c1306d86144..424a902aacfe209f43556ff40ab5aa880f0e0b5d 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -115,8 +115,10 @@ public class PurpurWorldConfig { diff --git a/patches/server/0131-Add-boat-fall-damage-config.patch b/patches/server/0129-Add-boat-fall-damage-config.patch similarity index 88% rename from patches/server/0131-Add-boat-fall-damage-config.patch rename to patches/server/0129-Add-boat-fall-damage-config.patch index d60f26f82..a2921aa00 100644 --- a/patches/server/0131-Add-boat-fall-damage-config.patch +++ b/patches/server/0129-Add-boat-fall-damage-config.patch @@ -27,7 +27,7 @@ index 5b395fb6f0e7bee4a24fb2d5b0bc9421b70e5b8d..c4ff2e17d032f20395bb8a42152d16de if (!flag && isSpawnInvulnerable() && source != DamageSource.OUT_OF_WORLD) { // Purpur diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 0539ff14b22839d8e64162aaf38f5ae84a6cf84e..48a15e27ca3485758a1b6c7c4041d26aa3b755e0 100644 +index 424a902aacfe209f43556ff40ab5aa880f0e0b5d..078b1c08c63e39f80ecb1c8a18d71a38ee69f7b6 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -332,6 +332,7 @@ public class PurpurWorldConfig { @@ -36,13 +36,13 @@ index 0539ff14b22839d8e64162aaf38f5ae84a6cf84e..48a15e27ca3485758a1b6c7c4041d26a public boolean boatEjectPlayersOnLand = false; + public boolean boatsDoFallDamage = true; public boolean disableDropsOnCrammingDeath = false; - public boolean entitiesPickUpLootBypassMobGriefing = false; public boolean entitiesCanUsePortals = true; -@@ -346,6 +347,7 @@ public class PurpurWorldConfig { + public boolean milkCuresBadOmen = true; +@@ -345,6 +346,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); - entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); diff --git a/patches/server/0132-Snow-Golem-rate-of-fire-config.patch b/patches/server/0130-Snow-Golem-rate-of-fire-config.patch similarity index 94% rename from patches/server/0132-Snow-Golem-rate-of-fire-config.patch rename to patches/server/0130-Snow-Golem-rate-of-fire-config.patch index bbc432282..74de32229 100644 --- a/patches/server/0132-Snow-Golem-rate-of-fire-config.patch +++ b/patches/server/0130-Snow-Golem-rate-of-fire-config.patch @@ -23,10 +23,10 @@ index 0733f9c057fef17fd79a4769f19b78f4c83a7784..1697b573ffd0c5d17d2d538c40f5ce4b this.goalSelector.addGoal(3, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(4, new RandomLookAroundGoal(this)); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 48a15e27ca3485758a1b6c7c4041d26aa3b755e0..eb4af292087a27b30a8f2898d1847a6cb6025442 100644 +index 078b1c08c63e39f80ecb1c8a18d71a38ee69f7b6..70a552932c824a78bd70217bdbd850612ab4065d 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1441,6 +1441,10 @@ public class PurpurWorldConfig { +@@ -1439,6 +1439,10 @@ public class PurpurWorldConfig { public double snowGolemMaxHealth = 4.0D; public boolean snowGolemDropsPumpkin = true; public boolean snowGolemPutPumpkinBack = false; @@ -37,7 +37,7 @@ index 48a15e27ca3485758a1b6c7c4041d26aa3b755e0..eb4af292087a27b30a8f2898d1847a6c private void snowGolemSettings() { snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); -@@ -1453,6 +1457,10 @@ public class PurpurWorldConfig { +@@ -1451,6 +1455,10 @@ public class PurpurWorldConfig { snowGolemMaxHealth = getDouble("mobs.snow_golem.attributes.max_health", snowGolemMaxHealth); snowGolemDropsPumpkin = getBoolean("mobs.snow_golem.drop-pumpkin-when-sheared", snowGolemDropsPumpkin); snowGolemPutPumpkinBack = getBoolean("mobs.snow_golem.pumpkin-can-be-added-back", snowGolemPutPumpkinBack); diff --git a/patches/server/0133-PaperPR-Config-option-for-Piglins-guarding-chests.patch b/patches/server/0131-PaperPR-Config-option-for-Piglins-guarding-chests.patch similarity index 100% rename from patches/server/0133-PaperPR-Config-option-for-Piglins-guarding-chests.patch rename to patches/server/0131-PaperPR-Config-option-for-Piglins-guarding-chests.patch diff --git a/patches/server/0134-EMC-Configurable-disable-give-dropping.patch b/patches/server/0132-EMC-Configurable-disable-give-dropping.patch similarity index 100% rename from patches/server/0134-EMC-Configurable-disable-give-dropping.patch rename to patches/server/0132-EMC-Configurable-disable-give-dropping.patch diff --git a/patches/server/0135-Lobotomize-stuck-villagers.patch b/patches/server/0133-Lobotomize-stuck-villagers.patch similarity index 95% rename from patches/server/0135-Lobotomize-stuck-villagers.patch rename to patches/server/0133-Lobotomize-stuck-villagers.patch index dfc20a51c..5efb51ffb 100644 --- a/patches/server/0135-Lobotomize-stuck-villagers.patch +++ b/patches/server/0133-Lobotomize-stuck-villagers.patch @@ -53,10 +53,10 @@ index 1e05cc98a332e5b115c4670e5331e679117c6629..84142a42111ff03827297c522b7ce164 if (this.assignProfessionWhenSpawned) { this.assignProfessionWhenSpawned = false; diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index eb4af292087a27b30a8f2898d1847a6cb6025442..071407bd7569eec3a1f8de0158d4099f8551ce6c 100644 +index 70a552932c824a78bd70217bdbd850612ab4065d..806af61c0d553b3825f2d5dc9768648fbf0d4cbb 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1615,6 +1615,8 @@ public class PurpurWorldConfig { +@@ -1612,6 +1612,8 @@ public class PurpurWorldConfig { public int villagerSpawnIronGolemLimit = 0; public boolean villagerCanBreed = true; public int villagerBreedingTicks = 6000; @@ -65,7 +65,7 @@ index eb4af292087a27b30a8f2898d1847a6cb6025442..071407bd7569eec3a1f8de0158d4099f private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1633,6 +1635,13 @@ public class PurpurWorldConfig { +@@ -1629,6 +1631,13 @@ public class PurpurWorldConfig { villagerSpawnIronGolemLimit = getInt("mobs.villager.spawn-iron-golem.limit", villagerSpawnIronGolemLimit); villagerCanBreed = getBoolean("mobs.villager.can-breed", villagerCanBreed); villagerBreedingTicks = getInt("mobs.villager.breeding-delay-ticks", villagerBreedingTicks); diff --git a/patches/server/0136-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/patches/server/0134-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 97% rename from patches/server/0136-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to patches/server/0134-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 3907ad8ad..fff4a5af3 100644 --- a/patches/server/0136-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/patches/server/0134-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -8,7 +8,7 @@ farm Nether Wart. Reimplemented based on a feature of the carpet-extra mod. diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index 2d83b7252814a3a921db32a62f6bfb711d5b5ac1..cac70a59d86cff9fe5123172c73d62ca5cda35f3 100644 +index 41b5652578e4a703cb6f03e82654b27ea6302b99..8d6d47456ce6f9870f1a682665780a301b92fec5 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java @@ -34,6 +34,7 @@ public class HarvestFarmland extends Behavior { @@ -21,7 +21,7 @@ index 2d83b7252814a3a921db32a62f6bfb711d5b5ac1..cac70a59d86cff9fe5123172c73d62ca super(ImmutableMap.of(MemoryModuleType.LOOK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.WALK_TARGET, MemoryStatus.VALUE_ABSENT, MemoryModuleType.SECONDARY_JOB_SITE, MemoryStatus.VALUE_PRESENT)); @@ -42,9 +43,10 @@ public class HarvestFarmland extends Behavior { protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { - if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !world.purpurConfig.villagerFarmingBypassMobGriefing) { // Purpur + if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { return false; - } else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER) { + } else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER && !(world.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().getProfession() == VillagerProfession.CLERIC)) { // Purpur @@ -185,10 +185,10 @@ index 901fc6520d58a5fa5f2cf1b4fa78fec6008aa409..9050cd25663c71197c597aac0ab2e612 public static final VillagerProfession FISHERMAN = register("fisherman", PoiType.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN); public static final VillagerProfession FLETCHER = register("fletcher", PoiType.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 071407bd7569eec3a1f8de0158d4099f8551ce6c..71209e046ecfc5b2578eb8fede37938d9d6677b7 100644 +index 806af61c0d553b3825f2d5dc9768648fbf0d4cbb..addb6963c78574461e8f096e76ad564450e6160b 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1617,6 +1617,8 @@ public class PurpurWorldConfig { +@@ -1614,6 +1614,8 @@ public class PurpurWorldConfig { public int villagerBreedingTicks = 6000; public boolean villagerLobotomizeEnabled = false; public int villagerLobotomizeCheck = 60; @@ -197,7 +197,7 @@ index 071407bd7569eec3a1f8de0158d4099f8551ce6c..71209e046ecfc5b2578eb8fede37938d private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1642,6 +1644,8 @@ public class PurpurWorldConfig { +@@ -1638,6 +1640,8 @@ public class PurpurWorldConfig { } villagerLobotomizeEnabled = getBoolean("mobs.villager.lobotomize.enabled", villagerLobotomizeEnabled); villagerLobotomizeCheck = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheck); diff --git a/patches/server/0137-Toggle-for-Zombified-Piglin-death-always-counting-as.patch b/patches/server/0135-Toggle-for-Zombified-Piglin-death-always-counting-as.patch similarity index 93% rename from patches/server/0137-Toggle-for-Zombified-Piglin-death-always-counting-as.patch rename to patches/server/0135-Toggle-for-Zombified-Piglin-death-always-counting-as.patch index fa7c28df4..c843faf0a 100644 --- a/patches/server/0137-Toggle-for-Zombified-Piglin-death-always-counting-as.patch +++ b/patches/server/0135-Toggle-for-Zombified-Piglin-death-always-counting-as.patch @@ -35,10 +35,10 @@ index 43ef93d2c0c59e0d7021ee9aa2b44345192cc0a9..ce780a2ba7dcbd9c1c9dc24c07387861 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 71209e046ecfc5b2578eb8fede37938d9d6677b7..9a48046093f3de6f68c5e33adbbe5ea3090315ec 100644 +index addb6963c78574461e8f096e76ad564450e6160b..0919c4a48173fba93ba56859f8f4443333608f18 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1852,6 +1852,7 @@ public class PurpurWorldConfig { +@@ -1848,6 +1848,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinJockeyOnlyBaby = true; public double zombifiedPiglinJockeyChance = 0.05D; public boolean zombifiedPiglinJockeyTryExistingChickens = true; @@ -46,7 +46,7 @@ index 71209e046ecfc5b2578eb8fede37938d9d6677b7..9a48046093f3de6f68c5e33adbbe5ea3 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -1865,5 +1866,6 @@ public class PurpurWorldConfig { +@@ -1861,5 +1862,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/0138-Spread-out-and-optimise-player-list-ticksSpread-out-.patch b/patches/server/0136-Spread-out-and-optimise-player-list-ticksSpread-out-.patch similarity index 100% rename from patches/server/0138-Spread-out-and-optimise-player-list-ticksSpread-out-.patch rename to patches/server/0136-Spread-out-and-optimise-player-list-ticksSpread-out-.patch diff --git a/patches/server/0139-Configurable-chance-for-wolves-to-spawn-rabid.patch b/patches/server/0137-Configurable-chance-for-wolves-to-spawn-rabid.patch similarity index 98% rename from patches/server/0139-Configurable-chance-for-wolves-to-spawn-rabid.patch rename to patches/server/0137-Configurable-chance-for-wolves-to-spawn-rabid.patch index ae1b9caf0..518f1c13d 100644 --- a/patches/server/0139-Configurable-chance-for-wolves-to-spawn-rabid.patch +++ b/patches/server/0137-Configurable-chance-for-wolves-to-spawn-rabid.patch @@ -201,10 +201,10 @@ index ef4abaf68de01b0879f7d0b330d2d57cc6bd10f9..3e7409ebf1f94b9cf55f2d0b0fe17ca8 return super.mobInteract(player, hand); } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 9a48046093f3de6f68c5e33adbbe5ea3090315ec..69abb2cee655040032d3300591689b5f99bb879b 100644 +index 0919c4a48173fba93ba56859f8f4443333608f18..b2b08de791ff43f0db6c37e6295f4edef8912c37 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1739,6 +1739,8 @@ public class PurpurWorldConfig { +@@ -1735,6 +1735,8 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -213,7 +213,7 @@ index 9a48046093f3de6f68c5e33adbbe5ea3090315ec..69abb2cee655040032d3300591689b5f public int wolfBreedingTicks = 6000; private void wolfSettings() { wolfRidable = getBoolean("mobs.wolf.ridable", wolfRidable); -@@ -1749,6 +1751,8 @@ public class PurpurWorldConfig { +@@ -1745,6 +1747,8 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0140-Configurable-default-wolf-collar-color.patch b/patches/server/0138-Configurable-default-wolf-collar-color.patch similarity index 92% rename from patches/server/0140-Configurable-default-wolf-collar-color.patch rename to patches/server/0138-Configurable-default-wolf-collar-color.patch index aeea449d9..61d246130 100644 --- a/patches/server/0140-Configurable-default-wolf-collar-color.patch +++ b/patches/server/0138-Configurable-default-wolf-collar-color.patch @@ -24,7 +24,7 @@ index 3e7409ebf1f94b9cf55f2d0b0fe17ca8ec44659f..518dd0e6b4889c049e438b393baa795a @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 69abb2cee655040032d3300591689b5f99bb879b..70a6f1bc6f0d8a057a65b95651ab547f48167f1c 100644 +index b2b08de791ff43f0db6c37e6295f4edef8912c37..9b78428352167039682828e7415d4c32339c45de 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -3,6 +3,7 @@ package net.pl3x.purpur; @@ -35,7 +35,7 @@ index 69abb2cee655040032d3300591689b5f99bb879b..70a6f1bc6f0d8a057a65b95651ab547f import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.level.Explosion; -@@ -1739,6 +1740,7 @@ public class PurpurWorldConfig { +@@ -1735,6 +1736,7 @@ public class PurpurWorldConfig { public boolean wolfRidable = false; public boolean wolfRidableInWater = false; public double wolfMaxHealth = 8.0D; @@ -43,7 +43,7 @@ index 69abb2cee655040032d3300591689b5f99bb879b..70a6f1bc6f0d8a057a65b95651ab547f public boolean wolfMilkCuresRabies = true; public double wolfNaturalRabid = 0.0D; public int wolfBreedingTicks = 6000; -@@ -1751,6 +1753,11 @@ public class PurpurWorldConfig { +@@ -1747,6 +1749,11 @@ public class PurpurWorldConfig { set("mobs.wolf.attributes.max_health", oldValue); } wolfMaxHealth = getDouble("mobs.wolf.attributes.max_health", wolfMaxHealth); diff --git a/patches/server/0141-Phantom-flames-on-swoop.patch b/patches/server/0139-Phantom-flames-on-swoop.patch similarity index 91% rename from patches/server/0141-Phantom-flames-on-swoop.patch rename to patches/server/0139-Phantom-flames-on-swoop.patch index c475d3fdf..561980888 100644 --- a/patches/server/0141-Phantom-flames-on-swoop.patch +++ b/patches/server/0139-Phantom-flames-on-swoop.patch @@ -17,10 +17,10 @@ index 782d4499f925950d66072b63f34a828bcc51d2e7..3ea6f2d96245caa85f365c488b8cc019 @Override diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 70a6f1bc6f0d8a057a65b95651ab547f48167f1c..98f02e3b3f257040f03deb5df8938edbd623ab0d 100644 +index 9b78428352167039682828e7415d4c32339c45de..4e30410ee50cd699b236bcd713bb77ab67b4d3d5 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1146,6 +1146,7 @@ public class PurpurWorldConfig { +@@ -1144,6 +1144,7 @@ public class PurpurWorldConfig { public float phantomFlameDamage = 1.0F; public int phantomFlameFireTime = 8; public boolean phantomAllowGriefing = false; @@ -28,7 +28,7 @@ index 70a6f1bc6f0d8a057a65b95651ab547f48167f1c..98f02e3b3f257040f03deb5df8938edb public double phantomMaxHealth = 20.0D; public double phantomAttackedByCrystalRadius = 0.0D; public float phantomAttackedByCrystalDamage = 1.0F; -@@ -1172,6 +1173,7 @@ public class PurpurWorldConfig { +@@ -1170,6 +1171,7 @@ public class PurpurWorldConfig { phantomFlameDamage = (float) getDouble("mobs.phantom.flames.damage", phantomFlameDamage); phantomFlameFireTime = getInt("mobs.phantom.flames.fire-time", phantomFlameFireTime); phantomAllowGriefing = getBoolean("mobs.phantom.allow-griefing", phantomAllowGriefing); diff --git a/patches/server/0142-Option-for-chests-to-open-even-with-a-solid-block-on.patch b/patches/server/0140-Option-for-chests-to-open-even-with-a-solid-block-on.patch similarity index 91% rename from patches/server/0142-Option-for-chests-to-open-even-with-a-solid-block-on.patch rename to patches/server/0140-Option-for-chests-to-open-even-with-a-solid-block-on.patch index 7a94f9c11..0fd2111ac 100644 --- a/patches/server/0142-Option-for-chests-to-open-even-with-a-solid-block-on.patch +++ b/patches/server/0140-Option-for-chests-to-open-even-with-a-solid-block-on.patch @@ -17,10 +17,10 @@ index d980a556785b52fe827310b83638139df0816b11..3c8c02fc92374def12254f7ffad604b2 return world.getBlockState(blockposition1).isRedstoneConductor(world, blockposition1); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 98f02e3b3f257040f03deb5df8938edbd623ab0d..56010a52b16075e5307e33e02a9fb25b45ff0032 100644 +index 4e30410ee50cd699b236bcd713bb77ab67b4d3d5..58432ebd2ca2ea463c0794e7bd353e6f51ef60f6 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -405,6 +405,11 @@ public class PurpurWorldConfig { +@@ -403,6 +403,11 @@ public class PurpurWorldConfig { } } diff --git a/patches/server/0143-Implement-TPSBar.patch b/patches/server/0141-Implement-TPSBar.patch similarity index 100% rename from patches/server/0143-Implement-TPSBar.patch rename to patches/server/0141-Implement-TPSBar.patch diff --git a/patches/server/0144-Striders-give-saddle-back.patch b/patches/server/0142-Striders-give-saddle-back.patch similarity index 92% rename from patches/server/0144-Striders-give-saddle-back.patch rename to patches/server/0142-Striders-give-saddle-back.patch index f9441e63e..b6b441ea3 100644 --- a/patches/server/0144-Striders-give-saddle-back.patch +++ b/patches/server/0142-Striders-give-saddle-back.patch @@ -28,10 +28,10 @@ index 294f276fa8d2d754abde11ebc3d39e5e68996b05..b3928617f732b49cfc124e9bdb879110 } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 56010a52b16075e5307e33e02a9fb25b45ff0032..942a6683fb17f12adffefd007e79eecea2ffe0bb 100644 +index 58432ebd2ca2ea463c0794e7bd353e6f51ef60f6..bf3a65955ba41d4db94bb7a05c5a315d8751c6a2 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1521,6 +1521,7 @@ public class PurpurWorldConfig { +@@ -1519,6 +1519,7 @@ public class PurpurWorldConfig { public boolean striderRidableInWater = false; public double striderMaxHealth = 20.0D; public int striderBreedingTicks = 6000; @@ -39,7 +39,7 @@ index 56010a52b16075e5307e33e02a9fb25b45ff0032..942a6683fb17f12adffefd007e79eece private void striderSettings() { striderRidable = getBoolean("mobs.strider.ridable", striderRidable); striderRidableInWater = getBoolean("mobs.strider.ridable-in-water", striderRidableInWater); -@@ -1531,6 +1532,7 @@ public class PurpurWorldConfig { +@@ -1529,6 +1530,7 @@ public class PurpurWorldConfig { } striderMaxHealth = getDouble("mobs.strider.attributes.max_health", striderMaxHealth); striderBreedingTicks = getInt("mobs.strider.breeding-delay-ticks", striderBreedingTicks); diff --git a/patches/server/0145-PlayerBookTooLargeEvent.patch b/patches/server/0143-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/server/0145-PlayerBookTooLargeEvent.patch rename to patches/server/0143-PlayerBookTooLargeEvent.patch diff --git a/patches/server/0146-Full-netherite-armor-grants-fire-resistance.patch b/patches/server/0144-Full-netherite-armor-grants-fire-resistance.patch similarity index 97% rename from patches/server/0146-Full-netherite-armor-grants-fire-resistance.patch rename to patches/server/0144-Full-netherite-armor-grants-fire-resistance.patch index 63480a75f..d20cf9e25 100644 --- a/patches/server/0146-Full-netherite-armor-grants-fire-resistance.patch +++ b/patches/server/0144-Full-netherite-armor-grants-fire-resistance.patch @@ -26,7 +26,7 @@ index 62540f8af27709976e109bd79975a9a5cd11c8d3..ac2235f40571818e6fc82be929bb3662 protected ItemCooldowns createItemCooldowns() { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 942a6683fb17f12adffefd007e79eecea2ffe0bb..56c3ea88d89226063e79ec2357354ed2c045eccb 100644 +index bf3a65955ba41d4db94bb7a05c5a315d8751c6a2..ec075758721a0949237b60376d0b67cdee5fe4df 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -251,6 +251,19 @@ public class PurpurWorldConfig { diff --git a/patches/server/0147-Fix-rotating-UP-DOWN-CW-and-CCW.patch b/patches/server/0145-Fix-rotating-UP-DOWN-CW-and-CCW.patch similarity index 100% rename from patches/server/0147-Fix-rotating-UP-DOWN-CW-and-CCW.patch rename to patches/server/0145-Fix-rotating-UP-DOWN-CW-and-CCW.patch diff --git a/patches/server/0148-Add-MC-4-fix-back.patch b/patches/server/0146-Add-MC-4-fix-back.patch similarity index 100% rename from patches/server/0148-Add-MC-4-fix-back.patch rename to patches/server/0146-Add-MC-4-fix-back.patch diff --git a/patches/server/0147-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0147-Add-mobGriefing-bypass-to-everything-affected.patch new file mode 100644 index 000000000..5ff01494b --- /dev/null +++ b/patches/server/0147-Add-mobGriefing-bypass-to-everything-affected.patch @@ -0,0 +1,698 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Encode42 +Date: Tue, 5 Jan 2021 22:21:56 -0500 +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 c3aa354635d7e784726ec5086e652433c8f461b1..48c32591f7193cb3d35f2675cbc97ac3a0212757 100644 +--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java ++++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java +@@ -1674,7 +1674,7 @@ public abstract class LivingEntity extends Entity { + boolean flag = false; + + if (this.dead && adversary instanceof WitherBoss) { // Paper +- if (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (this.level.purpurConfig.witherBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur + BlockPos blockposition = this.blockPosition(); + BlockState iblockdata = Blocks.WITHER_ROSE.defaultBlockState(); + +diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java +index e0fa000738d2fb4472056e973159e40d3b9fa962..0cb0b08b8bcf5d43c28a8696173e0269469b57ab 100644 +--- a/src/main/java/net/minecraft/world/entity/Mob.java ++++ b/src/main/java/net/minecraft/world/entity/Mob.java +@@ -656,7 +656,7 @@ public abstract class Mob extends LivingEntity { + public void aiStep() { + super.aiStep(); + this.level.getProfiler().push("looting"); +- if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!this.level.isClientSide && this.canPickUpLoot() && this.isAlive() && !this.dead && (this.level.purpurConfig.entitiesPickUpLootBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { + List list = this.level.getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate(1.0D, 0.0D, 1.0D)); + Iterator iterator = list.iterator(); + +diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +index 8d6d47456ce6f9870f1a682665780a301b92fec5..b67b877e3fa9c00a0b88dbe3e8b0f0e9702537ed 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java ++++ b/src/main/java/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +@@ -41,7 +41,7 @@ public class HarvestFarmland extends Behavior { + } + + protected boolean checkExtraStartConditions(ServerLevel world, Villager entity) { +- if (!world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!world.purpurConfig.villagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur + return false; + } else if (entity.getVillagerData().getProfession() != VillagerProfession.FARMER && !(world.purpurConfig.villagerClericsFarmWarts && entity.getVillagerData().getProfession() == VillagerProfession.CLERIC)) { // Purpur + return false; +diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java +index 03bc86c776596ca5964c22adb757115d60980311..2eda2dc7f234c068f48af5b35803bc92321ee58a 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java ++++ b/src/main/java/net/minecraft/world/entity/ai/goal/BreakDoorGoal.java +@@ -35,7 +35,7 @@ public class BreakDoorGoal extends DoorInteractGoal { + + @Override + public boolean canUse() { +- return !super.canUse() ? false : (!this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.isValidDifficulty(this.mob.level.getDifficulty()) && !this.isOpen()); ++ return !super.canUse() ? false : ((!this.mob.level.purpurConfig.zombieBypassMobGriefing && !this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) ? false : this.isValidDifficulty(this.mob.level.getDifficulty()) && !this.isOpen()); // Purpur + } + + @Override +diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +index 0b745cdb751530794bf9d988c37aff17e2999114..044b2d63cbe95ac47dd1e2aa0786017dfbf3e831 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java ++++ b/src/main/java/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +@@ -70,7 +70,7 @@ public class EatBlockGoal extends Goal { + + if (EatBlockGoal.IS_TALL_GRASS.test(this.level.getBlockState(blockposition))) { + // CraftBukkit +- if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { ++ if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Purpur + this.level.destroyBlock(blockposition, false); + } + +@@ -81,7 +81,7 @@ public class EatBlockGoal extends Goal { + + if (this.level.getBlockState(blockposition1).is(Blocks.GRASS_BLOCK)) { + // CraftBukkit +- if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { ++ if (!CraftEventFactory.callEntityChangeBlockEvent(this.mob, blockposition, Blocks.AIR.defaultBlockState(), !this.level.purpurConfig.sheepBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // Purpur + this.level.levelEvent(2001, blockposition1, Block.getId(Blocks.GRASS_BLOCK.defaultBlockState())); + this.level.setBlock(blockposition1, Blocks.DIRT.defaultBlockState(), 2); + } +diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java +index ac5779319081a6894373877067edf958da8a9cf5..24227a18ea1d0c06e2049542c8ca9c82ec7ce046 100644 +--- a/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java ++++ b/src/main/java/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java +@@ -40,7 +40,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal { + + @Override + public boolean canUse() { +- if (!this.removerMob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!this.removerMob.level.purpurConfig.zombieBypassMobGriefing && !this.removerMob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur + return false; + } else if (this.nextStartTick > 0) { + --this.nextStartTick; +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 504ea27df8ce010728d73349a8daf66310968f38..bde08d3e2eb22039548f8dd19c30aa6cf551520d 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java ++++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java +@@ -1346,7 +1346,7 @@ public class Fox extends Animal { + } + + protected void onReachedTarget() { +- if (Fox.this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (Fox.this.level.purpurConfig.foxBypassMobGriefing || Fox.this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur + BlockState iblockdata = Fox.this.level.getBlockState(this.blockPos); + + if (iblockdata.is(Blocks.SWEET_BERRY_BUSH)) { +diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +index 8d15e7ec0ae4bcdfd5628f41c0fc236eaa85d548..f2d5c9e5c93d2b93d5188491d0f6239bbdf84e78 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java ++++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +@@ -611,7 +611,7 @@ public class Rabbit extends Animal { + @Override + public boolean canUse() { + if (this.nextStartTick <= 0) { +- if (!this.rabbit.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!this.rabbit.level.purpurConfig.rabbitBypassMobGriefing && !this.rabbit.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur + return false; + } + +diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +index 1697b573ffd0c5d17d2d538c40f5ce4b709f261a..69bb27e8223b4be0e410ab9dd10e4db2fd26e564 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java ++++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +@@ -125,7 +125,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM + this.hurt(CraftEventFactory.MELTING, 1.0F); // CraftBukkit - DamageSource.BURN -> CraftEventFactory.MELTING + } + +- if (!this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (!this.level.purpurConfig.snowGolemBypassMobGriefing && !this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur + return; + } + +diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +index 1e97d52e02d401c905e1dfcd758c63e44857835b..c4800d71a96d3530ba8693638fad6d119f48dbb7 100644 +--- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java ++++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +@@ -560,7 +560,7 @@ public class EnderDragon extends Mob implements Enemy { + BlockState iblockdata = this.level.getBlockState(blockposition); + + if (!iblockdata.isAir() && iblockdata.getMaterial() != Material.FIRE) { +- if (this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && !iblockdata.is((Tag) BlockTags.DRAGON_IMMUNE)) { ++ if ((this.level.purpurConfig.enderDragonBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && !iblockdata.is((Tag) BlockTags.DRAGON_IMMUNE)) { // Purpur + // CraftBukkit start - Add blocks to list rather than destroying them + // flag1 = this.level.a(blockposition, false) || flag1; + flag1 = true; +diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +index 689df66281ef84f0cc31d89c6f2e654c9f3a5150..15d35d325b66e1a417eb7ba699597d627bd4eb54 100644 +--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java ++++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +@@ -375,7 +375,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob + i = this.getInvulnerableTicks() - 1; + this.bossEvent.setProgress(1.0F - (float) i / 220.0F); + if (i <= 0) { +- Explosion.BlockInteraction explosion_effect = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.NONE; ++ Explosion.BlockInteraction explosion_effect = (this.level.purpurConfig.witherBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.NONE; // Purpur + // CraftBukkit start + // this.world.createExplosion(this, this.locX(), this.getHeadY(), this.locZ(), 7.0F, false, explosion_effect); + ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), 7.0F, false); +@@ -471,7 +471,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob + + if (this.destroyBlocksTick > 0) { + --this.destroyBlocksTick; +- if (this.destroyBlocksTick == 0 && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (this.destroyBlocksTick == 0 && (this.level.purpurConfig.witherBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // Purpur + i = Mth.floor(this.getY()); + j = Mth.floor(this.getX()); + int i1 = Mth.floor(this.getZ()); +diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java +index c7554c6c1a1787d976ad1fe0c78d86562464947e..c550b8c19837ed9bf730a3eb777bc00de4e7ceb2 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java +@@ -340,7 +340,7 @@ public class Creeper extends Monster implements PowerableMob { + + public void explodeCreeper() { + if (!this.level.isClientSide) { +- Explosion.BlockInteraction explosion_effect = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && level.purpurConfig.creeperAllowGriefing ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.NONE; // Purpur ++ Explosion.BlockInteraction explosion_effect = (this.level.purpurConfig.creeperBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && level.purpurConfig.creeperAllowGriefing ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.NONE; // Purpur + float f = this.isPowered() ? 2.0F : 1.0F; + + // CraftBukkit start +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 c99d295b999a28dd1eb504179250445d1b61d099..96ad40de21a4f00df15ec5c0c8c130566ac27cd1 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java ++++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +@@ -476,7 +476,7 @@ public class EnderMan extends Monster implements NeutralMob { + @Override + public boolean canUse() { + if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur +- return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(2000) == 0); ++ return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level.purpurConfig.endermanBypassMobGriefing && !this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(2000) == 0); // Purpur + } + + @Override +@@ -524,7 +524,7 @@ public class EnderMan extends Monster implements NeutralMob { + @Override + public boolean canUse() { + if (!enderman.level.purpurConfig.endermanAllowGriefing) return false; // Purpur +- return this.enderman.getCarriedBlock() != null ? false : (!this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(20) == 0); ++ return this.enderman.getCarriedBlock() == null ? false : (!this.enderman.level.purpurConfig.endermanBypassMobGriefing && !this.enderman.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? false : this.enderman.getRandom().nextInt(2000) == 0); // Purpur + } + + @Override +diff --git a/src/main/java/net/minecraft/world/entity/monster/Evoker.java b/src/main/java/net/minecraft/world/entity/monster/Evoker.java +index 0ae0a49da681c6603d6f1504ee58f99b8f345e44..01b5a4e75af2aa4f9c59ca77fd91fe62d10fe39b 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Evoker.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Evoker.java +@@ -316,7 +316,7 @@ public class Evoker extends SpellcasterIllager { + return false; + } else if (Evoker.this.tickCount < this.nextAttackTickCount) { + return false; +- } else if (!Evoker.this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ } else if (!Evoker.this.level.purpurConfig.evokerBypassMobGriefing && !Evoker.this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur + return false; + } else { + List list = Evoker.this.level.getNearbyEntities(Sheep.class, this.wololoTargeting, Evoker.this, Evoker.this.getBoundingBox().inflate(16.0D, 4.0D, 16.0D)); +diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java +index b8c753a574487cdc045ea334229aafd257d6e223..4e72c6876dff1a03bb6736c8e90463cd51dadcb5 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java +@@ -184,7 +184,7 @@ public class Ravager extends Raider { + this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(Mth.lerp(0.1D, d1, d0)); + } + +- if (this.horizontalCollision && this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (this.horizontalCollision && (this.level.purpurConfig.ravagerBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // Purpur + boolean flag = false; + AABB axisalignedbb = this.getBoundingBox().inflate(0.2D); + Iterator iterator = BlockPos.betweenClosed(Mth.floor(axisalignedbb.minX), Mth.floor(axisalignedbb.minY), Mth.floor(axisalignedbb.minZ), Mth.floor(axisalignedbb.maxX), Mth.floor(axisalignedbb.maxY), Mth.floor(axisalignedbb.maxZ)).iterator(); +diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +index 0d60d6352294fadc1a26579a712b01cf0da681af..b9d5a03000b3b0759d786ac69e30d6a9d25146b3 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java +@@ -195,7 +195,7 @@ public class Silverfish extends Monster { + continue; + } + // CraftBukkit end +- if (world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { ++ if (world.purpurConfig.silverfishBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) { // Purpur + world.destroyBlock(blockposition1, true, this.silverfish); + } else { + world.setBlock(blockposition1, ((InfestedBlock) block).hostStateByInfested(world.getBlockState(blockposition1)), 3); +@@ -232,7 +232,7 @@ public class Silverfish extends Monster { + } else { + Random random = this.mob.getRandom(); + +- if (this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && random.nextInt(10) == 0) { ++ if ((this.mob.level.purpurConfig.silverfishBypassMobGriefing || this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && random.nextInt(10) == 0) { // Purpur + this.selectedDirection = Direction.getRandom(random); + BlockPos blockposition = (new BlockPos(this.mob.getX(), this.mob.getY() + 0.5D, this.mob.getZ())).relative(this.selectedDirection); + BlockState iblockdata = this.mob.level.getBlockState(blockposition); +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 4d00d99fb4d3e6a87a9f19470d5a7672dd068eb3..04ffda7f06e48365d091c30a149203f118168a4b 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 +@@ -405,7 +405,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento + + @Override + public boolean wantsToPickUp(ItemStack stack) { +- return this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack); ++ return (this.level.purpurConfig.piglinBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && this.canPickUpLoot() && PiglinAi.wantsToPickup(this, stack); + } + + protected boolean canReplaceCurrentItem(ItemStack stack) { +diff --git a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java +index e69213b43c8aa5a7c04add7a87482d531fbf52d2..f51ea103238b4a50439f5162a248cd9aa7f1a19b 100644 +--- a/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java ++++ b/src/main/java/net/minecraft/world/entity/projectile/LargeFireball.java +@@ -18,20 +18,20 @@ public class LargeFireball extends Fireball { + + public LargeFireball(EntityType type, Level world) { + super(type, world); +- isIncendiary = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit ++ isIncendiary = this.level.purpurConfig.fireballsBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur + } + + public LargeFireball(Level world, LivingEntity owner, double velocityX, double velocityY, double velocityZ, int explosionPower) { + super(EntityType.FIREBALL, owner, velocityX, velocityY, velocityZ, world); + this.explosionPower = explosionPower; +- isIncendiary = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit ++ isIncendiary = this.level.purpurConfig.fireballsBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit // Purpur + } + + @Override + protected void onHit(HitResult hitResult) { + super.onHit(hitResult); + if (!this.level.isClientSide) { +- boolean flag = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); ++ boolean flag = this.level.purpurConfig.fireballsBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur + + // 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 9a5da1eec68c7c435406809fda9695cbd54ba6c5..24a95bbee394dae1a3eac937990cae10a287a40b 100644 +--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java ++++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +@@ -290,6 +290,6 @@ public abstract class Projectile extends Entity { + public boolean mayInteract(Level world, BlockPos pos) { + Entity entity = this.getOwner(); + +- return entity instanceof Player ? entity.mayInteract(world, pos) : entity == null || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); ++ return entity instanceof Player ? entity.mayInteract(world, pos) : entity == null || world.purpurConfig.projectilesBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + } + } +diff --git a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java +index a6d75f20d6b7679d53c3c081c6632e9c303e2d74..af130b70b073939ceef70fa1b72841c511203dfc 100644 +--- a/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java ++++ b/src/main/java/net/minecraft/world/entity/projectile/SmallFireball.java +@@ -25,7 +25,7 @@ public class SmallFireball extends Fireball { + super(EntityType.SMALL_FIREBALL, owner, velocityX, velocityY, velocityZ, world); + // CraftBukkit start + if (this.getOwner() != null && this.getOwner() instanceof Mob) { +- isIncendiary = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); ++ isIncendiary = this.level.purpurConfig.fireballsBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // Purpur + } + // CraftBukkit end + } +diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +index 46b74271ce5f614f07754db14d2a552c36f73226..430aa10101d9f21561155941ff24441fd0c4103a 100644 +--- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java ++++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +@@ -93,7 +93,7 @@ public class WitherSkull extends AbstractHurtingProjectile { + protected void onHit(HitResult hitResult) { + super.onHit(hitResult); + if (!this.level.isClientSide) { +- Explosion.BlockInteraction explosion_effect = this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.NONE; ++ Explosion.BlockInteraction explosion_effect = (this.level.purpurConfig.witherBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.NONE; // Purpur + + // CraftBukkit start + // this.level.createExplosion(this, this.locX(), this.locY(), this.locZ(), 1.0F, false, explosion_effect); +diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java +index 54b5cfa35e5fe9138d39a73f2085f594f1987cda..4efc0870fadc291260491b9cc4e048916633185f 100644 +--- a/src/main/java/net/minecraft/world/entity/raid/Raider.java ++++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java +@@ -314,7 +314,7 @@ public abstract class Raider extends PatrollingMonster { + + @Override + public boolean canUse() { +- if (!this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items ++ if ((!this.mob.level.purpurConfig.pillagerBypassMobGriefing && !this.mob.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) || !this.mob.canPickUpLoot()) return false; // Paper - respect game and entity rules for picking up items // Purpur + Raid raid = this.mob.getCurrentRaid(); + + if (this.mob.hasActiveRaid() && !this.mob.getCurrentRaid().isOver() && this.mob.canBeLeader() && !ItemStack.matches(this.mob.getItemBySlot(EquipmentSlot.HEAD), Raid.getLeaderBannerInstance())) { +diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java +index 6dda5eeca4e310eceb2598322803bfafc184e9c7..3c51e6d419a244b9270119590aa299527163c331 100644 +--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java +@@ -164,7 +164,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock { + @Override + public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper +- if (entity instanceof Ravager && !CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)).isCancelled()) { // CraftBukkit ++ if (entity instanceof Ravager && !CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))).isCancelled()) { // CraftBukkit // Purpur + world.destroyBlock(pos, true, entity); + } + +diff --git a/src/main/java/net/minecraft/world/level/block/FarmBlock.java b/src/main/java/net/minecraft/world/level/block/FarmBlock.java +index e92f6ffcda47aad76ad647bc2ad3d1862bf24d8a..5b15275c8d808916a1506a19a8bc29103adedae9 100644 +--- a/src/main/java/net/minecraft/world/level/block/FarmBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/FarmBlock.java +@@ -99,7 +99,7 @@ public class FarmBlock extends Block { + @Override + public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) { + super.fallOn(world, state, pos, entity, fallDistance); // CraftBukkit - moved here as game rules / events shouldn't affect fall damage. +- if (!world.isClientSide && world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof Player || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { ++ if (!world.isClientSide && world.random.nextFloat() < fallDistance - 0.5F && entity instanceof LivingEntity && (entity instanceof Player || world.purpurConfig.farmlandBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && entity.getBbWidth() * entity.getBbWidth() * entity.getBbHeight() > 0.512F) { // Purpur + // CraftBukkit start - Interact soil + org.bukkit.event.Cancellable cancellable; + if (entity instanceof Player) { +diff --git a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java +index 1187a7382b8849524f99bbd8d12b43677f1053cd..ddce552c4374715e9652cfda3622b70d9be854f9 100644 +--- a/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/PowderSnowBlock.java +@@ -71,7 +71,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { + if (!world.isClientSide) { + // CraftBukkit start + if (entity.isOnFire() && entity.mayInteract(world, pos)) { +- if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !(world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) || entity instanceof Player)).isCancelled()) { ++ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !((world.purpurConfig.powderSnowBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) || entity instanceof Player)).isCancelled()) { + return; + } + // CraftBukkit end +diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +index e98fc3c235f9160f1928a8afb0d7991a6d3430cb..db35f756b7adb6b113659ae13b08ab8921944c21 100644 +--- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java ++++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +@@ -205,7 +205,7 @@ public class TurtleEggBlock extends Block { + return false; + } + if (entity instanceof LivingEntity && !(entity instanceof Player)) { +- return world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); ++ return world.purpurConfig.turtleEggsBypassMobGriefing || world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); + } + return true; + // Purpur end +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index ec075758721a0949237b60376d0b67cdee5fe4df..f7bbcaffe0a8be47e5528c8704f997bc000c818c 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -349,9 +349,12 @@ public class PurpurWorldConfig { + public boolean boatsDoFallDamage = true; + public boolean disableDropsOnCrammingDeath = false; + public boolean entitiesCanUsePortals = true; ++ public boolean entitiesPickUpLootBypassMobGriefing = false; ++ public boolean fireballsBypassMobGriefing = false; + public boolean milkCuresBadOmen = true; + public boolean persistentTileEntityDisplayNames = false; + public boolean persistentDroppableEntityDisplayNames = false; ++ public boolean projectilesBypassMobGriefing = false; + public double tridentLoyaltyVoidReturnHeight = 0.0D; + public double voidDamageHeight = -64.0D; + public double voidDamageDealt = 4.0D; +@@ -363,9 +366,12 @@ public class PurpurWorldConfig { + boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage); + disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath); + entitiesCanUsePortals = getBoolean("gameplay-mechanics.entities-can-use-portals", entitiesCanUsePortals); ++ entitiesPickUpLootBypassMobGriefing = getBoolean("gameplay-mechanics.entities-pick-up-loot-bypass-mob-griefing", entitiesPickUpLootBypassMobGriefing); ++ fireballsBypassMobGriefing = getBoolean("gameplay-mechanics.fireballs-bypass-mob-griefing", fireballsBypassMobGriefing); + milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); + persistentTileEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-tileentity-display-names-and-lore", persistentTileEntityDisplayNames); + persistentDroppableEntityDisplayNames = getBoolean("gameplay-mechanics.persistent-droppable-entity-display-names", persistentDroppableEntityDisplayNames); ++ projectilesBypassMobGriefing = getBoolean("gameplay-mechanics.projectiles-bypass-mob-griefing", projectilesBypassMobGriefing); + tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); + voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); + voidDamageDealt = getDouble("gameplay-mechanics.void-damage-dealt", voidDamageDealt); +@@ -428,9 +434,11 @@ public class PurpurWorldConfig { + dispenserPlaceAnvils = getBoolean("blocks.dispenser.place-anvils", dispenserPlaceAnvils); + } + ++ public boolean farmlandBypassMobGriefing = false; + public boolean farmlandGetsMoistFromBelow = false; + public boolean farmlandAlpha = false; + private void farmlandSettings() { ++ farmlandBypassMobGriefing = getBoolean("blocks.farmland.bypass-mob-griefing", farmlandBypassMobGriefing); + farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); + farmlandAlpha = getBoolean("blocks.farmland.use-alpha-farmland", farmlandAlpha); + } +@@ -456,6 +464,11 @@ public class PurpurWorldConfig { + kelpMaxGrowthAge = getInt("blocks.kelp.max-growth-age", kelpMaxGrowthAge); + } + ++ public boolean powderSnowBypassMobGriefing = false; ++ private void powderSnowSettings() { ++ powderSnowBypassMobGriefing = getBoolean("blocks.powder_snow.bypass-mob-griefing", powderSnowBypassMobGriefing); ++ } ++ + public boolean respawnAnchorExplode = true; + public double respawnAnchorExplosionPower = 5.0D; + public boolean respawnAnchorExplosionFire = true; +@@ -489,6 +502,11 @@ public class PurpurWorldConfig { + stonecutterDamage = (float) getDouble("blocks.stonecutter.damage", stonecutterDamage); + } + ++ public boolean turtleEggsBypassMobGriefing = false; ++ private void turtleSettings() { ++ turtleEggsBypassMobGriefing = getBoolean("blocks.turtle_egg.bypass-mob-griefing", turtleEggsBypassMobGriefing); ++ } ++ + public double twistingVinesGrowthModifier = 0.10D; + public int twistingVinesMaxGrowthAge = 25; + private void twistingVinesSettings() { +@@ -667,6 +685,7 @@ public class PurpurWorldConfig { + public double creeperMaxHealth = 20.0D; + public double creeperChargedChance = 0.0D; + public boolean creeperAllowGriefing = true; ++ public boolean creeperBypassMobGriefing = false; + private void creeperSettings() { + creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); + creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); +@@ -678,6 +697,7 @@ public class PurpurWorldConfig { + creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); + creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); + creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); ++ creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); + } + + public boolean dolphinRidable = false; +@@ -765,6 +785,7 @@ public class PurpurWorldConfig { + public double enderDragonMaxY = 256D; + public double enderDragonMaxHealth = 200.0D; + public boolean enderDragonAlwaysDropsFullExp = false; ++ public boolean enderDragonBypassMobGriefing = false; + private void enderDragonSettings() { + enderDragonRidable = getBoolean("mobs.ender_dragon.ridable", enderDragonRidable); + enderDragonRidableInWater = getBoolean("mobs.ender_dragon.ridable-in-water", enderDragonRidableInWater); +@@ -780,6 +801,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); + } + + public boolean endermanRidable = false; +@@ -787,6 +809,7 @@ public class PurpurWorldConfig { + public double endermanMaxHealth = 40.0D; + public boolean endermanAllowGriefing = true; + public boolean endermanDespawnEvenWithBlock = false; ++ public boolean endermanBypassMobGriefing = false; + private void endermanSettings() { + endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); + endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); +@@ -798,6 +821,7 @@ public class PurpurWorldConfig { + endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); + 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); + } + + public boolean endermiteRidable = false; +@@ -817,6 +841,7 @@ public class PurpurWorldConfig { + public boolean evokerRidable = false; + public boolean evokerRidableInWater = false; + public double evokerMaxHealth = 24.0D; ++ public boolean evokerBypassMobGriefing = false; + private void evokerSettings() { + evokerRidable = getBoolean("mobs.evoker.ridable", evokerRidable); + evokerRidableInWater = getBoolean("mobs.evoker.ridable-in-water", evokerRidableInWater); +@@ -826,6 +851,7 @@ public class PurpurWorldConfig { + set("mobs.evoker.attributes.max_health", oldValue); + } + evokerMaxHealth = getDouble("mobs.evoker.attributes.max_health", evokerMaxHealth); ++ evokerBypassMobGriefing = getBoolean("mobs.evoker.bypass-mob-griefing", evokerBypassMobGriefing); + } + + public boolean foxRidable = false; +@@ -833,6 +859,7 @@ public class PurpurWorldConfig { + public double foxMaxHealth = 10.0D; + public boolean foxTypeChangesWithTulips = false; + public int foxBreedingTicks = 6000; ++ public boolean foxBypassMobGriefing = false; + private void foxSettings() { + foxRidable = getBoolean("mobs.fox.ridable", foxRidable); + foxRidableInWater = getBoolean("mobs.fox.ridable-in-water", foxRidableInWater); +@@ -844,6 +871,7 @@ public class PurpurWorldConfig { + foxMaxHealth = getDouble("mobs.fox.attributes.max_health", foxMaxHealth); + foxTypeChangesWithTulips = getBoolean("mobs.fox.tulips-change-type", foxTypeChangesWithTulips); + foxBreedingTicks = getInt("mobs.fox.breeding-delay-ticks", foxBreedingTicks); ++ foxBypassMobGriefing = getBoolean("mobs.fox.bypass-mob-griefing", foxBypassMobGriefing); + } + + public boolean ghastRidable = false; +@@ -1237,6 +1265,7 @@ public class PurpurWorldConfig { + public boolean piglinRidable = false; + public boolean piglinRidableInWater = false; + public double piglinMaxHealth = 16.0D; ++ public boolean piglinBypassMobGriefing = true; + private void piglinSettings() { + piglinRidable = getBoolean("mobs.piglin.ridable", piglinRidable); + piglinRidableInWater = getBoolean("mobs.piglin.ridable-in-water", piglinRidableInWater); +@@ -1246,6 +1275,7 @@ public class PurpurWorldConfig { + set("mobs.piglin.attributes.max_health", oldValue); + } + piglinMaxHealth = getDouble("mobs.piglin.attributes.max_health", piglinMaxHealth); ++ piglinBypassMobGriefing = getBoolean("mobs.piglin.bypass-mob-griefing", piglinBypassMobGriefing); + } + + public boolean piglinBruteRidable = false; +@@ -1265,6 +1295,7 @@ public class PurpurWorldConfig { + public boolean pillagerRidable = false; + public boolean pillagerRidableInWater = false; + public double pillagerMaxHealth = 24.0D; ++ public boolean pillagerBypassMobGriefing = false; + private void pillagerSettings() { + pillagerRidable = getBoolean("mobs.pillager.ridable", pillagerRidable); + pillagerRidableInWater = getBoolean("mobs.pillager.ridable-in-water", pillagerRidableInWater); +@@ -1274,6 +1305,7 @@ public class PurpurWorldConfig { + set("mobs.pillager.attributes.max_health", oldValue); + } + pillagerMaxHealth = getDouble("mobs.pillager.attributes.max_health", pillagerMaxHealth); ++ pillagerBypassMobGriefing = getBoolean("mobs.pillager.bypass-mob-griefing", pillagerBypassMobGriefing); + } + + public boolean polarBearRidable = false; +@@ -1315,6 +1347,7 @@ public class PurpurWorldConfig { + public double rabbitNaturalToast = 0.0D; + public double rabbitNaturalKiller = 0.0D; + public int rabbitBreedingTicks = 6000; ++ public boolean rabbitBypassMobGriefing = false; + private void rabbitSettings() { + rabbitRidable = getBoolean("mobs.rabbit.ridable", rabbitRidable); + rabbitRidableInWater = getBoolean("mobs.rabbit.ridable-in-water", rabbitRidableInWater); +@@ -1327,11 +1360,13 @@ 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); ++ rabbitBypassMobGriefing = getBoolean("mobs.rabbit.bypass-mob-griefing", rabbitBypassMobGriefing); + } + + public boolean ravagerRidable = false; + public boolean ravagerRidableInWater = false; + public double ravagerMaxHealth = 100.0D; ++ public boolean ravagerBypassMobGriefing = false; + private void ravagerSettings() { + ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); + ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); +@@ -1341,6 +1376,7 @@ public class PurpurWorldConfig { + set("mobs.ravager.attributes.max_health", oldValue); + } + ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); ++ ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing); + } + + public boolean salmonRidable = false; +@@ -1359,6 +1395,7 @@ public class PurpurWorldConfig { + public boolean sheepRidableInWater = false; + public double sheepMaxHealth = 8.0D; + public int sheepBreedingTicks = 6000; ++ public boolean sheepBypassMobGriefing = false; + private void sheepSettings() { + sheepRidable = getBoolean("mobs.sheep.ridable", sheepRidable); + sheepRidableInWater = getBoolean("mobs.sheep.ridable-in-water", sheepRidableInWater); +@@ -1369,6 +1406,7 @@ public class PurpurWorldConfig { + } + sheepMaxHealth = getDouble("mobs.sheep.attributes.max_health", sheepMaxHealth); + sheepBreedingTicks = getInt("mobs.sheep.breeding-delay-ticks", sheepBreedingTicks); ++ sheepBypassMobGriefing = getBoolean("mobs.sheep.bypass-mob-griefing", sheepBypassMobGriefing); + } + + public boolean shulkerRidable = false; +@@ -1388,6 +1426,7 @@ public class PurpurWorldConfig { + public boolean silverfishRidable = false; + public boolean silverfishRidableInWater = false; + public double silverfishMaxHealth = 8.0D; ++ public boolean silverfishBypassMobGriefing = false; + private void silverfishSettings() { + silverfishRidable = getBoolean("mobs.silverfish.ridable", silverfishRidable); + silverfishRidableInWater = getBoolean("mobs.silverfish.ridable-in-water", silverfishRidableInWater); +@@ -1397,6 +1436,7 @@ public class PurpurWorldConfig { + set("mobs.silverfish.attributes.max_health", oldValue); + } + silverfishMaxHealth = getDouble("mobs.silverfish.attributes.max_health", silverfishMaxHealth); ++ silverfishBypassMobGriefing = getBoolean("mobs.silverfish.bypass-mob-griefing", silverfishBypassMobGriefing); + } + + public boolean skeletonRidable = false; +@@ -1464,6 +1504,7 @@ public class PurpurWorldConfig { + public int snowGolemSnowBallMax = 20; + public float snowGolemSnowBallModifier = 10.0F; + public double snowGolemAttackDistance = 1.25D; ++ public boolean snowGolemBypassMobGriefing = false; + private void snowGolemSettings() { + snowGolemRidable = getBoolean("mobs.snow_golem.ridable", snowGolemRidable); + snowGolemRidableInWater = getBoolean("mobs.snow_golem.ridable-in-water", snowGolemRidableInWater); +@@ -1480,6 +1521,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); ++ snowGolemBypassMobGriefing = getBoolean("mobs.snow_golem.bypass-mob-griefing", snowGolemBypassMobGriefing); + } + + public boolean squidRidable = false; +@@ -1639,6 +1681,7 @@ public class PurpurWorldConfig { + public int villagerLobotomizeCheck = 60; + public boolean villagerClericsFarmWarts = false; + public boolean villagerClericFarmersThrowWarts = true; ++ public boolean villagerBypassMobGriefing = false; + private void villagerSettings() { + villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); + villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); +@@ -1665,6 +1708,7 @@ public class PurpurWorldConfig { + villagerLobotomizeCheck = getInt("mobs.villager.lobotomize.check-interval", villagerLobotomizeCheck); + 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); + } + + public boolean vindicatorRidable = false; +@@ -1721,6 +1765,7 @@ public class PurpurWorldConfig { + public double witherMaxHealth = 300.0D; + public float witherHealthRegenAmount = 1.0f; + public int witherHealthRegenDelay = 20; ++ public boolean witherBypassMobGriefing = false; + private void witherSettings() { + witherRidable = getBoolean("mobs.wither.ridable", witherRidable); + witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater); +@@ -1737,6 +1782,7 @@ public class PurpurWorldConfig { + witherMaxHealth = getDouble("mobs.wither.attributes.max_health", witherMaxHealth); + 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); + } + + public boolean witherSkeletonRidable = false; +@@ -1804,6 +1850,7 @@ public class PurpurWorldConfig { + public boolean zombieJockeyTryExistingChickens = true; + public boolean zombieAggressiveTowardsVillagerWhenLagging = true; + public Difficulty zombieBreakDoorMinDifficulty = Difficulty.HARD; ++ public boolean zombieBypassMobGriefing = false; + private void zombieSettings() { + zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); + zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); +@@ -1823,6 +1870,7 @@ public class PurpurWorldConfig { + } catch (IllegalArgumentException ignore) { + zombieBreakDoorMinDifficulty = Difficulty.HARD; + } ++ zombieBypassMobGriefing = getBoolean("mobs.zombie.bypass-mob-griefing", zombieBypassMobGriefing); + } + + public boolean zombieHorseRidableInWater = false;