Java 类net.minecraft.potion.PotionUtils 实例源码

项目:pnc-repressurized    文件:Minigun.java   
public boolean tryFireMinigun(EntityLivingBase target) {
    boolean lastShotOfAmmo = false;
    if (!ammo.isEmpty() && (pressurizable == null || pressurizable.getPressure(stack) > 0)) {
        setMinigunTriggerTimeOut(Math.max(10, getMinigunSoundCounter()));
        if (getMinigunSpeed() == MAX_GUN_SPEED && (!requiresTarget || gunAimedAtTarget)) {
            if (!requiresTarget) target = raytraceTarget();
            lastShotOfAmmo = ammo.attemptDamageItem(1, rand, player instanceof EntityPlayerMP ? (EntityPlayerMP) player : null);
            if (pressurizable != null) pressurizable.addAir(stack, -airUsage);
            if (target != null) {
                ItemStack potion = ItemGunAmmo.getPotion(ammo);
                if (!potion.isEmpty()) {
                    if (rand.nextInt(20) == 0) {
                        List<PotionEffect> effects = PotionUtils.getEffectsFromStack(potion);
                        for (PotionEffect effect : effects) {
                            target.addPotionEffect(new PotionEffect(effect));
                        }
                    }
                } else {
                    target.attackEntityFrom(DamageSource.causePlayerDamage(player), ConfigHandler.general.configMinigunDamage);
                }
            }
        }
    }
    return lastShotOfAmmo;
}
项目:Bewitchment    文件:BrewUtils.java   
public static Tuple<List<BrewEffect>, List<PotionEffect>> deSerialize(NBTTagCompound compound) {
    List<PotionEffect> potionEffects = PotionUtils.getEffectsFromTag(compound);
    List<BrewEffect> brewEffects = new ArrayList<>();
    Tuple<List<BrewEffect>, List<PotionEffect>> tuple = new Tuple<>(brewEffects, potionEffects);

    NBTTagList list = (NBTTagList) compound.getTag(BREW_DATA);
    for (int i = 0, size = list.tagCount(); i < size; i++) {
        NBTTagCompound tag = list.getCompoundTagAt(i);
        IBrew brew = BrewRegistry.getRegisteredBrew(tag.getString(BREW_ID));
        int duration = tag.getInteger(BREW_DURATION);
        int amplifier = tag.getInteger(BREW_AMPLIFIER);
        brewEffects.add(new BrewEffect(brew, duration, amplifier));
    }

    return tuple;
}
项目:Bewitchment    文件:ItemBrewDrink.java   
@Override
public ItemStack onItemUseFinish(ItemStack stack, World world, EntityLivingBase entity) {
    EntityPlayer entityplayer = entity instanceof EntityPlayer ? (EntityPlayer) entity : null;
    if (!world.isRemote) {
        for (BrewEffect effect : BrewUtils.getBrewsFromStack(stack)) {
            BrewStorageHandler.addEntityBrewEffect(entity, effect);
        }

        for (PotionEffect potioneffect : PotionUtils.getEffectsFromStack(stack)) {
            entity.addPotionEffect(new PotionEffect(potioneffect));
        }
    }

    if (entityplayer == null || !entityplayer.capabilities.isCreativeMode) {
        stack.shrink(1);
        if (stack.getCount() <= 0) {
            return new ItemStack(Items.GLASS_BOTTLE);
        }

        if (entityplayer != null) {
            entityplayer.inventory.addItemStackToInventory(new ItemStack(Items.GLASS_BOTTLE));
        }
    }
    return stack;
}
项目:Thermionics    文件:ItemSpiritBottle.java   
/**
 * Applies all effects in the bottle to the entity; if the bottle has both a potion and a spirit, both are applied.
 */
