diff options
| author | Owen <64725743+Ownwn@users.noreply.github.com> | 2025-01-03 11:25:01 +1300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-03 06:25:01 +0800 |
| commit | 180408fabb236c1ee8a26206921695d97984ad98 (patch) | |
| tree | baea1e9a16998f536c719022eaefefda3c60b67b /src/main/java | |
| parent | 30d8f6e3be09738efe3760206e0c17b6e317ceaa (diff) | |
| download | Skyblocker-180408fabb236c1ee8a26206921695d97984ad98.tar.gz Skyblocker-180408fabb236c1ee8a26206921695d97984ad98.tar.bz2 Skyblocker-180408fabb236c1ee8a26206921695d97984ad98.zip | |
Add feature to close sign screens with the enter key (#1122)
Diffstat (limited to 'src/main/java')
3 files changed, 35 insertions, 2 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java index 38dff23f..0f58011d 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java @@ -431,6 +431,14 @@ public class UIAndVisualsCategory { newValue -> config.uiAndVisuals.inputCalculator.requiresEquals = newValue) .controller(ConfigUtils::createBooleanController) .build()) + .option(Option.<Boolean>createBuilder() + .name(Text.translatable("skyblocker.config.uiAndVisuals.inputCalculator.closeSignsWithEnter")) + .description(OptionDescription.of(Text.translatable("skyblocker.config.uiAndVisuals.inputCalculator.closeSignsWithEnter.@Tooltip"))) + .binding(defaults.uiAndVisuals.inputCalculator.closeSignsWithEnter, + () -> config.uiAndVisuals.inputCalculator.closeSignsWithEnter, + newValue -> config.uiAndVisuals.inputCalculator.closeSignsWithEnter = newValue) + .controller(ConfigUtils::createBooleanController) + .build()) .build()) //Flame Overlay diff --git a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java index c2f94a36..01671c79 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -306,6 +306,9 @@ public class UIAndVisualsConfig { @SerialEntry public boolean requiresEquals = false; + + @SerialEntry + public boolean closeSignsWithEnter = true; } public static class FlameOverlay { diff --git a/src/main/java/de/hysky/skyblocker/mixins/SignEditScreenMixin.java b/src/main/java/de/hysky/skyblocker/mixins/SignEditScreenMixin.java index 14769a76..4248a3e5 100644 --- a/src/main/java/de/hysky/skyblocker/mixins/SignEditScreenMixin.java +++ b/src/main/java/de/hysky/skyblocker/mixins/SignEditScreenMixin.java @@ -13,11 +13,13 @@ import net.minecraft.util.Formatting; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.llamalad7.mixinextras.sugar.Local; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(AbstractSignEditScreen.class) public abstract class SignEditScreenMixin extends Screen { @@ -26,6 +28,9 @@ public abstract class SignEditScreenMixin extends Screen { @Final private String[] messages; + @Shadow + public abstract void close(); + protected SignEditScreenMixin(Text title) { super(title); } @@ -42,12 +47,24 @@ public abstract class SignEditScreenMixin extends Screen { } } //if the sign is being used to enter number send it to the sign calculator - if (messages[1].equals("^^^^^^^^^^^^^^^") && config.uiAndVisuals.inputCalculator.enabled) { + if (isInputSign() && config.uiAndVisuals.inputCalculator.enabled) { SignCalculator.renderCalculator(context, messages[0], context.getScaledWindowWidth() / 2, 55); } } } + @Inject(method = "keyPressed", at = @At("HEAD")) + private void skyblocker$keyPressed(int keyCode, int scanCode, int modifiers, CallbackInfoReturnable<Boolean> cir) { + // enter key + if (keyCode != 257 || !Utils.isOnSkyblock() || !isInputSign()) { + return; + } + + if (SkyblockerConfigManager.get().uiAndVisuals.inputCalculator.closeSignsWithEnter) { + this.close(); + } + } + @Inject(method = "finishEditing", at = @At("HEAD")) private void skyblocker$finishEditing(CallbackInfo ci) { var config = SkyblockerConfigManager.get(); @@ -60,7 +77,7 @@ public abstract class SignEditScreenMixin extends Screen { } } //if the sign is being used to enter number get number from calculator for if maths has been done - if (messages[1].equals("^^^^^^^^^^^^^^^") && config.uiAndVisuals.inputCalculator.enabled) { + if (isInputSign() && config.uiAndVisuals.inputCalculator.enabled) { boolean isPrice = messages[2].contains("price"); String value = SignCalculator.getNewValue(isPrice); if (value.length() >= 15) { @@ -70,4 +87,9 @@ public abstract class SignEditScreenMixin extends Screen { } } } + + @Unique + private boolean isInputSign() { + return messages[1].equals("^^^^^^^^^^^^^^^"); + } } |
