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());
+        }
+    }
+}