Skip to content

Commit 7c952b7

Browse files
Add per-entity tracking range overrides
1 parent b2d2b08 commit 7c952b7

7 files changed

Lines changed: 88 additions & 0 deletions
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: MrPowerGamerBR <git@mrpowergamerbr.com>
3+
Date: Fri, 17 Jul 2026 18:43:56 -0300
4+
Subject: [PATCH] Add per-entity tracking range overrides
5+
6+
7+
diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java
8+
index e24744cc523f1ce3c7c8e27b14d3337a3f17f4bb..9c196d19f7dc72801b8821190a3b7e0b87c4d46c 100644
9+
--- a/src/main/java/org/bukkit/entity/Entity.java
10+
+++ b/src/main/java/org/bukkit/entity/Entity.java
11+
@@ -1332,4 +1332,21 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
12+
*/
13+
void broadcastHurtAnimation(@NotNull java.util.Collection<Player> players);
14+
// Paper end - broadcast hurt animation
15+
+
16+
+ // SparklyPaper start - per-entity tracking range override
17+
+
18+
+ /**
19+
+ * Sets a tracking range override for this entity.
20+
+ *
21+
+ * @param trackingRange the new tracking range override, or -1 to set to the default.
22+
+ */
23+
+ void setTrackingRangeOverride(int trackingRange);
24+
+
25+
+ /**
26+
+ * Gets the current tracking range override for this entity.
27+
+ *
28+
+ * @return trackingRange the currently set tracking range override. If -1, the default tracking range is being used.
29+
+ */
30+
+ int getTrackingRangeOverride();
31+
+ // SparklyPaper end
32+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: MrPowerGamerBR <git@mrpowergamerbr.com>
3+
Date: Fri, 17 Jul 2026 18:38:10 -0300
4+
Subject: [PATCH] Add per-entity tracking range overrides
5+
6+
7+
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
8+
index b42bf0ecd381c07ff7c42dea3970f598ec426e98..517eb3ea1429f38ab800a7a08ca51949609a617d 100644
9+
--- a/net/minecraft/server/level/ChunkMap.java
10+
+++ b/net/minecraft/server/level/ChunkMap.java
11+
@@ -994,6 +994,7 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
12+
EntityType<?> type = entity.getType();
13+
int range = type.clientTrackingRange() * 16;
14+
range = org.spigotmc.TrackingRange.getEntityTrackingRange(entity, range); // Spigot
15+
+ if (entity.trackingRangeOverride != -1) range = entity.trackingRangeOverride; // SparklyPaper - per-entity tracking range override
16+
if (range != 0) {
17+
int updateInterval = type.updateInterval();
18+
if (this.entityMap.containsKey(entity.getId())) {
19+
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
20+
index 27632a73dfac379b3c646ef04413caff6519ccbe..c72d07d3b111959226bba8e6a24274a12d17d157 100644
21+
--- a/net/minecraft/world/entity/Entity.java
22+
+++ b/net/minecraft/world/entity/Entity.java
23+
@@ -382,6 +382,7 @@ public abstract class Entity
24+
private final int despawnTime; // Paper - entity despawn time limit
25+
public int totalEntityAge; // Paper - age-like counter for all entities
26+
public final io.papermc.paper.entity.activation.ActivationType activationType = io.papermc.paper.entity.activation.ActivationType.activationTypeFor(this); // Paper - EAR 2/tracking ranges
27+
+ public int trackingRangeOverride = -1; // SparklyPaper - per-entity tracking range override
28+
// Paper start - EAR 2
29+
public final boolean defaultActivationState;
30+
public long activatedTick = Integer.MIN_VALUE;

sparklypaper-server/minecraft-patches/features/0004-Per-player-statistic-tracking-opt-out.patch renamed to sparklypaper-server/minecraft-patches/features/0003-Per-player-statistic-tracking-opt-out.patch

File renamed without changes.

sparklypaper-server/minecraft-patches/features/0002-Parallel-World-Ticking.patch renamed to sparklypaper-server/minecraft-patches/features/0004-Parallel-World-Ticking.patch

File renamed without changes.

sparklypaper-server/minecraft-patches/features/0003-Add-WorldTickStartEvent-and-WorldTickEndEvent.patch renamed to sparklypaper-server/minecraft-patches/features/0005-Add-WorldTickStartEvent-and-WorldTickEndEvent.patch

File renamed without changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: MrPowerGamerBR <git@mrpowergamerbr.com>
3+
Date: Fri, 17 Jul 2026 18:44:34 -0300
4+
Subject: [PATCH] Add per-entity tracking range overrides
5+
6+
7+
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
8+
index e45f9514e4b593111e827a2fc083381aa8072f67..2cc75ca3367b50d0fcd1bbab0084b7d24fe3dce8 100644
9+
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
10+
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
11+
@@ -1339,4 +1339,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
12+
return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null;
13+
}
14+
15+
+ // SparklyPaper start - per-entity tracking range override
16+
+ @Override
17+
+ public int getTrackingRangeOverride() {
18+
+ return entity.trackingRangeOverride;
19+
+ }
20+
+
21+
+ @Override
22+
+ public void setTrackingRangeOverride(int trackingRange) {
23+
+ this.entity.trackingRangeOverride = trackingRange;
24+
+ }
25+
+ // SparklyPaper end
26+
}

sparklypaper-server/paper-patches/features/0002-Parallel-World-Ticking.patch renamed to sparklypaper-server/paper-patches/features/0003-Parallel-World-Ticking.patch

File renamed without changes.

0 commit comments

Comments
 (0)