diff options
Diffstat (limited to 'src/main/java/shcm/shsupercm/fabric/citresewn')
3 files changed, 58 insertions, 2 deletions
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewn.java b/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewn.java index 9ee05e4..e53ba52 100644 --- a/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewn.java +++ b/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewn.java @@ -3,8 +3,6 @@ package shcm.shsupercm.fabric.citresewn; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.loader.api.FabricLoader; -import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig; @@ -26,6 +24,8 @@ public class CITResewn implements ClientModInitializer { INSTANCE = this; config = CITResewnConfig.read(); + + CITResewnCommand.register(); } public static void info(String message) { diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewnCommand.java b/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewnCommand.java new file mode 100644 index 0000000..483cbfb --- /dev/null +++ b/src/main/java/shcm/shsupercm/fabric/citresewn/CITResewnCommand.java @@ -0,0 +1,33 @@ +package shcm.shsupercm.fabric.citresewn; + +import net.fabricmc.fabric.api.client.command.v1.ClientCommandManager; +import net.fabricmc.loader.api.FabricLoader; +import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig; + +import static net.fabricmc.fabric.api.client.command.v1.ClientCommandManager.literal; +import static net.minecraft.text.Text.of; + +public class CITResewnCommand { + public static boolean openConfig = false; + + public static void register() { + ClientCommandManager.DISPATCHER.register(literal("citresewn") + .executes(context -> { + context.getSource().sendFeedback(of("CIT Resewn v" + FabricLoader.getInstance().getModContainer("citresewn").get().getMetadata().getVersion() + ":")); + boolean active = CITResewnConfig.INSTANCE().enabled && CITResewn.INSTANCE.activeCITs != null; + context.getSource().sendFeedback(of(" Active: " + (active ? "yes" : "no"))); + if (active) { + context.getSource().sendFeedback(of(" Loaded: " + CITResewn.INSTANCE.activeCITs.cits.size() + " CITs from " + CITResewn.INSTANCE.activeCITs.packs.size() + " resourcepacks")); + } + context.getSource().sendFeedback(of(" ")); + + return 1; + }) + .then(literal("config") + .executes(context -> { + openConfig = true; + + return 1; + }))); + } +} diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ChatScreenMixin.java b/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ChatScreenMixin.java new file mode 100644 index 0000000..cdd9eb1 --- /dev/null +++ b/src/main/java/shcm/shsupercm/fabric/citresewn/mixin/core/ChatScreenMixin.java @@ -0,0 +1,23 @@ +package shcm.shsupercm.fabric.citresewn.mixin.core; + +import net.minecraft.client.gui.screen.ChatScreen; +import net.minecraft.client.gui.screen.Screen; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import shcm.shsupercm.fabric.citresewn.OptionalCompat; + +import static shcm.shsupercm.fabric.citresewn.CITResewnCommand.openConfig; + +@Mixin(ChatScreen.class) +public class ChatScreenMixin { + @ModifyArg(method = "keyPressed", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;setScreen(Lnet/minecraft/client/gui/screen/Screen;)V")) + public Screen redirectConfigScreen(Screen original) { + if (original == null && openConfig) { + openConfig = false; + return OptionalCompat.getModConfigScreenFactory().apply(null); + } + + return original; + } +} |