1
0
mirror of https://github.com/chylex/Better-Controls.git synced 2025-04-30 05:34:04 +02:00

Remove some utility classes & unify with Fabric codebase

This commit is contained in:
chylex 2021-10-02 15:03:26 +02:00
parent 25c7565a49
commit fd391e81a0
Signed by: chylex
GPG Key ID: 4DE42C8F19A80548
12 changed files with 58 additions and 112 deletions

View File

@ -45,7 +45,7 @@ public final class BetterControlsConfig {
} }
public KeyBindingWithModifier[] getAllKeyBindings() { public KeyBindingWithModifier[] getAllKeyBindings() {
return new KeyBindingWithModifier[]{ return new KeyBindingWithModifier[] {
keyToggleSprint, keyToggleSprint,
keyToggleSneak, keyToggleSneak,
keyToggleFlight, keyToggleFlight,

View File

@ -1,8 +1,8 @@
package chylex.bettercontrols.config; package chylex.bettercontrols.config;
import chylex.bettercontrols.input.KeyBindingWithModifier; import chylex.bettercontrols.input.KeyBindingWithModifier;
import chylex.bettercontrols.input.ModifierKey; import chylex.bettercontrols.input.ModifierKey;
import chylex.bettercontrols.util.Key;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.mojang.blaze3d.platform.InputConstants;
final class Json { final class Json {
private Json() {} private Json() {}
@ -52,7 +52,7 @@ final class Json {
private static final String MOD_SUFFIX = ".Mod"; private static final String MOD_SUFFIX = ".Mod";
static void writeKeyBinding(final JsonObject obj, final String key, final KeyBindingWithModifier keyBinding) { static void writeKeyBinding(final JsonObject obj, final String key, final KeyBindingWithModifier keyBinding) {
obj.addProperty(key + KEY_SUFFIX, Key.writeBinding(keyBinding)); obj.addProperty(key + KEY_SUFFIX, keyBinding.saveString());
if (keyBinding.getModifier() != null) { if (keyBinding.getModifier() != null) {
obj.addProperty(key + MOD_SUFFIX, Integer.valueOf(keyBinding.getModifier().id)); obj.addProperty(key + MOD_SUFFIX, Integer.valueOf(keyBinding.getModifier().id));
@ -61,7 +61,11 @@ final class Json {
static void readKeyBinding(final JsonObject obj, final String key, final KeyBindingWithModifier keyBinding) { static void readKeyBinding(final JsonObject obj, final String key, final KeyBindingWithModifier keyBinding) {
if (obj.has(key + KEY_SUFFIX)) { if (obj.has(key + KEY_SUFFIX)) {
Key.readBinding(keyBinding, obj.get(key + KEY_SUFFIX).getAsString()); try {
keyBinding.setKey(InputConstants.getKey(obj.get(key + KEY_SUFFIX).getAsString()));
} catch (final IllegalArgumentException e) {
e.printStackTrace(); // let's not crash if the config file has garbage, okay?
}
} }
if (obj.has(key + MOD_SUFFIX)) { if (obj.has(key + MOD_SUFFIX)) {

View File

@ -10,8 +10,7 @@ import chylex.bettercontrols.gui.elements.TextWidget;
import chylex.bettercontrols.input.KeyBindingWithModifier; import chylex.bettercontrols.input.KeyBindingWithModifier;
import chylex.bettercontrols.input.ModifierKey; import chylex.bettercontrols.input.ModifierKey;
import chylex.bettercontrols.input.SprintMode; import chylex.bettercontrols.input.SprintMode;
import chylex.bettercontrols.util.Key; import com.mojang.blaze3d.platform.InputConstants;
import chylex.bettercontrols.util.LiteralText;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.KeyMapping; import net.minecraft.client.KeyMapping;
import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.Button;
@ -19,6 +18,8 @@ import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.screens.OptionsSubScreen; import net.minecraft.client.gui.screens.OptionsSubScreen;
import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
@ -30,11 +31,14 @@ import static chylex.bettercontrols.gui.OptionListWidget.ROW_WIDTH;
import static chylex.bettercontrols.gui.OptionListWidget.col2; import static chylex.bettercontrols.gui.OptionListWidget.col2;
import static chylex.bettercontrols.gui.OptionListWidget.col4; import static chylex.bettercontrols.gui.OptionListWidget.col4;
import static chylex.bettercontrols.gui.elements.TextWidget.CENTER; import static chylex.bettercontrols.gui.elements.TextWidget.CENTER;
import static chylex.bettercontrols.util.LiteralText.text;
import static chylex.bettercontrols.util.Statics.OPTIONS; import static chylex.bettercontrols.util.Statics.OPTIONS;
public class BetterControlsScreen extends OptionsSubScreen { public class BetterControlsScreen extends OptionsSubScreen {
public static final LiteralText TITLE = text("Better Controls"); private static TextComponent text(final String text) {
return new TextComponent(text);
}
public static final Component TITLE = text("Better Controls");
private static final int BOTTOM_PADDING = 3; private static final int BOTTOM_PADDING = 3;
private static final int TEXT_PADDING_RIGHT = 4; private static final int TEXT_PADDING_RIGHT = 4;
@ -203,7 +207,7 @@ public class BetterControlsScreen extends OptionsSubScreen {
new Option<>(ModifierKey.ALT, text("Alt")) new Option<>(ModifierKey.ALT, text("Alt"))
); );
private void generateKeyBindingWithModifierOption(final int y, final List<GuiEventListener> elements, final LiteralText text, final KeyBindingWithModifier binding) { private void generateKeyBindingWithModifierOption(final int y, final List<GuiEventListener> elements, final Component text, final KeyBindingWithModifier binding) {
final CycleButtonWidget<ModifierKey> modifierButton = new CycleButtonWidget<>(col4(2), y, COL4_W, MODIFIER_OPTIONS, binding.getModifier(), binding::setModifier); final CycleButtonWidget<ModifierKey> modifierButton = new CycleButtonWidget<>(col4(2), y, COL4_W, MODIFIER_OPTIONS, binding.getModifier(), binding::setModifier);
final KeyBindingWidget bindingButton = new KeyBindingWidget(col4(3), y, COL4_W, text, binding, this::startEditingKeyBinding); final KeyBindingWidget bindingButton = new KeyBindingWidget(col4(3), y, COL4_W, text, binding, this::startEditingKeyBinding);
bindingButton.linkButtonToBoundState(modifierButton); bindingButton.linkButtonToBoundState(modifierButton);
@ -214,7 +218,7 @@ public class BetterControlsScreen extends OptionsSubScreen {
allKeyBindings.add(bindingButton); allKeyBindings.add(bindingButton);
} }
private static void generateLeftSideText(final int y, final List<GuiEventListener> elements, final LiteralText text) { private static void generateLeftSideText(final int y, final List<GuiEventListener> elements, final Component text) {
elements.add(new TextWidget(col2(0), y, COL2_W - TEXT_PADDING_RIGHT, text)); elements.add(new TextWidget(col2(0), y, COL2_W - TEXT_PADDING_RIGHT, text));
} }
@ -275,7 +279,7 @@ public class BetterControlsScreen extends OptionsSubScreen {
@Override @Override
public boolean mouseClicked(final double mouseX, final double mouseY, final int button) { public boolean mouseClicked(final double mouseX, final double mouseY, final int button) {
if (editingKeyBinding != null) { if (editingKeyBinding != null) {
editingKeyBinding.bindAndStopEditing(Key.inputFromMouse(button)); editingKeyBinding.bindAndStopEditing(InputConstants.Type.MOUSE.getOrCreate(button));
onKeyBindingEditingFinished(); onKeyBindingEditingFinished();
return true; return true;
} }
@ -288,10 +292,10 @@ public class BetterControlsScreen extends OptionsSubScreen {
public boolean keyPressed(final int keyCode, final int scanCode, final int modifiers) { public boolean keyPressed(final int keyCode, final int scanCode, final int modifiers) {
if (editingKeyBinding != null) { if (editingKeyBinding != null) {
if (keyCode == GLFW.GLFW_KEY_ESCAPE) { if (keyCode == GLFW.GLFW_KEY_ESCAPE) {
editingKeyBinding.bindAndStopEditing(Key.INVALID); editingKeyBinding.bindAndStopEditing(InputConstants.UNKNOWN);
} }
else { else {
editingKeyBinding.bindAndStopEditing(Key.inputFromKeyboard(keyCode, scanCode)); editingKeyBinding.bindAndStopEditing(InputConstants.getKey(keyCode, scanCode));
} }
onKeyBindingEditingFinished(); onKeyBindingEditingFinished();

View File

@ -1,6 +1,4 @@
package chylex.bettercontrols.gui.elements; package chylex.bettercontrols.gui.elements;
import chylex.bettercontrols.util.Key;
import chylex.bettercontrols.util.LiteralText;
import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.client.KeyMapping; import net.minecraft.client.KeyMapping;
@ -24,7 +22,7 @@ public final class KeyBindingWidget extends Button {
private final Consumer<KeyBindingWidget> onEditingStarted; private final Consumer<KeyBindingWidget> onEditingStarted;
private boolean isEditing; private boolean isEditing;
public KeyBindingWidget(final int x, final int y, final int width, final int height, final LiteralText bindingName, final KeyMapping binding, final Consumer<KeyBindingWidget> onEditingStarted) { public KeyBindingWidget(final int x, final int y, final int width, final int height, final Component bindingName, final KeyMapping binding, final Consumer<KeyBindingWidget> onEditingStarted) {
super(x, y, width, height, TextComponent.EMPTY, btn -> {}); super(x, y, width, height, TextComponent.EMPTY, btn -> {});
this.binding = binding; this.binding = binding;
this.bindingName = bindingName; this.bindingName = bindingName;
@ -32,18 +30,18 @@ public final class KeyBindingWidget extends Button {
updateKeyBindingText(); updateKeyBindingText();
} }
public KeyBindingWidget(final int x, final int y, final int width, final LiteralText bindingName, final KeyMapping binding, final Consumer<KeyBindingWidget> onEditingStarted) { public KeyBindingWidget(final int x, final int y, final int width, final Component bindingName, final KeyMapping binding, final Consumer<KeyBindingWidget> onEditingStarted) {
this(x, y, width, 20, bindingName, binding, onEditingStarted); this(x, y, width, 20, bindingName, binding, onEditingStarted);
} }
public void linkButtonToBoundState(final AbstractButton button) { public void linkButtonToBoundState(final AbstractButton button) {
linkedButtons.add(button); linkedButtons.add(button);
button.active = !Key.isUnbound(binding); button.active = !binding.isUnbound();
} }
@Override @Override
protected MutableComponent createNarrationMessage() { protected MutableComponent createNarrationMessage() {
return Key.isUnbound(binding) ? new TranslatableComponent("narrator.controls.unbound", bindingName) : new TranslatableComponent("narrator.controls.bound", bindingName, super.createNarrationMessage()); return binding.isUnbound() ? new TranslatableComponent("narrator.controls.unbound", bindingName) : new TranslatableComponent("narrator.controls.bound", bindingName, super.createNarrationMessage());
} }
@Override @Override
@ -54,11 +52,11 @@ public final class KeyBindingWidget extends Button {
} }
public void bindAndStopEditing(final InputConstants.Key key) { public void bindAndStopEditing(final InputConstants.Key key) {
Key.bind(binding, key); binding.setKey(key);
stopEditing(); stopEditing();
for (final AbstractButton button : linkedButtons) { for (final AbstractButton button : linkedButtons) {
button.active = !Key.isUnbound(binding); button.active = !binding.isUnbound();
} }
} }
@ -70,7 +68,7 @@ public final class KeyBindingWidget extends Button {
public void updateKeyBindingText() { public void updateKeyBindingText() {
boolean hasConflict = false; boolean hasConflict = false;
if (!Key.isUnbound(binding)) { if (!binding.isUnbound()) {
for (final KeyMapping other : OPTIONS.keyMappings) { for (final KeyMapping other : OPTIONS.keyMappings) {
if (binding != other && binding.equals(other)) { if (binding != other && binding.equals(other)) {
hasConflict = true; hasConflict = true;
@ -80,13 +78,13 @@ public final class KeyBindingWidget extends Button {
} }
if (isEditing) { if (isEditing) {
setMessage((new TextComponent("> ")).append(Key.getBoundKeyText(binding).copy().withStyle(ChatFormatting.YELLOW)).append(" <").withStyle(ChatFormatting.YELLOW)); setMessage((new TextComponent("> ")).append(binding.getTranslatedKeyMessage().copy().withStyle(ChatFormatting.YELLOW)).append(" <").withStyle(ChatFormatting.YELLOW));
} }
else if (hasConflict) { else if (hasConflict) {
setMessage(Key.getBoundKeyText(binding).copy().withStyle(ChatFormatting.RED)); setMessage(binding.getTranslatedKeyMessage().copy().withStyle(ChatFormatting.RED));
} }
else { else {
setMessage(Key.isUnbound(binding) ? new TextComponent("(No Binding)") : Key.getBoundKeyText(binding)); setMessage(binding.isUnbound() ? new TextComponent("(No Binding)") : binding.getTranslatedKeyMessage());
} }
} }
} }

View File

@ -1,13 +1,13 @@
package chylex.bettercontrols.gui.elements; package chylex.bettercontrols.gui.elements;
import chylex.bettercontrols.util.LiteralText; import net.minecraft.network.chat.Component;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
public final class Option<T> { public final class Option<T> {
private final T value; private final T value;
private final LiteralText text; private final Component text;
public Option(final T value, final LiteralText text) { public Option(final T value, final Component text) {
this.value = value; this.value = value;
this.text = text; this.text = text;
} }
@ -16,7 +16,7 @@ public final class Option<T> {
return value; return value;
} }
public LiteralText getText() { public Component getText() {
return text; return text;
} }

View File

@ -1,9 +1,9 @@
package chylex.bettercontrols.gui.elements; package chylex.bettercontrols.gui.elements;
import chylex.bettercontrols.gui.OptionListWidget.OptionWidget; import chylex.bettercontrols.gui.OptionListWidget.OptionWidget;
import chylex.bettercontrols.util.LiteralText;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.gui.Font; import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.gui.GuiComponent;
import net.minecraft.network.chat.Component;
import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.FormattedCharSequence;
import java.util.List; import java.util.List;
import static chylex.bettercontrols.util.Statics.MINECRAFT; import static chylex.bettercontrols.util.Statics.MINECRAFT;
@ -12,14 +12,14 @@ public final class TextWidget extends GuiComponent implements OptionWidget {
public static final int LEFT = 0; public static final int LEFT = 0;
public static final int CENTER = 1; public static final int CENTER = 1;
private final LiteralText text; private final Component text;
private int x; private int x;
private int y; private int y;
private final int width; private final int width;
private final int height; private final int height;
private final int align; private final int align;
public TextWidget(final int x, final int y, final int width, final int height, final LiteralText text, final int align) { public TextWidget(final int x, final int y, final int width, final int height, final Component text, final int align) {
this.x = x; this.x = x;
this.y = y; this.y = y;
this.width = width; this.width = width;
@ -28,11 +28,11 @@ public final class TextWidget extends GuiComponent implements OptionWidget {
this.align = align; this.align = align;
} }
public TextWidget(final int x, final int y, final int width, final LiteralText text, final int align) { public TextWidget(final int x, final int y, final int width, final Component text, final int align) {
this(x, y, width, 20, text, align); this(x, y, width, 20, text, align);
} }
public TextWidget(final int x, final int y, final int width, final LiteralText text) { public TextWidget(final int x, final int y, final int width, final Component text) {
this(x, y, width, 20, text, LEFT); this(x, y, width, 20, text, LEFT);
} }

View File

@ -32,11 +32,11 @@ public enum ModifierKey {
public abstract boolean isPressed(); public abstract boolean isPressed();
public static ModifierKey getById(final int id) { public static ModifierKey getById(final int id) {
switch (id) { return switch (id) {
case 0: return CONTROL; case 0 -> CONTROL;
case 1: return SHIFT; case 1 -> SHIFT;
case 2: return ALT; case 2 -> ALT;
default: return null; default -> null;
} };
} }
} }

View File

@ -1,5 +1,4 @@
package chylex.bettercontrols.input; package chylex.bettercontrols.input;
import chylex.bettercontrols.util.Key;
import net.minecraft.client.KeyMapping; import net.minecraft.client.KeyMapping;
public class ToggleTracker { public class ToggleTracker {
@ -44,7 +43,7 @@ public class ToggleTracker {
public boolean tick() { public boolean tick() {
final boolean isHoldingReset = isResetKeyPressed(); final boolean isHoldingReset = isResetKeyPressed();
if (Key.isPressed(bindingToggle)) { if (bindingToggle.isDown()) {
if (!waitForRelease) { if (!waitForRelease) {
if (skipNextToggle) { if (skipNextToggle) {
skipNextToggle = false; skipNextToggle = false;
@ -79,7 +78,7 @@ public class ToggleTracker {
} }
protected boolean isResetKeyPressed() { protected boolean isResetKeyPressed() {
return Key.isPressed(bindingReset); return bindingReset.isDown();
} }
public void reset() { public void reset() {

View File

@ -9,7 +9,6 @@ import chylex.bettercontrols.mixin.AccessCameraFields;
import chylex.bettercontrols.mixin.AccessClientPlayerFields; import chylex.bettercontrols.mixin.AccessClientPlayerFields;
import chylex.bettercontrols.mixin.AccessPlayerFields; import chylex.bettercontrols.mixin.AccessPlayerFields;
import chylex.bettercontrols.mixin.AccessStickyKeyBindingStateGetter; import chylex.bettercontrols.mixin.AccessStickyKeyBindingStateGetter;
import chylex.bettercontrols.util.Key;
import net.minecraft.client.Camera; import net.minecraft.client.Camera;
import net.minecraft.client.player.Input; import net.minecraft.client.player.Input;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
@ -97,7 +96,7 @@ public final class PlayerTicker {
final int nextTemporarySprintTimer = temporarySprintTimer - 1; final int nextTemporarySprintTimer = temporarySprintTimer - 1;
temporarySprintTimer = 0; temporarySprintTimer = 0;
if (!Key.isPressed(KEY_SPRINT) && Key.isPressed(KEY_FORWARD)) { if (!KEY_SPRINT.isDown() && KEY_FORWARD.isDown()) {
temporarySprintTimer = nextTemporarySprintTimer; temporarySprintTimer = nextTemporarySprintTimer;
} }
else if (sprintMode == SprintMode.TAP_TO_TOGGLE) { else if (sprintMode == SprintMode.TAP_TO_TOGGLE) {
@ -114,7 +113,7 @@ public final class PlayerTicker {
waitingForSprintKeyRelease = true; waitingForSprintKeyRelease = true;
} }
else if (sprintMode == SprintMode.TAP_TO_TOGGLE) { else if (sprintMode == SprintMode.TAP_TO_TOGGLE) {
if (Key.isPressed(KEY_SPRINT)) { if (KEY_SPRINT.isDown()) {
if (!waitingForSprintKeyRelease) { if (!waitingForSprintKeyRelease) {
waitingForSprintKeyRelease = true; waitingForSprintKeyRelease = true;
stopSprintingAfterReleasingSprintKey = player.isSprinting(); stopSprintingAfterReleasingSprintKey = player.isSprinting();
@ -129,12 +128,12 @@ public final class PlayerTicker {
} }
} }
else if (sprintMode == SprintMode.HOLD) { else if (sprintMode == SprintMode.HOLD) {
if (Key.isPressed(KEY_SPRINT)) { if (KEY_SPRINT.isDown()) {
stopSprintingAfterReleasingSprintKey = true; stopSprintingAfterReleasingSprintKey = true;
} }
} }
if (stopSprintingAfterReleasingSprintKey && !Key.isPressed(KEY_SPRINT)) { if (stopSprintingAfterReleasingSprintKey && !KEY_SPRINT.isDown()) {
stopSprintingAfterReleasingSprintKey = false; stopSprintingAfterReleasingSprintKey = false;
waitingForSprintKeyRelease = false; waitingForSprintKeyRelease = false;
player.setSprinting(false); player.setSprinting(false);
@ -157,7 +156,7 @@ public final class PlayerTicker {
} }
if (FlightHelper.isFlyingCreativeOrSpectator(player)) { if (FlightHelper.isFlyingCreativeOrSpectator(player)) {
final boolean boost = Key.isPressed(KEY_SPRINT); final boolean boost = KEY_SPRINT.isDown();
final float flightSpeed = FlightHelper.getFlightSpeed(player, boost); final float flightSpeed = FlightHelper.getFlightSpeed(player, boost);
final float verticalVelocity = FlightHelper.getExtraVerticalVelocity(player, boost); final float verticalVelocity = FlightHelper.getExtraVerticalVelocity(player, boost);
@ -185,7 +184,7 @@ public final class PlayerTicker {
if (cfg().resumeSprintingAfterHittingObstacle) { if (cfg().resumeSprintingAfterHittingObstacle) {
if (wasHittingObstacle != player.horizontalCollision) { if (wasHittingObstacle != player.horizontalCollision) {
if (!wasHittingObstacle) { if (!wasHittingObstacle) {
wasSprintingBeforeHittingObstacle = player.isSprinting() || Key.isPressed(KEY_SPRINT); wasSprintingBeforeHittingObstacle = player.isSprinting() || KEY_SPRINT.isDown();
} }
else if (wasSprintingBeforeHittingObstacle) { else if (wasSprintingBeforeHittingObstacle) {
wasSprintingBeforeHittingObstacle = false; wasSprintingBeforeHittingObstacle = false;
@ -254,7 +253,7 @@ public final class PlayerTicker {
} }
if (player.isCreative()) { if (player.isCreative()) {
if (Key.wasPressed(cfg().keyToggleFlight)) { if (cfg().keyToggleFlight.consumeClick()) {
final boolean isFlying = !player.getAbilities().flying; final boolean isFlying = !player.getAbilities().flying;
player.getAbilities().flying = isFlying; player.getAbilities().flying = isFlying;
@ -287,14 +286,14 @@ public final class PlayerTicker {
} }
} }
if (Key.wasPressed(cfg().keyResetAllToggles)) { if (cfg().keyResetAllToggles.consumeClick()) {
toggleSprint.reset(); toggleSprint.reset();
toggleSneak.reset(); toggleSneak.reset();
toggleWalkForward.reset(); toggleWalkForward.reset();
toggleJump.reset(); toggleJump.reset();
} }
if (Key.isPressed(cfg().keyOpenMenu)) { if (cfg().keyOpenMenu.isDown()) {
MINECRAFT.setScreen(new BetterControlsScreen(null)); MINECRAFT.setScreen(new BetterControlsScreen(null));
} }
} }

View File

@ -1,46 +0,0 @@
package chylex.bettercontrols.util;
import com.mojang.blaze3d.platform.InputConstants;
import net.minecraft.client.KeyMapping;
import net.minecraft.network.chat.Component;
public final class Key {
private Key() {}
public static final InputConstants.Key INVALID = InputConstants.UNKNOWN;
public static boolean isUnbound(final KeyMapping binding) {
return binding.isUnbound();
}
public static boolean isPressed(final KeyMapping binding) {
return binding.isDown();
}
public static boolean wasPressed(final KeyMapping binding) {
return binding.consumeClick();
}
public static Component getBoundKeyText(final KeyMapping binding) {
return binding.getTranslatedKeyMessage();
}
public static void bind(final KeyMapping binding, final InputConstants.Key input) {
binding.setKey(input);
}
public static String writeBinding(final KeyMapping binding) {
return binding.saveString();
}
public static void readBinding(final KeyMapping binding, final String serialized) {
bind(binding, InputConstants.getKey(serialized));
}
public static InputConstants.Key inputFromMouse(final int button) {
return InputConstants.Type.MOUSE.getOrCreate(button);
}
public static InputConstants.Key inputFromKeyboard(final int keyCode, final int scanCode) {
return InputConstants.getKey(keyCode, scanCode);
}
}

View File

@ -1,12 +0,0 @@
package chylex.bettercontrols.util;
import net.minecraft.network.chat.TextComponent;
public final class LiteralText extends TextComponent {
public static LiteralText text(final String text) {
return new LiteralText(text);
}
public LiteralText(final String msg) {
super(msg);
}
}

View File

@ -2,7 +2,7 @@
"required": true, "required": true,
"minVersion": "0.8", "minVersion": "0.8",
"package": "chylex.bettercontrols.mixin", "package": "chylex.bettercontrols.mixin",
"compatibilityLevel": "JAVA_8", "compatibilityLevel": "JAVA_16",
"client": [ "client": [
"AccessCameraFields", "AccessCameraFields",
"AccessClientPlayerFields", "AccessClientPlayerFields",