HTTPS
https://git.nageyqma.icu/nageyqma/blade-addons-next.git
SSH
git@git.nageyqma.icu:nageyqma/blade-addons-next.git
HTTPS 链接可直接 git clone;推送代码请使用 SSH。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
package blade.addon.utils.data;
import java.util.List;
import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.core.component.DataComponents;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.component.CustomData;
import net.minecraft.world.item.component.ItemLore;
public class ItemUtil {
public static String getId(ItemStack item) {
CustomData nbt = item.get(DataComponents.CUSTOM_DATA);
if (nbt == null) return null;
CompoundTag compound = nbt.copyTag();
return compound.getStringOr("id", null);
}
public static String getUuid(ItemStack item) {
CustomData nbt = item.get(DataComponents.CUSTOM_DATA);
if (nbt == null) return null;
CompoundTag compound = nbt.copyTag();
return compound.getStringOr("uuid", null);
}
public static CompoundTag getNbt(ItemStack item) {
CustomData nbt = item.get(DataComponents.CUSTOM_DATA);
if (nbt == null) return null;
return nbt.copyTag();
}
public static boolean isHolding(String name) {
LocalPlayer player = Minecraft.getInstance().player;
if (player == null) return false;
return player.getMainHandItem().getHoverName().getString().contains(name);
}
public static boolean itemHasName(ItemStack itemStack, String name) {
LocalPlayer player = Minecraft.getInstance().player;
if (player == null || itemStack == null) return false;
return itemStack.getHoverName().getString().contains(name);
}
public static boolean containsLore(ItemStack item, String contain) {
List<Component> lines = getLore(item);
if (lines == null) return false;
for (Component line : lines.reversed()) {
String string = line.getString();
if (string.contains(contain)) {
return true;
}
}
return false;
}
public static List<Component> getLore(ItemStack item) {
if (item ==null) return null;
ItemLore lore = item.get(DataComponents.LORE);
if (lore == null) return null;
List<Component> lines = lore.lines();
return lines;
}
public static Component findLore(ItemStack item, String contain) {
List<Component> lines = getLore(item);
if (lines == null) return null;
for (Component line : lines.reversed()) {
String string = line.getString();
if (string.contains(contain)) {
return line;
}
}
return null;
}
public static boolean containsIgnoreCaseLore(ItemStack item, String contain) {
if (item ==null) return false;
ItemLore lore = item.get(DataComponents.LORE);
if (lore == null) return false;
List<Component> lines = lore.lines();
if (lines.isEmpty()) return false;
for (Component line : lines.reversed()) {
String string = line.getString();
if (string.toLowerCase().contains(contain.toLowerCase())) {
return true;
}
}
return false;
}
public static boolean containsNBT(ItemStack item, String contain) {
CustomData nbt = item.get(DataComponents.CUSTOM_DATA);
if (nbt == null) {
return false;
}
return nbt.toString().contains(contain);
}
}