Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Newwind <[email protected]>
Date: Fri, 28 Dec 2025 19:17:32 +0200
Subject: [PATCH] Skip entity tracking out of render range


diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
index ab88931..38985c1 100644
--- a/net/minecraft/server/level/ChunkMap.java
+++ b/net/minecraft/server/level/ChunkMap.java
@@ -1045,6 +1045,9 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
private void newTrackerTick() {
final ca.spottedleaf.moonrise.patches.chunk_system.level.entity.server.ServerEntityLookup entityLookup = (ca.spottedleaf.moonrise.patches.chunk_system.level.entity.server.ServerEntityLookup)((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getEntityLookup();;

+ // Client entity view distance scale heuristic copied from LevelRenderer.extractVisibleEntities()
+ Entity.setViewScale(Mth.clamp(serverViewDistance / 8.0, 1.0, 2.5) * level.paperConfig().misc.skipTrackingOutOfRenderRangeEntitiesClientDistanceScaling);
+
final ca.spottedleaf.moonrise.common.list.ReferenceList<net.minecraft.world.entity.Entity> trackerEntities = entityLookup.trackerEntities;
final Entity[] trackerEntitiesRaw = trackerEntities.getRawDataUnchecked();
for (int i = 0, len = trackerEntities.size(); i < len; ++i) {
@@ -1381,6 +1384,13 @@ public class ChunkMap extends SimpleRegionStorage implements ChunkHolder.PlayerP
if (flag && !player.getBukkitEntity().canSee(this.entity.getBukkitEntity())) { // Paper - only consider hits
flag = false;
}
+ if (flag && level.paperConfig().misc.skipTrackingOutOfRenderRangeEntities) {
+ double vec3_dy = player.getY() - this.entity.getY();
+ double sqrDistance = d1 + (vec3_dy * vec3_dy);
+ if (!this.entity.shouldRenderAtSqrDistance(sqrDistance)) {
+ flag = false;
+ }
+ }
// CraftBukkit end
if (flag) {
if (this.seenBy.add(player.connection)) {
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,8 @@ public class Misc extends ConfigurationPart {
public boolean disableRelativeProjectileVelocity = false;
public boolean legacyEnderPearlBehavior = false;
public boolean allowRemoteEnderDragonRespawning = false;
public boolean skipTrackingOutOfRenderRangeEntities = false;
public float skipTrackingOutOfRenderRangeEntitiesClientDistanceScaling = 1.0f;

public enum RedstoneImplementation {
VANILLA, EIGENCRAFT, ALTERNATE_CURRENT
Expand Down
Loading