Beispiel #1
0
 protected override void DropRareDrop(int par1)
 {
     if (par1 > 0)
     {
         ItemStack itemstack = new ItemStack(Item.Bow);
         EnchantmentHelper.Func_48441_a(Rand, itemstack, 5);
         EntityDropItem(itemstack, 0.0F);
     }
     else
     {
         DropItem(Item.Bow.ShiftedIndex, 1);
     }
 }
        /// <summary>
        /// called when the player releases the use item button. Args: itemstack, world, entityplayer, itemInUseCount
        /// </summary>
        public override void OnPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4)
        {
            bool flag = par3EntityPlayer.Capabilities.IsCreativeMode || EnchantmentHelper.GetEnchantmentLevel(Enchantment.Infinity.EffectId, par1ItemStack) > 0;

            if (flag || par3EntityPlayer.Inventory.HasItem(Item.Arrow.ShiftedIndex))
            {
                int   i = GetMaxItemUseDuration(par1ItemStack) - par4;
                float f = (float)i / 20F;
                f = (f * f + f * 2.0F) / 3F;

                if ((double)f < 0.10000000000000001D)
                {
                    return;
                }

                if (f > 1.0F)
                {
                    f = 1.0F;
                }

                EntityArrow entityarrow = new EntityArrow(par2World, par3EntityPlayer, f * 2.0F);

                if (f == 1.0F)
                {
                    entityarrow.ArrowCritical = true;
                }

                int j = EnchantmentHelper.GetEnchantmentLevel(Enchantment.Power.EffectId, par1ItemStack);

                if (j > 0)
                {
                    entityarrow.SetDamage(entityarrow.GetDamage() + (double)j * 0.5D + 0.5D);
                }

                int k = EnchantmentHelper.GetEnchantmentLevel(Enchantment.Punch.EffectId, par1ItemStack);

                if (k > 0)
                {
                    entityarrow.Func_46023_b(k);
                }

                if (EnchantmentHelper.GetEnchantmentLevel(Enchantment.Flame.EffectId, par1ItemStack) > 0)
                {
                    entityarrow.SetFire(100);
                }

                par1ItemStack.DamageItem(1, par3EntityPlayer);
                par2World.PlaySoundAtEntity(par3EntityPlayer, "random.bow", 1.0F, 1.0F / (ItemRand.NextFloat() * 0.4F + 1.2F) + f * 0.5F);

                if (!flag)
                {
                    par3EntityPlayer.Inventory.ConsumeInventoryItem(Item.Arrow.ShiftedIndex);
                }
                else
                {
                    entityarrow.DoesArrowBelongToPlayer = false;
                }

                if (!par2World.IsRemote)
                {
                    par2World.SpawnEntityInWorld(entityarrow);
                }
            }
        }