aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/utils
diff options
context:
space:
mode:
authorYasin <LifeIsAParadox@users.noreply.github.com>2023-10-09 12:13:59 +0200
committerGitHub <noreply@github.com>2023-10-09 12:13:59 +0200
commitafe0610dccdbd00f3a4051141ce247b28a1a4e76 (patch)
tree6078bbe54377991439ecd5680f02c3ec3648485b /src/main/java/me/xmrvizzy/skyblocker/utils
parent9086f1ff94daa4933bf29552cfdaa633a251a792 (diff)
parent3696b874cd89f55ae79cadfd923c26a047add5fe (diff)
downloadSkyblocker-afe0610dccdbd00f3a4051141ce247b28a1a4e76.tar.gz
Skyblocker-afe0610dccdbd00f3a4051141ce247b28a1a4e76.tar.bz2
Skyblocker-afe0610dccdbd00f3a4051141ce247b28a1a4e76.zip
Merge pull request #341 from 0xallie/better-durability
Hook actual durability for Pickonimbus/Drills
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/utils')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java
index 9953edae..b8192b45 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/ItemUtils.java
@@ -1,12 +1,15 @@
package me.xmrvizzy.skyblocker.utils;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfigManager;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.StringNbtReader;
import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collections;
@@ -34,6 +37,53 @@ public class ItemUtils {
return list;
}
+ @Nullable
+ public static Durability getDurability(ItemStack stack) {
+ if (!Utils.isOnSkyblock() || !SkyblockerConfigManager.get().locations.dwarvenMines.enableDrillFuel || stack.isEmpty()) {
+ return null;
+ }
+
+ NbtCompound tag = stack.getNbt();
+ if (tag == null || !tag.contains("ExtraAttributes")) {
+ return null;
+ }
+
+ NbtCompound extraAttributes = tag.getCompound("ExtraAttributes");
+ if (!extraAttributes.contains("drill_fuel") && !extraAttributes.getString("id").equals("PICKONIMBUS")) {
+ return null;
+ }
+
+ int current = 0;
+ int max = 0;
+ String clearFormatting;
+
+ for (String line : ItemUtils.getTooltipStrings(stack)) {
+ clearFormatting = Formatting.strip(line);
+ if (line.contains("Fuel: ")) {
+ if (clearFormatting != null) {
+ String clear = Pattern.compile("[^0-9 /]").matcher(clearFormatting).replaceAll("").trim();
+ String[] split = clear.split("/");
+ current = Integer.parseInt(split[0]);
+ max = Integer.parseInt(split[1]) * 1000;
+ return new Durability(current, max);
+ }
+ } else if (line.contains("uses.")) {
+ if (clearFormatting != null) {
+ int startIndex = clearFormatting.lastIndexOf("after") + 6;
+ int endIndex = clearFormatting.indexOf("uses", startIndex);
+ if (startIndex >= 0 && endIndex > startIndex) {
+ String usesString = clearFormatting.substring(startIndex, endIndex).trim();
+ current = Integer.parseInt(usesString);
+ max = 5000;
+ }
+ return new Durability(current, max);
+ }
+ }
+ }
+
+ return null;
+ }
+
public static ItemStack getSkyblockerStack() {
try {
return ItemStack.fromNbt(StringNbtReader.parse("{id:\"minecraft:player_head\",Count:1,tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}}"));
@@ -55,4 +105,7 @@ public class ItemUtils {
return null;
}
+
+ public record Durability(int current, int max) {
+ }
}