From 956e1fe4616a73ecfa62268e5e2d38e36c2014ee Mon Sep 17 00:00:00 2001 From: Sotr Date: Thu, 7 Mar 2019 12:42:37 +0800 Subject: [PATCH] Upstream Paper --- .../java/net/minecraft/server/EntityBoat.java | 2 +- .../minecraft/server/EntityLargeFireball.java | 2 +- .../net/minecraft/server/EntityLiving.java | 2 +- .../server/EntityMinecartAbstract.java | 2 +- .../net/minecraft/server/EntityTNTPrimed.java | 5 ++-- .../bukkit/craftbukkit/entity/CraftVex.java | 10 ++++++++ .../inventory/InventoryWrapper.java | 2 +- .../inventory/InventoryWrapperTest.java | 23 +++++++++++++++++++ 8 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 src/test/java/org/bukkit/craftbukkit/inventory/InventoryWrapperTest.java diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java index d132afb18..35b86fd30 100644 --- a/src/main/java/net/minecraft/server/EntityBoat.java +++ b/src/main/java/net/minecraft/server/EntityBoat.java @@ -119,7 +119,7 @@ public class EntityBoat extends Entity { this.world.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { - return true; + return false; } // f = event.getDamage(); // TODO Why don't we do this? // CraftBukkit end diff --git a/src/main/java/net/minecraft/server/EntityLargeFireball.java b/src/main/java/net/minecraft/server/EntityLargeFireball.java index cb85392d7..d707990cb 100644 --- a/src/main/java/net/minecraft/server/EntityLargeFireball.java +++ b/src/main/java/net/minecraft/server/EntityLargeFireball.java @@ -26,7 +26,7 @@ public class EntityLargeFireball extends EntityFireball { boolean flag = this.world.getGameRules().getBoolean("mobGriefing"); // CraftBukkit start - fire ExplosionPrimeEvent - ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) org.bukkit.craftbukkit.entity.CraftEntity.getEntity(this.world.getServer(), this)); + ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); this.world.getServer().getPluginManager().callEvent(event); if (!event.isCancelled()) { diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java index b4f21171b..d134d0fae 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -939,7 +939,7 @@ public abstract class EntityLiving extends Entity { return false; } else if (this.world.isClientSide) { return false; - } else if (this.getHealth() <= 0.0F) { + } else if (this.dead || this.killed || this.getHealth() <= 0.0F) { // CraftBukkit - Don't allow entities that got set to dead/killed elsewhere to get damaged and die return false; } else if (damagesource.p() && this.hasEffect(MobEffects.FIRE_RESISTANCE)) { return false; diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java index 41e8a4b50..f83a695a1 100644 --- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java +++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java @@ -118,7 +118,7 @@ public abstract class EntityMinecartAbstract extends Entity implements INamableT this.world.getServer().getPluginManager().callEvent(event); if (event.isCancelled()) { - return true; + return false; } f = (float) event.getDamage(); diff --git a/src/main/java/net/minecraft/server/EntityTNTPrimed.java b/src/main/java/net/minecraft/server/EntityTNTPrimed.java index e5170b4e6..7a8670323 100644 --- a/src/main/java/net/minecraft/server/EntityTNTPrimed.java +++ b/src/main/java/net/minecraft/server/EntityTNTPrimed.java @@ -93,9 +93,8 @@ public class EntityTNTPrimed extends Entity { // CraftBukkit start // float f = 4.0F; - org.bukkit.craftbukkit.CraftServer server = this.world.getServer(); - ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) org.bukkit.craftbukkit.entity.CraftEntity.getEntity(server, this)); - server.getPluginManager().callEvent(event); + ExplosionPrimeEvent event = new ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); + this.world.getServer().getPluginManager().callEvent(event); if (!event.isCancelled()) { this.world.createExplosion(this, this.locX, this.locY + (double) (this.length / 16.0F), this.locZ, event.getRadius(), event.getFire(), true); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java index c23b1e960..b09da64c3 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java @@ -38,4 +38,14 @@ public class CraftVex extends CraftMonster implements Vex { public EntityType getType() { return EntityType.VEX; } + + @Override + public boolean isCharging() { + return getHandle().dA(); + } + + @Override + public void setCharging(boolean charging) { + getHandle().a(charging); + } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java b/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java index 9c5ec924e..c280dbbc8 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/InventoryWrapper.java @@ -128,7 +128,7 @@ public class InventoryWrapper implements IInventory { List items = new ArrayList(size); for (int i = 0; i < size; i++) { - items.set(i, getItem(i)); + items.add(getItem(i)); } return items; diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/InventoryWrapperTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/InventoryWrapperTest.java new file mode 100644 index 000000000..9448c1882 --- /dev/null +++ b/src/test/java/org/bukkit/craftbukkit/inventory/InventoryWrapperTest.java @@ -0,0 +1,23 @@ +package org.bukkit.craftbukkit.inventory; + +import junit.framework.Assert; +import org.bukkit.Material; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.junit.Test; + +public class InventoryWrapperTest { + + @Test + public void test() { + Inventory raw = new CraftInventoryCustom(null, 9); + raw.addItem(new ItemStack(Material.STONE)); + + Assert.assertTrue(raw.contains(Material.STONE)); + + InventoryWrapper wrapper = new InventoryWrapper(raw); + CraftInventory proxy = new CraftInventory(wrapper); + + Assert.assertTrue(proxy.contains(Material.STONE)); + } +}