aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0117-InventoryCloseEvent-Reason-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0117-InventoryCloseEvent-Reason-API.patch')
-rw-r--r--patches/api/0117-InventoryCloseEvent-Reason-API.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/patches/api/0117-InventoryCloseEvent-Reason-API.patch b/patches/api/0117-InventoryCloseEvent-Reason-API.patch
new file mode 100644
index 0000000000..6c7189a322
--- /dev/null
+++ b/patches/api/0117-InventoryCloseEvent-Reason-API.patch
@@ -0,0 +1,93 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Aikar <[email protected]>
+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 15115b1049bc5053796b84539acbf576bcba1a5f..c66130be13bf01b5834a6391864b865c0123fa5c 100644
+--- a/src/main/java/org/bukkit/entity/HumanEntity.java
++++ b/src/main/java/org/bukkit/entity/HumanEntity.java
+@@ -179,6 +179,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 c0cc82d98348e8aae3cb56bafb2fcb590b03094f..4db0a07db156c61867644f50c185e63b695e2462 100644
+--- a/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java
++++ b/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java
+@@ -30,9 +30,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
+ }
+
+ /**