aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0555-Add-BellRingEvent.patch
blob: 6352b441280d354f5edb35a63dfe7493df4011f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Eearslya Sleiarion <eearslya@gmail.com>
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..24754057bc83577f4854262bbb82db355591270e 100644
--- a/src/main/java/net/minecraft/world/level/block/BlockBell.java
+++ b/src/main/java/net/minecraft/world/level/block/BlockBell.java
@@ -1,8 +1,11 @@
 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;
+import net.minecraft.server.MCUtil;
 import net.minecraft.sounds.SoundCategory;
 import net.minecraft.sounds.SoundEffects;
 import net.minecraft.stats.StatisticList;
@@ -89,7 +92,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 +126,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 +138,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;