mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-23 17:09:29 +00:00
121 lines
5.4 KiB
Diff
121 lines
5.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: wangxyper <wangxyper@163.com>
|
|
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<String,Integer> 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<String,Integer> 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<Entity> entityManager; // Paper - rewrite chunk system
|
|
private final GameEventDispatcher gameEventDispatcher;
|
|
public boolean noSave;
|
|
diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
|
|
index f7e8b6e1872a397c96afc938754726b0d4e493b4..2448673ee847fe3bc05f1269737aae5b43ae8291 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/EntityType.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/EntityType.java
|
|
@@ -308,6 +308,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
|
|
return (EntityType) Registry.register(BuiltInRegistries.ENTITY_TYPE, id, (EntityType<T>) type.build(id)); // CraftBukkit - decompile error
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ public static EntityType<?> getFromBukkitType(org.bukkit.entity.EntityType bukkitType) {
|
|
+ return getFromKey(new ResourceLocation(bukkitType.getKey().toString()));
|
|
+ }
|
|
+
|
|
+ public static EntityType<?> getFromKey(ResourceLocation location) {
|
|
+ return BuiltInRegistries.ENTITY_TYPE.get(location);
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
public static ResourceLocation getKey(EntityType<?> type) {
|
|
return BuiltInRegistries.ENTITY_TYPE.getKey(type);
|
|
}
|
|
@@ -522,6 +532,16 @@ public class EntityType<T extends Entity> implements FeatureElement, EntityTypeT
|
|
return this.category;
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ public String getName() {
|
|
+ return BuiltInRegistries.ENTITY_TYPE.getKey(this).getPath();
|
|
+ }
|
|
+
|
|
+ public String getTranslatedName() {
|
|
+ return getDescription().getString();
|
|
+ }
|
|
+ // Purpur end
|
|
+
|
|
public String getDescriptionId() {
|
|
if (this.descriptionId == null) {
|
|
this.descriptionId = Util.makeDescriptionId("entity", BuiltInRegistries.ENTITY_TYPE.getKey(this));
|