Implement ItemFactory and ItemMeta values. Adds BUKKIT-15

This commit is contained in:
Wesley Wolfe
2012-12-17 01:31:41 -06:00
parent d20d4dc43a
commit 78f48258d8
70 changed files with 3773 additions and 313 deletions

View File

@@ -124,7 +124,7 @@ public class ContainerEnchantTable extends Container {
}
// CraftBukkit start
CraftItemStack item = new CraftItemStack(itemstack);
CraftItemStack item = CraftItemStack.asCraftMirror(itemstack);
PrepareItemEnchantEvent event = new PrepareItemEnchantEvent(player, this.getBukkitView(), this.world.getWorld().getBlockAt(this.x, this.y, this.z), item, this.costs, i);
this.world.getServer().getPluginManager().callEvent(event);
@@ -160,7 +160,7 @@ public class ContainerEnchantTable extends Container {
EnchantmentInstance instance = (EnchantmentInstance) obj;
enchants.put(org.bukkit.enchantments.Enchantment.getById(instance.enchantment.id), instance.level);
}
CraftItemStack item = new CraftItemStack(itemstack);
CraftItemStack item = CraftItemStack.asCraftMirror(itemstack);
EnchantItemEvent event = new EnchantItemEvent((Player) entityhuman.getBukkitEntity(), this.getBukkitView(), this.world.getWorld().getBlockAt(this.x, this.y, this.z), item, this.costs[i], enchants, i);
this.world.getServer().getPluginManager().callEvent(event);

View File

@@ -41,9 +41,9 @@ public class DispenseBehaviorBoat extends DispenseBehaviorItem {
// CraftBukkit start
ItemStack itemstack1 = itemstack.a(1);
org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockX(), isourceblock.getBlockY(), isourceblock.getBlockZ());
org.bukkit.inventory.ItemStack bukkitItem = new CraftItemStack(itemstack1).clone();
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
BlockDispenseEvent event = new BlockDispenseEvent(block, bukkitItem, new org.bukkit.util.Vector(d0, d1 + d3, d2));
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(d0, d1 + d3, d2));
if (!BlockDispenser.eventFired) {
world.getServer().getPluginManager().callEvent(event);
}
@@ -53,10 +53,10 @@ public class DispenseBehaviorBoat extends DispenseBehaviorItem {
return itemstack;
}
if (!event.getItem().equals(bukkitItem)) {
if (!event.getItem().equals(craftItem)) {
itemstack.count++;
// Chain to handler for new item
ItemStack eventStack = CraftItemStack.createNMSItemStack(event.getItem());
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.a(eventStack.getItem());
if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
idispensebehavior.a(isourceblock, eventStack);

View File

@@ -38,9 +38,9 @@ public class DispenseBehaviorEmptyBucket extends DispenseBehaviorItem {
// CraftBukkit start
org.bukkit.block.Block block = world.getWorld().getBlockAt(i, j, k);
org.bukkit.inventory.ItemStack bukkitItem = new CraftItemStack(itemstack).clone();
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack);
BlockDispenseEvent event = new BlockDispenseEvent(block, bukkitItem, new org.bukkit.util.Vector(0, 0, 0));
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0));
if (!BlockDispenser.eventFired) {
world.getServer().getPluginManager().callEvent(event);
}
@@ -49,9 +49,9 @@ public class DispenseBehaviorEmptyBucket extends DispenseBehaviorItem {
return itemstack;
}
if (!event.getItem().equals(bukkitItem)) {
if (!event.getItem().equals(craftItem)) {
// Chain to handler for new item
ItemStack eventStack = CraftItemStack.createNMSItemStack(event.getItem());
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.a(eventStack.getItem());
if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
idispensebehavior.a(isourceblock, eventStack);

View File

@@ -29,9 +29,9 @@ public class DispenseBehaviorFilledBucket extends DispenseBehaviorItem {
int k2 = k + enumfacing.e();
if (world.isEmpty(i2, j, k2) || world.getMaterial(i2, j, k2).isBuildable()) {
org.bukkit.block.Block block = world.getWorld().getBlockAt(i, j, k);
org.bukkit.inventory.ItemStack bukkitItem = new CraftItemStack(itemstack).clone();
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack);
BlockDispenseEvent event = new BlockDispenseEvent(block, bukkitItem, new org.bukkit.util.Vector(0, 0, 0));
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0));
if (!BlockDispenser.eventFired) {
world.getServer().getPluginManager().callEvent(event);
}
@@ -40,9 +40,9 @@ public class DispenseBehaviorFilledBucket extends DispenseBehaviorItem {
return itemstack;
}
if (!event.getItem().equals(bukkitItem)) {
if (!event.getItem().equals(craftItem)) {
// Chain to handler for new item
ItemStack eventStack = CraftItemStack.createNMSItemStack(event.getItem());
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.a(eventStack.getItem());
if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
idispensebehavior.a(isourceblock, eventStack);
@@ -50,7 +50,7 @@ public class DispenseBehaviorFilledBucket extends DispenseBehaviorItem {
}
}
itembucket = (ItemBucket) CraftItemStack.createNMSItemStack(event.getItem()).getItem();
itembucket = (ItemBucket) CraftItemStack.asNMSCopy(event.getItem()).getItem();
}
// CraftBukkit end

View File

@@ -30,9 +30,9 @@ public class DispenseBehaviorFireball extends DispenseBehaviorItem {
// CraftBukkit start
ItemStack itemstack1 = itemstack.a(1);
org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockX(), isourceblock.getBlockY(), isourceblock.getBlockZ());
org.bukkit.inventory.ItemStack bukkitItem = new CraftItemStack(itemstack1).clone();
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
BlockDispenseEvent event = new BlockDispenseEvent(block, bukkitItem, new org.bukkit.util.Vector(d3, d4, d5));
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(d3, d4, d5));
if (!BlockDispenser.eventFired) {
world.getServer().getPluginManager().callEvent(event);
}
@@ -42,10 +42,10 @@ public class DispenseBehaviorFireball extends DispenseBehaviorItem {
return itemstack;
}
if (!event.getItem().equals(bukkitItem)) {
if (!event.getItem().equals(craftItem)) {
itemstack.count++;
// Chain to handler for new item
ItemStack eventStack = CraftItemStack.createNMSItemStack(event.getItem());
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.a(eventStack.getItem());
if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
idispensebehavior.a(isourceblock, eventStack);

View File

@@ -50,9 +50,9 @@ public class DispenseBehaviorItem implements IDispenseBehavior {
// CraftBukkit start
org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockX(), isourceblock.getBlockY(), isourceblock.getBlockZ());
org.bukkit.inventory.ItemStack bukkitItem = new CraftItemStack(itemstack).clone();
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack);
BlockDispenseEvent event = new BlockDispenseEvent(block, bukkitItem, new org.bukkit.util.Vector(entityitem.motX, entityitem.motY, entityitem.motZ));
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(entityitem.motX, entityitem.motY, entityitem.motZ));
if (!BlockDispenser.eventFired) {
world.getServer().getPluginManager().callEvent(event);
}
@@ -61,14 +61,14 @@ public class DispenseBehaviorItem implements IDispenseBehavior {
return false;
}
entityitem.itemStack = CraftItemStack.createNMSItemStack(event.getItem());
entityitem.itemStack = CraftItemStack.asNMSCopy(event.getItem());
entityitem.motX = event.getVelocity().getX();
entityitem.motY = event.getVelocity().getY();
entityitem.motZ = event.getVelocity().getZ();
if (!event.getItem().equals(bukkitItem)) {
if (!event.getItem().equals(craftItem)) {
// Chain to handler for new item
ItemStack eventStack = CraftItemStack.createNMSItemStack(event.getItem());
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.a(eventStack.getItem());
if (idispensebehavior != IDispenseBehavior.a && idispensebehavior.getClass() != DispenseBehaviorItem.class) {
idispensebehavior.a(isourceblock, eventStack);

View File

@@ -41,9 +41,9 @@ public class DispenseBehaviorMinecart extends DispenseBehaviorItem {
// CraftBukkit start
ItemStack itemstack1 = itemstack.a(1);
org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockX(), isourceblock.getBlockY(), isourceblock.getBlockZ());
org.bukkit.inventory.ItemStack bukkitItem = new CraftItemStack(itemstack1).clone();
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
BlockDispenseEvent event = new BlockDispenseEvent(block, bukkitItem, new org.bukkit.util.Vector(d0, d1 + d3, d2));
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(d0, d1 + d3, d2));
if (!BlockDispenser.eventFired) {
world.getServer().getPluginManager().callEvent(event);
}
@@ -53,10 +53,10 @@ public class DispenseBehaviorMinecart extends DispenseBehaviorItem {
return itemstack;
}
if (!event.getItem().equals(bukkitItem)) {
if (!event.getItem().equals(craftItem)) {
itemstack.count++;
// Chain to handler for new item
ItemStack eventStack = CraftItemStack.createNMSItemStack(event.getItem());
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.a(eventStack.getItem());
if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
idispensebehavior.a(isourceblock, eventStack);
@@ -64,7 +64,7 @@ public class DispenseBehaviorMinecart extends DispenseBehaviorItem {
}
}
itemstack1 = CraftItemStack.createNMSItemStack(event.getItem());
itemstack1 = CraftItemStack.asNMSCopy(event.getItem());
EntityMinecart entityminecart = new EntityMinecart(world, event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ(), ((ItemMinecart) itemstack1.getItem()).a);
// CraftBukkit end

View File

@@ -23,9 +23,9 @@ public class DispenseBehaviorMonsterEgg extends DispenseBehaviorItem {
World world = isourceblock.k();
ItemStack itemstack1 = itemstack.a(1);
org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockX(), isourceblock.getBlockY(), isourceblock.getBlockZ());
org.bukkit.inventory.ItemStack bukkitItem = new CraftItemStack(itemstack1).clone();
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
BlockDispenseEvent event = new BlockDispenseEvent(block, bukkitItem, new org.bukkit.util.Vector(d0, d1, d2));
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(d0, d1, d2));
if (!BlockDispenser.eventFired) {
world.getServer().getPluginManager().callEvent(event);
}
@@ -35,10 +35,10 @@ public class DispenseBehaviorMonsterEgg extends DispenseBehaviorItem {
return itemstack;
}
if (!event.getItem().equals(bukkitItem)) {
if (!event.getItem().equals(craftItem)) {
itemstack.count++;
// Chain to handler for new item
ItemStack eventStack = CraftItemStack.createNMSItemStack(event.getItem());
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.a(eventStack.getItem());
if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
idispensebehavior.a(isourceblock, eventStack);
@@ -46,7 +46,7 @@ public class DispenseBehaviorMonsterEgg extends DispenseBehaviorItem {
}
}
itemstack1 = CraftItemStack.createNMSItemStack(event.getItem());
itemstack1 = CraftItemStack.asNMSCopy(event.getItem());
ItemMonsterEgg.a(isourceblock.k(), itemstack1.getData(), event.getVelocity().getX(), event.getVelocity().getY(), event.getVelocity().getZ());
// itemstack.a(1); // Handled during event processing
// CraftBukkit end

View File

@@ -18,9 +18,9 @@ public abstract class DispenseBehaviorProjectile extends DispenseBehaviorItem {
// CraftBukkit start
ItemStack itemstack1 = itemstack.a(1);
org.bukkit.block.Block block = world.getWorld().getBlockAt(isourceblock.getBlockX(), isourceblock.getBlockY(), isourceblock.getBlockZ());
org.bukkit.inventory.ItemStack bukkitItem = new CraftItemStack(itemstack1).clone();
CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
BlockDispenseEvent event = new BlockDispenseEvent(block, bukkitItem, new org.bukkit.util.Vector((double) enumfacing.c(), 0.10000000149011612D, (double) enumfacing.e()));
BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector((double) enumfacing.c(), 0.10000000149011612D, (double) enumfacing.e()));
if (!BlockDispenser.eventFired) {
world.getServer().getPluginManager().callEvent(event);
}
@@ -30,13 +30,13 @@ public abstract class DispenseBehaviorProjectile extends DispenseBehaviorItem {
return itemstack;
}
if (!event.getItem().equals(bukkitItem)) {
if (!event.getItem().equals(craftItem)) {
itemstack.count++;
// Chain to handler for new item
ItemStack eventStack = CraftItemStack.createNMSItemStack(event.getItem());
ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.a.a(eventStack.getItem());
if (idispensebehavior != IDispenseBehavior.a && idispensebehavior != this) {
idispensebehavior.a(isourceblock, CraftItemStack.createNMSItemStack(event.getItem()));
idispensebehavior.a(isourceblock, eventStack);
return itemstack;
}
}

View File

@@ -88,9 +88,9 @@ public class EntityCow extends EntityAnimal {
}
if (--itemstack.count <= 0) {
entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, CraftItemStack.createNMSItemStack(event.getItemStack()));
entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, CraftItemStack.asNMSCopy(event.getItemStack()));
} else if (!entityhuman.inventory.pickup(new ItemStack(Item.MILK_BUCKET))) {
entityhuman.drop(CraftItemStack.createNMSItemStack(event.getItemStack()));
entityhuman.drop(CraftItemStack.asNMSCopy(event.getItemStack()));
}
// CraftBukkit end

View File

@@ -208,13 +208,13 @@ public class EntityGhast extends EntityFlying implements IMonster {
int k;
if (j > 0) {
loot.add(new CraftItemStack(Item.GHAST_TEAR.id, j));
loot.add(CraftItemStack.asNewCraftStack(Item.GHAST_TEAR, j));
}
j = this.random.nextInt(3) + this.random.nextInt(1 + i);
if (j > 0) {
loot.add(new CraftItemStack(Item.SULPHUR.id, j));
loot.add(CraftItemStack.asNewCraftStack(Item.SULPHUR, j));
}
org.bukkit.craftbukkit.event.CraftEventFactory.callEntityDeathEvent(this, loot);

View File

@@ -150,13 +150,13 @@ public class EntityIronGolem extends EntityGolem {
int k;
if (j > 0) {
loot.add(new CraftItemStack(Block.RED_ROSE.id, j));
loot.add(CraftItemStack.asNewCraftStack(Item.byId[Block.RED_ROSE.id], j));
}
k = 3 + this.random.nextInt(3);
if (k > 0) {
loot.add(new CraftItemStack(Item.IRON_INGOT.id, k));
loot.add(CraftItemStack.asNewCraftStack(Item.IRON_INGOT, k));
}
org.bukkit.craftbukkit.event.CraftEventFactory.callEntityDeathEvent(this, loot);

View File

@@ -894,7 +894,7 @@ public abstract class EntityLiving extends Entity {
if (k < 5) {
ItemStack itemstack = this.l(k <= 0 ? 1 : 0);
if (itemstack != null) {
loot.add(new org.bukkit.craftbukkit.inventory.CraftItemStack(itemstack));
loot.add(org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack));
}
}
}

View File

@@ -188,7 +188,7 @@ public class EntityMinecart extends Entity implements IInventory {
itemstack.count -= k;
// CraftBukkit - include enchantments in the new itemstack
EntityItem entityitem = new EntityItem(this.world, this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, new ItemStack(itemstack.id, k, itemstack.getData(), itemstack.getEnchantments()));
EntityItem entityitem = new EntityItem(this.world, this.locX + (double) f, this.locY + (double) f1, this.locZ + (double) f2, org.bukkit.craftbukkit.inventory.CraftItemStack.copyNMSStack(itemstack, k));
float f3 = 0.05F;
entityitem.motX = (double) ((float) this.random.nextGaussian() * f3);

View File

@@ -117,13 +117,13 @@ public class EntityPigZombie extends EntityZombie {
int j = this.random.nextInt(2 + i);
if (j > 0) {
loot.add(new CraftItemStack(Item.ROTTEN_FLESH.id, j));
loot.add(CraftItemStack.asNewCraftStack(Item.ROTTEN_FLESH, j));
}
j = this.random.nextInt(2 + i);
if (j > 0) {
loot.add(new CraftItemStack(Item.GOLD_NUGGET.id, j));
loot.add(CraftItemStack.asNewCraftStack(Item.GOLD_NUGGET, j));
}
// Determine rare item drops and add them to the loot
@@ -133,7 +133,7 @@ public class EntityPigZombie extends EntityZombie {
if (k < 5) {
ItemStack itemstack = this.l(k <= 0 ? 1 : 0);
if (itemstack != null) {
loot.add(new CraftItemStack(itemstack));
loot.add(CraftItemStack.asCraftMirror(itemstack));
}
}
}

View File

@@ -240,13 +240,13 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
if (!keepInventory) {
for (int i = 0; i < this.inventory.items.length; ++i) {
if (this.inventory.items[i] != null) {
loot.add(new CraftItemStack(this.inventory.items[i]));
loot.add(CraftItemStack.asCraftMirror(this.inventory.items[i]));
}
}
for (int i = 0; i < this.inventory.armor.length; ++i) {
if (this.inventory.armor[i] != null) {
loot.add(new CraftItemStack(this.inventory.armor[i]));
loot.add(CraftItemStack.asCraftMirror(this.inventory.armor[i]));
}
}
}

View File

@@ -167,7 +167,7 @@ public class EntitySkeleton extends EntityMonster implements IRangedEntity {
if (k < 5) {
ItemStack itemstack = this.l(k <= 0 ? 1 : 0);
if (itemstack != null) {
loot.add(new org.bukkit.craftbukkit.inventory.CraftItemStack(itemstack));
loot.add(org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack));
}
}
}

View File

@@ -56,13 +56,13 @@ public class ItemBucket extends Item {
return itemstack;
}
ItemStack result = CraftItemStack.createNMSItemStack(event.getItemStack()); // CraftBukkit - TODO: Check this stuff later... Not sure how this behavior should work
ItemStack result = CraftItemStack.asNMSCopy(event.getItemStack()); // CraftBukkit - TODO: Check this stuff later... Not sure how this behavior should work
if (--itemstack.count <= 0) {
return result; // CraftBukkit
}
if (!entityhuman.inventory.pickup(result)) { // CraftBukkit
entityhuman.drop(CraftItemStack.createNMSItemStack(event.getItemStack())); // CraftBukkit
entityhuman.drop(CraftItemStack.asNMSCopy(event.getItemStack())); // CraftBukkit
}
return itemstack;
@@ -81,13 +81,13 @@ public class ItemBucket extends Item {
return itemstack;
}
ItemStack result = CraftItemStack.createNMSItemStack(event.getItemStack()); // CraftBukkit - TODO: Check this stuff later... Not sure how this behavior should work
ItemStack result = CraftItemStack.asNMSCopy(event.getItemStack()); // CraftBukkit - TODO: Check this stuff later... Not sure how this behavior should work
if (--itemstack.count <= 0) {
return result; // CraftBukkit
}
if (!entityhuman.inventory.pickup(result)) { // CraftBukkit
entityhuman.drop(CraftItemStack.createNMSItemStack(event.getItemStack())); // CraftBukkit
entityhuman.drop(CraftItemStack.asNMSCopy(event.getItemStack())); // CraftBukkit
}
return itemstack;
@@ -101,7 +101,7 @@ public class ItemBucket extends Item {
return itemstack;
}
return CraftItemStack.createNMSItemStack(event.getItemStack());
return CraftItemStack.asNMSCopy(event.getItemStack());
}
int clickedX = i, clickedY = j, clickedZ = k;
@@ -144,7 +144,7 @@ public class ItemBucket extends Item {
// CraftBukkit end
if (this.a(world, d0, d1, d2, i, j, k) && !entityhuman.abilities.canInstantlyBuild) {
return CraftItemStack.createNMSItemStack(event.getItemStack()); // CraftBukkit
return CraftItemStack.asNMSCopy(event.getItemStack()); // CraftBukkit
}
}
} else if (this.a == 0 && movingobjectposition.entity instanceof EntityCow) {
@@ -156,7 +156,7 @@ public class ItemBucket extends Item {
return itemstack;
}
return CraftItemStack.createNMSItemStack(event.getItemStack());
return CraftItemStack.asNMSCopy(event.getItemStack());
// CraftBukkit end
}

View File

@@ -41,21 +41,6 @@ public final class ItemStack {
this.setData(k); // CraftBukkit
}
// CraftBukkit start - used to create a new ItemStack, specifying the enchantments at time of creation.
public ItemStack(int id, int count, int data, NBTTagList enchantments) {
this(id, count, data);
// taken from .addEnchantment
if (enchantments != null && Item.byId[this.id].getMaxStackSize() == 1) {
if (this.tag == null) {
this.setTag(new NBTTagCompound());
}
this.tag.set("ench", enchantments.clone()); // modify this part to use passed in enchantments list
// TODO Books, Skulls, Item Names, Item Lore
}
}
// CraftBukkit end
public static ItemStack a(NBTTagCompound nbttagcompound) {
ItemStack itemstack = new ItemStack();

View File

@@ -35,13 +35,9 @@ public class NBTTagCompound extends NBTBase {
} catch (java.io.IOException ex) {
ex.printStackTrace();
}
// CraftBukkit end
}
public void remove(String name) {
map.remove(name);
}
// CraftBukkit end
void load(DataInput datainput) {
this.map.clear();

View File

@@ -1230,11 +1230,11 @@ public class NetServerHandler extends NetHandler {
if (cursor == null) {
this.player.inventory.setCarried((ItemStack) null);
} else {
this.player.inventory.setCarried(CraftItemStack.createNMSItemStack(cursor));
this.player.inventory.setCarried(CraftItemStack.asNMSCopy(cursor));
}
org.bukkit.inventory.ItemStack item = event.getCurrentItem();
if (item != null) {
itemstack = CraftItemStack.createNMSItemStack(item);
itemstack = CraftItemStack.asNMSCopy(item);
if (packet102windowclick.slot == -999) {
this.player.drop(itemstack);
} else {
@@ -1307,16 +1307,16 @@ public class NetServerHandler extends NetHandler {
if (item == null) {
this.player.defaultContainer.setItem(packet107setcreativeslot.slot, (ItemStack) null);
} else {
this.player.defaultContainer.setItem(packet107setcreativeslot.slot, CraftItemStack.createNMSItemStack(item));
this.player.defaultContainer.setItem(packet107setcreativeslot.slot, CraftItemStack.asNMSCopy(item));
}
} else if (item != null) {
this.player.drop(CraftItemStack.createNMSItemStack(item));
this.player.drop(CraftItemStack.asNMSCopy(item));
}
return;
case DENY:
// TODO: Will this actually work?
if (packet107setcreativeslot.slot > -1) {
this.player.netServerHandler.sendPacket(new Packet103SetSlot(this.player.defaultContainer.windowId, packet107setcreativeslot.slot, CraftItemStack.createNMSItemStack(item)));
this.player.netServerHandler.sendPacket(new Packet103SetSlot(this.player.defaultContainer.windowId, packet107setcreativeslot.slot, CraftItemStack.asNMSCopy(item)));
}
return;
case DEFAULT:

View File

@@ -23,7 +23,7 @@ public class ShapedRecipes implements IRecipe {
// CraftBukkit start
public org.bukkit.inventory.ShapedRecipe toBukkitRecipe() {
CraftItemStack result = new CraftItemStack(this.result);
CraftItemStack result = CraftItemStack.asCraftMirror(this.result);
CraftShapedRecipe recipe = new CraftShapedRecipe(result, this);
switch (this.height) {
case 1:

View File

@@ -22,7 +22,7 @@ public class ShapelessRecipes implements IRecipe {
// CraftBukkit start
@SuppressWarnings("unchecked")
public org.bukkit.inventory.ShapelessRecipe toBukkitRecipe() {
CraftItemStack result = new CraftItemStack(this.result);
CraftItemStack result = CraftItemStack.asCraftMirror(this.result);
CraftShapelessRecipe recipe = new CraftShapelessRecipe(result, this);
for (ItemStack stack : (List<ItemStack>) this.ingredients) {
if (stack != null) {

View File

@@ -172,7 +172,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
if (!this.world.isStatic) {
// CraftBukkit start - handle multiple elapsed ticks
if (this.burnTime <= 0 && this.canBurn() && this.items[1] != null) { // CraftBukkit - == to <=
CraftItemStack fuel = new CraftItemStack(this.items[1]);
CraftItemStack fuel = CraftItemStack.asCraftMirror(this.items[1]);
FurnaceBurnEvent furnaceBurnEvent = new FurnaceBurnEvent(this.world.getWorld().getBlockAt(this.x, this.y, this.z), fuel, fuelTime(this.items[1]));
this.world.getServer().getPluginManager().callEvent(furnaceBurnEvent);
@@ -237,8 +237,8 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
ItemStack itemstack = RecipesFurnace.getInstance().getResult(this.items[0].getItem().id);
// CraftBukkit start
CraftItemStack source = new CraftItemStack(this.items[0]);
CraftItemStack result = new CraftItemStack(itemstack.cloneItemStack());
CraftItemStack source = CraftItemStack.asCraftMirror(this.items[0]);
CraftItemStack result = CraftItemStack.asCraftMirror(itemstack.cloneItemStack());
FurnaceSmeltEvent furnaceSmeltEvent = new FurnaceSmeltEvent(this.world.getWorld().getBlockAt(this.x, this.y, this.z), source, result);
this.world.getServer().getPluginManager().callEvent(furnaceSmeltEvent);
@@ -247,7 +247,7 @@ public class TileEntityFurnace extends TileEntity implements IInventory {
return;
}
itemstack = CraftItemStack.createNMSItemStack(furnaceSmeltEvent.getResult());
itemstack = CraftItemStack.asNMSCopy(furnaceSmeltEvent.getResult());
if (this.items[2] == null) {
this.items[2] = itemstack.cloneItemStack();