forked from SteamWar/SteamWar
Update bypass list with harmless play-client bound packets
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package de.steamwar.techhider;
|
package de.steamwar.techhider;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -22,6 +23,7 @@ import net.minecraft.core.SectionPos;
|
|||||||
import net.minecraft.network.FriendlyByteBuf;
|
import net.minecraft.network.FriendlyByteBuf;
|
||||||
import net.minecraft.network.PacketListener;
|
import net.minecraft.network.PacketListener;
|
||||||
import net.minecraft.network.protocol.Packet;
|
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.ClientboundCustomPayloadPacket;
|
||||||
import net.minecraft.network.protocol.common.ClientboundCustomReportDetailsPacket;
|
import net.minecraft.network.protocol.common.ClientboundCustomReportDetailsPacket;
|
||||||
import net.minecraft.network.protocol.common.ClientboundDisconnectPacket;
|
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.ClientboundResourcePackPopPacket;
|
||||||
import net.minecraft.network.protocol.common.ClientboundResourcePackPushPacket;
|
import net.minecraft.network.protocol.common.ClientboundResourcePackPushPacket;
|
||||||
import net.minecraft.network.protocol.common.ClientboundServerLinksPacket;
|
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.ClientboundStoreCookiePacket;
|
||||||
import net.minecraft.network.protocol.common.ClientboundTransferPacket;
|
import net.minecraft.network.protocol.common.ClientboundTransferPacket;
|
||||||
import net.minecraft.network.protocol.configuration.ClientboundFinishConfigurationPacket;
|
import net.minecraft.network.protocol.configuration.ClientboundFinishConfigurationPacket;
|
||||||
import net.minecraft.network.protocol.configuration.ClientboundRegistryDataPacket;
|
import net.minecraft.network.protocol.configuration.ClientboundRegistryDataPacket;
|
||||||
import net.minecraft.network.protocol.configuration.ClientboundUpdateEnabledFeaturesPacket;
|
import net.minecraft.network.protocol.configuration.ClientboundUpdateEnabledFeaturesPacket;
|
||||||
import net.minecraft.network.protocol.cookie.ClientboundCookieRequestPacket;
|
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.ClientboundBlockEntityDataPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundBlockEventPacket;
|
import net.minecraft.network.protocol.game.ClientboundBlockEventPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket;
|
import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundBossEventPacket;
|
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.ClientboundClearTitlesPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundCommandSuggestionsPacket;
|
import net.minecraft.network.protocol.game.ClientboundCommandSuggestionsPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundCommandsPacket;
|
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.ClientboundDisguisedChatPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundGameEventPacket;
|
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.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.ClientboundPlayerAbilitiesPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundPlayerChatPacket;
|
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.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.ClientboundServerDataPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetDefaultSpawnPositionPacket;
|
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.ClientboundSetExperiencePacket;
|
||||||
|
import net.minecraft.network.protocol.game.ClientboundSetHeldSlotPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetHealthPacket;
|
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.ClientboundSetSubtitleTextPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetTimePacket;
|
import net.minecraft.network.protocol.game.ClientboundSetTimePacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetTitleTextPacket;
|
import net.minecraft.network.protocol.game.ClientboundSetTitleTextPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundSetTitlesAnimationPacket;
|
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.ClientboundSystemChatPacket;
|
||||||
import net.minecraft.network.protocol.game.ClientboundTabListPacket;
|
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.ClientboundCustomQueryPacket;
|
||||||
import net.minecraft.network.protocol.login.ClientboundHelloPacket;
|
import net.minecraft.network.protocol.login.ClientboundHelloPacket;
|
||||||
import net.minecraft.network.protocol.login.ClientboundLoginCompressionPacket;
|
import net.minecraft.network.protocol.login.ClientboundLoginCompressionPacket;
|
||||||
@@ -81,11 +131,12 @@ public class TechHider {
|
|||||||
private final Set<String> blockEntitiesToHide;
|
private final Set<String> blockEntitiesToHide;
|
||||||
private final BlockState blockToObfuscateTo;
|
private final BlockState blockToObfuscateTo;
|
||||||
|
|
||||||
|
//TODO handle packet bundle
|
||||||
public TechHider(Plugin plugin, Set<Integer> blockIdsToObfuscate, BlockState blockToObfuscateTo, Set<String> blockEntitiesToHide) {
|
public TechHider(Plugin plugin, Set<Integer> blockIdsToObfuscate, BlockState blockToObfuscateTo, Set<String> blockEntitiesToHide) {
|
||||||
this.blockIdsToObfuscate = blockIdsToObfuscate;
|
this.blockIdsToObfuscate = blockIdsToObfuscate;
|
||||||
this.blockToObfuscateTo = blockToObfuscateTo;
|
this.blockToObfuscateTo = blockToObfuscateTo;
|
||||||
this.blockEntitiesToHide = blockEntitiesToHide;
|
this.blockEntitiesToHide = blockEntitiesToHide;
|
||||||
this.bypassingPackets = Set.of(
|
this.bypassingPackets = new HashSet<>(List.of(
|
||||||
// --- 5.1.x Login Protocol ---
|
// --- 5.1.x Login Protocol ---
|
||||||
ClientboundLoginDisconnectPacket.class, // 5.1.1 Disconnect
|
ClientboundLoginDisconnectPacket.class, // 5.1.1 Disconnect
|
||||||
ClientboundHelloPacket.class, // 5.1.2 Encryption Request
|
ClientboundHelloPacket.class, // 5.1.2 Encryption Request
|
||||||
@@ -108,8 +159,88 @@ public class TechHider {
|
|||||||
ClientboundCustomReportDetailsPacket.class, // 6.1.16 Custom Report Details
|
ClientboundCustomReportDetailsPacket.class, // 6.1.16 Custom Report Details
|
||||||
ClientboundServerLinksPacket.class, // 6.1.17 Server Links
|
ClientboundServerLinksPacket.class, // 6.1.17 Server Links
|
||||||
ClientboundSystemChatPacket.class, // 6.1.18/19 Dialogs are often handled via System Chat or Custom Payloads
|
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<Player, Packet<? extends PacketListener>, Packet<? extends PacketListener>> tossPacket = (p, packet) -> null;
|
BiFunction<Player, Packet<? extends PacketListener>, Packet<? extends PacketListener>> tossPacket = (p, packet) -> null;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user