From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Samsuik Date: Tue, 18 Jun 2024 13:34:55 +0100 Subject: [PATCH] Entity tracking range modifier diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java index 274b3a5e1d4606ed47ba7e3e4ee369d607cea8a1..49f8afdaa91e89b899b9fcce1ef9a972ec141b8b 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java @@ -1326,7 +1326,10 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider double vec3d_dz = player.getZ() - this.entity.getZ(); // Paper end - remove allocation of Vec3D here int i = ChunkMap.this.getPlayerViewDistance(player); - double d0 = (double) Math.min(this.getEffectiveRange(), i * 16); + // Sakura start - entity tracking range modifier + double visibleRange = (double) this.getEffectiveRange() * player.trackingRangeModifier; + double d0 = (double) Math.min(visibleRange, i * 16); + // Sakura end - entity tracking range modifier double d1 = vec3d_dx * vec3d_dx + vec3d_dz * vec3d_dz; // Paper double d2 = d0 * d0; // Paper start - Configurable entity tracking range by Y diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java index 5266e37ade8851a8b73a4ae12ecd67a8d0c6e09d..c572b1ab6f3763738747560296a604d65d05c12c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -358,6 +358,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple } // Paper end - rewrite chunk system public final me.samsuik.sakura.player.visibility.PlayerVisibilitySettings visibilitySettings = new me.samsuik.sakura.player.visibility.PlayerVisibilitySettings(); // Sakura - client visibility settings + public double trackingRangeModifier = 1.0; // Sakura - entity tracking range modifier public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) { super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java index d00fcfd5219a532204533f159d68524b2d33ccc7..4d0027a08d11fc838aee3cb318b6ea9182b4183c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -3024,6 +3024,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return (this.getHandle().requestedViewDistance() == 0) ? Bukkit.getViewDistance() : this.getHandle().requestedViewDistance(); } + // Sakura start - entity tracking range modifier + @Override + public double getTrackingRangeModifier() { + return this.getHandle().trackingRangeModifier * 100.0; + } + + @Override + public void setTrackingRangeModifier(double mod) { + this.getHandle().trackingRangeModifier = mod / 100.0; + } + // Sakura end - entity tracking range modifier + // Paper start @Override public java.util.Locale locale() {