summaryrefslogtreecommitdiffstats
path: root/nms-patches/EntityCow.patch
diff options
context:
space:
mode:
Diffstat (limited to 'nms-patches/EntityCow.patch')
-rw-r--r--nms-patches/EntityCow.patch42
1 files changed, 42 insertions, 0 deletions
diff --git a/nms-patches/EntityCow.patch b/nms-patches/EntityCow.patch
new file mode 100644
index 00000000..c8aafbcc
--- /dev/null
+++ b/nms-patches/EntityCow.patch
@@ -0,0 +1,42 @@
+--- ../work/decompile-bb26c12b/net/minecraft/server/EntityCow.java 2014-11-27 08:59:46.657422040 +1100
++++ src/main/java/net/minecraft/server/EntityCow.java 2014-11-27 08:42:10.168850880 +1100
+@@ -1,5 +1,10 @@
+ package net.minecraft.server;
+
++// CraftBukkit start
++import org.bukkit.craftbukkit.event.CraftEventFactory;
++import org.bukkit.craftbukkit.inventory.CraftItemStack;
++// CraftBukkit end
++
+ public class EntityCow extends EntityAnimal {
+
+ public EntityCow(World world) {
+@@ -69,13 +74,23 @@
+
+ public boolean a(EntityHuman entityhuman) {
+ ItemStack itemstack = entityhuman.inventory.getItemInHand();
+-
++
+ if (itemstack != null && itemstack.getItem() == Items.BUCKET && !entityhuman.abilities.canInstantlyBuild) {
+- if (itemstack.count-- == 1) {
+- entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, new ItemStack(Items.MILK_BUCKET));
+- } else if (!entityhuman.inventory.pickup(new ItemStack(Items.MILK_BUCKET))) {
+- entityhuman.drop(new ItemStack(Items.MILK_BUCKET, 1, 0), false);
++ // CraftBukkit start - Got milk?
++ org.bukkit.Location loc = this.getBukkitEntity().getLocation();
++ org.bukkit.event.player.PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent(entityhuman, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), null, itemstack, Items.MILK_BUCKET);
++
++ if (event.isCancelled()) {
++ return false;
++ }
++
++ ItemStack result = CraftItemStack.asNMSCopy(event.getItemStack());
++ if (--itemstack.count <= 0) {
++ entityhuman.inventory.setItem(entityhuman.inventory.itemInHandIndex, result);
++ } else if (!entityhuman.inventory.pickup(result)) {
++ entityhuman.drop(result, false);
+ }
++ // CraftBukkit end
+
+ return true;
+ } else {