aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorOwen <64725743+Ownwn@users.noreply.github.com>2025-01-03 11:25:01 +1300
committerGitHub <noreply@github.com>2025-01-03 06:25:01 +0800
commit180408fabb236c1ee8a26206921695d97984ad98 (patch)
treebaea1e9a16998f536c719022eaefefda3c60b67b /src/main/java
parent30d8f6e3be09738efe3760206e0c17b6e317ceaa (diff)
downloadSkyblocker-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')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/mixins/SignEditScreenMixin.java26
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("^^^^^^^^^^^^^^^");
+ }
}