From 4671c52193eb5b855d1104d064b98c3c3edb9ef2 Mon Sep 17 00:00:00 2001 From: Westsi <76999267+Westsi@users.noreply.github.com> Date: Mon, 19 Aug 2024 20:04:56 +0100 Subject: Added speed status bar --- .../config/configs/UIAndVisualsConfig.java | 2 ++ .../skyblocker/skyblock/StatusBarTracker.java | 40 ++++++++++++++++++++++ .../skyblock/fancybars/FancyStatusBars.java | 9 ++++- 3 files changed, 50 insertions(+), 1 deletion(-) (limited to 'src/main/java/de') 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 7333b1ad..c387686d 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -179,6 +179,8 @@ public class UIAndVisualsConfig { @SerialEntry public OldBarPosition experienceBarPosition = OldBarPosition.LAYER1; + @SerialEntry + public OldBarPosition speedBarPosition = OldBarPosition.LAYER1; } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java b/src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java index 717bd8d6..5938f76e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java @@ -1,10 +1,12 @@ package de.hysky.skyblocker.skyblock; import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.utils.Location; import de.hysky.skyblocker.utils.Utils; import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents; import net.minecraft.client.MinecraftClient; import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.item.ItemStack; import net.minecraft.text.Text; import java.util.regex.Matcher; @@ -18,6 +20,7 @@ public class StatusBarTracker { 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() { @@ -37,6 +40,11 @@ public class StatusBarTracker { return this.defense; } + public Resource getSpeed() { + updateSpeed(); + return this.speed; + } + private int parseInt(Matcher m, int group) { return Integer.parseInt(m.group(group).replace(",", "")); } @@ -48,6 +56,38 @@ public class StatusBarTracker { this.mana = new Resource(value, max, overflow); } + private 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 + var player = MinecraftClient.getInstance().player; + int value = (int) (player.isSprinting() ? (player.getMovementSpeed() / 1.3f) * 1000 : player.getMovementSpeed() * 1000); + int max = 400; // hardcoded limit (except for with cactus knife, black cat, snail, racing helm, young drag) + if (player.getMainHandStack().getName().getString().contains("Cactus Knife") && Utils.getLocation() == Location.GARDEN) { + max = 500; + } + Iterable armor = player.getArmorItems(); + int youngDragCount = 0; + for (ItemStack armorPiece : armor) { + if (armorPiece.getName().getString().contains("Racing Helmet")) { + max = 500; + } else if (armorPiece.getName().getString().contains("Young Dragon")) { + youngDragCount++; + } + } + if (youngDragCount == 4) { + max = 500; + } + + PetCache.PetInfo pet = PetCache.getCurrentPet(); + if (pet != null) { + if (pet.type().contains("BLACK_CAT")) { + max = 500; + } else if (pet.type().contains("SNAIL")) { + max = 100; + } + } + this.speed = new Resource(value, max, 0); + } + private void updateHealth(Matcher m) { int value = parseInt(m, 1); int max = parseInt(m, 3); 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 c60fdd1a..74ad9285 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java @@ -27,8 +27,8 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; -import java.util.*; import java.util.List; +import java.util.*; import java.util.concurrent.CompletableFuture; public class FancyStatusBars { @@ -64,6 +64,9 @@ public class FancyStatusBars { statusBars.put("experience", new StatusBar(Identifier.of(SkyblockerMod.NAMESPACE, "bars/icons/experience"), new Color[]{new Color(100, 230, 70)}, false, new Color(128, 255, 32), Text.translatable("skyblocker.bars.config.experience"))); + statusBars.put("speed", new StatusBar(Identifier.of(SkyblockerMod.NAMESPACE, "bars/icons/speed"), + new Color[]{new Color(255, 255, 255)}, + false, new Color(185, 185, 185), Text.translatable("skyblocker.bars.config.speed"))); // Fetch from old status bar config int[] counts = new int[3]; // counts for RIGHT, LAYER1, LAYER2 @@ -76,6 +79,8 @@ public class FancyStatusBars { loadOldBarPosition(defense, counts, barPositions.defenceBarPosition); StatusBar experience = statusBars.get("experience"); loadOldBarPosition(experience, counts, barPositions.experienceBarPosition); + StatusBar speed = statusBars.get("speed"); + loadOldBarPosition(speed, counts, barPositions.speedBarPosition); CompletableFuture.supplyAsync(FancyStatusBars::loadBarConfig).thenAccept(object -> { if (object != null) { @@ -304,6 +309,8 @@ public class FancyStatusBars { statusBars.get("intelligence").updateValues(intelligence.value() / (float) intelligence.max(), intelligence.overflow() / (float) intelligence.max(), intelligence.value()); int defense = statusBarTracker.getDefense(); statusBars.get("defense").updateValues(defense / (defense + 100.f), 0, defense); + StatusBarTracker.Resource speed = statusBarTracker.getSpeed(); + statusBars.get("speed").updateValues(speed.value() / (float) speed.max(), 0, speed.value()); statusBars.get("experience").updateValues(player.experienceProgress, 0, player.experienceLevel); return true; } -- cgit From f903a033700dcdd4242e5bd3b6bb2f7e9bde5b78 Mon Sep 17 00:00:00 2001 From: Westsi <76999267+Westsi@users.noreply.github.com> Date: Wed, 21 Aug 2024 18:35:33 +0100 Subject: Update src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java Co-authored-by: Kevin <92656833+kevinthegreat1@users.noreply.github.com> --- .../java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/main/java/de') 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 c387686d..e02f86d7 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -179,9 +179,6 @@ public class UIAndVisualsConfig { @SerialEntry public OldBarPosition experienceBarPosition = OldBarPosition.LAYER1; - @SerialEntry - public OldBarPosition speedBarPosition = OldBarPosition.LAYER1; - } /** -- cgit From 0921866d08f551f8c0994f7fb746c3deaaa8f7b2 Mon Sep 17 00:00:00 2001 From: Westsi <76999267+Westsi@users.noreply.github.com> Date: Wed, 21 Aug 2024 18:35:40 +0100 Subject: Update src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java Co-authored-by: Kevin <92656833+kevinthegreat1@users.noreply.github.com> --- .../java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/main/java/de') 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 74ad9285..c3bba3a6 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java @@ -79,8 +79,6 @@ public class FancyStatusBars { loadOldBarPosition(defense, counts, barPositions.defenceBarPosition); StatusBar experience = statusBars.get("experience"); loadOldBarPosition(experience, counts, barPositions.experienceBarPosition); - StatusBar speed = statusBars.get("speed"); - loadOldBarPosition(speed, counts, barPositions.speedBarPosition); CompletableFuture.supplyAsync(FancyStatusBars::loadBarConfig).thenAccept(object -> { if (object != null) { -- cgit From b2a6bee126615d75b0d8a9b5f91fe77a79d24a79 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Thu, 22 Aug 2024 02:01:01 +0800 Subject: Initialize speed bar --- .../config/configs/UIAndVisualsConfig.java | 23 ++++++++++++++-------- .../skyblock/fancybars/FancyStatusBars.java | 17 +++++++++------- 2 files changed, 25 insertions(+), 15 deletions(-) (limited to 'src/main/java/de') 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 e02f86d7..f18edf9a 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -160,31 +160,38 @@ public class UIAndVisualsConfig { public boolean enableBars = true; // Kept in for backwards compatibility, remove if needed + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated @SerialEntry - public OldBarPositions barPositions = new OldBarPositions(); + public LegacyBarPositions barPositions = new LegacyBarPositions(); } /** - * Backwards compat + * Backwards compat. + *

+ * Used to load the legacy bar positions, which will not have an effect once the bars are saved in the new format at {@code /skyblocker/status_bars.json}. + * New bars do not need to be added here. */ - public static class OldBarPositions { + @SuppressWarnings("DeprecatedIsStillUsed") + @Deprecated + public static class LegacyBarPositions { @SerialEntry - public OldBarPosition healthBarPosition = OldBarPosition.LAYER1; + public LegacyBarPosition healthBarPosition = LegacyBarPosition.LAYER1; @SerialEntry - public OldBarPosition manaBarPosition = OldBarPosition.LAYER1; + public LegacyBarPosition manaBarPosition = LegacyBarPosition.LAYER1; @SerialEntry - public OldBarPosition defenceBarPosition = OldBarPosition.LAYER1; + public LegacyBarPosition defenceBarPosition = LegacyBarPosition.LAYER1; @SerialEntry - public OldBarPosition experienceBarPosition = OldBarPosition.LAYER1; + public LegacyBarPosition experienceBarPosition = LegacyBarPosition.LAYER1; } /** * Backwards compat */ - public enum OldBarPosition { + public enum LegacyBarPosition { LAYER1, LAYER2, RIGHT, NONE } 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 c3bba3a6..081059ce 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java @@ -71,14 +71,17 @@ public class FancyStatusBars { // Fetch from old status bar config int[] counts = new int[3]; // counts for RIGHT, LAYER1, LAYER2 StatusBar health = statusBars.get("health"); - UIAndVisualsConfig.OldBarPositions barPositions = SkyblockerConfigManager.get().uiAndVisuals.bars.barPositions; - loadOldBarPosition(health, counts, barPositions.healthBarPosition); + @SuppressWarnings("deprecation") + UIAndVisualsConfig.LegacyBarPositions barPositions = SkyblockerConfigManager.get().uiAndVisuals.bars.barPositions; + initBarPosition(health, counts, barPositions.healthBarPosition); StatusBar intelligence = statusBars.get("intelligence"); - loadOldBarPosition(intelligence, counts, barPositions.manaBarPosition); + initBarPosition(intelligence, counts, barPositions.manaBarPosition); StatusBar defense = statusBars.get("defense"); - loadOldBarPosition(defense, counts, barPositions.defenceBarPosition); + initBarPosition(defense, counts, barPositions.defenceBarPosition); StatusBar experience = statusBars.get("experience"); - loadOldBarPosition(experience, counts, barPositions.experienceBarPosition); + initBarPosition(experience, counts, barPositions.experienceBarPosition); + StatusBar speed = statusBars.get("speed"); + initBarPosition(speed, counts, UIAndVisualsConfig.LegacyBarPosition.LAYER1); CompletableFuture.supplyAsync(FancyStatusBars::loadBarConfig).thenAccept(object -> { if (object != null) { @@ -111,12 +114,12 @@ public class FancyStatusBars { } /** - * Loads the bar position from the old config + * Loads the bar position from the old config. Should be used to initialize new bars too. * @param bar the bar to load the position for * @param counts the counts for each bar position (LAYER1, LAYER2, RIGHT) * @param position the position to load */ - private static void loadOldBarPosition(StatusBar bar, int[] counts, UIAndVisualsConfig.OldBarPosition position) { + private static void initBarPosition(StatusBar bar, int[] counts, UIAndVisualsConfig.LegacyBarPosition position) { switch (position) { case RIGHT: bar.anchor = BarPositioner.BarAnchor.HOTBAR_RIGHT; -- cgit From 1f019f06e0cf1333ca364f57cf26035dd1ecfbec Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Fri, 6 Sep 2024 15:27:15 -0400 Subject: Update default positions --- .../java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java | 4 ++-- .../java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src/main/java/de') 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 f18edf9a..598cbf54 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java @@ -182,10 +182,10 @@ public class UIAndVisualsConfig { public LegacyBarPosition manaBarPosition = LegacyBarPosition.LAYER1; @SerialEntry - public LegacyBarPosition defenceBarPosition = LegacyBarPosition.LAYER1; + public LegacyBarPosition defenceBarPosition = LegacyBarPosition.RIGHT; @SerialEntry - public LegacyBarPosition experienceBarPosition = LegacyBarPosition.LAYER1; + public LegacyBarPosition experienceBarPosition = LegacyBarPosition.LAYER2; } /** 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 081059ce..f4915359 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java @@ -81,7 +81,7 @@ public class FancyStatusBars { StatusBar experience = statusBars.get("experience"); initBarPosition(experience, counts, barPositions.experienceBarPosition); StatusBar speed = statusBars.get("speed"); - initBarPosition(speed, counts, UIAndVisualsConfig.LegacyBarPosition.LAYER1); + initBarPosition(speed, counts, UIAndVisualsConfig.LegacyBarPosition.RIGHT); CompletableFuture.supplyAsync(FancyStatusBars::loadBarConfig).thenAccept(object -> { if (object != null) { -- cgit