From 5a659fe5b36d50b70ca76a71afbe3847b1e892d0 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sun, 30 Jan 2022 02:18:49 -0600 Subject: [PATCH] Fix MC-50647 and MC-238526 --- ...awners-not-spawning-slimes-correctly.patch | 33 ++++++++++++++++++ ...awner-not-spawning-water-animals-cor.patch | 34 +++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 patches/server/0267-MC-50647-Fix-spawners-not-spawning-slimes-correctly.patch create mode 100644 patches/server/0268-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch diff --git a/patches/server/0267-MC-50647-Fix-spawners-not-spawning-slimes-correctly.patch b/patches/server/0267-MC-50647-Fix-spawners-not-spawning-slimes-correctly.patch new file mode 100644 index 000000000..6029d0424 --- /dev/null +++ b/patches/server/0267-MC-50647-Fix-spawners-not-spawning-slimes-correctly.patch @@ -0,0 +1,33 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Sun, 30 Jan 2022 02:03:34 -0600 +Subject: [PATCH] MC-50647 - Fix spawners not spawning slimes correctly + + +diff --git a/src/main/java/net/minecraft/world/entity/monster/Slime.java b/src/main/java/net/minecraft/world/entity/monster/Slime.java +index b7c8ddc09a1761260919dbd3e49389104ce994e7..d8a21a982b4ebb133f6208fded11ba5f588d9f1f 100644 +--- a/src/main/java/net/minecraft/world/entity/monster/Slime.java ++++ b/src/main/java/net/minecraft/world/entity/monster/Slime.java +@@ -405,6 +405,7 @@ public class Slime extends Mob implements Enemy { + + public static boolean checkSlimeSpawnRules(EntityType type, LevelAccessor world, MobSpawnType spawnReason, BlockPos pos, Random random) { + if (world.getDifficulty() != Difficulty.PEACEFUL) { ++ if (spawnReason == MobSpawnType.SPAWNER && world.getMinecraftWorld().purpurConfig.spawnerFixMC50647) return true; // Purpur + // Paper start - Replace rules for Height in Swamp Biome + final double maxHeightSwamp = world.getMinecraftWorld().paperConfig.slimeMaxSpawnHeightInSwamp; + final double minHeightSwamp = world.getMinecraftWorld().paperConfig.slimeMinSpawnHeightInSwamp; +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index ff2be61f790f39aae37794e7d7e4115073bfd716..665baa256637756fe16892b37969c7e1ec51b0f6 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -961,8 +961,10 @@ public class PurpurWorldConfig { + } + + public boolean spawnerDeactivateByRedstone = false; ++ public boolean spawnerFixMC50647 = false; + private void spawnerSettings() { + spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); ++ spawnerFixMC50647 = getBoolean("blocks.spawner.fix-mc-50647", spawnerFixMC50647); + } + + public int spongeAbsorptionArea = 64; diff --git a/patches/server/0268-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch b/patches/server/0268-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch new file mode 100644 index 000000000..ba44aa3a4 --- /dev/null +++ b/patches/server/0268-MC-238526-Fix-spawner-not-spawning-water-animals-cor.patch @@ -0,0 +1,34 @@ +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/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +index c3bba52a5c7a618fd9731045268fa9ccebff14f4..f9252c03c356ea8bfb6a7592ea7c6bf43f11a534 100644 +--- a/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java ++++ b/src/main/java/net/minecraft/world/entity/animal/WaterAnimal.java +@@ -83,6 +83,6 @@ public abstract class WaterAnimal extends PathfinderMob { + i = world.getMinecraftWorld().paperConfig.waterAnimalMaxSpawnHeight != null ? world.getMinecraftWorld().paperConfig.waterAnimalMaxSpawnHeight : i; + j = world.getMinecraftWorld().paperConfig.waterAnimalMinSpawnHeight != null ? world.getMinecraftWorld().paperConfig.waterAnimalMinSpawnHeight : j; + // Paper end +- return world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER) && pos.getY() >= j && pos.getY() <= i; ++ return world.getFluidState(pos.below()).is(FluidTags.WATER) && world.getBlockState(pos.above()).is(Blocks.WATER) && ((reason == MobSpawnType.SPAWNER && world.getMinecraftWorld().purpurConfig.spawnerFixMC238526) || (pos.getY() >= j && pos.getY() <= i)); // Purpur + } + } +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +index 665baa256637756fe16892b37969c7e1ec51b0f6..af74a675602a7291f562014cee26c8d82c4035d1 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +@@ -962,9 +962,11 @@ public class PurpurWorldConfig { + + public boolean spawnerDeactivateByRedstone = false; + public boolean spawnerFixMC50647 = false; ++ public boolean spawnerFixMC238526 = false; + private void spawnerSettings() { + spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); + spawnerFixMC50647 = getBoolean("blocks.spawner.fix-mc-50647", spawnerFixMC50647); ++ spawnerFixMC238526 = getBoolean("mobs.slime.fix-mc-238526", spawnerFixMC238526); + } + + public int spongeAbsorptionArea = 64;