diff options
Diffstat (limited to 'src/main/java/org/bukkit/craftbukkit/inventory')
14 files changed, 257 insertions, 75 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftEntityEquipment.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftEntityEquipment.java index 22134820..e95fb3a8 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftEntityEquipment.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftEntityEquipment.java @@ -1,6 +1,7 @@ package org.bukkit.craftbukkit.inventory; import net.minecraft.server.EntityInsentient; +import net.minecraft.server.EnumItemSlot; import org.bukkit.craftbukkit.entity.CraftLivingEntity; import org.bukkit.entity.Entity; @@ -8,12 +9,6 @@ import org.bukkit.inventory.EntityEquipment; import org.bukkit.inventory.ItemStack; public class CraftEntityEquipment implements EntityEquipment { - private static final int WEAPON_SLOT = 0; - private static final int HELMET_SLOT = 4; - private static final int CHEST_SLOT = 3; - private static final int LEG_SLOT = 2; - private static final int BOOT_SLOT = 1; - private static final int INVENTORY_SLOTS = 5; private final CraftLivingEntity entity; @@ -21,72 +16,96 @@ public class CraftEntityEquipment implements EntityEquipment { this.entity = entity; } + @Override + public ItemStack getItemInMainHand() { + return getEquipment(EnumItemSlot.MAINHAND); + } + + @Override + public void setItemInMainHand(ItemStack item) { + setEquipment(EnumItemSlot.MAINHAND, item); + } + + @Override + public ItemStack getItemInOffHand() { + return getEquipment(EnumItemSlot.OFFHAND); + } + + @Override + public void setItemInOffHand(ItemStack item) { + setEquipment(EnumItemSlot.OFFHAND, item); + } + + @Override public ItemStack getItemInHand() { - return getEquipment(WEAPON_SLOT); + return getItemInMainHand(); } + @Override public void setItemInHand(ItemStack stack) { - setEquipment(WEAPON_SLOT, stack); + setItemInMainHand(stack); } public ItemStack getHelmet() { - return getEquipment(HELMET_SLOT); + return getEquipment(EnumItemSlot.HEAD); } public void setHelmet(ItemStack helmet) { - setEquipment(HELMET_SLOT, helmet); + setEquipment(EnumItemSlot.HEAD, helmet); } public ItemStack getChestplate() { - return getEquipment(CHEST_SLOT); + return getEquipment(EnumItemSlot.CHEST); } public void setChestplate(ItemStack chestplate) { - setEquipment(CHEST_SLOT, chestplate); + setEquipment(EnumItemSlot.CHEST, chestplate); } public ItemStack getLeggings() { - return getEquipment(LEG_SLOT); + return getEquipment(EnumItemSlot.LEGS); } public void setLeggings(ItemStack leggings) { - setEquipment(LEG_SLOT, leggings); + setEquipment(EnumItemSlot.LEGS, leggings); } public ItemStack getBoots() { - return getEquipment(BOOT_SLOT); + return getEquipment(EnumItemSlot.FEET); } public void setBoots(ItemStack boots) { - setEquipment(BOOT_SLOT, boots); + setEquipment(EnumItemSlot.FEET, boots); } public ItemStack[] getArmorContents() { - ItemStack[] armor = new ItemStack[INVENTORY_SLOTS - 1]; - for(int slot = WEAPON_SLOT + 1; slot < INVENTORY_SLOTS; slot++) { - armor[slot - 1] = getEquipment(slot); - } + ItemStack[] armor = new ItemStack[]{ + getEquipment(EnumItemSlot.FEET), + getEquipment(EnumItemSlot.LEGS), + getEquipment(EnumItemSlot.CHEST), + getEquipment(EnumItemSlot.HEAD), + }; return armor; } public void setArmorContents(ItemStack[] items) { - for(int slot = WEAPON_SLOT + 1; slot < INVENTORY_SLOTS; slot++) { - ItemStack equipment = items != null && slot <= items.length ? items[slot - 1] : null; - setEquipment(slot, equipment); - } + setEquipment(EnumItemSlot.FEET, items.length >= 1 ? items[0] : null); + setEquipment(EnumItemSlot.LEGS, items.length >= 2 ? items[1] : null); + setEquipment(EnumItemSlot.CHEST, items.length >= 3 ? items[2] : null); + setEquipment(EnumItemSlot.HEAD, items.length >= 4 ? items[3] : null); } - private ItemStack getEquipment(int slot) { + private ItemStack getEquipment(EnumItemSlot slot) { return CraftItemStack.asBukkitCopy(entity.getHandle().getEquipment(slot)); } - private void setEquipment(int slot, ItemStack stack) { - entity.getHandle().setEquipment(slot, CraftItemStack.asNMSCopy(stack)); + private void setEquipment(EnumItemSlot slot, ItemStack stack) { + entity.getHandle().setSlot(slot, CraftItemStack.asNMSCopy(stack)); } public void clear() { - for(int i = 0; i < INVENTORY_SLOTS; i++) { - setEquipment(i, null); + for (EnumItemSlot slot : EnumItemSlot.values()) { + setEquipment(slot, null); } } @@ -95,50 +114,58 @@ public class CraftEntityEquipment implements EntityEquipment { } public float getItemInHandDropChance() { - return getDropChance(WEAPON_SLOT); + return getDropChance(EnumItemSlot.MAINHAND); } public void setItemInHandDropChance(float chance) { - setDropChance(WEAPON_SLOT, chance); + setDropChance(EnumItemSlot.MAINHAND, chance); } public float getHelmetDropChance() { - return getDropChance(HELMET_SLOT); + return getDropChance(EnumItemSlot.HEAD); } public void setHelmetDropChance(float chance) { - setDropChance(HELMET_SLOT, chance); + setDropChance(EnumItemSlot.HEAD, chance); } public float getChestplateDropChance() { - return getDropChance(CHEST_SLOT); + return getDropChance(EnumItemSlot.CHEST); } public void setChestplateDropChance(float chance) { - setDropChance(CHEST_SLOT, chance); + setDropChance(EnumItemSlot.CHEST, chance); } public float getLeggingsDropChance() { - return getDropChance(LEG_SLOT); + return getDropChance(EnumItemSlot.LEGS); } public void setLeggingsDropChance(float chance) { - setDropChance(LEG_SLOT, chance); + setDropChance(EnumItemSlot.LEGS, chance); } public float getBootsDropChance() { - return getDropChance(BOOT_SLOT); + return getDropChance(EnumItemSlot.FEET); } public void setBootsDropChance(float chance) { - setDropChance(BOOT_SLOT, chance); + setDropChance(EnumItemSlot.FEET, chance); } - private void setDropChance(int slot, float chance) { - ((EntityInsentient) entity.getHandle()).dropChances[slot] = chance - 0.1F; + private void setDropChance(EnumItemSlot slot, float chance) { + if (slot == EnumItemSlot.MAINHAND || slot == EnumItemSlot.OFFHAND) { + ((EntityInsentient) entity.getHandle()).dropChanceHand[slot.b()] = chance - 0.1F; + } else { + ((EntityInsentient) entity.getHandle()).dropChanceArmor[slot.b()] = chance - 0.1F; + } } - private float getDropChance(int slot) { - return ((EntityInsentient) entity.getHandle()).dropChances[slot] + 0.1F; + private float getDropChance(EnumItemSlot slot) { + if (slot == EnumItemSlot.MAINHAND || slot == EnumItemSlot.OFFHAND) { + return ((EntityInsentient) entity.getHandle()).dropChanceHand[slot.b()] + 0.1F; + } else { + return ((EntityInsentient) entity.getHandle()).dropChanceArmor[slot.b()] + 0.1F; + } } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java index 69f17db8..ef3b8045 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftFurnaceRecipe.java @@ -2,7 +2,6 @@ package org.bukkit.craftbukkit.inventory; import net.minecraft.server.RecipesFurnace; -import org.bukkit.craftbukkit.util.CraftMagicNumbers; import org.bukkit.inventory.FurnaceRecipe; import org.bukkit.inventory.ItemStack; @@ -22,6 +21,6 @@ public class CraftFurnaceRecipe extends FurnaceRecipe implements CraftRecipe { public void addToCraftingManager() { ItemStack result = this.getResult(); ItemStack input = this.getInput(); - RecipesFurnace.getInstance().registerRecipe(CraftItemStack.asNMSCopy(input), CraftItemStack.asNMSCopy(result)); + RecipesFurnace.getInstance().registerRecipe(CraftItemStack.asNMSCopy(input), CraftItemStack.asNMSCopy(result), getExperience()); } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java index e9a3c501..91b8e4af 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventory.java @@ -17,6 +17,7 @@ import net.minecraft.server.TileEntityDropper; import net.minecraft.server.TileEntityFurnace; import org.apache.commons.lang.Validate; +import org.bukkit.Location; import org.bukkit.entity.HumanEntity; import org.bukkit.event.inventory.InventoryType; import org.bukkit.inventory.Inventory; @@ -479,4 +480,9 @@ public class CraftInventory implements Inventory { public boolean equals(final Object obj) { return obj instanceof CraftInventory && ((CraftInventory) obj).inventory.equals(this.inventory); } + + @Override + public Location getLocation() { + return inventory.getLocation(); + } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java index 46a1d387..00f9bb5e 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java @@ -1,15 +1,18 @@ package org.bukkit.craftbukkit.inventory; import net.minecraft.server.IInventory; +import org.bukkit.Location; import org.bukkit.inventory.AnvilInventory; import org.bukkit.inventory.ItemStack; public class CraftInventoryAnvil extends CraftInventory implements AnvilInventory { + private final Location location; private final IInventory resultInventory; - public CraftInventoryAnvil(IInventory inventory, IInventory resultInventory) { + public CraftInventoryAnvil(Location location, IInventory inventory, IInventory resultInventory) { super(inventory); + this.location = location; this.resultInventory = resultInventory; } @@ -45,4 +48,9 @@ public class CraftInventoryAnvil extends CraftInventory implements AnvilInventor public int getSize() { return getResultInventory().getSize() + getIngredientsInventory().getSize(); } + + @Override + public Location getLocation() { + return location; + } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBrewer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBrewer.java index 6de6e6e6..86c89e86 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBrewer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryBrewer.java @@ -23,4 +23,14 @@ public class CraftInventoryBrewer extends CraftInventory implements BrewerInvent public BrewingStand getHolder() { return (BrewingStand) inventory.getOwner(); } + + @Override + public ItemStack getFuel() { + return getItem(4); + } + + @Override + public void setFuel(ItemStack fuel) { + setItem(4, fuel); + } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java index e155329e..e085351f 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCrafting.java @@ -55,7 +55,7 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn for (int j = 0; j < mcItems.length; j++) { items[i + j] = CraftItemStack.asCraftMirror(mcItems[j]); } - + return items; } @@ -85,10 +85,10 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn } public ItemStack[] getMatrix() { - ItemStack[] items = new ItemStack[getSize()]; net.minecraft.server.ItemStack[] matrix = getMatrixInventory().getContents(); + ItemStack[] items = new ItemStack[matrix.length]; - for (int i = 0; i < matrix.length; i++ ) { + for (int i = 0; i < matrix.length; i++) { items[i] = CraftItemStack.asCraftMirror(matrix[i]); } @@ -108,16 +108,16 @@ public class CraftInventoryCrafting extends CraftInventory implements CraftingIn net.minecraft.server.ItemStack[] mcItems = getMatrixInventory().getContents(); - for (int i = 0; i < mcItems.length; i++ ) { + for (int i = 0; i < mcItems.length; i++) { if (i < contents.length) { ItemStack item = contents[i]; if (item == null || item.getTypeId() <= 0) { - mcItems[i] = null; + getMatrixInventory().setItem(i, null); } else { - mcItems[i] = CraftItemStack.asNMSCopy(item); + getMatrixInventory().setItem(i, CraftItemStack.asNMSCopy(item)); } } else { - mcItems[i] = null; + getMatrixInventory().setItem(i, null); } } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java index e99b8cca..2b396782 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryCustom.java @@ -14,6 +14,7 @@ import org.bukkit.inventory.InventoryHolder; import net.minecraft.server.EntityHuman; import net.minecraft.server.IInventory; import net.minecraft.server.ItemStack; +import org.bukkit.Location; public class CraftInventoryCustom extends CraftInventory { public CraftInventoryCustom(InventoryHolder owner, InventoryType type) { @@ -165,8 +166,7 @@ public class CraftInventoryCustom extends CraftInventory { } @Override - public void b(int i, int i1) { - + public void setProperty(int i, int j) { } @Override @@ -193,5 +193,10 @@ public class CraftInventoryCustom extends CraftInventory { public IChatBaseComponent getScoreboardDisplayName() { return new ChatComponentText(title); } + + @Override + public Location getLocation() { + return null; + } } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryMerchant.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryMerchant.java index 7f89c2ad..9051d75c 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryMerchant.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryMerchant.java @@ -2,9 +2,26 @@ package org.bukkit.craftbukkit.inventory; import net.minecraft.server.InventoryMerchant; import org.bukkit.inventory.MerchantInventory; +import org.bukkit.inventory.MerchantRecipe; public class CraftInventoryMerchant extends CraftInventory implements MerchantInventory { + public CraftInventoryMerchant(InventoryMerchant merchant) { super(merchant); } + + @Override + public int getSelectedRecipeIndex() { + return getInventory().e; + } + + @Override + public MerchantRecipe getSelectedRecipe() { + return getInventory().getRecipe().asBukkit(); + } + + @Override + public InventoryMerchant getInventory() { + return (InventoryMerchant) inventory; + } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java index dba8d5ba..a7a6d948 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryPlayer.java @@ -22,16 +22,33 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i } @Override - public int getSize() { - return super.getSize() - 4; + public ItemStack getItemInMainHand() { + return CraftItemStack.asCraftMirror(getInventory().getItemInHand()); + } + + @Override + public void setItemInMainHand(ItemStack item) { + setItem(getHeldItemSlot(), item); + } + + @Override + public ItemStack getItemInOffHand() { + return CraftItemStack.asCraftMirror(getInventory().extraSlots[0]); } + @Override + public void setItemInOffHand(ItemStack item) { + getInventory().extraSlots[0] = CraftItemStack.asNMSCopy(item); + } + + @Override public ItemStack getItemInHand() { - return CraftItemStack.asCraftMirror(getInventory().getItemInHand()); + return getItemInMainHand(); } + @Override public void setItemInHand(ItemStack stack) { - setItem(getHeldItemSlot(), stack); + setItemInMainHand(stack); } @Override @@ -86,35 +103,35 @@ public class CraftInventoryPlayer extends CraftInventory implements org.bukkit.i } public ItemStack getHelmet() { - return getItem(getSize() + 3); + return getItem(getSize() - 2); } public ItemStack getChestplate() { - return getItem(getSize() + 2); + return getItem(getSize() - 3); } public ItemStack getLeggings() { - return getItem(getSize() + 1); + return getItem(getSize() - 4); } public ItemStack getBoots() { - return getItem(getSize() + 0); + return getItem(getSize() - 5); } public void setHelmet(ItemStack helmet) { - setItem(getSize() + 3, helmet); + setItem(getSize() - 2, helmet); } public void setChestplate(ItemStack chestplate) { - setItem(getSize() + 2, chestplate); + setItem(getSize() - 3, chestplate); } public void setLeggings(ItemStack leggings) { - setItem(getSize() + 1, leggings); + setItem(getSize() - 4, leggings); } public void setBoots(ItemStack boots) { - setItem(getSize() + 0, boots); + setItem(getSize() - 5, boots); } public ItemStack[] getArmorContents() { diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java index 5404ee91..82f20455 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemFactory.java @@ -21,11 +21,14 @@ public final class CraftItemFactory implements ItemFactory { instance = new CraftItemFactory(); ConfigurationSerialization.registerClass(CraftMetaItem.SerializableMeta.class); KNOWN_NBT_ATTRIBUTE_NAMES = ImmutableSet.<String>builder() + .add("generic.armor") .add("generic.attackDamage") .add("generic.followRange") .add("generic.knockbackResistance") .add("generic.maxHealth") .add("generic.movementSpeed") + .add("generic.attackSpeed") + .add("generic.luck") .add("horse.jumpStrength") .add("zombie.spawnReinforcements") .build(); @@ -103,6 +106,7 @@ public final class CraftItemFactory implements ItemFactory { case HOPPER: case REDSTONE_COMPARATOR: case FLOWER_POT_ITEM: + case SHIELD: return new CraftMetaBlockState(meta, material); default: return new CraftMetaItem(meta); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java index 23f05f4d..8bb128e6 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java @@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableMap; import net.minecraft.server.IChatBaseComponent.ChatSerializer; import net.minecraft.server.Items; import net.minecraft.server.NBTTagString; +import org.bukkit.craftbukkit.enchantments.CraftEnchantment; import org.bukkit.craftbukkit.util.CraftChatMessage; @DelegateDeserialization(ItemStack.class) @@ -230,7 +231,7 @@ public final class CraftItemStack extends ItemStack { if (handle == null) { return 0; } - return EnchantmentManager.getEnchantmentLevel(ench.getId(), handle); + return EnchantmentManager.getEnchantmentLevel(CraftEnchantment.getRaw(ench), handle); } @Override @@ -367,6 +368,7 @@ public final class CraftItemStack extends ItemStack { case HOPPER: case REDSTONE_COMPARATOR: case FLOWER_POT_ITEM: + case SHIELD: return new CraftMetaBlockState(item.getTag(), CraftMagicNumbers.getMaterial(item.getItem())); default: return new CraftMetaItem(item.getTag()); diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java new file mode 100644 index 00000000..964f7080 --- /dev/null +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java @@ -0,0 +1,79 @@ +package org.bukkit.craftbukkit.inventory; + +import com.google.common.base.Preconditions; +import java.util.List; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.MerchantRecipe; + +public class CraftMerchantRecipe extends MerchantRecipe { + + private final net.minecraft.server.MerchantRecipe handle; + + public CraftMerchantRecipe(net.minecraft.server.MerchantRecipe merchantRecipe) { + super(null, 0); + this.handle = merchantRecipe; + } + + public CraftMerchantRecipe(ItemStack result, int uses, int maxUses, boolean experienceReward) { + super(result, uses, maxUses, experienceReward); + this.handle = new net.minecraft.server.MerchantRecipe( + CraftItemStack.asNMSCopy(result), + null, + null, + uses, + maxUses, + this + ); + } + + @Override + public int getUses() { + return handle.uses; + } + + @Override + public void setUses(int uses) { + handle.uses = uses; + } + + @Override + public int getMaxUses() { + return handle.maxUses; + } + + @Override + public void setMaxUses(int maxUses) { + handle.maxUses = maxUses; + } + + @Override + public boolean hasExperienceReward() { + return handle.rewardExp; + } + + @Override + public void setExperienceReward(boolean flag) { + handle.rewardExp = flag; + } + + public net.minecraft.server.MerchantRecipe toMinecraft() { + List<ItemStack> ingredients = getIngredients(); + Preconditions.checkState(!ingredients.isEmpty(), "No offered ingredients"); + handle.buyingItem1 = CraftItemStack.asNMSCopy(ingredients.get(0)); + if (ingredients.size() > 1) { + handle.buyingItem2 = CraftItemStack.asNMSCopy(ingredients.get(1)); + } + return handle; + } + + public static CraftMerchantRecipe fromBukkit(MerchantRecipe recipe) { + if (recipe instanceof CraftMerchantRecipe) { + return (CraftMerchantRecipe) recipe; + } else { + CraftMerchantRecipe craft = new CraftMerchantRecipe(recipe.getResult(), recipe.getUses(), recipe.getMaxUses(), recipe.hasExperienceReward()); + craft.setIngredients(recipe.getIngredients()); + + return craft; + } + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java index d60686d6..4f1415b7 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBlockState.java @@ -4,6 +4,7 @@ import com.google.common.base.Objects; import com.google.common.collect.ImmutableMap; import java.util.Map; import net.minecraft.server.BlockJukeBox; +import net.minecraft.server.MinecraftServer; import net.minecraft.server.NBTBase; import net.minecraft.server.NBTTagCompound; import net.minecraft.server.TileEntity; @@ -55,9 +56,7 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta this.material = material; if (!(meta instanceof CraftMetaBlockState) - || ((CraftMetaBlockState) meta).material != material - || material == Material.SIGN - || material == Material.COMMAND) { + || ((CraftMetaBlockState) meta).material != material) { blockEntityTag = null; return; } @@ -153,7 +152,7 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta @Override boolean applicableTo(Material type) { - switch(type){ + switch(type){ case FURNACE: case CHEST: case TRAPPED_CHEST: @@ -173,6 +172,7 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta case HOPPER: case REDSTONE_COMPARATOR: case FLOWER_POT_ITEM: + case SHIELD: return true; } return false; @@ -185,7 +185,7 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta @Override public BlockState getBlockState() { - TileEntity te = blockEntityTag == null ? null : TileEntity.c(blockEntityTag); + TileEntity te = blockEntityTag == null ? null : TileEntity.a(MinecraftServer.getServer(), blockEntityTag); switch (material) { case SIGN: @@ -257,6 +257,7 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta te = new TileEntityBeacon(); } return new CraftBeacon(material, (TileEntityBeacon) te); + case SHIELD: case BANNER: case WALL_BANNER: case STANDING_BANNER: @@ -320,6 +321,7 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta case BEACON: valid = te instanceof TileEntityBeacon; break; + case SHIELD: case BANNER: case WALL_BANNER: case STANDING_BANNER: @@ -333,6 +335,6 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta Validate.isTrue(valid, "Invalid blockState for " + material); blockEntityTag = new NBTTagCompound(); - te.b(blockEntityTag); + te.save(blockEntityTag); } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java b/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java index 5e449667..125f7e1a 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java @@ -6,6 +6,7 @@ import net.minecraft.server.EntityHuman; import net.minecraft.server.IChatBaseComponent; import net.minecraft.server.IInventory; import net.minecraft.server.ItemStack; +import org.bukkit.Location; import org.bukkit.craftbukkit.entity.CraftHumanEntity; import org.bukkit.craftbukkit.util.CraftChatMessage; import org.bukkit.entity.HumanEntity; @@ -106,7 +107,7 @@ public class InventoryWrapper implements IInventory { } @Override - public void b(int i, int j) { + public void setProperty(int i, int j) { } @Override @@ -170,4 +171,9 @@ public class InventoryWrapper implements IInventory { public IChatBaseComponent getScoreboardDisplayName() { return CraftChatMessage.fromString(getName())[0]; } + + @Override + public Location getLocation() { + return inventory.getLocation(); + } } |