aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DamageCommas.java
diff options
context:
space:
mode:
authorBuildTools <james.jenour@protonmail.com>2021-01-28 23:36:00 +0800
committerBuildTools <james.jenour@protonmail.com>2021-01-28 23:36:00 +0800
commit659a0e4981640802058d9eef35fec16fab82c5f2 (patch)
tree062c599660c17cdbc843cb2734f3b797a017dfee /src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DamageCommas.java
parent64959d248b383375274628b5e8d83cd7f9c4e96d (diff)
downloadnotenoughupdates-659a0e4981640802058d9eef35fec16fab82c5f2.tar.gz
notenoughupdates-659a0e4981640802058d9eef35fec16fab82c5f2.tar.bz2
notenoughupdates-659a0e4981640802058d9eef35fec16fab82c5f2.zip
PRE12
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DamageCommas.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DamageCommas.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DamageCommas.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DamageCommas.java
new file mode 100644
index 00000000..c011ac9b
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DamageCommas.java
@@ -0,0 +1,94 @@
+package io.github.moulberry.notenoughupdates.miscfeatures;
+
+import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
+import net.minecraft.entity.item.EntityArmorStand;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.IChatComponent;
+
+import java.text.NumberFormat;
+import java.util.HashMap;
+
+public class DamageCommas {
+
+ private static final HashMap<Integer, ChatComponentText> replacementMap = new HashMap<>();
+
+ public static void tick() {
+ replacementMap.clear();
+ }
+
+ public static IChatComponent replaceName(IChatComponent name) {
+ if(!NotEnoughUpdates.INSTANCE.config.misc.damageCommas) return name;
+
+ String formatted = name.getFormattedText();
+ int hashCode = formatted.hashCode();
+
+ if(replacementMap.containsKey(hashCode)) {
+ ChatComponentText component = replacementMap.get(hashCode);
+ if(component == null) return name;
+ return component;
+ }
+
+ if(formatted.length() >= 7 && formatted.startsWith("\u00A7f\u2727") &&
+ formatted.endsWith("\u2727\u00a7r")) {
+ StringBuilder builder = new StringBuilder();
+ boolean numLast = false;
+ boolean colLast = false;
+ int numCount = 0;
+ for(int i=formatted.length()-4; i>=3; i--) {
+ char c = formatted.charAt(i);
+ if(c == '\u00a7') {
+ if(numLast) numCount--;
+ numLast = false;
+ colLast = true;
+ } else if(c >= '0' && c <= '9') {
+ numLast = true;
+ colLast = false;
+ numCount++;
+ } else {
+ if(colLast) {
+ replacementMap.put(hashCode, null);
+ return name;
+ }
+ numLast = false;
+ }
+
+ builder.append(c);
+ if(numLast && numCount % 3 == 0) builder.append(',');
+ }
+
+ ChatComponentText ret = new ChatComponentText("\u00A7f\u2727"+builder.reverse().toString()+"\u2727\u00a7r");
+ replacementMap.put(hashCode, ret);
+ return ret;
+ }
+
+ if(formatted.length() >= 5 && formatted.startsWith(EnumChatFormatting.GRAY.toString()) &&
+ formatted.endsWith(EnumChatFormatting.RESET.toString())) {
+ String damageS = formatted.substring(2, formatted.length()-2);
+
+ for(int i=0; i<damageS.length(); i++) {
+ char c = damageS.charAt(i);
+ if(c < '0' || c > '9') {
+ replacementMap.put(hashCode, null);
+ return name;
+ }
+ }
+
+ try {
+ int damage = Integer.parseInt(damageS);
+
+ String damageFormatted = NumberFormat.getIntegerInstance().format(damage);
+
+ ChatComponentText ret = new ChatComponentText(EnumChatFormatting.GRAY+damageFormatted+EnumChatFormatting.RESET);
+ replacementMap.put(hashCode, ret);
+ return ret;
+ } catch(Exception e) {
+ replacementMap.put(hashCode, null);
+ return name;
+ }
+ }
+ replacementMap.put(hashCode, null);
+ return name;
+ }
+
+}