From 4fb964fa60f89fa6a23ec69ff25ed0bc6cba857c Mon Sep 17 00:00:00 2001 From: D3v1s0m Date: Mon, 24 Jun 2024 16:28:12 +0530 Subject: [PATCH] add config option fake-enforce-secure-chat to disable secure chat popup --- .../java/lol/pyr/znpcsplus/ZNpcsPlus.java | 2 ++ .../lol/pyr/znpcsplus/config/MainConfig.java | 5 ++++ .../znpcsplus/user/ClientPacketListener.java | 30 +++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 plugin/src/main/java/lol/pyr/znpcsplus/user/ClientPacketListener.java diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/ZNpcsPlus.java b/plugin/src/main/java/lol/pyr/znpcsplus/ZNpcsPlus.java index c689923..4991b16 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/ZNpcsPlus.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/ZNpcsPlus.java @@ -43,6 +43,7 @@ import lol.pyr.znpcsplus.tasks.NpcProcessorTask; import lol.pyr.znpcsplus.tasks.ViewableHideOnLeaveListener; import lol.pyr.znpcsplus.updater.UpdateChecker; import lol.pyr.znpcsplus.updater.UpdateNotificationListener; +import lol.pyr.znpcsplus.user.ClientPacketListener; import lol.pyr.znpcsplus.user.UserListener; import lol.pyr.znpcsplus.user.UserManager; import lol.pyr.znpcsplus.util.*; @@ -141,6 +142,7 @@ public class ZNpcsPlus { typeRegistry.registerDefault(packetEvents, propertyRegistry); actionRegistry.registerTypes(scheduler, adventure, textSerializer, bungeeConnector); packetEvents.getEventManager().registerListener(new InteractionPacketListener(userManager, npcRegistry, typeRegistry, scheduler), PacketListenerPriority.MONITOR); + packetEvents.getEventManager().registerListener(new ClientPacketListener(configManager), PacketListenerPriority.LOWEST); new Metrics(bootstrap, 18244); pluginManager.registerEvents(new UserListener(userManager), bootstrap); diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/config/MainConfig.java b/plugin/src/main/java/lol/pyr/znpcsplus/config/MainConfig.java index 7323e27..fee1ea7 100644 --- a/plugin/src/main/java/lol/pyr/znpcsplus/config/MainConfig.java +++ b/plugin/src/main/java/lol/pyr/znpcsplus/config/MainConfig.java @@ -73,4 +73,9 @@ public interface MainConfig { @ConfComments("The display name to use for npcs in the player list (aka tab)") @DefaultString("ZNPC[{id}]") String tabDisplayName(); + + @ConfKey("fake-enforce-secure-chat") + @ConfComments("Should the plugin fake the enforce secure chat packet to hide the popup?") + @DefaultBoolean(false) + boolean fakeEnforceSecureChat(); } diff --git a/plugin/src/main/java/lol/pyr/znpcsplus/user/ClientPacketListener.java b/plugin/src/main/java/lol/pyr/znpcsplus/user/ClientPacketListener.java new file mode 100644 index 0000000..9580597 --- /dev/null +++ b/plugin/src/main/java/lol/pyr/znpcsplus/user/ClientPacketListener.java @@ -0,0 +1,30 @@ +package lol.pyr.znpcsplus.user; + +import com.github.retrooper.packetevents.event.PacketListener; +import com.github.retrooper.packetevents.event.PacketSendEvent; +import com.github.retrooper.packetevents.protocol.packettype.PacketType; +import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerJoinGame; +import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerServerData; +import lol.pyr.znpcsplus.config.ConfigManager; + +public class ClientPacketListener implements PacketListener { + private final ConfigManager configManager; + + public ClientPacketListener(ConfigManager configManager) { + this.configManager = configManager; + } + + @Override + public void onPacketSend(PacketSendEvent event) { + if (!configManager.getConfig().fakeEnforceSecureChat()) return; + if (event.getPacketType() == PacketType.Play.Server.SERVER_DATA) { + WrapperPlayServerServerData packet = new WrapperPlayServerServerData(event); + packet.setEnforceSecureChat(true); + event.setByteBuf(packet.getBuffer()); + } else if (event.getPacketType() == PacketType.Play.Server.JOIN_GAME) { + WrapperPlayServerJoinGame packet = new WrapperPlayServerJoinGame(event); + packet.setEnforcesSecureChat(true); + event.setByteBuf(packet.getBuffer()); + } + } +}