geforkt von Mirrors/Paper
9a7ca3dbc5
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 564ed152 #482: Add a DragonBattle API to manipulate respawn phases etc 9f2fd967 #474: Add ability to set other plugin names as provided API so others can still depend on it CraftBukkit Changes:fc318cc1
#642: Add a DragonBattle API to manipulate respawn phases etc796eb15a
#644: Fix ChunkMapDistance#removeAllTicketsFor not propagating ticket level updatesa6f80937
SPIGOT-5606: call BlockRedstoneEvent for fence gates Spigot Changes: a03b1fdb Rebuild patches
65 Zeilen
2.2 KiB
Diff
65 Zeilen
2.2 KiB
Diff
From 171ede11261f5166ac6ba2d8323b8125c638eb45 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sat, 7 Jan 2017 15:24:46 -0500
|
|
Subject: [PATCH] Provide E/TE/Chunk count stat methods
|
|
|
|
Provides counts without the ineffeciency of using .getEntities().size()
|
|
which creates copy of the collections.
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index 16b78bd02e..c06b10c6b1 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -278,6 +278,48 @@ public class CraftWorld implements World {
|
|
private int waterAnimalSpawn = -1;
|
|
private int ambientSpawn = -1;
|
|
|
|
+ // Paper start - Provide fast information methods
|
|
+ public int getEntityCount() {
|
|
+ int ret = 0;
|
|
+ for (net.minecraft.server.Entity entity : world.entitiesById.values()) {
|
|
+ if (entity.isChunkLoaded()) {
|
|
+ ++ret;
|
|
+ }
|
|
+ }
|
|
+ return ret;
|
|
+ }
|
|
+ public int getTileEntityCount() {
|
|
+ // We don't use the full world tile entity list, so we must iterate chunks
|
|
+ Long2ObjectLinkedOpenHashMap<PlayerChunk> chunks = world.getChunkProvider().playerChunkMap.visibleChunks;
|
|
+ int size = 0;
|
|
+ for (net.minecraft.server.PlayerChunk playerchunk : chunks.values()) {
|
|
+ net.minecraft.server.Chunk chunk = playerchunk.getChunk();
|
|
+ if (chunk == null) {
|
|
+ continue;
|
|
+ }
|
|
+ size += chunk.tileEntities.size();
|
|
+ }
|
|
+ return size;
|
|
+ }
|
|
+ public int getTickableTileEntityCount() {
|
|
+ return world.tileEntityListTick.size();
|
|
+ }
|
|
+ public int getChunkCount() {
|
|
+ int ret = 0;
|
|
+
|
|
+ for (PlayerChunk chunkHolder : world.getChunkProvider().playerChunkMap.visibleChunks.values()) {
|
|
+ if (chunkHolder.getChunk() != null) {
|
|
+ ++ret;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return ret;
|
|
+ }
|
|
+ public int getPlayerCount() {
|
|
+ return world.players.size();
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
private static final Random rand = new Random();
|
|
|
|
public CraftWorld(WorldServer world, ChunkGenerator gen, Environment env) {
|
|
--
|
|
2.26.0
|
|
|