コード例 #1
0
  public boolean hitEntity(ItemStack itemstack, EntityLiving mob, EntityLiving entityliving1) {
    World world = entityliving1.worldObj;
    if (type1 == type2) {
      attacks(itemstack, world, entityliving1, mob, type1);
    } else {
      if (random.nextInt(100) + 1 <= 80) {
        attacks(itemstack, world, entityliving1, mob, type1);
      }
      if (random.nextInt(100) + 1 <= 20) {
        attacks(itemstack, world, entityliving1, mob, type2);
      }
    }
    int i = itemstack.getItemDamage();
    if (i >= dur) {
      itemstack.stackSize = 0;
    }
    if (type1 == 3 || type2 == 3 || type1 == 4 || type2 == 4 || type1 == 8 || type2 == 8) {
      if (random.nextInt(100) + 1 <= 90) {
        itemstack.damageItem(1, entityliving1);
      }
    } else {
      itemstack.damageItem(1, entityliving1);
    }

    return true;
  }
コード例 #2
0
ファイル: ItemBow.java プロジェクト: Epixcrafted/EpixClient
  /**
   * called when the player releases the use item button. Args: itemstack, world, entityplayer,
   * itemInUseCount
   */
  public void onPlayerStoppedUsing(
      ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer, int par4) {
    boolean var5 =
        par3EntityPlayer.capabilities.isCreativeMode
            || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, par1ItemStack)
                > 0;

    if (var5 || par3EntityPlayer.inventory.hasItem(Item.arrow.shiftedIndex)) {
      int var6 = this.getMaxItemUseDuration(par1ItemStack) - par4;
      float var7 = (float) var6 / 20.0F;
      var7 = (var7 * var7 + var7 * 2.0F) / 3.0F;

      if ((double) var7 < 0.1D) {
        return;
      }

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

      EntityArrow var8 = new EntityArrow(par2World, par3EntityPlayer, var7 * 2.0F);

      if (var7 == 1.0F) {
        var8.setIsCritical(true);
      }

      int var9 = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, par1ItemStack);

      if (var9 > 0) {
        var8.setDamage(var8.getDamage() + (double) var9 * 0.5D + 0.5D);
      }

      int var10 = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, par1ItemStack);

      if (var10 > 0) {
        var8.setKnockbackStrength(var10);
      }

      if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, par1ItemStack) > 0) {
        var8.setFire(100);
      }

      par1ItemStack.damageItem(1, par3EntityPlayer);
      par2World.playSoundAtEntity(
          par3EntityPlayer,
          "random.bow",
          1.0F,
          1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + var7 * 0.5F);

      if (var5) {
        var8.canBePickedUp = 2;
      } else {
        par3EntityPlayer.inventory.consumeInventoryItem(Item.arrow.shiftedIndex);
      }

      if (!par2World.isRemote) {
        par2World.spawnEntityInWorld(var8);
      }
    }
  }
コード例 #3
0
ファイル: EntitySheep.java プロジェクト: BrilZliaN/MCUpd
  /**
   * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a
   * pig.
   */
  public boolean interact(EntityPlayer par1EntityPlayer) {
    ItemStack var2 = par1EntityPlayer.inventory.getCurrentItem();

    if (var2 != null
        && var2.itemID == Item.shears.itemID
        && !this.getSheared()
        && !this.isChild()) {
      if (!this.worldObj.isRemote) {
        this.setSheared(true);
        int var3 = 1 + this.rand.nextInt(3);

        for (int var4 = 0; var4 < var3; ++var4) {
          EntityItem var5 =
              this.entityDropItem(
                  new ItemStack(Block.cloth.blockID, 1, this.getFleeceColor()), 1.0F);
          var5.motionY += (double) (this.rand.nextFloat() * 0.05F);
          var5.motionX += (double) ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.1F);
          var5.motionZ += (double) ((this.rand.nextFloat() - this.rand.nextFloat()) * 0.1F);
        }
      }

      var2.damageItem(1, par1EntityPlayer);
      this.playSound("mob.sheep.shear", 1.0F, 1.0F);
    }

    return super.interact(par1EntityPlayer);
  }
コード例 #4
0
ファイル: ItemBow.java プロジェクト: mikeprimm/mcp_src
  /**
   * called when the player releases the use item button. Args: itemstack, world, entityplayer,
   * itemInUseCount
   */
  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(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.func_56125_a(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_46007_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) {
        entityarrow.field_58012_a = 2;
      } else {
        par3EntityPlayer.inventory.consumeInventoryItem(Item.arrow.shiftedIndex);
      }

      if (!par2World.isRemote) {
        par2World.spawnEntityInWorld(entityarrow);
      }
    }
  }
