Add config to use no-tick vd for tracker (#195)

This commit is contained in:
Ben Kerllenevich
2021-03-13 17:54:03 -05:00
committed by GitHub
parent 3044036c53
commit 37591fe604

View File

@@ -0,0 +1,68 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ben Kerllenevich <me@notom3ga.me>
Date: Sat, 13 Mar 2021 17:21:49 -0500
Subject: [PATCH] Use no-tick-view-distance for tracker
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index d7a17689ce44ccb8281906fb6ac7ba2ae53161e5..11140f89cb2b1837aa09a77d4f4fa8eb6ffbebbb 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -213,7 +213,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
com.destroystokyo.paper.util.misc.PlayerAreaMap trackMap = this.playerEntityTrackerTrackMaps[i];
int trackRange = this.entityTrackerTrackRanges[i];
- trackMap.add(player, chunkX, chunkZ, Math.min(trackRange, this.getEffectiveViewDistance()));
+ trackMap.add(player, chunkX, chunkZ, Math.min(trackRange, player.world.purpurConfig.useNoTickForTracker ? this.getEffectiveNoTickViewDistance() : this.getEffectiveViewDistance())); // Purpur
}
// Paper end - use distance map to optimise entity tracker
// Paper start - optimise PlayerChunkMap#isOutsideRange
@@ -268,7 +268,7 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
com.destroystokyo.paper.util.misc.PlayerAreaMap trackMap = this.playerEntityTrackerTrackMaps[i];
int trackRange = this.entityTrackerTrackRanges[i];
- trackMap.update(player, chunkX, chunkZ, Math.min(trackRange, this.getEffectiveViewDistance()));
+ trackMap.update(player, chunkX, chunkZ, Math.min(trackRange, player.world.purpurConfig.useNoTickForTracker ? this.getEffectiveNoTickViewDistance() : this.getEffectiveViewDistance())); // Purpur
}
// Paper end - use distance map to optimise entity tracker
// Paper start - optimise PlayerChunkMap#isOutsideRange
@@ -2541,7 +2541,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
double vec3d_dy = entityplayer.locY() - this.tracker.locY();
double vec3d_dz = entityplayer.locZ() - this.tracker.locZ();
// Paper end - remove allocation of Vec3D here
- int i = Math.min(this.b(), (PlayerChunkMap.this.viewDistance - 1) * 16);
+ int i = Math.min(this.b(), entityplayer.world.purpurConfig.useNoTickForTracker ? PlayerChunkMap.this.getEffectiveNoTickViewDistance() * 16 : (PlayerChunkMap.this.viewDistance - 1) * 16); // Purpur
boolean flag = vec3d_dx >= (double) (-i) && vec3d_dx <= (double) i && vec3d_dz >= (double) (-i) && vec3d_dz <= (double) i && this.tracker.a(entityplayer); // Paper - remove allocation of Vec3D here
if (flag) {
@@ -2557,7 +2557,7 @@ Sections go from 0..16. Now whenever a section is not empty, it can potentially
PlayerChunk playerchunk = PlayerChunkMap.this.trackerGetVisibleChunk(chunkcoordintpair); // Airplane
if (playerchunk != null && playerchunk.getSendingChunk() != null) { // Paper - no-tick view distance
- flag1 = PlayerChunkMap.someDistanceCalculation(x, z, entityplayer, false) <= PlayerChunkMap.this.viewDistance;
+ flag1 = PlayerChunkMap.someDistanceCalculation(x, z, entityplayer, false) <= Math.max(PlayerChunkMap.this.viewDistance, PlayerChunkMap.this.noTickViewDistance); // Purpur
// Airplane end
}
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 45c5b7b9e7b207e25d80c008a87b06b91e81668b..3a69b31335d296e0ede1bb5bc10976a41e840a57 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -284,6 +284,7 @@ public class PurpurWorldConfig {
public int animalBreedingCooldownSeconds = 0;
public boolean creativeOnePunch = false;
public boolean playerSleepNearMonsters = false;
+
private void miscGameplayMechanicsSettings() {
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative);
@@ -1975,4 +1976,9 @@ public class PurpurWorldConfig {
baseCrystalExplosionEffect = Explosion.Effect.DESTROY;
}
}
+
+ public boolean useNoTickForTracker = false;
+ private void trackerSettings() {
+ useNoTickForTracker = getBoolean("tracker.use-no-tick-distance-for-range", useNoTickForTracker);
+ }
}