Advertisement
Wouto1997

Untitled

Jun 28th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.46 KB | None | 0 0
  1. import net.menoni.rd.Debugger;
  2. import net.menoni.rd.RuntimeDebugger;
  3. import net.minecraft.server.v1_12_R1.Entity;
  4. import net.minecraft.server.v1_12_R1.MinecraftServer;
  5. import net.minecraft.server.v1_12_R1.TileEntity;
  6. import net.minecraft.server.v1_12_R1.WorldServer;
  7. import org.bukkit.Bukkit;
  8. import org.bukkit.ChatColor;
  9. import org.bukkit.command.CommandSender;
  10. import org.bukkit.craftbukkit.v1_12_R1.CraftServer;
  11. import org.bukkit.craftbukkit.v1_12_R1.CraftWorld;
  12. import org.bukkit.entity.Player;
  13.  
  14. import java.util.ArrayList;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18.  
  19. public class MonitoringTest implements Debugger {
  20.  
  21. private CommandSender cs;
  22.  
  23. public void send(String msg, Object... args) {
  24. cs.sendMessage(String.format(ChatColor.BLUE + msg, args));
  25. }
  26.  
  27. @Override
  28. public void debug(RuntimeDebugger runtimeDebugger, CommandSender commandSender) {
  29. this.cs = commandSender;
  30. List<WorldServer> minecraftWorlds = Utils.getMinecraftWorlds();
  31. for (WorldServer w : minecraftWorlds) {
  32. String worldName = w.worldData.getName();
  33. int entityCount = w.entityList.size();
  34. int tileEntityCount = w.tileEntityList.size();
  35. send("World %s has %d entities and %d tile entities", worldName, entityCount, tileEntityCount);
  36. }
  37. if (!(commandSender instanceof Player)) {
  38. return;
  39. }
  40. Player player = (Player) commandSender;
  41. WorldServer world = Utils.findWorld(player);
  42. if (world == null) {
  43. send("Current world not found");
  44. return;
  45. }
  46. Map<Class<? extends Entity>, Integer> entityTypeCount = new HashMap<>();
  47. for (Entity entity : world.entityList) {
  48. Integer integer = entityTypeCount.get(entity.getClass());
  49. if (integer == null) {
  50. integer = 0;
  51. }
  52. integer++;
  53. entityTypeCount.put(entity.getClass(), integer);
  54. }
  55. for (Map.Entry<Class<? extends Entity>, Integer> entityCount : entityTypeCount.entrySet()) {
  56. send("Entity(%s) occurs %d %s", entityCount.getKey().getSimpleName(), entityCount.getValue(), entityCount.getValue() > 1 ? "times" : "time");
  57. }
  58.  
  59. Map<Class<? extends TileEntity>, Integer> tileEntityTypeCount = new HashMap<>();
  60. for (TileEntity tileEntity : world.tileEntityList) {
  61. Integer integer = tileEntityTypeCount.get(tileEntity.getClass());
  62. if (integer == null) {
  63. integer = 0;
  64. }
  65. integer++;
  66. tileEntityTypeCount.put(tileEntity.getClass(), integer);
  67. }
  68. for (Map.Entry<Class<? extends TileEntity>, Integer> tileEntityCount : tileEntityTypeCount.entrySet()) {
  69. send("TileEntity(%s) occurs %d %s", tileEntityCount.getKey().getSimpleName(), tileEntityCount.getValue(), tileEntityCount.getValue() > 1 ? "times" : "time");
  70. }
  71. }
  72.  
  73. public static class Utils {
  74.  
  75. public static CraftServer getCraftServer() {
  76. return (CraftServer) Bukkit.getServer();
  77. }
  78.  
  79. public static MinecraftServer getMinecraftServer() {
  80. return getCraftServer().getServer();
  81. }
  82.  
  83. public static List<WorldServer> getMinecraftWorlds() {
  84. List<WorldServer> worlds = new ArrayList<>();
  85. for (org.bukkit.World world : getCraftServer().getWorlds()) {
  86. if (world instanceof CraftWorld) {
  87. worlds.add(((CraftWorld)world).getHandle());
  88. }
  89. }
  90. return worlds;
  91. }
  92.  
  93. public static WorldServer findWorld(Player player) {
  94. String name = player.getWorld().getName();
  95. for (WorldServer worldServer : getMinecraftWorlds()) {
  96. if (worldServer.worldData.getName().equals(name)) {
  97. return worldServer;
  98. }
  99. }
  100. return null;
  101. }
  102.  
  103. }
  104.  
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement