aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/de/hysky/skyblocker/SkyblockerMod.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/config/ConfigUtils.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/UIAndVisualsCategory.java8
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java10
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/SmoothAOTE.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java58
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBar.java46
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/fancybars/StatusBarType.java1
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json6
-rw-r--r--src/test/java/de/hysky/skyblocker/skyblock/StatusBarTrackerTest.java32
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);
}
}