1281f4f552
This has been done to ensure that the shifts are not used until the world object is being constructed, which is before the global configuration is initialised. There also isn't any reason for these shifts to be global anyways.
56 Zeilen
3.4 KiB
Diff
56 Zeilen
3.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Noah van der Aa <ndvdaa@gmail.com>
|
|
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 ff99336e0b8131ae161cfa5c4fc83c6905e3dbc8..5f43aedc6596e2b1ac7af9711515714752c262e3 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 (!chunkProviderServer.isPositionTicking(e)) {
|
|
+ if (!chunkProviderServer.isPositionTicking(e) || (e instanceof net.minecraft.world.entity.Marker && !world.paperConfig().entities.markers.tick)) { // 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 0d18158174966245b679954f5a9268c6aac4be32..9e0fb3a13cd4ae0142e3e63995b7eac61e48eea6 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -2606,6 +2606,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
|
index f76b3f410fcc756bb34a5fac21b1d7088ac7a9ce..59103744ac6beeb12719fdefcda54eeff498229e 100644
|
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
|
@@ -213,8 +213,14 @@ public class ActivationRange
|
|
|
|
// Paper start
|
|
java.util.List<Entity> entities = world.getEntities((Entity)null, ActivationRange.maxBB, null);
|
|
+ boolean tickMarkers = world.paperConfig().entities.markers.tick; // Paper - configurable marker ticking
|
|
for (int i = 0; i < entities.size(); i++) {
|
|
Entity entity = entities.get(i);
|
|
+ // Paper start - configurable marker ticking
|
|
+ if (!tickMarkers && entity instanceof net.minecraft.world.entity.Marker) {
|
|
+ continue;
|
|
+ }
|
|
+ // Paper end - configurable marker ticking
|
|
ActivationRange.activateEntity(entity);
|
|
}
|
|
// Paper end
|