From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Eearslya Sleiarion Date: Sun, 23 Aug 2020 13:04:02 +0200 Subject: [PATCH] Add BellRingEvent Add a new event, BellRingEvent, to trigger whenever a player rings a village bell. Passes along the bell block and the player who rang it. diff --git a/src/main/java/net/minecraft/world/level/block/BlockBell.java b/src/main/java/net/minecraft/world/level/block/BlockBell.java index 687f7acd8254294b568c9adf3e72d02d12551381..60beeeff73efc155029c5f214ead3f520f2c3bac 100644 --- a/src/main/java/net/minecraft/world/level/block/BlockBell.java +++ b/src/main/java/net/minecraft/world/level/block/BlockBell.java @@ -1,5 +1,7 @@ package net.minecraft.world.level.block; +import io.papermc.paper.event.block.BellRingEvent; + import javax.annotation.Nullable; import net.minecraft.core.BlockPosition; import net.minecraft.core.EnumDirection; @@ -89,7 +91,7 @@ public class BlockBell extends BlockTileEntity { boolean flag1 = !flag || this.a(iblockdata, enumdirection, movingobjectpositionblock.getPos().y - (double) blockposition.getY()); if (flag1) { - boolean flag2 = this.a(world, blockposition, enumdirection); + boolean flag2 = this.handleBellRing(world, blockposition, enumdirection, entityhuman); // Paper if (flag2 && entityhuman != null) { entityhuman.a(StatisticList.BELL_RING); @@ -123,6 +125,11 @@ public class BlockBell extends BlockTileEntity { } public boolean a(World world, BlockPosition blockposition, @Nullable EnumDirection enumdirection) { + // Paper start - add ringer param + return this.handleBellRing(world, blockposition, enumdirection, null); + } + public boolean handleBellRing(World world, BlockPosition blockposition, @Nullable EnumDirection enumdirection, @Nullable Entity ringer) { + // Paper end TileEntity tileentity = world.getTileEntity(blockposition); if (!world.isClientSide && tileentity instanceof TileEntityBell) { @@ -130,6 +137,7 @@ public class BlockBell extends BlockTileEntity { enumdirection = (EnumDirection) world.getType(blockposition).get(BlockBell.a); } + if (!new BellRingEvent(world.getWorld().getBlockAt(MCUtil.toLocation(world, blockposition)), ringer == null ? null : ringer.getBukkitEntity()).callEvent()) return false; // Paper - BellRingEvent ((TileEntityBell) tileentity).a(enumdirection); world.playSound((EntityHuman) null, blockposition, SoundEffects.BLOCK_BELL_USE, SoundCategory.BLOCKS, 2.0F, 1.0F); return true;