From 5b6b2312179ab089067664c3041b407f42aabaa5 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 8 Mar 2020 20:54:44 -0500 Subject: [PATCH] Add flying mobs to entity activation range settings --- src/main/java/org/spigotmc/ActivationRange.java | 16 +++++++++++++++- .../java/org/spigotmc/SpigotWorldConfig.java | 2 ++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java index 11fb146129..c79715b89a 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -9,6 +9,8 @@ import net.minecraft.server.Entity; import net.minecraft.server.EntityAmbient; import net.minecraft.server.EntityAnimal; import net.minecraft.server.EntityArrow; +import net.minecraft.server.EntityBird; // Purpur +import net.minecraft.server.EntityBlaze; // Purpur import net.minecraft.server.EntityComplexPart; import net.minecraft.server.EntityCreature; import net.minecraft.server.EntityCreeper; @@ -17,6 +19,7 @@ import net.minecraft.server.EntityEnderDragon; import net.minecraft.server.EntityFallingBlock; // Paper import net.minecraft.server.EntityFireball; import net.minecraft.server.EntityFireworks; +import net.minecraft.server.EntityFlying; // Purpur import net.minecraft.server.EntityHuman; import net.minecraft.server.EntityLightning; import net.minecraft.server.EntityLiving; @@ -28,6 +31,7 @@ import net.minecraft.server.EntitySlice; import net.minecraft.server.EntitySlime; import net.minecraft.server.EntityTNTPrimed; import net.minecraft.server.EntityThrownTrident; +import net.minecraft.server.EntityVex; // Purpur import net.minecraft.server.EntityVillager; import net.minecraft.server.EntityWither; import net.minecraft.server.MathHelper; @@ -46,6 +50,7 @@ public class ActivationRange public enum ActivationType { + FLYING, // Purpur WATER, // Paper MONSTER, ANIMAL, @@ -66,6 +71,7 @@ public class ActivationRange */ public static ActivationType initializeEntityActivationType(Entity entity) { + if (isFlyingMob(entity)) { return ActivationType.FLYING; } // Purpur if (entity instanceof EntityWaterAnimal) { return ActivationType.WATER; } // Paper if ( entity instanceof EntityRaider ) { @@ -129,6 +135,7 @@ public class ActivationRange final int animalActivationRange = world.spigotConfig.animalActivationRange; final int monsterActivationRange = world.spigotConfig.monsterActivationRange; final int waterActivationRange = world.spigotConfig.waterActivationRange; // Paper + final int flyingActivationRange = world.spigotConfig.flyingActivationRange; // Purpur // Tuinity start - per player view distance int maxRangeTemp = Math.max( monsterActivationRange, animalActivationRange ); @@ -149,6 +156,7 @@ public class ActivationRange ActivationType.ANIMAL.boundingBox = player.getBoundingBox().grow( animalActivationRange, 256, animalActivationRange ); ActivationType.MONSTER.boundingBox = player.getBoundingBox().grow( monsterActivationRange, 256, monsterActivationRange ); ActivationType.WATER.boundingBox = player.getBoundingBox().grow( waterActivationRange, 256, waterActivationRange ); // Paper + ActivationType.FLYING.boundingBox = player.getBoundingBox().grow( flyingActivationRange, 256, flyingActivationRange ); // Purpur int i = MathHelper.floor( maxBB.minX / 16.0D ); @@ -210,7 +218,7 @@ public class ActivationRange } if ( !( entity instanceof EntityArrow ) ) { - if ( !entity.onGround || !entity.passengers.isEmpty() || entity.isPassenger() ) + if ( (!entity.onGround && !isFlyingMob(entity)) || !entity.passengers.isEmpty() || entity.isPassenger() ) // Purpur { return true; } @@ -298,4 +306,10 @@ public class ActivationRange } return isActive; } + + // Purpur start + public static boolean isFlyingMob(Entity entity) { + return entity instanceof EntityAmbient || entity instanceof EntityBird || entity instanceof EntityFlying || entity instanceof EntityBlaze || entity instanceof EntityVex; + } + // Purpur end } diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java index 3ceeed3f99..9a3f566a93 100644 --- a/src/main/java/org/spigotmc/SpigotWorldConfig.java +++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java @@ -181,6 +181,7 @@ public class SpigotWorldConfig public int raiderActivationRange = 48; public int miscActivationRange = 16; public int waterActivationRange = 16; // Paper + public int flyingActivationRange = 128; // Purpur public boolean tickInactiveVillagers = true; private void activationRange() { @@ -189,6 +190,7 @@ public class SpigotWorldConfig raiderActivationRange = getInt( "entity-activation-range.raiders", raiderActivationRange ); miscActivationRange = getInt( "entity-activation-range.misc", miscActivationRange ); waterActivationRange = getInt( "entity-activation-range.water", waterActivationRange ); // Paper + flyingActivationRange = getInt( "entity-activation-range.flying", flyingActivationRange ); // Purpur tickInactiveVillagers = getBoolean( "entity-activation-range.tick-inactive-villagers", tickInactiveVillagers ); log( "Entity Activation Range: An " + animalActivationRange + " / Mo " + monsterActivationRange + " / Ra " + raiderActivationRange + " / Mi " + miscActivationRange + " / Tiv " + tickInactiveVillagers ); } -- 2.24.0