geforkt von Mirrors/Paper
36f34f01c0
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: da9ef3c5 #496: Add methods to get/set ItemStacks in EquipmentSlots 3abebc9f #492: Let Tameable extend Animals rather than Entity 941111a0 #495: Expose ItemStack and hand used in PlayerShearEntityEvent 4fe19cae #494: InventoryView - Add missing Brewing FUEL_TIME CraftBukkit Changes:933e9094
#664: Add methods to get/set ItemStacks in EquipmentSlots18722312
#662: Expose ItemStack and hand used in PlayerShearEntityEvent
127 Zeilen
3.8 KiB
Diff
127 Zeilen
3.8 KiB
Diff
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..73dabb82c7fbea3f0cccade0a2944b11a80ede06
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/event/block/TNTPrimeEvent.java
|
|
@@ -0,0 +1,114 @@
|
|
+package com.destroystokyo.paper.event.block;
|
|
+
|
|
+import org.bukkit.block.Block;
|
|
+import org.bukkit.entity.Entity;
|
|
+import org.bukkit.event.Cancellable;
|
|
+import org.bukkit.event.HandlerList;
|
|
+import org.bukkit.event.block.BlockEvent;
|
|
+import org.jetbrains.annotations.NotNull;
|
|
+import org.jetbrains.annotations.Nullable;
|
|
+
|
|
+/**
|
|
+ * Called when TNT block is about to turn into {@link org.bukkit.entity.TNTPrimed}
|
|
+ * <p>
|
|
+ * Cancelling it won't turn TNT into {@link org.bukkit.entity.TNTPrimed} and leaves
|
|
+ * the TNT block as-is
|
|
+ *
|
|
+ * @author Mark Vainomaa
|
|
+ */
|
|
+public class TNTPrimeEvent extends BlockEvent implements Cancellable {
|
|
+ private static final HandlerList handlers = new HandlerList();
|
|
+ private boolean cancelled;
|
|
+ @NotNull private PrimeReason reason;
|
|
+ @Nullable private Entity primerEntity;
|
|
+
|
|
+ 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}.
|
|
+ *
|
|
+ * It's null if {@link #getReason()} is {@link PrimeReason#REDSTONE} or {@link PrimeReason#FIRE}.
|
|
+ * It's not null if {@link #getReason()} is {@link PrimeReason#ITEM} or {@link PrimeReason#PROJECTILE}
|
|
+ * It might be 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 org.bukkit.entity.TNTPrimed} should be cancelled or not
|
|
+ *
|
|
+ * @return Whether spawning {@link org.bukkit.entity.TNTPrimed} should be cancelled or not
|
|
+ */
|
|
+ @Override
|
|
+ public boolean isCancelled() {
|
|
+ return this.cancelled;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Sets whether to cancel spawning {@link org.bukkit.entity.TNTPrimed} or not
|
|
+ *
|
|
+ * @param cancel whether spawning {@link org.bukkit.entity.TNTPrimed} should be cancelled or not
|
|
+ */
|
|
+ @Override
|
|
+ public void setCancelled(boolean cancel) {
|
|
+ this.cancelled = cancel;
|
|
+ }
|
|
+
|
|
+ @Nullable
|
|
+ @Override
|
|
+ public HandlerList getHandlers() {
|
|
+ return handlers;
|
|
+ }
|
|
+
|
|
+ @Nullable
|
|
+ public static HandlerList getHandlerList() {
|
|
+ return handlers;
|
|
+ }
|
|
+
|
|
+ public enum PrimeReason {
|
|
+ /**
|
|
+ * When TNT prime was caused by other explosion (chain reaction)
|
|
+ */
|
|
+ EXPLOSION,
|
|
+
|
|
+ /**
|
|
+ * When TNT prime was caused by fire
|
|
+ */
|
|
+ FIRE,
|
|
+
|
|
+ /**
|
|
+ * When {@link org.bukkit.entity.Player} used {@link org.bukkit.Material#FLINT_AND_STEEL} or
|
|
+ * {@link org.bukkit.Material#FIRE_CHARGE} on given TNT block
|
|
+ */
|
|
+ ITEM,
|
|
+
|
|
+ /**
|
|
+ * When TNT prime was caused by an {@link Entity} shooting TNT
|
|
+ * using a bow with {@link org.bukkit.enchantments.Enchantment#ARROW_FIRE} enchantment
|
|
+ */
|
|
+ PROJECTILE,
|
|
+
|
|
+ /**
|
|
+ * When redstone power triggered the TNT prime
|
|
+ */
|
|
+ REDSTONE
|
|
+ }
|
|
+}
|