add config option fake-enforce-secure-chat to disable secure chat popup

This commit is contained in:
D3v1s0m 2024-06-24 16:28:12 +05:30 committed by bridge
parent bca00f98cb
commit 4fb964fa60
3 changed files with 37 additions and 0 deletions

@ -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);

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

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