HTTPS
https://git.nageyqma.icu/nageyqma/blade-addons-next.git
SSH
git@git.nageyqma.icu:nageyqma/blade-addons-next.git
HTTPS 链接可直接 git clone;推送代码请使用 SSH。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
package blade.addon.features.item;
import blade.addon.utils.config.values.Visual;
import blade.addon.utils.rendering.DrawEvents;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.GuiGraphicsExtractor;
import net.minecraft.core.component.DataComponents;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.component.CustomData;
public class StarCountHighlight {
public static void init() {
DrawEvents.INVENTORY_SLOT_AFTER.register(StarCountHighlight::draw);
DrawEvents.HUD_SLOT_AFTER.register(StarCountHighlight::draw);
}
private static void draw(GuiGraphicsExtractor context, ItemStack stack, int x, int y) {
if (!Visual.drawStarCount) return;
StarCountHolder holder = (StarCountHolder) (Object) stack;
assert holder != null;
if (!holder.blade_addons$hasScannedStars()) {
holder.blade_addons$setStarCount(getStarCount(stack));
}
int starCount = holder.blade_addons$getStarCount();
if (starCount == 0) return;
Font textRenderer = Minecraft.getInstance().font;
String starText = "" + starCount;
context.text(Minecraft.getInstance().font, starText, x + 17 - textRenderer.width(starText), y + 18 - textRenderer.lineHeight, 0xffffffff, true);
}
public static int getStarCount(ItemStack item) {
CustomData nbt = item.get(DataComponents.CUSTOM_DATA);
if (nbt == null) return 0;
CompoundTag compound = nbt.copyTag();
int starCount = compound.getIntOr("upgrade_level", 0);
if (starCount == 0) {
//the old star system they used to use.
// Some items don't have the new data so this is a fallback
starCount = compound.getIntOr("dungeon_item_level", 0);
}
return starCount;
}
}