From b32968b9a0152b312325b954ecc512f5752e7457 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 22 Dec 2013 21:00:50 +1100 Subject: [PATCH] Add option to nerfs mobs from spawners. When this option is enabled, mobs which originate from a mob spawner will not have any AI, ie: brains. They will generally only be affected by water movement, with the exception of blazes which will still emit fireballs and float up and down. This is disabled by default as it has a strong behavioural impact. --- ...d-Option-to-Nerf-Mobs-from-Spawner-s.patch | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 CraftBukkit-Patches/0083-Add-Option-to-Nerf-Mobs-from-Spawner-s.patch diff --git a/CraftBukkit-Patches/0083-Add-Option-to-Nerf-Mobs-from-Spawner-s.patch b/CraftBukkit-Patches/0083-Add-Option-to-Nerf-Mobs-from-Spawner-s.patch new file mode 100644 index 000000000..73c167cb8 --- /dev/null +++ b/CraftBukkit-Patches/0083-Add-Option-to-Nerf-Mobs-from-Spawner-s.patch @@ -0,0 +1,71 @@ +From cc12a2b7e200d943b531a6fa085ca5ba343f4ab2 Mon Sep 17 00:00:00 2001 +From: md_5 +Date: Sun, 22 Dec 2013 20:58:02 +1100 +Subject: [PATCH] Add Option to Nerf Mobs from Spawner's + + +diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java +index 84bac83..e147244 100644 +--- a/src/main/java/net/minecraft/server/Entity.java ++++ b/src/main/java/net/minecraft/server/Entity.java +@@ -116,6 +116,7 @@ public abstract class Entity { + public final byte activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this); + public final boolean defaultActivationState; + public long activatedTick = 0; ++ public boolean fromMobSpawner; + public void inactiveTick() { } + // Spigot end + +diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java +index 885a0ef..639354b 100644 +--- a/src/main/java/net/minecraft/server/EntityInsentient.java ++++ b/src/main/java/net/minecraft/server/EntityInsentient.java +@@ -417,6 +417,12 @@ public abstract class EntityInsentient extends EntityLiving { + this.world.methodProfiler.a("checkDespawn"); + this.w(); + this.world.methodProfiler.b(); ++ // Spigot Start ++ if ( this.fromMobSpawner ) ++ { ++ return; ++ } ++ // Spigot End + this.world.methodProfiler.a("sensing"); + this.bq.a(); + this.world.methodProfiler.b(); +diff --git a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java +index bb6b3d5..1eb8818 100644 +--- a/src/main/java/net/minecraft/server/MobSpawnerAbstract.java ++++ b/src/main/java/net/minecraft/server/MobSpawnerAbstract.java +@@ -136,6 +136,12 @@ public abstract class MobSpawnerAbstract { + SpawnerSpawnEvent event = CraftEventFactory.callSpawnerSpawnEvent(entity, this.b(), this.c(), this.d()); + if (!event.isCancelled()) { + entity.world.addEntity(entity, CreatureSpawnEvent.SpawnReason.SPAWNER); // CraftBukkit ++ // Spigot Start ++ if ( entity.world.spigotConfig.nerfSpawnerMobs ) ++ { ++ entity.fromMobSpawner = true; ++ } ++ // Spigot End + } + // CraftBukkit end + } +diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java +index ea447f9..e08d6a5 100644 +--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java ++++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java +@@ -246,4 +246,11 @@ public class SpigotWorldConfig + zombieAggressiveTowardsVillager = getBoolean( "zombie-aggressive-towards-villager", true ); + log( "Zombie Aggressive Towards Villager: " + zombieAggressiveTowardsVillager ); + } ++ ++ public boolean nerfSpawnerMobs; ++ private void nerfSpawnerMobs() ++ { ++ nerfSpawnerMobs = getBoolean( "nerf-spawner-mobs", false ); ++ log( "Nerfing mobs spawned from spawners " + nerfSpawnerMobs ); ++ } + } +-- +1.8.3.2 +