mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-10 12:02:36 +01:00
8b26bb8f3e
By: md_5 <git@md-5.net>
41 lines
2.2 KiB
Diff
41 lines
2.2 KiB
Diff
--- a/net/minecraft/world/entity/animal/Bucketable.java
|
|
+++ b/net/minecraft/world/entity/animal/Bucketable.java
|
|
@@ -15,6 +15,14 @@
|
|
import net.minecraft.world.item.Items;
|
|
import net.minecraft.world.level.World;
|
|
|
|
+// CraftBukkit start
|
|
+import net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata;
|
|
+import net.minecraft.network.protocol.game.PacketPlayOutSpawnEntity;
|
|
+import org.bukkit.craftbukkit.event.CraftEventFactory;
|
|
+import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
|
+import org.bukkit.event.player.PlayerBucketEntityEvent;
|
|
+// CraftBukkit end
|
|
+
|
|
public interface Bucketable {
|
|
|
|
boolean fromBucket();
|
|
@@ -94,10 +102,22 @@
|
|
ItemStack itemstack = entityhuman.getItemInHand(enumhand);
|
|
|
|
if (itemstack.getItem() == Items.WATER_BUCKET && t0.isAlive()) {
|
|
- t0.playSound(((Bucketable) t0).getPickupSound(), 1.0F, 1.0F);
|
|
+ // CraftBukkit start
|
|
+ // t0.playSound(((Bucketable) t0).getPickupSound(), 1.0F, 1.0F); // CraftBukkit - moved down
|
|
ItemStack itemstack1 = ((Bucketable) t0).getBucketItemStack();
|
|
|
|
((Bucketable) t0).saveToBucketTag(itemstack1);
|
|
+
|
|
+ PlayerBucketEntityEvent playerBucketFishEvent = CraftEventFactory.callPlayerFishBucketEvent(t0, entityhuman, itemstack, itemstack1, enumhand);
|
|
+ itemstack1 = CraftItemStack.asNMSCopy(playerBucketFishEvent.getEntityBucket());
|
|
+ if (playerBucketFishEvent.isCancelled()) {
|
|
+ ((EntityPlayer) entityhuman).containerMenu.sendAllDataToRemote(); // We need to update inventory to resync client's bucket
|
|
+ ((EntityPlayer) entityhuman).connection.send(new PacketPlayOutSpawnEntity(t0)); // We need to play out these packets as the client assumes the fish is gone
|
|
+ t0.getEntityData().refresh((EntityPlayer) entityhuman); // Need to send data such as the display name to client
|
|
+ return Optional.of(EnumInteractionResult.FAIL);
|
|
+ }
|
|
+ t0.playSound(((Bucketable) t0).getPickupSound(), 1.0F, 1.0F);
|
|
+ // CraftBukkit end
|
|
ItemStack itemstack2 = ItemLiquidUtil.createFilledResult(itemstack, entityhuman, itemstack1, false);
|
|
|
|
entityhuman.setItemInHand(enumhand, itemstack2);
|