diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHiderUpdated.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java similarity index 77% rename from SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHiderUpdated.java rename to SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java index 64d12b8a..55ecc674 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHiderUpdated.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java @@ -23,8 +23,19 @@ import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.PacketListener; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; +import net.minecraft.network.protocol.common.ClientboundCustomReportDetailsPacket; +import net.minecraft.network.protocol.common.ClientboundDisconnectPacket; import net.minecraft.network.protocol.common.ClientboundKeepAlivePacket; import net.minecraft.network.protocol.common.ClientboundPingPacket; +import net.minecraft.network.protocol.common.ClientboundResourcePackPopPacket; +import net.minecraft.network.protocol.common.ClientboundResourcePackPushPacket; +import net.minecraft.network.protocol.common.ClientboundServerLinksPacket; +import net.minecraft.network.protocol.common.ClientboundStoreCookiePacket; +import net.minecraft.network.protocol.common.ClientboundTransferPacket; +import net.minecraft.network.protocol.configuration.ClientboundFinishConfigurationPacket; +import net.minecraft.network.protocol.configuration.ClientboundRegistryDataPacket; +import net.minecraft.network.protocol.configuration.ClientboundUpdateEnabledFeaturesPacket; +import net.minecraft.network.protocol.cookie.ClientboundCookieRequestPacket; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.network.protocol.game.ClientboundBlockEventPacket; import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; @@ -34,7 +45,6 @@ import net.minecraft.network.protocol.game.ClientboundCommandSuggestionsPacket; import net.minecraft.network.protocol.game.ClientboundCommandsPacket; import net.minecraft.network.protocol.game.ClientboundDisguisedChatPacket; import net.minecraft.network.protocol.game.ClientboundGameEventPacket; -import net.minecraft.network.protocol.game.ClientboundLevelChunkPacketData; import net.minecraft.network.protocol.game.ClientboundLevelChunkWithLightPacket; import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket; import net.minecraft.network.protocol.game.ClientboundPlayerChatPacket; @@ -53,6 +63,7 @@ import net.minecraft.network.protocol.game.ClientboundUpdateAttributesPacket; import net.minecraft.network.protocol.login.ClientboundCustomQueryPacket; import net.minecraft.network.protocol.login.ClientboundHelloPacket; import net.minecraft.network.protocol.login.ClientboundLoginCompressionPacket; +import net.minecraft.network.protocol.login.ClientboundLoginDisconnectPacket; import net.minecraft.network.protocol.login.ClientboundLoginFinishedPacket; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -62,7 +73,7 @@ import net.minecraft.world.level.block.state.BlockState; * any packet must be explicitly whitelisted or processed in a * way that is also compliant with the principle of default-deny. */ -public class TechHiderUpdated { +public class TechHider { private final Set>> bypassingPackets; private final Map>, BiFunction, Packet>> packetProcessors; private final TinyProtocol interceptor; @@ -70,48 +81,34 @@ public class TechHiderUpdated { private final Set blockEntitiesToHide; private final BlockState blockToObfuscateTo; - public TechHiderUpdated(Plugin plugin, Set blockIdsToObfuscate, BlockState blockToObfuscateTo, Set blockEntitiesToHide) { + public TechHider(Plugin plugin, Set blockIdsToObfuscate, BlockState blockToObfuscateTo, Set blockEntitiesToHide) { this.blockIdsToObfuscate = blockIdsToObfuscate; this.blockToObfuscateTo = blockToObfuscateTo; this.blockEntitiesToHide = blockEntitiesToHide; this.bypassingPackets = Set.of( - // --- Handshake & Login Protocol --- - // These must be whitelisted to allow the player to actually reach the 'Play' - // state - ClientboundHelloPacket.class, // Encryption request - ClientboundLoginFinishedPacket.class, // Login Success - ClientboundLoginCompressionPacket.class, // Set Compression - ClientboundCustomQueryPacket.class, // Velocity/Bungee/Mod identity checks + // --- 5.1.x Login Protocol --- + ClientboundLoginDisconnectPacket.class, // 5.1.1 Disconnect + ClientboundHelloPacket.class, // 5.1.2 Encryption Request + ClientboundLoginFinishedPacket.class, // 5.1.3 Login Success + ClientboundLoginCompressionPacket.class, // 5.1.4 Set Compression + ClientboundCustomQueryPacket.class, // 5.1.5 Login Plugin Request + ClientboundCookieRequestPacket.class, // 5.1.6 Cookie Request - // --- Protocol & Connection --- - ClientboundKeepAlivePacket.class, - ClientboundPingPacket.class, - ClientboundCustomPayloadPacket.class, - ClientboundServerDataPacket.class, - - // --- UI & Communication --- - ClientboundSystemChatPacket.class, - ClientboundDisguisedChatPacket.class, - ClientboundBossEventPacket.class, - ClientboundTabListPacket.class, - ClientboundSetTitleTextPacket.class, - ClientboundSetSubtitleTextPacket.class, - ClientboundSetTitlesAnimationPacket.class, - ClientboundClearTitlesPacket.class, - ClientboundPlayerChatPacket.class, - - // --- Player Stats & Logic --- - ClientboundSetExperiencePacket.class, - ClientboundSetHealthPacket.class, - ClientboundPlayerAbilitiesPacket.class, - ClientboundUpdateAttributesPacket.class, - ClientboundCommandSuggestionsPacket.class, - - // --- World Metadata (Non-Structural) --- - ClientboundSetTimePacket.class, - ClientboundSetDefaultSpawnPositionPacket.class, - ClientboundGameEventPacket.class, // Weather, Gamemode changes, etc. - ClientboundCommandsPacket.class // Command tree for tab-complete + // --- 6.1.x Configuration Protocol --- + ClientboundCustomPayloadPacket.class, // 6.1.2 Clientbound Plugin Message + ClientboundFinishConfigurationPacket.class, // 6.1.4 Finish Configuration + ClientboundKeepAlivePacket.class, // 6.1.5 Clientbound Keep Alive + ClientboundPingPacket.class, // 6.1.6 Ping + ClientboundRegistryDataPacket.class, // 6.1.8 Registry Data + ClientboundResourcePackPopPacket.class, // 6.1.9 Remove Resource Pack + ClientboundResourcePackPushPacket.class, // 6.1.10 Add Resource Pack + ClientboundStoreCookiePacket.class, // 6.1.11 Store Cookie + ClientboundTransferPacket.class, // 6.1.12 Transfer + ClientboundUpdateEnabledFeaturesPacket.class, // 6.1.13 Feature Flags + ClientboundCustomReportDetailsPacket.class, // 6.1.16 Custom Report Details + ClientboundServerLinksPacket.class, // 6.1.17 Server Links + ClientboundSystemChatPacket.class, // 6.1.18/19 Dialogs are often handled via System Chat or Custom Payloads + ClientboundServerDataPacket.class // 6.1.20 Code of Conduct is usually in Server Data ); BiFunction, Packet> tossPacket = (p, packet) -> null;