コード例 #5
0
 public boolean onBlockDestroyed(
     ItemStack itemstack, int i, int j, int k, int l, EntityLiving entityliving) {
   int i1 = itemstack.getItemDamage();
   if (i1 >= dur) {
     itemstack.stackSize = 0;
   }
   itemstack.damageItem(2, entityliving);
   return true;
 }
コード例 #6
0
 public boolean onBlockDestroyed(
     ItemStack par1ItemStack,
     int par2,
     int par3,
     int par4,
     int par5,
     EntityLiving par6EntityLiving) {
   par1ItemStack.damageItem(2, par6EntityLiving);
   return true;
 }
コード例 #7
0
 public boolean onBlockDestroyed(
     ItemStack itemstack, int bID, int x, int y, int z, EntityLiving player) {
   int unbreaking = headUnbreaking;
   if (handleUnbreaking > unbreaking) unbreaking = handleUnbreaking;
   if (random.nextInt(100) + 1 <= 100 - (unbreaking * 10)) {
     if (itemstack.getItemDamage() + 1 >= itemstack.getMaxDamage())
       ((EntityPlayer) player).destroyCurrentEquippedItem();
     else itemstack.damageItem(1, player);
   }
   return true;
 }
コード例 #8
0
ファイル: ItemTool.java プロジェクト: nmg43/mcp70-src
  public boolean func_77660_a(
      ItemStack par1ItemStack,
      World par2World,
      int par3,
      int par4,
      int par5,
      int par6,
      EntityLiving par7EntityLiving) {
    if ((double) Block.blocksList[par3].func_71934_m(par2World, par4, par5, par6) != 0.0D) {
      par1ItemStack.damageItem(1, par7EntityLiving);
    }

    return true;
  }
コード例 #9
0
  /**
   * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack,
   * world, entityPlayer
   */
  public ItemStack onItemRightClick(
      ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
    if (par3EntityPlayer.isRiding() && par3EntityPlayer.ridingEntity instanceof EntityPig) {
      EntityPig var4 = (EntityPig) par3EntityPlayer.ridingEntity;

      if (var4.getAIControlledByPlayer().isControlledByPlayer()
          && par1ItemStack.getMaxDamage() - par1ItemStack.getItemDamage() >= 7) {
        var4.getAIControlledByPlayer().boostSpeed();
        par1ItemStack.damageItem(7, par3EntityPlayer);

        if (par1ItemStack.stackSize == 0) {
          return new ItemStack(Item.fishingRod);
        }
      }
    }

    return par1ItemStack;
  }
コード例 #10
0
  public boolean interact(EntityPlayer entityplayer) {
    ItemStack itemstack = entityplayer.inventory.getCurrentItem();
    if (itemstack != null && itemstack.itemID == Item.shears.shiftedIndex && !getSheared()) {
      if (!worldObj.multiplayerWorld) {
        if (getPuffed()) {
          setPuffed(false);
          int i = 2 + rand.nextInt(3);
          for (int l = 0; l < i; l++) {
            EntityItem entityitem =
                entityDropItem(new ItemStack(Block.cloth.blockID, 1, getFleeceColor()), 1.0F);
            entityitem.motionY += rand.nextFloat() * 0.05F;
            entityitem.motionX += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
            entityitem.motionZ += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
          }

        } else {
          setSheared(true);
          int j = 2 + rand.nextInt(3);
          for (int i1 = 0; i1 < j; i1++) {
            EntityItem entityitem1 =
                entityDropItem(new ItemStack(Block.cloth.blockID, 1, getFleeceColor()), 1.0F);
            entityitem1.motionY += rand.nextFloat() * 0.05F;
            entityitem1.motionX += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
            entityitem1.motionZ += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
          }
        }
      }
      itemstack.damageItem(1, entityplayer);
    }
    if (itemstack != null && itemstack.itemID == Item.dyePowder.shiftedIndex && !getSheared()) {
      int k = BlockCloth.func_21034_c(itemstack.getItemDamage());
      if (getFleeceColor() != k) {
        if (getPuffed() && itemstack.stackSize >= 2) {
          setFleeceColor(k);
          itemstack.stackSize -= 2;
        } else if (!getPuffed()) {
          setFleeceColor(k);
          itemstack.stackSize--;
        }
      }
    }
    return false;
  }
