aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0128-Add-TNTPrimeEvent.patch
blob: 20d4d46dccc1d890a146a256c1397b5ba23cfb9c (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mark Vainomaa <mikroskeem@mikroskeem.eu>
Date: Sun, 15 Jul 2018 22:17:55 +0300
Subject: [PATCH] Add TNTPrimeEvent


diff --git a/src/main/java/com/destroystokyo/paper/event/block/TNTPrimeEvent.java b/src/main/java/com/destroystokyo/paper/event/block/TNTPrimeEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..b17bdd323c25e956a3e851fc44aefa8b1b1d2965
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/event/block/TNTPrimeEvent.java
@@ -0,0 +1,125 @@
+package com.destroystokyo.paper.event.block;
+
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.Player;
+import org.bukkit.entity.TNTPrimed;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.block.BlockEvent;
+import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Called when TNT block is about to turn into {@link TNTPrimed}
+ * <p>
+ * Cancelling it won't turn TNT into {@link TNTPrimed} and leaves
+ * the TNT block as-is
+ *
+ * @author Mark Vainomaa
+ * @deprecated use {@link org.bukkit.event.block.TNTPrimeEvent}
+ */
+@Deprecated(forRemoval = true, since = "1.19.4")
+public class TNTPrimeEvent extends BlockEvent implements Cancellable {
+
+    private static final HandlerList HANDLER_LIST = new HandlerList();
+
+    @NotNull private final PrimeReason reason;
+    @Nullable private final Entity primerEntity;
+
+    private boolean cancelled;
+
+    @ApiStatus.Internal
+    public TNTPrimeEvent(@NotNull Block theBlock, @NotNull PrimeReason reason, @Nullable Entity primerEntity) {
+        super(theBlock);
+        this.reason = reason;
+        this.primerEntity = primerEntity;
+    }
+
+    /**
+     * Gets the TNT prime reason
+     *
+     * @return Prime reason
+     */
+    @NotNull
+    public PrimeReason getReason() {
+        return this.reason;
+    }
+
+    /**
+     * Gets the TNT primer {@link Entity}.
+     * <p>
+     * It's {@code null} if {@link #getReason()} is {@link PrimeReason#REDSTONE} or {@link PrimeReason#FIRE}.
+     * It's not {@code null} if {@link #getReason()} is {@link PrimeReason#ITEM} or {@link PrimeReason#PROJECTILE}
+     * It might be {@code null} if {@link #getReason()} is {@link PrimeReason#EXPLOSION}
+     *
+     * @return The {@link Entity} who primed the TNT
+     */
+    @Nullable
+    public Entity getPrimerEntity() {
+        return this.primerEntity;
+    }
+
+    /**
+     * Gets whether spawning {@link TNTPrimed} should be cancelled or not
+     *
+     * @return Whether spawning {@link TNTPrimed} should be cancelled or not
+     */
+    @Override
+    public boolean isCancelled() {
+        return this.cancelled;
+    }
+
+    /**
+     * Sets whether to cancel spawning {@link TNTPrimed} or not
+     *
+     * @param cancel whether spawning {@link TNTPrimed} should be cancelled or not
+     */
+    @Override
+    public void setCancelled(boolean cancel) {
+        this.cancelled = cancel;
+    }
+
+    @NotNull
+    @Override
+    public HandlerList getHandlers() {
+        return HANDLER_LIST;
+    }
+
+    @NotNull
+    public static HandlerList getHandlerList() {
+        return HANDLER_LIST;
+    }
+
+    public enum PrimeReason {
+        /**
+         * When TNT prime was caused by other explosion (chain reaction)
+         */
+        EXPLOSION,
+
+        /**
+         * When TNT prime was caused by fire
+         */
+        FIRE,
+
+        /**
+         * When {@link Player} used {@link Material#FLINT_AND_STEEL} or
+         * {@link Material#FIRE_CHARGE} on given TNT block
+         */
+        ITEM,
+
+        /**
+         * When TNT prime was caused by an {@link Entity} shooting TNT
+         * using a bow with {@link Enchantment#FLAME} enchantment
+         */
+        PROJECTILE,
+
+        /**
+         * When redstone power triggered the TNT prime
+         */
+        REDSTONE
+    }
+}