mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +01:00
Remove Entity tracker field
Now the only tracker field is from the entity tracker optimisations.
This commit is contained in:
parent
d34db05237
commit
08e9cfb799
6 changed files with 12 additions and 45 deletions
|
@ -4,27 +4,6 @@ Date: Sat, 21 Jul 2018 08:25:40 -0400
|
||||||
Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues
|
Subject: [PATCH] Add Debug Entities option to debug dupe uuid issues
|
||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/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
|
|
||||||
} else {
|
|
||||||
ChunkMap.TrackedEntity playerchunkmap_entitytracker = new ChunkMap.TrackedEntity(entity, i, j, entitytypes.trackDeltas());
|
|
||||||
|
|
||||||
+ entity.tracker = playerchunkmap_entitytracker; // Paper - Fast access to tracker
|
|
||||||
this.entityMap.put(entity.getId(), playerchunkmap_entitytracker);
|
|
||||||
playerchunkmap_entitytracker.updatePlayers(this.level.players());
|
|
||||||
if (entity instanceof ServerPlayer) {
|
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
|
||||||
if (playerchunkmap_entitytracker1 != null) {
|
|
||||||
playerchunkmap_entitytracker1.broadcastRemoved();
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+ entity.tracker = null; // Paper - We're no longer tracked
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void tick() {
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
|
@ -42,18 +21,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
if (entity.isRemoved()) {
|
if (entity.isRemoved()) {
|
||||||
// WorldServer.LOGGER.warn("Tried to add entity {} but it was marked as removed already", EntityTypes.getKey(entity.getType())); // CraftBukkit
|
// WorldServer.LOGGER.warn("Tried to add entity {} but it was marked as removed already", EntityTypes.getKey(entity.getType())); // CraftBukkit
|
||||||
return false;
|
return false;
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
||||||
--- a/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 SyncedDataHolder, Nameable, EntityAccess
|
|
||||||
|
|
||||||
private CraftEntity bukkitEntity;
|
|
||||||
|
|
||||||
+ public @org.jetbrains.annotations.Nullable net.minecraft.server.level.ChunkMap.TrackedEntity tracker; // Paper
|
|
||||||
public CraftEntity getBukkitEntity() {
|
|
||||||
if (this.bukkitEntity == null) {
|
|
||||||
this.bukkitEntity = CraftEntity.getEntity(this.level.getCraftServer(), this);
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/entity/EntityLookup.java b/src/main/java/net/minecraft/world/level/entity/EntityLookup.java
|
diff --git a/src/main/java/net/minecraft/world/level/entity/EntityLookup.java b/src/main/java/net/minecraft/world/level/entity/EntityLookup.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/entity/EntityLookup.java
|
--- a/src/main/java/net/minecraft/world/level/entity/EntityLookup.java
|
||||||
|
|
|
@ -16,12 +16,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ // Paper start - tracked players API
|
+ // Paper start - tracked players API
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public Set<org.bukkit.entity.Player> getTrackedPlayers() {
|
+ public Set<org.bukkit.entity.Player> getTrackedPlayers() {
|
||||||
+ if (this.entity.tracker == null) {
|
+ ServerLevel world = (net.minecraft.server.level.ServerLevel)this.entity.level();
|
||||||
|
+ ChunkMap.TrackedEntity tracker = world == null ? null : world.getChunkSource().chunkMap.entityMap.get(this.entity.getId());
|
||||||
|
+ if (tracker == null) {
|
||||||
+ return java.util.Collections.emptySet();
|
+ return java.util.Collections.emptySet();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ Set<org.bukkit.entity.Player> set = new java.util.HashSet<>(this.entity.tracker.seenBy.size());
|
+ Set<org.bukkit.entity.Player> set = new java.util.HashSet<>(tracker.seenBy.size());
|
||||||
+ for (net.minecraft.server.network.ServerPlayerConnection connection : this.entity.tracker.seenBy) {
|
+ for (net.minecraft.server.network.ServerPlayerConnection connection : tracker.seenBy) {
|
||||||
+ set.add(connection.getPlayer().getBukkitEntity().getPlayer());
|
+ set.add(connection.getPlayer().getBukkitEntity().getPlayer());
|
||||||
+ }
|
+ }
|
||||||
+ return set;
|
+ return set;
|
||||||
|
|
|
@ -1189,7 +1189,7 @@ 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 SyncedDataHolder, Nameable, EntityAccess
|
@@ -0,0 +0,0 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
|
||||||
public @org.jetbrains.annotations.Nullable net.minecraft.server.level.ChunkMap.TrackedEntity tracker; // Paper
|
|
||||||
public CraftEntity getBukkitEntity() {
|
public CraftEntity getBukkitEntity() {
|
||||||
if (this.bukkitEntity == null) {
|
if (this.bukkitEntity == null) {
|
||||||
- this.bukkitEntity = CraftEntity.getEntity(this.level.getCraftServer(), this);
|
- this.bukkitEntity = CraftEntity.getEntity(this.level.getCraftServer(), this);
|
||||||
|
|
|
@ -24105,8 +24105,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
|
|
||||||
public void addEntity(Entity entity) {
|
public void addEntity(Entity entity) {
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
|
ChunkMap.TrackedEntity playerchunkmap_entitytracker = new ChunkMap.TrackedEntity(entity, i, j, entitytypes.trackDeltas());
|
||||||
|
|
||||||
entity.tracker = playerchunkmap_entitytracker; // Paper - Fast access to tracker
|
|
||||||
this.entityMap.put(entity.getId(), playerchunkmap_entitytracker);
|
this.entityMap.put(entity.getId(), playerchunkmap_entitytracker);
|
||||||
+ // Paper start - optimise entity tracker
|
+ // Paper start - optimise entity tracker
|
||||||
+ if (((ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity)entity).moonrise$getTrackedEntity() != null) {
|
+ if (((ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity)entity).moonrise$getTrackedEntity() != null) {
|
||||||
|
@ -24120,7 +24120,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -0,0 +0,0 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
playerchunkmap_entitytracker1.broadcastRemoved();
|
playerchunkmap_entitytracker1.broadcastRemoved();
|
||||||
}
|
}
|
||||||
entity.tracker = null; // Paper - We're no longer tracked
|
|
||||||
+ ((ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity)entity).moonrise$setTrackedEntity(null); // Paper - optimise entity tracker
|
+ ((ca.spottedleaf.moonrise.patches.entity_tracker.EntityTrackerEntity)entity).moonrise$setTrackedEntity(null); // Paper - optimise entity tracker
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ public boolean collisionLoadChunks = false; // Paper
|
+ public boolean collisionLoadChunks = false; // Paper
|
||||||
private CraftEntity bukkitEntity;
|
private CraftEntity bukkitEntity;
|
||||||
|
|
||||||
public @org.jetbrains.annotations.Nullable net.minecraft.server.level.ChunkMap.TrackedEntity tracker; // Paper
|
public CraftEntity getBukkitEntity() {
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/BlockCollisions.java b/src/main/java/net/minecraft/world/level/BlockCollisions.java
|
diff --git a/src/main/java/net/minecraft/world/level/BlockCollisions.java b/src/main/java/net/minecraft/world/level/BlockCollisions.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/BlockCollisions.java
|
--- a/src/main/java/net/minecraft/world/level/BlockCollisions.java
|
||||||
|
|
|
@ -135,12 +135,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ // This method should only be used if the data of an entity could have become desynced
|
+ // This method should only be used if the data of an entity could have become desynced
|
||||||
+ // due to interactions on the client.
|
+ // due to interactions on the client.
|
||||||
+ public void resendPossiblyDesyncedEntityData(net.minecraft.server.level.ServerPlayer player) {
|
+ public void resendPossiblyDesyncedEntityData(net.minecraft.server.level.ServerPlayer player) {
|
||||||
+ if (this.tracker == null) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (player.getBukkitEntity().canSee(this.getBukkitEntity())) {
|
+ if (player.getBukkitEntity().canSee(this.getBukkitEntity())) {
|
||||||
+ final net.minecraft.server.level.ServerEntity serverEntity = this.tracker.serverEntity;
|
+ ServerLevel world = (net.minecraft.server.level.ServerLevel)this.level();
|
||||||
|
+ net.minecraft.server.level.ChunkMap.TrackedEntity tracker = world == null ? null : world.getChunkSource().chunkMap.entityMap.get(this.getId());
|
||||||
|
+ final net.minecraft.server.level.ServerEntity serverEntity = tracker.serverEntity;
|
||||||
+ final List<net.minecraft.network.protocol.Packet<? super net.minecraft.network.protocol.game.ClientGamePacketListener>> list = new java.util.ArrayList<>();
|
+ final List<net.minecraft.network.protocol.Packet<? super net.minecraft.network.protocol.game.ClientGamePacketListener>> list = new java.util.ArrayList<>();
|
||||||
+ serverEntity.sendPairingData(player, list::add);
|
+ serverEntity.sendPairingData(player, list::add);
|
||||||
+ player.connection.send(new net.minecraft.network.protocol.game.ClientboundBundlePacket(list));
|
+ player.connection.send(new net.minecraft.network.protocol.game.ClientboundBundlePacket(list));
|
||||||
|
|
Loading…
Reference in a new issue