From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: wangxyper Date: Fri, 13 Jan 2023 15:49:11 +0800 Subject: [PATCH] Hearse: Add new command Original license: MIT Original project: https://github.com/NaturalCodeClub/HearseRewrite diff --git a/src/main/java/co/earthme/hearse/Hearse.java b/src/main/java/co/earthme/hearse/Hearse.java index 79116449c221e0748e938f40366af03f93a4ab9f..692fef51b2f15dd1ddc28773a381b9da3b42725e 100644 --- a/src/main/java/co/earthme/hearse/Hearse.java +++ b/src/main/java/co/earthme/hearse/Hearse.java @@ -1,5 +1,6 @@ package co.earthme.hearse; +import co.earthme.hearse.commands.EntityCountCommand; import co.earthme.hearse.commands.WorkerCommand; import co.earthme.hearse.server.ServerEntityTickHook; import co.earthme.hearse.workers.WorkerThreadPoolManager; @@ -12,6 +13,7 @@ public class Hearse { HearseConfig.init(); ServerEntityTickHook.init(); MinecraftServer.getServer().server.getCommandMap().register("workers","hearse",new WorkerCommand()); + MinecraftServer.getServer().server.getCommandMap().register("entitycount","hearse",new EntityCountCommand()); } public static void onServerStop(){ diff --git a/src/main/java/co/earthme/hearse/commands/EntityCountCommand.java b/src/main/java/co/earthme/hearse/commands/EntityCountCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..563485b8c657a7a96ff3a391c8fa19159e6dd8f6 --- /dev/null +++ b/src/main/java/co/earthme/hearse/commands/EntityCountCommand.java @@ -0,0 +1,36 @@ +package co.earthme.hearse.commands; + +import com.google.common.collect.Maps; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; +import java.util.Map; + +public class EntityCountCommand extends Command { + public EntityCountCommand() { + super("entitycount"); + } + + @Override + public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) { + final Map counts = Maps.newHashMap(); + for (ServerLevel level : MinecraftServer.getServer().getAllLevels()){ + for (Entity entity : level.entityTickList.entities){ + final String name = entity.getType().getName(); + if (!counts.containsKey(name)){ + counts.put(name,0); + } + counts.replace(name,counts.get(name)); + } + } + sender.sendMessage("Exists entity Counts:"); + for (Map.Entry entry : counts.entrySet()){ + sender.sendMessage(ChatColor.BLUE+String.format("%s:%s",entry.getKey(),entry.getValue())); + } + return true; + } +} diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java index ac92d1b36590bcc491d56a1eb442477c8f6e2d11..39c3aaf91514bd8a2f9f04496e25a6253442939f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -146,7 +146,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public final ServerChunkCache chunkSource; private final MinecraftServer server; public final PrimaryLevelData serverLevelData; // CraftBukkit - type - final EntityTickList entityTickList; + public final EntityTickList entityTickList; //public final PersistentEntitySectionManager entityManager; // Paper - rewrite chunk system private final GameEventDispatcher gameEventDispatcher; public boolean noSave;