mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 06:58:11 +02:00
This work is 100% unfinished. I am pushing it up so that we as a team can work on this update. Do not try to use this branch. You will fail.
59 lines
2.2 KiB
Diff
59 lines
2.2 KiB
Diff
From fd0ed98b73db46e809681e54d3b823d7b710b507 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Wed, 4 Jul 2018 02:13:59 -0400
|
|
Subject: [PATCH] Store counts for each Entity/Block Entity Type
|
|
|
|
Opens door for future patches to optimize performance
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java
|
|
index 120e66c78..0ae780c8e 100644
|
|
--- a/src/main/java/net/minecraft/server/Chunk.java
|
|
+++ b/src/main/java/net/minecraft/server/Chunk.java
|
|
@@ -64,15 +64,19 @@ public class Chunk implements IChunkAccess {
|
|
private int neighbors = 0x1 << 12;
|
|
public long chunkKey;
|
|
// Paper start
|
|
+ public final co.aikar.util.Counter<String> entityCounts = new co.aikar.util.Counter<>();
|
|
+ public final co.aikar.util.Counter<String> tileEntityCounts = new co.aikar.util.Counter<>();
|
|
private class TileEntityHashMap extends java.util.HashMap<BlockPosition, TileEntity> {
|
|
@Override
|
|
public TileEntity put(BlockPosition key, TileEntity value) {
|
|
TileEntity replaced = super.put(key, value);
|
|
if (replaced != null) {
|
|
replaced.setCurrentChunk(null);
|
|
+ tileEntityCounts.decrement(replaced.tileEntityKeyString);
|
|
}
|
|
if (value != null) {
|
|
value.setCurrentChunk(Chunk.this);
|
|
+ tileEntityCounts.increment(value.tileEntityKeyString);
|
|
}
|
|
return replaced;
|
|
}
|
|
@@ -82,6 +86,7 @@ public class Chunk implements IChunkAccess {
|
|
TileEntity removed = super.remove(key);
|
|
if (removed != null) {
|
|
removed.setCurrentChunk(null);
|
|
+ tileEntityCounts.decrement(removed.tileEntityKeyString);
|
|
}
|
|
return removed;
|
|
}
|
|
@@ -671,6 +676,7 @@ public class Chunk implements IChunkAccess {
|
|
this.entitySlices[k].add(entity);
|
|
// Paper start
|
|
entity.setCurrentChunk(this);
|
|
+ entityCounts.increment(entity.entityKeyString);
|
|
// Paper end
|
|
}
|
|
|
|
@@ -695,6 +701,7 @@ public class Chunk implements IChunkAccess {
|
|
return;
|
|
}
|
|
entity.setCurrentChunk(null);
|
|
+ entityCounts.decrement(entity.entityKeyString);
|
|
// Paper end
|
|
}
|
|
|
|
--
|
|
2.18.0
|
|
|