aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/unapplied/server/0691-Don-t-tick-markers.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/unapplied/server/0691-Don-t-tick-markers.patch')
-rw-r--r--patches/unapplied/server/0691-Don-t-tick-markers.patch36
1 files changed, 36 insertions, 0 deletions
diff --git a/patches/unapplied/server/0691-Don-t-tick-markers.patch b/patches/unapplied/server/0691-Don-t-tick-markers.patch
new file mode 100644
index 0000000000..81c5c7ea5c
--- /dev/null
+++ b/patches/unapplied/server/0691-Don-t-tick-markers.patch
@@ -0,0 +1,36 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Noah van der Aa <[email protected]>
+Date: Fri, 7 Jan 2022 11:58:26 +0100
+Subject: [PATCH] Don't tick markers
+
+Fixes https://github.com/PaperMC/Paper/issues/7276 and https://github.com/PaperMC/Paper/issues/8118
+by using a config option that, when set to false, does not add markers to the entity
+tick list at all and ignores 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. When the config option is set to true, markers are ticked as normal.
+
+diff --git a/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java b/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java
+index 9d9d133e0d973ecda1ef1efc872a51ee10463fd1..f671b74e4179fc29bc600b52e456ba9f78d8bbd6 100644
+--- a/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java
++++ b/src/main/java/io/papermc/paper/command/subcommands/EntityCommand.java
+@@ -109,7 +109,7 @@ public final class EntityCommand implements PaperSubcommand {
+ ChunkPos chunk = e.chunkPosition();
+ info.left++;
+ info.right.put(chunk, info.right.getOrDefault(chunk, 0) + 1);
+- if (!world.isPositionEntityTicking(e.blockPosition())) {
++ if (!world.isPositionEntityTicking(e.blockPosition()) || (e instanceof net.minecraft.world.entity.Marker && !world.paperConfig().entities.markers.tick)) { // Paper - Configurable marker ticking
+ nonEntityTicking.merge(key, 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 4d53089f3fc6c76b8767efcae44522d710d406a7..3e0563ae33a3ed8379939f92e72e9b9e0ea8ae3a 100644
+--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
++++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
+@@ -2224,6 +2224,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
+ }
+
+ public void onTickingStart(Entity entity) {
++ if (entity instanceof net.minecraft.world.entity.Marker && !paperConfig().entities.markers.tick) return; // Paper - Configurable marker ticking
+ ServerLevel.this.entityTickList.add(entity);
+ }
+