package thaumicenergistics.common.items; import net.minecraft.core.GlobalPos; import net.minecraft.network.chat.Component; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import appeng.api.features.IGridLinkableHandler; import appeng.api.ids.AEComponents; import appeng.core.localization.GuiText; import appeng.core.localization.Tooltips; import java.util.List; public class ItemGolemWirelessBackpack extends Item { public static final IGridLinkableHandler LINKABLE_HANDLER = new LinkableHandler(); public ItemGolemWirelessBackpack() { super(new Item.Properties().stacksTo(1).durability(0)); } @Override public void appendHoverText(ItemStack stack, TooltipContext context, List lines, TooltipFlag flag) { super.appendHoverText(stack, context, lines, flag); if (getLinkedPosition(stack) == null) { lines.add(Tooltips.of(GuiText.Unlinked, Tooltips.RED)); } else { lines.add(Tooltips.of(GuiText.Linked, Tooltips.GREEN)); } } public GlobalPos getLinkedPosition(ItemStack stack) { return stack.get(AEComponents.WIRELESS_LINK_TARGET); } public static boolean isLinked(ItemStack stack) { return stack.get(AEComponents.WIRELESS_LINK_TARGET) != null; } private static class LinkableHandler implements IGridLinkableHandler { @Override public boolean canLink(ItemStack stack) { return stack.getItem() instanceof ItemGolemWirelessBackpack; } @Override public void link(ItemStack stack, GlobalPos pos) { stack.set(AEComponents.WIRELESS_LINK_TARGET, pos); } @Override public void unlink(ItemStack stack) { stack.remove(AEComponents.WIRELESS_LINK_TARGET); } } }