2019-04-05 05:27:37 +00:00
From 5ed6d63e100f8b293b5e2573bf2b6c5d595825bb Mon Sep 17 00:00:00 2001
2016-12-28 05:19:58 +00:00
From: Aikar <aikar@aikar.co>
2018-10-05 03:18:46 +00:00
Date: Fri, 13 May 2016 01:38:06 -0400
2016-12-28 05:19:58 +00:00
Subject: [PATCH] Activation Range Improvements
2018-10-05 03:18:46 +00:00
Optimizes performance of Activation Range
2016-12-28 05:19:58 +00:00
Fixes and adds new Immunities to improve gameplay behavior
2018-10-04 05:21:02 +00:00
Adds water Mobs to activation range config and nerfs fish
2018-08-31 22:56:57 +00:00
diff --git a/src/main/java/net/minecraft/server/BlockPosition.java b/src/main/java/net/minecraft/server/BlockPosition.java
2019-04-05 05:27:37 +00:00
index bc364ce37..80e13dfb2 100644
2018-08-31 22:56:57 +00:00
--- a/src/main/java/net/minecraft/server/BlockPosition.java
+++ b/src/main/java/net/minecraft/server/BlockPosition.java
2019-01-01 03:15:55 +00:00
@@ -387,6 +387,7 @@ public class BlockPosition extends BaseBlockPosition {
2018-08-31 22:56:57 +00:00
this.c = i;
}
+ public BlockPosition toBlockPosition() { return h(); } // Paper - OBFHELPER
public BlockPosition h() {
return new BlockPosition(this);
}
2018-10-26 03:26:29 +00:00
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
2019-04-05 05:27:37 +00:00
index a091f88bb..3e292c231 100644
2018-10-26 03:26:29 +00:00
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
2019-04-05 05:27:37 +00:00
@@ -592,6 +592,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
2018-10-26 03:26:29 +00:00
this.recalcPosition();
} else {
if (enummovetype == EnumMoveType.PISTON) {
+ this.activatedTick = MinecraftServer.currentTick + 20; // Paper
long i = this.world.getTime();
if (i != this.aM) {
2016-12-28 05:19:58 +00:00
diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java
2019-04-05 05:27:37 +00:00
index 20b7c2c6d..d659c57db 100644
2016-12-28 05:19:58 +00:00
--- a/src/main/java/net/minecraft/server/EntityCreature.java
+++ b/src/main/java/net/minecraft/server/EntityCreature.java
2018-08-04 21:03:53 +00:00
@@ -7,6 +7,7 @@ import org.bukkit.event.entity.EntityUnleashEvent;
2018-07-17 20:32:05 +00:00
public abstract class EntityCreature extends EntityInsentient {
2016-12-28 05:19:58 +00:00
2018-08-31 22:56:57 +00:00
public org.bukkit.craftbukkit.entity.CraftCreature getBukkitCreature() { return (org.bukkit.craftbukkit.entity.CraftCreature) super.getBukkitEntity(); } // Paper
2016-12-28 05:19:58 +00:00
+ public BlockPosition movingTarget = null; public BlockPosition getMovingTarget() { return movingTarget; } // Paper
private BlockPosition a;
private float b;
2018-07-17 20:32:05 +00:00
2018-11-09 03:43:38 +00:00
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
2019-04-05 05:27:37 +00:00
index e5322de97..c53082459 100644
2018-11-09 03:43:38 +00:00
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
2019-01-01 03:15:55 +00:00
@@ -105,6 +105,17 @@ public abstract class EntityInsentient extends EntityLiving {
2018-11-09 03:43:38 +00:00
return this.lookController;
}
+ // Paper start
+ @Override
+ public void inactiveTick() {
+ super.inactiveTick();
+ this.goalSelector.inactiveTick();
+ if (this.targetSelector.inactiveTick()) {
+ this.targetSelector.doTick();
+ }
+ }
+ // Paper end
+
public ControllerMove getControllerMove() {
return this.moveController;
}
2016-12-28 05:19:58 +00:00
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
2019-04-05 05:27:37 +00:00
index e8f2f11c4..c0ef0c51f 100644
2016-12-28 05:19:58 +00:00
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
2018-07-20 19:57:43 +00:00
@@ -74,7 +74,7 @@ public abstract class EntityLiving extends Entity {
2018-07-17 20:32:05 +00:00
public float aT;
public float aU;
2016-12-28 05:19:58 +00:00
public EntityHuman killer;
- protected int lastDamageByPlayerTime;
+ public int lastDamageByPlayerTime; // Paper - public
2018-12-17 05:18:06 +00:00
protected boolean killed;
2016-12-28 05:19:58 +00:00
protected int ticksFarFromPlayer;
2018-07-17 20:32:05 +00:00
protected float aZ;
2016-12-28 05:19:58 +00:00
diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java
2019-04-05 05:27:37 +00:00
index b19bd2b99..5e1976871 100644
2016-12-28 05:19:58 +00:00
--- a/src/main/java/net/minecraft/server/EntityLlama.java
+++ b/src/main/java/net/minecraft/server/EntityLlama.java
2019-01-01 03:15:55 +00:00
@@ -363,6 +363,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
2018-07-17 20:32:05 +00:00
return this.bR != null;
2016-12-28 05:19:58 +00:00
}
2018-08-26 18:11:49 +00:00
+ public boolean inCaravan() { return this.em(); } // Paper - OBFHELPER
public boolean em() {
2018-07-17 20:32:05 +00:00
return this.bQ != null;
2016-12-28 05:19:58 +00:00
}
diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java
2019-04-05 05:27:37 +00:00
index a146a8b45..a19853463 100644
2016-12-28 05:19:58 +00:00
--- a/src/main/java/net/minecraft/server/PathfinderGoal.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoal.java
2019-01-01 03:15:55 +00:00
@@ -18,7 +18,10 @@ public abstract class PathfinderGoal {
public void c() {}
2016-12-28 05:19:58 +00:00
2019-01-01 03:15:55 +00:00
- public void d() {}
+ public void d() {
2016-12-28 05:19:58 +00:00
+ onTaskReset(); // Paper
2019-01-01 03:15:55 +00:00
+ }
2016-12-28 05:19:58 +00:00
+ public void onTaskReset() {} // Paper
2019-01-01 03:15:55 +00:00
public void e() {}
2016-12-28 05:19:58 +00:00
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java
2019-04-05 05:27:37 +00:00
index d5c08aa7c..756d63239 100644
2016-12-28 05:19:58 +00:00
--- a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java
2019-01-01 03:15:55 +00:00
@@ -2,12 +2,12 @@ package net.minecraft.server;
2016-12-28 05:19:58 +00:00
public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
2019-01-01 03:15:55 +00:00
2018-07-17 20:32:05 +00:00
- private final EntityCreature f;
2019-01-01 03:15:55 +00:00
+ private final EntityCreature f;public EntityCreature getEntity() { return f; } // Paper - OBFHELPER
2018-07-17 20:32:05 +00:00
public double a;
protected int b;
protected int c;
private int g;
- protected BlockPosition d;
+ protected BlockPosition d; public BlockPosition getTarget() { return d; } public void setTarget(BlockPosition pos) { this.d = pos; getEntity().movingTarget = pos != BlockPosition.ZERO ? pos : null; } // Paper - OBFHELPER
private boolean h;
private final int i;
private final int j;
2019-01-01 03:15:55 +00:00
@@ -16,6 +16,13 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
public PathfinderGoalGotoTarget(EntityCreature entitycreature, double d0, int i) {
this(entitycreature, d0, i, 1);
2018-08-31 22:56:57 +00:00
}
2018-07-17 20:32:05 +00:00
+ // Paper start - activation range improvements
2016-12-28 05:19:58 +00:00
+ @Override
+ public void onTaskReset() {
+ super.onTaskReset();
+ setTarget(BlockPosition.ZERO);
+ }
+ // Paper end
2018-08-31 22:56:57 +00:00
2019-01-01 03:15:55 +00:00
public PathfinderGoalGotoTarget(EntityCreature entitycreature, double d0, int i, int j) {
2018-08-31 22:56:57 +00:00
this.d = BlockPosition.ZERO;
2019-01-01 03:15:55 +00:00
@@ -94,6 +101,7 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
blockposition_mutableblockposition.g(blockposition).d(i1, k - 1, j1);
if (this.f.f((BlockPosition) blockposition_mutableblockposition) && this.a(this.f.world, blockposition_mutableblockposition)) {
this.d = blockposition_mutableblockposition;
+ setTarget(blockposition_mutableblockposition.toBlockPosition()); // Paper
2016-12-28 05:19:58 +00:00
return true;
}
}
2018-11-09 03:43:38 +00:00
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
2019-04-05 05:27:37 +00:00
index f3df91181..3e2f9c749 100644
2018-11-09 03:43:38 +00:00
--- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
2019-01-01 03:15:55 +00:00
@@ -11,10 +11,10 @@ public class PathfinderGoalSelector {
2018-11-09 03:43:38 +00:00
private static final Logger a = LogManager.getLogger();
private final Set<PathfinderGoalSelector.PathfinderGoalSelectorItem> b = Sets.newLinkedHashSet();
- private final Set<PathfinderGoalSelector.PathfinderGoalSelectorItem> c = Sets.newLinkedHashSet();
+ private final Set<PathfinderGoalSelector.PathfinderGoalSelectorItem> c = Sets.newLinkedHashSet();private Set<PathfinderGoalSelector.PathfinderGoalSelectorItem> getExecutingTasks() { return c; }// Paper - OBFHELPER
private final MethodProfiler d;
- private int e;
- private int f = 3;
+ private int e;private int getCurRate() { return e; } private void incRate() { this.e++; }// Paper - OBFHELPER
+ private int f = 3;private int getTickRate() { return f; } // Paper - OBFHELPER
private int g;
public PathfinderGoalSelector(MethodProfiler methodprofiler) {
2019-01-01 03:15:55 +00:00
@@ -25,6 +25,20 @@ public class PathfinderGoalSelector {
2018-11-09 03:43:38 +00:00
this.b.add(new PathfinderGoalSelector.PathfinderGoalSelectorItem(i, pathfindergoal));
}
+ // Paper start
+ public boolean inactiveTick() {
+ if (getCurRate() % getTickRate() != 0) {
+ incRate();
+ return false;
+ } else {
+ return true;
+ }
+ }
+ public boolean hasTasks() {
+ return !getExecutingTasks().isEmpty();
+ }
+ // Paper end
+
public void a(PathfinderGoal pathfindergoal) {
Iterator iterator = this.b.iterator();
2016-12-28 05:19:58 +00:00
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
2019-04-05 05:27:37 +00:00
index 09df00e94..d08ef3fe1 100644
2016-12-28 05:19:58 +00:00
--- a/src/main/java/org/spigotmc/ActivationRange.java
+++ b/src/main/java/org/spigotmc/ActivationRange.java
2018-10-05 03:18:46 +00:00
@@ -2,6 +2,8 @@ package org.spigotmc;
import java.util.List;
import java.util.Set;
+
+import co.aikar.timings.MinecraftTimings;
import net.minecraft.server.AxisAlignedBB;
import net.minecraft.server.Chunk;
import net.minecraft.server.Entity;
@@ -13,25 +15,29 @@ import net.minecraft.server.EntityCreature;
2018-10-04 05:21:02 +00:00
import net.minecraft.server.EntityCreeper;
import net.minecraft.server.EntityEnderCrystal;
import net.minecraft.server.EntityEnderDragon;
2018-10-05 03:18:46 +00:00
-import net.minecraft.server.EntityFallingBlock; // Paper
+import net.minecraft.server.EntityFallingBlock;
2018-10-04 05:21:02 +00:00
import net.minecraft.server.EntityFireball;
2016-12-28 05:19:58 +00:00
import net.minecraft.server.EntityFireworks;
2018-10-04 05:21:02 +00:00
+import net.minecraft.server.EntityFish;
2016-12-28 05:19:58 +00:00
import net.minecraft.server.EntityHuman;
2018-10-05 03:18:46 +00:00
+import net.minecraft.server.EntityInsentient;
2016-12-28 05:19:58 +00:00
import net.minecraft.server.EntityLiving;
+import net.minecraft.server.EntityLlama;
import net.minecraft.server.EntityMonster;
import net.minecraft.server.EntityProjectile;
import net.minecraft.server.EntitySheep;
2018-10-05 03:18:46 +00:00
-import net.minecraft.server.EntitySlice;
import net.minecraft.server.EntitySlime;
2018-10-04 05:21:02 +00:00
import net.minecraft.server.EntityTNTPrimed;
import net.minecraft.server.EntityThrownTrident;
import net.minecraft.server.EntityVillager;
+import net.minecraft.server.EntityWaterAnimal;
import net.minecraft.server.EntityWeather;
import net.minecraft.server.EntityWither;
2018-10-05 03:18:46 +00:00
+import net.minecraft.server.MCUtil;
import net.minecraft.server.MathHelper;
import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.NavigationGuardian;
import net.minecraft.server.World;
-import co.aikar.timings.MinecraftTimings;
public class ActivationRange
{
@@ -39,6 +45,7 @@ public class ActivationRange
2018-10-04 05:21:02 +00:00
static AxisAlignedBB maxBB = new AxisAlignedBB( 0, 0, 0, 0, 0, 0 );
static AxisAlignedBB miscBB = new AxisAlignedBB( 0, 0, 0, 0, 0, 0 );
static AxisAlignedBB animalBB = new AxisAlignedBB( 0, 0, 0, 0, 0, 0 );
+ static AxisAlignedBB waterBB = new AxisAlignedBB( 0, 0, 0, 0, 0, 0 ); // Paper
static AxisAlignedBB monsterBB = new AxisAlignedBB( 0, 0, 0, 0, 0, 0 );
/**
2018-10-05 03:18:46 +00:00
@@ -50,6 +57,7 @@ public class ActivationRange
2018-10-04 05:21:02 +00:00
*/
public static byte initializeEntityActivationType(Entity entity)
{
+ if (entity instanceof EntityWaterAnimal) { return 4; } // Paper
if ( entity instanceof EntityMonster || entity instanceof EntitySlime )
{
return 1; // Monster
2018-10-05 03:18:46 +00:00
@@ -74,6 +82,7 @@ public class ActivationRange
2018-10-04 05:21:02 +00:00
if ( ( entity.activationType == 3 && config.miscActivationRange == 0 )
|| ( entity.activationType == 2 && config.animalActivationRange == 0 )
|| ( entity.activationType == 1 && config.monsterActivationRange == 0 )
+ || ( entity.activationType == 4 && config.waterActivationRange == 0 ) // Paper
|| entity instanceof EntityHuman
|| entity instanceof EntityProjectile
|| entity instanceof EntityEnderDragon
2018-10-05 03:18:46 +00:00
@@ -105,11 +114,13 @@ public class ActivationRange
2018-10-04 05:21:02 +00:00
final int miscActivationRange = world.spigotConfig.miscActivationRange;
final int animalActivationRange = world.spigotConfig.animalActivationRange;
final int monsterActivationRange = world.spigotConfig.monsterActivationRange;
+ final int waterActivationRange = world.spigotConfig.waterActivationRange; // Paper
int maxRange = Math.max( monsterActivationRange, animalActivationRange );
maxRange = Math.max( maxRange, miscActivationRange );
2018-10-05 03:18:46 +00:00
//maxRange = Math.min( ( world.spigotConfig.viewDistance << 4 ) - 8, maxRange ); Paper - Use player view distance API below instead
+ Chunk chunk; // Paper
for ( EntityHuman player : world.players )
{
int playerMaxRange = maxRange = Math.min( ( player.getViewDistance() << 4 ) - 8, maxRange ); // Paper - Use player view distance API
@@ -117,6 +128,7 @@ public class ActivationRange
2018-10-04 05:21:02 +00:00
maxBB = player.getBoundingBox().grow( playerMaxRange, 256, playerMaxRange ); // Paper - Use player view distance API
miscBB = player.getBoundingBox().grow( miscActivationRange, 256, miscActivationRange );
animalBB = player.getBoundingBox().grow( animalActivationRange, 256, animalActivationRange );
+ waterBB = player.getBoundingBox().grow( waterActivationRange, 256, waterActivationRange ); // Paper
monsterBB = player.getBoundingBox().grow( monsterActivationRange, 256, monsterActivationRange );
2018-10-22 23:16:21 +00:00
int i = MathHelper.floor( maxBB.minX / 16.0D );
2018-10-05 03:18:46 +00:00
@@ -128,9 +140,9 @@ public class ActivationRange
{
for ( int j1 = k; j1 <= l; ++j1 )
{
- if ( world.getWorld().isChunkLoaded( i1, j1 ) )
+ if ( (chunk = world.getChunkIfLoaded(i1, j1 )) != null ) // Paper
{
- activateChunkEntities( world.getChunkAt( i1, j1 ) );
+ activateChunkEntities( chunk ); // Paper
}
}
}
@@ -170,6 +182,14 @@ public class ActivationRange
2018-10-04 05:21:02 +00:00
entity.activatedTick = MinecraftServer.currentTick;
}
break;
+ // Paper start
+ case 4:
+ if ( waterBB.c( entity.getBoundingBox() ) )
+ {
+ entity.activatedTick = MinecraftServer.currentTick;
+ }
+ break;
+ // Paper end
case 3:
default:
if ( miscBB.c( entity.getBoundingBox() ) )
2018-10-05 03:18:46 +00:00
@@ -191,11 +211,17 @@ public class ActivationRange
2018-10-04 05:21:02 +00:00
*/
public static boolean checkEntityImmunities(Entity entity)
{
2018-10-05 03:18:46 +00:00
- // quick checks.
- if ( entity.inWater || entity.fireTicks > 0 )
- {
2018-10-04 05:21:02 +00:00
+ // Paper start - optimize Water cases
+ if (entity instanceof EntityFish) {
+ return false;
+ }
2018-10-06 05:17:32 +00:00
+ if (entity.inWater && (!(entity instanceof EntityInsentient) || !(((EntityInsentient) entity).getNavigation() instanceof NavigationGuardian))) {
2018-10-04 05:21:02 +00:00
return true;
}
2018-10-05 03:18:46 +00:00
+ if (entity.fireTicks > 0) {
+ return true;
+ }
+ // Paper end
if ( !( entity instanceof EntityArrow ) )
{
if ( !entity.onGround || !entity.passengers.isEmpty() || entity.isPassenger() )
@@ -210,18 +236,29 @@ public class ActivationRange
2016-12-28 05:19:58 +00:00
if ( entity instanceof EntityLiving )
{
EntityLiving living = (EntityLiving) entity;
- if ( /*TODO: Missed mapping? living.attackTicks > 0 || */ living.hurtTicks > 0 || living.effects.size() > 0 )
+ if ( living.lastDamageByPlayerTime > 0 || living.hurtTicks > 0 || living.effects.size() > 0 ) // Paper
{
return true;
}
- if ( entity instanceof EntityCreature && ( (EntityCreature) entity ).getGoalTarget() != null )
+ if ( entity instanceof EntityCreature )
2017-06-08 14:16:51 +00:00
{
- return true;
2016-12-28 05:19:58 +00:00
+ // Paper start
+ EntityCreature creature = (EntityCreature) entity;
+ if (creature.getGoalTarget() != null || creature.getMovingTarget() != null) {
+ return true;
+ }
+ // Paper end
2017-06-08 14:16:51 +00:00
}
if ( entity instanceof EntityVillager && ( (EntityVillager) entity ).isInLove() )
2016-12-28 05:19:58 +00:00
{
return true;
}
+ // Paper start
+ if ( entity instanceof EntityLlama && ( (EntityLlama ) entity ).inCaravan() )
2017-06-08 14:16:51 +00:00
+ {
+ return true;
+ }
2016-12-28 05:19:58 +00:00
+ // Paper end
if ( entity instanceof EntityAnimal )
{
EntityAnimal animal = (EntityAnimal) entity;
2018-11-09 03:43:38 +00:00
@@ -268,16 +305,20 @@ public class ActivationRange
entity.activatedTick = MinecraftServer.currentTick + 20;
}
isActive = true;
+ // Paper start
+ } else if (entity instanceof EntityInsentient && ((EntityInsentient) entity).targetSelector.hasTasks()) {
+ isActive = true;
}
+ // Paper end
// Add a little performance juice to active entities. Skip 1/4 if not immune.
- } else if ( !entity.defaultActivationState && entity.ticksLived % 4 == 0 && !checkEntityImmunities( entity ) )
+ } else if ( !entity.defaultActivationState && entity.ticksLived % 4 == 0 && !(entity instanceof EntityInsentient && ((EntityInsentient) entity).targetSelector.hasTasks()) && !checkEntityImmunities( entity ) ) // Paper - add targetSelector.hasTasks
2018-07-12 20:42:56 +00:00
{
isActive = false;
}
- int x = MathHelper.floor( entity.locX );
- int z = MathHelper.floor( entity.locZ );
+ //int x = MathHelper.floor( entity.locX ); // Paper
+ //int z = MathHelper.floor( entity.locZ ); // Paper
2018-07-04 07:55:24 +00:00
// Make sure not on edge of unloaded chunk
- Chunk chunk = entity.world.getChunkIfLoaded( x >> 4, z >> 4 );
2018-07-12 20:42:56 +00:00
+ Chunk chunk = entity.getChunkAtLocation(); // Paper
2018-07-04 07:55:24 +00:00
if ( isActive && !( chunk != null && chunk.areNeighborsLoaded( 1 ) ) )
{
isActive = false;
2018-10-04 05:21:02 +00:00
diff --git a/src/main/java/org/spigotmc/SpigotWorldConfig.java b/src/main/java/org/spigotmc/SpigotWorldConfig.java
2019-04-05 05:27:37 +00:00
index d3c2abc39..1d222eaff 100644
2018-10-04 05:21:02 +00:00
--- a/src/main/java/org/spigotmc/SpigotWorldConfig.java
+++ b/src/main/java/org/spigotmc/SpigotWorldConfig.java
2019-01-01 03:15:55 +00:00
@@ -150,12 +150,14 @@ public class SpigotWorldConfig
2018-10-04 05:21:02 +00:00
public int animalActivationRange = 32;
public int monsterActivationRange = 32;
public int miscActivationRange = 16;
+ public int waterActivationRange = 16; // Paper
public boolean tickInactiveVillagers = true;
private void activationRange()
{
animalActivationRange = getInt( "entity-activation-range.animals", animalActivationRange );
monsterActivationRange = getInt( "entity-activation-range.monsters", monsterActivationRange );
miscActivationRange = getInt( "entity-activation-range.misc", miscActivationRange );
+ waterActivationRange = getInt( "entity-activation-range.water", waterActivationRange ); // Paper
tickInactiveVillagers = getBoolean( "entity-activation-range.tick-inactive-villagers", tickInactiveVillagers );
log( "Entity Activation Range: An " + animalActivationRange + " / Mo " + monsterActivationRange + " / Mi " + miscActivationRange + " / Tiv " + tickInactiveVillagers );
}
2016-12-28 05:19:58 +00:00
--
2019-04-05 05:27:37 +00:00
2.21.0
2016-12-28 05:19:58 +00:00