mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-02 04:56:50 +01:00
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.
This commit is contained in:
parent
7b87ab6548
commit
b32968b9a0
1 changed files with 71 additions and 0 deletions
|
@ -0,0 +1,71 @@
|
|||
From cc12a2b7e200d943b531a6fa085ca5ba343f4ab2 Mon Sep 17 00:00:00 2001
|
||||
From: md_5 <git@md-5.net>
|
||||
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
|
||||
|
Loading…
Reference in a new issue