diff options
| author | viciscat <51047087+viciscat@users.noreply.github.com> | 2025-06-07 21:26:05 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-07 15:26:05 -0400 |
| commit | 415593dbd2018a426b5773f0dd7deb1f22273cb8 (patch) | |
| tree | a6e20ffb42776c1f1f36253d81db2fe2432dc992 | |
| parent | 47770e4d7fb54c3c4aff54f8481277672ceec533 (diff) | |
| download | Skyblocker-415593dbd2018a426b5773f0dd7deb1f22273cb8.tar.gz Skyblocker-415593dbd2018a426b5773f0dd7deb1f22273cb8.tar.bz2 Skyblocker-415593dbd2018a426b5773f0dd7deb1f22273cb8.zip | |
Bar changes (#1307)
* multiple mana display modes
* turn StatusBarTracker static
* move intelligence display below button
11 files changed, 120 insertions, 65 deletions
diff --git a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java index 06018168..84f72693 100644 --- a/src/main/java/de/hysky/skyblocker/SkyblockerMod.java +++ b/src/main/java/de/hysky/skyblocker/SkyblockerMod.java @@ -34,7 +34,6 @@ public class SkyblockerMod implements ClientModInitializer { public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); public static final Gson GSON_COMPACT = new GsonBuilder().create(); private static SkyblockerMod INSTANCE; - public final StatusBarTracker statusBarTracker = new StatusBarTracker(); /** * Do not instantiate this class. Use {@link #getInstance()} instead. @@ -60,8 +59,6 @@ public class SkyblockerMod implements ClientModInitializer { SkyblockerConfigManager.init(); ConfigNullFieldsFix.init(); //DO NOT INIT ANY CLASS THAT USES CONFIG FIELDS BEFORE THIS! - statusBarTracker.init(); - init(); Scheduler.INSTANCE.scheduleCyclic(Utils::update, 20); Scheduler.INSTANCE.scheduleCyclic(DiscordRPCManager::updateDataAndPresence, 200); diff --git a/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java b/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java index d61bac84..1aa588b7 100644 --- a/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java +++ b/src/main/java/de/hysky/skyblocker/config/ConfigUtils.java @@ -34,6 +34,11 @@ public class ConfigUtils { return EnumControllerBuilder.create(opt).enumClass((Class<E>) opt.stateManager().get().getClass()); } + public static <E extends Enum<E>> Function<Option<E>, ControllerBuilder<E>> getFormattedEnumCyclingControllerFactory(Class<E> enumType, ValueFormatter<E> formatter) { + return opt -> EnumControllerBuilder.create(opt).enumClass(enumType).formatValue(formatter); + } + + /** * Creates a factory for {@link EnumDropdownControllerBuilder}s with the given function for converting enum constants to texts. * Use this if a custom formatter function for an enum is needed. diff --git a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java index 2682a40d..bf610479 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java @@ -332,6 +332,14 @@ public class UIAndVisualsCategory { .text(Text.translatable("text.skyblocker.open")) .action((screen, opt) -> MinecraftClient.getInstance().setScreen(new StatusBarsConfigScreen())) .build()) + .option(Option.<UIAndVisualsConfig.IntelligenceDisplay>createBuilder() + .name(Text.translatable("skyblocker.config.uiAndVisuals.bars.intelligenceDisplay")) + .binding(defaults.uiAndVisuals.bars.intelligenceDisplay, + () -> config.uiAndVisuals.bars.intelligenceDisplay, + newValue -> config.uiAndVisuals.bars.intelligenceDisplay = newValue) + .controller(ConfigUtils.getFormattedEnumCyclingControllerFactory(UIAndVisualsConfig.IntelligenceDisplay.class, intelligenceDisplay -> Text.translatable("skyblocker.config.uiAndVisuals.bars.intelligenceDisplay." + intelligenceDisplay.name()))) + .build() + ) .build()) //Waypoints diff --git a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java index 99665366..12803725 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -8,6 +8,7 @@ import dev.isxander.yacl3.config.v2.api.SerialEntry; import it.unimi.dsi.fastutil.objects.Object2BooleanOpenHashMap; import net.minecraft.client.resource.language.I18n; import net.minecraft.util.Formatting; +import net.minecraft.util.StringIdentifiable; import java.awt.*; import java.util.ArrayList; @@ -278,6 +279,9 @@ public class UIAndVisualsConfig { @SerialEntry public boolean enableBars = true; + @SerialEntry + public IntelligenceDisplay intelligenceDisplay = IntelligenceDisplay.ORIGINAL; + // Kept in for backwards compatibility, remove if needed @SuppressWarnings("DeprecatedIsStillUsed") @Deprecated @@ -285,6 +289,12 @@ public class UIAndVisualsConfig { public LegacyBarPositions barPositions = new LegacyBarPositions(); } + public enum IntelligenceDisplay { + ORIGINAL, + ACCURATE, + IN_FRONT; + } + /** * Backwards compat. * <p> diff --git a/src/main/java/de/hysky/skyblocker/skyblock/SmoothAOTE.java b/src/main/java/de/hysky/skyblocker/skyblock/SmoothAOTE.java index a98b2705..8c8f50d8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/SmoothAOTE.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/SmoothAOTE.java @@ -233,7 +233,7 @@ public class SmoothAOTE { Matcher manaNeeded = ItemUtils.getLoreLineIfMatch(heldItem, MANA_LORE); if (manaNeeded != null && manaNeeded.matches()) { int manaCost = Integer.parseInt(manaNeeded.group(1)); - int predictedMana = SkyblockerMod.getInstance().statusBarTracker.getMana().value() - teleportsAhead * manaCost; + int predictedMana = StatusBarTracker.getMana().value() - teleportsAhead * manaCost; if (predictedMana < manaCost) { // todo the players mana can lag behind as it is updated server side. client side mana calculations would help with this return; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java b/src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java index d5787d00..33331f9d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java @@ -1,5 +1,6 @@ package de.hysky.skyblocker.skyblock; +import de.hysky.skyblocker.annotations.Init; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.item.PetInfo; import de.hysky.skyblocker.utils.ItemUtils; @@ -21,53 +22,54 @@ public class StatusBarTracker { private static final Pattern MANA_USE = Pattern.compile("§b-([\\d,]+) Mana \\(§.*?\\) *"); private static final Pattern MANA_STATUS = Pattern.compile("§b(?<mana>[\\d,]+)/(?<max>[\\d,]+)✎ (?:Mana|§3(?<overflow>[\\d,]+)ʬ) *"); - private final MinecraftClient client = MinecraftClient.getInstance(); - private Resource health = new Resource(100, 100, 0); - private Resource mana = new Resource(100, 100, 0); - private Resource speed = new Resource(100, 400, 0); - private int defense = 0; - - public void init() { - ClientReceiveMessageEvents.ALLOW_GAME.register(this::allowOverlayMessage); - ClientReceiveMessageEvents.MODIFY_GAME.register(this::onOverlayMessage); - Scheduler.INSTANCE.scheduleCyclic(this::tick, 1); + private static final MinecraftClient client = MinecraftClient.getInstance(); + private static Resource health = new Resource(100, 100, 0); + private static Resource mana = new Resource(100, 100, 0); + private static Resource speed = new Resource(100, 400, 0); + private static int defense = 0; + + @Init + public static void init() { + ClientReceiveMessageEvents.ALLOW_GAME.register(StatusBarTracker::allowOverlayMessage); + ClientReceiveMessageEvents.MODIFY_GAME.register(StatusBarTracker::onOverlayMessage); + Scheduler.INSTANCE.scheduleCyclic(StatusBarTracker::tick, 1); } - public Resource getHealth() { - return this.health; + public static Resource getHealth() { + return health; } - public Resource getMana() { - return this.mana; + public static Resource getMana() { + return mana; } - public int getDefense() { - return this.defense; + public static int getDefense() { + return defense; } - public Resource getSpeed() { - return this.speed; + public static Resource getSpeed() { + return speed; } - private void tick() { + private static void tick() { if (client == null || client.player == null) return; updateHealth(health.value, health.max, health.overflow); updateSpeed(); } - private boolean allowOverlayMessage(Text text, boolean overlay) { + private static boolean allowOverlayMessage(Text text, boolean overlay) { onOverlayMessage(text, overlay); return true; } - private Text onOverlayMessage(Text text, boolean overlay) { + private static Text onOverlayMessage(Text text, boolean overlay) { if (!overlay || !Utils.isOnSkyblock() || !SkyblockerConfigManager.get().uiAndVisuals.bars.enableBars || Utils.isInTheRift()) { return text; } return Text.of(update(text.getString(), SkyblockerConfigManager.get().chat.hideMana)); } - public String update(String actionBar, boolean filterManaUse) { + public static String update(String actionBar, boolean filterManaUse) { var sb = new StringBuilder(); // Match health and don't add it to the string builder @@ -100,13 +102,13 @@ public class StatusBarTracker { return res.isEmpty() ? null : res; } - private void updateHealth(Matcher matcher) { + private static void updateHealth(Matcher matcher) { int health = RegexUtils.parseIntFromMatcher(matcher, "health"); int max = RegexUtils.parseIntFromMatcher(matcher, "max"); updateHealth(health, max, Math.max(0, health - max)); } - private void updateHealth(int value, int max, int overflow) { + private static void updateHealth(int value, int max, int overflow) { if (client != null && client.player != null) { value = (int) (client.player.getHealth() * max / client.player.getMaxHealth()); overflow = (int) (client.player.getAbsorptionAmount() * max / client.player.getMaxHealth()); @@ -114,14 +116,14 @@ public class StatusBarTracker { health = new Resource(Math.min(value, max), max, Math.min(overflow, max)); } - private void updateMana(Matcher m) { + private static void updateMana(Matcher m) { int mana = RegexUtils.parseIntFromMatcher(m, "mana"); int max = RegexUtils.parseIntFromMatcher(m, "max"); int overflow = m.group("overflow") == null ? 0 : RegexUtils.parseIntFromMatcher(m, "overflow"); - this.mana = new Resource(mana, max, overflow); + StatusBarTracker.mana = new Resource(mana, max, overflow); } - private void updateSpeed() { + private static void updateSpeed() { // Black cat and racing helm are untested - I don't have the money to test atm, but no reason why they shouldn't work assert client.player != null; int value = (int) (client.player.isSprinting() ? (client.player.getMovementSpeed() / 1.3f) * 1000 : client.player.getMovementSpeed() * 1000); @@ -150,7 +152,7 @@ public class StatusBarTracker { max = 100; } } - this.speed = new Resource(value, max, 0); + speed = new Resource(value, max, 0); } public record Resource(int value, int max, int overflow) {} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java index 4e892604..9bdc00b9 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java @@ -34,7 +34,6 @@ public class FancyStatusBars { private static final Logger LOGGER = LoggerFactory.getLogger(FancyStatusBars.class); private final MinecraftClient client = MinecraftClient.getInstance(); - private final StatusBarTracker statusBarTracker = SkyblockerMod.getInstance().statusBarTracker; public static BarPositioner barPositioner = new BarPositioner(); public static Map<StatusBarType, StatusBar> statusBars = new EnumMap<>(StatusBarType.class); @@ -298,13 +297,16 @@ public class FancyStatusBars { if (statusBar.anchor != null) statusBar.render(context, -1, -1, client.getRenderTickCounter().getDynamicDeltaTicks()); } - StatusBarTracker.Resource health = statusBarTracker.getHealth(); + StatusBarTracker.Resource health = StatusBarTracker.getHealth(); statusBars.get(StatusBarType.HEALTH).updateValues(health.value() / (float) health.max(), health.overflow() / (float) health.max(), health.value()); - StatusBarTracker.Resource intelligence = statusBarTracker.getMana(); - statusBars.get(StatusBarType.INTELLIGENCE).updateValues(intelligence.value() / (float) intelligence.max(), intelligence.overflow() / (float) intelligence.max(), intelligence.value()); - int defense = statusBarTracker.getDefense(); + StatusBarTracker.Resource intelligence = StatusBarTracker.getMana(); + if (SkyblockerConfigManager.get().uiAndVisuals.bars.intelligenceDisplay == UIAndVisualsConfig.IntelligenceDisplay.ACCURATE) { + float totalIntelligence = (float) intelligence.max() + intelligence.overflow(); + statusBars.get(StatusBarType.INTELLIGENCE).updateValues(intelligence.value() / totalIntelligence + intelligence.overflow() / totalIntelligence, intelligence.overflow() / totalIntelligence, intelligence.value()); + } else statusBars.get(StatusBarType.INTELLIGENCE).updateValues(intelligence.value() / (float) intelligence.max(), intelligence.overflow() / (float) intelligence.max(), intelligence.value()); + int defense = StatusBarTracker.getDefense(); statusBars.get(StatusBarType.DEFENSE).updateValues(defense / (defense + 100.f), 0, defense); - StatusBarTracker.Resource speed = statusBarTracker.getSpeed(); + StatusBarTracker.Resource speed = StatusBarTracker.getSpeed(); statusBars.get(StatusBarType.SPEED).updateValues(speed.value() / (float) speed.max(), 0, speed.value()); statusBars.get(StatusBarType.EXPERIENCE).updateValues(player.experienceProgress, 0, player.experienceLevel); return true; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java index 38dbbd60..d215e578 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java @@ -5,6 +5,8 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.config.configs.UIAndVisualsConfig; import de.hysky.skyblocker.utils.render.RenderHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; @@ -119,7 +121,7 @@ public class StatusBar implements Widget, Drawable, Element, Selectable { this(icon, colors, hasOverflow, textColor, Text.empty()); } - private int transparency(int color) { + protected int transparency(int color) { if (inMouse) return (color & 0x00FFFFFF) | 0x44_000000; return color; } @@ -136,12 +138,7 @@ public class StatusBar implements Widget, Drawable, Element, Selectable { int barWith = iconPosition.equals(IconPosition.OFF) ? width : width - 10; int barX = iconPosition.equals(IconPosition.LEFT) ? x + 10 : x; context.drawGuiTexture(RenderLayer::getGuiTextured, BAR_BACK, barX, y + 1, barWith, 7, transparency); - RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, y + 2, (int) ((barWith - 2) * fill), 5, transparency(colors[0].getRGB())); - - - if (hasOverflow && overflowFill > 0) { - RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, y + 2, (int) ((barWith - 2) * Math.min(overflowFill, 1)), 5, transparency(colors[1].getRGB())); - } + drawBarFill(context, barX, barWith); //context.drawText(MinecraftClient.getInstance().textRenderer, gridX + " " + gridY + " s:" + size , x, y-9, Colors.WHITE, true); if (showText()) { context.getMatrices().push(); @@ -151,6 +148,15 @@ public class StatusBar implements Widget, Drawable, Element, Selectable { } } + protected void drawBarFill(DrawContext context, int barX, int barWith) { + RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, y + 2, (int) ((barWith - 2) * fill), 5, transparency(colors[0].getRGB())); + + + if (hasOverflow && overflowFill > 0) { + RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, y + 2, (int) ((barWith - 2) * Math.min(overflowFill, 1)), 5, transparency(colors[1].getRGB())); + } + } + public void updateValues(float fill, float overflowFill, Object text) { this.value = text; this.fill = fill; @@ -410,4 +416,30 @@ public class StatusBar implements Widget, Drawable, Element, Selectable { object.addProperty("text_position", textPosition.asString()); return object; } + + public static class ManaStatusBar extends StatusBar { + + public ManaStatusBar(Identifier icon, Color[] colors, boolean hasOverflow, @Nullable Color textColor, Text name) { + super(icon, colors, hasOverflow, textColor, name); + } + + public ManaStatusBar(Identifier icon, Color[] colors, boolean hasOverflow, @Nullable Color textColor) { + super(icon, colors, hasOverflow, textColor); + } + + @Override + protected void drawBarFill(DrawContext context, int barX, int barWith) { + if (hasOverflow() && overflowFill > 0) { + if (overflowFill > fill && SkyblockerConfigManager.get().uiAndVisuals.bars.intelligenceDisplay == UIAndVisualsConfig.IntelligenceDisplay.IN_FRONT) { + RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, getY() + 2, (int) ((barWith - 2) * Math.min(overflowFill, 1)), 5, transparency(getColors()[1].getRGB())); + RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, getY() + 2, (int) ((barWith - 2) * fill), 5, transparency(getColors()[0].getRGB())); + } else { + RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, getY() + 2, (int) ((barWith - 2) * fill), 5, transparency(getColors()[0].getRGB())); + RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, getY() + 2, (int) ((barWith - 2) * Math.min(overflowFill, 1)), 5, transparency(getColors()[1].getRGB())); + } + } else { + RenderHelper.renderNineSliceColored(context, BAR_FILL, barX + 1, getY() + 2, (int) ((barWith - 2) * fill), 5, transparency(getColors()[0].getRGB())); + } + } + } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarType.java b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarType.java index 0ab924e1..0d5c1500 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarType.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarType.java @@ -73,6 +73,7 @@ public enum StatusBarType implements StringIdentifiable { } public StatusBar newStatusBar() { + if (this == INTELLIGENCE) return new StatusBar.ManaStatusBar(Identifier.of(SkyblockerMod.NAMESPACE, "bars/icons/" + id), colors, hasOverflow, textColor, name); return new StatusBar(Identifier.of(SkyblockerMod.NAMESPACE, "bars/icons/" + id), colors, hasOverflow, textColor, name); } } diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 18301b67..ae802a2e 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -826,8 +826,12 @@ "skyblocker.config.uiAndVisuals.hideStatusEffectOverlay": "Hide Status Effect Overlay", - "skyblocker.config.uiAndVisuals.bars": "Health, Mana, Defence, Speed & XP Bars", + "skyblocker.config.uiAndVisuals.bars": "Health, Mana, Defense, Speed & XP Bars", "skyblocker.config.uiAndVisuals.bars.enableBars": "Enable Bars", + "skyblocker.config.uiAndVisuals.bars.intelligenceDisplay": "Intelligence Display", + "skyblocker.config.uiAndVisuals.bars.intelligenceDisplay.ORIGINAL": "Original", + "skyblocker.config.uiAndVisuals.bars.intelligenceDisplay.ACCURATE": "Accurate", + "skyblocker.config.uiAndVisuals.bars.intelligenceDisplay.IN_FRONT": "Smallest In Front", "skyblocker.config.uiAndVisuals.cancelComponentUpdateAnimation": "Cancel Component Update Animation", "skyblocker.config.uiAndVisuals.cancelComponentUpdateAnimation.@Tooltip": "Cancels the down-and-up animation in your hand that plays when an item's components are updated.", diff --git a/src/test/java/de/hysky/skyblocker/skyblock/StatusBarTrackerTest.java b/src/test/java/de/hysky/skyblocker/skyblock/StatusBarTrackerTest.java index 9ab4e927..8e1ddd39 100644 --- a/src/test/java/de/hysky/skyblocker/skyblock/StatusBarTrackerTest.java +++ b/src/test/java/de/hysky/skyblocker/skyblock/StatusBarTrackerTest.java @@ -6,12 +6,6 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class StatusBarTrackerTest { - private StatusBarTracker tracker; - - @BeforeEach - void setUp() { - tracker = new StatusBarTracker(); - } void assertStats(int hp, int maxHp, int def, int mana, int maxMana, int overflowMana) { int absorption = 0; @@ -19,55 +13,55 @@ class StatusBarTrackerTest { absorption = Math.min(hp - maxHp, maxHp); hp = maxHp; } - assertEquals(new StatusBarTracker.Resource(hp, maxHp, absorption), tracker.getHealth()); - assertEquals(def, tracker.getDefense()); - assertEquals(new StatusBarTracker.Resource(mana, maxMana, overflowMana), tracker.getMana()); + assertEquals(new StatusBarTracker.Resource(hp, maxHp, absorption), StatusBarTracker.getHealth()); + assertEquals(def, StatusBarTracker.getDefense()); + assertEquals(new StatusBarTracker.Resource(mana, maxMana, overflowMana), StatusBarTracker.getMana()); } @Test void normalStatusBar() { - String res = tracker.update("§c934/1086❤ §a159§a❈ Defense §b562/516✎ Mana", false); + String res = StatusBarTracker.update("§c934/1086❤ §a159§a❈ Defense §b562/516✎ Mana", false); assertNull(res); assertStats(934, 1086, 159, 562, 516, 0); } @Test void overflowMana() { - String res = tracker.update("§61605/1305❤ §a270§a❈ Defense §b548/548✎ §3200ʬ", false); + String res = StatusBarTracker.update("§61605/1305❤ §a270§a❈ Defense §b548/548✎ §3200ʬ", false); assertNull(res); assertStats(1605, 1305, 270, 548, 548, 200); } @Test void regeneration() { - String res = tracker.update("§c2484/2484❤+§c120▄ §a642§a❈ Defense §b2557/2611✎ Mana", false); + String res = StatusBarTracker.update("§c2484/2484❤+§c120▄ §a642§a❈ Defense §b2557/2611✎ Mana", false); assertEquals("§c❤+§c120▄", res); } @Test void instantTransmission() { String actionBar = "§c2259/2259❤ §b-20 Mana (§6Instant Transmission§b) §b549/2676✎ Mana"; - assertEquals("§b-20 Mana (§6Instant Transmission§b)", tracker.update(actionBar, false)); - assertNull(tracker.update(actionBar, true)); + assertEquals("§b-20 Mana (§6Instant Transmission§b)", StatusBarTracker.update(actionBar, false)); + assertNull(StatusBarTracker.update(actionBar, true)); } @Test void rapidFire() { String actionBar = "§c2509/2509❤ §b-48 Mana (§6Rapid-fire§b) §b2739/2811✎ Mana"; - assertEquals("§b-48 Mana (§6Rapid-fire§b)", tracker.update(actionBar, false)); - assertNull(tracker.update(actionBar, true)); + assertEquals("§b-48 Mana (§6Rapid-fire§b)", StatusBarTracker.update(actionBar, false)); + assertNull(StatusBarTracker.update(actionBar, true)); } @Test void zombieSword() { String actionBar = "§c2509/2509❤ §b-56 Mana (§6Instant Heal§b) §b2674/2821✎ Mana §e§lⓩⓩⓩⓩ§6§lⓄ"; - assertEquals("§b-56 Mana (§6Instant Heal§b) §e§lⓩⓩⓩⓩ§6§lⓄ", tracker.update(actionBar, false)); - assertEquals("§e§lⓩⓩⓩⓩ§6§lⓄ", tracker.update(actionBar, true)); + assertEquals("§b-56 Mana (§6Instant Heal§b) §e§lⓩⓩⓩⓩ§6§lⓄ", StatusBarTracker.update(actionBar, false)); + assertEquals("§e§lⓩⓩⓩⓩ§6§lⓄ", StatusBarTracker.update(actionBar, true)); } @Test void campfire() { - String res = tracker.update("§c17070/25565❤+§c170▃ §65,625 DPS §c1 second §b590/626✎ §3106ʬ", false); + String res = StatusBarTracker.update("§c17070/25565❤+§c170▃ §65,625 DPS §c1 second §b590/626✎ §3106ʬ", false); assertEquals("§c❤+§c170▃ §65,625 DPS §c1 second", res); } } |
