56 lines
2.5 KiB
Java
56 lines
2.5 KiB
Java
package io.gitlab.jfronny.respackopts.util;
|
|
|
|
import io.gitlab.jfronny.respackopts.Respackopts;
|
|
import net.fabricmc.loader.api.FabricLoader;
|
|
import net.fabricmc.loader.api.ModContainer;
|
|
import net.minecraft.text.Text;
|
|
import net.minecraft.text.TranslatableText;
|
|
|
|
import java.io.BufferedWriter;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.StandardOpenOption;
|
|
|
|
import static net.fabricmc.fabric.api.client.command.v1.ClientCommandManager.*;
|
|
|
|
public class RpoCommand {
|
|
private static final ModContainer respackopts = FabricLoader.getInstance().getModContainer(Respackopts.ID).get();
|
|
public static void register() {
|
|
DISPATCHER.register(literal("rpo").then(literal("dump").then(literal("glsl").executes(ctx -> {
|
|
ctx.getSource().sendFeedback(dump(Respackopts.getShaderImportSource(), "frex.glsl"));
|
|
return 1;
|
|
}))));
|
|
DISPATCHER.register(literal("rpo").then(literal("dump").then(literal("config").executes(ctx -> {
|
|
MetaCache.forEach((id, branch) -> ctx.getSource().sendFeedback(dump(branch.toString(), id + ".txt")));
|
|
return 1;
|
|
}))));
|
|
DISPATCHER.register(literal("rpo").then(literal("dump").executes(ctx -> {
|
|
MetaCache.forEach((id, branch) -> ctx.getSource().sendFeedback(dump(branch.toString(), id + ".txt")));
|
|
return 1;
|
|
})));
|
|
DISPATCHER.register(literal("rpo").then(literal("version").executes(ctx -> {
|
|
ctx.getSource().sendFeedback(new TranslatableText("respackopts.versionText", respackopts.getMetadata().getVersion(), Respackopts.META_VERSION));
|
|
return 1;
|
|
})));
|
|
DISPATCHER.register(literal("rpo").executes(ctx -> {
|
|
ctx.getSource().sendFeedback(new TranslatableText("respackopts.versionText", respackopts.getMetadata().getVersion(), Respackopts.META_VERSION));
|
|
return 1;
|
|
}));
|
|
}
|
|
|
|
private static final Path dumpPath = FabricLoader.getInstance().getGameDir().resolve("respackopts");
|
|
private static Text dump(String text, String fileName) {
|
|
try {
|
|
if (!Files.exists(dumpPath)) Files.createDirectories(dumpPath);
|
|
Path filePath = dumpPath.resolve(fileName);
|
|
try (BufferedWriter bw = Files.newBufferedWriter(filePath, StandardOpenOption.CREATE)) {
|
|
bw.write(text);
|
|
}
|
|
return new TranslatableText("respackopts.dumpSucceeded", filePath.toAbsolutePath());
|
|
}
|
|
catch (Throwable e) {
|
|
return new TranslatableText("respackopts.dumpFailed");
|
|
}
|
|
}
|
|
}
|