diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index d80457921..1b382227e 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index a3a76b9b7efa773117d2ee1ce53ef784b09b277d..7117f9a7b4b6bbad751e4afda1f00692e6884625 100644 +index a3a76b9b7efa773117d2ee1ce53ef784b09b277d..fd553723ff88e8074a9ab391b63b64fb5f83050d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,8 +7,8 @@ plugins { @@ -15,7 +15,7 @@ index a3a76b9b7efa773117d2ee1ce53ef784b09b277d..7117f9a7b4b6bbad751e4afda1f00692 - implementation(project(":paper-api")) - implementation(project(":paper-mojangapi")) + implementation(project(":purpur-api")) // Pufferfish // Purpur -+ implementation("io.papermc.paper:paper-mojangapi:1.19.4-R0.1-SNAPSHOT") // Purpur // todo: update to 1.20 once on the repo ++ implementation("io.papermc.paper:paper-mojangapi:${project.version}") // Purpur // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index 69bd9b8bf..98366393c 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -1504,10 +1504,10 @@ index d434b96b878652190fac4e2882b7b7373febbbd5..62deb4a443bf65655d2a4310c0dd9f40 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index ec168b917d60cc6d8c48620eb4dcd89b0b121aea..b51c96e3f09d303f28675fc440ad402fca3db654 100644 +index ec168b917d60cc6d8c48620eb4dcd89b0b121aea..2bd21bcd94e63048f29bf7e833fabb0751308447 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -114,94 +114,173 @@ public class PurpurWorldConfig { +@@ -114,94 +114,188 @@ public class PurpurWorldConfig { public boolean axolotlRidable = false; public boolean axolotlControllable = true; @@ -1584,6 +1584,21 @@ index ec168b917d60cc6d8c48620eb4dcd89b0b121aea..b51c96e3f09d303f28675fc440ad402f + set("mobs.blaze.attributes.max_health", oldValue); + } + blazeMaxHealth = getDouble("mobs.blaze.attributes.max_health", blazeMaxHealth); ++ } ++ ++ public double camelMaxHealthMin = 32.0D; ++ public double camelMaxHealthMax = 32.0D; ++ public double camelJumpStrengthMin = 0.42D; ++ public double camelJumpStrengthMax = 0.42D; ++ public double camelMovementSpeedMin = 0.09D; ++ public double camelMovementSpeedMax = 0.09D; ++ private void camelSettings() { ++ camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); ++ camelMaxHealthMax = getDouble("mobs.camel.attributes.max_health.max", camelMaxHealthMax); ++ camelJumpStrengthMin = getDouble("mobs.camel.attributes.jump_strength.min", camelJumpStrengthMin); ++ camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); ++ camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); ++ camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); } public boolean catRidable = false; @@ -1681,7 +1696,7 @@ index ec168b917d60cc6d8c48620eb4dcd89b0b121aea..b51c96e3f09d303f28675fc440ad402f } public boolean dolphinRidable = false; -@@ -209,80 +288,176 @@ public class PurpurWorldConfig { +@@ -209,80 +303,161 @@ public class PurpurWorldConfig { public int dolphinSpitCooldown = 20; public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; @@ -1740,21 +1755,6 @@ index ec168b917d60cc6d8c48620eb4dcd89b0b121aea..b51c96e3f09d303f28675fc440ad402f + } + drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); + drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); -+ } -+ -+ public double camelMaxHealthMin = 32.0D; -+ public double camelMaxHealthMax = 32.0D; -+ public double camelJumpStrengthMin = 0.42D; -+ public double camelJumpStrengthMax = 0.42D; -+ public double camelMovementSpeedMin = 0.09D; -+ public double camelMovementSpeedMax = 0.09D; -+ private void camelSettings() { -+ camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -+ camelMaxHealthMax = getDouble("mobs.camel.attributes.max_health.max", camelMaxHealthMax); -+ camelJumpStrengthMin = getDouble("mobs.camel.attributes.jump_strength.min", camelJumpStrengthMin); -+ camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); -+ camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); -+ camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); } public boolean elderGuardianRidable = false; @@ -2677,7 +2677,7 @@ index ec168b917d60cc6d8c48620eb4dcd89b0b121aea..b51c96e3f09d303f28675fc440ad402f } public boolean wardenRidable = false; -@@ -727,64 +1311,134 @@ public class PurpurWorldConfig { +@@ -727,81 +1311,160 @@ public class PurpurWorldConfig { public boolean witchRidable = false; public boolean witchRidableInWater = true; public boolean witchControllable = true; @@ -2784,8 +2784,6 @@ index ec168b917d60cc6d8c48620eb4dcd89b0b121aea..b51c96e3f09d303f28675fc440ad402f public boolean zombieHorseRidableInWater = false; public boolean zombieHorseCanSwim = false; -+ public double zombieVillagerMaxHealth = 20.0D; -+ public double zombieVillagerSpawnReinforcements = 0.1D; + public double zombieHorseMaxHealthMin = 15.0D; + public double zombieHorseMaxHealthMax = 15.0D; + public double zombieHorseJumpStrengthMin = 0.4D; @@ -2801,8 +2799,6 @@ index ec168b917d60cc6d8c48620eb4dcd89b0b121aea..b51c96e3f09d303f28675fc440ad402f + set("mobs.zombie_horse.attributes.max_health.min", oldValue); + set("mobs.zombie_horse.attributes.max_health.max", oldValue); + } -+ zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); -+ zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); + zombieHorseMaxHealthMin = getDouble("mobs.zombie_horse.attributes.max_health.min", zombieHorseMaxHealthMin); + zombieHorseMaxHealthMax = getDouble("mobs.zombie_horse.attributes.max_health.max", zombieHorseMaxHealthMax); + zombieHorseJumpStrengthMin = getDouble("mobs.zombie_horse.attributes.jump_strength.min", zombieHorseJumpStrengthMin); @@ -2812,7 +2808,18 @@ index ec168b917d60cc6d8c48620eb4dcd89b0b121aea..b51c96e3f09d303f28675fc440ad402f } public boolean zombieVillagerRidable = false; -@@ -799,9 +1453,18 @@ public class PurpurWorldConfig { + public boolean zombieVillagerRidableInWater = true; + public boolean zombieVillagerControllable = true; ++ public double zombieVillagerMaxHealth = 20.0D; ++ public double zombieVillagerSpawnReinforcements = 0.1D; + private void zombieVillagerSettings() { + zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); + zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); + zombieVillagerControllable = getBoolean("mobs.zombie_villager.controllable", zombieVillagerControllable); ++ zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); ++ zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); + } + public boolean zombifiedPiglinRidable = false; public boolean zombifiedPiglinRidableInWater = true; public boolean zombifiedPiglinControllable = true; diff --git a/patches/server/0024-Zombie-horse-naturally-spawn.patch b/patches/server/0024-Zombie-horse-naturally-spawn.patch index 806bdec60..636222aa5 100644 --- a/patches/server/0024-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0024-Zombie-horse-naturally-spawn.patch @@ -30,10 +30,10 @@ index 9168a02ede5b2fc924dbcf0063109f8e72d94d61..e2b1433034b1ab9bad821983515a37fd entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 940ff156a42369656b919bef3dbadfc98d7dce01..524a6e6f90a3beea113d8cf6ff567793be9d15aa 100644 +index c1996047ebfb4f515a037bf4b8d7872eb8363739..aee48b41a0a550dd4db9b33d7c02961753a5c4ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1493,6 +1493,7 @@ public class PurpurWorldConfig { +@@ -1491,6 +1491,7 @@ public class PurpurWorldConfig { public double zombieHorseJumpStrengthMax = 1.0D; public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; @@ -41,7 +41,7 @@ index 940ff156a42369656b919bef3dbadfc98d7dce01..524a6e6f90a3beea113d8cf6ff567793 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -1510,6 +1511,7 @@ public class PurpurWorldConfig { +@@ -1506,6 +1507,7 @@ public class PurpurWorldConfig { zombieHorseJumpStrengthMax = getDouble("mobs.zombie_horse.attributes.jump_strength.max", zombieHorseJumpStrengthMax); zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); diff --git a/patches/server/0025-Charged-creeper-naturally-spawn.patch b/patches/server/0025-Charged-creeper-naturally-spawn.patch index 76fc53eb6..ff5df5ee7 100644 --- a/patches/server/0025-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0025-Charged-creeper-naturally-spawn.patch @@ -24,10 +24,10 @@ index 539f44793f11db1971e72e2bbeae8d2d9d9b6798..4f374a2b1aab20fe2523df716a9d622c protected SoundEvent getHurtSound(DamageSource source) { return SoundEvents.CREEPER_HURT; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 524a6e6f90a3beea113d8cf6ff567793be9d15aa..c42ae175742c4072d43dd04bd25a1338004e198a 100644 +index aee48b41a0a550dd4db9b33d7c02961753a5c4ed..e9fbb9f7aeadd2860491a8afdc200de40b51320b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -334,6 +334,7 @@ public class PurpurWorldConfig { +@@ -349,6 +349,7 @@ public class PurpurWorldConfig { public boolean creeperRidableInWater = true; public boolean creeperControllable = true; public double creeperMaxHealth = 20.0D; @@ -35,7 +35,7 @@ index 524a6e6f90a3beea113d8cf6ff567793be9d15aa..c42ae175742c4072d43dd04bd25a1338 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -344,6 +345,7 @@ public class PurpurWorldConfig { +@@ -359,6 +360,7 @@ public class PurpurWorldConfig { set("mobs.creeper.attributes.max_health", oldValue); } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); diff --git a/patches/server/0030-Chickens-can-retaliate.patch b/patches/server/0030-Chickens-can-retaliate.patch index 0db53ab96..f925cc128 100644 --- a/patches/server/0030-Chickens-can-retaliate.patch +++ b/patches/server/0030-Chickens-can-retaliate.patch @@ -50,10 +50,10 @@ index ea404a84a43a02a5614d5142bb78a586edfc69f6..0f49705e3c7adf033cee9d0746319885 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a7873252ba4ff059beeaa69017e51772468b58a2..7dd253bdce33673b4f748c47c137f14af5054cca 100644 +index 4647d1bf9b33923b20b0bdb87f6aff36f57d7618..1f8da294544cae98391723fa1be37868d02a938e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -288,6 +288,7 @@ public class PurpurWorldConfig { +@@ -303,6 +303,7 @@ public class PurpurWorldConfig { public boolean chickenRidableInWater = false; public boolean chickenControllable = true; public double chickenMaxHealth = 4.0D; @@ -61,7 +61,7 @@ index a7873252ba4ff059beeaa69017e51772468b58a2..7dd253bdce33673b4f748c47c137f14a private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -298,6 +299,7 @@ public class PurpurWorldConfig { +@@ -313,6 +314,7 @@ public class PurpurWorldConfig { set("mobs.chicken.attributes.max_health", oldValue); } chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); diff --git a/patches/server/0032-Cat-spawning-options.patch b/patches/server/0032-Cat-spawning-options.patch index 819938094..35646e17f 100644 --- a/patches/server/0032-Cat-spawning-options.patch +++ b/patches/server/0032-Cat-spawning-options.patch @@ -51,10 +51,10 @@ index 5f407535298a31a34cfe114dd863fd6a9b977707..29c7e33fe961020e5a0007287fe9b663 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b957311ec505d5472492ecf49d33e86a2d62bcad..df28065f664791a4cf5bbae5cd3cabe691d07a39 100644 +index 839746c7fd91e946f1a2f673ac93d03381ac0790..7781d869af5d5a93ee6065005aeedc01db500c1f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -261,6 +261,9 @@ public class PurpurWorldConfig { +@@ -276,6 +276,9 @@ public class PurpurWorldConfig { public boolean catRidableInWater = true; public boolean catControllable = true; public double catMaxHealth = 10.0D; @@ -64,7 +64,7 @@ index b957311ec505d5472492ecf49d33e86a2d62bcad..df28065f664791a4cf5bbae5cd3cabe6 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -271,6 +274,9 @@ public class PurpurWorldConfig { +@@ -286,6 +289,9 @@ public class PurpurWorldConfig { set("mobs.cat.attributes.max_health", oldValue); } catMaxHealth = getDouble("mobs.cat.attributes.max_health", catMaxHealth); diff --git a/patches/server/0033-Cows-eat-mushrooms.patch b/patches/server/0033-Cows-eat-mushrooms.patch index b8fadbaef..32a59786f 100644 --- a/patches/server/0033-Cows-eat-mushrooms.patch +++ b/patches/server/0033-Cows-eat-mushrooms.patch @@ -114,10 +114,10 @@ index d26a44d634fe02e595654e573d02243b5eb66086..e5e84c85d2b1c84c7612392bb060f713 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index df28065f664791a4cf5bbae5cd3cabe691d07a39..ed32ff8a2ab16226a8679daff5835cc819b3b709 100644 +index 7781d869af5d5a93ee6065005aeedc01db500c1f..521abcf437aaab03f0f44be709b4a37a9ce18ab5 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -331,6 +331,7 @@ public class PurpurWorldConfig { +@@ -346,6 +346,7 @@ public class PurpurWorldConfig { public boolean cowRidableInWater = true; public boolean cowControllable = true; public double cowMaxHealth = 10.0D; @@ -125,7 +125,7 @@ index df28065f664791a4cf5bbae5cd3cabe691d07a39..ed32ff8a2ab16226a8679daff5835cc8 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -341,6 +342,7 @@ public class PurpurWorldConfig { +@@ -356,6 +357,7 @@ public class PurpurWorldConfig { set("mobs.cow.attributes.max_health", oldValue); } cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); diff --git a/patches/server/0047-Add-enderman-and-creeper-griefing-controls.patch b/patches/server/0047-Add-enderman-and-creeper-griefing-controls.patch index 549b8c94c..6f856def5 100644 --- a/patches/server/0047-Add-enderman-and-creeper-griefing-controls.patch +++ b/patches/server/0047-Add-enderman-and-creeper-griefing-controls.patch @@ -38,10 +38,10 @@ index a97d4e3c4dd03fa8cc299e825479463bb3e148c2..54b59b7faf69d54c05bdfee9b1bd2f13 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5d378a315e98cf7f0b8576684517fad0cebd35f3..ee5931cdc3352d8ea8664edb26de348f98c69fed 100644 +index de0226cc930177fec754ba91a1379f5082dda2ad..14a81a1ce795fa88b77597b2cda20072dfc5288b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -426,6 +426,7 @@ public class PurpurWorldConfig { +@@ -441,6 +441,7 @@ public class PurpurWorldConfig { public boolean creeperControllable = true; public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; @@ -49,7 +49,7 @@ index 5d378a315e98cf7f0b8576684517fad0cebd35f3..ee5931cdc3352d8ea8664edb26de348f private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -437,6 +438,7 @@ public class PurpurWorldConfig { +@@ -452,6 +453,7 @@ public class PurpurWorldConfig { } creeperMaxHealth = getDouble("mobs.creeper.attributes.max_health", creeperMaxHealth); creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); diff --git a/patches/server/0064-Configurable-jockey-options.patch b/patches/server/0064-Configurable-jockey-options.patch index 2adb02ebb..28d12e03a 100644 --- a/patches/server/0064-Configurable-jockey-options.patch +++ b/patches/server/0064-Configurable-jockey-options.patch @@ -167,10 +167,10 @@ index 8f22bfcde4bb8ad73794f2b98b156113e5a2a6c9..3d61b27c23d90e87fdfc8c170eafc116 public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 028344830eeb29090ea684b9c20eaf0d9884c9ce..df8f8dcf6e47710b289df1996b571781009c9c00 100644 +index 023eb3bc381803d9ab712965f44e2e3f3790ddbe..d96d87fd198e54802712b8cfde2a0563812a3136 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -572,6 +572,9 @@ public class PurpurWorldConfig { +@@ -587,6 +587,9 @@ public class PurpurWorldConfig { public boolean drownedControllable = true; public double drownedMaxHealth = 20.0D; public double drownedSpawnReinforcements = 0.1D; @@ -180,7 +180,7 @@ index 028344830eeb29090ea684b9c20eaf0d9884c9ce..df8f8dcf6e47710b289df1996b571781 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -583,6 +586,9 @@ public class PurpurWorldConfig { +@@ -598,6 +601,9 @@ public class PurpurWorldConfig { } drownedMaxHealth = getDouble("mobs.drowned.attributes.max_health", drownedMaxHealth); drownedSpawnReinforcements = getDouble("mobs.drowned.attributes.spawn_reinforcements", drownedSpawnReinforcements); @@ -189,7 +189,7 @@ index 028344830eeb29090ea684b9c20eaf0d9884c9ce..df8f8dcf6e47710b289df1996b571781 + drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); } - public double camelMaxHealthMin = 32.0D; + public boolean elderGuardianRidable = false; @@ -846,6 +852,9 @@ public class PurpurWorldConfig { public boolean huskControllable = true; public double huskMaxHealth = 20.0D; @@ -230,10 +230,10 @@ index 028344830eeb29090ea684b9c20eaf0d9884c9ce..df8f8dcf6e47710b289df1996b571781 } public boolean zombieHorseRidableInWater = false; -@@ -1723,10 +1741,16 @@ public class PurpurWorldConfig { - public boolean zombieVillagerRidable = false; - public boolean zombieVillagerRidableInWater = true; +@@ -1721,12 +1739,18 @@ public class PurpurWorldConfig { public boolean zombieVillagerControllable = true; + public double zombieVillagerMaxHealth = 20.0D; + public double zombieVillagerSpawnReinforcements = 0.1D; + public boolean zombieVillagerJockeyOnlyBaby = true; + public double zombieVillagerJockeyChance = 0.05D; + public boolean zombieVillagerJockeyTryExistingChickens = true; @@ -241,6 +241,8 @@ index 028344830eeb29090ea684b9c20eaf0d9884c9ce..df8f8dcf6e47710b289df1996b571781 zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); zombieVillagerControllable = getBoolean("mobs.zombie_villager.controllable", zombieVillagerControllable); + zombieVillagerMaxHealth = getDouble("mobs.zombie_villager.attributes.max_health", zombieVillagerMaxHealth); + zombieVillagerSpawnReinforcements = getDouble("mobs.zombie_villager.attributes.spawn_reinforcements", zombieVillagerSpawnReinforcements); + zombieVillagerJockeyOnlyBaby = getBoolean("mobs.zombie_villager.jockey.only-babies", zombieVillagerJockeyOnlyBaby); + zombieVillagerJockeyChance = getDouble("mobs.zombie_villager.jockey.chance", zombieVillagerJockeyChance); + zombieVillagerJockeyTryExistingChickens = getBoolean("mobs.zombie_villager.jockey.try-existing-chickens", zombieVillagerJockeyTryExistingChickens); diff --git a/patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch b/patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch index 36bb6fb74..24c61808f 100644 --- a/patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch +++ b/patches/server/0081-Add-option-to-disable-dolphin-treasure-searching.patch @@ -17,10 +17,10 @@ index b206686fe55f56b9c4d94a7b54927bf74842b46c..c9bc4eec14f40a31dbbe928f14277b12 } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 434860a0e72fc7bf808833193bf2ca476892c11b..45ee2548ebb5c41eccada81ffd859be2d97f4cd8 100644 +index 5c76e932a3299ec84543d988d9c931f238ad1f8d..c4b7cf6f1ca34d1ef9d1d9d7c3faa658ff060a06 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -594,6 +594,7 @@ public class PurpurWorldConfig { +@@ -609,6 +609,7 @@ public class PurpurWorldConfig { public float dolphinSpitSpeed = 1.0F; public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; @@ -28,7 +28,7 @@ index 434860a0e72fc7bf808833193bf2ca476892c11b..45ee2548ebb5c41eccada81ffd859be2 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -606,6 +607,7 @@ public class PurpurWorldConfig { +@@ -621,6 +622,7 @@ public class PurpurWorldConfig { set("mobs.dolphin.attributes.max_health", oldValue); } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); diff --git a/patches/server/0101-Make-entity-breeding-times-configurable.patch b/patches/server/0101-Make-entity-breeding-times-configurable.patch index 5d748980e..5b4f1affd 100644 --- a/patches/server/0101-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0101-Make-entity-breeding-times-configurable.patch @@ -525,7 +525,7 @@ index 853fe631a7d665e2379296c89e433e761495a814..ae4d404b837da202e52d246dabfc00c8 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 25976e5d003d61595db1292b294364c0a2f188b2..8223c4c0c24dc222fd4dad216c1b2b7daa98305f 100644 +index 420cf8bfa9b83c30ed0691bf2203f566c53b07c3..b047f91925dd38bc514e0a7a0d265dabb5ac09c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -502,10 +502,12 @@ public class PurpurWorldConfig { @@ -557,71 +557,7 @@ index 25976e5d003d61595db1292b294364c0a2f188b2..8223c4c0c24dc222fd4dad216c1b2b7d } public boolean blazeRidable = false; -@@ -583,6 +587,7 @@ public class PurpurWorldConfig { - public int catSpawnDelay = 1200; - public int catSpawnSwampHutScanRange = 16; - public int catSpawnVillageScanRange = 48; -+ public int catBreedingTicks = 6000; - private void catSettings() { - catRidable = getBoolean("mobs.cat.ridable", catRidable); - catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -596,6 +601,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); -+ catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); - } - - public boolean caveSpiderRidable = false; -@@ -619,6 +625,7 @@ public class PurpurWorldConfig { - public boolean chickenControllable = true; - public double chickenMaxHealth = 4.0D; - public boolean chickenRetaliate = false; -+ public int chickenBreedingTicks = 6000; - private void chickenSettings() { - chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); - chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -630,6 +637,7 @@ public class PurpurWorldConfig { - } - chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); - chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); -+ chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); - } - - public boolean codRidable = false; -@@ -651,6 +659,7 @@ public class PurpurWorldConfig { - public boolean cowControllable = true; - public double cowMaxHealth = 10.0D; - public int cowFeedMushrooms = 0; -+ public int cowBreedingTicks = 6000; - private void cowSettings() { - cowRidable = getBoolean("mobs.cow.ridable", cowRidable); - cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -662,6 +671,7 @@ public class PurpurWorldConfig { - } - cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); - cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); -+ cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); - } - - public boolean creeperRidable = false; -@@ -713,6 +723,7 @@ public class PurpurWorldConfig { - public double donkeyJumpStrengthMax = 0.5D; - public double donkeyMovementSpeedMin = 0.175D; - public double donkeyMovementSpeedMax = 0.175D; -+ public int donkeyBreedingTicks = 6000; - private void donkeySettings() { - donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); - if (PurpurConfig.version < 10) { -@@ -728,6 +739,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); -+ donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); - } - - public boolean drownedRidable = false; -@@ -760,6 +772,7 @@ public class PurpurWorldConfig { +@@ -582,6 +586,7 @@ public class PurpurWorldConfig { public double camelJumpStrengthMax = 0.42D; public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; @@ -629,14 +565,78 @@ index 25976e5d003d61595db1292b294364c0a2f188b2..8223c4c0c24dc222fd4dad216c1b2b7d private void camelSettings() { camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); camelMaxHealthMax = getDouble("mobs.camel.attributes.max_health.max", camelMaxHealthMax); -@@ -767,6 +780,7 @@ public class PurpurWorldConfig { +@@ -589,6 +594,7 @@ public class PurpurWorldConfig { camelJumpStrengthMax = getDouble("mobs.camel.attributes.jump_strength.max", camelJumpStrengthMax); camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); + camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks); } - public boolean elderGuardianRidable = false; + public boolean catRidable = false; +@@ -598,6 +604,7 @@ public class PurpurWorldConfig { + public int catSpawnDelay = 1200; + public int catSpawnSwampHutScanRange = 16; + public int catSpawnVillageScanRange = 48; ++ public int catBreedingTicks = 6000; + private void catSettings() { + catRidable = getBoolean("mobs.cat.ridable", catRidable); + catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); +@@ -611,6 +618,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); ++ catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); + } + + public boolean caveSpiderRidable = false; +@@ -634,6 +642,7 @@ public class PurpurWorldConfig { + public boolean chickenControllable = true; + public double chickenMaxHealth = 4.0D; + public boolean chickenRetaliate = false; ++ public int chickenBreedingTicks = 6000; + private void chickenSettings() { + chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); + chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); +@@ -645,6 +654,7 @@ public class PurpurWorldConfig { + } + chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); + chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); ++ chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); + } + + public boolean codRidable = false; +@@ -666,6 +676,7 @@ public class PurpurWorldConfig { + public boolean cowControllable = true; + public double cowMaxHealth = 10.0D; + public int cowFeedMushrooms = 0; ++ public int cowBreedingTicks = 6000; + private void cowSettings() { + cowRidable = getBoolean("mobs.cow.ridable", cowRidable); + cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); +@@ -677,6 +688,7 @@ public class PurpurWorldConfig { + } + cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); + cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); ++ cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); + } + + public boolean creeperRidable = false; +@@ -728,6 +740,7 @@ public class PurpurWorldConfig { + public double donkeyJumpStrengthMax = 0.5D; + public double donkeyMovementSpeedMin = 0.175D; + public double donkeyMovementSpeedMax = 0.175D; ++ public int donkeyBreedingTicks = 6000; + private void donkeySettings() { + donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); + if (PurpurConfig.version < 10) { +@@ -743,6 +756,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); ++ donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); + } + + public boolean drownedRidable = false; @@ -862,6 +876,7 @@ public class PurpurWorldConfig { public boolean foxControllable = true; public double foxMaxHealth = 10.0D; diff --git a/patches/server/0112-Configurable-default-collar-color.patch b/patches/server/0112-Configurable-default-collar-color.patch index 504e55e56..93b310386 100644 --- a/patches/server/0112-Configurable-default-collar-color.patch +++ b/patches/server/0112-Configurable-default-collar-color.patch @@ -43,10 +43,10 @@ index 563347f7b683d796f7d3575206d40656247a897c..6b270c1aa37096443701d7f4fbdab006 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f9a21e10b3d9faf9d7890ea3ca1c7fd3e1ccc03c..0d9a4180f3af0752a44c0829df48fc0bbb52a116 100644 +index 37b6e2de8be125d2e2dc9649af6114a5fab5f66c..bdf02c6e7893646f91a6be926b341a4079ecc743 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -603,6 +603,7 @@ public class PurpurWorldConfig { +@@ -620,6 +620,7 @@ public class PurpurWorldConfig { public int catSpawnSwampHutScanRange = 16; public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; @@ -54,7 +54,7 @@ index f9a21e10b3d9faf9d7890ea3ca1c7fd3e1ccc03c..0d9a4180f3af0752a44c0829df48fc0b private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -617,6 +618,11 @@ public class PurpurWorldConfig { +@@ -634,6 +635,11 @@ public class PurpurWorldConfig { catSpawnSwampHutScanRange = getInt("mobs.cat.scan-range-for-other-cats.swamp-hut", catSpawnSwampHutScanRange); catSpawnVillageScanRange = getInt("mobs.cat.scan-range-for-other-cats.village", catSpawnVillageScanRange); catBreedingTicks = getInt("mobs.cat.breeding-delay-ticks", catBreedingTicks); diff --git a/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch index 6bdee5c2d..56b525cfe 100644 --- a/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0120-Add-mobGriefing-bypass-to-everything-affected.patch @@ -374,7 +374,7 @@ index 1942649e868fc985a488034c411a6721595ecc67..7495e0e8beedad59fff24ebf189b58b3 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 63b8d72db812f29fbd82bc62fd21d0d53413bd79..3b53d35be4e5ddf0514556d8515c31ddf3bf6b3a 100644 +index c471635681dd4a2da85568fb214d997ba1724556..cb373bdd861387909c6a01b949244a9c62039ae7 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -117,8 +117,11 @@ public class PurpurWorldConfig { @@ -438,7 +438,7 @@ index 63b8d72db812f29fbd82bc62fd21d0d53413bd79..3b53d35be4e5ddf0514556d8515c31dd } public boolean babiesAreRidable = true; -@@ -719,6 +734,7 @@ public class PurpurWorldConfig { +@@ -736,6 +751,7 @@ public class PurpurWorldConfig { public double creeperMaxHealth = 20.0D; public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; @@ -446,7 +446,7 @@ index 63b8d72db812f29fbd82bc62fd21d0d53413bd79..3b53d35be4e5ddf0514556d8515c31dd private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -731,6 +747,7 @@ public class PurpurWorldConfig { +@@ -748,6 +764,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); diff --git a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch index 8a8b4c452..cba78f20a 100644 --- a/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0126-Toggle-for-water-sensitive-mob-damage.patch @@ -1197,7 +1197,7 @@ index 41ddf073ecb8ea97cca8021390500d65866488a5..e2a9179bb7a5ecbc31d98a2410a09f5e protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c7225378527c 100644 +index 64b28e4a4baf3db33c03e674dc4cb6ffa5a7238f..1445199626a1bec0a90349b6a5e1773e7bf35a14 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -569,11 +569,13 @@ public class PurpurWorldConfig { @@ -1261,8 +1261,8 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 + blazeTakeDamageFromWater = getBoolean("mobs.blaze.takes-damage-from-water", blazeTakeDamageFromWater); } - public boolean catRidable = false; -@@ -655,6 +663,7 @@ public class PurpurWorldConfig { + public double camelMaxHealthMin = 32.0D; +@@ -672,6 +680,7 @@ public class PurpurWorldConfig { public int catSpawnVillageScanRange = 48; public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; @@ -1270,7 +1270,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -674,12 +683,14 @@ public class PurpurWorldConfig { +@@ -691,12 +700,14 @@ public class PurpurWorldConfig { } catch (IllegalArgumentException ignore) { catDefaultCollarColor = DyeColor.RED; } @@ -1285,7 +1285,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -690,6 +701,7 @@ public class PurpurWorldConfig { +@@ -707,6 +718,7 @@ public class PurpurWorldConfig { set("mobs.cave_spider.attributes.max_health", oldValue); } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); @@ -1293,7 +1293,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 } public boolean chickenRidable = false; -@@ -698,6 +710,7 @@ public class PurpurWorldConfig { +@@ -715,6 +727,7 @@ public class PurpurWorldConfig { public double chickenMaxHealth = 4.0D; public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; @@ -1301,7 +1301,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -710,11 +723,13 @@ public class PurpurWorldConfig { +@@ -727,11 +740,13 @@ public class PurpurWorldConfig { chickenMaxHealth = getDouble("mobs.chicken.attributes.max_health", chickenMaxHealth); chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); @@ -1315,7 +1315,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -724,6 +739,7 @@ public class PurpurWorldConfig { +@@ -741,6 +756,7 @@ public class PurpurWorldConfig { set("mobs.cod.attributes.max_health", oldValue); } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); @@ -1323,7 +1323,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 } public boolean cowRidable = false; -@@ -732,6 +748,7 @@ public class PurpurWorldConfig { +@@ -749,6 +765,7 @@ public class PurpurWorldConfig { public double cowMaxHealth = 10.0D; public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; @@ -1331,7 +1331,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -744,6 +761,7 @@ public class PurpurWorldConfig { +@@ -761,6 +778,7 @@ public class PurpurWorldConfig { cowMaxHealth = getDouble("mobs.cow.attributes.max_health", cowMaxHealth); cowFeedMushrooms = getInt("mobs.cow.feed-mushrooms-for-mooshroom", cowFeedMushrooms); cowBreedingTicks = getInt("mobs.cow.breeding-delay-ticks", cowBreedingTicks); @@ -1339,7 +1339,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 } public boolean creeperRidable = false; -@@ -753,6 +771,7 @@ public class PurpurWorldConfig { +@@ -770,6 +788,7 @@ public class PurpurWorldConfig { public double creeperChargedChance = 0.0D; public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; @@ -1347,7 +1347,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -766,6 +785,7 @@ public class PurpurWorldConfig { +@@ -783,6 +802,7 @@ public class PurpurWorldConfig { creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); @@ -1355,7 +1355,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 } public boolean dolphinRidable = false; -@@ -775,6 +795,7 @@ public class PurpurWorldConfig { +@@ -792,6 +812,7 @@ public class PurpurWorldConfig { public float dolphinSpitDamage = 2.0F; public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; @@ -1363,7 +1363,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -788,6 +809,7 @@ public class PurpurWorldConfig { +@@ -805,6 +826,7 @@ public class PurpurWorldConfig { } dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); @@ -1371,7 +1371,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 } public boolean donkeyRidableInWater = false; -@@ -798,6 +820,7 @@ public class PurpurWorldConfig { +@@ -815,6 +837,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMin = 0.175D; public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; @@ -1379,7 +1379,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -814,6 +837,7 @@ public class PurpurWorldConfig { +@@ -831,6 +854,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMin = getDouble("mobs.donkey.attributes.movement_speed.min", donkeyMovementSpeedMin); donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); @@ -1387,7 +1387,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 } public boolean drownedRidable = false; -@@ -824,6 +848,7 @@ public class PurpurWorldConfig { +@@ -841,6 +865,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyOnlyBaby = true; public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; @@ -1395,15 +1395,13 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -838,6 +863,7 @@ public class PurpurWorldConfig { +@@ -855,11 +880,13 @@ public class PurpurWorldConfig { drownedJockeyOnlyBaby = getBoolean("mobs.drowned.jockey.only-babies", drownedJockeyOnlyBaby); drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); + drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); } - public double camelMaxHealthMin = 32.0D; -@@ -860,6 +886,7 @@ public class PurpurWorldConfig { public boolean elderGuardianRidable = false; public boolean elderGuardianControllable = true; public double elderGuardianMaxHealth = 80.0D; @@ -2295,7 +2293,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 } public boolean zombieHorseRidableInWater = false; -@@ -2097,6 +2237,7 @@ public class PurpurWorldConfig { +@@ -2095,6 +2235,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMin = 0.2D; public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; @@ -2303,7 +2301,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2115,6 +2256,7 @@ public class PurpurWorldConfig { +@@ -2111,6 +2252,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMin = getDouble("mobs.zombie_horse.attributes.movement_speed.min", zombieHorseMovementSpeedMin); zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); @@ -2311,7 +2309,7 @@ index 705c6b3ae0db79d0ef0a9eaea504381145b4af21..a902a1fff34382032fd56a6672b2c722 } public boolean zombieVillagerRidable = false; -@@ -2123,6 +2265,7 @@ public class PurpurWorldConfig { +@@ -2121,6 +2263,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerJockeyOnlyBaby = true; public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; diff --git a/patches/server/0139-Config-to-make-Creepers-explode-on-death.patch b/patches/server/0139-Config-to-make-Creepers-explode-on-death.patch index 23b8ff81f..0d4b7f995 100644 --- a/patches/server/0139-Config-to-make-Creepers-explode-on-death.patch +++ b/patches/server/0139-Config-to-make-Creepers-explode-on-death.patch @@ -50,10 +50,10 @@ index 6e80ea775596c5804b674234b7d59f4c941a49dc..56aaf99a94944de42f437e18806381e3 private void spawnLingeringCloud() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index eb698e1443f0abc3827b08840674d0e92cbb6dd3..336fdbe44d9d0dfbfd88dcbcd51d4c82ad66df03 100644 +index 513b98b48e23f1773818f03a0c12d1c997c001b4..432f6e6a4e25086eaa7be0865ac1de54a0994cf0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -833,6 +833,7 @@ public class PurpurWorldConfig { +@@ -850,6 +850,7 @@ public class PurpurWorldConfig { public boolean creeperAllowGriefing = true; public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; @@ -61,7 +61,7 @@ index eb698e1443f0abc3827b08840674d0e92cbb6dd3..336fdbe44d9d0dfbfd88dcbcd51d4c82 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -847,6 +848,7 @@ public class PurpurWorldConfig { +@@ -864,6 +865,7 @@ public class PurpurWorldConfig { creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); diff --git a/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch b/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch index dd1b89478..30f0f1fc9 100644 --- a/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch +++ b/patches/server/0162-Config-for-health-to-impact-Creeper-explosion-radius.patch @@ -21,10 +21,10 @@ index 56aaf99a94944de42f437e18806381e3978c305a..e2fba88438835f63605b81eeeff5345b if (!event.isCancelled()) { this.dead = true; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 1d30ead160227a6b6b0459c92aaf2134317f5538..a2cceab5518a48d87a6bbeb5bc9b87c96611c336 100644 +index d521ca080cde008ae9da4737bfe94ea116154480..8bcba18465ca8257cf76a4bcd1110beb1c621243 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -918,6 +918,7 @@ public class PurpurWorldConfig { +@@ -935,6 +935,7 @@ public class PurpurWorldConfig { public boolean creeperBypassMobGriefing = false; public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; @@ -32,7 +32,7 @@ index 1d30ead160227a6b6b0459c92aaf2134317f5538..a2cceab5518a48d87a6bbeb5bc9b87c9 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -933,6 +934,7 @@ public class PurpurWorldConfig { +@@ -950,6 +951,7 @@ public class PurpurWorldConfig { creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing); creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); diff --git a/patches/server/0183-Option-to-make-drowned-break-doors.patch b/patches/server/0183-Option-to-make-drowned-break-doors.patch index 097582297..371c1c897 100644 --- a/patches/server/0183-Option-to-make-drowned-break-doors.patch +++ b/patches/server/0183-Option-to-make-drowned-break-doors.patch @@ -34,10 +34,10 @@ index 902f831ea001145f73691b96f2fca8245a4fc05a..9346d634dd2b8cb3d89aa7ccf12fec6f @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f7f48f837644160b5de161b3f50800e6a7bfad89..97c8b4c4ede3edf04319d3b9d4f5ebc36dc1f80e 100644 +index 1df4755bedec746c87cd072ee24a909cde8d4c23..b607adcd5d6948d327d2ca11f36dceab4da24a56 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1062,6 +1062,7 @@ public class PurpurWorldConfig { +@@ -1079,6 +1079,7 @@ public class PurpurWorldConfig { public double drownedJockeyChance = 0.05D; public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; @@ -45,11 +45,11 @@ index f7f48f837644160b5de161b3f50800e6a7bfad89..97c8b4c4ede3edf04319d3b9d4f5ebc3 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1077,6 +1078,7 @@ public class PurpurWorldConfig { +@@ -1094,6 +1095,7 @@ public class PurpurWorldConfig { drownedJockeyChance = getDouble("mobs.drowned.jockey.chance", drownedJockeyChance); drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); + drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); } - public double camelMaxHealthMin = 32.0D; + public boolean elderGuardianRidable = false; diff --git a/patches/server/0199-Customizeable-Zombie-Villager-curing-times.patch b/patches/server/0199-Customizeable-Zombie-Villager-curing-times.patch index bd9dac27c..e82c8e719 100644 --- a/patches/server/0199-Customizeable-Zombie-Villager-curing-times.patch +++ b/patches/server/0199-Customizeable-Zombie-Villager-curing-times.patch @@ -18,10 +18,10 @@ index c3f220a85b91a25662c943b5ee4508cd7a18c75d..40b3498c57c62f8bdaac50546ca47f49 return InteractionResult.SUCCESS; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5ed88d88e3809c24749e1735ecd24a7dec644ab3..63a1ea43093133d059164fba722c79a954166bcd 100644 +index 9f51846982560462edfa62a631033da33c850687..b438f8f3428a2d1be569878fbd9eaa9bd5aecf19 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2743,6 +2743,8 @@ public class PurpurWorldConfig { +@@ -2741,6 +2741,8 @@ public class PurpurWorldConfig { public double zombieVillagerJockeyChance = 0.05D; public boolean zombieVillagerJockeyTryExistingChickens = true; public boolean zombieVillagerTakeDamageFromWater = false; diff --git a/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch b/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch index ca6853428..6dc0c6c76 100644 --- a/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0213-Dolphins-naturally-aggressive-to-players-chance.patch @@ -48,10 +48,10 @@ index d7f1a0ddad919fe87be29c16d6ef442cb5692fde..a3585d3c4331138bdd029c6fd8723c5c public static AttributeSupplier.Builder createAttributes() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c8a4056779c86cab41e6d0ac5e24254d256abafe..6b3e04296efda6f1bd4d93ccc3df0222ebb3aa31 100644 +index 41e77c1d3719c14ddb5c542f589e84cd5a8066b2..7f3a57cd7eef1f6b880fe7054351b8d47ad99e03 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1273,6 +1273,7 @@ public class PurpurWorldConfig { +@@ -1290,6 +1290,7 @@ public class PurpurWorldConfig { public double dolphinMaxHealth = 10.0D; public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; @@ -59,7 +59,7 @@ index c8a4056779c86cab41e6d0ac5e24254d256abafe..6b3e04296efda6f1bd4d93ccc3df0222 private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1287,6 +1288,7 @@ public class PurpurWorldConfig { +@@ -1304,6 +1305,7 @@ public class PurpurWorldConfig { dolphinMaxHealth = getDouble("mobs.dolphin.attributes.max_health", dolphinMaxHealth); dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); diff --git a/patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch b/patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch index 54977bf47..cdea72791 100644 --- a/patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch +++ b/patches/server/0214-Cows-naturally-aggressive-to-players-chance.patch @@ -57,10 +57,10 @@ index 008ce5fed911484b6207eb711f5d1dfcc6348984..5c99065d8f097920e440980313fd75a0 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6b3e04296efda6f1bd4d93ccc3df0222ebb3aa31..5dc7d311fde305a8a5b3860d6d7e1f1cd02dffb1 100644 +index 7f3a57cd7eef1f6b880fe7054351b8d47ad99e03..3a80c2901c688a7ef9fbe97fbe3524e773c0b394 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1222,6 +1222,8 @@ public class PurpurWorldConfig { +@@ -1239,6 +1239,8 @@ public class PurpurWorldConfig { public int cowFeedMushrooms = 0; public int cowBreedingTicks = 6000; public boolean cowTakeDamageFromWater = false; @@ -69,7 +69,7 @@ index 6b3e04296efda6f1bd4d93ccc3df0222ebb3aa31..5dc7d311fde305a8a5b3860d6d7e1f1c private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -1231,10 +1233,17 @@ public class PurpurWorldConfig { +@@ -1248,10 +1250,17 @@ public class PurpurWorldConfig { set("mobs.cow.attributes.max-health", null); set("mobs.cow.attributes.max_health", oldValue); } diff --git a/patches/server/0221-Add-option-to-disable-zombie-villagers-cure.patch b/patches/server/0221-Add-option-to-disable-zombie-villagers-cure.patch index 8267a14a7..72d352bbf 100644 --- a/patches/server/0221-Add-option-to-disable-zombie-villagers-cure.patch +++ b/patches/server/0221-Add-option-to-disable-zombie-villagers-cure.patch @@ -18,10 +18,10 @@ index 40b3498c57c62f8bdaac50546ca47f4927db7bfa..b8e0ae0714fd2b77831fb714b1bad901 itemstack.shrink(1); } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 3d73b18ca2c06250839982ccda9d30c5350a14eb..a329d044571d6e0ed995770f79050892586f859b 100644 +index c04957b14a4e1c2397bedfeeefab7306f94529c1..2672f91754e887dcfa2993de7689a6788cc0ac10 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2841,6 +2841,7 @@ public class PurpurWorldConfig { +@@ -2839,6 +2839,7 @@ public class PurpurWorldConfig { public boolean zombieVillagerTakeDamageFromWater = false; public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; diff --git a/patches/server/0224-Mobs-always-drop-experience.patch b/patches/server/0224-Mobs-always-drop-experience.patch index 0ba1ad6a9..62460bf5f 100644 --- a/patches/server/0224-Mobs-always-drop-experience.patch +++ b/patches/server/0224-Mobs-always-drop-experience.patch @@ -1157,7 +1157,7 @@ index 8fd8778e918566504666213a102a7ee2d1ed8b14..7fa248b2d1b73e20085f0d3cdfead385 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799ccf127ffd 100644 +index 409837a25e073ed6c3cfe0748ce8c018d8a16fdf..9560dd80f7e979faf13a2c0fa00a7e8aac18a873 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1058,12 +1058,14 @@ public class PurpurWorldConfig { @@ -1222,8 +1222,8 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c + blazeAlwaysDropExp = getBoolean("mobs.blaze.always-drop-exp", blazeAlwaysDropExp); } - public boolean catRidable = false; -@@ -1156,6 +1164,7 @@ public class PurpurWorldConfig { + public double camelMaxHealthMin = 32.0D; +@@ -1173,6 +1181,7 @@ public class PurpurWorldConfig { public int catBreedingTicks = 6000; public DyeColor catDefaultCollarColor = DyeColor.RED; public boolean catTakeDamageFromWater = false; @@ -1231,7 +1231,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void catSettings() { catRidable = getBoolean("mobs.cat.ridable", catRidable); catRidableInWater = getBoolean("mobs.cat.ridable-in-water", catRidableInWater); -@@ -1176,6 +1185,7 @@ public class PurpurWorldConfig { +@@ -1193,6 +1202,7 @@ public class PurpurWorldConfig { catDefaultCollarColor = DyeColor.RED; } catTakeDamageFromWater = getBoolean("mobs.cat.takes-damage-from-water", catTakeDamageFromWater); @@ -1239,7 +1239,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c } public boolean caveSpiderRidable = false; -@@ -1183,6 +1193,7 @@ public class PurpurWorldConfig { +@@ -1200,6 +1210,7 @@ public class PurpurWorldConfig { public boolean caveSpiderControllable = true; public double caveSpiderMaxHealth = 12.0D; public boolean caveSpiderTakeDamageFromWater = false; @@ -1247,7 +1247,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void caveSpiderSettings() { caveSpiderRidable = getBoolean("mobs.cave_spider.ridable", caveSpiderRidable); caveSpiderRidableInWater = getBoolean("mobs.cave_spider.ridable-in-water", caveSpiderRidableInWater); -@@ -1194,6 +1205,7 @@ public class PurpurWorldConfig { +@@ -1211,6 +1222,7 @@ public class PurpurWorldConfig { } caveSpiderMaxHealth = getDouble("mobs.cave_spider.attributes.max_health", caveSpiderMaxHealth); caveSpiderTakeDamageFromWater = getBoolean("mobs.cave_spider.takes-damage-from-water", caveSpiderTakeDamageFromWater); @@ -1255,7 +1255,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c } public boolean chickenRidable = false; -@@ -1203,6 +1215,7 @@ public class PurpurWorldConfig { +@@ -1220,6 +1232,7 @@ public class PurpurWorldConfig { public boolean chickenRetaliate = false; public int chickenBreedingTicks = 6000; public boolean chickenTakeDamageFromWater = false; @@ -1263,7 +1263,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void chickenSettings() { chickenRidable = getBoolean("mobs.chicken.ridable", chickenRidable); chickenRidableInWater = getBoolean("mobs.chicken.ridable-in-water", chickenRidableInWater); -@@ -1216,12 +1229,14 @@ public class PurpurWorldConfig { +@@ -1233,12 +1246,14 @@ public class PurpurWorldConfig { chickenRetaliate = getBoolean("mobs.chicken.retaliate", chickenRetaliate); chickenBreedingTicks = getInt("mobs.chicken.breeding-delay-ticks", chickenBreedingTicks); chickenTakeDamageFromWater = getBoolean("mobs.chicken.takes-damage-from-water", chickenTakeDamageFromWater); @@ -1278,7 +1278,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void codSettings() { codRidable = getBoolean("mobs.cod.ridable", codRidable); codControllable = getBoolean("mobs.cod.controllable", codControllable); -@@ -1232,6 +1247,7 @@ public class PurpurWorldConfig { +@@ -1249,6 +1264,7 @@ public class PurpurWorldConfig { } codMaxHealth = getDouble("mobs.cod.attributes.max_health", codMaxHealth); codTakeDamageFromWater = getBoolean("mobs.cod.takes-damage-from-water", codTakeDamageFromWater); @@ -1286,7 +1286,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c } public boolean cowRidable = false; -@@ -1243,6 +1259,7 @@ public class PurpurWorldConfig { +@@ -1260,6 +1276,7 @@ public class PurpurWorldConfig { public boolean cowTakeDamageFromWater = false; public double cowNaturallyAggressiveToPlayersChance = 0.0D; public double cowNaturallyAggressiveToPlayersDamage = 2.0D; @@ -1294,7 +1294,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void cowSettings() { cowRidable = getBoolean("mobs.cow.ridable", cowRidable); cowRidableInWater = getBoolean("mobs.cow.ridable-in-water", cowRidableInWater); -@@ -1263,6 +1280,7 @@ public class PurpurWorldConfig { +@@ -1280,6 +1297,7 @@ public class PurpurWorldConfig { cowTakeDamageFromWater = getBoolean("mobs.cow.takes-damage-from-water", cowTakeDamageFromWater); cowNaturallyAggressiveToPlayersChance = getDouble("mobs.cow.naturally-aggressive-to-players.chance", cowNaturallyAggressiveToPlayersChance); cowNaturallyAggressiveToPlayersDamage = getDouble("mobs.cow.naturally-aggressive-to-players.damage", cowNaturallyAggressiveToPlayersDamage); @@ -1302,7 +1302,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c } public boolean creeperRidable = false; -@@ -1275,6 +1293,7 @@ public class PurpurWorldConfig { +@@ -1292,6 +1310,7 @@ public class PurpurWorldConfig { public boolean creeperTakeDamageFromWater = false; public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; @@ -1310,7 +1310,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1291,6 +1310,7 @@ public class PurpurWorldConfig { +@@ -1308,6 +1327,7 @@ public class PurpurWorldConfig { creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater); creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); @@ -1318,7 +1318,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c } public boolean dolphinRidable = false; -@@ -1302,6 +1322,7 @@ public class PurpurWorldConfig { +@@ -1319,6 +1339,7 @@ public class PurpurWorldConfig { public boolean dolphinDisableTreasureSearching = false; public boolean dolphinTakeDamageFromWater = false; public double dolphinNaturallyAggressiveToPlayersChance = 0.0D; @@ -1326,7 +1326,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void dolphinSettings() { dolphinRidable = getBoolean("mobs.dolphin.ridable", dolphinRidable); dolphinControllable = getBoolean("mobs.dolphin.controllable", dolphinControllable); -@@ -1317,6 +1338,7 @@ public class PurpurWorldConfig { +@@ -1334,6 +1355,7 @@ public class PurpurWorldConfig { dolphinDisableTreasureSearching = getBoolean("mobs.dolphin.disable-treasure-searching", dolphinDisableTreasureSearching); dolphinTakeDamageFromWater = getBoolean("mobs.dolphin.takes-damage-from-water", dolphinTakeDamageFromWater); dolphinNaturallyAggressiveToPlayersChance = getDouble("mobs.dolphin.naturally-aggressive-to-players-chance", dolphinNaturallyAggressiveToPlayersChance); @@ -1334,7 +1334,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c } public boolean donkeyRidableInWater = false; -@@ -1328,6 +1350,7 @@ public class PurpurWorldConfig { +@@ -1345,6 +1367,7 @@ public class PurpurWorldConfig { public double donkeyMovementSpeedMax = 0.175D; public int donkeyBreedingTicks = 6000; public boolean donkeyTakeDamageFromWater = false; @@ -1342,7 +1342,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void donkeySettings() { donkeyRidableInWater = getBoolean("mobs.donkey.ridable-in-water", donkeyRidableInWater); if (PurpurConfig.version < 10) { -@@ -1345,6 +1368,7 @@ public class PurpurWorldConfig { +@@ -1362,6 +1385,7 @@ public class PurpurWorldConfig { donkeyMovementSpeedMax = getDouble("mobs.donkey.attributes.movement_speed.max", donkeyMovementSpeedMax); donkeyBreedingTicks = getInt("mobs.donkey.breeding-delay-ticks", donkeyBreedingTicks); donkeyTakeDamageFromWater = getBoolean("mobs.donkey.takes-damage-from-water", donkeyTakeDamageFromWater); @@ -1350,7 +1350,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c } public boolean drownedRidable = false; -@@ -1357,6 +1381,7 @@ public class PurpurWorldConfig { +@@ -1374,6 +1398,7 @@ public class PurpurWorldConfig { public boolean drownedJockeyTryExistingChickens = true; public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; @@ -1358,15 +1358,14 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1373,6 +1398,7 @@ public class PurpurWorldConfig { +@@ -1390,12 +1415,14 @@ public class PurpurWorldConfig { drownedJockeyTryExistingChickens = getBoolean("mobs.drowned.jockey.try-existing-chickens", drownedJockeyTryExistingChickens); drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); + drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp); } - public double camelMaxHealthMin = 32.0D; -@@ -1396,6 +1422,7 @@ public class PurpurWorldConfig { + public boolean elderGuardianRidable = false; public boolean elderGuardianControllable = true; public double elderGuardianMaxHealth = 80.0D; public boolean elderGuardianTakeDamageFromWater = false; @@ -2257,7 +2256,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c } public boolean zombieHorseRidableInWater = false; -@@ -2813,6 +2951,7 @@ public class PurpurWorldConfig { +@@ -2811,6 +2949,7 @@ public class PurpurWorldConfig { public double zombieHorseMovementSpeedMax = 0.2D; public double zombieHorseSpawnChance = 0.0D; public boolean zombieHorseTakeDamageFromWater = false; @@ -2265,7 +2264,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c private void zombieHorseSettings() { zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater); zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim); -@@ -2832,6 +2971,7 @@ public class PurpurWorldConfig { +@@ -2828,6 +2967,7 @@ public class PurpurWorldConfig { zombieHorseMovementSpeedMax = getDouble("mobs.zombie_horse.attributes.movement_speed.max", zombieHorseMovementSpeedMax); zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance); zombieHorseTakeDamageFromWater = getBoolean("mobs.zombie_horse.takes-damage-from-water", zombieHorseTakeDamageFromWater); @@ -2273,7 +2272,7 @@ index b7f89a97abf9d5d7c01ba300299b919a4b7b4a7c..ef620d81a4e58ad7fa3c3184b216799c } public boolean zombieVillagerRidable = false; -@@ -2844,6 +2984,7 @@ public class PurpurWorldConfig { +@@ -2842,6 +2982,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMin = 3600; public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; diff --git a/patches/server/0230-Mob-head-visibility-percent.patch b/patches/server/0230-Mob-head-visibility-percent.patch index 70d4df726..59a7448e2 100644 --- a/patches/server/0230-Mob-head-visibility-percent.patch +++ b/patches/server/0230-Mob-head-visibility-percent.patch @@ -32,10 +32,10 @@ index 7a35d45f8449a8399cb417357f0f0a6419bfbe3a..39ee6fbc6ce17b61abf88deba69b0ade // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index a054dd54797af8190b09d2d9975edbf323496dd8..8ae28ced1d88e3b7ad3656a1389d9e9994992823 100644 +index 7e5d23397c05a82c4a52bb493e992b6110d4c98e..69c2e49bcb3419222879f383e3042eae7bc1df8a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1300,6 +1300,7 @@ public class PurpurWorldConfig { +@@ -1317,6 +1317,7 @@ public class PurpurWorldConfig { public boolean creeperExplodeWhenKilled = false; public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; @@ -43,7 +43,7 @@ index a054dd54797af8190b09d2d9975edbf323496dd8..8ae28ced1d88e3b7ad3656a1389d9e99 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1317,6 +1318,7 @@ public class PurpurWorldConfig { +@@ -1334,6 +1335,7 @@ public class PurpurWorldConfig { creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); diff --git a/patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch b/patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch index df7f1a3ee..b26f7bf2f 100644 --- a/patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch +++ b/patches/server/0287-Add-option-to-allow-creeper-to-encircle-target-when-.patch @@ -24,10 +24,10 @@ index e241ae250f4f04a17ef2c583d00b065a4ca56a4c..02b567e4e808e1a809d285ef39e1abc5 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 68d57972e86ad8ad12cf4b3e597f4ced044a278b..0f9cb1fb0e4afbd79d331585c350b1092ef2e963 100644 +index ddef5a993321baf19971331592a875888b3363e6..44750edc6e90600bd2df28169c105cfbb2789793 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1357,6 +1357,7 @@ public class PurpurWorldConfig { +@@ -1374,6 +1374,7 @@ public class PurpurWorldConfig { public boolean creeperHealthRadius = false; public boolean creeperAlwaysDropExp = false; public double creeperHeadVisibilityPercent = 0.5D; @@ -35,7 +35,7 @@ index 68d57972e86ad8ad12cf4b3e597f4ced044a278b..0f9cb1fb0e4afbd79d331585c350b109 private void creeperSettings() { creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -@@ -1375,6 +1376,7 @@ public class PurpurWorldConfig { +@@ -1392,6 +1393,7 @@ public class PurpurWorldConfig { creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius); creeperAlwaysDropExp = getBoolean("mobs.creeper.always-drop-exp", creeperAlwaysDropExp); creeperHeadVisibilityPercent = getDouble("mobs.creeper.head-visibility-percent", creeperHeadVisibilityPercent); diff --git a/todo.txt b/todo.txt index 6ae8b43fd..e1d4707d0 100644 --- a/todo.txt +++ b/todo.txt @@ -1,10 +1,5 @@ * make sure that all mobs are in entity attributes and ridables (some from previous updates weren't added to attributes) * check sulker spawn from bullet options matches original design * configurable food atributes check `key.location().toString()` still works -* fix all instances of `level.blahblah` * merge pufferfish fixes into one * test allow transparent blocks in enchanting box - -* switch mojang api over -* zombie villager max health -* camel attribute in correct place \ No newline at end of file