From 2f7672b489299f8360851a37084de499f2b3eb26 Mon Sep 17 00:00:00 2001 From: games647 Date: Tue, 25 Dec 2018 16:58:03 +0100 Subject: [PATCH] Hide the inventory for online players on reload (Related #1709) --- .../listener/protocollib/InventoryPacketAdapter.java | 10 +++++++++- .../listener/protocollib/ProtocolLibService.java | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/xephi/authme/listener/protocollib/InventoryPacketAdapter.java b/src/main/java/fr/xephi/authme/listener/protocollib/InventoryPacketAdapter.java index d4f5491b5..768c5f59e 100644 --- a/src/main/java/fr/xephi/authme/listener/protocollib/InventoryPacketAdapter.java +++ b/src/main/java/fr/xephi/authme/listener/protocollib/InventoryPacketAdapter.java @@ -27,6 +27,8 @@ import com.comphenix.protocol.reflect.StructureModifier; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.service.BukkitService; + import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -63,8 +65,14 @@ class InventoryPacketAdapter extends PacketAdapter { } } - public void register() { + public void register(BukkitService bukkitService, boolean hideNow) { ProtocolLibrary.getProtocolManager().addPacketListener(this); + + if (hideNow) { + bukkitService.getOnlinePlayers().stream() + .filter(player -> playerCache.isAuthenticated(player.getName())) + .forEach(this::sendBlankInventoryPacket); + } } public void unregister() { diff --git a/src/main/java/fr/xephi/authme/listener/protocollib/ProtocolLibService.java b/src/main/java/fr/xephi/authme/listener/protocollib/ProtocolLibService.java index c6acd03ef..bc1654bb4 100644 --- a/src/main/java/fr/xephi/authme/listener/protocollib/ProtocolLibService.java +++ b/src/main/java/fr/xephi/authme/listener/protocollib/ProtocolLibService.java @@ -58,8 +58,9 @@ public class ProtocolLibService implements SettingsDependent { // Set up packet adapters if (protectInvBeforeLogin) { if (inventoryPacketAdapter == null) { + // register the packet listener and start hiding it for all already online players (reload) inventoryPacketAdapter = new InventoryPacketAdapter(plugin, playerCache); - inventoryPacketAdapter.register(); + inventoryPacketAdapter.register(bukkitService, true); } } else if (inventoryPacketAdapter != null) { inventoryPacketAdapter.unregister();