forked from Clones/Controlify
use identifiers for controller bindings for better modded support
This commit is contained in:
@ -3,16 +3,17 @@ package dev.isxander.controlify.bindings;
|
|||||||
import dev.isxander.controlify.controller.Controller;
|
import dev.isxander.controlify.controller.Controller;
|
||||||
import net.minecraft.client.KeyMapping;
|
import net.minecraft.client.KeyMapping;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
public class ControllerBinding {
|
public class ControllerBinding {
|
||||||
private final Controller controller;
|
private final Controller controller;
|
||||||
private Bind bind;
|
private Bind bind;
|
||||||
private final Bind defaultBind;
|
private final Bind defaultBind;
|
||||||
private final String id;
|
private final ResourceLocation id;
|
||||||
private final Component name, description;
|
private final Component name, description;
|
||||||
private final KeyMapping override;
|
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.controller = controller;
|
||||||
this.bind = this.defaultBind = defaultBind;
|
this.bind = this.defaultBind = defaultBind;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
@ -21,7 +22,7 @@ public class ControllerBinding {
|
|||||||
this.override = override;
|
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);
|
this(controller, defaultBind, id, Component.empty(), override);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +50,7 @@ public class ControllerBinding {
|
|||||||
return defaultBind;
|
return defaultBind;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String id() {
|
public ResourceLocation id() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import dev.isxander.controlify.event.ControlifyEvents;
|
|||||||
import dev.isxander.controlify.mixins.KeyMappingAccessor;
|
import dev.isxander.controlify.mixins.KeyMappingAccessor;
|
||||||
import net.minecraft.client.KeyMapping;
|
import net.minecraft.client.KeyMapping;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.resources.ResourceLocation;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -19,17 +20,17 @@ public class ControllerBindings {
|
|||||||
public ControllerBindings(Controller controller) {
|
public ControllerBindings(Controller controller) {
|
||||||
var options = Minecraft.getInstance().options;
|
var options = Minecraft.getInstance().options;
|
||||||
|
|
||||||
JUMP = register(new ControllerBinding(controller, Bind.A_BUTTON, "jump", options.keyJump));
|
JUMP = register(new ControllerBinding(controller, Bind.A_BUTTON, new ResourceLocation("controlify", "jump"), options.keyJump));
|
||||||
SNEAK = register(new ControllerBinding(controller, Bind.RIGHT_STICK, "sneak", options.keyShift));
|
SNEAK = register(new ControllerBinding(controller, Bind.RIGHT_STICK, new ResourceLocation("controlify", "sneak"), options.keyShift));
|
||||||
ATTACK = register(new ControllerBinding(controller, Bind.RIGHT_TRIGGER, "attack", options.keyAttack));
|
ATTACK = register(new ControllerBinding(controller, Bind.RIGHT_TRIGGER, new ResourceLocation("controlify", "attack"), options.keyAttack));
|
||||||
USE = register(new ControllerBinding(controller, Bind.LEFT_TRIGGER, "use", options.keyUse));
|
USE = register(new ControllerBinding(controller, Bind.LEFT_TRIGGER, new ResourceLocation("controlify", "use"), options.keyUse));
|
||||||
SPRINT = register(new ControllerBinding(controller, Bind.LEFT_STICK, "sprint", options.keySprint));
|
SPRINT = register(new ControllerBinding(controller, Bind.LEFT_STICK, new ResourceLocation("controlify", "sprint"), options.keySprint));
|
||||||
NEXT_SLOT = register(new ControllerBinding(controller, Bind.RIGHT_BUMPER, "next_slot", null));
|
NEXT_SLOT = register(new ControllerBinding(controller, Bind.RIGHT_BUMPER, new ResourceLocation("controlify", "next_slot"), null));
|
||||||
PREV_SLOT = register(new ControllerBinding(controller, Bind.LEFT_BUMPER, "prev_slot", null));
|
PREV_SLOT = register(new ControllerBinding(controller, Bind.LEFT_BUMPER, new ResourceLocation("controlify", "prev_slot"), null));
|
||||||
PAUSE = register(new ControllerBinding(controller, Bind.START, "pause", null));
|
PAUSE = register(new ControllerBinding(controller, Bind.START, new ResourceLocation("controlify", "pause"), null));
|
||||||
INVENTORY = register(new ControllerBinding(controller, Bind.Y_BUTTON, "inventory", options.keyInventory));
|
INVENTORY = register(new ControllerBinding(controller, Bind.Y_BUTTON, new ResourceLocation("controlify", "inventory"), options.keyInventory));
|
||||||
CHANGE_PERSPECTIVE = register(new ControllerBinding(controller, Bind.BACK, "change_perspective", options.keyTogglePerspective));
|
CHANGE_PERSPECTIVE = register(new ControllerBinding(controller, Bind.BACK, new ResourceLocation("controlify", "change_perspective"), options.keyTogglePerspective));
|
||||||
OPEN_CHAT = register(new ControllerBinding(controller, Bind.DPAD_UP, "open_chat", options.keyChat));
|
OPEN_CHAT = register(new ControllerBinding(controller, Bind.DPAD_UP, new ResourceLocation("controlify", "open_chat"), options.keyChat));
|
||||||
|
|
||||||
ControlifyEvents.CONTROLLER_BIND_REGISTRY.invoker().onRegisterControllerBinds(this);
|
ControlifyEvents.CONTROLLER_BIND_REGISTRY.invoker().onRegisterControllerBinds(this);
|
||||||
|
|
||||||
@ -48,14 +49,14 @@ public class ControllerBindings {
|
|||||||
public JsonObject toJson() {
|
public JsonObject toJson() {
|
||||||
JsonObject json = new JsonObject();
|
JsonObject json = new JsonObject();
|
||||||
for (var binding : registry()) {
|
for (var binding : registry()) {
|
||||||
json.addProperty(binding.id(), binding.currentBind().identifier());
|
json.addProperty(binding.id().toString(), binding.currentBind().identifier());
|
||||||
}
|
}
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fromJson(JsonObject json) {
|
public void fromJson(JsonObject json) {
|
||||||
for (var binding : registry()) {
|
for (var binding : registry()) {
|
||||||
var bind = json.get(binding.id());
|
var bind = json.get(binding.id().toString());
|
||||||
if (bind == null) continue;
|
if (bind == null) continue;
|
||||||
binding.setCurrentBind(Bind.fromIdentifier(bind.getAsString()));
|
binding.setCurrentBind(Bind.fromIdentifier(bind.getAsString()));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user