From 99e1f01869143202da1d70ef6786fd3ecc3ef63c Mon Sep 17 00:00:00 2001 From: Manuel Frohn Date: Thu, 14 May 2026 21:38:37 +0200 Subject: [PATCH] Update bypass list with harmless play-client bound packets --- .../src/de/steamwar/techhider/TechHider.java | 139 +++++++++++++++++- 1 file changed, 135 insertions(+), 4 deletions(-) diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java index 55ecc674..a4386a08 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java @@ -1,6 +1,7 @@ package de.steamwar.techhider; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -22,6 +23,7 @@ import net.minecraft.core.SectionPos; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.PacketListener; import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.common.ClientboundClearDialogPacket; import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; import net.minecraft.network.protocol.common.ClientboundCustomReportDetailsPacket; import net.minecraft.network.protocol.common.ClientboundDisconnectPacket; @@ -30,36 +32,84 @@ 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.ClientboundShowDialogPacket; 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.ClientboundAwardStatsPacket; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.network.protocol.game.ClientboundBlockEventPacket; import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; import net.minecraft.network.protocol.game.ClientboundBossEventPacket; +import net.minecraft.network.protocol.game.ClientboundBundleDelimiterPacket; +import net.minecraft.network.protocol.game.ClientboundChangeDifficultyPacket; +import net.minecraft.network.protocol.game.ClientboundChunkBatchFinishedPacket; +import net.minecraft.network.protocol.game.ClientboundChunkBatchStartPacket; import net.minecraft.network.protocol.game.ClientboundClearTitlesPacket; import net.minecraft.network.protocol.game.ClientboundCommandSuggestionsPacket; import net.minecraft.network.protocol.game.ClientboundCommandsPacket; +import net.minecraft.network.protocol.game.ClientboundContainerClosePacket; +import net.minecraft.network.protocol.game.ClientboundContainerSetContentPacket; +import net.minecraft.network.protocol.game.ClientboundContainerSetDataPacket; +import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket; +import net.minecraft.network.protocol.game.ClientboundCooldownPacket; +import net.minecraft.network.protocol.game.ClientboundCustomChatCompletionsPacket; +import net.minecraft.network.protocol.game.ClientboundDeleteChatPacket; import net.minecraft.network.protocol.game.ClientboundDisguisedChatPacket; import net.minecraft.network.protocol.game.ClientboundGameEventPacket; +import net.minecraft.network.protocol.game.ClientboundInitializeBorderPacket; import net.minecraft.network.protocol.game.ClientboundLevelChunkWithLightPacket; +import net.minecraft.network.protocol.game.ClientboundLoginPacket; +import net.minecraft.network.protocol.game.ClientboundMerchantOffersPacket; +import net.minecraft.network.protocol.game.ClientboundOpenBookPacket; +import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket; +import net.minecraft.network.protocol.game.ClientboundPlaceGhostRecipePacket; import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket; import net.minecraft.network.protocol.game.ClientboundPlayerChatPacket; +import net.minecraft.network.protocol.game.ClientboundPlayerCombatEndPacket; +import net.minecraft.network.protocol.game.ClientboundPlayerCombatEnterPacket; +import net.minecraft.network.protocol.game.ClientboundPlayerPositionPacket; +import net.minecraft.network.protocol.game.ClientboundPlayerRotationPacket; +import net.minecraft.network.protocol.game.ClientboundRecipeBookAddPacket; +import net.minecraft.network.protocol.game.ClientboundRecipeBookRemovePacket; +import net.minecraft.network.protocol.game.ClientboundRecipeBookSettingsPacket; +import net.minecraft.network.protocol.game.ClientboundResetScorePacket; +import net.minecraft.network.protocol.game.ClientboundRespawnPacket; import net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket; +import net.minecraft.network.protocol.game.ClientboundSelectAdvancementsTabPacket; +import net.minecraft.network.protocol.game.ClientboundSetActionBarTextPacket; +import net.minecraft.network.protocol.game.ClientboundSetBorderCenterPacket; +import net.minecraft.network.protocol.game.ClientboundSetBorderLerpSizePacket; +import net.minecraft.network.protocol.game.ClientboundSetBorderSizePacket; +import net.minecraft.network.protocol.game.ClientboundSetBorderWarningDelayPacket; +import net.minecraft.network.protocol.game.ClientboundSetBorderWarningDistancePacket; +import net.minecraft.network.protocol.game.ClientboundSetChunkCacheCenterPacket; +import net.minecraft.network.protocol.game.ClientboundSetChunkCacheRadiusPacket; +import net.minecraft.network.protocol.game.ClientboundSetCursorItemPacket; import net.minecraft.network.protocol.game.ClientboundServerDataPacket; import net.minecraft.network.protocol.game.ClientboundSetDefaultSpawnPositionPacket; +import net.minecraft.network.protocol.game.ClientboundSetDisplayObjectivePacket; import net.minecraft.network.protocol.game.ClientboundSetExperiencePacket; +import net.minecraft.network.protocol.game.ClientboundSetHeldSlotPacket; import net.minecraft.network.protocol.game.ClientboundSetHealthPacket; +import net.minecraft.network.protocol.game.ClientboundSetObjectivePacket; +import net.minecraft.network.protocol.game.ClientboundSetPlayerInventoryPacket; +import net.minecraft.network.protocol.game.ClientboundSetScorePacket; +import net.minecraft.network.protocol.game.ClientboundSetSimulationDistancePacket; import net.minecraft.network.protocol.game.ClientboundSetSubtitleTextPacket; import net.minecraft.network.protocol.game.ClientboundSetTimePacket; import net.minecraft.network.protocol.game.ClientboundSetTitleTextPacket; import net.minecraft.network.protocol.game.ClientboundSetTitlesAnimationPacket; +import net.minecraft.network.protocol.game.ClientboundStartConfigurationPacket; import net.minecraft.network.protocol.game.ClientboundSystemChatPacket; import net.minecraft.network.protocol.game.ClientboundTabListPacket; -import net.minecraft.network.protocol.game.ClientboundUpdateAttributesPacket; +import net.minecraft.network.protocol.game.ClientboundTickingStatePacket; +import net.minecraft.network.protocol.game.ClientboundTickingStepPacket; +import net.minecraft.network.protocol.game.ClientboundUpdateAdvancementsPacket; +import net.minecraft.network.protocol.game.ClientboundUpdateRecipesPacket; import net.minecraft.network.protocol.login.ClientboundCustomQueryPacket; import net.minecraft.network.protocol.login.ClientboundHelloPacket; import net.minecraft.network.protocol.login.ClientboundLoginCompressionPacket; @@ -81,11 +131,12 @@ public class TechHider { private final Set blockEntitiesToHide; private final BlockState blockToObfuscateTo; + //TODO handle packet bundle public TechHider(Plugin plugin, Set blockIdsToObfuscate, BlockState blockToObfuscateTo, Set blockEntitiesToHide) { this.blockIdsToObfuscate = blockIdsToObfuscate; this.blockToObfuscateTo = blockToObfuscateTo; this.blockEntitiesToHide = blockEntitiesToHide; - this.bypassingPackets = Set.of( + this.bypassingPackets = new HashSet<>(List.of( // --- 5.1.x Login Protocol --- ClientboundLoginDisconnectPacket.class, // 5.1.1 Disconnect ClientboundHelloPacket.class, // 5.1.2 Encryption Request @@ -108,8 +159,88 @@ public class TechHider { 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 - ); + ClientboundServerDataPacket.class, // 6.1.20 Code of Conduct is usually in Server Data + + // --- 7.1.x Play Protocol: packets that do not expose hidden blocks, light, sounds, or entities --- + ClientboundBundleDelimiterPacket.class, // 7.1.1 Bundle Delimiter + ClientboundAwardStatsPacket.class, // 7.1.4 Award Statistics + ClientboundBossEventPacket.class, // 7.1.10 Boss Bar + ClientboundChangeDifficultyPacket.class, // 7.1.11 Change Difficulty + ClientboundChunkBatchFinishedPacket.class, // 7.1.12 Chunk Batch Finished + ClientboundChunkBatchStartPacket.class, // 7.1.13 Chunk Batch Start + ClientboundClearTitlesPacket.class, // 7.1.15 Clear Titles + ClientboundCommandSuggestionsPacket.class, // 7.1.16 Command Suggestions Response + ClientboundCommandsPacket.class, // 7.1.17 Commands + ClientboundContainerClosePacket.class, // 7.1.18 Close Container + ClientboundContainerSetContentPacket.class, // 7.1.19 Set Container Content + ClientboundContainerSetDataPacket.class, // 7.1.20 Set Container Property + ClientboundContainerSetSlotPacket.class, // 7.1.21 Set Container Slot + ClientboundCookieRequestPacket.class, // 7.1.22 Cookie Request (play) + ClientboundCooldownPacket.class, // 7.1.23 Set Cooldown + ClientboundCustomChatCompletionsPacket.class, // 7.1.24 Chat Suggestions + ClientboundDeleteChatPacket.class, // 7.1.32 Delete Message + ClientboundDisconnectPacket.class, // 7.1.33 Disconnect (play) + ClientboundDisguisedChatPacket.class, // 7.1.34 Disguised Chat Message + ClientboundGameEventPacket.class, // 7.1.39 Game Event (like ElderGuardian effect, rain, thunder, etc.) + ClientboundInitializeBorderPacket.class, // 7.1.43 Initialize World Border + ClientboundKeepAlivePacket.class, // 7.1.44 Clientbound Keep Alive (play) + ClientboundLoginPacket.class, // 7.1.49 Login (play) + ClientboundMerchantOffersPacket.class, // 7.1.51 Merchant Offers + ClientboundOpenBookPacket.class, // 7.1.57 Open Book + ClientboundOpenScreenPacket.class, // 7.1.58 Open Screen + ClientboundPingPacket.class, // 7.1.60 Ping (play) + ClientboundPlaceGhostRecipePacket.class, // 7.1.62 Place Ghost Recipe + ClientboundPlayerAbilitiesPacket.class, // 7.1.63 Player Abilities (clientbound) + ClientboundPlayerChatPacket.class, // 7.1.64 Player Chat Message + ClientboundPlayerCombatEndPacket.class, // 7.1.65 End Combat + ClientboundPlayerCombatEnterPacket.class, // 7.1.66 Enter Combat + ClientboundPlayerPositionPacket.class, // 7.1.71 Synchronize Player Position (Player owning the channel) + ClientboundPlayerRotationPacket.class, // 7.1.72 Player Rotation (Player owning the channel + ClientboundRecipeBookAddPacket.class, // 7.1.73 Recipe Book Add + ClientboundRecipeBookRemovePacket.class, // 7.1.74 Recipe Book Remove + ClientboundRecipeBookSettingsPacket.class, // 7.1.75 Recipe Book Settings + ClientboundResetScorePacket.class, // 7.1.78 Reset Score + ClientboundResourcePackPopPacket.class, // 7.1.79 Remove Resource Pack (play) + ClientboundResourcePackPushPacket.class, // 7.1.80 Add Resource Pack (play) + ClientboundRespawnPacket.class, // 7.1.81 Respawn + ClientboundSelectAdvancementsTabPacket.class, // 7.1.84 Select Advancements Tab + ClientboundServerDataPacket.class, // 7.1.85 Server Data + ClientboundSetActionBarTextPacket.class, // 7.1.86 Set Action Bar Text + ClientboundSetBorderCenterPacket.class, // 7.1.87 Set Border Center + ClientboundSetBorderLerpSizePacket.class, // 7.1.88 Set Border Lerp Size + ClientboundSetBorderSizePacket.class, // 7.1.89 Set Border Size + ClientboundSetBorderWarningDelayPacket.class, // 7.1.90 Set Border Warning Delay + ClientboundSetBorderWarningDistancePacket.class, // 7.1.91 Set Border Warning Distance + ClientboundSetChunkCacheCenterPacket.class, // 7.1.93 Set Center Chunk + ClientboundSetChunkCacheRadiusPacket.class, // 7.1.94 Set Render Distance + ClientboundSetCursorItemPacket.class, // 7.1.95 Set Cursor Item + ClientboundSetDefaultSpawnPositionPacket.class, // 7.1.96 Set Default Spawn Position + ClientboundSetDisplayObjectivePacket.class, // 7.1.97 Display Objective + ClientboundSetExperiencePacket.class, // 7.1.102 Set Experience + ClientboundSetHealthPacket.class, // 7.1.103 Set Health + ClientboundSetHeldSlotPacket.class, // 7.1.104 Set Held Item (clientbound) + ClientboundSetObjectivePacket.class, // 7.1.105 Update Objectives + ClientboundSetPlayerInventoryPacket.class, // 7.1.107 Set Player Inventory Slot + ClientboundSetScorePacket.class, // 7.1.109 Update Score + ClientboundSetSimulationDistancePacket.class, // 7.1.110 Set Simulation Distance + ClientboundSetSubtitleTextPacket.class, // 7.1.111 Set Subtitle Text + ClientboundSetTimePacket.class, // 7.1.112 Update Time + ClientboundSetTitleTextPacket.class, // 7.1.113 Set Title Text + ClientboundSetTitlesAnimationPacket.class, // 7.1.114 Set Title Animation Times + ClientboundStartConfigurationPacket.class, // 7.1.117 Start Configuration + ClientboundStoreCookiePacket.class, // 7.1.119 Store Cookie (play) + ClientboundSystemChatPacket.class, // 7.1.120 System Chat Message + ClientboundTabListPacket.class, // 7.1.121 Set Tab List Header And Footer + ClientboundTickingStatePacket.class, // 7.1.126 Set Ticking State + ClientboundTickingStepPacket.class, // 7.1.127 Step Tick + ClientboundTransferPacket.class, // 7.1.128 Transfer (play) + ClientboundUpdateAdvancementsPacket.class, // 7.1.129 Update Advancements + ClientboundUpdateRecipesPacket.class, // 7.1.132 Update Recipes + ClientboundCustomReportDetailsPacket.class, // 7.1.135 Custom Report Details + ClientboundServerLinksPacket.class, // 7.1.136 Server Links + ClientboundClearDialogPacket.class, // 7.1.138 Clear Dialog (play) + ClientboundShowDialogPacket.class // 7.1.139 Show Dialog (play) + )); BiFunction, Packet> tossPacket = (p, packet) -> null;