diff options
| author | Westsi <76999267+Westsi@users.noreply.github.com> | 2024-08-19 20:04:56 +0100 |
|---|---|---|
| committer | Westsi <76999267+Westsi@users.noreply.github.com> | 2024-08-19 20:04:56 +0100 |
| commit | 4671c52193eb5b855d1104d064b98c3c3edb9ef2 (patch) | |
| tree | 580c5865b309b9def5b6e7f132ab01839c90d303 /src/main/java/de | |
| parent | 7a9fbebc41d55fa0bb3275c79eaba2ba3604b916 (diff) | |
| download | Skyblocker-4671c52193eb5b855d1104d064b98c3c3edb9ef2.tar.gz Skyblocker-4671c52193eb5b855d1104d064b98c3c3edb9ef2.tar.bz2 Skyblocker-4671c52193eb5b855d1104d064b98c3c3edb9ef2.zip | |
Added speed status bar
Diffstat (limited to 'src/main/java/de')
3 files changed, 50 insertions, 1 deletions
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<ItemStack> 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; } |
