From 347b9688a83ce2170836eea9e9540d1a421d3312 Mon Sep 17 00:00:00 2001 From: Ghost <66458557+Ghost-3@users.noreply.github.com> Date: Fri, 16 Feb 2024 18:28:25 +0300 Subject: Show the diff in the Powders widget --- .../skyblocker/skyblock/tabhud/widget/Widget.java | 5 ++ .../tabhud/widget/hud/HudPowderWidget.java | 73 +++++++++++++++++++++- 2 files changed, 76 insertions(+), 2 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/skyblock') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/Widget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/Widget.java index 5f0d2c3c..e37da755 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/Widget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/Widget.java @@ -67,6 +67,11 @@ public abstract class Widget { this.addComponent(new IcoTextComponent(ico, txt)); } + public final void addSimpleIcoText(ItemStack ico, String string, Formatting fmt, String content) { + Text txt = Widget.simpleEntryText(content, string, fmt); + this.addComponent(new IcoTextComponent(ico, txt)); + } + /** * Calculate the size of this widget. * Must be called before returning from the widget constructor and after all diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java index 1d11c2a6..9e773082 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java @@ -1,17 +1,41 @@ package de.hysky.skyblocker.skyblock.tabhud.widget.hud; +import de.hysky.skyblocker.skyblock.dwarven.DwarvenHud; import de.hysky.skyblocker.skyblock.tabhud.util.Ico; import de.hysky.skyblocker.skyblock.tabhud.widget.Widget; import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import java.util.Locale; + // this widget shows the status of the king's commissions. // (dwarven mines and crystal hollows) // USE ONLY WITH THE DWARVEN HUD! public class HudPowderWidget extends Widget { + /** + * current value of Mithril Powder + */ + private static int mithrilPowder = 0; + /** + * current value of Gemstone Powder + */ + private static int gemstonePowder = 0; + /** + * the difference between the previous and current value of Mithril Powder + */ + private static int mithrilPowderDif = 0; + /** + * the difference between the previous and current value of Gemstone Powder + */ + private static int gemstonePowderDif = 0; + /** + * The initial value of the timer for the difference update delay countdown. + */ + private static long startTime = System.currentTimeMillis(); + private static final MutableText TITLE = Text.literal("Powders").formatted(Formatting.DARK_AQUA, Formatting.BOLD); @@ -30,11 +54,56 @@ public class HudPowderWidget extends Widget { super(TITLE, Formatting.DARK_AQUA.getColorValue()); } + /** + * Converts a string with a number and commas between digits to an integer value. + * @param str a string with a number and commas between digits + * @return integer value + */ + private static int parsePowder(String str) { + return Integer.parseInt(str.replace(",", "")); + } + + /** + * Converts Powder and difference values to a string and adds commas to the digits of the numbers. + * @param powder the value of Mithril or Gemstone Powder + * @param diff the difference between the previous and current value of Mithril or Gemstone Powder + * @return formatted string + */ + private static String formatPowderString(int powder, int diff) { + if (diff == 0) return String.format(Locale.US, "%,d", powder); + + String difString = String.format(Locale.US, "%s%,d", diff > 0 ? "+" : "", diff); + return String.format(Locale.US, "%,d (%s)", powder, difString); + } + + /** + * Updates Powders and difference values when Powder values change or every 2 seconds. + */ + private static void updatePowders(){ + long elapsedTime = System.currentTimeMillis() - startTime; + + int newMithrilPowder = parsePowder(DwarvenHud.mithrilPowder); + int newGemstonePowder = parsePowder(DwarvenHud.gemStonePowder); + + if (newMithrilPowder != mithrilPowder || newGemstonePowder != gemstonePowder || elapsedTime > 2000) { + startTime = System.currentTimeMillis(); + + mithrilPowderDif = newMithrilPowder - mithrilPowder; + gemstonePowderDif = newGemstonePowder - gemstonePowder; + + mithrilPowder = newMithrilPowder; + gemstonePowder = newGemstonePowder; + } + } @Override public void updateContent() { - this.addSimpleIcoText(Ico.MITHRIL, "Mithril:", Formatting.AQUA, 46); - this.addSimpleIcoText(Ico.AMETHYST_SHARD, "Gemstone:", Formatting.DARK_PURPLE, 47); + updatePowders(); + String mithrilPowderString = formatPowderString(mithrilPowder, mithrilPowderDif); + String gemstonePowderString = formatPowderString(gemstonePowder, gemstonePowderDif); + + this.addSimpleIcoText(Ico.MITHRIL, "Mithril: ", Formatting.AQUA, mithrilPowderString); + this.addSimpleIcoText(Ico.AMETHYST_SHARD, "Gemstone: ", Formatting.DARK_PURPLE, gemstonePowderString); } } -- cgit From 45fc9fc104ea14435f3e0418e4e20b8346831642 Mon Sep 17 00:00:00 2001 From: Ghost <66458557+Ghost-3@users.noreply.github.com> Date: Fri, 16 Feb 2024 20:05:03 +0300 Subject: Use NumberFormat.getInstance() --- .../skyblock/tabhud/widget/hud/HudPowderWidget.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/skyblock') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java index 9e773082..f32f59b3 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java @@ -7,7 +7,8 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import java.util.Locale; +import java.text.NumberFormat; +import java.text.ParseException; // this widget shows the status of the king's commissions. // (dwarven mines and crystal hollows) @@ -15,6 +16,10 @@ import java.util.Locale; public class HudPowderWidget extends Widget { + /** + * American number format + */ + private static final NumberFormat NUMBER_FORMAT = NumberFormat.getInstance(); /** * current value of Mithril Powder */ @@ -60,7 +65,11 @@ public class HudPowderWidget extends Widget { * @return integer value */ private static int parsePowder(String str) { - return Integer.parseInt(str.replace(",", "")); + try { + return NUMBER_FORMAT.parse(str).intValue(); + } catch (ParseException e) { + return 0; + } } /** @@ -70,10 +79,8 @@ public class HudPowderWidget extends Widget { * @return formatted string */ private static String formatPowderString(int powder, int diff) { - if (diff == 0) return String.format(Locale.US, "%,d", powder); - - String difString = String.format(Locale.US, "%s%,d", diff > 0 ? "+" : "", diff); - return String.format(Locale.US, "%,d (%s)", powder, difString); + if (diff == 0) return NUMBER_FORMAT.format(powder); + return NUMBER_FORMAT.format(powder) + (diff > 0 ? " (+" : " (") + NUMBER_FORMAT.format(diff) + ")"; } /** -- cgit From 9258761eb5c4aa492c8171850568f780c8865945 Mon Sep 17 00:00:00 2001 From: Ghost <66458557+Ghost-3@users.noreply.github.com> Date: Sat, 17 Feb 2024 13:55:14 +0300 Subject: Minor fix --- .../skyblock/tabhud/widget/hud/HudPowderWidget.java | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/skyblock') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java index f32f59b3..ea66c35a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java @@ -17,7 +17,7 @@ import java.text.ParseException; public class HudPowderWidget extends Widget { /** - * American number format + * Number format instance */ private static final NumberFormat NUMBER_FORMAT = NumberFormat.getInstance(); /** @@ -31,11 +31,11 @@ public class HudPowderWidget extends Widget { /** * the difference between the previous and current value of Mithril Powder */ - private static int mithrilPowderDif = 0; + private static int mithrilPowderDiff = 0; /** * the difference between the previous and current value of Gemstone Powder */ - private static int gemstonePowderDif = 0; + private static int gemstonePowderDiff = 0; /** * The initial value of the timer for the difference update delay countdown. */ @@ -61,6 +61,7 @@ public class HudPowderWidget extends Widget { /** * Converts a string with a number and commas between digits to an integer value. + * * @param str a string with a number and commas between digits * @return integer value */ @@ -74,8 +75,9 @@ public class HudPowderWidget extends Widget { /** * Converts Powder and difference values to a string and adds commas to the digits of the numbers. + * * @param powder the value of Mithril or Gemstone Powder - * @param diff the difference between the previous and current value of Mithril or Gemstone Powder + * @param diff the difference between the previous and current value of Mithril or Gemstone Powder * @return formatted string */ private static String formatPowderString(int powder, int diff) { @@ -86,7 +88,7 @@ public class HudPowderWidget extends Widget { /** * Updates Powders and difference values when Powder values change or every 2 seconds. */ - private static void updatePowders(){ + private static void updatePowders() { long elapsedTime = System.currentTimeMillis() - startTime; int newMithrilPowder = parsePowder(DwarvenHud.mithrilPowder); @@ -95,8 +97,8 @@ public class HudPowderWidget extends Widget { if (newMithrilPowder != mithrilPowder || newGemstonePowder != gemstonePowder || elapsedTime > 2000) { startTime = System.currentTimeMillis(); - mithrilPowderDif = newMithrilPowder - mithrilPowder; - gemstonePowderDif = newGemstonePowder - gemstonePowder; + mithrilPowderDiff = newMithrilPowder - mithrilPowder; + gemstonePowderDiff = newGemstonePowder - gemstonePowder; mithrilPowder = newMithrilPowder; gemstonePowder = newGemstonePowder; @@ -106,8 +108,8 @@ public class HudPowderWidget extends Widget { @Override public void updateContent() { updatePowders(); - String mithrilPowderString = formatPowderString(mithrilPowder, mithrilPowderDif); - String gemstonePowderString = formatPowderString(gemstonePowder, gemstonePowderDif); + String mithrilPowderString = formatPowderString(mithrilPowder, mithrilPowderDiff); + String gemstonePowderString = formatPowderString(gemstonePowder, gemstonePowderDiff); this.addSimpleIcoText(Ico.MITHRIL, "Mithril: ", Formatting.AQUA, mithrilPowderString); this.addSimpleIcoText(Ico.AMETHYST_SHARD, "Gemstone: ", Formatting.DARK_PURPLE, gemstonePowderString); -- cgit From 1bf8e3fc27cb23fdf0ed9b39cfbc696f4560d87f Mon Sep 17 00:00:00 2001 From: Ghost <66458557+Ghost-3@users.noreply.github.com> Date: Sun, 18 Feb 2024 06:15:18 +0300 Subject: Number format fix --- .../hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker/skyblock') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java index ea66c35a..fe23f19a 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/tabhud/widget/hud/HudPowderWidget.java @@ -9,6 +9,7 @@ import net.minecraft.util.Formatting; import java.text.NumberFormat; import java.text.ParseException; +import java.util.Locale; // this widget shows the status of the king's commissions. // (dwarven mines and crystal hollows) @@ -17,9 +18,9 @@ import java.text.ParseException; public class HudPowderWidget extends Widget { /** - * Number format instance + * American number format instance */ - private static final NumberFormat NUMBER_FORMAT = NumberFormat.getInstance(); + private static final NumberFormat NUMBER_FORMAT = NumberFormat.getInstance(Locale.US); /** * current value of Mithril Powder */ -- cgit