Hide the inventory for online players on reload (Related #1709)

This commit is contained in:
games647 2018-12-25 16:58:03 +01:00
parent 75e1e5ce51
commit 2f7672b489
No known key found for this signature in database
GPG Key ID: BFC68C8708713A88
2 changed files with 11 additions and 2 deletions

View File

@ -27,6 +27,8 @@ import com.comphenix.protocol.reflect.StructureModifier;
import fr.xephi.authme.AuthMe; import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.data.auth.PlayerCache;
import fr.xephi.authme.service.BukkitService;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; 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); ProtocolLibrary.getProtocolManager().addPacketListener(this);
if (hideNow) {
bukkitService.getOnlinePlayers().stream()
.filter(player -> playerCache.isAuthenticated(player.getName()))
.forEach(this::sendBlankInventoryPacket);
}
} }
public void unregister() { public void unregister() {

View File

@ -58,8 +58,9 @@ public class ProtocolLibService implements SettingsDependent {
// Set up packet adapters // Set up packet adapters
if (protectInvBeforeLogin) { if (protectInvBeforeLogin) {
if (inventoryPacketAdapter == null) { if (inventoryPacketAdapter == null) {
// register the packet listener and start hiding it for all already online players (reload)
inventoryPacketAdapter = new InventoryPacketAdapter(plugin, playerCache); inventoryPacketAdapter = new InventoryPacketAdapter(plugin, playerCache);
inventoryPacketAdapter.register(); inventoryPacketAdapter.register(bukkitService, true);
} }
} else if (inventoryPacketAdapter != null) { } else if (inventoryPacketAdapter != null) {
inventoryPacketAdapter.unregister(); inventoryPacketAdapter.unregister();