blob: cf621ca70697864af32b1e48068379fd2d45110e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
package de.hysky.skyblocker.skyblock;
import de.hysky.skyblocker.skyblock.dungeon.puzzle.waterboard.Switch;
import de.hysky.skyblocker.utils.Calculator;
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 java.text.DecimalFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SignCalculator {
private static final MinecraftClient CLIENT = MinecraftClient.getInstance();
private static final DecimalFormat FORMATTER = new DecimalFormat("#,###.##");
private static String lastInput;
private static String input;
private static Double output;
public static void renderSign(DrawContext context, String[] messages){
input = messages[0];
//only update output if new input
if (!input.equals(lastInput)) { //
try {
output = Calculator.calculate(input);
} catch (Exception e){
output = null; //todo log
}
}
render(context);
lastInput = input;
}
public static String getNewValue(Boolean isPrice) {
if (output == null) {
return "";
}
//price can except decimals and exponents
if (isPrice) {
return output.toString();
}
//amounts want an integer number so round
return Long.toString(Math.round(output));
}
private static void render(DrawContext context) {
Text text;
if (output == null) {
text = Text.literal("Invalid Equation").formatted(Formatting.RED);
}
else {
text = Text.literal(input +" = " + FORMATTER.format(output)).formatted(Formatting.GREEN);
}
context.drawCenteredTextWithShadow(CLIENT.textRenderer, text,context.getScaledWindowWidth() /2 , 55,0xFFFFFFFF);
}
}
|