diff --git a/common/src/main/java/mod/adrenix/nostalgic/client/ClientKeyMapping.java b/common/src/main/java/mod/adrenix/nostalgic/client/ClientKeyMapping.java index b2ccbcd39..3dcb08c8a 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/client/ClientKeyMapping.java +++ b/common/src/main/java/mod/adrenix/nostalgic/client/ClientKeyMapping.java @@ -5,8 +5,11 @@ import dev.architectury.event.events.client.ClientScreenInputEvent; import dev.architectury.event.events.client.ClientTickEvent; import dev.architectury.registry.client.keymappings.KeyMappingRegistry; +import mod.adrenix.nostalgic.NostalgicTweaks; import mod.adrenix.nostalgic.client.gui.screen.home.HomeScreen; import mod.adrenix.nostalgic.mixin.access.MusicManagerAccess; +import mod.adrenix.nostalgic.tweak.config.CandyTweak; +import mod.adrenix.nostalgic.tweak.config.ModTweak; import mod.adrenix.nostalgic.tweak.gui.KeybindingId; import mod.adrenix.nostalgic.util.client.KeyboardUtil; import mod.adrenix.nostalgic.util.common.ClassUtil; @@ -48,6 +51,11 @@ public abstract class ClientKeyMapping */ public static final KeyMapping STOP_SONG_KEY = new KeyMapping(Lang.Binding.STOP_SONG.getString(), -1, Lang.TITLE.getString()); + /** + * The toggle key, when pressed, toggles the mod between the enabled and disabled state. + */ + public static final KeyMapping TOGGLE_KEY = new KeyMapping(Lang.Binding.TOGGLE_KEY.getString(), InputConstants.KEY_HOME, Lang.TITLE.getString()); + /** * Get a key mapping based on the given {@link KeybindingId}. * @@ -62,6 +70,7 @@ public static KeyMapping getFromId(KeybindingId id) case FOG -> FOG_KEY; case NEXT_SONG -> NEXT_SONG_KEY; case STOP_SONG -> STOP_SONG_KEY; + case TOGGLE -> TOGGLE_KEY; }; } @@ -74,6 +83,7 @@ public static void register() KeyMappingRegistry.register(FOG_KEY); KeyMappingRegistry.register(STOP_SONG_KEY); KeyMappingRegistry.register(NEXT_SONG_KEY); + KeyMappingRegistry.register(TOGGLE_KEY); ClientScreenInputEvent.KEY_PRESSED_POST.register((minecraft, screen, keyCode, scanCode, modifiers) -> { Function isBindingMatched = (translation) -> { @@ -100,6 +110,12 @@ public static void register() return EventResult.pass(); } + if (isBindingMatched.apply(Lang.Binding.TOGGLE_KEY)) + { + toggleEnabled(minecraft); + return EventResult.pass(); + } + return EventResult.pass(); }); @@ -115,6 +131,9 @@ public static void register() while (NEXT_SONG_KEY.consumeClick()) playNewSong(minecraft); + + while (TOGGLE_KEY.consumeClick()) + toggleEnabled(minecraft); }); } @@ -170,4 +189,11 @@ private static void playNewSong(Minecraft minecraft) minecraft.getMusicManager().stopPlaying(); ((MusicManagerAccess) minecraft.getMusicManager()).nt$setNextSongDelay(0); } + + private static void toggleEnabled(Minecraft minecraft) + { + boolean newValue = !ModTweak.ENABLED.get(); + ModTweak.ENABLED.setCacheAndDiskThenSave(newValue); + AfterConfigSave.reloadAndRun(); + } } diff --git a/common/src/main/java/mod/adrenix/nostalgic/tweak/gui/KeybindingId.java b/common/src/main/java/mod/adrenix/nostalgic/tweak/gui/KeybindingId.java index 6ccdb5b7a..88a3cc513 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/tweak/gui/KeybindingId.java +++ b/common/src/main/java/mod/adrenix/nostalgic/tweak/gui/KeybindingId.java @@ -8,5 +8,6 @@ public enum KeybindingId CONFIG, FOG, NEXT_SONG, - STOP_SONG + STOP_SONG, + TOGGLE, } diff --git a/common/src/main/java/mod/adrenix/nostalgic/util/common/lang/Lang.java b/common/src/main/java/mod/adrenix/nostalgic/util/common/lang/Lang.java index 5fe69324e..2206d2164 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/util/common/lang/Lang.java +++ b/common/src/main/java/mod/adrenix/nostalgic/util/common/lang/Lang.java @@ -53,6 +53,7 @@ interface Binding Translation STOP_SONG = new Translation("key.nostalgic_tweaks.stop_song"); Translation NEXT_SONG = new Translation("key.nostalgic_tweaks.next_song"); Translation UNBOUND = new Translation("key.nostalgic_tweaks.unbound"); + Translation TOGGLE_KEY = new Translation("key.nostalgic_tweaks.toggle_key"); } /* Vanilla */