diff options
author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-05-11 21:29:26 -0400 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-05-11 21:29:26 -0400 |
commit | 34a804caaebf08c448ac3ced76d265b9a8ba9457 (patch) | |
tree | 53d4ecd2cbfc75e6d66b075c1aaf7d83549a1b6a /src/main/java/de | |
parent | 2d77a7265176fd5fb7e728e362c0c3c2d59bf25d (diff) | |
download | Skyblocker-34a804caaebf08c448ac3ced76d265b9a8ba9457.tar.gz Skyblocker-34a804caaebf08c448ac3ced76d265b9a8ba9457.tar.bz2 Skyblocker-34a804caaebf08c448ac3ced76d265b9a8ba9457.zip |
Fix invalid equation text and refactor
Diffstat (limited to 'src/main/java/de')
5 files changed, 28 insertions, 51 deletions
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 99c6381f..03d300f4 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -247,7 +247,7 @@ public class UIAndVisualsConfig { public boolean enabled = true; @SerialEntry - public boolean requiresEquals = true; + public boolean requiresEquals = false; } public static class FlameOverlay { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/EditBidPopup.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/EditBidPopup.java index 9114fc52..f96e3231 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/auction/EditBidPopup.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/EditBidPopup.java @@ -76,8 +76,7 @@ public class EditBidPopup extends AbstractPopupScreen { if (SkyblockerConfigManager.get().uiAndVisuals.inputCalculator.enabled) { if (!isStringGood(SignCalculator.getNewValue(false))) return; sendPacket(SignCalculator.getNewValue(false)); - } - else { + } else { if (!isStringGood(textFieldWidget.getText().trim())) return; sendPacket(textFieldWidget.getText().trim()); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/calculators/CalculatorCommand.java b/src/main/java/de/hysky/skyblocker/skyblock/calculators/CalculatorCommand.java index 9c0d83e0..d103bcdd 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/calculators/CalculatorCommand.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/calculators/CalculatorCommand.java @@ -14,7 +14,7 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import java.text.DecimalFormat; +import java.text.NumberFormat; import static com.mojang.brigadier.arguments.StringArgumentType.getString; import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.argument; @@ -22,8 +22,7 @@ import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.lit public class CalculatorCommand { private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); - - private static final DecimalFormat FORMATTER = new DecimalFormat("#,###.##"); + private static final NumberFormat FORMATTER = NumberFormat.getInstance(); public static void init() { ClientCommandRegistrationCallback.EVENT.register(CalculatorCommand::calculate); @@ -44,7 +43,7 @@ public class CalculatorCommand { try { text.append(Text.literal(FORMATTER.format(Calculator.calculate(calculation))).formatted(Formatting.GREEN)); } catch (UnsupportedOperationException e) { - text.append(Text.translatable("text.autoconfig.skyblocker.option.general.inputCalculator.invalidEquation").formatted(Formatting.RED)); + text.append(Text.translatable("skyblocker.config.uiAndVisuals.inputCalculator.invalidEquation").formatted(Formatting.RED)); } if (CLIENT == null || CLIENT.player == null) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java b/src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java index 02701c16..f9bb1e9f 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java @@ -7,16 +7,14 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import java.text.DecimalFormat; +import java.text.NumberFormat; public class SignCalculator { - private static final MinecraftClient CLIENT = MinecraftClient.getInstance(); - - private static final DecimalFormat FORMATTER = new DecimalFormat("#,###.##"); + private static final NumberFormat FORMATTER = NumberFormat.getInstance(); private static String lastInput; - private static Double output; + private static double output; public static void renderCalculator(DrawContext context, String message, int renderX, int renderY) { if (SkyblockerConfigManager.get().uiAndVisuals.inputCalculator.requiresEquals) { @@ -24,7 +22,7 @@ public class SignCalculator { message = message.substring(1); } else { - output = null; + output = -1; lastInput = message; return; } @@ -34,7 +32,7 @@ public class SignCalculator { try { output = Calculator.calculate(message); } catch (Exception e) { - output = null; + output = -1; } } @@ -44,14 +42,14 @@ public class SignCalculator { } public static String getNewValue(Boolean isPrice) { - if (output == null) { + if (output == -1) { //if mode is not activated or just invalid equation return what the user typed in return lastInput; } //price can except decimals and exponents if (isPrice) { - return output.toString(); + return FORMATTER.format(output); } //amounts want an integer number so round return Long.toString(Math.round(output)); @@ -59,8 +57,8 @@ public class SignCalculator { private static void render(DrawContext context, String input, int renderX, int renderY) { Text text; - if (output == null) { - text = Text.translatable("text.autoconfig.skyblocker.option.general.inputCalculator.invalidEquation").formatted(Formatting.RED); + if (output == -1) { + text = Text.translatable("skyblocker.config.uiAndVisuals.inputCalculator.invalidEquation").formatted(Formatting.RED); } else { text = Text.literal(input + " = " + FORMATTER.format(output)).formatted(Formatting.GREEN); } diff --git a/src/main/java/de/hysky/skyblocker/utils/Calculator.java b/src/main/java/de/hysky/skyblocker/utils/Calculator.java index 9991c697..30c1ee64 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Calculator.java +++ b/src/main/java/de/hysky/skyblocker/utils/Calculator.java @@ -1,14 +1,10 @@ package de.hysky.skyblocker.utils; -import de.hysky.skyblocker.config.SkyblockerConfigManager; -import net.minecraft.util.Util; - import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Calculator { - public enum TokenType { NUMBER, OPERATOR, L_PARENTHESIS, R_PARENTHESIS } @@ -20,13 +16,13 @@ public class Calculator { } private static final Pattern NUMBER_PATTERN = Pattern.compile("(\\d+\\.?\\d*)([kmbse]?)"); - private static final HashMap<String, Integer> magnitudeValues = Util.make(new HashMap<>(), map -> { - map.put("s", 64); - map.put("e", 160); - map.put("k", 1000); - map.put("m", 1000000); - map.put("b", 1000000000); - }); + private static final Map<String, Integer> magnitudeValues = Map.of( + "s", 64, + "e", 160, + "k", 1000, + "m", 1000000, + "b", 1000000000 + ); private static List<Token> lex(String input) { List<Token> tokens = new ArrayList<>(); @@ -88,16 +84,13 @@ public class Calculator { * @param tokens equation in infix notation order * @return equation in RPN order */ - private static List<Token> shunt(List<Token> tokens) { Deque<Token> operatorStack = new ArrayDeque<>(); List<Token> outputQueue = new ArrayList<>(); for (Token shuntingToken : tokens) switch (shuntingToken.type) { - case NUMBER -> { - outputQueue.add(shuntingToken); - } + case NUMBER -> outputQueue.add(shuntingToken); case OPERATOR -> { int precedence = getPrecedence(shuntingToken.value); while (!operatorStack.isEmpty()) { @@ -115,9 +108,7 @@ public class Calculator { } operatorStack.push(shuntingToken); } - case L_PARENTHESIS -> { - operatorStack.push(shuntingToken); - } + case L_PARENTHESIS -> operatorStack.push(shuntingToken); case R_PARENTHESIS -> { while (true) { if (operatorStack.isEmpty()) { @@ -164,33 +155,23 @@ public class Calculator { Deque<Double> values = new ArrayDeque<>(); for (Token token : tokens) { switch (token.type) { - case NUMBER -> { - values.push(calculateValue(token.value)); - } + case NUMBER -> values.push(calculateValue(token.value)); case OPERATOR -> { double right = values.pop(); double left = values.pop(); switch (token.value) { - case "+" -> { - values.push(left + right); - } - case "-" -> { - values.push(left - right); - } + case "+" -> values.push(left + right); + case "-" -> values.push(left - right); case "/" -> { if (right == 0) { throw new UnsupportedOperationException("Can not divide by 0"); } values.push(left / right); } - case "*" -> { - values.push(left * right); - } + case "*" -> values.push(left * right); } } - case L_PARENTHESIS, R_PARENTHESIS -> { - throw new UnsupportedOperationException("Equation is not in RPN"); - } + case L_PARENTHESIS, R_PARENTHESIS -> throw new UnsupportedOperationException("Equation is not in RPN"); } } if (values.isEmpty()) { |