e4d10a6d67
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: 122289ff Add FaceAttachable interface to handle Grindstone facing in common with Switches a6db750e SPIGOT-5647: ZombieVillager entity should have getVillagerType() CraftBukkit Changes: bbe3d58e SPIGOT-5650: Lectern.setPage(int) causes a NullPointerException 3075579f Add FaceAttachable interface to handle Grindstone facing in common with Switches 95bd4238 SPIGOT-5647: ZombieVillager entity should have getVillagerType() 4d975ac3 SPIGOT-5617: setBlockData does not work when NotPlayEvent is called by redstone current
96 lines
2.8 KiB
Diff
96 lines
2.8 KiB
Diff
From 9dd56c5585f21d0b8c82ca0b4989fa7eb31ad9f5 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Tue, 3 Jul 2018 21:52:52 -0400
|
|
Subject: [PATCH] InventoryCloseEvent Reason API
|
|
|
|
Allows you to determine why an inventory was closed, enabling plugin developers
|
|
to "confirm" things based on if it was player triggered close or not.
|
|
|
|
diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java
|
|
index cdbac95bb..f25c73155 100644
|
|
--- a/src/main/java/org/bukkit/entity/HumanEntity.java
|
|
+++ b/src/main/java/org/bukkit/entity/HumanEntity.java
|
|
@@ -152,6 +152,15 @@ public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder
|
|
*/
|
|
public void closeInventory();
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Force-closes the currently open inventory view for this player, if any.
|
|
+ *
|
|
+ * @param reason why the inventory is closing
|
|
+ */
|
|
+ public void closeInventory(@NotNull org.bukkit.event.inventory.InventoryCloseEvent.Reason reason);
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Returns the ItemStack currently in your hand, can be empty.
|
|
*
|
|
diff --git a/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java b/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java
|
|
index 5861247c1..21ad8888c 100644
|
|
--- a/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java
|
|
+++ b/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java
|
|
@@ -11,9 +11,60 @@ import org.jetbrains.annotations.NotNull;
|
|
*/
|
|
public class InventoryCloseEvent extends InventoryEvent {
|
|
private static final HandlerList handlers = new HandlerList();
|
|
+ // Paper start
|
|
+ private final Reason reason;
|
|
+ @NotNull
|
|
+ public Reason getReason() {
|
|
+ return reason;
|
|
+ }
|
|
+
|
|
+ public enum Reason {
|
|
+ /**
|
|
+ * Unknown reason
|
|
+ */
|
|
+ UNKNOWN,
|
|
+ /**
|
|
+ * Player is teleporting
|
|
+ */
|
|
+ TELEPORT,
|
|
+ /**
|
|
+ * Player is no longer permitted to use this inventory
|
|
+ */
|
|
+ CANT_USE,
|
|
+ /**
|
|
+ * The chunk the inventory was in was unloaded
|
|
+ */
|
|
+ UNLOADED,
|
|
+ /**
|
|
+ * Opening new inventory instead
|
|
+ */
|
|
+ OPEN_NEW,
|
|
+ /**
|
|
+ * Closed
|
|
+ */
|
|
+ PLAYER,
|
|
+ /**
|
|
+ * Closed due to disconnect
|
|
+ */
|
|
+ DISCONNECT,
|
|
+ /**
|
|
+ * The player died
|
|
+ */
|
|
+ DEATH,
|
|
+ /**
|
|
+ * Closed by Bukkit API
|
|
+ */
|
|
+ PLUGIN,
|
|
+ }
|
|
|
|
public InventoryCloseEvent(@NotNull InventoryView transaction) {
|
|
+ this(transaction, Reason.UNKNOWN);
|
|
+ }
|
|
+
|
|
+ public InventoryCloseEvent(@NotNull InventoryView transaction, @NotNull Reason reason) {
|
|
super(transaction);
|
|
+ this.reason = reason;
|
|
+ // Paper end
|
|
}
|
|
|
|
/**
|
|
--
|
|
2.25.1
|
|
|