Files
Purpur/patches/server/0014-Zombie-horse-naturally-spawn.patch
William Blake Galbreath c0e748c0c1 Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly

Paper Changes:
68994c64 Add a config to turn off Optimized TickList #3145
d847d336 Improve blocking players from opening inventories while sleeping
ac4f6b50 Clean up Timings and Async Chunk Configs
fcf89e85 Improve mid tick chunk loading, Fix Oversleep, other improvements
ab36835c Improve random ticking behaviour - Fixes #3181
2020-04-26 16:29:21 -05:00

59 lines
3.3 KiB
Diff

From befc63f9359defeab79a8b2407b047d2e29636c7 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sun, 7 Jul 2019 19:52:16 -0500
Subject: [PATCH] Zombie horse naturally spawn
---
.../java/net/minecraft/server/WorldServer.java | 18 ++++++++++++------
.../net/pl3x/purpur/PurpurWorldConfig.java | 2 ++
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
index d13dc8fce..fc3a41e35 100644
--- a/src/main/java/net/minecraft/server/WorldServer.java
+++ b/src/main/java/net/minecraft/server/WorldServer.java
@@ -597,12 +597,18 @@ public class WorldServer extends World {
boolean flag1 = this.getGameRules().getBoolean(GameRules.DO_MOB_SPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.b() * paperConfig.skeleHorseSpawnChance; // Paper
if (flag1) {
- EntityHorseSkeleton entityhorseskeleton = (EntityHorseSkeleton) EntityTypes.SKELETON_HORSE.a((World) this);
-
- entityhorseskeleton.r(true);
- entityhorseskeleton.setAgeRaw(0);
- entityhorseskeleton.setPosition((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ());
- this.addEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit
+ // Purpur start
+ EntityHorseAbstract horse;
+ if (purpurConfig.zombieHorseSpawnChance > 0D && random.nextDouble() <= purpurConfig.zombieHorseSpawnChance) {
+ horse = EntityTypes.ZOMBIE_HORSE.create(this);
+ } else {
+ horse = EntityTypes.SKELETON_HORSE.create(this);
+ ((EntityHorseSkeleton) horse).setTrap(true);
+ }
+ horse.setAgeRaw(0);
+ horse.setPosition(blockposition.getX(), blockposition.getY(), blockposition.getZ());
+ addEntity(horse, CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit
+ // Purpur end
}
this.strikeLightning(new EntityLightning(this, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, flag1), org.bukkit.event.weather.LightningStrikeEvent.Cause.WEATHER); // CraftBukkit
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 96a66926f..4c7469b90 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -657,9 +657,11 @@ public class PurpurWorldConfig {
public boolean zombieHorseCanSwim = false;
public boolean zombieHorseRidableInWater = false;
+ public double zombieHorseSpawnChance = 0.0D;
private void zombieHorseSettings() {
zombieHorseCanSwim = getBoolean("mobs.zombie_horse.can-swim", zombieHorseCanSwim);
zombieHorseRidableInWater = getBoolean("mobs.zombie_horse.ridable-in-water", zombieHorseRidableInWater);
+ zombieHorseSpawnChance = getDouble("mobs.zombie_horse.spawn-chance", zombieHorseSpawnChance);
}
public boolean zombiePigmanRidable = false;
--
2.24.0