SPIGOT-798: Allow for CustomPotionEffects to be empty

This commit is contained in:
Thinkofdeath 2015-04-15 15:02:34 +01:00
parent e4ca2af9c4
commit 5b2764148d

View File

@ -47,18 +47,16 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
if (tag.hasKey(POTION_EFFECTS.NBT)) { if (tag.hasKey(POTION_EFFECTS.NBT)) {
NBTTagList list = tag.getList(POTION_EFFECTS.NBT, 10); NBTTagList list = tag.getList(POTION_EFFECTS.NBT, 10);
int length = list.size(); int length = list.size();
if (length > 0) { customEffects = new ArrayList<PotionEffect>(length);
customEffects = new ArrayList<PotionEffect>(length);
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
NBTTagCompound effect = list.get(i); NBTTagCompound effect = list.get(i);
PotionEffectType type = PotionEffectType.getById(effect.getByte(ID.NBT)); PotionEffectType type = PotionEffectType.getById(effect.getByte(ID.NBT));
int amp = effect.getByte(AMPLIFIER.NBT); int amp = effect.getByte(AMPLIFIER.NBT);
int duration = effect.getInt(DURATION.NBT); int duration = effect.getInt(DURATION.NBT);
boolean ambient = effect.getBoolean(AMBIENT.NBT); boolean ambient = effect.getBoolean(AMBIENT.NBT);
boolean particles = effect.getBoolean(SHOW_PARTICLES.NBT); boolean particles = effect.getBoolean(SHOW_PARTICLES.NBT);
customEffects.add(new PotionEffect(type, duration, amp, ambient, particles)); customEffects.add(new PotionEffect(type, duration, amp, ambient, particles));
}
} }
} }
} }
@ -82,7 +80,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
@Override @Override
void applyToItem(NBTTagCompound tag) { void applyToItem(NBTTagCompound tag) {
super.applyToItem(tag); super.applyToItem(tag);
if (hasCustomEffects()) { if (customEffects != null) {
NBTTagList effectList = new NBTTagList(); NBTTagList effectList = new NBTTagList();
tag.set(POTION_EFFECTS.NBT, effectList); tag.set(POTION_EFFECTS.NBT, effectList);
@ -127,7 +125,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
} }
public boolean hasCustomEffects() { public boolean hasCustomEffects() {
return !(customEffects == null || customEffects.isEmpty()); return customEffects != null;
} }
public List<PotionEffect> getCustomEffects() { public List<PotionEffect> getCustomEffects() {
@ -177,6 +175,9 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
changed = true; changed = true;
} }
} }
if (customEffects.isEmpty()) {
customEffects = null;
}
return changed; return changed;
} }