From 05b6b3ac66748186405e5142823ad9a5b48e611b Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 18 Feb 2023 12:49:24 +0100 Subject: [PATCH] Add even better fabric check --- .../listeners/NonFabricFabricCheck.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/de/steamwar/bungeecore/listeners/NonFabricFabricCheck.java b/src/de/steamwar/bungeecore/listeners/NonFabricFabricCheck.java index 2a1fd2b0..08f44a0f 100644 --- a/src/de/steamwar/bungeecore/listeners/NonFabricFabricCheck.java +++ b/src/de/steamwar/bungeecore/listeners/NonFabricFabricCheck.java @@ -22,8 +22,6 @@ package de.steamwar.bungeecore.listeners; import de.steamwar.bungeecore.BungeeCore; import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.Storage; -import de.steamwar.bungeecore.sql.SWException; -import de.steamwar.bungeecore.sql.SteamwarUser; import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.connection.Connection; import net.md_5.bungee.api.connection.ProxiedPlayer; @@ -43,6 +41,7 @@ public class NonFabricFabricCheck extends BasicListener { private final Set usingFabric = new HashSet<>(); private final Set checking = new HashSet<>(); + private final Set vanilla = new HashSet<>(); { BungeeCord.getInstance().getScheduler().schedule(BungeeCore.get(), usingFabric::clear, 0, 15, TimeUnit.MINUTES); @@ -54,14 +53,23 @@ public class NonFabricFabricCheck extends BasicListener { if(!(sender instanceof ProxiedPlayer)) return; - if(!e.getTag().equals("minecraft:brand")) - return; - - if(!new String(e.getData()).equals("vanilla")){ + ProxiedPlayer p = (ProxiedPlayer) sender; + if (e.getTag().equals("minecraft:register") && new String(e.getData()).contains("fabric")) { + BungeeCord.getInstance().getScheduler().schedule(BungeeCore.get(), () -> { + if (!sender.isConnected()) return; + if (!vanilla.remove(p)) return; + if (Storage.fabricCheckedPlayers.containsKey(p)) return; + p.disconnect(Message.parse("MOD_USE_MODSENDER", p)); + }, 5, TimeUnit.SECONDS); return; } - ProxiedPlayer p = (ProxiedPlayer) sender; + if(!e.getTag().equals("minecraft:brand")) + return; + + if(!new String(e.getData()).equals("vanilla")) + return; + vanilla.add(p); BungeeCord.getInstance().getScheduler().schedule(BungeeCore.get(), () -> { if (!p.isConnected()) return; @@ -82,12 +90,8 @@ public class NonFabricFabricCheck extends BasicListener { @EventHandler public void onPlayerDisconnect(PlayerDisconnectEvent e) { if (checking.remove(e.getPlayer())) { - logMessage(SteamwarUser.get(e.getPlayer().getUniqueId()), "Player is potentially using rebranded Fabric"); usingFabric.add(e.getPlayer().getUniqueId()); } - } - - public void logMessage(SteamwarUser user, String reason) { - SWException.log("Bungee", "NonFabricFabricCheck " + user.getUserName() + ": " + reason, ""); + vanilla.remove(e.getPlayer()); } }