public void apply(ItemStack bottle, EntityLivingBase entity) {
    if (entity.world.isRemote) return;
    Spirit spirit = getSpirit(bottle);
    if (spirit!=null) {

        if (spirit.isAlcoholic()) {
            PotionEffect effect = entity.getActivePotionEffect(Thermionics.POTION_TIPSY);
            int curStrength = 0;
            if (effect!=null) {
                curStrength = effect.getAmplifier();
            }

            entity.removeActivePotionEffect(Thermionics.POTION_TIPSY);
            entity.addPotionEffect( new PotionEffect(Thermionics.POTION_TIPSY, 20*30, curStrength+1));
        }
    }

    for (PotionEffect potion : PotionUtils.getEffectsFromStack(bottle)) {
        if (potion.getPotion().isInstant()) {
               potion.getPotion().affectEntity(entity, entity, entity, potion.getAmplifier(), 1.0D);
           } else {
               entity.addPotionEffect(new PotionEffect(potion));
           }
    }
}
项目:Backmemed    文件:EntityExpBottle.java   
/**
 * Called when this EntityThrowable hits a block or entity.
 */
protected void onImpact(RayTraceResult result)
{
    if (!this.world.isRemote)
    {
        this.world.playEvent(2002, new BlockPos(this), PotionUtils.getPotionColor(PotionTypes.WATER));
        int i = 3 + this.world.rand.nextInt(5) + this.world.rand.nextInt(5);

        while (i > 0)
        {
            int j = EntityXPOrb.getXPSplit(i);
            i -= j;
            this.world.spawnEntityInWorld(new EntityXPOrb(this.world, this.posX, this.posY, this.posZ, j));
        }

        this.setDead();
    }
}
项目:Backmemed    文件:EntityLivingBase.java   
/**
 * Clears potion metadata values if the entity has no potion effects. Otherwise, updates potion effect color,
 * ambience, and invisibility metadata values
 */
protected void updatePotionMetadata()
{
    if (this.activePotionsMap.isEmpty())
    {
        this.resetPotionEffectMetadata();
        this.setInvisible(false);
    }
    else
    {
        Collection<PotionEffect> collection = this.activePotionsMap.values();
        this.dataManager.set(HIDE_PARTICLES, Boolean.valueOf(areAllPotionsAmbient(collection)));
        this.dataManager.set(POTION_EFFECTS, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(collection)));
        this.setInvisible(this.isPotionActive(MobEffects.INVISIBILITY));
    }
}
项目:Backmemed    文件:EntityPotion.java   
private void func_190542_a(ItemStack p_190542_1_, PotionType p_190542_2_)
{
    EntityAreaEffectCloud entityareaeffectcloud = new EntityAreaEffectCloud(this.world, this.posX, this.posY, this.posZ);
    entityareaeffectcloud.setOwner(this.getThrower());
    entityareaeffectcloud.setRadius(3.0F);
    entityareaeffectcloud.setRadiusOnUse(-0.5F);
    entityareaeffectcloud.setWaitTime(10);
    entityareaeffectcloud.setRadiusPerTick(-entityareaeffectcloud.getRadius() / (float)entityareaeffectcloud.getDuration());
    entityareaeffectcloud.setPotion(p_190542_2_);

    for (PotionEffect potioneffect : PotionUtils.getFullEffectsFromItem(p_190542_1_))
    {
        entityareaeffectcloud.addEffect(new PotionEffect(potioneffect));
    }

    NBTTagCompound nbttagcompound = p_190542_1_.getTagCompound();

    if (nbttagcompound != null && nbttagcompound.hasKey("CustomPotionColor", 99))
    {
        entityareaeffectcloud.setColor(nbttagcompound.getInteger("CustomPotionColor"));
    }

    this.world.spawnEntityInWorld(entityareaeffectcloud);
}
项目:Backmemed    文件:EntityTippedArrow.java   
/**
 * (abstract) Protected helper method to read subclass entity data from NBT.
 */
public void readEntityFromNBT(NBTTagCompound compound)
{
    super.readEntityFromNBT(compound);

    if (compound.hasKey("Potion", 8))
    {
        this.potion = PotionUtils.getPotionTypeFromNBT(compound);
    }

    for (PotionEffect potioneffect : PotionUtils.getFullEffectsFromTag(compound))
    {
        this.addEffect(potioneffect);
    }

    if (compound.hasKey("Color", 99))
    {
        this.func_191507_d(compound.getInteger("Color"));
    }
    else
    {
        this.func_190548_o();
    }
}
项目:Backmemed    文件:RecipeTippedArrow.java   
/**
 * Returns an Item that is the result of this recipe
 */
