package mekanism.common.item; import java.util.HashMap; import java.util.List; import java.util.Map; import mekanism.api.EnumColor; import mekanism.common.util.ItemDataUtils; import mekanism.common.util.LangUtils; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.world.World; public class ItemWalkieTalkie extends ItemMekanism { public static ModelResourceLocation OFF_MODEL = new ModelResourceLocation("mekanism:WalkieTalkie", "inventory"); public static Map<Integer, ModelResourceLocation> CHANNEL_MODELS = new HashMap<Integer, ModelResourceLocation>(); public ItemWalkieTalkie() { super(); setMaxStackSize(1); } @Override public void addInformation(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) { super.addInformation(itemstack, entityplayer, list, flag); list.add((getOn(itemstack) ? EnumColor.DARK_GREEN : EnumColor.DARK_RED) + LangUtils.localize("gui." + (getOn(itemstack) ? "on" : "off"))); list.add(EnumColor.DARK_AQUA + LangUtils.localize("tooltip.channel") + ": " + EnumColor.GREY + getChannel(itemstack)); } public static ModelResourceLocation getModel(int channel) { if(CHANNEL_MODELS.get(channel) == null) { CHANNEL_MODELS.put(channel, new ModelResourceLocation("mekanism:WalkieTalkie_ch" + channel, "inventory")); } return CHANNEL_MODELS.get(channel); } @Override public ActionResult<ItemStack> onItemRightClick(ItemStack itemStack, World world, EntityPlayer player, EnumHand hand) { if(player.isSneaking()) { setOn(itemStack, !getOn(itemStack)); return new ActionResult(EnumActionResult.SUCCESS, itemStack); } return new ActionResult(EnumActionResult.PASS, itemStack); } @Override public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) { return !ItemStack.areItemsEqual(oldStack, newStack); } public void setOn(ItemStack itemStack, boolean on) { ItemDataUtils.setBoolean(itemStack, "on", on); } public boolean getOn(ItemStack itemStack) { return ItemDataUtils.getBoolean(itemStack, "on"); } public void setChannel(ItemStack itemStack, int channel) { ItemDataUtils.setInt(itemStack, "channel", channel); } public int getChannel(ItemStack itemStack) { int channel = ItemDataUtils.getInt(itemStack, "channel"); if(channel == 0) { setChannel(itemStack, 1); channel = 1; } return channel; } }