コード例 #11
0
ファイル: ItemHoe.java プロジェクト: nathanowen42/DuneMod
  /**
   * Callback for item usage. If the item does something special on right clicking, he will have one
   * of those. Return True if something happen and false if it don't. This is for ITEMS, not BLOCKS
   */
  public boolean onItemUse(
      ItemStack par1ItemStack,
      EntityPlayer par2EntityPlayer,
      World par3World,
      int par4,
      int par5,
      int par6,
      int par7,
      float par8,
      float par9,
      float par10) {
    if (!par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack)) {
      return false;
    } else {
      int var11 = par3World.getBlockId(par4, par5, par6);
      int var12 = par3World.getBlockId(par4, par5 + 1, par6);

      if ((par7 == 0 || var12 != 0 || var11 != Block.grass.blockID)
          && var11 != Block.dirt.blockID) {
        return false;
      } else {
        Block var13 = Block.tilledField;
        par3World.playSoundEffect(
            (double) ((float) par4 + 0.5F),
            (double) ((float) par5 + 0.5F),
            (double) ((float) par6 + 0.5F),
            var13.stepSound.getStepSound(),
            (var13.stepSound.getVolume() + 1.0F) / 2.0F,
            var13.stepSound.getPitch() * 0.8F);

        if (par3World.isRemote) {
          return true;
        } else {
          par3World.setBlockWithNotify(par4, par5, par6, var13.blockID);
          par1ItemStack.damageItem(1, par2EntityPlayer);
          return true;
        }
      }
    }
  }
コード例 #12
0
  public boolean hitEntity(ItemStack itemstack, EntityLiving mob, EntityLiving player) {
    World world = player.worldObj;
    if (headType == handleType) {
      attacks(itemstack, world, player, mob, headType);
    } else {
      if (random.nextInt(100) + 1 <= 80) {
        attacks(itemstack, world, player, mob, headType);
      }
      if (random.nextInt(100) + 1 <= 20) {
        attacks(itemstack, world, player, mob, handleType);
      }
    }

    int unbreaking = headUnbreaking;
    if (handleUnbreaking > unbreaking) unbreaking = handleUnbreaking;
    if (random.nextInt(100) + 1 <= 100 - (unbreaking * 10)) {
      if (itemstack.getItemDamage() + 2 >= itemstack.getMaxDamage())
        ((EntityPlayer) player).destroyCurrentEquippedItem();
      else itemstack.damageItem(2, mob);
    }

    return true;
  }
コード例 #13
0
ファイル: ItemTool.java プロジェクト: nmg43/mcp70-src
 /**
  * Current implementations of this method in child classes do not use the entry argument beside
  * ev. They just raise the damage on the stack.
  */
 public boolean hitEntity(
     ItemStack par1ItemStack, EntityLiving par2EntityLiving, EntityLiving par3EntityLiving) {
   par1ItemStack.damageItem(2, par3EntityLiving);
   return true;
 }
コード例 #14
0
 public void onUpdate(ItemStack itemstack, World world, Entity entity, int i, boolean flag) {
   if (itemstack.getItemDamage() > 0) {
     itemstack.damageItem(-1, (EntityLiving) entity);
   }
 }
