From 4ea05b9dbf2b24c90db0e370ce713f7aed48814b Mon Sep 17 00:00:00 2001 From: isXander Date: Wed, 1 Feb 2023 14:22:13 +0000 Subject: [PATCH] use identifiers for controller bindings for better modded support --- .../bindings/ControllerBinding.java | 9 ++++--- .../bindings/ControllerBindings.java | 27 ++++++++++--------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/main/java/dev/isxander/controlify/bindings/ControllerBinding.java b/src/main/java/dev/isxander/controlify/bindings/ControllerBinding.java index 4b47b97..2164a6c 100644 --- a/src/main/java/dev/isxander/controlify/bindings/ControllerBinding.java +++ b/src/main/java/dev/isxander/controlify/bindings/ControllerBinding.java @@ -3,16 +3,17 @@ package dev.isxander.controlify.bindings; import dev.isxander.controlify.controller.Controller; import net.minecraft.client.KeyMapping; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; public class ControllerBinding { private final Controller controller; private Bind bind; private final Bind defaultBind; - private final String id; + private final ResourceLocation id; private final Component name, description; private final KeyMapping override; - public ControllerBinding(Controller controller, Bind defaultBind, String id, Component description, KeyMapping override) { + public ControllerBinding(Controller controller, Bind defaultBind, ResourceLocation id, Component description, KeyMapping override) { this.controller = controller; this.bind = this.defaultBind = defaultBind; this.id = id; @@ -21,7 +22,7 @@ public class ControllerBinding { this.override = override; } - public ControllerBinding(Controller controller, Bind defaultBind, String id, KeyMapping override) { + public ControllerBinding(Controller controller, Bind defaultBind, ResourceLocation id, KeyMapping override) { this(controller, defaultBind, id, Component.empty(), override); } @@ -49,7 +50,7 @@ public class ControllerBinding { return defaultBind; } - public String id() { + public ResourceLocation id() { return id; } diff --git a/src/main/java/dev/isxander/controlify/bindings/ControllerBindings.java b/src/main/java/dev/isxander/controlify/bindings/ControllerBindings.java index 637c5f9..4bea672 100644 --- a/src/main/java/dev/isxander/controlify/bindings/ControllerBindings.java +++ b/src/main/java/dev/isxander/controlify/bindings/ControllerBindings.java @@ -6,6 +6,7 @@ import dev.isxander.controlify.event.ControlifyEvents; import dev.isxander.controlify.mixins.KeyMappingAccessor; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; import java.util.ArrayList; import java.util.Collections; @@ -19,17 +20,17 @@ public class ControllerBindings { public ControllerBindings(Controller controller) { var options = Minecraft.getInstance().options; - JUMP = register(new ControllerBinding(controller, Bind.A_BUTTON, "jump", options.keyJump)); - SNEAK = register(new ControllerBinding(controller, Bind.RIGHT_STICK, "sneak", options.keyShift)); - ATTACK = register(new ControllerBinding(controller, Bind.RIGHT_TRIGGER, "attack", options.keyAttack)); - USE = register(new ControllerBinding(controller, Bind.LEFT_TRIGGER, "use", options.keyUse)); - SPRINT = register(new ControllerBinding(controller, Bind.LEFT_STICK, "sprint", options.keySprint)); - NEXT_SLOT = register(new ControllerBinding(controller, Bind.RIGHT_BUMPER, "next_slot", null)); - PREV_SLOT = register(new ControllerBinding(controller, Bind.LEFT_BUMPER, "prev_slot", null)); - PAUSE = register(new ControllerBinding(controller, Bind.START, "pause", null)); - INVENTORY = register(new ControllerBinding(controller, Bind.Y_BUTTON, "inventory", options.keyInventory)); - CHANGE_PERSPECTIVE = register(new ControllerBinding(controller, Bind.BACK, "change_perspective", options.keyTogglePerspective)); - OPEN_CHAT = register(new ControllerBinding(controller, Bind.DPAD_UP, "open_chat", options.keyChat)); + JUMP = register(new ControllerBinding(controller, Bind.A_BUTTON, new ResourceLocation("controlify", "jump"), options.keyJump)); + SNEAK = register(new ControllerBinding(controller, Bind.RIGHT_STICK, new ResourceLocation("controlify", "sneak"), options.keyShift)); + ATTACK = register(new ControllerBinding(controller, Bind.RIGHT_TRIGGER, new ResourceLocation("controlify", "attack"), options.keyAttack)); + USE = register(new ControllerBinding(controller, Bind.LEFT_TRIGGER, new ResourceLocation("controlify", "use"), options.keyUse)); + SPRINT = register(new ControllerBinding(controller, Bind.LEFT_STICK, new ResourceLocation("controlify", "sprint"), options.keySprint)); + NEXT_SLOT = register(new ControllerBinding(controller, Bind.RIGHT_BUMPER, new ResourceLocation("controlify", "next_slot"), null)); + PREV_SLOT = register(new ControllerBinding(controller, Bind.LEFT_BUMPER, new ResourceLocation("controlify", "prev_slot"), null)); + PAUSE = register(new ControllerBinding(controller, Bind.START, new ResourceLocation("controlify", "pause"), null)); + INVENTORY = register(new ControllerBinding(controller, Bind.Y_BUTTON, new ResourceLocation("controlify", "inventory"), options.keyInventory)); + CHANGE_PERSPECTIVE = register(new ControllerBinding(controller, Bind.BACK, new ResourceLocation("controlify", "change_perspective"), options.keyTogglePerspective)); + OPEN_CHAT = register(new ControllerBinding(controller, Bind.DPAD_UP, new ResourceLocation("controlify", "open_chat"), options.keyChat)); ControlifyEvents.CONTROLLER_BIND_REGISTRY.invoker().onRegisterControllerBinds(this); @@ -48,14 +49,14 @@ public class ControllerBindings { public JsonObject toJson() { JsonObject json = new JsonObject(); for (var binding : registry()) { - json.addProperty(binding.id(), binding.currentBind().identifier()); + json.addProperty(binding.id().toString(), binding.currentBind().identifier()); } return json; } public void fromJson(JsonObject json) { for (var binding : registry()) { - var bind = json.get(binding.id()); + var bind = json.get(binding.id().toString()); if (bind == null) continue; binding.setCurrentBind(Bind.fromIdentifier(bind.getAsString())); }