public ItemStack getCraftingResult(InventoryCrafting inv)
{
    ItemStack itemstack = inv.getStackInRowAndColumn(1, 1);

    if (itemstack.getItem() != Items.LINGERING_POTION)
    {
        return ItemStack.field_190927_a;
    }
    else
    {
        ItemStack itemstack1 = new ItemStack(Items.TIPPED_ARROW, 8);
        PotionUtils.addPotionToItemStack(itemstack1, PotionUtils.getPotionFromItem(itemstack));
        PotionUtils.appendEffects(itemstack1, PotionUtils.getFullEffectsFromItem(itemstack));
        return itemstack1;
    }
}
项目:CombinedPotions    文件:RecipeCombinedPotions2.java   
@Override
public ItemStack getCraftingResult(InventoryCrafting inv)
{
    ItemStack outputStack = ItemStack.EMPTY;
    if (countSlotsNotEmpty(inv) <= 1) return outputStack;

    Collection<PotionEffect> effects = new ArrayList<PotionEffect>();

    for (int i = 0; i < inv.getSizeInventory(); i++)
    {
        ItemStack stack = inv.getStackInSlot(i);
        if (!stack.isEmpty())
        {
            if (outputStack.isEmpty()) outputStack = getOutputStack(stack);
            if (outputStack.isEmpty()) return outputStack;

            effects.addAll(getEffectsFromStack(stack));
        }
    }

    outputStack = PotionUtils.appendEffects(outputStack, effects);
    outputStack.setStackDisplayName(I18n.translateToLocal("item.combined_" + outputStack.getItem().getUnlocalizedName().substring(5) + ".name"));

    return outputStack;
}
项目:CustomWorldGen    文件:EntityLivingBase.java   
/**
 * Clears potion metadata values if the entity has no potion effects. Otherwise, updates potion effect color,
 * ambience, and invisibility metadata values
 */
protected void updatePotionMetadata()
{
    if (this.activePotionsMap.isEmpty())
    {
        this.resetPotionEffectMetadata();
        this.setInvisible(false);
    }
    else
    {
        Collection<PotionEffect> collection = this.activePotionsMap.values();
        this.dataManager.set(HIDE_PARTICLES, Boolean.valueOf(areAllPotionsAmbient(collection)));
        this.dataManager.set(POTION_EFFECTS, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(collection)));
        this.setInvisible(this.isPotionActive(MobEffects.INVISIBILITY));
    }
}
项目:CustomWorldGen    文件:EntityTippedArrow.java   
public void setPotionEffect(ItemStack stack)
{
    if (stack.getItem() == Items.TIPPED_ARROW)
    {
        this.potion = PotionUtils.getPotionTypeFromNBT(stack.getTagCompound());
        Collection<PotionEffect> collection = PotionUtils.getFullEffectsFromItem(stack);

        if (!collection.isEmpty())
        {
            for (PotionEffect potioneffect : collection)
            {
                this.customPotionEffects.add(new PotionEffect(potioneffect));
            }
        }

        this.dataManager.set(COLOR, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(PotionUtils.mergeEffects(this.potion, collection))));
    }
    else if (stack.getItem() == Items.ARROW)
    {
        this.potion = PotionTypes.EMPTY;
        this.customPotionEffects.clear();
        this.dataManager.set(COLOR, Integer.valueOf(0));
    }
}
项目:CustomWorldGen    文件:EntityTippedArrow.java   
/**
 * (abstract) Protected helper method to read subclass entity data from NBT.
 */
public void readEntityFromNBT(NBTTagCompound compound)
{
    super.readEntityFromNBT(compound);

    if (compound.hasKey("Potion", 8))
    {
        this.potion = PotionUtils.getPotionTypeFromNBT(compound);
    }

    for (PotionEffect potioneffect : PotionUtils.getFullEffectsFromTag(compound))
    {
        this.addEffect(potioneffect);
    }

    if (this.potion != PotionTypes.EMPTY || !this.customPotionEffects.isEmpty())
    {
        this.dataManager.set(COLOR, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(PotionUtils.mergeEffects(this.potion, this.customPotionEffects))));
    }
}
项目:CustomWorldGen    文件:EntityAreaEffectCloud.java   
public void setPotion(PotionType potionIn)
{
    this.potion = potionIn;

    if (!this.colorSet)
    {
        if (potionIn == PotionTypes.EMPTY && this.effects.isEmpty())
        {
            this.getDataManager().set(COLOR, Integer.valueOf(0));
        }
        else
        {
            this.getDataManager().set(COLOR, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(PotionUtils.mergeEffects(potionIn, this.effects))));
        }
    }
}
项目:CustomWorldGen    文件:RecipeTippedArrow.java   
/**
 * Returns an Item that is the result of this recipe
 */
