nageyqma·git
HTTPS https://git.nageyqma.icu/nageyqma/blade-addons-next.git SSH git@git.nageyqma.icu:nageyqma/blade-addons-next.git

HTTPS 链接可直接 git clone;推送代码请使用 SSH。

2.2 KB · 81 行raw
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
package blade.addon.features.item;

import blade.addon.utils.config.values.Visual;
import blade.addon.utils.data.ItemUtil;
import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;

import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ToolTip {

    private static final Pattern PATTERN = Pattern.compile("\"candyUsed\":(\\d+),");

    public static void init() {
        ItemTooltipCallback.EVENT.register((item, tooltipContext, tooltipType, lines) -> {

            CompoundTag nbt = ItemUtil.getNbt(item);
            if (nbt == null) return;
            attemptItemQuality(nbt, lines);
            attemptCandy(nbt, lines);

        });
    }


    private static void attemptItemQuality(CompoundTag nbt, List<Component> lines) {
        if (!Visual.itemQuality) return;
        int statboost = nbt.getIntOr("baseStatBoostPercentage", -1);
        if (statboost == -1) return;

        int tier = nbt.getIntOr("item_tier", -1);
        if (tier == -1) return;

        String statBoost = "§4Stat boost: " + statboost + "/50";
        String reqString = "req: " + getFloor(tier);

        lines.add(Component.literal(statBoost + " " + reqString));

    }

    private static String getFloor(int tier) {
        return switch (tier) {
            case 0 -> "E";
            case 1 -> "F1";
            case 2 -> "F2";
            case 3 -> "F3";
            case 4 -> "F4";
            case 5 -> "F5";
            case 6 -> "F6";
            case 7 -> "F7";
            case 8 -> "M5";
            case 9 -> "M6";
            case 10 -> "M7";
            default -> "?";
        };
    }


    private static void attemptCandy(CompoundTag nbt, List<Component> lines) {
        if (!Visual.petCandy) return;
        if (!nbt.getStringOr("id", "").equals("PET")) return;

        String petInfo = nbt.getStringOr("petInfo", null);
        if (petInfo == null) return;

        Matcher matcher = PATTERN.matcher(petInfo);
        if (!matcher.find()) return;

        String candies = matcher.group(1);
        if (candies.equals("0")) return;

        lines.add(Component.literal("§aCandies: (" + candies + "/10)"));


    }

}