aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock
diff options
context:
space:
mode:
authorolim <bobq4582@gmail.com>2024-04-23 17:09:31 +0100
committerolim <bobq4582@gmail.com>2024-05-09 22:42:34 +0100
commite950575d4e11d27acbb6682b248de8f477a9ba50 (patch)
treec6a2186e54aece812c924774e9799306dd8c859d /src/main/java/de/hysky/skyblocker/skyblock
parent5eb9d273d2eb56cebaf0be0f90716b362916400b (diff)
downloadSkyblocker-e950575d4e11d27acbb6682b248de8f477a9ba50.tar.gz
Skyblocker-e950575d4e11d27acbb6682b248de8f477a9ba50.tar.bz2
Skyblocker-e950575d4e11d27acbb6682b248de8f477a9ba50.zip
create mixin to render to the sign input screen and basic converter for k,m,b
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/SignCalculator.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/SignCalculator.java b/src/main/java/de/hysky/skyblocker/skyblock/SignCalculator.java
new file mode 100644
index 00000000..ab0d417c
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/SignCalculator.java
@@ -0,0 +1,74 @@
+package de.hysky.skyblocker.skyblock;
+
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.DrawContext;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+import net.minecraft.util.Util;
+import net.minecraft.util.math.Vec3i;
+
+import java.awt.*;
+import java.awt.image.LookupTable;
+import java.text.DecimalFormat;
+import java.util.HashMap;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class SignCalculator {
+
+ private static final MinecraftClient CLIENT = MinecraftClient.getInstance();
+
+ private static final Pattern NUMBER_PATTERN = Pattern.compile("(\\d+\\.?\\d*)([kmb]?)");
+ private static final DecimalFormat FORMATTER = new DecimalFormat("#,###.##");
+
+ private static final HashMap<String, Integer> magnitudeValues = Util.make(new HashMap<>(), map -> {
+ map.put("k", 1000);
+ map.put("m", 1000000);
+ map.put("b", 1000000000);
+ });
+
+ private static String input;
+ private static Double output;
+
+ public static void renderSign(DrawContext context, String[] messages){
+ input = messages[0];
+
+ calculateValue();
+
+ render(context);
+ }
+
+ public static void calculateValue() {
+ Matcher numberMatcher = NUMBER_PATTERN.matcher(input.toLowerCase());
+ if (!numberMatcher.matches()) {
+ output = null;
+ return;
+ }
+ double number = Double.parseDouble(numberMatcher.group(1)); //
+ String magnitude = numberMatcher.group(2);
+
+ if (!magnitude.isEmpty()) {
+ if (!magnitudeValues.containsKey(magnitude)) {//its invalid if its another letter
+ output = null;
+ return;
+ }
+ number *= magnitudeValues.get(magnitude);
+ }
+
+ output = number;
+
+ }
+
+
+ private static void render(DrawContext context) {
+ Text text;
+ if (output == null) {
+ text = Text.literal("test").formatted(Formatting.RED);
+ }
+ else {
+ text = Text.literal(input +" = " + FORMATTER.format(output)).formatted(Formatting.GREEN);
+ }
+
+ context.drawCenteredTextWithShadow(CLIENT.textRenderer, text,context.getScaledWindowWidth() /2 , 55,0xFFFFFFFF);
+ }
+}