Start working on 1.19.4
This commit is contained in:
		
					parent
					
						
							
								627c3d4475
							
						
					
				
			
			
				commit
				
					
						08ab8edb76
					
				
			
		
					 1390 changed files with 29 additions and 53 deletions
				
			
		| 
						 | 
				
			
			@ -1,220 +0,0 @@
 | 
			
		|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: Aikar <aikar@aikar.co>
 | 
			
		||||
Date: Tue, 3 Jul 2018 21:56:23 -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/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
 | 
			
		||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements WorldGenLevel {
 | 
			
		||||
         for (net.minecraft.world.level.block.entity.BlockEntity tileentity : chunk.getBlockEntities().values()) {
 | 
			
		||||
             if (tileentity instanceof net.minecraft.world.Container) {
 | 
			
		||||
                 for (org.bukkit.entity.HumanEntity h : Lists.newArrayList(((net.minecraft.world.Container) tileentity).getViewers())) {
 | 
			
		||||
-                    h.closeInventory();
 | 
			
		||||
+                    h.closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNLOADED); // Paper
 | 
			
		||||
                 }
 | 
			
		||||
             }
 | 
			
		||||
         }
 | 
			
		||||
@@ -0,0 +0,0 @@ public class ServerLevel extends Level implements WorldGenLevel {
 | 
			
		||||
             // Spigot Start
 | 
			
		||||
             if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
 | 
			
		||||
                 for (org.bukkit.entity.HumanEntity h : Lists.newArrayList(((org.bukkit.inventory.InventoryHolder) entity.getBukkitEntity()).getInventory().getViewers())) {
 | 
			
		||||
-                    h.closeInventory();
 | 
			
		||||
+                    h.closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNLOADED); // Paper
 | 
			
		||||
                 }
 | 
			
		||||
             }
 | 
			
		||||
             // Spigot End
 | 
			
		||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
 | 
			
		||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
 | 
			
		||||
         }
 | 
			
		||||
         // Paper end
 | 
			
		||||
         if (!this.level.isClientSide && !this.containerMenu.stillValid(this)) {
 | 
			
		||||
-            this.closeContainer();
 | 
			
		||||
+            this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper
 | 
			
		||||
             this.containerMenu = this.inventoryMenu;
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
 | 
			
		||||
 
 | 
			
		||||
         // SPIGOT-943 - only call if they have an inventory open
 | 
			
		||||
         if (this.containerMenu != this.inventoryMenu) {
 | 
			
		||||
-            this.closeContainer();
 | 
			
		||||
+            this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.DEATH); // Paper
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
         net.kyori.adventure.text.Component deathMessage = event.deathMessage() != null ? event.deathMessage() : net.kyori.adventure.text.Component.empty(); // Paper - Adventure
 | 
			
		||||
@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
 | 
			
		||||
         }
 | 
			
		||||
         // CraftBukkit end
 | 
			
		||||
         if (this.containerMenu != this.inventoryMenu) {
 | 
			
		||||
-            this.closeContainer();
 | 
			
		||||
+            this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.OPEN_NEW); // Paper
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
         // this.nextContainerCounter(); // CraftBukkit - moved up
 | 
			
		||||
@@ -0,0 +0,0 @@ public class ServerPlayer extends Player {
 | 
			
		||||
 
 | 
			
		||||
     @Override
 | 
			
		||||
     public void closeContainer() {
 | 
			
		||||
-        CraftEventFactory.handleInventoryCloseEvent(this); // CraftBukkit
 | 
			
		||||
+        // Paper start
 | 
			
		||||
+        this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNKNOWN);
 | 
			
		||||
+    }
 | 
			
		||||
+    @Override
 | 
			
		||||
+    public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) {
 | 
			
		||||
+        CraftEventFactory.handleInventoryCloseEvent(this, reason); // CraftBukkit
 | 
			
		||||
+        // Paper end
 | 
			
		||||
         this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId));
 | 
			
		||||
         this.doCloseContainer();
 | 
			
		||||
     }
 | 
			
		||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
 | 
			
		||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
 | 
			
		||||
