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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
package com.thatgravyboat.skyblockhud.handlers;
import com.thatgravyboat.skyblockhud.api.events.SidebarLineUpdateEvent;
import com.thatgravyboat.skyblockhud.api.events.SidebarPostEvent;
import com.thatgravyboat.skyblockhud.utils.Utils;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Arrays;
import java.util.Locale;
import java.util.regex.Pattern;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
public class CurrencyHandler {
private static int bits = 0;
private static double coins = 0;
public static void setBits(int amount) {
bits = amount;
}
public static void setCoins(double amount) {
coins = amount;
}
public static int getBits() {
return bits;
}
public static double getCoins() {
return coins;
}
@SubscribeEvent
public void onSidebarLineUpdate(SidebarLineUpdateEvent event) {
if (Utils.removeColor(event.formattedLine.toLowerCase().trim()).contains("purse:") || Utils.removeColor(event.formattedLine.toLowerCase().trim()).contains("piggy:")) {
CurrencyHandler.checkCoins(event.formattedLine);
}
if (Utils.removeColor(event.formattedLine.toLowerCase().trim()).contains("bits:") && !event.formattedLine.toLowerCase().contains("(")) {
CurrencyHandler.checkBits(event.formattedLine);
}
}
@SubscribeEvent
public void onSidebarPost(SidebarPostEvent event) {
if (!Arrays.toString(event.arrayScores).toLowerCase().contains("bits:")) {
CurrencyHandler.setBits(0);
}
}
public static String getCoinsFormatted() {
DecimalFormat formatter = new DecimalFormat("#,###.0", DecimalFormatSymbols.getInstance(Locale.CANADA));
String output = formatter.format(getCoins());
if (output.equals(".0")) output = "0.0"; else if (output.equals(",0")) output = "0,0";
return output;
}
public static String getBitsFormatted() {
DecimalFormat formatter = new DecimalFormat("#.#", DecimalFormatSymbols.getInstance(Locale.CANADA));
formatter.setRoundingMode(RoundingMode.FLOOR);
return getBits() > 999 ? formatter.format((double) getBits() / 1000) + "k" : String.valueOf(getBits());
}
public static void checkCoins(String formatedScoreboardLine) {
String purse = Utils.removeWhiteSpaceAndRemoveWord(Utils.removeColor(formatedScoreboardLine.toLowerCase().trim()), Utils.removeColor(formatedScoreboardLine.toLowerCase().trim()).contains("purse:") ? "purse:" : "piggy:").replace(",", "");
if (!purse.contains("(") && !purse.contains("+")) {
try {
double coins = Double.parseDouble(Pattern.compile("[^0-9.]").matcher(purse).replaceAll(""));
CurrencyHandler.setCoins(coins);
} catch (IllegalArgumentException ex) {
System.out.println("Failed to parse purse, please report to ThatGravyBoat. Purse Text: " + purse);
}
}
}
public static void checkBits(String formatedScoreboardLine) {
String bits = Utils.removeWhiteSpaceAndRemoveWord(Utils.removeColor(formatedScoreboardLine.toLowerCase().trim()), "bits:").replace(",", "");
try {
int bit = Integer.parseInt(Pattern.compile("[^0-9]").matcher(bits).replaceAll(""));
CurrencyHandler.setBits(bit);
} catch (IllegalArgumentException ex) {
System.out.println("Failed to parse bits, please report to ThatGravyBoat. Bits Text: " + bits);
}
}
}
|