summaryrefslogtreecommitdiffstats
path: root/nms-patches/ItemBucket.patch
diff options
context:
space:
mode:
authorThinkofdeath <thinkofdeath@spigotmc.org>2014-11-26 08:32:16 +1100
committermd_5 <git@md-5.net>2014-11-28 17:16:30 +1100
commit24557bc2b37deb6a0edf497d547471832457b1dd (patch)
treec560572889a3b0b34964a0cddb35dc87fda3c914 /nms-patches/ItemBucket.patch
parenta4805dbd77da057cc1ea0bf344379bc6e53ca1f6 (diff)
downloadcraftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.tar
craftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.tar.gz
craftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.tar.lz
craftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.tar.xz
craftbukkit-24557bc2b37deb6a0edf497d547471832457b1dd.zip
Update to Minecraft 1.8
For more information please see http://www.spigotmc.org/
Diffstat (limited to 'nms-patches/ItemBucket.patch')
-rw-r--r--nms-patches/ItemBucket.patch102
1 files changed, 102 insertions, 0 deletions
diff --git a/nms-patches/ItemBucket.patch b/nms-patches/ItemBucket.patch
new file mode 100644
index 00000000..d037c57b
--- /dev/null
+++ b/nms-patches/ItemBucket.patch
@@ -0,0 +1,102 @@
+--- ../work/decompile-bb26c12b/net/minecraft/server/ItemBucket.java 2014-11-27 08:59:46.777421512 +1100
++++ src/main/java/net/minecraft/server/ItemBucket.java 2014-11-27 08:42:10.156850903 +1100
+@@ -1,5 +1,12 @@
+ package net.minecraft.server;
+
++// CraftBukkit start
++import org.bukkit.craftbukkit.event.CraftEventFactory;
++import org.bukkit.craftbukkit.inventory.CraftItemStack;
++import org.bukkit.event.player.PlayerBucketEmptyEvent;
++import org.bukkit.event.player.PlayerBucketFillEvent;
++// CraftBukkit end
++
+ public class ItemBucket extends Item {
+
+ private Block a;
+@@ -33,19 +40,41 @@
+ Material material = iblockdata.getBlock().getMaterial();
+
+ if (material == Material.WATER && ((Integer) iblockdata.get(BlockFluids.LEVEL)).intValue() == 0) {
++ // CraftBukkit start
++ PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent(entityhuman, blockposition.getX(), blockposition.getY(), blockposition.getZ(), null, itemstack, Items.WATER_BUCKET);
++
++ if (event.isCancelled()) {
++ return itemstack;
++ }
++ // CraftBukkit end
+ world.setAir(blockposition);
+ entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]);
+- return this.a(itemstack, entityhuman, Items.WATER_BUCKET);
++ return this.a(itemstack, entityhuman, Items.WATER_BUCKET, event.getItemStack()); // CraftBukkit - added Event stack
+ }
+
+ if (material == Material.LAVA && ((Integer) iblockdata.get(BlockFluids.LEVEL)).intValue() == 0) {
++ // CraftBukkit start
++ PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent(entityhuman, blockposition.getX(), blockposition.getY(), blockposition.getZ(), null, itemstack, Items.LAVA_BUCKET);
++
++ if (event.isCancelled()) {
++ return itemstack;
++ }
++ // CraftBukkit end
+ world.setAir(blockposition);
+ entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]);
+- return this.a(itemstack, entityhuman, Items.LAVA_BUCKET);
++ return this.a(itemstack, entityhuman, Items.LAVA_BUCKET, event.getItemStack()); // CraftBukkit - added Event stack
+ }
+ } else {
+ if (this.a == Blocks.AIR) {
+- return new ItemStack(Items.BUCKET);
++ // CraftBukkit start
++ PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(entityhuman, blockposition.getX(), blockposition.getY(), blockposition.getZ(), movingobjectposition.direction, itemstack);
++
++ if (event.isCancelled()) {
++ return itemstack;
++ }
++
++ return CraftItemStack.asNMSCopy(event.getItemStack());
++ // CraftBukkit end
+ }
+
+ BlockPosition blockposition1 = blockposition.shift(movingobjectposition.direction);
+@@ -53,10 +82,18 @@
+ if (!entityhuman.a(blockposition1, movingobjectposition.direction, itemstack)) {
+ return itemstack;
+ }
++
++ // CraftBukkit start
++ PlayerBucketEmptyEvent event = CraftEventFactory.callPlayerBucketEmptyEvent(entityhuman, blockposition.getX(), blockposition.getY(), blockposition.getZ(), movingobjectposition.direction, itemstack);
++
++ if (event.isCancelled()) {
++ return itemstack;
++ }
++ // CraftBukkit end
+
+ if (this.a(world, blockposition1) && !entityhuman.abilities.canInstantlyBuild) {
+ entityhuman.b(StatisticList.USE_ITEM_COUNT[Item.getId(this)]);
+- return new ItemStack(Items.BUCKET);
++ return CraftItemStack.asNMSCopy(event.getItemStack()); // CraftBukkit
+ }
+ }
+ }
+@@ -64,15 +101,16 @@
+ return itemstack;
+ }
+ }
+-
+- private ItemStack a(ItemStack itemstack, EntityHuman entityhuman, Item item) {
++
++ // CraftBukkit - added ob.ItemStack result - TODO: Is this... the right way to handle this?
++ private ItemStack a(ItemStack itemstack, EntityHuman entityhuman, Item item, org.bukkit.inventory.ItemStack result) {
+ if (entityhuman.abilities.canInstantlyBuild) {
+ return itemstack;
+ } else if (--itemstack.count <= 0) {
+- return new ItemStack(item);
++ return CraftItemStack.asNMSCopy(result); // CraftBukkit
+ } else {
+- if (!entityhuman.inventory.pickup(new ItemStack(item))) {
+- entityhuman.drop(new ItemStack(item, 1, 0), false);
++ if (!entityhuman.inventory.pickup(CraftItemStack.asNMSCopy(result))) {
++ entityhuman.drop(CraftItemStack.asNMSCopy(result), false);
+ }
+
+ return itemstack;