|
@@ -12,13 +12,14 @@ import chylex.bettercontrols.input.ModifierKey;
|
|
|
import chylex.bettercontrols.input.SprintMode;
|
|
|
import chylex.bettercontrols.util.Key;
|
|
|
import chylex.bettercontrols.util.LiteralText;
|
|
|
-import net.minecraft.client.gui.Element;
|
|
|
-import net.minecraft.client.gui.screen.Screen;
|
|
|
-import net.minecraft.client.gui.screen.ScreenTexts;
|
|
|
-import net.minecraft.client.gui.screen.option.GameOptionsScreen;
|
|
|
-import net.minecraft.client.gui.widget.ButtonWidget;
|
|
|
-import net.minecraft.client.option.KeyBinding;
|
|
|
-import net.minecraft.client.util.math.MatrixStack;
|
|
|
+import com.mojang.blaze3d.vertex.PoseStack;
|
|
|
+import net.minecraft.client.KeyMapping;
|
|
|
+import net.minecraft.client.gui.components.Button;
|
|
|
+import net.minecraft.client.gui.components.events.GuiEventListener;
|
|
|
+import net.minecraft.client.gui.screens.OptionsSubScreen;
|
|
|
+import net.minecraft.client.gui.screens.Screen;
|
|
|
+import net.minecraft.network.chat.CommonComponents;
|
|
|
+import org.jetbrains.annotations.Nullable;
|
|
|
import org.lwjgl.glfw.GLFW;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
@@ -32,7 +33,7 @@ import static chylex.bettercontrols.gui.elements.TextWidget.CENTER;
|
|
|
import static chylex.bettercontrols.util.LiteralText.text;
|
|
|
import static chylex.bettercontrols.util.Statics.OPTIONS;
|
|
|
|
|
|
-public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
+public class BetterControlsScreen extends OptionsSubScreen {
|
|
|
public static final LiteralText TITLE = text("Better Controls");
|
|
|
|
|
|
private static final int BOTTOM_PADDING = 3;
|
|
@@ -48,7 +49,7 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
|
|
|
// Options
|
|
|
|
|
|
- private int generateSprintingOptions(int y, final List<Element> elements) {
|
|
|
+ private int generateSprintingOptions(int y, final List<GuiEventListener> elements) {
|
|
|
final BetterControlsConfig cfg = BetterControlsMod.config;
|
|
|
|
|
|
generateKeyBindingWithModifierOption(y, elements, text("Toggle Sprint"), cfg.keyToggleSprint);
|
|
@@ -72,7 +73,7 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
return y;
|
|
|
}
|
|
|
|
|
|
- private int generateSneakingOptions(int y, final List<Element> elements) {
|
|
|
+ private int generateSneakingOptions(int y, final List<GuiEventListener> elements) {
|
|
|
final BetterControlsConfig cfg = BetterControlsMod.config;
|
|
|
|
|
|
generateKeyBindingWithModifierOption(y, elements, text("Toggle Sneak"), cfg.keyToggleSneak);
|
|
@@ -87,7 +88,7 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
}
|
|
|
|
|
|
@SuppressWarnings({ "AutoBoxing", "AutoUnboxing" })
|
|
|
- private int generateFlightOptions(int y, final List<Element> elements) {
|
|
|
+ private int generateFlightOptions(int y, final List<GuiEventListener> elements) {
|
|
|
final BetterControlsConfig cfg = BetterControlsMod.config;
|
|
|
|
|
|
final List<Option<Float>> flightSpeedOptions = Arrays.asList(
|
|
@@ -172,7 +173,7 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
return y;
|
|
|
}
|
|
|
|
|
|
- private int generateMiscellaneousOptions(int y, final List<Element> elements) {
|
|
|
+ private int generateMiscellaneousOptions(int y, final List<GuiEventListener> elements) {
|
|
|
final BetterControlsConfig cfg = BetterControlsMod.config;
|
|
|
|
|
|
generateKeyBindingWithModifierOption(y, elements, text("Toggle Walk Forwards"), cfg.keyToggleWalkForward);
|
|
@@ -202,7 +203,7 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
new Option<>(ModifierKey.ALT, text("Alt"))
|
|
|
);
|
|
|
|
|
|
- private void generateKeyBindingWithModifierOption(final int y, final List<Element> elements, final LiteralText text, final KeyBindingWithModifier binding) {
|
|
|
+ private void generateKeyBindingWithModifierOption(final int y, final List<GuiEventListener> elements, final LiteralText text, final KeyBindingWithModifier binding) {
|
|
|
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, binding, this::startEditingKeyBinding);
|
|
|
bindingButton.linkButtonToBoundState(modifierButton);
|
|
@@ -213,7 +214,7 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
allKeyBindings.add(bindingButton);
|
|
|
}
|
|
|
|
|
|
- private static void generateLeftSideText(final int y, final List<Element> elements, final LiteralText text) {
|
|
|
+ private static void generateLeftSideText(final int y, final List<GuiEventListener> elements, final LiteralText text) {
|
|
|
elements.add(new TextWidget(col2(0), y, COL2_W - TEXT_PADDING_RIGHT, text));
|
|
|
}
|
|
|
|
|
@@ -223,7 +224,7 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
private KeyBindingWidget editingKeyBinding;
|
|
|
private final List<KeyBindingWidget> allKeyBindings = new ArrayList<>();
|
|
|
|
|
|
- public BetterControlsScreen(final Screen parentScreen) {
|
|
|
+ public BetterControlsScreen(@Nullable final Screen parentScreen) {
|
|
|
super(parentScreen, OPTIONS, TITLE);
|
|
|
}
|
|
|
|
|
@@ -231,7 +232,7 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
public void init() {
|
|
|
allKeyBindings.clear();
|
|
|
|
|
|
- final List<Element> elements = new ArrayList<>();
|
|
|
+ final List<GuiEventListener> elements = new ArrayList<>();
|
|
|
int y = 0;
|
|
|
|
|
|
elements.add(new TextWidget(0, y, ROW_WIDTH, ROW_HEIGHT, text("Sprinting"), CENTER));
|
|
@@ -246,8 +247,8 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
elements.add(new TextWidget(0, y, ROW_WIDTH, ROW_HEIGHT, text("Miscellaneous"), CENTER));
|
|
|
y = generateMiscellaneousOptions(y + ROW_HEIGHT, elements) + TITLE_MARGIN_TOP;
|
|
|
|
|
|
- addDrawableChild(new ButtonWidget(width / 2 - 99, height - 29, 200, 20, ScreenTexts.DONE, btn -> client.openScreen(parent)));
|
|
|
- addSelectableChild(optionsWidget = new OptionListWidget(21, height - 32, width, height, elements, y - TITLE_MARGIN_TOP + BOTTOM_PADDING));
|
|
|
+ addRenderableWidget(new Button(width / 2 - 99, height - 29, 200, 20, CommonComponents.GUI_DONE, btn -> minecraft.setScreen(lastScreen)));
|
|
|
+ addWidget(optionsWidget = new OptionListWidget(21, height - 32, width, height, elements, y - TITLE_MARGIN_TOP + BOTTOM_PADDING));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -256,10 +257,10 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void render(final MatrixStack matrices, final int mouseX, final int mouseY, final float delta) {
|
|
|
+ public void render(final PoseStack matrices, final int mouseX, final int mouseY, final float delta) {
|
|
|
renderBackground(matrices);
|
|
|
optionsWidget.render(matrices, mouseX, mouseY, delta);
|
|
|
- drawCenteredText(matrices, textRenderer, title, width / 2, 8, (255 << 16) | (255 << 8) | 255);
|
|
|
+ drawCenteredString(matrices, font, title, width / 2, 8, (255 << 16) | (255 << 8) | 255);
|
|
|
super.render(matrices, mouseX, mouseY, delta);
|
|
|
}
|
|
|
|
|
@@ -303,7 +304,7 @@ public class BetterControlsScreen extends GameOptionsScreen {
|
|
|
|
|
|
private void onKeyBindingEditingFinished() {
|
|
|
editingKeyBinding = null;
|
|
|
- KeyBinding.updateKeysByCode();
|
|
|
+ KeyMapping.resetMapping();
|
|
|
|
|
|
for (final KeyBindingWidget widget : allKeyBindings) {
|
|
|
widget.updateKeyBindingText();
|