@Nullable
public ItemStack getCraftingResult(InventoryCrafting inv)
{
    ItemStack itemstack = inv.getStackInRowAndColumn(1, 1);

    if (itemstack != null && itemstack.getItem() == Items.LINGERING_POTION)
    {
        ItemStack itemstack1 = new ItemStack(Items.TIPPED_ARROW, 8);
        PotionUtils.addPotionToItemStack(itemstack1, PotionUtils.getPotionFromItem(itemstack));
        PotionUtils.appendEffects(itemstack1, PotionUtils.getFullEffectsFromItem(itemstack));
        return itemstack1;
    }
    else
    {
        return null;
    }
}
项目:BetterWithAddons    文件:EntityAncestryBottle.java   
@Override
protected void onImpact(RayTraceResult result)
{
    if (!this.world.isRemote)
    {
        this.world.playEvent(2002, new BlockPos(this), PotionUtils.getPotionColor(PotionTypes.HEALING));
        int i = InteractionEriottoMod.SPIRIT_PER_BOTTLE;

        while (i > 0)
        {
            int j = EntitySpirit.getSpiritSplit(i);
            i -= j;
            this.world.spawnEntity(new EntitySpirit(this.world, this.posX, this.posY, this.posZ, j));
        }

        this.setDead();
    }
}
项目:CrystalMod    文件:EventHandler.java   
@SubscribeEvent
public void finishUse(LivingEntityUseItemEvent.Finish event){
    EntityLivingBase entity = event.getEntityLiving();
    ItemStack stack = event.getItem();

    if(entity.isInsideOfMaterial(Material.WATER)){
        if(ItemStackTools.isValid(stack) && stack.getItem() == Items.GLASS_BOTTLE){
            //Restore to full air
            entity.setAir(300);
            ItemStack waterbottle = PotionUtils.addPotionToItemStack(new ItemStack(Items.POTIONITEM), PotionTypes.WATER);
            if(ItemStackTools.getStackSize(stack) > 1){
            event.setResultStack(ItemUtil.consumeItem(stack));
            if(entity instanceof EntityPlayer){
                if(!((EntityPlayer)entity).inventory.addItemStackToInventory(waterbottle)){
                    ItemUtil.spawnItemInWorldWithoutMotion(entity.getEntityWorld(), waterbottle, new BlockPos(entity));
                }
            } else {
                ItemUtil.spawnItemInWorldWithoutMotion(entity.getEntityWorld(), waterbottle, new BlockPos(entity));
            }
            } else {
                event.setResultStack(waterbottle);
            }
        }
    }
}
项目:CrystalMod    文件:EntityDart.java   
protected ItemStack getArrowStack()
{
    ItemStack dart = new ItemStack(ModItems.dart, 1, getType().getMetadata());
    if(potion !=PotionTypes.EMPTY){
        PotionUtils.addPotionToItemStack(dart, this.potion);
        PotionUtils.appendEffects(dart, this.customPotionEffects);

        if (this.hasColor)
        {
            NBTTagCompound nbttagcompound = dart.getTagCompound();

            if (nbttagcompound == null)
            {
                nbttagcompound = new NBTTagCompound();
                dart.setTagCompound(nbttagcompound);
            }

            nbttagcompound.setInteger("CustomPotionColor", this.getColor());
        }
    }
    return dart;
}
项目:ToroQuest    文件:EntityMage.java   
protected void handleAttackLogicUpdate() {
    PotionType potiontype = null;

    if (this.rand.nextFloat() < 0.15F && this.isInsideOfMaterial(Material.WATER) && !this.isPotionActive(MobEffects.WATER_BREATHING)) {
        potiontype = PotionTypes.WATER_BREATHING;
    } else if (this.rand.nextFloat() < 0.15F && this.isBurning() && !this.isPotionActive(MobEffects.FIRE_RESISTANCE)) {
        potiontype = PotionTypes.FIRE_RESISTANCE;
    } else if (this.rand.nextFloat() < 0.05F && this.getHealth() < this.getMaxHealth()) {
        potiontype = PotionTypes.HEALING;
    } else if (this.rand.nextFloat() < 0.5F && this.getAttackTarget() != null && !this.isPotionActive(MobEffects.SPEED)
            && this.getAttackTarget().getDistanceSqToEntity(this) > 121.0D) {
        potiontype = PotionTypes.SWIFTNESS;
    }

    if (potiontype != null) {
        this.world.playSound((EntityPlayer) null, this.posX, this.posY, this.posZ, SoundEvents.ENTITY_WITCH_DRINK, this.getSoundCategory(), 1.0F,
                0.8F + this.rand.nextFloat() * 0.4F);
        this.setItemStackToSlot(EntityEquipmentSlot.OFFHAND, PotionUtils.addPotionToItemStack(new ItemStack(Items.POTIONITEM), potiontype));
        this.attackTimer = 10;
        this.setAggressive(true);
        IAttributeInstance iattributeinstance = this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED);
        iattributeinstance.removeModifier(MODIFIER);
        iattributeinstance.applyModifier(MODIFIER);
    }
}
项目:ToroQuest    文件:EntityMage.java   
protected void handleDrinkingPotionUpdate() {
    if (this.attackTimer-- <= 0) {
        this.world.playSound((EntityPlayer) null, this.posX, this.posY, this.posZ, SoundEvents.ENTITY_WITCH_DRINK, this.getSoundCategory(), 1.0F,
                0.8F + this.rand.nextFloat() * 0.4F);
        this.setAggressive(false);
        ItemStack itemstack = this.getHeldItemOffhand();
        this.setItemStackToSlot(EntityEquipmentSlot.OFFHAND, ItemStack.EMPTY);

        if (itemstack != null && itemstack.getItem() == Items.POTIONITEM) {
            List<PotionEffect> list = PotionUtils.getEffectsFromStack(itemstack);

            if (list != null) {
                for (PotionEffect potioneffect : list) {
                    this.addPotionEffect(new PotionEffect(potioneffect));
                }
            }
        }

        this.getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).removeModifier(MODIFIER);
    }
}
项目:ToroQuest    文件:EntityMage.java   
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);
}
项目:SeasonsAPI    文件:SeasonPotion.java   
private static void registerUpgrades(PotionType normal, PotionType extended, PotionType strong) {
    BrewingRecipeRegistry.addRecipe(createBrewingRecipe(normal, new ItemStack(Items.REDSTONE), extended));
    BrewingRecipeRegistry.addRecipe(createBrewingRecipe(strong, new ItemStack(Items.REDSTONE), extended));
    BrewingRecipeRegistry.addRecipe(createBrewingRecipe(normal, new ItemStack(Items.GLOWSTONE_DUST), strong));      
    BrewingRecipeRegistry.addRecipe(createBrewingRecipe(extended, new ItemStack(Items.GLOWSTONE_DUST), strong));    
    BrewingRecipeRegistry.addRecipe(createSplashBrewingRecipe(normal, new ItemStack(Items.REDSTONE), extended));
    BrewingRecipeRegistry.addRecipe(createSplashBrewingRecipe(strong, new ItemStack(Items.REDSTONE), extended));
    BrewingRecipeRegistry.addRecipe(createSplashBrewingRecipe(normal, new ItemStack(Items.GLOWSTONE_DUST), strong));        
    BrewingRecipeRegistry.addRecipe(createSplashBrewingRecipe(extended, new ItemStack(Items.GLOWSTONE_DUST), strong));  
    BrewingRecipeRegistry.addRecipe(createLingeringBrewingRecipe(normal, new ItemStack(Items.REDSTONE), extended));
    BrewingRecipeRegistry.addRecipe(createLingeringBrewingRecipe(strong, new ItemStack(Items.REDSTONE), extended));
    BrewingRecipeRegistry.addRecipe(createLingeringBrewingRecipe(normal, new ItemStack(Items.GLOWSTONE_DUST), strong)); 
    BrewingRecipeRegistry.addRecipe(createLingeringBrewingRecipe(extended, new ItemStack(Items.GLOWSTONE_DUST), strong));   
    BrewingRecipeRegistry.addRecipe(new BrewingRecipe(PotionUtils.addPotionToItemStack(new ItemStack(Items.POTIONITEM), normal), new ItemStack(Items.GUNPOWDER), (PotionUtils.addPotionToItemStack(new ItemStack(Items.SPLASH_POTION), normal))));
    BrewingRecipeRegistry.addRecipe(new BrewingRecipe(PotionUtils.addPotionToItemStack(new ItemStack(Items.SPLASH_POTION), normal), new ItemStack(Items.DRAGON_BREATH), (PotionUtils.addPotionToItemStack(new ItemStack(Items.LINGERING_POTION), normal))));
}
项目:UncraftingTable    文件:NBTSensitiveRecipeHandlers.java   
@Override
public NonNullList<ItemStack> getCraftingGrid(IRecipe r)
{
    NonNullList<ItemStack> recipeItems = NonNullList.<ItemStack>create();

    for ( int i = 0 ; i < 9 ; i++ )
    {
        if (i != 4)
        {
            recipeItems.add(new ItemStack(Items.ARROW, 1));
        }
        else
        {
            ItemStack stack = new ItemStack(Items.LINGERING_POTION, 1);
            PotionUtils.addPotionToItemStack(stack, PotionUtils.getPotionFromItem(inputStack));
            PotionUtils.appendEffects(stack, PotionUtils.getFullEffectsFromItem(inputStack));
            recipeItems.add(stack);
        }
    }

    return recipeItems;
}
项目:ARKCraft    文件:EntityArkArrow.java   
public void setPotionEffect(ItemStack stack)
{
    if (stack.getItem() == Items.TIPPED_ARROW)
    {
        this.potion = PotionUtils.getPotionTypeFromNBT(stack.getTagCompound());
        Collection<PotionEffect> collection = PotionUtils.getFullEffectsFromItem(stack);

        if (!collection.isEmpty())
        {
            for (PotionEffect potioneffect : collection)
            {
                this.customPotionEffects.add(new PotionEffect(potioneffect));
            }
        }

        this.dataManager.set(COLOR, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(PotionUtils.mergeEffects(this.potion, collection))));
    }
    else if (stack.getItem() == Items.ARROW)
    {
        this.potion = PotionTypes.EMPTY;
        this.customPotionEffects.clear();
        this.dataManager.set(COLOR, Integer.valueOf(0));
    }
}
项目:ARKCraft    文件:EntityArkArrow.java   
/**
 * (abstract) Protected helper method to read subclass entity data from NBT.
 */
public void readEntityFromNBT(NBTTagCompound compound)
{
    super.readEntityFromNBT(compound);

    if (compound.hasKey("Potion", 8))
    {
        this.potion = PotionUtils.getPotionTypeFromNBT(compound);
    }

    for (PotionEffect potioneffect : PotionUtils.getFullEffectsFromTag(compound))
    {
        this.addEffect(potioneffect);
    }

    if (this.potion != PotionTypes.EMPTY || !this.customPotionEffects.isEmpty())
    {
        this.dataManager.set(COLOR, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(PotionUtils.mergeEffects(this.potion, this.customPotionEffects))));
    }
}
项目:ExpandedRailsMod    文件:EntityLivingBase.java   
/**
 * Clears potion metadata values if the entity has no potion effects. Otherwise, updates potion effect color,
 * ambience, and invisibility metadata values
 */
protected void updatePotionMetadata()
{
    if (this.activePotionsMap.isEmpty())
    {
        this.resetPotionEffectMetadata();
        this.setInvisible(false);
    }
    else
    {
        Collection<PotionEffect> collection = this.activePotionsMap.values();
        this.dataManager.set(HIDE_PARTICLES, Boolean.valueOf(areAllPotionsAmbient(collection)));
        this.dataManager.set(POTION_EFFECTS, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(collection)));
        this.setInvisible(this.isPotionActive(MobEffects.INVISIBILITY));
    }
}
项目:ExpandedRailsMod    文件:EntityTippedArrow.java   
public void setPotionEffect(ItemStack stack)
{
    if (stack.getItem() == Items.TIPPED_ARROW)
    {
        this.potion = PotionUtils.getPotionTypeFromNBT(stack.getTagCompound());
        Collection<PotionEffect> collection = PotionUtils.getFullEffectsFromItem(stack);

        if (!collection.isEmpty())
        {
            for (PotionEffect potioneffect : collection)
            {
                this.customPotionEffects.add(new PotionEffect(potioneffect));
            }
        }

        this.dataManager.set(COLOR, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(PotionUtils.mergeEffects(this.potion, collection))));
    }
    else if (stack.getItem() == Items.ARROW)
    {
        this.potion = PotionTypes.EMPTY;
        this.customPotionEffects.clear();
        this.dataManager.set(COLOR, Integer.valueOf(0));
    }
}
项目:ExpandedRailsMod    文件:EntityTippedArrow.java   
/**
 * (abstract) Protected helper method to read subclass entity data from NBT.
 */
public void readEntityFromNBT(NBTTagCompound compound)
{
    super.readEntityFromNBT(compound);

    if (compound.hasKey("Potion", 8))
    {
        this.potion = PotionUtils.getPotionTypeFromNBT(compound);
    }

    for (PotionEffect potioneffect : PotionUtils.getFullEffectsFromTag(compound))
    {
        this.addEffect(potioneffect);
    }

    if (this.potion != PotionTypes.EMPTY || !this.customPotionEffects.isEmpty())
    {
        this.dataManager.set(COLOR, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(PotionUtils.mergeEffects(this.potion, this.customPotionEffects))));
    }
}
项目:ExpandedRailsMod    文件:EntityAreaEffectCloud.java   
public void setPotion(PotionType potionIn)
{
    this.potion = potionIn;

    if (!this.colorSet)
    {
        if (potionIn == PotionTypes.EMPTY && this.effects.isEmpty())
        {
            this.getDataManager().set(COLOR, Integer.valueOf(0));
        }
        else
        {
            this.getDataManager().set(COLOR, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(PotionUtils.mergeEffects(potionIn, this.effects))));
        }
    }
}
项目:ExpandedRailsMod    文件:RecipeTippedArrow.java   
/**
 * Returns an Item that is the result of this recipe
 */
@Nullable
public ItemStack getCraftingResult(InventoryCrafting inv)
{
    ItemStack itemstack = inv.getStackInRowAndColumn(1, 1);

    if (itemstack != null && itemstack.getItem() == Items.LINGERING_POTION)
    {
        ItemStack itemstack1 = new ItemStack(Items.TIPPED_ARROW, 8);
        PotionUtils.addPotionToItemStack(itemstack1, PotionUtils.getPotionFromItem(itemstack));
        PotionUtils.appendEffects(itemstack1, PotionUtils.getFullEffectsFromItem(itemstack));
        return itemstack1;
    }
    else
    {
        return null;
    }
}
项目:genera    文件:BlockAltar.java   
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand,
                                EnumFacing side, float hitX, float hitY, float hitZ) {
    ItemStack handStack = player.getHeldItem(hand);
    if (handStack.getItem() == GeneraItems.ItemGlassJar &&
            handStack.getMetadata() == 1) {
        NBTTagCompound nbt = handStack.getTagCompound();
        if (nbt == null) return false;
        PotionType potion;
        player.getEntityData().setInteger("genera.sacrifices_made", player.getEntityData().getInteger("genera.sacrifices_made") + 1);
        switch (nbt.getInteger("type")) {
            case 0:
                potion = PotionType.getPotionTypeForName("regeneration");
                if (potion == null) return false;
                player.setHeldItem(hand, PotionUtils.addPotionToItemStack(new ItemStack(Items.POTIONITEM), potion));
                return false;
            case 1:
                potion = PotionType.getPotionTypeForName("night_vision");
                if (potion == null) return false;
                player.setHeldItem(hand, PotionUtils.addPotionToItemStack(new ItemStack(Items.POTIONITEM), potion));
                return false;
            case 2:
                potion = PotionType.getPotionTypeForName("leaping");
                if (potion == null) return false;
                player.setHeldItem(hand, PotionUtils.addPotionToItemStack(new ItemStack(Items.POTIONITEM), potion));
                return false;
        }
    }
    return false;
}
项目:Wurst-MC-1.12-OF    文件:InventoryUtils.java   
public static boolean hasEffect(ItemStack stack, Potion potion)
{
    for(PotionEffect effect : PotionUtils.getEffectsFromStack(stack))
        if(effect.getPotion() == potion)
            return true;

    return false;
}
项目:CharcoalPit    文件:PotionRegistry.java   
@SubscribeEvent
public void colorCoke(PotionBrewEvent.Post event){
    for(int i=0;i<event.getLength();i++){
        if(PotionUtils.getPotionFromItem(event.getItem(i))==COKE_COLA||
                PotionUtils.getPotionFromItem(event.getItem(i))==COKE_COLA_LONG||
                PotionUtils.getPotionFromItem(event.getItem(i))==COKE_COLA_STRONG){
            ItemStack brew=event.getItem(i).copy();
            brew.getTagCompound().setInteger("CustomPotionColor", 4738376);
            event.setItem(i, brew);
        }
    }
}
项目:Wurst-MC-1.12    文件:InventoryUtils.java   
public static boolean hasEffect(ItemStack stack, Potion potion)
{
    for(PotionEffect effect : PotionUtils.getEffectsFromStack(stack))
        if(effect.getPotion() == potion)
            return true;

    return false;
}
项目:Backmemed    文件:EntityTippedArrow.java   
public void setPotionEffect(ItemStack stack)
{
    if (stack.getItem() == Items.TIPPED_ARROW)
    {
        this.potion = PotionUtils.getPotionFromItem(stack);
        Collection<PotionEffect> collection = PotionUtils.getFullEffectsFromItem(stack);

        if (!collection.isEmpty())
        {
            for (PotionEffect potioneffect : collection)
            {
                this.customPotionEffects.add(new PotionEffect(potioneffect));
            }
        }

        int i = func_191508_b(stack);

        if (i == -1)
        {
            this.func_190548_o();
        }
        else
        {
            this.func_191507_d(i);
        }
    }
    else if (stack.getItem() == Items.ARROW)
    {
        this.potion = PotionTypes.EMPTY;
        this.customPotionEffects.clear();
        this.dataManager.set(COLOR, Integer.valueOf(-1));
    }
}
项目:Backmemed    文件:EntityWitch.java   
/**
 * 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);
    }
}
项目:Backmemed    文件:EntityAreaEffectCloud.java   
private void func_190618_C()
{
    if (this.potion == PotionTypes.EMPTY && this.effects.isEmpty())
    {
        this.getDataManager().set(COLOR, Integer.valueOf(0));
    }
    else
    {
        this.getDataManager().set(COLOR, Integer.valueOf(PotionUtils.getPotionColorFromEffectList(PotionUtils.mergeEffects(this.potion, this.effects))));
    }
}
项目:Backmemed    文件:ItemPotion.java   
/**
 * returns a list of items with the same ID, but different meta (eg: dye returns 16 items)
 */
public void getSubItems(Item itemIn, CreativeTabs tab, NonNullList<ItemStack> subItems)
{
    for (PotionType potiontype : PotionType.REGISTRY)
    {
        if (potiontype != PotionTypes.EMPTY)
        {
            subItems.add(PotionUtils.addPotionToItemStack(new ItemStack(itemIn), potiontype));
        }
    }
}
项目:Backmemed    文件:ItemTippedArrow.java   
/**
 * returns a list of items with the same ID, but different meta (eg: dye returns 16 items)
 */
public void getSubItems(Item itemIn, CreativeTabs tab, NonNullList<ItemStack> subItems)
{
    for (PotionType potiontype : PotionType.REGISTRY)
    {
        if (!potiontype.getEffects().isEmpty())
        {
            subItems.add(PotionUtils.addPotionToItemStack(new ItemStack(itemIn), potiontype));
        }
    }
}
项目:Backmemed    文件:ContainerBrewingStand.java   
public ItemStack func_190901_a(EntityPlayer p_190901_1_, ItemStack p_190901_2_)
{
    PotionType potiontype = PotionUtils.getPotionFromItem(p_190901_2_);

    if (potiontype != PotionTypes.WATER && potiontype != PotionTypes.EMPTY)
    {
        this.player.addStat(AchievementList.POTION);
    }

    super.func_190901_a(p_190901_1_, p_190901_2_);
    return p_190901_2_;
}