mirror of
https://github.com/Samsuik/Sakura.git
synced 2025-12-21 07:49:29 +00:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@cb2ab7d Remove string dupe exploit setting (#11670) PaperMC/Paper@5f6a796 deprecate adventure key() methods where applicable PaperMC/Paper@78fd8f9 Copy items when constructing ClientboundSetCursorItemPacket PaperMC/Paper@0cc7bd4 Use Player view distance for PlayerNaturallySpawnCreaturesEvent PaperMC/Paper@da9d110 Remove chunk save reattempt patch PaperMC/Paper@9953384 [ci skip] leaf PaperMC/Paper@64828f3 Clean up thread pool usage (#11681) PaperMC/Paper@5ab6789 Copy dispatcher root children before passing it into async tree building PaperMC/Paper@47f2071 Deprecate ChatVisibility#UNKNOWN (#11683) PaperMC/Paper@9039c39 Add back discard policy PaperMC/Paper@27e4ddc Fix item_model adapter, rename internal classes
53 lines
3.4 KiB
Diff
53 lines
3.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Samsuik <40902469+Samsuik@users.noreply.github.com>
|
|
Date: Thu, 30 Nov 2023 15:54:49 +0000
|
|
Subject: [PATCH] Reduce entity tracker player updates
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
|
index ed7ae4617c992b4e5f5ce14f998b9c763ee1b7e2..54bfe3dfda0e023cc3d25ddcf1fe366a6cf50c90 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
|
@@ -972,7 +972,11 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
|
if (tracker == null) {
|
|
continue;
|
|
}
|
|
- ((ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerTrackedEntity)tracker).moonrise$tick(((ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity)entity).moonrise$getChunkData().nearbyPlayers);
|
|
+ // Sakura start - reduce entity tracker player updates
|
|
+ if (tracker.shouldUpdatePlayers()) {
|
|
+ ((ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerTrackedEntity)tracker).moonrise$tick(((ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity)entity).moonrise$getChunkData().nearbyPlayers);
|
|
+ }
|
|
+ // Sakura end - reduce entity tracker player updates
|
|
if (((ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerTrackedEntity)tracker).moonrise$hasPlayers()
|
|
|| ((ca.spottedleaf.moonrise.patches.chunk_system.entity.ChunkSystemEntity)entity).moonrise$getChunkStatus().isOrAfter(FullChunkStatus.ENTITY_TICKING)) {
|
|
tracker.serverEntity.sendChanges();
|
|
@@ -1243,12 +1247,28 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
|
return state != me.samsuik.sakura.player.visibility.VisibilityState.OFF;
|
|
}
|
|
// Sakura end - client visibility settings; entity visibility
|
|
+ // Sakura start - reduce entity tracker player updates
|
|
+ private final int playerUpdateInterval;
|
|
+ private Vec3 entityPosition;
|
|
+
|
|
+ public final boolean shouldUpdatePlayers() {
|
|
+ // We have to always update players otherwise they can turn invisible on teleports (why?)
|
|
+ if (this.entity instanceof net.minecraft.world.entity.player.Player || this.entity.tickCount % this.playerUpdateInterval == 0) {
|
|
+ return true;
|
|
+ }
|
|
+ Vec3 lastPosition = this.entityPosition;
|
|
+ this.entityPosition = this.entity.position();
|
|
+ return this.entity.position().distanceToSqr(lastPosition) >= (double) this.range / 2.0;
|
|
+ }
|
|
+ // Sakura start - reduce entity tracker player updates
|
|
|
|
public TrackedEntity(final Entity entity, final int i, final int j, final boolean flag) {
|
|
this.serverEntity = new ServerEntity(ChunkMap.this.level, entity, j, flag, this::broadcast, this.seenBy); // CraftBukkit
|
|
this.entity = entity;
|
|
this.range = i;
|
|
this.lastSectionPos = SectionPos.of((EntityAccess) entity);
|
|
+ this.playerUpdateInterval = Math.min(j, 20); // Sakura - reduce entity tracker player updates
|
|
+ this.entityPosition = entity.position(); // Sakura - reduce entity tracker player updates
|
|
}
|
|
|
|
public boolean equals(Object object) {
|