package mekanism.common.item; import java.util.List; import mekanism.api.Coord4D; import mekanism.api.EnumColor; import mekanism.common.base.ISustainedInventory; import mekanism.common.entity.EntityRobit; import mekanism.common.tile.TileEntityChargepad; import mekanism.common.util.ItemDataUtils; import mekanism.common.util.LangUtils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class ItemRobit extends ItemEnergized implements ISustainedInventory { public ItemRobit() { super(100000); } @Override @SideOnly(Side.CLIENT) public void addInformation(ItemStack itemstack, EntityPlayer entityplayer, List<String> list, boolean flag) { super.addInformation(itemstack, entityplayer, list, flag); list.add(EnumColor.INDIGO + LangUtils.localize("tooltip.name") + ": " + EnumColor.GREY + getName(itemstack)); list.add(EnumColor.AQUA + LangUtils.localize("tooltip.inventory") + ": " + EnumColor.GREY + (getInventory(itemstack) != null && getInventory(itemstack).tagCount() != 0)); } @Override public EnumActionResult onItemUse(ItemStack itemstack, EntityPlayer entityplayer, World world, BlockPos pos, EnumHand hand, EnumFacing side, float posX, float posY, float posZ) { TileEntity tileEntity = world.getTileEntity(pos); if(tileEntity instanceof TileEntityChargepad) { TileEntityChargepad chargepad = (TileEntityChargepad)tileEntity; if(!chargepad.isActive) { if(!world.isRemote) { EntityRobit robit = new EntityRobit(world, pos.getX()+0.5, pos.getY()+0.1, pos.getZ()+0.5); robit.setHome(Coord4D.get(chargepad)); robit.setEnergy(getEnergy(itemstack)); robit.setOwner(entityplayer.getName()); robit.setInventory(getInventory(itemstack)); robit.setCustomNameTag(getName(itemstack)); world.spawnEntityInWorld(robit); } entityplayer.setHeldItem(hand, null); return EnumActionResult.SUCCESS; } } return EnumActionResult.PASS; } @Override public boolean canSend(ItemStack itemStack) { return false; } public void setName(ItemStack itemstack, String name) { ItemDataUtils.setString(itemstack, "name", name); } public String getName(ItemStack itemstack) { String name = ItemDataUtils.getString(itemstack, "name"); return name.isEmpty() ? "Robit" : name; } @Override public void setInventory(NBTTagList nbtTags, Object... data) { if(data[0] instanceof ItemStack) { ItemDataUtils.setList((ItemStack)data[0], "Items", nbtTags); } } @Override public NBTTagList getInventory(Object... data) { if(data[0] instanceof ItemStack) { return ItemDataUtils.getList((ItemStack)data[0], "Items"); } return null; } }