@@ -0,0 +0,0 @@ import org.bukkit.event.inventory.ClickType;
 | 
			
		||||
 import org.bukkit.event.inventory.CraftItemEvent;
 | 
			
		||||
 import org.bukkit.event.inventory.InventoryAction;
 | 
			
		||||
 import org.bukkit.event.inventory.InventoryClickEvent;
 | 
			
		||||
+import org.bukkit.event.inventory.InventoryCloseEvent; // Paper
 | 
			
		||||
 import org.bukkit.event.inventory.InventoryCreativeEvent;
 | 
			
		||||
 import org.bukkit.event.inventory.InventoryType.SlotType;
 | 
			
		||||
 import org.bukkit.event.inventory.SmithItemEvent;
 | 
			
		||||
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
 | 
			
		||||
 
 | 
			
		||||
     @Override
 | 
			
		||||
     public void handleContainerClose(ServerboundContainerClosePacket packet) {
 | 
			
		||||
+        // Paper start
 | 
			
		||||
+        handleContainerClose(packet, InventoryCloseEvent.Reason.PLAYER);
 | 
			
		||||
+    }
 | 
			
		||||
+    public void handleContainerClose(ServerboundContainerClosePacket packet, InventoryCloseEvent.Reason reason) {
 | 
			
		||||
+        // Paper end
 | 
			
		||||
         PacketUtils.ensureRunningOnSameThread(packet, this, this.player.getLevel());
 | 
			
		||||
 
 | 
			
		||||
         if (this.player.isImmobile()) return; // CraftBukkit
 | 
			
		||||
-        CraftEventFactory.handleInventoryCloseEvent(this.player); // CraftBukkit
 | 
			
		||||
+        CraftEventFactory.handleInventoryCloseEvent(this.player, reason); // CraftBukkit // Paper
 | 
			
		||||
 
 | 
			
		||||
         this.player.doCloseContainer();
 | 
			
		||||
     }
 | 
			
		||||
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
 | 
			
		||||
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public abstract class PlayerList {
 | 
			
		||||
         // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it
 | 
			
		||||
         // See SPIGOT-5799, SPIGOT-6145
 | 
			
		||||
         if (entityplayer.containerMenu != entityplayer.inventoryMenu) {
 | 
			
		||||
-            entityplayer.closeContainer();
 | 
			
		||||
+            entityplayer.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.DISCONNECT); // Paper
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
         PlayerQuitEvent playerQuitEvent = new PlayerQuitEvent(entityplayer.getBukkitEntity(), net.kyori.adventure.text.Component.translatable("multiplayer.player.left", net.kyori.adventure.text.format.NamedTextColor.YELLOW, io.papermc.paper.configuration.GlobalConfiguration.get().messages.useDisplayNameInQuitMessage ? entityplayer.getBukkitEntity().displayName() : PaperAdventure.asAdventure(entityplayer.getDisplayName()))); // Paper - Adventure
 | 
			
		||||
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
 | 
			
		||||
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public abstract class Player extends LivingEntity {
 | 
			
		||||
         this.updateIsUnderwater();
 | 
			
		||||
         super.tick();
 | 
			
		||||
         if (!this.level.isClientSide && this.containerMenu != null && !this.containerMenu.stillValid(this)) {
 | 
			
		||||
-            this.closeContainer();
 | 
			
		||||
+            this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper
 | 
			
		||||
             this.containerMenu = this.inventoryMenu;
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +0,0 @@ public abstract class Player extends LivingEntity {
 | 
			
		||||
 
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
+    // Paper start - unused code, but to keep signatures aligned
 | 
			
		||||
+    public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) {
 | 
			
		||||
+        closeContainer();
 | 
			
		||||
+        this.containerMenu = this.inventoryMenu;
 | 
			
		||||
+    }
 | 
			
		||||
+    // Paper end
 | 
			
		||||
+
 | 
			
		||||
     public void closeContainer() {
 | 
			
		||||
         this.containerMenu = this.inventoryMenu;
 | 
			
		||||
     }
 | 
			
		||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
 | 
			
		||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
 | 
			
		||||
         if (((ServerPlayer) this.getHandle()).connection == null) return;
 | 
			
		||||
         if (this.getHandle().containerMenu != this.getHandle().inventoryMenu) {
 | 
			
		||||
             // fire INVENTORY_CLOSE if one already open
 | 
			
		||||
-            ((ServerPlayer) this.getHandle()).connection.handleContainerClose(new ServerboundContainerClosePacket(this.getHandle().containerMenu.containerId));
 | 
			
		||||
+            ((ServerPlayer) this.getHandle()).connection.handleContainerClose(new ServerboundContainerClosePacket(this.getHandle().containerMenu.containerId), org.bukkit.event.inventory.InventoryCloseEvent.Reason.OPEN_NEW); // Paper
 | 
			
		||||
         }
 | 
			
		||||
         ServerPlayer player = (ServerPlayer) this.getHandle();
 | 
			
		||||
         AbstractContainerMenu container;
 | 
			
		||||
@@ -0,0 +0,0 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
 | 
			
		||||
 
 | 
			
		||||
     @Override
 | 
			
		||||
     public void closeInventory() {
 | 
			
		||||
-        this.getHandle().closeContainer();
 | 
			
		||||
+        // Paper start
 | 
			
		||||
+        this.getHandle().closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.PLUGIN);
 | 
			
		||||
     }
 | 
			
		||||
+    @Override
 | 
			
		||||
+    public void closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) {
 | 
			
		||||
+        getHandle().closeContainer(reason);
 | 
			
		||||
+    }
 | 
			
		||||
+    // Paper end
 | 
			
		||||
 
 | 
			
		||||
     @Override
 | 
			
		||||
     public boolean isBlocking() {
 | 
			
		||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
 | 
			
		||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
 | 
			
		||||
 
 | 
			
		||||
         // Close any foreign inventory
 | 
			
		||||
         if (this.getHandle().containerMenu != this.getHandle().inventoryMenu) {
 | 
			
		||||
-            this.getHandle().closeContainer();
 | 
			
		||||
+            this.getHandle().closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.TELEPORT); // Paper
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
         // Check if the fromWorld and toWorld are the same.
 | 
			
		||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 | 
			
		||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public class CraftEventFactory {
 | 
			
		||||
 
 | 
			
		||||
     public static AbstractContainerMenu callInventoryOpenEvent(ServerPlayer player, AbstractContainerMenu container, boolean cancelled) {
 | 
			
		||||
         if (player.containerMenu != player.inventoryMenu) { // fire INVENTORY_CLOSE if one already open
 | 
			
		||||
-            player.connection.handleContainerClose(new ServerboundContainerClosePacket(player.containerMenu.containerId));
 | 
			
		||||
+            player.connection.handleContainerClose(new ServerboundContainerClosePacket(player.containerMenu.containerId), InventoryCloseEvent.Reason.OPEN_NEW); // Paper
 | 
			
		||||
         }
 | 
			
		||||
 
 | 
			
		||||
         CraftServer server = player.level.getCraftServer();
 | 
			
		||||
@@ -0,0 +0,0 @@ public class CraftEventFactory {
 | 
			
		||||
         return event;
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
+    // Paper start
 | 
			
		||||
+    /**
 | 
			
		||||
+     * Incase plugins hooked into this or Spigot adds a new inventory close event. Prefer to pass a reason
 | 
			
		||||
+     * @param human
 | 
			
		||||
+     */
 | 
			
		||||
+    @Deprecated
 | 
			
		||||
     public static void handleInventoryCloseEvent(net.minecraft.world.entity.player.Player human) {
 | 
			
		||||
-        InventoryCloseEvent event = new InventoryCloseEvent(human.containerMenu.getBukkitView());
 | 
			
		||||
+        handleInventoryCloseEvent(human, org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNKNOWN);
 | 
			
		||||
+    }
 | 
			
		||||
+    public static void handleInventoryCloseEvent(net.minecraft.world.entity.player.Player human, org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) {
 | 
			
		||||
+        // Paper end
 | 
			
		||||
+        InventoryCloseEvent event = new InventoryCloseEvent(human.containerMenu.getBukkitView(), reason); // Paper
 | 
			
		||||
         human.level.getCraftServer().getPluginManager().callEvent(event);
 | 
			
		||||
         human.containerMenu.transferTo(human.inventoryMenu, human.getBukkitEntity());
 | 
			
		||||
     }
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue