From 32c1652b4343d4965c26c1e8cdf9c7fc6984b9fc Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sun, 12 Jan 2025 14:48:28 -0800 Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly --- ...awner-not-spawning-water-animals-cor.patch | 33 ------------------- .../entity/animal/WaterAnimal.java.patch | 12 +++++++ .../purpurmc/purpur/PurpurWorldConfig.java | 2 ++ 3 files changed, 14 insertions(+), 33 deletions(-) delete mode 100644 patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch diff --git a/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch deleted file mode 100644 index 62d5cbd61..000000000 --- a/patches/server/0232-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Sun, 30 Jan 2022 02:03:34 -0600 -Subject: [PATCH] MC-238526 - Fix spawner not spawning water animals correctly - - -diff --git a/net/minecraft/world/entity/animal/WaterAnimal.java b/net/minecraft/world/entity/animal/WaterAnimal.java -index 8c4532a250f8679d729a35c17e9b5bd339264450..2b8336bd88641cfb29e94c8f01abfbdb39938bf3 100644 ---- a/net/minecraft/world/entity/animal/WaterAnimal.java -+++ b/net/minecraft/world/entity/animal/WaterAnimal.java -@@ -74,6 +74,6 @@ public abstract class WaterAnimal extends PathfinderMob { - i = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(i); - j = world.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(j); - // Paper end - Make water animal spawn height configurable -- return pos.getY() >= j && pos.getY() <= i && world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER); -+ return ((reason == EntitySpawnReason.SPAWNER && world.getMinecraftWorld().purpurConfig.spawnerFixMC238526) || (pos.getY() >= j && pos.getY() <= i)) && world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER); // Purpur - } - } -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index b5b0a603c8c6c3e71e1540012227500276022263..6572bbaf5d5548b1d2d6c224a9dcbbfe31f34339 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1030,8 +1030,10 @@ public class PurpurWorldConfig { - } - - public boolean spawnerDeactivateByRedstone = false; -+ public boolean spawnerFixMC238526 = false; - private void spawnerSettings() { - spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); -+ spawnerFixMC238526 = getBoolean("blocks.spawner.fix-mc-238526", spawnerFixMC238526); - } - - public int spongeAbsorptionArea = 65; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch new file mode 100644 index 000000000..b42850fc8 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/WaterAnimal.java.patch @@ -0,0 +1,12 @@ +--- a/net/minecraft/world/entity/animal/WaterAnimal.java ++++ b/net/minecraft/world/entity/animal/WaterAnimal.java +@@ -74,8 +_,7 @@ + seaLevel = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.maximum.or(seaLevel); + i = level.getMinecraftWorld().paperConfig().entities.spawning.wateranimalSpawnHeight.minimum.or(i); + // Paper end - Make water animal spawn height configurable +- return pos.getY() >= i +- && pos.getY() <= seaLevel ++ return ((spawnReason == EntitySpawnReason.SPAWNER && level.getMinecraftWorld().purpurConfig.spawnerFixMC238526) || (pos.getY() >= i && pos.getY() <= seaLevel)) // Purpur - MC-238526 - Fix spawner not spawning water animals correctly + && level.getFluidState(pos.below()).is(FluidTags.WATER) + && level.getBlockState(pos.above()).is(Blocks.WATER); + } diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 50b7aa6af..2d2e900d3 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1029,8 +1029,10 @@ public class PurpurWorldConfig { } public boolean spawnerDeactivateByRedstone = false; + public boolean spawnerFixMC238526 = false; private void spawnerSettings() { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); + spawnerFixMC238526 = getBoolean("blocks.spawner.fix-mc-238526", spawnerFixMC238526); } public int spongeAbsorptionArea = 65;