[Feature] /bclib print dimensions command

This commit is contained in:
Frank 2022-07-10 01:06:22 +02:00
parent 8f9c33e378
commit f6aa62547f
3 changed files with 62 additions and 4 deletions

View file

@ -48,6 +48,13 @@ public class CommandRegistry {
.requires(source -> source.hasPermission(Commands.LEVEL_OWNERS))
.executes(ctx -> DumpDatapack.dumpDatapack(ctx))
)
.then(Commands.literal("print")
.requires(source -> source.hasPermission(Commands.LEVEL_OWNERS))
.then(Commands.literal("dimensions")
.requires(source -> source.hasPermission(Commands.LEVEL_OWNERS))
.executes(ctx -> PrintInfo.printDimensions(ctx))
)
)
.then(Commands.literal("debug_ore")
.requires(source -> source.hasPermission(Commands.LEVEL_OWNERS))
.executes(ctx -> revealOre(ctx))

View file

@ -13,6 +13,8 @@ import com.mojang.serialization.codecs.KeyDispatchCodec;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.core.Holder;
import net.minecraft.core.RegistryAccess;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style;
import net.minecraft.resources.RegistryOps;
import net.minecraft.tags.TagEntry;
import net.minecraft.tags.TagFile;
@ -45,24 +47,32 @@ import java.nio.file.Files;
public class DumpDatapack {
static int dumpDatapack(CommandContext<CommandSourceStack> ctx) {
dumpDatapack(ctx.getSource().getLevel().registryAccess());
File base = new File(System.getProperty("user.dir"), "bclib_datapack_dump");
dumpDatapack(base, ctx.getSource().getLevel().registryAccess());
ctx.getSource().sendSuccess(
Component.literal("Succesfully written to:\n ").append(
Component.literal(base.toString()).setStyle(Style.EMPTY.withUnderlined(true))
),
false
);
return Command.SINGLE_SUCCESS;
}
public static void dumpDatapack(RegistryAccess registryAccess) {
public static void dumpDatapack(File base, RegistryAccess registryAccess) {
final RegistryOps<JsonElement> registryOps = RegistryOps.create(JsonOps.INSTANCE, registryAccess);
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder = gsonBuilder.setPrettyPrinting();
Gson gson = gsonBuilder.create();
registryAccess.registries().forEach(r -> dumpDatapack(r, registryOps, gson));
registryAccess.registries().forEach(r -> dumpDatapack(base, r, registryOps, gson));
}
private static <T> void dumpDatapack(
File base,
RegistryAccess.RegistryEntry<T> registry,
RegistryOps<JsonElement> registryOps,
Gson gson
) {
File base = new File(System.getProperty("user.dir"), "bclib_datapack_dump");
BCLib.LOGGER.info(registry.key().toString());
// Tag Output
registry.value()
@ -261,5 +271,6 @@ public class DumpDatapack {
BCLib.LOGGER.error(" !!! Could not determine Codec: " + obj.getClass());
}
});
}
}

View file

@ -0,0 +1,40 @@
package org.betterx.bclib.commands;
import com.mojang.brigadier.Command;
import com.mojang.brigadier.context.CommandContext;
import net.minecraft.ChatFormatting;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.network.chat.Style;
import net.minecraft.world.level.Level;
public class PrintInfo {
static int printDimensions(CommandContext<CommandSourceStack> ctx) {
MutableComponent result = Component.literal("World Dimensions: ")
.setStyle(Style.EMPTY.withBold(true).withColor(ChatFormatting.BLUE));
for (var serverLevel : ctx.getSource().getLevel().getServer().getAllLevels()) {
var generator = serverLevel.getChunkSource().getGenerator();
String output = "\n - " + serverLevel.dimension().location().toString() + ": " +
"\n " + generator.toString().trim() + " " +
generator
.getBiomeSource()
.toString()
.replace("\n", "\n ");
var cl = ChatFormatting.LIGHT_PURPLE;
if (serverLevel.dimension().location().equals(Level.OVERWORLD.location()))
cl = ChatFormatting.WHITE;
else if (serverLevel.dimension().location().equals(Level.NETHER.location()))
cl = ChatFormatting.RED;
if (serverLevel.dimension().location().equals(Level.END.location()))
cl = ChatFormatting.YELLOW;
Component dimComponent = Component.literal(output)
.setStyle(Style.EMPTY.withBold(false).withColor(cl));
result.append(dimComponent);
}
ctx.getSource().sendSuccess(result, false);
return Command.SINGLE_SUCCESS;
}
}