/** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) { if (isSplash(itemStackIn.getMetadata())) { if (!playerIn.capabilities.isCreativeMode) { --itemStackIn.stackSize; } worldIn.playSoundAtEntity(playerIn, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!worldIn.isRemote) { worldIn.spawnEntityInWorld(new EntityPotion(worldIn, playerIn, itemStackIn)); } playerIn.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(this)]); return itemStackIn; } else { playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn)); return itemStackIn; } }
public ActionResult<ItemStack> onItemRightClick(World itemStackIn, EntityPlayer worldIn, EnumHand playerIn) { ItemStack itemstack = worldIn.getHeldItem(playerIn); ItemStack itemstack1 = worldIn.capabilities.isCreativeMode ? itemstack.copy() : itemstack.splitStack(1); itemStackIn.playSound((EntityPlayer)null, worldIn.posX, worldIn.posY, worldIn.posZ, SoundEvents.ENTITY_LINGERINGPOTION_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!itemStackIn.isRemote) { EntityPotion entitypotion = new EntityPotion(itemStackIn, worldIn, itemstack1); entitypotion.setHeadingFromThrower(worldIn, worldIn.rotationPitch, worldIn.rotationYaw, -20.0F, 0.5F, 1.0F); itemStackIn.spawnEntityInWorld(entitypotion); } worldIn.addStat(StatList.getObjectUseStats(this)); return new ActionResult(EnumActionResult.SUCCESS, itemstack); }
public ActionResult<ItemStack> onItemRightClick(World itemStackIn, EntityPlayer worldIn, EnumHand playerIn) { ItemStack itemstack = worldIn.getHeldItem(playerIn); ItemStack itemstack1 = worldIn.capabilities.isCreativeMode ? itemstack.copy() : itemstack.splitStack(1); itemStackIn.playSound((EntityPlayer)null, worldIn.posX, worldIn.posY, worldIn.posZ, SoundEvents.ENTITY_SPLASH_POTION_THROW, SoundCategory.PLAYERS, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!itemStackIn.isRemote) { EntityPotion entitypotion = new EntityPotion(itemStackIn, worldIn, itemstack1); entitypotion.setHeadingFromThrower(worldIn, worldIn.rotationPitch, worldIn.rotationYaw, -20.0F, 0.5F, 1.0F); itemStackIn.spawnEntityInWorld(entitypotion); } worldIn.addStat(StatList.getObjectUseStats(this)); return new ActionResult(EnumActionResult.SUCCESS, itemstack); }
public ActionResult<ItemStack> onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn, EnumHand hand) { if (!playerIn.capabilities.isCreativeMode) { --itemStackIn.stackSize; } worldIn.playSound((EntityPlayer)null, playerIn.posX, playerIn.posY, playerIn.posZ, SoundEvents.ENTITY_LINGERINGPOTION_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!worldIn.isRemote) { EntityPotion entitypotion = new EntityPotion(worldIn, playerIn, itemStackIn); entitypotion.setHeadingFromThrower(playerIn, playerIn.rotationPitch, playerIn.rotationYaw, -20.0F, 0.5F, 1.0F); worldIn.spawnEntityInWorld(entitypotion); } playerIn.addStat(StatList.getObjectUseStats(this)); return new ActionResult(EnumActionResult.SUCCESS, itemStackIn); }
public ActionResult<ItemStack> onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn, EnumHand hand) { if (!playerIn.capabilities.isCreativeMode) { --itemStackIn.stackSize; } worldIn.playSound((EntityPlayer)null, playerIn.posX, playerIn.posY, playerIn.posZ, SoundEvents.ENTITY_SPLASH_POTION_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!worldIn.isRemote) { EntityPotion entitypotion = new EntityPotion(worldIn, playerIn, itemStackIn); entitypotion.setHeadingFromThrower(playerIn, playerIn.rotationPitch, playerIn.rotationYaw, -20.0F, 0.5F, 1.0F); worldIn.spawnEntityInWorld(entitypotion); } playerIn.addStat(StatList.getObjectUseStats(this)); return new ActionResult(EnumActionResult.SUCCESS, itemStackIn); }
protected void attackWithPotion(EntityLivingBase target) { double targetY = target.posY + (double) target.getEyeHeight() - 1.100000023841858D; double targetX = target.posX + target.motionX - this.posX; double d2 = targetY - this.posY; double targetZ = target.posZ + target.motionZ - this.posZ; float f = MathHelper.sqrt(targetX * targetX + targetZ * targetZ); PotionType potiontype = PotionTypes.HARMING; if (f >= 8.0F && !target.isPotionActive(MobEffects.SLOWNESS)) { potiontype = PotionTypes.SLOWNESS; } else if (target.getHealth() >= 8.0F && !target.isPotionActive(MobEffects.POISON)) { potiontype = PotionTypes.POISON; } else if (f <= 3.0F && !target.isPotionActive(MobEffects.WEAKNESS) && this.rand.nextFloat() < 0.25F) { potiontype = PotionTypes.WEAKNESS; } EntityPotion entitypotion = new EntityPotion(this.world, this, PotionUtils.addPotionToItemStack(new ItemStack(Items.SPLASH_POTION), potiontype)); entitypotion.rotationPitch -= -20.0F; entitypotion.setThrowableHeading(targetX, d2 + (double) (f * 0.2F), targetZ, 0.75F, 8.0F); this.world.playSound((EntityPlayer) null, this.posX, this.posY, this.posZ, SoundEvents.ENTITY_WITCH_THROW, this.getSoundCategory(), 1.0F, 0.8F + this.rand.nextFloat() * 0.4F); this.world.spawnEntity(entitypotion); }
public static void applyPotionOnBlocks(EntityPotion entityPotion) { int range = 5; Map<BlockPos, TileEntity> teMap = entityPotion.world.getChunkFromBlockCoords(entityPotion.getPosition()).getTileEntityMap(); teMap.putAll(entityPotion.world.getChunkFromBlockCoords(new BlockPos(entityPotion.posX + range, entityPotion.posY, entityPotion.posZ)).getTileEntityMap()); teMap.putAll(entityPotion.world.getChunkFromBlockCoords(new BlockPos(entityPotion.posX - range, entityPotion.posY, entityPotion.posZ)).getTileEntityMap()); teMap.putAll(entityPotion.world.getChunkFromBlockCoords(new BlockPos(entityPotion.posX, entityPotion.posY, entityPotion.posZ + range)).getTileEntityMap()); teMap.putAll(entityPotion.world.getChunkFromBlockCoords(new BlockPos(entityPotion.posX, entityPotion.posY, entityPotion.posZ - range)).getTileEntityMap()); teMap.putAll(entityPotion.world.getChunkFromBlockCoords(new BlockPos(entityPotion.posX + range, entityPotion.posY, entityPotion.posZ + range)).getTileEntityMap()); teMap.putAll(entityPotion.world.getChunkFromBlockCoords(new BlockPos(entityPotion.posX + range, entityPotion.posY, entityPotion.posZ - range)).getTileEntityMap()); teMap.putAll(entityPotion.world.getChunkFromBlockCoords(new BlockPos(entityPotion.posX - range, entityPotion.posY, entityPotion.posZ + range)).getTileEntityMap()); teMap.putAll(entityPotion.world.getChunkFromBlockCoords(new BlockPos(entityPotion.posX - range, entityPotion.posY, entityPotion.posZ - range)).getTileEntityMap()); for (Map.Entry<BlockPos, TileEntity> teEntry : teMap.entrySet()) { if (teEntry != null && teEntry.getValue() instanceof TileEntityGraveStone && (teEntry.getKey().getX() >= entityPotion.posX - range && teEntry.getKey().getX() <= entityPotion.posX + range && teEntry.getKey().getZ() >= entityPotion.posZ - range && teEntry.getKey().getZ() <= entityPotion.posZ + range && teEntry.getKey().getY() >= entityPotion.posY - range && teEntry.getKey().getY() <= entityPotion.posY + range)) { ((TileEntityGraveStone) teEntry.getValue()).setPurified(true); } } }
private void doHeal(EntityLivingBase guy) { armSwing(!didSwing); // Swings arm and heals the specified person. EntityPotion potion = new EntityPotion(worldObj, this, handPotion().getItemDamage()); worldObj.spawnEntityInWorld(potion); // potion.onImpact(new MovingObjectPosition(guy)); try { final Method onImpact = ReflectionHelper.findMethod( EntityPotion.class, potion, MCP_ONIMPACT, MovingObjectPosition.class); onImpact.invoke(potion, new MovingObjectPosition(guy)); } catch (Exception e) { e.printStackTrace(); } setPathToEntity((PathEntity) null); healTime = 200; setRarePotion(rand.nextInt(4) == 0); }
/** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { if (isSplash(p_77659_1_.getItemDamage())) { if (!p_77659_3_.capabilities.isCreativeMode) { --p_77659_1_.stackSize; } p_77659_2_.playSoundAtEntity(p_77659_3_, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!p_77659_2_.isRemote) { p_77659_2_.spawnEntityInWorld(new EntityPotion(p_77659_2_, p_77659_3_, p_77659_1_)); } return p_77659_1_; } else { p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); return p_77659_1_; } }
/** * 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 (isSplash(par1ItemStack.getItemDamage())) { if (!par3EntityPlayer.capabilities.isCreativeMode) { --par1ItemStack.stackSize; } par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!par2World.isClient) { par2World.spawnEntityInWorld(new EntityPotion(par2World, par3EntityPlayer, par1ItemStack)); } return par1ItemStack; } else { par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack)); return par1ItemStack; } }
public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { if (isSplash(p_77659_1_.getItemDamage())) { if (!p_77659_3_.capabilities.isCreativeMode) { --p_77659_1_.stackSize; } p_77659_2_.playSoundAtEntity(p_77659_3_, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!p_77659_2_.isRemote) { p_77659_2_.spawnEntityInWorld(new EntityPotion(p_77659_2_, p_77659_3_, p_77659_1_)); } return p_77659_1_; } else { p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); return p_77659_1_; } }
public void func_82196_d(EntityLivingBase p_82196_1_, float p_82196_2_) { if(!this.func_82198_m()) { EntityPotion var3 = new EntityPotion(this.field_70170_p, this, 32732); var3.field_70125_A -= -20.0F; double var4 = p_82196_1_.field_70165_t + p_82196_1_.field_70159_w - this.field_70165_t; double var6 = p_82196_1_.field_70163_u + (double)p_82196_1_.func_70047_e() - 1.100000023841858D - this.field_70163_u; double var8 = p_82196_1_.field_70161_v + p_82196_1_.field_70179_y - this.field_70161_v; float var10 = MathHelper.func_76133_a(var4 * var4 + var8 * var8); if(var10 >= 8.0F && !p_82196_1_.func_70644_a(Potion.field_76421_d)) { var3.func_82340_a(32698); } else if(p_82196_1_.func_110143_aJ() >= 8.0F && !p_82196_1_.func_70644_a(Potion.field_76436_u)) { var3.func_82340_a(32660); } else if(var10 <= 3.0F && !p_82196_1_.func_70644_a(Potion.field_76437_t) && this.field_70146_Z.nextFloat() < 0.25F) { var3.func_82340_a(32696); } var3.func_70186_c(var4, var6 + (double)(var10 * 0.2F), var8, 0.75F, 8.0F); this.field_70170_p.func_72838_d(var3); } }
public ItemStack func_77659_a(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { if(func_77831_g(p_77659_1_.func_77960_j())) { if(!p_77659_3_.field_71075_bZ.field_75098_d) { --p_77659_1_.field_77994_a; } p_77659_2_.func_72956_a(p_77659_3_, "random.bow", 0.5F, 0.4F / (field_77697_d.nextFloat() * 0.4F + 0.8F)); if(!p_77659_2_.field_72995_K) { p_77659_2_.func_72838_d(new EntityPotion(p_77659_2_, p_77659_3_, p_77659_1_)); } return p_77659_1_; } else { p_77659_3_.func_71008_a(p_77659_1_, this.func_77626_a(p_77659_1_)); return p_77659_1_; } }
public void func_76986_a(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { Icon var10 = this.field_94151_a.func_77617_a(this.field_94150_f); if(var10 != null) { GL11.glPushMatrix(); GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); GL11.glEnable('\u803a'); GL11.glScalef(0.5F, 0.5F, 0.5F); this.func_110777_b(p_76986_1_); Tessellator var11 = Tessellator.field_78398_a; if(var10 == ItemPotion.func_94589_d("bottle_splash")) { int var12 = PotionHelper.func_77915_a(((EntityPotion)p_76986_1_).func_70196_i(), false); float var13 = (float)(var12 >> 16 & 255) / 255.0F; float var14 = (float)(var12 >> 8 & 255) / 255.0F; float var15 = (float)(var12 & 255) / 255.0F; GL11.glColor3f(var13, var14, var15); GL11.glPushMatrix(); this.func_77026_a(var11, ItemPotion.func_94589_d("overlay")); GL11.glPopMatrix(); GL11.glColor3f(1.0F, 1.0F, 1.0F); } this.func_77026_a(var11, var10); GL11.glDisable('\u803a'); GL11.glPopMatrix(); } }
/** * 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 (isSplash(par1ItemStack.getItemDamage())) { if (!par3EntityPlayer.capabilities.isCreativeMode) { --par1ItemStack.stackSize; } par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if (!par2World.isRemote) { par2World.spawnEntityInWorld(new EntityPotion(par2World, par3EntityPlayer, par1ItemStack)); } return par1ItemStack; } else { par3EntityPlayer.setItemInUse(par1ItemStack, this.getMaxItemUseDuration(par1ItemStack)); return par1ItemStack; } }
@Override public void attackEntityWithRangedAttack(EntityLivingBase entity, float rangeRatio) { //the EntityPotion class validates if this potion is throwable, and if not it logs error "ThrownPotion entity {} has no item?! if(attackTimer <= 0 && getHeldItem(EnumHand.MAIN_HAND).getItem() == Items.SPLASH_POTION && !isHealing) { attackedWithPotion = entity; double x = entity.posX + entity.motionX - posX; double y = entity.posY + entity.getEyeHeight() - 1.100000023841858D - posY; double z = entity.posZ + entity.motionZ - posZ; float groundDistance = MathHelper.sqrt(x * x + z * z); ItemStack potion = getHeldItem(EnumHand.MAIN_HAND); attackTimer = getHeldItem(EnumHand.MAIN_HAND).getMaxItemUseDuration(); EntityPotion entitypotion = new EntityPotion(world, this, potion); entitypotion.rotationPitch -= -20.0F; entitypotion.setThrowableHeading(x, y + groundDistance * 0.2F, z, 0.75F, 8.0F); world.spawnEntity(entitypotion); setItemStackToSlot(EntityEquipmentSlot.MAINHAND, ItemStack.EMPTY); } }
public void repulse(World world, int i, int j, int k) { float distance = 5.0F; Entity entity; Iterator iterator; List list = world.getEntitiesWithinAABB(EntityMob.class, AxisAlignedBB.getBoundingBox(i - distance, j - distance, k - distance, i + distance, j + distance, k + distance)); for (iterator = list.iterator(); iterator.hasNext(); push(entity, i, j, k)) { entity = (Entity)iterator.next(); } list = world.getEntitiesWithinAABB(EntityArrow.class, AxisAlignedBB.getBoundingBox(i - distance, j - distance, k - distance, i + distance, j + distance, k + distance)); for (iterator = list.iterator(); iterator.hasNext(); push(entity, i, j, k)) { entity = (Entity)iterator.next(); } list = world.getEntitiesWithinAABB(EntityFireball.class, AxisAlignedBB.getBoundingBox(i - distance, j - distance, k - distance, i + distance, j + distance, k + distance)); for (iterator = list.iterator(); iterator.hasNext(); push(entity, i, j, k)) { entity = (Entity)iterator.next(); } list = world.getEntitiesWithinAABB(EntityPotion.class, AxisAlignedBB.getBoundingBox(i - distance, j - distance, k - distance, i + distance, j + distance, k + distance)); for (iterator = list.iterator(); iterator.hasNext(); push(entity, i, j, k)) { entity = (Entity)iterator.next(); } }
@Override public void doRender(Entity par1, double par2, double par4, double par6, float par8, float par9) { GL11.glPushMatrix(); GL11.glTranslatef((float) par2, (float) par4, (float) par6); GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glScalef(0.5F, 0.5F, 0.5F); this.loadTexture(AmitReference.Sprites.ITEMS_PATH + "thorshammer.png"); Tessellator var10 = Tessellator.instance; if (this.iconIndex == 154) { int var11 = PotionHelper.func_77915_a(((EntityPotion) par1).getPotionDamage(), false); float var12 = (var11 >> 16 & 255) / 255.0F; float var13 = (var11 >> 8 & 255) / 255.0F; float var14 = (var11 & 255) / 255.0F; GL11.glColor3f(var12, var13, var14); GL11.glPushMatrix(); this.func_77026_a(var10, 141); GL11.glPopMatrix(); GL11.glColor3f(1.0F, 1.0F, 1.0F); } this.func_77026_a(var10, this.iconIndex); GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); }
/** * Destroys Witch Potions that are currently in the protected area * Only destroys the EntityPotion if it was thrown by an EntityWitch or derivatives * @param chunkBounds AxisAlignedBB in which block should act */ private void killPotions(AxisAlignedBB chunkBounds) { List<EntityPotion> list = world.getEntitiesWithinAABB(EntityPotion.class, chunkBounds); for (EntityPotion potion : list) { if (potion.getThrower() instanceof EntityWitch) { potion.setDead(); } } }
/** * Destroys Witch Potions that are currently in the protected area * Only destroys the EntityPotion if it was thrown by an EntityWitch or derivatives * @param areaBounds AxisAlignedBB in which block should act */ private void killPotions(AxisAlignedBB areaBounds) { List<EntityPotion> list = world.getEntitiesWithinAABB(EntityPotion.class, areaBounds); for (EntityPotion potion : list) { if (potion.getThrower() instanceof EntityWitch) { potion.setDead(); } } }
/** * Attack the specified entity using a ranged attack. */ public void attackEntityWithRangedAttack(EntityLivingBase p_82196_1_, float p_82196_2_) { if (!this.getAggressive()) { EntityPotion entitypotion = new EntityPotion(this.worldObj, this, 32732); double d0 = p_82196_1_.posY + (double)p_82196_1_.getEyeHeight() - 1.100000023841858D; entitypotion.rotationPitch -= -20.0F; double d1 = p_82196_1_.posX + p_82196_1_.motionX - this.posX; double d2 = d0 - this.posY; double d3 = p_82196_1_.posZ + p_82196_1_.motionZ - this.posZ; float f = MathHelper.sqrt_double(d1 * d1 + d3 * d3); if (f >= 8.0F && !p_82196_1_.isPotionActive(Potion.moveSlowdown)) { entitypotion.setPotionDamage(32698); } else if (p_82196_1_.getHealth() >= 8.0F && !p_82196_1_.isPotionActive(Potion.poison)) { entitypotion.setPotionDamage(32660); } else if (f <= 3.0F && !p_82196_1_.isPotionActive(Potion.weakness) && this.rand.nextFloat() < 0.25F) { entitypotion.setPotionDamage(32696); } entitypotion.setThrowableHeading(d1, d2 + (double)(f * 0.2F), d3, 0.75F, 8.0F); this.worldObj.spawnEntityInWorld(entitypotion); } }
/** * Attack the specified entity using a ranged attack. * * @param distanceFactor How far the target is, normalized and clamped between 0.1 and 1.0 */ public void attackEntityWithRangedAttack(EntityLivingBase target, float distanceFactor) { if (!this.isDrinkingPotion()) { double d0 = target.posY + (double)target.getEyeHeight() - 1.100000023841858D; double d1 = target.posX + target.motionX - this.posX; double d2 = d0 - this.posY; double d3 = target.posZ + target.motionZ - this.posZ; float f = MathHelper.sqrt(d1 * d1 + d3 * d3); PotionType potiontype = PotionTypes.HARMING; if (f >= 8.0F && !target.isPotionActive(MobEffects.SLOWNESS)) { potiontype = PotionTypes.SLOWNESS; } else if (target.getHealth() >= 8.0F && !target.isPotionActive(MobEffects.POISON)) { potiontype = PotionTypes.POISON; } else if (f <= 3.0F && !target.isPotionActive(MobEffects.WEAKNESS) && this.rand.nextFloat() < 0.25F) { potiontype = PotionTypes.WEAKNESS; } EntityPotion entitypotion = new EntityPotion(this.world, this, PotionUtils.addPotionToItemStack(new ItemStack(Items.SPLASH_POTION), potiontype)); entitypotion.rotationPitch -= -20.0F; entitypotion.setThrowableHeading(d1, d2 + (double)(f * 0.2F), d3, 0.75F, 8.0F); this.world.playSound((EntityPlayer)null, this.posX, this.posY, this.posZ, SoundEvents.ENTITY_WITCH_THROW, this.getSoundCategory(), 1.0F, 0.8F + this.rand.nextFloat() * 0.4F); this.world.spawnEntityInWorld(entitypotion); } }
/** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) { Icon icon = this.field_94151_a.getIconFromDamage(this.field_94150_f); if (icon != null) { GL11.glPushMatrix(); GL11.glTranslatef((float)par2, (float)par4, (float)par6); GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glScalef(0.5F, 0.5F, 0.5F); this.bindEntityTexture(par1Entity); Tessellator tessellator = Tessellator.instance; if (icon == ItemPotion.func_94589_d("bottle_splash")) { int i = PotionHelper.func_77915_a(((EntityPotion)par1Entity).getPotionDamage(), false); float f2 = (float)(i >> 16 & 255) / 255.0F; float f3 = (float)(i >> 8 & 255) / 255.0F; float f4 = (float)(i & 255) / 255.0F; GL11.glColor3f(f2, f3, f4); GL11.glPushMatrix(); this.func_77026_a(tessellator, ItemPotion.func_94589_d("overlay")); GL11.glPopMatrix(); GL11.glColor3f(1.0F, 1.0F, 1.0F); } this.func_77026_a(tessellator, icon); GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } }
/** * Attack the specified entity using a ranged attack. * * @param distanceFactor How far the target is, normalized and clamped between 0.1 and 1.0 */ public void attackEntityWithRangedAttack(EntityLivingBase target, float distanceFactor) { if (!this.isDrinkingPotion()) { double d0 = target.posY + (double)target.getEyeHeight() - 1.100000023841858D; double d1 = target.posX + target.motionX - this.posX; double d2 = d0 - this.posY; double d3 = target.posZ + target.motionZ - this.posZ; float f = MathHelper.sqrt_double(d1 * d1 + d3 * d3); PotionType potiontype = PotionTypes.HARMING; if (f >= 8.0F && !target.isPotionActive(MobEffects.SLOWNESS)) { potiontype = PotionTypes.SLOWNESS; } else if (target.getHealth() >= 8.0F && !target.isPotionActive(MobEffects.POISON)) { potiontype = PotionTypes.POISON; } else if (f <= 3.0F && !target.isPotionActive(MobEffects.WEAKNESS) && this.rand.nextFloat() < 0.25F) { potiontype = PotionTypes.WEAKNESS; } EntityPotion entitypotion = new EntityPotion(this.worldObj, this, PotionUtils.addPotionToItemStack(new ItemStack(Items.SPLASH_POTION), potiontype)); entitypotion.rotationPitch -= -20.0F; entitypotion.setThrowableHeading(d1, d2 + (double)(f * 0.2F), d3, 0.75F, 8.0F); this.worldObj.playSound((EntityPlayer)null, this.posX, this.posY, this.posZ, SoundEvents.ENTITY_WITCH_THROW, this.getSoundCategory(), 1.0F, 0.8F + this.rand.nextFloat() * 0.4F); this.worldObj.spawnEntityInWorld(entitypotion); } }
@SubscribeEvent(priority = EventPriority.HIGH) public void onProjectileImpact(ProjectileImpactEvent.Throwable event) { if (FMLCommonHandler.instance().getEffectiveSide().isServer()) { if (event.getThrowable() instanceof EntityPotion) { EntityPotion entityPotion = (EntityPotion) event.getThrowable(); PotionType potionType = PotionUtils.getPotionFromItem(entityPotion.getPotion()); if (potionType == GSPotion.PURIFICATION_TYPE) { PotionPurification.applyPotionOnBlocks(entityPotion); } } } }
/** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void func_76986_a(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { IIcon iicon = this.field_94151_a.getIconFromDamage(this.field_94150_f); if (iicon != null) { GL11.glPushMatrix(); GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glScalef(0.5F, 0.5F, 0.5F); this.bindEntityTexture(p_76986_1_); Tessellator tessellator = Tessellator.instance; if (iicon == ItemPotion.func_94589_d("bottle_splash")) { int i = PotionHelper.func_77915_a(((EntityPotion)p_76986_1_).getPotionDamage(), false); float f2 = (float)(i >> 16 & 255) / 255.0F; float f3 = (float)(i >> 8 & 255) / 255.0F; float f4 = (float)(i & 255) / 255.0F; GL11.glColor3f(f2, f3, f4); GL11.glPushMatrix(); this.func_77026_a(tessellator, ItemPotion.func_94589_d("overlay")); GL11.glPopMatrix(); GL11.glColor3f(1.0F, 1.0F, 1.0F); } this.func_77026_a(tessellator, iicon); GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } }
private void spawnLingeringPotion(EntityPlayer player, PotionType ptype) { World world = player.getEntityWorld(); ItemStack potion = PotionUtils.addPotionToItemStack(new ItemStack(Items.SPLASH_POTION), ptype); EntityPotion entitypotion = new EntityPotion(world, player, potion); entitypotion.setHeadingFromThrower(player, player.rotationPitch - 20, player.rotationYaw, 0, 1.6F, 0.5F); if (world.isRemote == false) { world.spawnEntity(entitypotion); } }
/** * Attack the specified entity using a ranged attack. */ public void attackEntityWithRangedAttack(EntityLivingBase par1EntityLivingBase, float par2) { if (!this.getAggressive()) { EntityPotion var3 = new EntityPotion(this.worldObj, this, 32732); var3.rotationPitch -= -20.0F; double var4 = par1EntityLivingBase.posX + par1EntityLivingBase.motionX - this.posX; double var6 = par1EntityLivingBase.posY + (double)par1EntityLivingBase.getEyeHeight() - 1.100000023841858D - this.posY; double var8 = par1EntityLivingBase.posZ + par1EntityLivingBase.motionZ - this.posZ; float var10 = MathHelper.sqrt_double(var4 * var4 + var8 * var8); if (var10 >= 8.0F && !par1EntityLivingBase.isPotionActive(Potion.moveSlowdown)) { var3.setPotionDamage(32698); } else if (par1EntityLivingBase.getHealth() >= 8.0F && !par1EntityLivingBase.isPotionActive(Potion.poison)) { var3.setPotionDamage(32660); } else if (var10 <= 3.0F && !par1EntityLivingBase.isPotionActive(Potion.weakness) && this.rand.nextFloat() < 0.25F) { var3.setPotionDamage(32696); } var3.setThrowableHeading(var4, var6 + (double)(var10 * 0.2F), var8, 0.75F, 8.0F); this.worldObj.spawnEntityInWorld(var3); } }
/** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) { IIcon var10 = this.field_94151_a.getIconFromDamage(this.field_94150_f); if (var10 != null) { GL11.glPushMatrix(); GL11.glTranslatef((float)par2, (float)par4, (float)par6); GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glScalef(0.5F, 0.5F, 0.5F); this.bindEntityTexture(par1Entity); Tessellator var11 = Tessellator.instance; if (var10 == ItemPotion.func_94589_d("bottle_splash")) { int var12 = PotionHelper.func_77915_a(((EntityPotion)par1Entity).getPotionDamage(), false); float var13 = (float)(var12 >> 16 & 255) / 255.0F; float var14 = (float)(var12 >> 8 & 255) / 255.0F; float var15 = (float)(var12 & 255) / 255.0F; GL11.glColor3f(var13, var14, var15); GL11.glPushMatrix(); this.func_77026_a(var11, ItemPotion.func_94589_d("overlay")); GL11.glPopMatrix(); GL11.glColor3f(1.0F, 1.0F, 1.0F); } this.func_77026_a(var11, var10); GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } }
/** * Actually renders the given argument. This is a synthetic bridge method, always casting down its argument and then * handing it off to a worker function which does the actual work. In all probabilty, the class Render is generic * (Render<T extends Entity) and this method has signature public void doRender(T entity, double d, double d1, * double d2, float f, float f1). But JAD is pre 1.5 so doesn't do that. */ public void doRender(Entity bomb, double x, double y, double z, float pitch, float yaw) { Icon icon = null; if(bomb instanceof IBomb) { icon = ((IBomb)bomb).getIcon(); } if (icon != null) { GL11.glPushMatrix(); GL11.glTranslatef((float)x, (float)y, (float)z); GL11.glEnable(GL12.GL_RESCALE_NORMAL); GL11.glScalef(0.5F, 0.5F, 0.5F); this.bindTexture(TextureMap.locationItemsTexture); Tessellator tessellator = Tessellator.instance; if (icon == ItemPotion.func_94589_d("potion_splash")) { int i = PotionHelper.func_77915_a(((EntityPotion)bomb).getPotionDamage(), false); float f2 = (float)(i >> 16 & 255) / 255.0F; float f3 = (float)(i >> 8 & 255) / 255.0F; float f4 = (float)(i & 255) / 255.0F; GL11.glColor3f(f2, f3, f4); GL11.glPushMatrix(); this.func_77026_a(tessellator, ItemPotion.func_94589_d("potion_contents")); GL11.glPopMatrix(); GL11.glColor3f(1.0F, 1.0F, 1.0F); } this.func_77026_a(tessellator, icon); GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glPopMatrix(); } }