--- ../work/decompile-8eb82bde//net/minecraft/server/EntityCow.java 2014-11-28 17:43:43.069707436 +0000 +++ src/main/java/net/minecraft/server/EntityCow.java 2014-11-28 17:38:19.000000000 +0000 @@ -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 {