Various ItemMeta fixes.

Fixes BUKKIT-3408, BUKKIT-3190, BUKKIT-3191, BUKKIT-3407

These changes relate mostly to semantical changes for serialization
contract, exception of changing the map scaling value from byte to boolean,
what it should have been in the first place. Appropriate unit tests were
added for CraftMapMeta, as they were missing.

By: Wesley Wolfe <weswolf@aol.com>
This commit is contained in:
CraftBukkit/Spigot 2013-01-09 04:45:01 -06:00
parent 58090423c0
commit 6a7b6e848a
6 changed files with 15 additions and 13 deletions

View file

@ -1,7 +1,6 @@
package org.bukkit.craftbukkit.inventory;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@ -74,7 +73,7 @@ class CraftMetaBook extends CraftMetaItem implements BookMeta {
setTitle(SerializableMeta.getString(map, BOOK_TITLE.BUKKIT, true));
Collection<?> pages = SerializableMeta.getObject(Collection.class, map, BOOK_PAGES.BUKKIT, true);
Iterable<?> pages = SerializableMeta.getObject(Iterable.class, map, BOOK_PAGES.BUKKIT, true);
CraftMetaItem.safelyAdd(pages, this.pages, MAX_PAGE_LENGTH);
}

View file

@ -30,7 +30,7 @@ class CraftMetaCharge extends CraftMetaItem implements FireworkEffectMeta {
CraftMetaCharge(Map<String, Object> map) {
super(map);
effect = SerializableMeta.getObject(FireworkEffect.class, map, EXPLOSION.BUKKIT, true);
setEffect(SerializableMeta.getObject(FireworkEffect.class, map, EXPLOSION.BUKKIT, true));
}
CraftMetaCharge(NBTTagCompound tag) {

View file

@ -172,7 +172,7 @@ class CraftMetaFirework extends CraftMetaItem implements FireworkMeta {
Integer power = SerializableMeta.getObject(Integer.class, map, FLIGHT.BUKKIT, true);
if (power != null) {
this.power = power;
setPower(power);
}
Iterable<?> effects = SerializableMeta.getObject(Iterable.class, map, EXPLOSIONS.BUKKIT, true);

View file

@ -271,14 +271,16 @@ class CraftMetaItem implements ItemMeta, Repairable {
CraftMetaItem(Map<String, Object> map) {
setDisplayName(SerializableMeta.getString(map, NAME.BUKKIT, true));
if (map.containsKey(LORE.BUKKIT)) {
lore = (List<String>) map.get(LORE.BUKKIT);
Iterable<?> lore = SerializableMeta.getObject(Iterable.class, map, LORE.BUKKIT, true);
if (lore != null) {
safelyAdd(lore, this.lore = new ArrayList<String>(), Integer.MAX_VALUE);
}
enchantments = buildEnchantments(map, ENCHANTMENTS);
if (map.containsKey(REPAIR.BUKKIT)) {
repairCost = (Integer) map.get(REPAIR.BUKKIT);
Integer repairCost = SerializableMeta.getObject(Integer.class, map, REPAIR.BUKKIT, true);
if (repairCost != null) {
setRepairCost(repairCost);
}
}
@ -556,7 +558,7 @@ class CraftMetaItem implements ItemMeta, Repairable {
return SerializableMeta.Deserializers.UNSPECIFIC;
}
static void safelyAdd(Collection<?> addFrom, Collection<String> addTo, int maxItemLength) {
static void safelyAdd(Iterable<?> addFrom, Collection<String> addTo, int maxItemLength) {
if (addFrom == null) {
return;
}

View file

@ -42,8 +42,9 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
CraftMetaMap(Map<String, Object> map) {
super(map);
if (map.containsKey(MAP_SCALING.BUKKIT)) {
this.scaling = SerializableMeta.getBoolean(map, MAP_SCALING.BUKKIT) ? SCALING_TRUE : SCALING_FALSE;
Boolean scaling = SerializableMeta.getObject(Boolean.class, map, MAP_SCALING.BUKKIT, true);
if (scaling != null) {
setScaling(scaling);
}
}
@ -126,7 +127,7 @@ class CraftMetaMap extends CraftMetaItem implements MapMeta {
super.serialize(builder);
if (hasScaling()) {
builder.put(MAP_SCALING.BUKKIT, scaling);
builder.put(MAP_SCALING.BUKKIT, isScaling());
}
return builder;

View file

@ -64,7 +64,7 @@ class CraftMetaPotion extends CraftMetaItem implements PotionMeta {
CraftMetaPotion(Map<String, Object> map) {
super(map);
List<?> rawEffectList = SerializableMeta.getObject(List.class, map, POTION_EFFECTS.BUKKIT, true);
Iterable<?> rawEffectList = SerializableMeta.getObject(Iterable.class, map, POTION_EFFECTS.BUKKIT, true);
if (rawEffectList == null) {
return;
}