From c16bf07e85feb5e7bcb3e4a98048de36fe7859f2 Mon Sep 17 00:00:00 2001 From: feildmaster Date: Sun, 25 Mar 2012 20:58:12 -0500 Subject: [PATCH] [Bleeding] Allow CraftItem to be backed by non-EntityItems. Fixes BUKKIT-1351 --- .../java/net/minecraft/server/EntityArrow.java | 9 ++++----- .../org/bukkit/craftbukkit/entity/CraftItem.java | 14 +++++++------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/minecraft/server/EntityArrow.java b/src/main/java/net/minecraft/server/EntityArrow.java index a8759c397c..2ae8a0077d 100644 --- a/src/main/java/net/minecraft/server/EntityArrow.java +++ b/src/main/java/net/minecraft/server/EntityArrow.java @@ -3,7 +3,6 @@ package net.minecraft.server; import java.util.List; // CraftBukkit start -import org.bukkit.Bukkit; import org.bukkit.entity.Projectile; import org.bukkit.event.entity.EntityCombustByEntityEvent; import org.bukkit.event.entity.ProjectileHitEvent; @@ -215,7 +214,7 @@ public class EntityArrow extends Entity { if (movingobjectposition.entity.damageEntity(damagesource, l)) { if (this.isBurning() && (!(movingobjectposition.entity instanceof EntityPlayer) || this.world.pvpMode)) { // CraftBukkit - abide by pvp setting if destination is a player. EntityCombustByEntityEvent combustEvent = new EntityCombustByEntityEvent(this.getBukkitEntity(), entity.getBukkitEntity(), 5); - Bukkit.getPluginManager().callEvent(combustEvent); + org.bukkit.Bukkit.getPluginManager().callEvent(combustEvent); if (!combustEvent.isCancelled()) { movingobjectposition.entity.setOnFire(combustEvent.getDuration()); @@ -345,11 +344,11 @@ public class EntityArrow extends Entity { public void a_(EntityHuman entityhuman) { if (!this.world.isStatic) { // CraftBukkit start - ItemStack itemstack = new ItemStack(Item.ARROW, 1); + ItemStack itemstack = new ItemStack(Item.ARROW); if (this.inGround && this.fromPlayer && this.shake <= 0 && entityhuman.inventory.canHold(itemstack) > 0) { - net.minecraft.server.EntityItem item = new net.minecraft.server.EntityItem(this.world, this.locX, this.locY, this.locZ, itemstack); + EntityItem item = new EntityItem(this.world, this.locX, this.locY, this.locZ, itemstack); - PlayerPickupItemEvent event = new PlayerPickupItemEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), new org.bukkit.craftbukkit.entity.CraftItem(this.world.getServer(), item), 0); + PlayerPickupItemEvent event = new PlayerPickupItemEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), new org.bukkit.craftbukkit.entity.CraftItem(this.world.getServer(), this, item), 0); this.world.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java index 36143dbaf9..1612cc4be6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java @@ -1,5 +1,6 @@ package org.bukkit.craftbukkit.entity; +import net.minecraft.server.Entity; import net.minecraft.server.EntityItem; import org.bukkit.entity.EntityType; @@ -11,9 +12,13 @@ import org.bukkit.craftbukkit.CraftServer; public class CraftItem extends CraftEntity implements Item { private EntityItem item; - public CraftItem(CraftServer server, EntityItem entity) { + public CraftItem(CraftServer server, Entity entity, EntityItem item) { super(server, entity); - this.item = entity; + this.item = item; + } + + public CraftItem(CraftServer server, EntityItem entity) { + this(server, entity, entity); } public ItemStack getItemStack() { @@ -32,11 +37,6 @@ public class CraftItem extends CraftEntity implements Item { item.pickupDelay = delay; } - @Override - public EntityItem getHandle() { - return (EntityItem) entity; - } - @Override public String toString() { return "CraftItem";