aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-05-11 21:29:26 -0400
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-05-11 21:29:26 -0400
commit34a804caaebf08c448ac3ced76d265b9a8ba9457 (patch)
tree53d4ecd2cbfc75e6d66b075c1aaf7d83549a1b6a /src/main
parent2d77a7265176fd5fb7e728e362c0c3c2d59bf25d (diff)
downloadSkyblocker-34a804caaebf08c448ac3ced76d265b9a8ba9457.tar.gz
Skyblocker-34a804caaebf08c448ac3ced76d265b9a8ba9457.tar.bz2
Skyblocker-34a804caaebf08c448ac3ced76d265b9a8ba9457.zip
Fix invalid equation text and refactor
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/auction/EditBidPopup.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/calculators/CalculatorCommand.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/calculators/SignCalculator.java20
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/Calculator.java47
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()) {