package micdoodle8.mods.galacticraft.core.items; import micdoodle8.mods.galacticraft.core.GalacticraftCore; import micdoodle8.mods.galacticraft.core.entities.EntityMeteorChunk; import micdoodle8.mods.galacticraft.core.proxy.ClientProxyCore; import micdoodle8.mods.galacticraft.core.util.EnumSortCategoryItem; import micdoodle8.mods.galacticraft.core.util.GCCoreUtil; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumRarity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import java.util.List; public class ItemMeteorChunk extends Item implements ISortableItem { public static final String[] names = { "meteor_chunk", "meteor_chunk_hot" }; public static final int METEOR_BURN_TIME = 45 * 20; public ItemMeteorChunk(String assetName) { super(); this.setMaxDamage(0); this.setHasSubtypes(true); this.maxStackSize = 16; this.setCreativeTab(CreativeTabs.tabMaterials); this.setUnlocalizedName(assetName); //this.setTextureName("arrow"); } @Override public CreativeTabs getCreativeTab() { return GalacticraftCore.galacticraftItemsTab; } @Override public void onUpdate(ItemStack itemstack, World world, Entity entity, int par4, boolean par5) { if (itemstack.getItemDamage() == 1 && !world.isRemote) { if (itemstack.hasTagCompound()) { float meteorBurnTime = itemstack.getTagCompound().getFloat("MeteorBurnTimeF"); if (meteorBurnTime >= 0.5F) { meteorBurnTime -= 0.5F; itemstack.getTagCompound().setFloat("MeteorBurnTimeF", meteorBurnTime); } else { itemstack.setItemDamage(0); itemstack.setTagCompound(null); } } else { itemstack.setTagCompound(new NBTTagCompound()); itemstack.getTagCompound().setFloat("MeteorBurnTimeF", ItemMeteorChunk.METEOR_BURN_TIME); } } } @Override public void onCreated(ItemStack itemstack, World world, EntityPlayer entityPlayer) { super.onCreated(itemstack, world, entityPlayer); if (itemstack.getItemDamage() == 1) { if (!itemstack.hasTagCompound()) { itemstack.setTagCompound(new NBTTagCompound()); } itemstack.getTagCompound().setFloat("MeteorBurnTimeF", ItemMeteorChunk.METEOR_BURN_TIME); } } @SuppressWarnings({ "unchecked", "rawtypes" }) @SideOnly(Side.CLIENT) @Override public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) { par3List.add(new ItemStack(par1, 1, 0)); par3List.add(new ItemStack(par1, 1, 1)); } @SideOnly(Side.CLIENT) @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public void addInformation(ItemStack itemstack, EntityPlayer par2EntityPlayer, List<String> tooltip, boolean par4) { if (itemstack.getItemDamage() > 0) { float burnTime = 0.0F; if (itemstack.hasTagCompound()) { float meteorBurnTime = itemstack.getTagCompound().getFloat("MeteorBurnTimeF"); burnTime = Math.round(meteorBurnTime / 10.0F) / 2.0F; } else { burnTime = 45.0F; } tooltip.add(GCCoreUtil.translate("item.hot_description.name") + " " + burnTime + GCCoreUtil.translate("gui.seconds")); } } @Override @SideOnly(Side.CLIENT) public EnumRarity getRarity(ItemStack par1ItemStack) { return ClientProxyCore.galacticraftItem; } @Override public String getUnlocalizedName(ItemStack itemStack) { return "item." + ItemMeteorChunk.names[itemStack.getItemDamage()]; } @Override public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { if (!player.capabilities.isCreativeMode) { --itemStack.stackSize; } world.playSoundAtEntity(player, "random.bow", 1.0F, 0.0001F / (Item.itemRand.nextFloat() * 0.1F)); if (!world.isRemote) { EntityMeteorChunk meteor = new EntityMeteorChunk(world, player, 1.0F); if (itemStack.getItemDamage() > 0) { meteor.setFire(20); meteor.isHot = true; } meteor.canBePickedUp = player.capabilities.isCreativeMode ? 2 : 1; world.spawnEntityInWorld(meteor); } player.swingItem(); return itemStack; } @Override public EnumSortCategoryItem getCategory(int meta) { return EnumSortCategoryItem.GENERAL; } }