aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorWestsi <76999267+Westsi@users.noreply.github.com>2024-08-19 20:04:56 +0100
committerWestsi <76999267+Westsi@users.noreply.github.com>2024-08-19 20:04:56 +0100
commit4671c52193eb5b855d1104d064b98c3c3edb9ef2 (patch)
tree580c5865b309b9def5b6e7f132ab01839c90d303 /src/main/java/de
parent7a9fbebc41d55fa0bb3275c79eaba2ba3604b916 (diff)
downloadSkyblocker-4671c52193eb5b855d1104d064b98c3c3edb9ef2.tar.gz
Skyblocker-4671c52193eb5b855d1104d064b98c3c3edb9ef2.tar.bz2
Skyblocker-4671c52193eb5b855d1104d064b98c3c3edb9ef2.zip
Added speed status bar
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/UIAndVisualsConfig.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/StatusBarTracker.java40
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/fancybars/FancyStatusBars.java9
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;
}