コード例 #15
0
  /** Updates the task */
  public void updateTask() {
    EntityPlayer var1 = (EntityPlayer) this.thisEntity.riddenByEntity;
    EntityCreature var2 = (EntityCreature) this.thisEntity;
    float var3 =
        MathHelper.wrapAngleTo180_float(var1.rotationYaw - this.thisEntity.rotationYaw) * 0.5F;

    if (var3 > 5.0F) {
      var3 = 5.0F;
    }

    if (var3 < -5.0F) {
      var3 = -5.0F;
    }

    this.thisEntity.rotationYaw =
        MathHelper.wrapAngleTo180_float(this.thisEntity.rotationYaw + var3);

    if (this.currentSpeed < this.maxSpeed) {
      this.currentSpeed += (this.maxSpeed - this.currentSpeed) * 0.01F;
    }

    if (this.currentSpeed > this.maxSpeed) {
      this.currentSpeed = this.maxSpeed;
    }

    int var4 = MathHelper.floor_double(this.thisEntity.posX);
    int var5 = MathHelper.floor_double(this.thisEntity.posY);
    int var6 = MathHelper.floor_double(this.thisEntity.posZ);
    float var7 = this.currentSpeed;

    if (this.speedBoosted) {
      if (this.speedBoostTime++ > this.maxSpeedBoostTime) {
        this.speedBoosted = false;
      }

      var7 +=
          var7
              * 1.15F
              * MathHelper.sin(
                  (float) this.speedBoostTime / (float) this.maxSpeedBoostTime * (float) Math.PI);
    }

    float var8 = 0.91F;

    if (this.thisEntity.onGround) {
      var8 = 0.54600006F;
      int var9 =
          this.thisEntity.worldObj.getBlockId(
              MathHelper.floor_float((float) var4),
              MathHelper.floor_float((float) var5) - 1,
              MathHelper.floor_float((float) var6));

      if (var9 > 0) {
        var8 = Block.blocksList[var9].slipperiness * 0.91F;
      }
    }

    float var23 = 0.16277136F / (var8 * var8 * var8);
    float var10 = MathHelper.sin(var2.rotationYaw * (float) Math.PI / 180.0F);
    float var11 = MathHelper.cos(var2.rotationYaw * (float) Math.PI / 180.0F);
    float var12 = var2.getAIMoveSpeed() * var23;
    float var13 = Math.max(var7, 1.0F);
    var13 = var12 / var13;
    float var14 = var7 * var13;
    float var15 = -(var14 * var10);
    float var16 = var14 * var11;

    if (MathHelper.abs(var15) > MathHelper.abs(var16)) {
      if (var15 < 0.0F) {
        var15 -= this.thisEntity.width / 2.0F;
      }

      if (var15 > 0.0F) {
        var15 += this.thisEntity.width / 2.0F;
      }

      var16 = 0.0F;
    } else {
      var15 = 0.0F;

      if (var16 < 0.0F) {
        var16 -= this.thisEntity.width / 2.0F;
      }

      if (var16 > 0.0F) {
        var16 += this.thisEntity.width / 2.0F;
      }
    }

    int var17 = MathHelper.floor_double(this.thisEntity.posX + (double) var15);
    int var18 = MathHelper.floor_double(this.thisEntity.posZ + (double) var16);
    PathPoint var19 =
        new PathPoint(
            MathHelper.floor_float(this.thisEntity.width + 1.0F),
            MathHelper.floor_float(this.thisEntity.height + var1.height + 1.0F),
            MathHelper.floor_float(this.thisEntity.width + 1.0F));

    if (var4 != var17 || var6 != var18) {
      int var20 = this.thisEntity.worldObj.getBlockId(var4, var5, var6);
      int var21 = this.thisEntity.worldObj.getBlockId(var4, var5 - 1, var6);
      boolean var22 =
          this.func_98216_b(var20) || Block.blocksList[var20] == null && this.func_98216_b(var21);

      if (!var22
          && PathFinder.func_82565_a(this.thisEntity, var17, var5, var18, var19, false, false, true)
              == 0
          && PathFinder.func_82565_a(
                  this.thisEntity, var4, var5 + 1, var6, var19, false, false, true)
              == 1
          && PathFinder.func_82565_a(
                  this.thisEntity, var17, var5 + 1, var18, var19, false, false, true)
              == 1) {
        var2.getJumpHelper().setJumping();
      }
    }

    if (!var1.capabilities.isCreativeMode
        && this.currentSpeed >= this.maxSpeed * 0.5F
        && this.thisEntity.getRNG().nextFloat() < 0.006F
        && !this.speedBoosted) {
      ItemStack var24 = var1.getHeldItem();

      if (var24 != null && var24.itemID == Item.carrotOnAStick.itemID) {
        var24.damageItem(1, var1);

        if (var24.stackSize == 0) {
          ItemStack var25 = new ItemStack(Item.fishingRod);
          var25.setTagCompound(var24.stackTagCompound);
          var1.inventory.mainInventory[var1.inventory.currentItem] = var25;
        }
      }
    }

    this.thisEntity.moveEntityWithHeading(0.0F, var7);
  }
コード例 #16
0
ファイル: ItemTool.java プロジェクト: DreadKyller/ModCrafter
 public boolean onBlockDestroyed(
     ItemStack itemstack, int i, int j, int k, int l, EntityLiving entityliving) {
   itemstack.damageItem(1, entityliving);
   return true;
 }
コード例 #17
0
ファイル: ItemTool.java プロジェクト: DreadKyller/ModCrafter
 public boolean hitEntity(
     ItemStack itemstack, EntityLiving entityliving, EntityLiving entityliving1) {
   itemstack.damageItem(2, entityliving1);
   return true;
 }