From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Paul Sauve Date: Sat, 13 Mar 2021 10:40:22 -0600 Subject: [PATCH] Reduce entity chunk ticking checks from 3 to 1 diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index 55c1aa26cbdee13ace1109215a1df087bf3503e9..f4eb878f9a66fd3404ddde5a14924bb419a351db 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -968,11 +968,12 @@ public class WorldServer extends World implements GeneratorAccessSeed { // CraftBukkit end */ gameprofilerfiller.enter("checkDespawn"); + boolean entityTickingChunk = false; if (!entity.dead) entityTickingChunk = this.getChunkProvider().isInEntityTickingChunk(entity); // Airplane - check once, chunks won't unload ticking entities if (!entity.dead) { entity.checkDespawn(); // Tuinity start - optimise notify() if (entity.inChunk && entity.valid) { - if (this.getChunkProvider().isInEntityTickingChunk(entity)) { + if (entityTickingChunk) { // Airplane - reuse this.updateNavigatorsInRegion(entity); } } else { @@ -998,7 +999,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { */ boolean doMidTick = false; // usually there's a returns in the catch, so treat it like that try { - this.entityJoinedWorld(entity); + this.entityJoinedWorld(entity, entityTickingChunk); // Airplane - reuse doMidTick = true; } catch (Throwable throwable) { if (throwable instanceof ThreadDeath) throw throwable; // Paper @@ -1023,7 +1024,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { this.entitiesById.remove(entity.getId()); // Tuinity this.unregisterEntity(entity); } else if (entity.inChunk && entity.valid) { // Tuinity start - optimise notify() - if (this.getChunkProvider().isInEntityTickingChunk(entity)) { + if (entityTickingChunk) { // Airplane - reuse this.updateNavigatorsInRegion(entity); } } else { @@ -1324,7 +1325,9 @@ public class WorldServer extends World implements GeneratorAccessSeed { } // Tuinity end - log detailed entity tick information - public void entityJoinedWorld(Entity entity) { + // Airplane start - reuse check for in entity ticking chunk + public void entityJoinedWorld(Entity entity) { entityJoinedWorld(entity, this.getChunkProvider().isInEntityTickingChunk(entity)); } + public void entityJoinedWorld(Entity entity, boolean entityTickingChunk) { // Airplane end // Tuinity start - log detailed entity tick information com.tuinity.tuinity.util.TickThread.ensureTickThread("Cannot tick an entity off-main"); try { @@ -1332,7 +1335,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { currentlyTickingEntity.lazySet(entity); } // Tuinity end - log detailed entity tick information - if (!(entity instanceof EntityHuman) && !this.getChunkProvider().a(entity)) { + if (!(entity instanceof EntityHuman) && !entityTickingChunk) { // Airplane - reuse this.chunkCheck(entity); } else { ++TimingHistory.entityTicks; // Paper - timings