From d2cc095d282503b3dc7301f8552b476dce78b99c Mon Sep 17 00:00:00 2001 From: quat1024 Date: Fri, 27 Oct 2023 23:41:46 -0400 Subject: [PATCH] Remove ModKeybindHandler, get everything onto ZKeyMapping. Also remove modifiers support sadly since it's a Forge extension :pensive: --- .../java/vazkii/quark/base/QuarkClient.java | 6 +- .../handler/InventoryButtonHandler.java | 3 +- .../client/handler/ModKeybindHandler.java | 92 ------------------- .../client/util/PredicatedKeyBinding.java | 27 ------ .../util/SortedPredicatedKeyBinding.java | 26 ------ .../client/module/AutoWalkKeybindModule.java | 3 +- .../module/BackButtonKeybindModule.java | 5 +- .../content/client/module/CameraModule.java | 4 +- .../module/NarratorReadoutModule.java | 5 +- .../module/VariantSelectorModule.java | 4 +- .../module/EasyTransferingModule.java | 4 +- .../module/HotbarChangerModule.java | 4 +- .../module/InventorySortingModule.java | 6 +- .../content/tweaks/module/EmotesModule.java | 6 +- .../tweaks/module/LockRotationModule.java | 4 +- .../vazkii/zeta/client/event/ZKeyMapping.java | 54 ++++++++++- .../zeta/client/key/PredicatedKeyBinding.java | 24 +++++ .../client/key}/SortedKeyBinding.java | 5 +- .../key/SortedPredicatedKeyBinding.java | 23 +++++ .../vazkii/zeta/recipe/ZetaDyeRecipe.java | 1 + .../event/client/ForgeZKeyMapping.java | 3 +- .../registry/ForgeBrewingRegistry.java | 1 + 22 files changed, 133 insertions(+), 177 deletions(-) delete mode 100644 src/main/java/vazkii/quark/base/client/handler/ModKeybindHandler.java delete mode 100644 src/main/java/vazkii/quark/base/client/util/PredicatedKeyBinding.java delete mode 100644 src/main/java/vazkii/quark/base/client/util/SortedPredicatedKeyBinding.java create mode 100644 src/main/java/vazkii/zeta/client/key/PredicatedKeyBinding.java rename src/main/java/vazkii/{quark/base/client/util => zeta/client/key}/SortedKeyBinding.java (81%) create mode 100644 src/main/java/vazkii/zeta/client/key/SortedPredicatedKeyBinding.java diff --git a/src/main/java/vazkii/quark/base/QuarkClient.java b/src/main/java/vazkii/quark/base/QuarkClient.java index dae6f65da5..e4dc374064 100644 --- a/src/main/java/vazkii/quark/base/QuarkClient.java +++ b/src/main/java/vazkii/quark/base/QuarkClient.java @@ -5,8 +5,6 @@ import vazkii.zeta.util.ZetaSide; import vazkii.zetaimplforge.client.ForgeZetaClient; -//ngl this is mainly a place to hold ZetaClient... which has side effect in constructor -//this is kludgy, i dont like it public class QuarkClient { static { @@ -19,6 +17,10 @@ public class QuarkClient { public static final ZetaClient ZETA_CLIENT = new ForgeZetaClient(Quark.ZETA); public static final ClientTicker ticker = ZETA_CLIENT.ticker; + public static final String MISC_GROUP = "quark.gui.keygroup.misc"; + public static final String INV_GROUP = "quark.gui.keygroup.inv"; + public static final String EMOTE_GROUP = "quark.gui.keygroup.emote"; + public static void start() { instance = new QuarkClient(); diff --git a/src/main/java/vazkii/quark/base/client/handler/InventoryButtonHandler.java b/src/main/java/vazkii/quark/base/client/handler/InventoryButtonHandler.java index 4b3d72e823..6dbcd3fd1c 100644 --- a/src/main/java/vazkii/quark/base/client/handler/InventoryButtonHandler.java +++ b/src/main/java/vazkii/quark/base/client/handler/InventoryButtonHandler.java @@ -32,6 +32,7 @@ import vazkii.quark.addons.oddities.client.screen.BackpackInventoryScreen; import vazkii.quark.api.IQuarkButtonAllowed; import vazkii.quark.base.Quark; +import vazkii.quark.base.QuarkClient; import vazkii.quark.base.handler.GeneralConfig; import vazkii.quark.base.handler.InventoryTransferHandler; import vazkii.zeta.module.ZetaModule; @@ -162,7 +163,7 @@ public static void addButtonProvider(ZetaModule module, ButtonTargetType type, i } public static void addButtonProvider(ZKeyMapping event, ZetaModule module, ButtonTargetType type, int priority, String keybindName, Consumer> onKeybind, ButtonProvider provider, Supplier enableCond) { - KeyMapping keybind = ModKeybindHandler.init(event, keybindName, null, ModKeybindHandler.INV_GROUP); + KeyMapping keybind = event.init(keybindName, null, QuarkClient.INV_GROUP); keybind.setKeyConflictContext(KeyConflictContext.GUI); addButtonProvider(module, type, priority, keybind, onKeybind, provider, enableCond); } diff --git a/src/main/java/vazkii/quark/base/client/handler/ModKeybindHandler.java b/src/main/java/vazkii/quark/base/client/handler/ModKeybindHandler.java deleted file mode 100644 index 88ece59d06..0000000000 --- a/src/main/java/vazkii/quark/base/client/handler/ModKeybindHandler.java +++ /dev/null @@ -1,92 +0,0 @@ -package vazkii.quark.base.client.handler; - -import java.util.function.BiPredicate; - -import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.platform.InputConstants.Type; - -import net.minecraft.client.KeyMapping; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.settings.KeyModifier; -import vazkii.quark.base.client.util.PredicatedKeyBinding; -import vazkii.quark.base.client.util.SortedKeyBinding; -import vazkii.quark.base.client.util.SortedPredicatedKeyBinding; -import vazkii.zeta.client.event.ZKeyMapping; - -@OnlyIn(Dist.CLIENT) -public class ModKeybindHandler { - - public static final String MISC_GROUP = "quark.gui.keygroup.misc"; - public static final String INV_GROUP = "quark.gui.keygroup.inv"; - public static final String EMOTE_GROUP = "quark.gui.keygroup.emote"; - - public static KeyMapping init(ZKeyMapping event, String s, String key, String group) { - return init(event, s, key, "key.keyboard.", group, true); - } - - public static KeyMapping init(ZKeyMapping event, String s, String key, String group, int sortPriority) { - return init(event, s, key, "key.keyboard.", group, sortPriority, true); - } - - public static KeyMapping init(ZKeyMapping event, String s, String key, String group, BiPredicate allowed) { - return init(event, s, key, "key.keyboard.", group, true); - } - - public static KeyMapping init(ZKeyMapping event, String s, String key, String group, int sortPriority, BiPredicate allowed) { - return init(event, s, key, "key.keyboard.", group, sortPriority, true); - } - - public static KeyMapping initMouse(ZKeyMapping event, String s, int key, String group) { - return init(event, s, Integer.toString(key), "key.mouse.", group, true); - } - - public static KeyMapping initMouse(ZKeyMapping event, String s, int key, String group, int sortPriority) { - return init(event, s, Integer.toString(key), "key.mouse.", group, sortPriority, true); - } - - public static KeyMapping initMouse(ZKeyMapping event, String s, int key, String group, BiPredicate allowed) { - return init(event, s, Integer.toString(key), "key.mouse.", group, true, allowed); - } - - public static KeyMapping initMouse(ZKeyMapping event, String s, int key, String group, int sortPriority, BiPredicate allowed) { - return init(event, s, Integer.toString(key), "key.mouse.", group, sortPriority, true, allowed); - } - - public static KeyMapping init(ZKeyMapping event, String s, String key, String keyType, String group, boolean prefix) { - KeyMapping kb = new KeyMapping(prefix ? ("quark.keybind." + s) : s, (keyType.contains("mouse") ? Type.MOUSE : Type.KEYSYM), - (key == null ? InputConstants.UNKNOWN : - InputConstants.getKey(keyType + key)).getValue(), - group); - event.register(kb); - return kb; - } - - public static KeyMapping init(ZKeyMapping event, String s, String key, String keyType, String group, int sortPriority, boolean prefix) { - KeyMapping kb = new SortedKeyBinding(prefix ? ("quark.keybind." + s) : s, (keyType.contains("mouse") ? Type.MOUSE : Type.KEYSYM), - (key == null ? InputConstants.UNKNOWN : - InputConstants.getKey(keyType + key)).getValue(), - group, sortPriority); - event.register(kb); - return kb; - } - - public static KeyMapping init(ZKeyMapping event, String s, String key, String keyType, String group, int sortPriority, boolean prefix, BiPredicate allowed) { - KeyMapping kb = new SortedPredicatedKeyBinding(prefix ? ("quark.keybind." + s) : s, (keyType.contains("mouse") ? Type.MOUSE : Type.KEYSYM), - (key == null ? InputConstants.UNKNOWN : - InputConstants.getKey(keyType + key)).getValue(), - group, sortPriority, allowed); - event.register(kb); - return kb; - } - - public static KeyMapping init(ZKeyMapping event, String s, String key, String keyType, String group, boolean prefix, BiPredicate allowed) { - KeyMapping kb = new PredicatedKeyBinding(prefix ? ("quark.keybind." + s) : s, (keyType.contains("mouse") ? Type.MOUSE : Type.KEYSYM), - (key == null ? InputConstants.UNKNOWN : - InputConstants.getKey(keyType + key)).getValue(), - group, allowed); - event.register(kb); - return kb; - } - -} diff --git a/src/main/java/vazkii/quark/base/client/util/PredicatedKeyBinding.java b/src/main/java/vazkii/quark/base/client/util/PredicatedKeyBinding.java deleted file mode 100644 index 8fafcce2b5..0000000000 --- a/src/main/java/vazkii/quark/base/client/util/PredicatedKeyBinding.java +++ /dev/null @@ -1,27 +0,0 @@ -package vazkii.quark.base.client.util; - -import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.platform.InputConstants.Type; -import net.minecraft.client.KeyMapping; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.settings.KeyModifier; - -import javax.annotation.Nonnull; -import java.util.function.BiPredicate; - -@OnlyIn(Dist.CLIENT) -public class PredicatedKeyBinding extends KeyMapping { - private final BiPredicate allowed; - - public PredicatedKeyBinding(String description, Type type, int keyCode, String category, BiPredicate allowed) { - super(description, type, keyCode, category); - this.allowed = allowed; - } - - @Override - public void setKeyModifierAndCode(@Nonnull KeyModifier keyModifier, @Nonnull InputConstants.Key keyCode) { - if (allowed.test(keyModifier, keyCode)) - super.setKeyModifierAndCode(keyModifier, keyCode); - } -} diff --git a/src/main/java/vazkii/quark/base/client/util/SortedPredicatedKeyBinding.java b/src/main/java/vazkii/quark/base/client/util/SortedPredicatedKeyBinding.java deleted file mode 100644 index e3c7e09d48..0000000000 --- a/src/main/java/vazkii/quark/base/client/util/SortedPredicatedKeyBinding.java +++ /dev/null @@ -1,26 +0,0 @@ -package vazkii.quark.base.client.util; - -import com.mojang.blaze3d.platform.InputConstants; -import com.mojang.blaze3d.platform.InputConstants.Type; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.settings.KeyModifier; - -import javax.annotation.Nonnull; -import java.util.function.BiPredicate; - -@OnlyIn(Dist.CLIENT) -public class SortedPredicatedKeyBinding extends SortedKeyBinding { - private final BiPredicate allowed; - - public SortedPredicatedKeyBinding(String description, Type type, int keyCode, String category, int priority, BiPredicate allowed) { - super(description, type, keyCode, category, priority); - this.allowed = allowed; - } - - @Override - public void setKeyModifierAndCode(@Nonnull KeyModifier keyModifier, @Nonnull InputConstants.Key keyCode) { - if (allowed.test(keyModifier, keyCode)) - super.setKeyModifierAndCode(keyModifier, keyCode); - } -} diff --git a/src/main/java/vazkii/quark/content/client/module/AutoWalkKeybindModule.java b/src/main/java/vazkii/quark/content/client/module/AutoWalkKeybindModule.java index 73a2ff4af0..7ced2c2537 100644 --- a/src/main/java/vazkii/quark/content/client/module/AutoWalkKeybindModule.java +++ b/src/main/java/vazkii/quark/content/client/module/AutoWalkKeybindModule.java @@ -17,7 +17,6 @@ import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay; import net.minecraftforge.eventbus.api.SubscribeEvent; import vazkii.quark.base.QuarkClient; -import vazkii.quark.base.client.handler.ModKeybindHandler; import vazkii.quark.base.module.LoadModule; import vazkii.zeta.module.ZetaModule; import vazkii.quark.base.module.config.Config; @@ -40,7 +39,7 @@ public class AutoWalkKeybindModule extends ZetaModule { @LoadEvent @OnlyIn(Dist.CLIENT) public void registerKeybinds(ZKeyMapping event) { - keybind = ModKeybindHandler.init(event, "autorun", null, ModKeybindHandler.MISC_GROUP); + keybind = event.init("quark.keybind.autorun", null, QuarkClient.MISC_GROUP); } @SubscribeEvent diff --git a/src/main/java/vazkii/quark/content/client/module/BackButtonKeybindModule.java b/src/main/java/vazkii/quark/content/client/module/BackButtonKeybindModule.java index 190a456fcd..caf900c5c7 100644 --- a/src/main/java/vazkii/quark/content/client/module/BackButtonKeybindModule.java +++ b/src/main/java/vazkii/quark/content/client/module/BackButtonKeybindModule.java @@ -18,7 +18,7 @@ import net.minecraftforge.client.event.ScreenEvent.KeyPressed; import net.minecraftforge.client.event.ScreenEvent.MouseButtonPressed; import net.minecraftforge.eventbus.api.SubscribeEvent; -import vazkii.quark.base.client.handler.ModKeybindHandler; +import vazkii.quark.base.QuarkClient; import vazkii.quark.base.module.LoadModule; import vazkii.zeta.module.ZetaModule; import vazkii.zeta.event.bus.LoadEvent; @@ -36,7 +36,8 @@ public class BackButtonKeybindModule extends ZetaModule { @LoadEvent @OnlyIn(Dist.CLIENT) public void registerKeybinds(ZKeyMapping event) { - backKey = ModKeybindHandler.initMouse(event, "back", 4, ModKeybindHandler.MISC_GROUP, (modifier, key) -> key.getType() != Type.MOUSE || key.getValue() != 0); + //TODO ZETA: dunno if this predicate works lol + backKey = event.initMouse("quark.keybind.back", 4, QuarkClient.MISC_GROUP, (key) -> key.getType() != Type.MOUSE || key.getValue() != 0); } @SubscribeEvent diff --git a/src/main/java/vazkii/quark/content/client/module/CameraModule.java b/src/main/java/vazkii/quark/content/client/module/CameraModule.java index 13987148f1..a3e1bd0fa8 100644 --- a/src/main/java/vazkii/quark/content/client/module/CameraModule.java +++ b/src/main/java/vazkii/quark/content/client/module/CameraModule.java @@ -24,7 +24,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import org.lwjgl.glfw.GLFW; import vazkii.quark.base.Quark; -import vazkii.quark.base.client.handler.ModKeybindHandler; +import vazkii.quark.base.QuarkClient; import vazkii.quark.base.handler.QuarkSounds; import vazkii.quark.base.module.LoadModule; import vazkii.quark.base.module.ModuleLoader; @@ -116,7 +116,7 @@ public boolean test(Object o) { @LoadEvent public void registerKeybinds(ZKeyMapping event) { - cameraModeKey = ModKeybindHandler.init(event, "camera_mode", "f12", ModKeybindHandler.MISC_GROUP); + cameraModeKey = event.init("quark.keybind.camera_mode", "f12", QuarkClient.MISC_GROUP); } @SubscribeEvent diff --git a/src/main/java/vazkii/quark/content/experimental/module/NarratorReadoutModule.java b/src/main/java/vazkii/quark/content/experimental/module/NarratorReadoutModule.java index 26e5d6261c..1f5695b07c 100644 --- a/src/main/java/vazkii/quark/content/experimental/module/NarratorReadoutModule.java +++ b/src/main/java/vazkii/quark/content/experimental/module/NarratorReadoutModule.java @@ -28,7 +28,6 @@ import net.minecraftforge.client.settings.KeyModifier; import net.minecraftforge.eventbus.api.SubscribeEvent; import vazkii.quark.base.QuarkClient; -import vazkii.quark.base.client.handler.ModKeybindHandler; import vazkii.quark.base.module.LoadModule; import vazkii.zeta.module.ZetaModule; import vazkii.zeta.event.bus.LoadEvent; @@ -49,8 +48,8 @@ public class NarratorReadoutModule extends ZetaModule { @OnlyIn(Dist.CLIENT) public void registerKeybinds(ZKeyMapping event) { if(enabled) { - keybind = ModKeybindHandler.init(event, "narrator_readout", null, ModKeybindHandler.MISC_GROUP); - keybindFull = ModKeybindHandler.init(event, "narrator_full_readout", null, ModKeybindHandler.MISC_GROUP); + keybind = event.init("quark.keybind.narrator_readout", null, QuarkClient.MISC_GROUP); + keybindFull = event.init("quark.keybind.narrator_full_readout", null, QuarkClient.MISC_GROUP); } } diff --git a/src/main/java/vazkii/quark/content/experimental/module/VariantSelectorModule.java b/src/main/java/vazkii/quark/content/experimental/module/VariantSelectorModule.java index 9363282a76..7b848a94b3 100644 --- a/src/main/java/vazkii/quark/content/experimental/module/VariantSelectorModule.java +++ b/src/main/java/vazkii/quark/content/experimental/module/VariantSelectorModule.java @@ -46,7 +46,7 @@ import net.minecraftforge.event.entity.EntityJoinLevelEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import vazkii.quark.base.Quark; -import vazkii.quark.base.client.handler.ModKeybindHandler; +import vazkii.quark.base.QuarkClient; import vazkii.quark.base.handler.MiscUtil; import vazkii.quark.base.module.LoadModule; import vazkii.zeta.module.ZetaModule; @@ -104,7 +104,7 @@ public final void register(ZRegister event) { @LoadEvent public void registerKeybinds(ZKeyMapping event) { - variantSelectorKey = ModKeybindHandler.init(event, "variant_selector", "r", ModKeybindHandler.MISC_GROUP); + variantSelectorKey = event.init("quark.keybind.variant_selector", "r", QuarkClient.MISC_GROUP); } @LoadEvent diff --git a/src/main/java/vazkii/quark/content/management/module/EasyTransferingModule.java b/src/main/java/vazkii/quark/content/management/module/EasyTransferingModule.java index d45b77cb0c..aedbfb1a79 100644 --- a/src/main/java/vazkii/quark/content/management/module/EasyTransferingModule.java +++ b/src/main/java/vazkii/quark/content/management/module/EasyTransferingModule.java @@ -29,7 +29,7 @@ public void registerKeybinds(ZKeyMapping event) { addButton(event, 2, "extract", true); InventoryButtonHandler.addButtonProvider(event, this, ButtonTargetType.CONTAINER_PLAYER_INVENTORY, 3, - "shift_lock", + "quark.keybind.shift_lock", (screen) -> shiftLocked = !shiftLocked, (parent, x, y) -> new MiniInventoryButton(parent, 4, x, y, "quark.gui.button.shift_lock", (b) -> shiftLocked = !shiftLocked) @@ -40,7 +40,7 @@ public void registerKeybinds(ZKeyMapping event) { @OnlyIn(Dist.CLIENT) private void addButton(ZKeyMapping event, int priority, String name, boolean restock) { InventoryButtonHandler.addButtonProvider(event, this, ButtonTargetType.CONTAINER_PLAYER_INVENTORY, priority, - "transfer_" + name, + "quark.keybind.transfer_" + name, (screen) -> QuarkNetwork.sendToServer(new InventoryTransferMessage(Screen.hasShiftDown(), restock)), (parent, x, y) -> new MiniInventoryButton(parent, priority, x, y, (t) -> t.add(I18n.get("quark.gui.button." + name + (Screen.hasShiftDown() ? "_filtered" : ""))), diff --git a/src/main/java/vazkii/quark/content/management/module/HotbarChangerModule.java b/src/main/java/vazkii/quark/content/management/module/HotbarChangerModule.java index 00a27bd064..fab9582393 100644 --- a/src/main/java/vazkii/quark/content/management/module/HotbarChangerModule.java +++ b/src/main/java/vazkii/quark/content/management/module/HotbarChangerModule.java @@ -24,7 +24,7 @@ import net.minecraftforge.event.TickEvent.ClientTickEvent; import net.minecraftforge.event.TickEvent.Phase; import net.minecraftforge.eventbus.api.SubscribeEvent; -import vazkii.quark.base.client.handler.ModKeybindHandler; +import vazkii.quark.base.QuarkClient; import vazkii.quark.base.module.LoadModule; import vazkii.zeta.module.ZetaModule; import vazkii.quark.base.network.QuarkNetwork; @@ -52,7 +52,7 @@ public class HotbarChangerModule extends ZetaModule { @LoadEvent public void registerKeybinds(ZKeyMapping event) { - changeHotbarKey = ModKeybindHandler.init(event, "change_hotbar", "z", ModKeybindHandler.MISC_GROUP); + changeHotbarKey = event.init("quark.keybind.change_hotbar", "z", QuarkClient.MISC_GROUP); } @SubscribeEvent diff --git a/src/main/java/vazkii/quark/content/management/module/InventorySortingModule.java b/src/main/java/vazkii/quark/content/management/module/InventorySortingModule.java index 82c1b346b3..ac47615e61 100644 --- a/src/main/java/vazkii/quark/content/management/module/InventorySortingModule.java +++ b/src/main/java/vazkii/quark/content/management/module/InventorySortingModule.java @@ -8,10 +8,10 @@ import net.minecraft.sounds.SoundEvents; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import vazkii.quark.base.QuarkClient; import vazkii.quark.base.client.handler.InventoryButtonHandler; import vazkii.quark.base.client.handler.InventoryButtonHandler.ButtonProvider; import vazkii.quark.base.client.handler.InventoryButtonHandler.ButtonTargetType; -import vazkii.quark.base.client.handler.ModKeybindHandler; import vazkii.quark.base.module.LoadModule; import vazkii.zeta.module.ZetaModule; import vazkii.quark.base.module.config.Config; @@ -36,7 +36,7 @@ public class InventorySortingModule extends ZetaModule { @LoadEvent @OnlyIn(Dist.CLIENT) public void registerKeybinds(ZKeyMapping event) { - KeyMapping sortPlayer = ModKeybindHandler.init(event, "sort_player", null, ModKeybindHandler.INV_GROUP); + KeyMapping sortPlayer = event.init("quark.keybind.sort_player", null, QuarkClient.INV_GROUP); InventoryButtonHandler.addButtonProvider(this, ButtonTargetType.PLAYER_INVENTORY, 0, sortPlayer, @@ -63,7 +63,7 @@ public void registerKeybinds(ZKeyMapping event) { () -> enablePlayerInventoryInChests); InventoryButtonHandler.addButtonProvider(event, this, ButtonTargetType.CONTAINER_INVENTORY, 0, - "sort_container", + "quark.keybind.sort_container", (screen) -> { if (enableChests) { if (satisfyingClick) diff --git a/src/main/java/vazkii/quark/content/tweaks/module/EmotesModule.java b/src/main/java/vazkii/quark/content/tweaks/module/EmotesModule.java index 9cadec558a..12f1226451 100644 --- a/src/main/java/vazkii/quark/content/tweaks/module/EmotesModule.java +++ b/src/main/java/vazkii/quark/content/tweaks/module/EmotesModule.java @@ -41,7 +41,7 @@ import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import vazkii.aurelienribon.tweenengine.Tween; -import vazkii.quark.base.client.handler.ModKeybindHandler; +import vazkii.quark.base.QuarkClient; import vazkii.quark.base.handler.ContributorRewardHandler; import vazkii.quark.base.module.LoadModule; import vazkii.zeta.module.ZetaModule; @@ -145,9 +145,9 @@ public void registerKeybinds(ZKeyMapping event) { emoteKeybinds = new HashMap<>(); for (String s : DEFAULT_EMOTE_NAMES) - emoteKeybinds.put(ModKeybindHandler.init(event, "quark.emote." + s, null, "", ModKeybindHandler.EMOTE_GROUP, sortOrder++, false), s); + emoteKeybinds.put(event.init("quark.emote." + s, null, QuarkClient.EMOTE_GROUP, sortOrder++), s); for (String s : PATREON_EMOTES) - emoteKeybinds.put(ModKeybindHandler.init(event, "patreon_emote." + s, null, ModKeybindHandler.EMOTE_GROUP, sortOrder++), s); + emoteKeybinds.put(event.init("quark.keybind.patreon_emote." + s, null, QuarkClient.EMOTE_GROUP, sortOrder++), s); } @LoadEvent diff --git a/src/main/java/vazkii/quark/content/tweaks/module/LockRotationModule.java b/src/main/java/vazkii/quark/content/tweaks/module/LockRotationModule.java index 16fbb69bc7..25487ae34b 100644 --- a/src/main/java/vazkii/quark/content/tweaks/module/LockRotationModule.java +++ b/src/main/java/vazkii/quark/content/tweaks/module/LockRotationModule.java @@ -41,7 +41,7 @@ import org.lwjgl.opengl.GL11; import vazkii.quark.api.IRotationLockable; -import vazkii.quark.base.client.handler.ModKeybindHandler; +import vazkii.quark.base.QuarkClient; import vazkii.quark.base.handler.MiscUtil; import vazkii.quark.base.module.LoadModule; import vazkii.quark.base.module.ModuleLoader; @@ -87,7 +87,7 @@ public final void setup(ZCommonSetup event) { @LoadEvent @OnlyIn(Dist.CLIENT) public void registerKeybinds(ZKeyMapping event) { - keybind = ModKeybindHandler.init(event, "lock_rotation", "k", ModKeybindHandler.MISC_GROUP); + keybind = event.init("quark.keybind.lock_rotation", "k", QuarkClient.MISC_GROUP); } public static BlockState fixBlockRotation(BlockState state, BlockPlaceContext ctx) { diff --git a/src/main/java/vazkii/zeta/client/event/ZKeyMapping.java b/src/main/java/vazkii/zeta/client/event/ZKeyMapping.java index d970fb3acc..12d5eec194 100644 --- a/src/main/java/vazkii/zeta/client/event/ZKeyMapping.java +++ b/src/main/java/vazkii/zeta/client/event/ZKeyMapping.java @@ -1,8 +1,60 @@ package vazkii.zeta.client.event; +import java.util.function.Predicate; + +import com.mojang.blaze3d.platform.InputConstants; import net.minecraft.client.KeyMapping; +import org.jetbrains.annotations.Nullable; +import vazkii.zeta.client.key.PredicatedKeyBinding; +import vazkii.zeta.client.key.SortedKeyBinding; +import vazkii.zeta.client.key.SortedPredicatedKeyBinding; import vazkii.zeta.event.bus.IZetaLoadEvent; public interface ZKeyMapping extends IZetaLoadEvent { - void register(KeyMapping key); + KeyMapping register(KeyMapping key); + + default KeyMapping init(String id, @Nullable String key, String group) { + return register(new KeyMapping(id, InputConstants.Type.KEYSYM, getKeyCode(key, InputConstants.Type.KEYSYM), group)); + } + + default KeyMapping init(String id, @Nullable String key, String group, int sortPriority) { + return register(new SortedKeyBinding(id, InputConstants.Type.KEYSYM, getKeyCode(key, InputConstants.Type.KEYSYM), group, sortPriority)); + } + + default KeyMapping init(String id, @Nullable String key, String group, Predicate allowed) { + return register(new PredicatedKeyBinding(id, InputConstants.Type.KEYSYM, getKeyCode(key, InputConstants.Type.KEYSYM), group, allowed)); + } + + default KeyMapping init(String id, @Nullable String key, String group, int sortPriority, Predicate allowed) { + return register(new SortedPredicatedKeyBinding(id, InputConstants.Type.KEYSYM, getKeyCode(key, InputConstants.Type.KEYSYM), group, sortPriority, allowed)); + } + + default KeyMapping initMouse(String id, int key, String group) { + return register(new KeyMapping(id, InputConstants.Type.MOUSE, getKeyCode(Integer.toString(key), InputConstants.Type.MOUSE), group)); + } + + default KeyMapping initMouse(String id, int key, String group, int sortPriority) { + return register(new SortedKeyBinding(id, InputConstants.Type.MOUSE, getKeyCode(Integer.toString(key), InputConstants.Type.MOUSE), group, sortPriority)); + } + + default KeyMapping initMouse(String id, int key, String group, Predicate allowed) { + return register(new PredicatedKeyBinding(id, InputConstants.Type.MOUSE, getKeyCode(Integer.toString(key), InputConstants.Type.MOUSE), group, allowed)); + } + + default KeyMapping initMouse(String id, int key, String group, int sortPriority, Predicate allowed) { + return register(new SortedPredicatedKeyBinding(id, InputConstants.Type.MOUSE, getKeyCode(Integer.toString(key), InputConstants.Type.MOUSE), group, sortPriority, allowed)); + } + + // Private field in vanilla + default String getKeyPrefix(InputConstants.Type type) { + return switch(type) { + case MOUSE -> "key.mouse."; + case KEYSYM -> "key.keyboard."; + case SCANCODE -> "scancode."; + }; + } + + default int getKeyCode(@Nullable String key, InputConstants.Type type) { + return (key == null ? InputConstants.UNKNOWN : InputConstants.getKey(getKeyPrefix(type) + key)).getValue(); + } } diff --git a/src/main/java/vazkii/zeta/client/key/PredicatedKeyBinding.java b/src/main/java/vazkii/zeta/client/key/PredicatedKeyBinding.java new file mode 100644 index 0000000000..11fea31193 --- /dev/null +++ b/src/main/java/vazkii/zeta/client/key/PredicatedKeyBinding.java @@ -0,0 +1,24 @@ +package vazkii.zeta.client.key; + +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.InputConstants.Type; +import net.minecraft.client.KeyMapping; + +import java.util.function.Predicate; + +public class PredicatedKeyBinding extends KeyMapping { + private final Predicate allowed; + + public PredicatedKeyBinding(String description, Type type, int keyCode, String category, Predicate allowed) { + super(description, type, keyCode, category); + this.allowed = allowed; + } + + //TODO ZETA: key modifiers were removed since they're a Forge extension + + @Override + public void setKey(InputConstants.Key key) { + if(allowed.test(key)) + super.setKey(key); + } +} diff --git a/src/main/java/vazkii/quark/base/client/util/SortedKeyBinding.java b/src/main/java/vazkii/zeta/client/key/SortedKeyBinding.java similarity index 81% rename from src/main/java/vazkii/quark/base/client/util/SortedKeyBinding.java rename to src/main/java/vazkii/zeta/client/key/SortedKeyBinding.java index 645e5390d4..fc0b38d456 100644 --- a/src/main/java/vazkii/quark/base/client/util/SortedKeyBinding.java +++ b/src/main/java/vazkii/zeta/client/key/SortedKeyBinding.java @@ -1,16 +1,13 @@ -package vazkii.quark.base.client.util; +package vazkii.zeta.client.key; import com.mojang.blaze3d.platform.InputConstants.Type; import net.minecraft.client.KeyMapping; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; /** * @author WireSegal * Created at 12:19 PM on 10/6/19. */ -@OnlyIn(Dist.CLIENT) public class SortedKeyBinding extends KeyMapping { private final int priority; diff --git a/src/main/java/vazkii/zeta/client/key/SortedPredicatedKeyBinding.java b/src/main/java/vazkii/zeta/client/key/SortedPredicatedKeyBinding.java new file mode 100644 index 0000000000..7dd09aa137 --- /dev/null +++ b/src/main/java/vazkii/zeta/client/key/SortedPredicatedKeyBinding.java @@ -0,0 +1,23 @@ +package vazkii.zeta.client.key; + +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.InputConstants.Type; + +import java.util.function.Predicate; + +public class SortedPredicatedKeyBinding extends SortedKeyBinding { + private final Predicate allowed; + + public SortedPredicatedKeyBinding(String description, Type type, int keyCode, String category, int priority, Predicate allowed) { + super(description, type, keyCode, category, priority); + this.allowed = allowed; + } + + //TODO ZETA: key modifiers were removed since they're a Forge extension + + @Override + public void setKey(InputConstants.Key key) { + if(allowed.test(key)) + super.setKey(key); + } +} diff --git a/src/main/java/vazkii/zeta/recipe/ZetaDyeRecipe.java b/src/main/java/vazkii/zeta/recipe/ZetaDyeRecipe.java index 80c2088b9f..0ef2c0ba4b 100644 --- a/src/main/java/vazkii/zeta/recipe/ZetaDyeRecipe.java +++ b/src/main/java/vazkii/zeta/recipe/ZetaDyeRecipe.java @@ -25,6 +25,7 @@ public ZetaDyeRecipe(ResourceLocation id, DyeablesRegistry dyeablesRegistry) { this.serializer = new SimpleRecipeSerializer<>(id_ -> new ZetaDyeRecipe(id_, dyeablesRegistry)); } + @Override public boolean matches(CraftingContainer p_43769_, Level p_43770_) { ItemStack itemstack = ItemStack.EMPTY; List list = Lists.newArrayList(); diff --git a/src/main/java/vazkii/zetaimplforge/event/client/ForgeZKeyMapping.java b/src/main/java/vazkii/zetaimplforge/event/client/ForgeZKeyMapping.java index 2028b0aa30..32d8847766 100644 --- a/src/main/java/vazkii/zetaimplforge/event/client/ForgeZKeyMapping.java +++ b/src/main/java/vazkii/zetaimplforge/event/client/ForgeZKeyMapping.java @@ -8,7 +8,8 @@ @FiredAs(ZKeyMapping.class) public record ForgeZKeyMapping(RegisterKeyMappingsEvent e) implements ZKeyMapping { @Override - public void register(KeyMapping key) { + public KeyMapping register(KeyMapping key) { e.register(key); + return key; } } diff --git a/src/main/java/vazkii/zetaimplforge/registry/ForgeBrewingRegistry.java b/src/main/java/vazkii/zetaimplforge/registry/ForgeBrewingRegistry.java index e9354a4538..bcb269a721 100644 --- a/src/main/java/vazkii/zetaimplforge/registry/ForgeBrewingRegistry.java +++ b/src/main/java/vazkii/zetaimplforge/registry/ForgeBrewingRegistry.java @@ -29,6 +29,7 @@ void register() { private List delayedPotions = new ArrayList<>(); private boolean okToRegisterImmediately = false; + @Override public void addBrewingRecipe(Potion input, Supplier reagentSupplier, Potion output) { DelayedPotion d = new DelayedPotion(input, reagentSupplier, output);