aboutsummaryrefslogtreecommitdiff
path: root/spark-bukkit/src
diff options
context:
space:
mode:
authorembeddedt <42941056+embeddedt@users.noreply.github.com>2022-12-26 18:58:46 -0500
committerembeddedt <42941056+embeddedt@users.noreply.github.com>2022-12-26 18:58:46 -0500
commit1075665def4a41cf0064255a6da1d1a652f5d473 (patch)
tree11bba64e8f28ce8b83adc05252b75f17e2ccbf6a /spark-bukkit/src
parentd9550259c1995d21fc345c58f2e531fdecf75acd (diff)
parentd9655c40c02aef137c7a6a00a1cc90a1e6fb08d1 (diff)
downloadspark-1075665def4a41cf0064255a6da1d1a652f5d473.tar.gz
spark-1075665def4a41cf0064255a6da1d1a652f5d473.tar.bz2
spark-1075665def4a41cf0064255a6da1d1a652f5d473.zip
Merge remote-tracking branch 'lucko/master' into forge-1.7.10
Diffstat (limited to 'spark-bukkit/src')
-rw-r--r--spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitClassSourceLookup.java2
-rw-r--r--spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitServerConfigProvider.java4
-rw-r--r--spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitSparkPlugin.java16
-rw-r--r--spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java52
4 files changed, 66 insertions, 8 deletions
diff --git a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitClassSourceLookup.java b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitClassSourceLookup.java
index 6d8afda..f9c0c0b 100644
--- a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitClassSourceLookup.java
+++ b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitClassSourceLookup.java
@@ -20,7 +20,7 @@
package me.lucko.spark.bukkit;
-import me.lucko.spark.common.util.ClassSourceLookup;
+import me.lucko.spark.common.sampler.source.ClassSourceLookup;
import org.bukkit.plugin.java.JavaPlugin;
diff --git a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitServerConfigProvider.java b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitServerConfigProvider.java
index d095bed..5db1b38 100644
--- a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitServerConfigProvider.java
+++ b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitServerConfigProvider.java
@@ -28,10 +28,10 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializer;
-import me.lucko.spark.common.platform.serverconfig.AbstractServerConfigProvider;
import me.lucko.spark.common.platform.serverconfig.ConfigParser;
import me.lucko.spark.common.platform.serverconfig.ExcludedConfigFilter;
import me.lucko.spark.common.platform.serverconfig.PropertiesConfigParser;
+import me.lucko.spark.common.platform.serverconfig.ServerConfigProvider;
import org.bukkit.Bukkit;
import org.bukkit.World;
@@ -51,7 +51,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-public class BukkitServerConfigProvider extends AbstractServerConfigProvider {
+public class BukkitServerConfigProvider extends ServerConfigProvider {
/** A map of provided files and their type */
private static final Map<String, ConfigParser> FILES;
diff --git a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitSparkPlugin.java b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitSparkPlugin.java
index 5737d3d..87490ea 100644
--- a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitSparkPlugin.java
+++ b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitSparkPlugin.java
@@ -30,9 +30,10 @@ import me.lucko.spark.common.platform.PlatformInfo;
import me.lucko.spark.common.platform.serverconfig.ServerConfigProvider;
import me.lucko.spark.common.platform.world.WorldInfoProvider;
import me.lucko.spark.common.sampler.ThreadDumper;
+import me.lucko.spark.common.sampler.source.ClassSourceLookup;
+import me.lucko.spark.common.sampler.source.SourceMetadata;
import me.lucko.spark.common.tick.TickHook;
import me.lucko.spark.common.tick.TickReporter;
-import me.lucko.spark.common.util.ClassSourceLookup;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
@@ -40,10 +41,13 @@ import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
+import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.ServicePriority;
import org.bukkit.plugin.java.JavaPlugin;
import java.nio.file.Path;
+import java.util.Arrays;
+import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
import java.util.stream.Stream;
@@ -181,6 +185,16 @@ public class BukkitSparkPlugin extends JavaPlugin implements SparkPlugin {
}
@Override
+ public Collection<SourceMetadata> getKnownSources() {
+ return SourceMetadata.gather(
+ Arrays.asList(getServer().getPluginManager().getPlugins()),
+ Plugin::getName,
+ plugin -> plugin.getDescription().getVersion(),
+ plugin -> String.join(", ", plugin.getDescription().getAuthors())
+ );
+ }
+
+ @Override
public PlayerPingProvider createPlayerPingProvider() {
if (BukkitPlayerPingProvider.isSupported()) {
return new BukkitPlayerPingProvider(getServer());
diff --git a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java
index 5d50eeb..8f876cf 100644
--- a/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java
+++ b/spark-bukkit/src/main/java/me/lucko/spark/bukkit/BukkitWorldInfoProvider.java
@@ -34,6 +34,21 @@ import java.util.ArrayList;
import java.util.List;
public class BukkitWorldInfoProvider implements WorldInfoProvider {
+ private static final boolean SUPPORTS_PAPER_COUNT_METHODS;
+
+ static {
+ boolean supportsPaperCountMethods = false;
+ try {
+ World.class.getMethod("getEntityCount");
+ World.class.getMethod("getTileEntityCount");
+ World.class.getMethod("getChunkCount");
+ supportsPaperCountMethods = true;
+ } catch (Exception e) {
+ // ignored
+ }
+ SUPPORTS_PAPER_COUNT_METHODS = supportsPaperCountMethods;
+ }
+
private final Server server;
public BukkitWorldInfoProvider(Server server) {
@@ -41,15 +56,42 @@ public class BukkitWorldInfoProvider implements WorldInfoProvider {
}
@Override
- public Result<BukkitChunkInfo> poll() {
- Result<BukkitChunkInfo> data = new Result<>();
+ public CountsResult pollCounts() {
+ int players = this.server.getOnlinePlayers().size();
+ int entities = 0;
+ int tileEntities = 0;
+ int chunks = 0;
+
+ for (World world : this.server.getWorlds()) {
+ if (SUPPORTS_PAPER_COUNT_METHODS) {
+ entities += world.getEntityCount();
+ tileEntities += world.getTileEntityCount();
+ chunks += world.getChunkCount();
+ } else {
+ entities += world.getEntities().size();
+ Chunk[] chunksArray = world.getLoadedChunks();
+ for (Chunk chunk : chunksArray) {
+ tileEntities += chunk.getTileEntities().length;
+ }
+ chunks += chunksArray.length;
+ }
+ }
+
+ return new CountsResult(players, entities, tileEntities, chunks);
+ }
+
+ @Override
+ public ChunksResult<BukkitChunkInfo> pollChunks() {
+ ChunksResult<BukkitChunkInfo> data = new ChunksResult<>();
for (World world : this.server.getWorlds()) {
Chunk[] chunks = world.getLoadedChunks();
List<BukkitChunkInfo> list = new ArrayList<>(chunks.length);
for (Chunk chunk : chunks) {
- list.add(new BukkitChunkInfo(chunk));
+ if (chunk != null) {
+ list.add(new BukkitChunkInfo(chunk));
+ }
}
data.put(world.getName(), list);
@@ -66,7 +108,9 @@ public class BukkitWorldInfoProvider implements WorldInfoProvider {
this.entityCounts = new CountMap.EnumKeyed<>(EntityType.class);
for (Entity entity : chunk.getEntities()) {
- this.entityCounts.increment(entity.getType());
+ if (entity != null) {
+ this.entityCounts.increment(entity.getType());
+ }
}
}