From faf24ced17ed9f9a4aa0fa82f037b825c1782a05 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Thu, 2 Oct 2025 17:24:25 +0200 Subject: [PATCH] feat: improve options screen with tooltips & better reset --- .../client/gui/config/ControllerBindingButton.java | 10 ++++++++-- .../client/gui/config/ControllerSelectionButton.java | 2 ++ gradle.properties | 6 +++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/config/ControllerBindingButton.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/config/ControllerBindingButton.java index a0bdf95..2220f6b 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/config/ControllerBindingButton.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/config/ControllerBindingButton.java @@ -38,7 +38,8 @@ public class ControllerBindingButton extends ButtonWidget implements ControlsInp ControllerBindingButton editButton = new ControllerBindingButton(screen.width - 185 + 22, 0, 128, 20, binding); TextIconButtonWidget resetButton = TextIconButtonWidget.builder(Text.translatable("controls.reset"), (button -> { MidnightControlsConfig.setButtonBinding(binding, binding.getDefaultButton()); - screen.updateList(); + MidnightControlsClient.input.beginControlsInput(null); + editButton.updateMessage(false); }), true).texture(Identifier.of("midnightlib","icon/reset"), 12, 12).dimension(20, 20).build(); resetButton.setPosition(screen.width - 205 + 150 + 25, 0); editButton.resetButton = resetButton; @@ -47,16 +48,20 @@ public class ControllerBindingButton extends ButtonWidget implements ControlsInp TextIconButtonWidget unbindButton = TextIconButtonWidget.builder(Text.translatable("midnightcontrols.narrator.unbound", binding.getText()), (button -> { MidnightControlsConfig.setButtonBinding(binding, UNBOUND); - screen.updateList(); + MidnightControlsClient.input.beginControlsInput(null); + editButton.updateMessage(false); }), true).texture(Identifier.of("midnightcontrols","icon/unbind"), 12, 12).dimension(20, 20).build(); unbindButton.setPosition(screen.width - 205 + 20, 0); unbindButton.setTooltip(Tooltip.of(SpruceTexts.GUI_UNBIND)); + unbindButton.active = !binding.isNotBound(); + editButton.unbindButton = unbindButton; list.addButton(Lists.newArrayList(editButton, resetButton, unbindButton), Text.translatable(binding.getTranslationKey()), info); } private final ButtonBinding binding; private @Nullable ClickableWidget resetButton; + private @Nullable ClickableWidget unbindButton; public ControllerBindingButton(int x, int y, int width, int height, ButtonBinding binding) { super(x, y, width, height, binding.getText(), (button) -> {}, (textSupplier) -> binding.isNotBound() ? Text.translatable("narrator.controls.unbound", binding.getTranslationKey()) : Text.translatable("narrator.controls.bound", binding.getTranslationKey(), textSupplier.get())); @@ -91,6 +96,7 @@ public class ControllerBindingButton extends ButtonWidget implements ControlsInp } if (this.resetButton != null) this.resetButton.active = !this.binding.isDefault(); + if (this.unbindButton != null) this.unbindButton.active = !binding.isNotBound(); if (hasConflicts.get()) { this.setMessage(Text.literal("[ ").append(this.getMessage().copy().formatted(Formatting.WHITE)).append(" ]").formatted(Formatting.RED)); diff --git a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/config/ControllerSelectionButton.java b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/config/ControllerSelectionButton.java index d5979eb..c468842 100644 --- a/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/config/ControllerSelectionButton.java +++ b/common/src/main/java/eu/midnightdust/midnightcontrols/client/gui/config/ControllerSelectionButton.java @@ -5,6 +5,7 @@ import eu.midnightdust.lib.config.MidnightConfigListWidget; import eu.midnightdust.lib.config.MidnightConfigScreen; import eu.midnightdust.midnightcontrols.client.MidnightControlsConfig; import eu.midnightdust.midnightcontrols.client.controller.Controller; +import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.TextIconButtonWidget; import net.minecraft.text.Text; @@ -43,6 +44,7 @@ public class ControllerSelectionButton { button.setMessage(getControllerName(second)); }).dimensions(screen.width - 185, 0, 150, 20).build(); resetButton.active = second ? MidnightControlsConfig.getSecondController().isPresent() : false; + if (second) editButton.setTooltip(Tooltip.of(Text.translatable("midnightcontrols.menu.controller2.tooltip"))); list.addButton(List.of(editButton, resetButton), Text.translatable(second ? "midnightcontrols.menu.controller2" : "midnightcontrols.menu.controller"), new EntryInfo(null, screen.modid)); } diff --git a/gradle.properties b/gradle.properties index 4c387ee..522258b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,19 +8,19 @@ yarn_mappings=1.21.9+build.1 enabled_platforms=fabric,neoforge archives_base_name=midnightcontrols -mod_version=1.11.3-alpha.2 +mod_version=1.11.3-beta.1 maven_group=eu.midnightdust release_type=alpha modrinth_id = bXX9h73M curseforge_id = 621768 # Configure the IDs here after creating the projects on the websites -midnightlib_version=1.8.1+1.21.9 +midnightlib_version=1.8.2+1.21.9 fabric_loader_version=0.17.2 fabric_api_version=0.133.13+1.21.9 -neoforge_version=21.6.0-beta +neoforge_version=21.9.3-beta yarn_mappings_patch_neoforge_version = 1.21+build.4 quilt_loader_version=0.19.0-beta.18