From c34bbda437bf0cd2e918abc8205fd20c6667a767 Mon Sep 17 00:00:00 2001 From: Samsuik Date: Tue, 18 Jun 2024 14:01:37 +0100 Subject: [PATCH] Add entity tracking range modifier api --- .../0013-Entity-tracking-range-modifier.patch | 23 ++++++++ ...applied-Actually-optimise-explosions.patch | 2 +- .../0080-Entity-tracking-range-modifier.patch | 57 +++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 patches/api/0013-Entity-tracking-range-modifier.patch create mode 100644 patches/server/0080-Entity-tracking-range-modifier.patch diff --git a/patches/api/0013-Entity-tracking-range-modifier.patch b/patches/api/0013-Entity-tracking-range-modifier.patch new file mode 100644 index 0000000..ef332a3 --- /dev/null +++ b/patches/api/0013-Entity-tracking-range-modifier.patch @@ -0,0 +1,23 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samsuik +Date: Tue, 18 Jun 2024 13:34:39 +0100 +Subject: [PATCH] Entity tracking range modifier + + +diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java +index 4c2e82a6421722d9a990ff4a216cedc159c7e579..489ad34e24c8b65d8ac7623d38707fb768d3cac1 100644 +--- a/src/main/java/org/bukkit/entity/Player.java ++++ b/src/main/java/org/bukkit/entity/Player.java +@@ -68,6 +68,12 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM + me.samsuik.sakura.player.visibility.Visibility getVisibility(); + // Sakura end + ++ // Sakura start - entity tracking range modifier ++ double getTrackingRangeModifier(); ++ ++ void setTrackingRangeModifier(double mod); ++ // Sakura end - entity tracking range modifier ++ + // Paper start + @Override + default net.kyori.adventure.identity.@NotNull Identity identity() { diff --git a/patches/server/0006-Paper-Unapplied-Actually-optimise-explosions.patch b/patches/server/0006-Paper-Unapplied-Actually-optimise-explosions.patch index 574eae9..45b76cc 100644 --- a/patches/server/0006-Paper-Unapplied-Actually-optimise-explosions.patch +++ b/patches/server/0006-Paper-Unapplied-Actually-optimise-explosions.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Tue, 12 Sep 2023 06:50:16 -0700 -Subject: [PATCH] Paper Unapplied - Actually optimise explosions +Subject: [PATCH] Paper Unapplied - Actually optimise explosions The vast majority of blocks an explosion of power ~4 tries to destroy are duplicates. The core of the block destroying diff --git a/patches/server/0080-Entity-tracking-range-modifier.patch b/patches/server/0080-Entity-tracking-range-modifier.patch new file mode 100644 index 0000000..daedb3c --- /dev/null +++ b/patches/server/0080-Entity-tracking-range-modifier.patch @@ -0,0 +1,57 @@ +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 d779e010ba7c0e99aa3b0ce8462b7e3fa7cced8c..c7e994953c68faffce60ba3c91be1800c8d47020 100644 +--- a/src/main/java/net/minecraft/server/level/ChunkMap.java ++++ b/src/main/java/net/minecraft/server/level/ChunkMap.java +@@ -1319,7 +1319,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; + boolean flag = d1 <= d2 && this.entity.broadcastToPlayer(player) && ChunkMap.this.isChunkTracked(player, this.entity.chunkPosition().x, this.entity.chunkPosition().z); +diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java +index 98e052fecf852d9426671615d9c21f8cc94fb349..229522e8d54d93a676c6e7f65d975ce6c11b66ff 100644 +--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java ++++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java +@@ -332,6 +332,7 @@ public class ServerPlayer extends net.minecraft.world.entity.player.Player imple + return this.viewDistanceHolder; + } + // Paper end - rewrite chunk system ++ 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 a280b9c9c1451f72758b30b9c514c889c846c88c..49f16d135b7df71e6976ff720bb2e243fb00aae8 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +@@ -3017,6 +3017,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() {