From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Noah van der Aa Date: Fri, 7 Jan 2022 11:58:26 +0100 Subject: [PATCH] Don't tick markers Fixes https://github.com/PaperMC/Paper/issues/7276 by not adding markers to the entity tick list at all and ignoring them in Spigot's activation range checks. The entity tick list is only used in the tick and tickPassenger methods, so we can safely not add the markers to it. diff --git a/src/main/java/com/destroystokyo/paper/PaperCommand.java b/src/main/java/com/destroystokyo/paper/PaperCommand.java index f7e223ddf21a90407f61351b89a98ac823932af7..3a8432f21e4520282f052d6d801a35b92bc82de0 100644 --- a/src/main/java/com/destroystokyo/paper/PaperCommand.java +++ b/src/main/java/com/destroystokyo/paper/PaperCommand.java @@ -629,7 +629,7 @@ public class PaperCommand extends Command { ChunkPos chunk = e.chunkPosition(); info.left++; info.right.put(chunk, info.right.getOrDefault(chunk, 0) + 1); - if (!chunkProviderServer.isPositionTicking(e)) { + if (!chunkProviderServer.isPositionTicking(e) || e instanceof net.minecraft.world.entity.Marker) { // Markers aren't ticked. nonEntityTicking.merge(key, Integer.valueOf(1), Integer::sum); } }); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java index e3ac89534094ad4eab80496d2a7b92a4229c70ca..2b4a778754fab7145068d548ddc716e5a90f3290 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -2492,6 +2492,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } public void onTickingStart(Entity entity) { + if (entity instanceof net.minecraft.world.entity.Marker) return; // Paper - Don't tick markers ServerLevel.this.entityTickList.add(entity); ServerLevel.this.entityManager.addNavigatorsIfPathingToRegion(entity); // Paper - optimise notify } diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java index 5bffc9a0f6ef9d54abb359565d07509b177c2b82..1a1a1f4d0ac025daccc2d3f84faf6592819f4d5c 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java @@ -211,7 +211,7 @@ public class ActivationRange // Paper end // Paper start - java.util.List entities = world.getEntities((Entity)null, maxBB, null); + java.util.List entities = world.getEntities((Entity)null, maxBB, (e) -> !(e instanceof net.minecraft.world.entity.Marker)); // Don't tick markers for (int i = 0; i < entities.size(); i++) { Entity entity = entities.get(i); ActivationRange.activateEntity(entity);