mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 15:08:27 +02:00
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: bbfd13dd Hyperlink 'Events' in raid event package documentation b2095bed SPIGOT-5413: Add TrustedPlayer API for foxes 1bf1f3f4 Block trace methods do not require hash sets abf0cfdc Javadoc improvements per checkstyle c4a2b425 Add TimeSkipEvent CraftBukkit Changes:817116de
SPIGOT-5413: Add TrustedPlayer API for foxes062680a8
SPIGOT-5467: Calm down bees that cannot exit hive75fac431
SPIGOT-5472: Spurious warning when using clone command on tile entities85106731
SPIGOT-5471: Allow empty title/author for books2d9db47f
Add TimeSkipEvent384225c2
Add thread name to TerminalConsoleWriterThread Spigot Changes: 05bb8bcf Postpone stopping the watchdog until the server is completely stopped 18e2b9be Add package-info.java for Spigot APIs
65 lines
2.2 KiB
Diff
65 lines
2.2 KiB
Diff
From 2fded221da29e5432bed979c39cdf5fb06ab3555 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 48e25e190..7b182498c 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -276,6 +276,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.24.1
|
|
|