package micdoodle8.mods.galacticraft.planets.asteroids.items; import micdoodle8.mods.galacticraft.core.GalacticraftCore; import micdoodle8.mods.galacticraft.core.items.ISortableItem; import micdoodle8.mods.galacticraft.core.proxy.ClientProxyCore; import micdoodle8.mods.galacticraft.core.util.EnumSortCategoryItem; import micdoodle8.mods.galacticraft.core.util.GCCoreUtil; import micdoodle8.mods.galacticraft.planets.asteroids.entities.EntityGrapple; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.*; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class ItemGrappleHook extends ItemBow implements ISortableItem { public ItemGrappleHook(String assetName) { super(); this.setUnlocalizedName(assetName); this.setMaxStackSize(1); //this.setTextureName("arrow"); } @SideOnly(Side.CLIENT) @Override public CreativeTabs getCreativeTab() { return GalacticraftCore.galacticraftItemsTab; } @Override @SideOnly(Side.CLIENT) public EnumRarity getRarity(ItemStack par1ItemStack) { return ClientProxyCore.galacticraftItem; } @Override public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4) { boolean flag = par3EntityPlayer.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack) > 0; if (flag || par3EntityPlayer.inventory.hasItem(Items.string)) { EntityGrapple grapple = new EntityGrapple(par2World, par3EntityPlayer, 2.0F); par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 1.0F, 1.0F / (Item.itemRand.nextFloat() * 0.4F + 1.2F) + 0.5F); if (!par2World.isRemote) { par2World.spawnEntityInWorld(grapple); } par1ItemStack.damageItem(1, par3EntityPlayer); grapple.canBePickedUp = par3EntityPlayer.capabilities.isCreativeMode ? 2 : 1; if (!par3EntityPlayer.capabilities.isCreativeMode) { par3EntityPlayer.inventory.consumeInventoryItem(Items.string); } } else if (par2World.isRemote) { par3EntityPlayer.addChatMessage(new ChatComponentText(GCCoreUtil.translate("gui.message.grapple.fail"))); } } @Override public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityPlayer playerIn) { return stack; } @Override public int getMaxItemUseDuration(ItemStack par1ItemStack) { return 72000; } @Override public EnumAction getItemUseAction(ItemStack par1ItemStack) { return EnumAction.BOW; } @Override public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack)); return par1ItemStack; } @Override public EnumSortCategoryItem getCategory(int meta) { return EnumSortCategoryItem.GENERAL; } }