60 Zeilen
4.5 KiB
Diff
60 Zeilen
4.5 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Shane Freeder <theboyetronic@gmail.com>
|
||
|
Date: Mon, 13 Apr 2020 07:31:44 +0100
|
||
|
Subject: [PATCH] Prevent opening inventories when frozen
|
||
|
|
||
|
|
||
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||
|
index 162b1a8c6ab57aafa4f6deefc842755a8e14208e..efacfcaab444270b985f3a7fe0ef97e33c18a9de 100644
|
||
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||
|
@@ -557,7 +557,7 @@ public class ServerPlayer extends Player implements ContainerListener {
|
||
|
containerUpdateDelay = level.paperConfig.containerUpdateTickRate;
|
||
|
}
|
||
|
// Paper end
|
||
|
- if (!this.level.isClientSide && !this.containerMenu.stillValid(this)) {
|
||
|
+ if (!this.level.isClientSide && this.containerMenu != this.inventoryMenu && (isImmobile() || !this.containerMenu.stillValid(this))) { // Paper - auto close while frozen
|
||
|
this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper
|
||
|
this.containerMenu = this.inventoryMenu;
|
||
|
}
|
||
|
@@ -1404,7 +1404,7 @@ public class ServerPlayer extends Player implements ContainerListener {
|
||
|
} else {
|
||
|
// CraftBukkit start
|
||
|
this.containerMenu = container;
|
||
|
- this.connection.send(new ClientboundOpenScreenPacket(container.containerId, container.getType(), container.getTitle()));
|
||
|
+ if (!isImmobile()) this.connection.send(new ClientboundOpenScreenPacket(container.containerId, container.getType(), container.getTitle())); // Paper
|
||
|
// CraftBukkit end
|
||
|
container.addSlotListener(this);
|
||
|
return OptionalInt.of(this.containerCounter);
|
||
|
@@ -2206,7 +2206,7 @@ public class ServerPlayer extends Player implements ContainerListener {
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
- protected boolean isImmobile() {
|
||
|
+ public boolean isImmobile() { // Paper - protected > public
|
||
|
return super.isImmobile() || (this.connection != null && this.connection.isDisconnected()); // Paper
|
||
|
}
|
||
|
|
||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
||
|
index a73c6ddd6bf66cc21ae5b25daacdece8cbfeeeac..ae6faa331fcbefd99ee1cd92c88926d767fc50ee 100644
|
||
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
||
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java
|
||
|
@@ -323,7 +323,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||
|
if (adventure$title == null) adventure$title = io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(container.getBukkitView().getTitle()); // Paper
|
||
|
|
||
|
//player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, CraftChatMessage.fromString(title)[0])); // Paper // Paper - comment
|
||
|
- player.connection.send(new ClientboundOpenScreenPacket(container.containerId, windowType, io.papermc.paper.adventure.PaperAdventure.asVanilla(adventure$title))); // Paper
|
||
|
+ if (!player.isImmobile()) player.connection.send(new ClientboundOpenScreenPacket(container.containerId, windowType, io.papermc.paper.adventure.PaperAdventure.asVanilla(adventure$title))); // Paper
|
||
|
getHandle().containerMenu = container;
|
||
|
getHandle().containerMenu.addSlotListener(player);
|
||
|
}
|
||
|
@@ -397,7 +397,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
|
||
|
net.kyori.adventure.text.Component adventure$title = inventory.title(); // Paper
|
||
|
if (adventure$title == null) adventure$title = io.papermc.paper.adventure.PaperAdventure.LEGACY_SECTION_UXRC.deserialize(inventory.getTitle()); // Paper
|
||
|
//player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(container.windowId, windowType, CraftChatMessage.fromString(title)[0])); // Paper - comment
|
||
|
- player.connection.send(new ClientboundOpenScreenPacket(container.containerId, windowType, io.papermc.paper.adventure.PaperAdventure.asVanilla(adventure$title))); // Paper
|
||
|
+ if (!player.isImmobile()) player.connection.send(new ClientboundOpenScreenPacket(container.containerId, windowType, io.papermc.paper.adventure.PaperAdventure.asVanilla(adventure$title))); // Paper
|
||
|
player.containerMenu = container;
|
||
|
player.containerMenu.addSlotListener(player);
|
||
|
}
|