From 32fd4b4630af1d7029092756a1391174f489ff97 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Thu, 21 May 2026 18:11:42 +0200 Subject: [PATCH] Add Sound handling --- .../src/de/steamwar/techhider/TechHider.java | 177 ++---------------- 1 file changed, 20 insertions(+), 157 deletions(-) diff --git a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java index 5317caf7..4e90c5df 100644 --- a/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java +++ b/SpigotCore/SpigotCore_Main/src/de/steamwar/techhider/TechHider.java @@ -1,172 +1,34 @@ package de.steamwar.techhider; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.BiFunction; -import java.util.function.Function; -import java.util.function.ToIntFunction; - +import com.comphenix.tinyprotocol.TinyProtocol; +import de.steamwar.Reflection; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.shorts.ShortArraySet; import it.unimi.dsi.fastutil.shorts.ShortSets; -import net.minecraft.network.UnconfiguredPipelineHandler; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.phys.Vec3; -import org.bukkit.entity.Player; - -import com.comphenix.tinyprotocol.TinyProtocol; - -import de.steamwar.Reflection; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.network.PacketListener; import net.minecraft.network.protocol.Packet; -import net.minecraft.network.protocol.handshake.ClientIntentionPacket; -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; -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.ClientboundShowDialogPacket; -import net.minecraft.network.protocol.common.ClientboundStoreCookiePacket; -import net.minecraft.network.protocol.common.ClientboundTransferPacket; -import net.minecraft.network.protocol.common.ClientboundUpdateTagsPacket; +import net.minecraft.network.protocol.common.*; import net.minecraft.network.protocol.configuration.ClientboundFinishConfigurationPacket; import net.minecraft.network.protocol.configuration.ClientboundRegistryDataPacket; +import net.minecraft.network.protocol.configuration.ClientboundSelectKnownPacks; import net.minecraft.network.protocol.configuration.ClientboundUpdateEnabledFeaturesPacket; import net.minecraft.network.protocol.cookie.ClientboundCookieRequestPacket; -import net.minecraft.network.protocol.game.ClientboundAddEntityPacket; -import net.minecraft.network.protocol.game.ClientboundAnimatePacket; -import net.minecraft.network.protocol.game.ClientboundBlockChangedAckPacket; -import net.minecraft.network.protocol.game.ClientboundBlockDestructionPacket; -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.ClientboundBundlePacket; -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.ClientboundDamageEventPacket; -import net.minecraft.network.protocol.game.ClientboundDeleteChatPacket; -import net.minecraft.network.protocol.game.ClientboundDisguisedChatPacket; -import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; -import net.minecraft.network.protocol.game.ClientboundEntityPositionSyncPacket; -import net.minecraft.network.protocol.game.ClientboundExplodePacket; -import net.minecraft.network.protocol.game.ClientboundForgetLevelChunkPacket; -import net.minecraft.network.protocol.game.ClientboundGameEventPacket; -import net.minecraft.network.protocol.game.ClientboundHorseScreenOpenPacket; -import net.minecraft.network.protocol.game.ClientboundHurtAnimationPacket; -import net.minecraft.network.protocol.game.ClientboundInitializeBorderPacket; -import net.minecraft.network.protocol.game.ClientboundLevelChunkWithLightPacket; -import net.minecraft.network.protocol.game.ClientboundLevelEventPacket; -import net.minecraft.network.protocol.game.ClientboundLevelParticlesPacket; -import net.minecraft.network.protocol.game.ClientboundLightUpdatePacket; -import net.minecraft.network.protocol.game.ClientboundLoginPacket; -import net.minecraft.network.protocol.game.ClientboundMapItemDataPacket; -import net.minecraft.network.protocol.game.ClientboundMerchantOffersPacket; -import net.minecraft.network.protocol.game.ClientboundMoveEntityPacket; -import net.minecraft.network.protocol.game.ClientboundMoveMinecartPacket; -import net.minecraft.network.protocol.game.ClientboundMoveVehiclePacket; -import net.minecraft.network.protocol.game.ClientboundOpenBookPacket; -import net.minecraft.network.protocol.game.ClientboundOpenScreenPacket; -import net.minecraft.network.protocol.game.ClientboundOpenSignEditorPacket; -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.ClientboundPlayerCombatKillPacket; -import net.minecraft.network.protocol.game.ClientboundPlayerInfoRemovePacket; -import net.minecraft.network.protocol.game.ClientboundPlayerInfoUpdatePacket; -import net.minecraft.network.protocol.game.ClientboundPlayerLookAtPacket; -import net.minecraft.network.protocol.game.ClientboundPlayerPositionPacket; -import net.minecraft.network.protocol.game.ClientboundPlayerRotationPacket; -import net.minecraft.network.protocol.game.ClientboundProjectilePowerPacket; -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.ClientboundRemoveEntitiesPacket; -import net.minecraft.network.protocol.game.ClientboundRemoveMobEffectPacket; -import net.minecraft.network.protocol.game.ClientboundResetScorePacket; -import net.minecraft.network.protocol.game.ClientboundRespawnPacket; -import net.minecraft.network.protocol.game.ClientboundRotateHeadPacket; -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.ClientboundSetCameraPacket; -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.ClientboundSetEntityDataPacket; -import net.minecraft.network.protocol.game.ClientboundSetEntityLinkPacket; -import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket; -import net.minecraft.network.protocol.game.ClientboundSetEquipmentPacket; -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.ClientboundSetPassengersPacket; -import net.minecraft.network.protocol.game.ClientboundSetPlayerInventoryPacket; -import net.minecraft.network.protocol.game.ClientboundSetPlayerTeamPacket; -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.ClientboundSoundEntityPacket; -import net.minecraft.network.protocol.game.ClientboundSoundPacket; -import net.minecraft.network.protocol.game.ClientboundStartConfigurationPacket; -import net.minecraft.network.protocol.game.ClientboundStopSoundPacket; -import net.minecraft.network.protocol.game.ClientboundSystemChatPacket; -import net.minecraft.network.protocol.game.ClientboundTabListPacket; -import net.minecraft.network.protocol.game.ClientboundTagQueryPacket; -import net.minecraft.network.protocol.game.ClientboundTakeItemEntityPacket; -import net.minecraft.network.protocol.game.ClientboundTeleportEntityPacket; -import net.minecraft.network.protocol.game.ClientboundTickingStatePacket; -import net.minecraft.network.protocol.game.ClientboundTickingStepPacket; -import net.minecraft.network.protocol.game.ClientboundTrackedWaypointPacket; -import net.minecraft.network.protocol.game.ClientboundUpdateAdvancementsPacket; -import net.minecraft.network.protocol.game.ClientboundUpdateAttributesPacket; -import net.minecraft.network.protocol.game.ClientboundUpdateMobEffectPacket; -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; -import net.minecraft.network.protocol.login.ClientboundLoginDisconnectPacket; -import net.minecraft.network.protocol.login.ClientboundLoginFinishedPacket; -import net.minecraft.network.protocol.configuration.ClientboundSelectKnownPacks; +import net.minecraft.network.protocol.game.*; +import net.minecraft.network.protocol.login.*; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import org.bukkit.entity.Player; + +import java.util.*; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.ToIntFunction; /** * The TechHider follows the default-deny security principle, @@ -320,6 +182,7 @@ public abstract class TechHider { ClientboundPlayerInfoRemovePacket.class, // 7.1.68 Player Info Remove ClientboundPlayerInfoUpdatePacket.class, // 7.1.69 Player Info Update ClientboundMoveVehiclePacket.class, // 7.1.56 Move Vehicle (vehicle the player is in) + ClientboundStopSoundPacket.class, // 7.1.118 Stop Sound: sound state side channel //TODO rem later ClientboundBundlePacket.class @@ -422,11 +285,11 @@ public abstract class TechHider { // --- Sound packets --- // 7.1.115 Entity Sound Effect: entity id and sound. - processors.put(ClientboundSoundEntityPacket.class, tossPacket); + processors.put(ClientboundSoundEntityPacket.class, this.buildEntityPacketProcessor(ClientboundSoundEntityPacket::getId)); // 7.1.116 Sound Effect: sound type and position. - processors.put(ClientboundSoundPacket.class, tossPacket); - // 7.1.118 Stop Sound: sound state side channel. - processors.put(ClientboundStopSoundPacket.class, tossPacket); + processors.put(ClientboundSoundPacket.class, this.buildPositionBasedPacketProcessor(packet -> { + return new BlockPos.MutableBlockPos(packet.getX(), packet.getY(), packet.getZ()).immutable(); + })); // --- Others --- // 7.1.137 Waypoint: world/entity tracking signal.