mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-28 03:19:14 +00:00
增强debug分配情况
This commit is contained in:
@@ -20,7 +20,9 @@ import org.incendo.cloud.suggestion.Suggestion;
|
||||
import org.incendo.cloud.suggestion.SuggestionProvider;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class DebugAppearanceStateUsageCommand extends BukkitCommandFeature<CommandSender> {
|
||||
@@ -48,18 +50,30 @@ public class DebugAppearanceStateUsageCommand extends BukkitCommandFeature<Comma
|
||||
Component block = Component.text(baseBlockId + ": ");
|
||||
plugin().senderFactory().wrap(context.sender()).sendMessage(block);
|
||||
VisualBlockStateAllocator allocator = blockManager.blockParser().visualBlockStateAllocator();
|
||||
Map<String, BlockStateWrapper> cachedStates = allocator.cachedBlockStates();
|
||||
Map<BlockStateWrapper, String> reversed = new HashMap<>(cachedStates.size());
|
||||
for (Map.Entry<String, BlockStateWrapper> entry : cachedStates.entrySet()) {
|
||||
reversed.put(entry.getValue(), entry.getKey());
|
||||
}
|
||||
List<Component> batch = new ArrayList<>();
|
||||
for (BlockStateWrapper appearance : appearances) {
|
||||
Component text = Component.text("|");
|
||||
List<Integer> reals = blockManager.appearanceToRealStates(appearance.registryId());
|
||||
if (reals.isEmpty()) {
|
||||
Component hover = Component.text(baseBlockId.value() + ":" + i).color(NamedTextColor.GREEN);
|
||||
hover = hover.append(Component.newline()).append(Component.text(appearance.getAsString()).color(NamedTextColor.GREEN));
|
||||
text = text.color(NamedTextColor.GREEN).hoverEvent(HoverEvent.showText(hover));
|
||||
String cached = reversed.get(appearance);
|
||||
if (cached != null) {
|
||||
Component hover = Component.text("[Inactive] " + baseBlockId.value() + ":" + i).color(NamedTextColor.GRAY);
|
||||
hover = hover.append(Component.newline()).append(Component.text(cached).color(NamedTextColor.GRAY));
|
||||
text = text.color(NamedTextColor.GRAY).hoverEvent(HoverEvent.showText(hover));
|
||||
} else {
|
||||
Component hover = Component.text("[Available] " + baseBlockId.value() + ":" + i).color(NamedTextColor.GREEN);
|
||||
hover = hover.append(Component.newline()).append(Component.text(appearance.getAsString()).color(NamedTextColor.GREEN));
|
||||
text = text.color(NamedTextColor.GREEN).hoverEvent(HoverEvent.showText(hover));
|
||||
}
|
||||
} else {
|
||||
boolean isFixed = allocator.isForcedState(appearance);
|
||||
NamedTextColor namedTextColor = isFixed ? NamedTextColor.RED : NamedTextColor.YELLOW;
|
||||
Component hover = Component.text(baseBlockId.value() + ":" + i).color(namedTextColor);
|
||||
boolean forced = allocator.isForcedState(appearance);
|
||||
NamedTextColor namedTextColor = forced ? NamedTextColor.RED : NamedTextColor.YELLOW;
|
||||
Component hover = Component.text((forced ? "[Forced] " : "[Auto] ") + baseBlockId.value() + ":" + i).color(namedTextColor);
|
||||
List<Component> hoverChildren = new ArrayList<>();
|
||||
hoverChildren.add(Component.newline());
|
||||
hoverChildren.add(Component.text(appearance.getAsString()).color(namedTextColor));
|
||||
|
||||
@@ -14,8 +14,7 @@ import net.momirealms.craftengine.core.plugin.config.Config;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.incendo.cloud.Command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
public class DebugRealStateUsageCommand extends BukkitCommandFeature<CommandSender> {
|
||||
|
||||
@@ -31,16 +30,34 @@ public class DebugRealStateUsageCommand extends BukkitCommandFeature<CommandSend
|
||||
plugin().senderFactory().wrap(context.sender()).sendMessage(Component.text("Serverside block state usage:"));
|
||||
List<Component> batch = new ArrayList<>(100);
|
||||
IdAllocator idAllocator = blockManager.blockParser().internalIdAllocator();
|
||||
Map<String, Integer> cachedIds = idAllocator.cachedIdMap();
|
||||
Map<Integer, String> reversedCachedIds = new HashMap<>(cachedIds.size());
|
||||
for (Map.Entry<String, Integer> entry : cachedIds.entrySet()) {
|
||||
reversedCachedIds.put(entry.getValue(), entry.getKey());
|
||||
}
|
||||
for (int i = 0; i < Config.serverSideBlocks(); i++) {
|
||||
ImmutableBlockState state = blockManager.getImmutableBlockStateUnsafe(i + blockManager.vanillaBlockStateCount());
|
||||
if (state.isEmpty()) {
|
||||
Component hover = Component.text(BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.GREEN);
|
||||
batch.add(Component.text("|").color(NamedTextColor.GREEN).hoverEvent(HoverEvent.showText(hover)));
|
||||
String cached = reversedCachedIds.get(i);
|
||||
if (cached == null) {
|
||||
Component hover = Component.text("[Available] " + BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.GREEN);
|
||||
batch.add(Component.text("|").color(NamedTextColor.GREEN).hoverEvent(HoverEvent.showText(hover)));
|
||||
} else {
|
||||
Component hover = Component.text(BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.GRAY);
|
||||
hover = hover.append(Component.newline()).append(Component.text("[Inactive] " + cached).color(NamedTextColor.GRAY));
|
||||
batch.add(Component.text("|").color(NamedTextColor.GRAY).hoverEvent(HoverEvent.showText(hover)));
|
||||
}
|
||||
} else {
|
||||
NamedTextColor namedTextColor = idAllocator.isForced(state.toString()) ? NamedTextColor.RED : NamedTextColor.YELLOW;
|
||||
Component hover = Component.text(BlockManager.createCustomBlockKey(i).asString()).color(namedTextColor);
|
||||
hover = hover.append(Component.newline()).append(Component.text(state.toString()).color(NamedTextColor.GRAY));
|
||||
batch.add(Component.text("|").color(namedTextColor).hoverEvent(HoverEvent.showText(hover)));
|
||||
boolean forced = idAllocator.isForced(state.toString());
|
||||
if (forced) {
|
||||
Component hover = Component.text("[Forced] " + BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.RED);
|
||||
hover = hover.append(Component.newline()).append(Component.text(state.toString()).color(NamedTextColor.GRAY));
|
||||
batch.add(Component.text("|").color(NamedTextColor.RED).hoverEvent(HoverEvent.showText(hover)));
|
||||
} else {
|
||||
Component hover = Component.text("[Auto] " + BlockManager.createCustomBlockKey(i).asString()).color(NamedTextColor.YELLOW);
|
||||
hover = hover.append(Component.newline()).append(Component.text(state.toString()).color(NamedTextColor.GRAY));
|
||||
batch.add(Component.text("|").color(NamedTextColor.YELLOW).hoverEvent(HoverEvent.showText(hover)));
|
||||
}
|
||||
}
|
||||
if (batch.size() == 100) {
|
||||
plugin().senderFactory().wrap(context.sender())
|
||||
|
||||
Reference in New Issue
Block a user