package cofh.lib.util.helpers; import cofh.api.tileentity.IRedstoneControl; import cofh.api.tileentity.IRedstoneControl.ControlMode; import java.util.List; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class RedstoneControlHelper { private RedstoneControlHelper() { } /* NBT TAG HELPERS */ public static NBTTagCompound setItemStackTagRS(NBTTagCompound tag, IRedstoneControl tile) { if (tile == null) { return null; } if (tag == null) { tag = new NBTTagCompound(); } tag.setByte("RSControl", (byte) tile.getControl().ordinal()); return tag; } public static ControlMode getControlFromNBT(NBTTagCompound tag) { return tag == null ? ControlMode.DISABLED : ControlMode.values()[tag.getByte("RSControl")]; } /** * Adds Redstone Control information to ItemStacks. */ public static void addRSControlInformation(ItemStack stack, List<String> list) { if (hasRSControl(stack)) { switch (stack.stackTagCompound.getByte("RSControl")) { case 0: list.add(StringHelper.localize("info.cofh.signal") + ": " + StringHelper.RED + StringHelper.localize("info.cofh.disabled") + StringHelper.END); return; case 1: list.add(StringHelper.localize("info.cofh.signal") + ": " + StringHelper.BRIGHT_GREEN + StringHelper.localize("info.cofh.enabled") + StringHelper.LIGHT_GRAY + ", " + StringHelper.localize("info.cofh.low") + StringHelper.END); return; case 2: list.add(StringHelper.localize("info.cofh.signal") + ": " + StringHelper.BRIGHT_GREEN + StringHelper.localize("info.cofh.enabled") + StringHelper.LIGHT_GRAY + ", " + StringHelper.localize("info.cofh.high") + StringHelper.END); return; } } } /* ITEM HELPERS */ public static boolean hasRSControl(ItemStack stack) { return stack.stackTagCompound == null ? false : stack.stackTagCompound.hasKey("RSControl"); } public static boolean setControl(ItemStack stack, ControlMode control) { if (stack.stackTagCompound == null) { stack.setTagCompound(new NBTTagCompound()); } stack.stackTagCompound.setByte("RSControl", (byte) control.ordinal()); return true; } public static ControlMode getControl(ItemStack stack) { return stack.stackTagCompound == null ? ControlMode.DISABLED : ControlMode.values()[stack.stackTagCompound.getByte("RSControl")]; } }