geforkt von Mirrors/Paper
Apply last patch
Dieser Commit ist enthalten in:
Ursprung
cadfd892c9
Commit
494b03ea47
@ -15,9 +15,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
@@ -0,0 +0,0 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||||
|
return chunkMap.playerEntityTrackerTrackMaps[type.ordinal()].getObjectsInRange(MCUtil.getCoordinateKey(this));
|
||||||
public boolean updatingSectionStatus = false;
|
}
|
||||||
// Paper end
|
// Paper end - optimise entity tracking
|
||||||
+ // Paper start - make end portalling safe
|
+ // Paper start - make end portalling safe
|
||||||
+ public BlockPos portalBlock;
|
+ public BlockPos portalBlock;
|
||||||
+ public ServerLevel portalWorld;
|
+ public ServerLevel portalWorld;
|
||||||
|
@ -56,9 +56,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
// Paper start - distance maps
|
// Paper start - distance maps
|
||||||
private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets<ServerPlayer> pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>();
|
private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets<ServerPlayer> pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>();
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
this.playerMobDistanceMap.add(player, chunkX, chunkZ, io.papermc.paper.chunk.system.ChunkSystem.getTickViewDistance(player));
|
trackMap.add(player, chunkX, chunkZ, Math.min(trackRange, io.papermc.paper.chunk.system.ChunkSystem.getSendViewDistance(player)));
|
||||||
}
|
}
|
||||||
// Paper end - per player mob spawning
|
// Paper end - use distance map to optimise entity tracker
|
||||||
+ this.playerGeneralAreaMap.add(player, chunkX, chunkZ, GENERAL_AREA_MAP_SQUARE_RADIUS); // Paper - optimise checkDespawn
|
+ this.playerGeneralAreaMap.add(player, chunkX, chunkZ, GENERAL_AREA_MAP_SQUARE_RADIUS); // Paper - optimise checkDespawn
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,9 +72,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
if (this.playerMobDistanceMap != null) {
|
if (this.playerMobDistanceMap != null) {
|
||||||
this.playerMobDistanceMap.remove(player);
|
this.playerMobDistanceMap.remove(player);
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
this.playerMobDistanceMap.update(player, chunkX, chunkZ, io.papermc.paper.chunk.system.ChunkSystem.getTickViewDistance(player));
|
trackMap.update(player, chunkX, chunkZ, Math.min(trackRange, io.papermc.paper.chunk.system.ChunkSystem.getSendViewDistance(player)));
|
||||||
}
|
}
|
||||||
// Paper end - per player mob spawning
|
// Paper end - use distance map to optimise entity tracker
|
||||||
+ this.playerGeneralAreaMap.update(player, chunkX, chunkZ, GENERAL_AREA_MAP_SQUARE_RADIUS); // Paper - optimise checkDespawn
|
+ this.playerGeneralAreaMap.update(player, chunkX, chunkZ, GENERAL_AREA_MAP_SQUARE_RADIUS); // Paper - optimise checkDespawn
|
||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
|
@ -46,9 +46,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
|
return net.minecraft.server.MinecraftServer.getServer().getScaledTrackingDistance(vanilla);
|
||||||
// Paper start - distance maps
|
}
|
||||||
private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets<ServerPlayer> pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>();
|
// Paper end - use distance map to optimise tracker
|
||||||
+ // Paper start - optimise ChunkMap#anyPlayerCloseEnoughForSpawning
|
+ // Paper start - optimise ChunkMap#anyPlayerCloseEnoughForSpawning
|
||||||
+ // A note about the naming used here:
|
+ // A note about the naming used here:
|
||||||
+ // Previously, mojang used a "spawn range" of 8 for controlling both ticking and
|
+ // Previously, mojang used a "spawn range" of 8 for controlling both ticking and
|
||||||
@ -90,9 +90,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
if (this.playerMobDistanceMap != null) {
|
if (this.playerMobDistanceMap != null) {
|
||||||
this.playerMobDistanceMap.update(player, chunkX, chunkZ, io.papermc.paper.chunk.system.ChunkSystem.getTickViewDistance(player));
|
this.playerMobDistanceMap.update(player, chunkX, chunkZ, io.papermc.paper.chunk.system.ChunkSystem.getTickViewDistance(player));
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
this.regionManagers.add(this.dataRegionManager);
|
this.playerEntityTrackerTrackMaps[ordinal] = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets);
|
||||||
// Paper end
|
}
|
||||||
this.playerMobDistanceMap = this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets) : null; // Paper
|
// Paper end - use distance map to optimise entity tracker
|
||||||
+ // Paper start - optimise ChunkMap#anyPlayerCloseEnoughForSpawning
|
+ // Paper start - optimise ChunkMap#anyPlayerCloseEnoughForSpawning
|
||||||
+ this.playerChunkTickRangeMap = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets,
|
+ this.playerChunkTickRangeMap = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets,
|
||||||
+ (ServerPlayer player, int rangeX, int rangeZ, int currPosX, int currPosZ, int prevPosX, int prevPosZ,
|
+ (ServerPlayer player, int rangeX, int rangeZ, int currPosX, int currPosZ, int prevPosX, int prevPosZ,
|
||||||
|
@ -9,18 +9,10 @@ diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/j
|
|||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
@@ -0,0 +0,0 @@ import net.minecraft.network.protocol.game.ClientboundSetEntityLinkPacket;
|
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetPassengersPacket;
|
|
||||||
import net.minecraft.network.protocol.game.DebugPackets;
|
|
||||||
import io.papermc.paper.util.MCUtil;
|
|
||||||
+import net.minecraft.server.MinecraftServer;
|
|
||||||
import net.minecraft.server.level.progress.ChunkProgressListener;
|
|
||||||
import net.minecraft.server.network.ServerPlayerConnection;
|
|
||||||
import net.minecraft.util.CsvOutput;
|
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerMobSpawnMap; // this map is absent from updateMaps since it's controlled at the start of the chunkproviderserver tick
|
|
||||||
public final com.destroystokyo.paper.util.misc.PlayerAreaMap playerChunkTickRangeMap;
|
// Paper start - distance maps
|
||||||
// Paper end - optimise ChunkMap#anyPlayerCloseEnoughForSpawning
|
private final com.destroystokyo.paper.util.misc.PooledLinkedHashSets<ServerPlayer> pooledLinkedPlayerHashSets = new com.destroystokyo.paper.util.misc.PooledLinkedHashSets<>();
|
||||||
+ // Paper start - use distance map to optimise tracker
|
+ // Paper start - use distance map to optimise tracker
|
||||||
+ public static boolean isLegacyTrackingEntity(Entity entity) {
|
+ public static boolean isLegacyTrackingEntity(Entity entity) {
|
||||||
+ return entity.isLegacyTrackingEntity;
|
+ return entity.isLegacyTrackingEntity;
|
||||||
@ -35,12 +27,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ private int convertSpigotRangeToVanilla(final int vanilla) {
|
+ private int convertSpigotRangeToVanilla(final int vanilla) {
|
||||||
+ return MinecraftServer.getServer().getScaledTrackingDistance(vanilla);
|
+ return net.minecraft.server.MinecraftServer.getServer().getScaledTrackingDistance(vanilla);
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end - use distance map to optimise tracker
|
+ // Paper end - use distance map to optimise tracker
|
||||||
|
|
||||||
void addPlayerToDistanceMaps(ServerPlayer player) {
|
void addPlayerToDistanceMaps(ServerPlayer player) {
|
||||||
this.playerChunkManager.addPlayer(player); // Paper - replace chunk loader
|
this.level.playerChunkLoader.addPlayer(player); // Paper - replace chunk loader
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
this.playerMobDistanceMap.add(player, chunkX, chunkZ, io.papermc.paper.chunk.system.ChunkSystem.getTickViewDistance(player));
|
this.playerMobDistanceMap.add(player, chunkX, chunkZ, io.papermc.paper.chunk.system.ChunkSystem.getTickViewDistance(player));
|
||||||
}
|
}
|
||||||
@ -126,9 +118,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ this.playerEntityTrackerTrackMaps[ordinal] = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets);
|
+ this.playerEntityTrackerTrackMaps[ordinal] = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets);
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end - use distance map to optimise entity tracker
|
+ // Paper end - use distance map to optimise entity tracker
|
||||||
// Paper start - optimise ChunkMap#anyPlayerCloseEnoughForSpawning
|
}
|
||||||
this.playerChunkTickRangeMap = new com.destroystokyo.paper.util.misc.PlayerAreaMap(this.pooledLinkedPlayerHashSets,
|
|
||||||
(ServerPlayer player, int rangeX, int rangeZ, int currPosX, int currPosZ, int prevPosX, int prevPosZ,
|
protected ChunkGenerator generator() {
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,8 +188,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
List<ServerPlayer> list1 = this.level.players();
|
List<ServerPlayer> list1 = this.level.players();
|
||||||
ObjectIterator objectiterator = this.entityMap.values().iterator();
|
ObjectIterator objectiterator = this.entityMap.values().iterator();
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
}));
|
|
||||||
// Paper end
|
player.trackChunk(chunk.getPos(), (Packet) cachedDataPacket.getValue());
|
||||||
DebugPackets.sendPoiPacketsForChunk(this.level, chunk.getPos());
|
DebugPackets.sendPoiPacketsForChunk(this.level, chunk.getPos());
|
||||||
- List<Entity> list = Lists.newArrayList();
|
- List<Entity> list = Lists.newArrayList();
|
||||||
- List<Entity> list1 = Lists.newArrayList();
|
- List<Entity> list1 = Lists.newArrayList();
|
||||||
@ -342,18 +334,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
--- a/src/main/java/org/spigotmc/TrackingRange.java
|
--- a/src/main/java/org/spigotmc/TrackingRange.java
|
||||||
+++ b/src/main/java/org/spigotmc/TrackingRange.java
|
+++ b/src/main/java/org/spigotmc/TrackingRange.java
|
||||||
@@ -0,0 +0,0 @@ public class TrackingRange
|
@@ -0,0 +0,0 @@ public class TrackingRange
|
||||||
{
|
|
||||||
return defaultRange;
|
|
||||||
}
|
|
||||||
+ if (entity instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon) return defaultRange; // Paper - enderdragon is exempt
|
|
||||||
SpigotWorldConfig config = entity.level.spigotConfig;
|
|
||||||
if ( entity instanceof ServerPlayer )
|
|
||||||
{
|
|
||||||
@@ -0,0 +0,0 @@ public class TrackingRange
|
|
||||||
return config.displayTrackingRange;
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
- if (entity instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon) return ((net.minecraft.server.level.ServerLevel)(entity.getCommandSenderWorld())).getChunkSource().chunkMap.getEffectiveViewDistance(); // Paper - enderdragon is exempt
|
|
||||||
return config.otherTrackingRange;
|
return config.otherTrackingRange;
|
||||||
}
|
}
|
||||||
}
|
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren