package net.minecraft.server; import com.google.common.collect.Lists; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.annotation.Nullable; public class PotionUtil { public static List<MobEffect> getEffects(ItemStack itemstack) { return a(itemstack.getTag()); } public static List<MobEffect> a(PotionRegistry potionregistry, Collection<MobEffect> collection) { List<MobEffect> list = Lists.newArrayList(); list.addAll(potionregistry.a()); list.addAll(collection); return list; } public static List<MobEffect> a(@Nullable NBTTagCompound nbttagcompound) { List<MobEffect> list = Lists.newArrayList(); list.addAll(c(nbttagcompound).a()); a(nbttagcompound, (List) list); return list; } public static List<MobEffect> b(ItemStack itemstack) { return b(itemstack.getTag()); } public static List<MobEffect> b(@Nullable NBTTagCompound nbttagcompound) { List<MobEffect> list = Lists.newArrayList(); a(nbttagcompound, (List) list); return list; } public static void a(@Nullable NBTTagCompound nbttagcompound, List<MobEffect> list) { if (nbttagcompound != null && nbttagcompound.hasKeyOfType("CustomPotionEffects", 9)) { NBTTagList nbttaglist = nbttagcompound.getList("CustomPotionEffects", 10); for (int i = 0; i < nbttaglist.size(); ++i) { NBTTagCompound nbttagcompound1 = nbttaglist.getCompound(i); MobEffect mobeffect = MobEffect.b(nbttagcompound1); if (mobeffect != null) { list.add(mobeffect); } } } } public static int c(ItemStack itemstack) { NBTTagCompound nbttagcompound = itemstack.getTag(); return nbttagcompound != null && nbttagcompound.hasKeyOfType("CustomPotionColor", 99) ? nbttagcompound.getInt("CustomPotionColor") : (d(itemstack) == Potions.EMPTY ? 16253176 : a((Collection) getEffects(itemstack))); } public static int a(PotionRegistry potionregistry) { return potionregistry == Potions.EMPTY ? 16253176 : a((Collection) potionregistry.a()); } public static int a(Collection<MobEffect> collection) { int i = 3694022; if (collection.isEmpty()) { return 3694022; } else { float f = 0.0F; float f1 = 0.0F; float f2 = 0.0F; int j = 0; Iterator iterator = collection.iterator(); while (iterator.hasNext()) { MobEffect mobeffect = (MobEffect) iterator.next(); if (mobeffect.isShowParticles()) { int k = mobeffect.getMobEffect().getColor(); int l = mobeffect.getAmplifier() + 1; f += (float) (l * (k >> 16 & 255)) / 255.0F; f1 += (float) (l * (k >> 8 & 255)) / 255.0F; f2 += (float) (l * (k >> 0 & 255)) / 255.0F; j += l; } } if (j == 0) { return 0; } else { f = f / (float) j * 255.0F; f1 = f1 / (float) j * 255.0F; f2 = f2 / (float) j * 255.0F; return (int) f << 16 | (int) f1 << 8 | (int) f2; } } } public static PotionRegistry d(ItemStack itemstack) { return c(itemstack.getTag()); } public static PotionRegistry c(@Nullable NBTTagCompound nbttagcompound) { return nbttagcompound == null ? Potions.EMPTY : PotionRegistry.a(nbttagcompound.getString("Potion")); } public static ItemStack a(ItemStack itemstack, PotionRegistry potionregistry) { MinecraftKey minecraftkey = IRegistry.POTION.getKey(potionregistry); if (potionregistry == Potions.EMPTY) { itemstack.removeTag("Potion"); } else { itemstack.getOrCreateTag().setString("Potion", minecraftkey.toString()); } return itemstack; } public static ItemStack a(ItemStack itemstack, Collection<MobEffect> collection) { if (collection.isEmpty()) { return itemstack; } else { NBTTagCompound nbttagcompound = itemstack.getOrCreateTag(); NBTTagList nbttaglist = nbttagcompound.getList("CustomPotionEffects", 9); Iterator iterator = collection.iterator(); while (iterator.hasNext()) { MobEffect mobeffect = (MobEffect) iterator.next(); nbttaglist.add(mobeffect.a(new NBTTagCompound())); } nbttagcompound.set("CustomPotionEffects", nbttaglist); return itemstack; } } }