Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import net.menoni.rd.Debugger;
- import net.menoni.rd.RuntimeDebugger;
- import net.minecraft.server.v1_12_R1.Entity;
- import net.minecraft.server.v1_12_R1.MinecraftServer;
- import net.minecraft.server.v1_12_R1.TileEntity;
- import net.minecraft.server.v1_12_R1.WorldServer;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.craftbukkit.v1_12_R1.CraftServer;
- import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
- import org.bukkit.entity.Player;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class MonitoringTest implements Debugger {
- private CommandSender cs;
- public void send(String msg, Object... args) {
- cs.sendMessage(String.format(ChatColor.BLUE + msg, args));
- }
- @Override
- public void debug(RuntimeDebugger runtimeDebugger, CommandSender commandSender) {
- this.cs = commandSender;
- List<WorldServer> minecraftWorlds = Utils.getMinecraftWorlds();
- for (WorldServer w : minecraftWorlds) {
- String worldName = w.worldData.getName();
- int entityCount = w.entityList.size();
- int tileEntityCount = w.tileEntityList.size();
- send("World %s has %d entities and %d tile entities", worldName, entityCount, tileEntityCount);
- }
- if (!(commandSender instanceof Player)) {
- return;
- }
- Player player = (Player) commandSender;
- WorldServer world = Utils.findWorld(player);
- if (world == null) {
- send("Current world not found");
- return;
- }
- Map<Class<? extends Entity>, Integer> entityTypeCount = new HashMap<>();
- for (Entity entity : world.entityList) {
- Integer integer = entityTypeCount.get(entity.getClass());
- if (integer == null) {
- integer = 0;
- }
- integer++;
- entityTypeCount.put(entity.getClass(), integer);
- }
- for (Map.Entry<Class<? extends Entity>, Integer> entityCount : entityTypeCount.entrySet()) {
- send("Entity(%s) occurs %d %s", entityCount.getKey().getSimpleName(), entityCount.getValue(), entityCount.getValue() > 1 ? "times" : "time");
- }
- Map<Class<? extends TileEntity>, Integer> tileEntityTypeCount = new HashMap<>();
- for (TileEntity tileEntity : world.tileEntityList) {
- Integer integer = tileEntityTypeCount.get(tileEntity.getClass());
- if (integer == null) {
- integer = 0;
- }
- integer++;
- tileEntityTypeCount.put(tileEntity.getClass(), integer);
- }
- for (Map.Entry<Class<? extends TileEntity>, Integer> tileEntityCount : tileEntityTypeCount.entrySet()) {
- send("TileEntity(%s) occurs %d %s", tileEntityCount.getKey().getSimpleName(), tileEntityCount.getValue(), tileEntityCount.getValue() > 1 ? "times" : "time");
- }
- }
- public static class Utils {
- public static CraftServer getCraftServer() {
- return (CraftServer) Bukkit.getServer();
- }
- public static MinecraftServer getMinecraftServer() {
- return getCraftServer().getServer();
- }
- public static List<WorldServer> getMinecraftWorlds() {
- List<WorldServer> worlds = new ArrayList<>();
- for (org.bukkit.World world : getCraftServer().getWorlds()) {
- if (world instanceof CraftWorld) {
- worlds.add(((CraftWorld)world).getHandle());
- }
- }
- return worlds;
- }
- public static WorldServer findWorld(Player player) {
- String name = player.getWorld().getName();
- for (WorldServer worldServer : getMinecraftWorlds()) {
- if (worldServer.worldData.getName().equals(name)) {
- return worldServer;
- }
- }
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement