From 8e7275eaa84cd723b3c1af3e8911ffb26a55e8e6 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Mon, 18 Sep 2023 20:48:12 +0200 Subject: [PATCH] refactor packet registry This unifies s2c and c2s registries and partly reverts the last rewrite (!40). It is now possible to register packets in multiple states (e.g. login and play). That will be required for 23w31a. It also makes classes resolvable in the ide or static coverage reports. --- build.gradle.kts | 2 +- .../kotlin/de/bixilon/minosoft/MinosoftSIT.kt | 10 +- .../input/interaction/AttackHandlerTest.kt | 2 +- .../interaction/InteractionManagerTest.kt | 4 +- .../breaking/BreakHandlerInputTest.kt | 4 +- .../interaction/breaking/BreakHandlerTest.kt | 4 +- .../input/interaction/long/LongUseBlockIT.kt | 4 +- .../input/interaction/long/LongUseEntityIT.kt | 2 +- .../input/interaction/long/LongUseIT.kt | 8 +- .../input/interaction/short/BlockPlaceIT.kt | 4 +- .../input/interaction/short/BlockUseIT.kt | 2 +- .../input/interaction/short/EntityUseIT.kt | 2 +- .../input/interaction/short/ItemUseIT.kt | 4 +- .../input/interaction/short/OnAirUseIT.kt | 2 +- .../interaction/use/UseHandlerInputTest.kt | 6 +- .../packets/registry/PacketRegistryTest.kt | 86 ++++ .../packets/s2c/play/CommandsS2CPTest.kt | 1 + .../packets/s2c/play/chunk/ChunkS2CPTest.kt | 1 + .../protocol/DefaultPacketMappingTest.kt | 36 ++ src/main/java/de/bixilon/minosoft/Minosoft.kt | 9 +- .../generator/AssetsPropertiesGenerator.kt | 7 +- .../player/local/MovementPacketSender.kt | 10 +- .../event/world/handler/win/WinGameHandler.kt | 2 +- .../main/play/server/ServerListController.kt | 19 +- .../rendering/gui/gui/screen/CreditsScreen.kt | 4 +- .../minosoft/input/interaction/DropHandler.kt | 2 +- .../input/interaction/HotbarHandler.kt | 4 +- .../input/interaction/InteractionManager.kt | 2 +- .../breaking/creative/CreativeBreaker.kt | 2 +- .../breaking/survival/SurvivalDigger.kt | 2 +- .../input/interaction/use/LongUseHandler.kt | 2 +- .../input/interaction/use/UseHandler.kt | 2 +- .../de/bixilon/minosoft/main/BootTasks.kt | 3 +- .../modding/event/events/EntitySpawnEvent.kt | 3 +- .../event/events/EntitySpectateEvent.kt | 4 +- .../modding/event/events/ExplosionEvent.kt | 4 +- .../modding/event/events/KickEvent.kt | 8 +- .../modding/event/events/LoginKickEvent.kt | 27 -- .../event/events/ParticleSpawnEvent.kt | 4 +- .../connection/play/util/ConnectionUtil.kt | 2 +- .../PacketBufferUnderflowException.kt | 6 +- .../exceptions/PacketNotAvailableException.kt | 10 +- ...xception.kt => PacketNotFoundException.kt} | 11 +- ...on.kt => PacketNotImplementedException.kt} | 11 +- .../unknown/UnknownPacketException.kt | 4 +- .../netty/pipeline/ClientPacketHandler.kt | 17 +- .../client/netty/pipeline/QueuedS2CP.kt | 6 +- .../netty/pipeline/encoding/PacketDecoder.kt | 40 +- .../netty/pipeline/encoding/PacketEncoder.kt | 70 +++- .../protocol/packets/c2s/C2SPacket.kt | 2 +- .../packets/c2s/handshake/HandshakeC2SP.kt | 3 - .../protocol/packets/c2s/login/ChannelC2SP.kt | 3 - .../packets/c2s/login/EncryptionC2SP.kt | 3 - .../protocol/packets/c2s/login/StartC2SP.kt | 3 - .../protocol/packets/c2s/play/ChannelC2SP.kt | 2 - .../packets/c2s/play/HeartbeatC2SP.kt | 2 - .../protocol/packets/c2s/play/PongC2SP.kt | 2 - .../packets/c2s/play/ResourcepackC2SP.kt | 2 - .../packets/c2s/play/SessionDataC2SP.kt | 2 - .../protocol/packets/c2s/play/SettingsC2SP.kt | 2 - .../protocol/packets/c2s/play/TradeC2SP.kt | 2 - .../tab/AdvancementCloseTabC2SP.kt | 2 - .../advancement/tab/AdvancementOpenTabC2SP.kt | 2 - .../c2s/play/block/AnvilItemNameC2SP.kt | 2 - .../c2s/play/block/BeaconEffectC2SP.kt | 2 - .../c2s/play/block/BlockInteractC2SP.kt | 2 - .../packets/c2s/play/block/BlockNbtC2SP.kt | 2 - .../c2s/play/block/CommandBlockC2SP.kt | 2 - .../c2s/play/block/GenerateStructureC2SP.kt | 2 - .../packets/c2s/play/block/JigsawBlockC2SP.kt | 2 - .../play/block/MinecartCommandBlockC2SP.kt | 2 - .../packets/c2s/play/block/SignTextC2SP.kt | 2 - .../c2s/play/block/StructureBlockC2SP.kt | 2 - .../packets/c2s/play/chat/ChatMessageC2SP.kt | 2 - .../c2s/play/{ => chat}/ChatPreviewC2SP.kt | 4 +- .../packets/c2s/play/chat/CommandC2SP.kt | 2 - .../c2s/play/chat/CommandSuggestionsC2SP.kt | 2 - .../chat/LegacyMessageAcknowledgementC2SP.kt | 2 - .../play/chat/MessageAcknowledgementC2SP.kt | 2 - .../c2s/play/chat/SignedChatMessageC2SP.kt | 2 - .../c2s/play/container/CloseContainerC2SP.kt | 2 - .../c2s/play/container/ContainerActionC2SP.kt | 2 - .../c2s/play/container/ContainerButtonC2SP.kt | 2 - .../c2s/play/container/ContainerClickC2SP.kt | 2 - .../c2s/play/difficulty/DifficultyC2SP.kt | 2 - .../c2s/play/difficulty/LockDifficultyC2SP.kt | 2 - .../c2s/play/entity/EntityActionC2SP.kt | 2 - .../packets/c2s/play/entity/EntityNbtC2SP.kt | 2 - .../c2s/play/entity/EntitySpectateC2SP.kt | 2 - .../play/entity/interact/EntityAttackC2SP.kt | 2 - .../interact/EntityEmptyInteractC2SP.kt | 2 - .../interact/EntityInteractPositionC2SP.kt | 2 - .../{ => entity}/move/ConfirmTeleportC2SP.kt | 4 +- .../{ => entity}/move/GroundChangeC2SP.kt | 4 +- .../play/{ => entity}/move/PositionC2SP.kt | 4 +- .../{ => entity}/move/PositionRotationC2SP.kt | 4 +- .../play/{ => entity}/move/RotationC2SP.kt | 4 +- .../move/vehicle/MoveVehicleC2SP.kt | 4 +- .../move/vehicle/SteerBoatC2SP.kt | 4 +- .../move/vehicle/VehicleInputC2SP.kt | 4 +- .../{ => entity/player}/ClientActionC2SP.kt | 4 +- .../{ => entity/player}/HotbarSlotC2SP.kt | 4 +- .../{ => entity/player}/PlayerActionC2SP.kt | 4 +- .../{move => entity/player}/SwingArmC2SP.kt | 4 +- .../{move => entity/player}/ToggleFlyC2SP.kt | 4 +- .../packets/c2s/play/{ => item}/BookC2SP.kt | 4 +- .../c2s/{ => play/item}/ItemPickC2SP.kt | 5 +- .../c2s/play/item/ItemStackCreateC2SP.kt | 2 - .../packets/c2s/play/item/UseItemC2SP.kt | 2 - .../c2s/play/recipe/CraftingRecipeC2SP.kt | 2 - .../c2s/play/recipe/DisplayedRecipeC2SP.kt | 2 - .../packets/c2s/play/recipe/RecipeBookC2SP.kt | 2 - .../c2s/play/recipe/book/DisplayRecipeC2SP.kt | 2 - .../play/recipe/book/RecipeBookStatesC2SP.kt | 2 - .../protocol/packets/c2s/status/PingC2SP.kt | 3 - .../packets/c2s/status/StatusRequestC2SP.kt | 3 - .../packets/factory/AbstractPacketType.kt | 20 - .../protocol/packets/factory/C2SPacketType.kt | 35 -- .../protocol/packets/factory/LoadPacket.kt | 26 -- .../packets/factory/PacketTypeRegistry.kt | 175 -------- .../protocol/packets/factory/S2CPacketType.kt | 52 --- .../factory/factories/ReflectionFactory.kt | 36 -- .../packets/registry/DefaultPackets.kt | 373 ++++++++++++++++++ .../registry/PacketExtraHandler.kt} | 17 +- .../packets/registry/PacketMapping.kt | 73 ++++ .../packets/registry/PacketRegistry.kt | 77 ++++ .../protocol/packets/registry/PacketType.kt | 45 +++ .../factory}/PacketFactory.kt | 11 +- .../factory}/PlayPacketFactory.kt | 16 +- .../protocol/packets/s2c/PlayS2CPacket.kt | 10 +- .../protocol/packets/s2c/S2CPacket.kt | 7 +- .../protocol/packets/s2c/StatusS2CPacket.kt | 15 +- .../s2c/{login => general}/CompressionS2CP.kt | 17 +- .../packets/s2c/{play => general}/KickS2CP.kt | 15 +- .../packets/s2c/interfaces/CompressionS2CP.kt | 24 -- .../protocol/packets/s2c/login/ChannelS2CP.kt | 3 - .../packets/s2c/login/EncryptionS2CP.kt | 12 - .../protocol/packets/s2c/login/KickS2CP.kt | 41 -- .../protocol/packets/s2c/login/SuccessS2CP.kt | 2 - .../protocol/packets/s2c/play/BundleS2CP.kt | 2 - .../protocol/packets/s2c/play/ChannelS2CP.kt | 2 - .../packets/s2c/play/CompressionS2CP.kt | 29 -- .../protocol/packets/s2c/play/FeaturesS2CP.kt | 2 - .../packets/s2c/play/GameEventS2CP.kt | 2 - .../packets/s2c/play/HeartbeatS2CP.kt | 2 - .../packets/s2c/play/InitializeS2CP.kt | 7 +- .../packets/s2c/play/NbtResponseS2CP.kt | 2 - .../protocol/packets/s2c/play/PingS2CP.kt | 2 - .../packets/s2c/play/PlayStatusS2CP.kt | 2 - .../packets/s2c/play/ResourcepackS2CP.kt | 2 - .../protocol/packets/s2c/play/RespawnS2CP.kt | 2 - .../packets/s2c/play/StatisticsS2CP.kt | 2 - .../protocol/packets/s2c/play/TagsS2CP.kt | 2 - .../play/advancement/AdvancementTabS2CP.kt | 2 - .../s2c/play/advancement/AdvancementsS2CP.kt | 2 - .../packets/s2c/play/block/BlockActionS2CP.kt | 2 - .../s2c/play/block/BlockBreakAnimationS2CP.kt | 2 - .../packets/s2c/play/block/BlockBreakS2CP.kt | 2 - .../packets/s2c/play/block/BlockDataS2CP.kt | 2 - .../packets/s2c/play/block/BlockS2CP.kt | 2 - .../packets/s2c/play/block/BlocksS2CP.kt | 2 - .../s2c/play/block/LegacyBlockBreakS2CP.kt | 4 +- .../s2c/play/{ => block}/chunk/ChunkAction.kt | 2 +- .../play/{ => block}/chunk/ChunkBiomeS2CP.kt | 4 +- .../play/{ => block}/chunk/ChunkCenterS2CP.kt | 4 +- .../play/{ => block}/chunk/ChunkLightS2CP.kt | 15 +- .../s2c/play/{ => block}/chunk/ChunkS2CP.kt | 4 +- .../s2c/play/{ => block}/chunk/ChunksS2CP.kt | 4 +- .../chunk}/SimulationDistanceS2CP.kt | 4 +- .../play/{ => block}/chunk/UnloadChunkS2CP.kt | 4 +- .../{ => block}/chunk/ViewDistanceS2CP.kt | 4 +- .../s2c/play/border/CenterWorldBorderS2CP.kt | 2 - .../play/border/InitializeWorldBorderS2CP.kt | 2 - .../play/border/InterpolateWorldBorderS2CP.kt | 2 - .../s2c/play/border/SizeWorldBorderS2CP.kt | 2 - .../play/border/WarnBlocksWorldBorderS2CP.kt | 2 - .../play/border/WarnTimeWorldBorderS2CP.kt | 2 - .../s2c/play/border/WorldBorderS2CF.kt | 8 +- .../packets/s2c/play/bossbar/BossbarS2CF.kt | 8 +- .../packets/s2c/play/chat/ChatMessageS2CP.kt | 2 - .../s2c/play/{ => chat}/ChatPreviewS2CP.kt | 4 +- .../s2c/play/chat/ChatSuggestionsS2CP.kt | 2 - .../s2c/play/chat/CommandSuggestionsS2CP.kt | 2 - .../s2c/play/{ => chat}/CommandsS2CP.kt | 4 +- .../packets/s2c/play/chat/HideMessageS2CP.kt | 2 - .../s2c/play/chat/MessageHeaderS2CP.kt | 2 - .../s2c/play/chat/SignedChatMessageS2CP.kt | 2 - .../TemporaryChatPreviewS2CP.kt} | 6 +- .../s2c/play/chat/UnsignedChatMessageS2CP.kt | 2 - .../s2c/play/combat/CombatEventS2CF.kt | 8 +- .../s2c/play/combat/EndCombatEventS2CP.kt | 2 - .../s2c/play/combat/EnterCombatEventS2CP.kt | 2 - .../s2c/play/combat/KillCombatEventS2CP.kt | 2 - .../s2c/play/container/CloseContainerS2CP.kt | 2 - .../s2c/play/container/ContainerActionS2CP.kt | 2 - .../s2c/play/container/ContainerItemS2CP.kt | 2 - .../s2c/play/container/ContainerItemsS2CP.kt | 2 - .../play/container/ContainerPropertiesS2CP.kt | 2 - .../s2c/play/container/OpenContainerS2CP.kt | 2 - .../OpenEntityContainerS2CP.kt} | 8 +- .../s2c/play/{ => entity}/DamageTiltS2CP.kt | 4 +- .../s2c/play/entity/EntityAnimationS2CP.kt | 2 - .../s2c/play/entity/EntityAttributesS2CP.kt | 2 - .../s2c/play/entity/EntityCollectS2CP.kt | 2 - .../s2c/play/entity/EntityDamageS2CP.kt | 2 - .../packets/s2c/play/entity/EntityDataS2CP.kt | 2 - .../s2c/play/entity/EntityEquipmentS2CP.kt | 2 - ...EntityStatusS2CP.kt => EntityEventS2CP.kt} | 7 +- .../s2c/play/entity/EntitySleepS2CP.kt | 2 - .../play/entity/effect/EntityEffectS2CP.kt | 2 - .../entity/effect/EntityRemoveEffectS2CP.kt | 2 - .../s2c/play/entity/move/EmptyMoveS2CP.kt | 2 - .../s2c/play/entity/move/HeadRotationS2CP.kt | 2 - .../play/{ => entity/move}/MoveVehicleS2CP.kt | 6 +- .../play/entity/move/MovementRotationS2CP.kt | 2 - .../play/{ => entity/move}/PlayerFaceS2CP.kt | 4 +- .../play/entity/move/PositionRotationS2CP.kt | 6 +- .../s2c/play/entity/move/RelativeMoveS2CP.kt | 2 - .../s2c/play/entity/move/RotationS2CP.kt | 2 - .../s2c/play/entity/move/TeleportS2CP.kt | 2 - .../s2c/play/entity/move/VelocityS2CP.kt | 2 - .../play/entity/passenger/EntityAttachS2CP.kt | 2 - .../entity/passenger/EntityPassengerS2CP.kt | 2 - .../play/{ => entity/player}/CameraS2CP.kt | 4 +- .../{ => entity/player}/ExperienceS2CP.kt | 4 +- .../play/{ => entity/player}/HealthS2CP.kt | 6 +- .../{ => entity/player}/HotbarSlotS2CP.kt | 4 +- .../player}/PlayerAbilitiesS2CP.kt | 4 +- .../play/entity/spawn/EntityDestroyS2CP.kt | 2 - .../entity/spawn/EntityExperienceOrbS2CP.kt | 2 - .../play/entity/spawn/EntityMobSpawnS2CP.kt | 2 - .../entity/spawn/EntityObjectSpawnS2CP.kt | 2 - .../play/entity/spawn/EntityPaintingS2CP.kt | 2 - .../entity/{ => spawn}/EntityPlayerS2CP.kt | 4 +- .../entity/spawn/GlobalEntitySpawnS2CP.kt | 2 - .../packets/s2c/play/{ => item}/BookS2CP.kt | 4 +- .../play/{ => item}/CompassPositionS2CP.kt | 4 +- .../s2c/play/{ => item}/CraftingRecipeS2CP.kt | 4 +- .../s2c/play/{ => item}/ItemCooldownS2CP.kt | 4 +- .../protocol/packets/s2c/play/map/MapS2CP.kt | 2 - .../s2c/play/map/legacy/LegacyMapS2CF.kt | 8 +- .../packets/s2c/play/recipes/RecipesS2CP.kt | 2 - .../s2c/play/recipes/UnlockRecipesS2CP.kt | 2 - .../play/scoreboard/ObjectivePositionS2CP.kt | 2 - .../scoreboard/objective/ObjectiveS2CF.kt | 8 +- .../scoreboard/score/ScoreboardScoreS2CF.kt | 8 +- .../s2c/play/scoreboard/teams/TeamsS2CF.kt | 8 +- .../packets/s2c/play/sign/SignEditorS2CP.kt | 2 - .../packets/s2c/play/sign/SignTextS2CP.kt | 2 - .../packets/s2c/play/sound/EntitySoundS2CP.kt | 2 - .../packets/s2c/play/sound/NamedSoundS2CP.kt | 2 - .../packets/s2c/play/sound/SoundEventS2CP.kt | 2 - .../packets/s2c/play/sound/StopSoundS2CP.kt | 2 - .../packets/s2c/play/tab/LegacyTabListS2CP.kt | 2 - .../packets/s2c/play/tab/TabListRemoveS2CP.kt | 2 - .../packets/s2c/play/tab/TabListS2CP.kt | 2 - .../packets/s2c/play/tab/TabListTextS2CP.kt | 2 - .../packets/s2c/play/title/ClearTitleS2CF.kt | 8 +- .../packets/s2c/play/title/HideTitleS2CP.kt | 2 - .../packets/s2c/play/title/HotbarTextS2CP.kt | 2 - .../packets/s2c/play/title/ResetTitleS2CP.kt | 2 - .../packets/s2c/play/title/SubtitleS2CP.kt | 2 - .../packets/s2c/play/title/TitleS2CF.kt | 8 +- .../packets/s2c/play/title/TitleTextS2CP.kt | 2 - .../packets/s2c/play/title/TitleTimesS2CP.kt | 2 - .../s2c/play/{ => world}/DifficultyS2CP.kt | 4 +- .../s2c/play/{ => world}/ExplosionS2CP.kt | 4 +- .../s2c/play/{ => world}/ParticleS2CP.kt | 4 +- .../packets/s2c/play/{ => world}/TimeS2CP.kt | 4 +- .../s2c/play/{ => world}/VibrationS2CP.kt | 4 +- .../play/{ => world}/VillagerTradesS2CP.kt | 4 +- .../s2c/play/{ => world}/WorldEventS2CP.kt | 4 +- .../protocol/packets/s2c/status/PongS2CP.kt | 3 - .../protocol/packets/s2c/status/StatusS2CP.kt | 3 - .../types/HandleablePacket.kt} | 8 +- .../protocol/packets/{ => types}/Packet.kt | 4 +- .../protocol/protocol/DefaultPacketMapping.kt | 51 +++ .../PacketDirections.kt} | 6 +- .../minosoft/protocol/protocol/Protocol.kt | 58 --- .../minosoft/protocol/versions/Version.kt | 46 ++- .../VersionIndex.kt} | 11 +- .../protocol/versions/VersionLoader.kt | 98 +++++ .../minosoft/protocol/versions/Versions.kt | 144 +------ .../java/de/bixilon/minosoft/util/KUtil.kt | 4 + .../crash/section/ConnectionCrashSection.kt | 6 +- .../assets/minosoft/mapping/versions.json | 138 +++---- 286 files changed, 1297 insertions(+), 1487 deletions(-) create mode 100644 src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/registry/PacketRegistryTest.kt create mode 100644 src/integration-test/kotlin/de/bixilon/minosoft/protocol/protocol/DefaultPacketMappingTest.kt delete mode 100644 src/main/java/de/bixilon/minosoft/modding/event/events/LoginKickEvent.kt rename src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/{WrongProtocolStateException.kt => PacketNotFoundException.kt} (75%) rename src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/implementation/{S2CPacketNotImplementedException.kt => PacketNotImplementedException.kt} (81%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => chat}/ChatPreviewC2SP.kt (91%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity}/move/ConfirmTeleportC2SP.kt (91%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity}/move/GroundChangeC2SP.kt (91%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity}/move/PositionC2SP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity}/move/PositionRotationC2SP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity}/move/RotationC2SP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity}/move/vehicle/MoveVehicleC2SP.kt (91%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity}/move/vehicle/SteerBoatC2SP.kt (91%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity}/move/vehicle/VehicleInputC2SP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity/player}/ClientActionC2SP.kt (94%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity/player}/HotbarSlotC2SP.kt (91%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => entity/player}/PlayerActionC2SP.kt (95%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{move => entity/player}/SwingArmC2SP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{move => entity/player}/ToggleFlyC2SP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/{ => item}/BookC2SP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/c2s/{ => play/item}/ItemPickC2SP.kt (91%) delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/factory/AbstractPacketType.kt delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/factory/C2SPacketType.kt delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/factory/LoadPacket.kt delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/factory/PacketTypeRegistry.kt delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/factory/S2CPacketType.kt delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/ReflectionFactory.kt create mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/registry/DefaultPackets.kt rename src/main/java/de/bixilon/minosoft/protocol/{PacketErrorHandler.kt => packets/registry/PacketExtraHandler.kt} (64%) create mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketMapping.kt create mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketRegistry.kt create mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketType.kt rename src/main/java/de/bixilon/minosoft/protocol/packets/{factory/factories => registry/factory}/PacketFactory.kt (74%) rename src/main/java/de/bixilon/minosoft/protocol/packets/{factory/factories => registry/factory}/PlayPacketFactory.kt (69%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/{login => general}/CompressionS2CP.kt (72%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/{play => general}/KickS2CP.kt (81%) delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/s2c/interfaces/CompressionS2CP.kt delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/KickS2CP.kt delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompressionS2CP.kt rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => block}/chunk/ChunkAction.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => block}/chunk/ChunkBiomeS2CP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => block}/chunk/ChunkCenterS2CP.kt (91%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => block}/chunk/ChunkLightS2CP.kt (84%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => block}/chunk/ChunkS2CP.kt (98%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => block}/chunk/ChunksS2CP.kt (96%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => block/chunk}/SimulationDistanceS2CP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => block}/chunk/UnloadChunkS2CP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => block}/chunk/ViewDistanceS2CP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => chat}/ChatPreviewS2CP.kt (91%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => chat}/CommandsS2CP.kt (96%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{TemporaryChatPreview.kt => chat/TemporaryChatPreviewS2CP.kt} (86%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{OpenHorseContainerS2CP.kt => container/OpenEntityContainerS2CP.kt} (84%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => entity}/DamageTiltS2CP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/{EntityStatusS2CP.kt => EntityEventS2CP.kt} (89%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => entity/move}/MoveVehicleS2CP.kt (89%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => entity/move}/PlayerFaceS2CP.kt (94%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => entity/player}/CameraS2CP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => entity/player}/ExperienceS2CP.kt (94%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => entity/player}/HealthS2CP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => entity/player}/HotbarSlotS2CP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => entity/player}/PlayerAbilitiesS2CP.kt (95%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/{ => spawn}/EntityPlayerS2CP.kt (95%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => item}/BookS2CP.kt (91%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => item}/CompassPositionS2CP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => item}/CraftingRecipeS2CP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => item}/ItemCooldownS2CP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => world}/DifficultyS2CP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => world}/ExplosionS2CP.kt (96%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => world}/ParticleS2CP.kt (95%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => world}/TimeS2CP.kt (93%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => world}/VibrationS2CP.kt (92%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => world}/VillagerTradesS2CP.kt (95%) rename src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/{ => world}/WorldEventS2CP.kt (94%) rename src/main/java/de/bixilon/minosoft/protocol/{PacketSkipper.kt => packets/types/HandleablePacket.kt} (83%) rename src/main/java/de/bixilon/minosoft/protocol/packets/{ => types}/Packet.kt (89%) create mode 100644 src/main/java/de/bixilon/minosoft/protocol/protocol/DefaultPacketMapping.kt rename src/main/java/de/bixilon/minosoft/protocol/{packets/factory/PacketDirection.kt => protocol/PacketDirections.kt} (86%) delete mode 100644 src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.kt rename src/main/java/de/bixilon/minosoft/protocol/{packets/PacketsRoot.kt => versions/VersionIndex.kt} (80%) create mode 100644 src/main/java/de/bixilon/minosoft/protocol/versions/VersionLoader.kt diff --git a/build.gradle.kts b/build.gradle.kts index e50f7f017..60c7604f1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -222,7 +222,7 @@ testing { options { val options = this as TestNGOptions options.preserveOrder = true - // options.excludeGroups("chunk", "input", "font", "command", "registry", "biome", "version", "fluid", "world", "raycasting", "pixlyzer", "item", "block", "physics", "light", "packet", "container", "item_stack", "signature", "private_key", "interaction", "item_digging", "chunk_renderer", "rendering") + // options.excludeGroups("models", "mesher", "chunk", "input", "font", "command", "registry", "biome", "version", "fluid", "world", "raycasting", "pixlyzer", "item", "block", "physics", "light", "packet", "container", "item_stack", "signature", "private_key", "interaction", "item_digging", "chunk_renderer", "rendering") } } } diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/MinosoftSIT.kt b/src/integration-test/kotlin/de/bixilon/minosoft/MinosoftSIT.kt index 7da860a05..8c60f6e31 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/MinosoftSIT.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/MinosoftSIT.kt @@ -17,8 +17,7 @@ import de.bixilon.kutil.latch.SimpleLatch import de.bixilon.minosoft.assets.properties.version.AssetsVersionProperties import de.bixilon.minosoft.data.registries.fallback.FallbackRegistries import de.bixilon.minosoft.data.registries.fallback.tags.FallbackTags -import de.bixilon.minosoft.protocol.packets.factory.PacketTypeRegistry -import de.bixilon.minosoft.protocol.versions.Versions +import de.bixilon.minosoft.protocol.versions.VersionLoader import de.bixilon.minosoft.test.IT import de.bixilon.minosoft.test.ITUtil import de.bixilon.minosoft.util.KUtil @@ -37,7 +36,6 @@ internal object MinosoftSIT { disableGC() Log.log(LogMessageType.OTHER, LogLevels.INFO) { "Setting up integration tests...." } initAssetsManager() - setupPacketRegistry() loadVersionsJson() loadAssetsProperties() loadDefaultRegistries() @@ -62,12 +60,8 @@ internal object MinosoftSIT { Minosoft.MINOSOFT_ASSETS_MANAGER.load() } - fun setupPacketRegistry() { - PacketTypeRegistry.init(null) - } - fun loadVersionsJson() { - Versions.load(SimpleLatch(0)) + VersionLoader.load(SimpleLatch(0)) } fun loadAssetsProperties() { diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/AttackHandlerTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/AttackHandlerTest.kt index ba8c06ab0..9a0a5406d 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/AttackHandlerTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/AttackHandlerTest.kt @@ -29,7 +29,7 @@ import de.bixilon.minosoft.protocol.network.connection.play.ConnectionTestUtil.c import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertNoPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket import de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact.EntityAttackC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import org.testng.annotations.Test @Test(groups = ["interaction"]) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/InteractionManagerTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/InteractionManagerTest.kt index 9ce55f80c..94226dc23 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/InteractionManagerTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/InteractionManagerTest.kt @@ -21,9 +21,9 @@ import de.bixilon.minosoft.input.interaction.breaking.BreakHandlerTest.Companion import de.bixilon.minosoft.protocol.network.connection.play.ConnectionTestUtil.createConnection import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertNoPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact.EntityAttackC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import org.testng.annotations.Test @Test(groups = ["interaction"]) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerInputTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerInputTest.kt index 18d75cbe5..2f916fde9 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerInputTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerInputTest.kt @@ -19,8 +19,8 @@ import de.bixilon.minosoft.input.interaction.KeyHandlerUtil.awaitTicks import de.bixilon.minosoft.protocol.network.connection.play.ConnectionTestUtil.createConnection import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertNoPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import org.testng.SkipException import org.testng.annotations.Test import kotlin.system.measureTimeMillis diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerTest.kt index 2dc1517fc..19f9b1fe5 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/breaking/BreakHandlerTest.kt @@ -49,8 +49,8 @@ import de.bixilon.minosoft.protocol.network.connection.play.ConnectionTestUtil.c import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertNoPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import de.bixilon.minosoft.test.ITUtil.todo import org.testng.Assert.assertEquals import org.testng.Assert.assertNull diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseBlockIT.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseBlockIT.kt index c4ebf9175..4bef18d2d 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseBlockIT.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseBlockIT.kt @@ -35,8 +35,8 @@ import de.bixilon.minosoft.physics.ItemUsing import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertNoPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket import de.bixilon.minosoft.protocol.packets.c2s.play.block.BlockInteractC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import de.bixilon.minosoft.test.ITUtil.todo import org.testng.Assert.assertEquals import org.testng.Assert.assertNull diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseEntityIT.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseEntityIT.kt index 35ff7d559..7fb93f62c 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseEntityIT.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseEntityIT.kt @@ -26,7 +26,7 @@ import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.asser import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket import de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact.EntityEmptyInteractC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact.EntityInteractPositionC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP import org.testng.Assert.assertEquals import org.testng.annotations.Test diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseIT.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseIT.kt index 74476c500..cf21d64fa 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseIT.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/long/LongUseIT.kt @@ -28,11 +28,11 @@ import de.bixilon.minosoft.input.interaction.InteractionTestUtil.unsafeRelease import de.bixilon.minosoft.physics.ItemUsing import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertNoPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket -import de.bixilon.minosoft.protocol.packets.c2s.play.HotbarSlotC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.HotbarSlotC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.item.UseItemC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP import de.bixilon.minosoft.test.ITUtil.todo import org.testng.Assert.* import org.testng.annotations.Test diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/BlockPlaceIT.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/BlockPlaceIT.kt index f9bffd677..8e1d8d2d4 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/BlockPlaceIT.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/BlockPlaceIT.kt @@ -35,8 +35,8 @@ import de.bixilon.minosoft.input.interaction.InteractionTestUtil.unsafeRelease import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertNoPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket import de.bixilon.minosoft.protocol.packets.c2s.play.block.BlockInteractC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import org.testng.SkipException import org.testng.annotations.Test diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/BlockUseIT.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/BlockUseIT.kt index f8316a752..c3cebe068 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/BlockUseIT.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/BlockUseIT.kt @@ -35,8 +35,8 @@ import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.asser import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertOnlyPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket import de.bixilon.minosoft.protocol.packets.c2s.play.block.BlockInteractC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.item.UseItemC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP import org.testng.annotations.Test @Test(groups = ["interaction"], dependsOnGroups = ["item", "block"]) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/EntityUseIT.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/EntityUseIT.kt index eff85f77c..693c82402 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/EntityUseIT.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/EntityUseIT.kt @@ -37,8 +37,8 @@ import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.asser import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket import de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact.EntityEmptyInteractC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact.EntityInteractPositionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.item.UseItemC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap import org.testng.annotations.Test diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/ItemUseIT.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/ItemUseIT.kt index ea28cf4f7..64a896b9a 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/ItemUseIT.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/ItemUseIT.kt @@ -37,9 +37,9 @@ import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.asser import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertOnlyPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket import de.bixilon.minosoft.protocol.packets.c2s.play.block.BlockInteractC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.item.UseItemC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP import org.testng.Assert.assertEquals import org.testng.annotations.Test diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/OnAirUseIT.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/OnAirUseIT.kt index 2f1dac8ab..5802a0384 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/OnAirUseIT.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/short/OnAirUseIT.kt @@ -21,8 +21,8 @@ import de.bixilon.minosoft.input.interaction.InteractionTestUtil import de.bixilon.minosoft.input.interaction.InteractionTestUtil.unsafePress import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertOnlyPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.item.UseItemC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP import org.testng.annotations.Test @Test(groups = ["interaction"], dependsOnGroups = ["item", "block"]) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/use/UseHandlerInputTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/use/UseHandlerInputTest.kt index 925ff1b50..29caa4fde 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/use/UseHandlerInputTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/input/interaction/use/UseHandlerInputTest.kt @@ -22,10 +22,10 @@ import de.bixilon.minosoft.input.interaction.KeyHandlerUtil.awaitTicks import de.bixilon.minosoft.protocol.network.connection.play.ConnectionTestUtil import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertNoPacket import de.bixilon.minosoft.protocol.network.connection.play.PacketTestUtil.assertPacket -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.item.UseItemC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP import org.testng.annotations.Test @Test(groups = ["interaction"], dependsOnGroups = ["item"]) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/registry/PacketRegistryTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/registry/PacketRegistryTest.kt new file mode 100644 index 000000000..a2b5664ba --- /dev/null +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/registry/PacketRegistryTest.kt @@ -0,0 +1,86 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.protocol.packets.registry + +import de.bixilon.kutil.exception.Broken +import de.bixilon.minosoft.protocol.network.connection.Connection +import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket +import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket +import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer +import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer +import org.testng.Assert.* +import org.testng.annotations.Test + +@Test(groups = ["packet"]) +class PacketRegistryTest { + + + fun `simple packet s2c mapping`() { + val registry = PacketRegistry() + + registry.register("dummy", factory = ::DummyS2CPacket) + + val type = registry["dummy"] + assertNotNull(type) + assertEquals(type!!.name, "dummy") + } + + fun `simple packet c2s mapping`() { + val registry = PacketRegistry() + + registry.register("dummy", DummyC2SPacket::class) + + + val type = registry[DummyC2SPacket::class] + assertNotNull(type) + assertEquals(type.name, "dummy") + } + + fun `register multiple same named c2s packets`() { + val registry = PacketRegistry() + + registry.register("dummy", DummyC2SPacket::class) + registry.register("dummy", Dummy2C2SPacket::class) + + + val type = registry[DummyC2SPacket::class] + val type2 = registry[Dummy2C2SPacket::class] + assertSame(type, type2) + } + + fun `register same packet with different names`() { + val registry = PacketRegistry() + + registry.register("1", DummyC2SPacket::class) + registry.register("2", DummyC2SPacket::class) + + assertSame(registry["1"], registry["2"]) + assertEquals(registry[DummyC2SPacket::class].name, "1") + } + + + private class DummyS2CPacket(buffer: InByteBuffer) : S2CPacket { + + override fun handle(connection: Connection) = Broken() + override fun log(reducedLog: Boolean) = Broken() + } + + private open class DummyC2SPacket : PlayC2SPacket { + + override fun write(buffer: PlayOutByteBuffer) = Unit + override fun log(reducedLog: Boolean) = Broken() + } + + private open class Dummy2C2SPacket : DummyC2SPacket() +} diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/CommandsS2CPTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/CommandsS2CPTest.kt index 6e581ece6..a91e44e77 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/CommandsS2CPTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/CommandsS2CPTest.kt @@ -18,6 +18,7 @@ import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.minosoft.commands.nodes.CommandNode import de.bixilon.minosoft.commands.nodes.NamedNode import de.bixilon.minosoft.commands.nodes.RootNode +import de.bixilon.minosoft.protocol.packets.s2c.play.chat.CommandsS2CP import org.testng.Assert.assertNotNull import org.testng.annotations.Test diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkS2CPTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkS2CPTest.kt index d2f9e6314..3ecfe1d6a 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkS2CPTest.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkS2CPTest.kt @@ -23,6 +23,7 @@ import de.bixilon.minosoft.data.registries.blocks.types.stone.RockBlock import de.bixilon.minosoft.data.registries.dimension.DimensionProperties import de.bixilon.minosoft.protocol.network.connection.play.ConnectionTestUtil.createConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection +import de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk.ChunkS2CP import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import org.testng.Assert.* import org.testng.annotations.Test diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/protocol/protocol/DefaultPacketMappingTest.kt b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/protocol/DefaultPacketMappingTest.kt new file mode 100644 index 000000000..f47c8229d --- /dev/null +++ b/src/integration-test/kotlin/de/bixilon/minosoft/protocol/protocol/DefaultPacketMappingTest.kt @@ -0,0 +1,36 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.protocol.protocol + +import de.bixilon.minosoft.protocol.packets.c2s.handshake.HandshakeC2SP +import de.bixilon.minosoft.protocol.packets.registry.DefaultPackets +import de.bixilon.minosoft.protocol.packets.s2c.login.SuccessS2CP +import org.testng.Assert.assertEquals +import org.testng.annotations.Test + +@Test(groups = ["packet"]) +class DefaultPacketMappingTest { + + fun `verify handshake c2s id is 0x00`() { + val type = DefaultPackets[PacketDirections.CLIENT_TO_SERVER][ProtocolStates.HANDSHAKE]!![HandshakeC2SP::class] + val id = DefaultPacketMapping.C2S_PACKET_MAPPING[ProtocolStates.HANDSHAKE, type] + assertEquals(id, 0x00) + } + + fun `verify login success s2c id is 0x02`() { + val type = DefaultPackets[PacketDirections.SERVER_TO_CLIENT][ProtocolStates.LOGIN]!![SuccessS2CP::class] + val id = DefaultPacketMapping.S2C_PACKET_MAPPING[ProtocolStates.LOGIN, type] + assertEquals(id, 0x02) + } +} diff --git a/src/main/java/de/bixilon/minosoft/Minosoft.kt b/src/main/java/de/bixilon/minosoft/Minosoft.kt index d17a853dc..a332353c2 100644 --- a/src/main/java/de/bixilon/minosoft/Minosoft.kt +++ b/src/main/java/de/bixilon/minosoft/Minosoft.kt @@ -14,6 +14,7 @@ package de.bixilon.minosoft import de.bixilon.kutil.concurrent.pool.DefaultThreadPool +import de.bixilon.kutil.concurrent.pool.DefaultThreadPool.async import de.bixilon.kutil.concurrent.pool.ThreadPool import de.bixilon.kutil.concurrent.worker.task.TaskWorker import de.bixilon.kutil.concurrent.worker.task.WorkerTask @@ -50,9 +51,8 @@ import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.modding.loader.LoadingPhases import de.bixilon.minosoft.modding.loader.ModLoader import de.bixilon.minosoft.properties.MinosoftPropertiesLoader -import de.bixilon.minosoft.protocol.packets.factory.PacketTypeRegistry import de.bixilon.minosoft.protocol.protocol.LANServerListener -import de.bixilon.minosoft.protocol.versions.Versions +import de.bixilon.minosoft.protocol.versions.VersionLoader import de.bixilon.minosoft.terminal.AutoConnect import de.bixilon.minosoft.terminal.CommandLineArguments import de.bixilon.minosoft.terminal.RunConfiguration @@ -96,8 +96,7 @@ object Minosoft { taskWorker += WorkerTask(identifier = BootTasks.CLI, priority = ThreadPool.HIGH, executor = CLI::startThread) - taskWorker += WorkerTask(identifier = BootTasks.PACKETS, priority = ThreadPool.HIGH, executor = PacketTypeRegistry::init) - taskWorker += WorkerTask(identifier = BootTasks.VERSIONS, priority = ThreadPool.HIGH, dependencies = arrayOf(BootTasks.PACKETS), executor = Versions::load) + taskWorker += WorkerTask(identifier = BootTasks.VERSIONS, priority = ThreadPool.HIGH, executor = VersionLoader::load) taskWorker += WorkerTask(identifier = BootTasks.PROFILES, priority = ThreadPool.HIGH, dependencies = arrayOf(BootTasks.VERSIONS), executor = GlobalProfileManager::initialize) taskWorker += WorkerTask(identifier = BootTasks.FILE_WATCHER, priority = ThreadPool.HIGH, optional = true, executor = this::startFileWatcherService) @@ -109,8 +108,8 @@ object Minosoft { taskWorker += WorkerTask(identifier = BootTasks.LAN_SERVERS, dependencies = arrayOf(BootTasks.PROFILES), executor = LANServerListener::listen) if (!RunConfiguration.DISABLE_EROS) { + async(ThreadPool.HIGHER) { javafx.scene.text.Font.getDefault() } taskWorker += WorkerTask(identifier = BootTasks.JAVAFX, executor = { JavaFXInitializer.start() }) - DefaultThreadPool += { javafx.scene.text.Font::class.java.forceInit() } taskWorker += WorkerTask(identifier = BootTasks.STARTUP_PROGRESS, executor = { StartingDialog(BOOT_LATCH).show() }, dependencies = arrayOf(BootTasks.LANGUAGE_FILES, BootTasks.JAVAFX)) diff --git a/src/main/java/de/bixilon/minosoft/assets/properties/version/generator/AssetsPropertiesGenerator.kt b/src/main/java/de/bixilon/minosoft/assets/properties/version/generator/AssetsPropertiesGenerator.kt index f21f81615..8a4e2be1c 100644 --- a/src/main/java/de/bixilon/minosoft/assets/properties/version/generator/AssetsPropertiesGenerator.kt +++ b/src/main/java/de/bixilon/minosoft/assets/properties/version/generator/AssetsPropertiesGenerator.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -17,6 +17,8 @@ import de.bixilon.kutil.reflection.ReflectionUtil.forceInit import de.bixilon.minosoft.assets.InvalidAssetException import de.bixilon.minosoft.assets.minecraft.JarAssetsManager import de.bixilon.minosoft.config.profile.profiles.resources.ResourcesProfileManager +import de.bixilon.minosoft.protocol.packets.registry.PacketMapping +import de.bixilon.minosoft.protocol.protocol.PacketDirections import de.bixilon.minosoft.protocol.versions.Version import de.bixilon.minosoft.protocol.versions.VersionTypes import de.bixilon.minosoft.util.logging.Log @@ -36,7 +38,8 @@ object AssetsPropertiesGenerator { profile.verify = false val (versionId, clientJarHash) = args - val assetsManager = JarAssetsManager("829c3804401b0727f70f73d4415e162400cbe57b", clientJarHash, profile, Version(versionId, -1, -1, VersionTypes.APRIL_FOOL, emptyMap(), emptyMap())) + val version = Version(versionId, -1, -1, VersionTypes.APRIL_FOOL, PacketMapping(PacketDirections.SERVER_TO_CLIENT), PacketMapping(PacketDirections.CLIENT_TO_SERVER)) + val assetsManager = JarAssetsManager("829c3804401b0727f70f73d4415e162400cbe57b", clientJarHash, profile, version) try { assetsManager.load() } catch (exception: InvalidAssetException) { diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/MovementPacketSender.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/MovementPacketSender.kt index 9d9cdad8a..9295223f3 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/MovementPacketSender.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/MovementPacketSender.kt @@ -21,9 +21,13 @@ import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.physics.entities.living.player.local.LocalPlayerPhysics import de.bixilon.minosoft.protocol.packets.c2s.play.entity.EntityActionC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.* -import de.bixilon.minosoft.protocol.packets.c2s.play.move.vehicle.MoveVehicleC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.vehicle.VehicleInputC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.GroundChangeC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.RotationC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.vehicle.MoveVehicleC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.vehicle.VehicleInputC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.ToggleFlyC2SP class MovementPacketSender( private val physics: LocalPlayerPhysics, diff --git a/src/main/java/de/bixilon/minosoft/data/registries/misc/event/world/handler/win/WinGameHandler.kt b/src/main/java/de/bixilon/minosoft/data/registries/misc/event/world/handler/win/WinGameHandler.kt index 23f84486a..4fe7ce7fe 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/misc/event/world/handler/win/WinGameHandler.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/misc/event/world/handler/win/WinGameHandler.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.data.registries.misc.event.world.handler.win import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.data.registries.misc.event.game.GameEventHandler import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.c2s.play.ClientActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.ClientActionC2SP import de.bixilon.minosoft.util.KUtil.toResourceLocation object WinGameHandler : GameEventHandler { diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt index 8dbdd0c43..95a4ea219 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt @@ -44,11 +44,11 @@ import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventListener import de.bixilon.minosoft.gui.eros.util.JavaFXUtil import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.ctext import de.bixilon.minosoft.modding.event.events.KickEvent -import de.bixilon.minosoft.modding.event.events.LoginKickEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates.Companion.disconnected import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection +import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.util.DNSUtil import de.bixilon.minosoft.util.KUtil.toResourceLocation import de.bixilon.minosoft.util.delegate.JavaFXDelegate.observeFX @@ -163,20 +163,17 @@ class ServerListController : EmbeddedJavaFXController(), Refreshable { } connection.events.register(JavaFXEventListener.of { event -> - KickDialog( - title = "minosoft:connection.kick.title".toResourceLocation(), - header = "minosoft:connection.kick.header".toResourceLocation(), - description = TranslatableComponents.CONNECTION_KICK_DESCRIPTION(server, account), - reason = event.reason, - ).show() - }) - connection.events.register(JavaFXEventListener.of { event -> - KickDialog( + (if (connection.network.state == ProtocolStates.LOGIN) KickDialog( title = "minosoft:connection.login_kick.title".toResourceLocation(), header = "minosoft:connection.login_kick.header".toResourceLocation(), description = TranslatableComponents.CONNECTION_LOGIN_KICK_DESCRIPTION(server, account), reason = event.reason, - ).show() + ) else KickDialog( + title = "minosoft:connection.kick.title".toResourceLocation(), + header = "minosoft:connection.kick.header".toResourceLocation(), + description = TranslatableComponents.CONNECTION_KICK_DESCRIPTION(server, account), + reason = event.reason, + )).show() }) val latch = CallbackLatch(1) val assetsDialog = VerifyAssetsDialog(latch = latch).apply { show() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/CreditsScreen.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/CreditsScreen.kt index 02c136ce6..8e4fab27c 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/CreditsScreen.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/CreditsScreen.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -23,7 +23,7 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companion.listen -import de.bixilon.minosoft.protocol.packets.c2s.play.ClientActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.ClientActionC2SP @Deprecated("ToDo") class CreditsScreen( diff --git a/src/main/java/de/bixilon/minosoft/input/interaction/DropHandler.kt b/src/main/java/de/bixilon/minosoft/input/interaction/DropHandler.kt index 7edd4d49b..205e14ff9 100644 --- a/src/main/java/de/bixilon/minosoft/input/interaction/DropHandler.kt +++ b/src/main/java/de/bixilon/minosoft/input/interaction/DropHandler.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.input.interaction import de.bixilon.kutil.rate.RateLimiter -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP class DropHandler( private val interactions: InteractionManager, diff --git a/src/main/java/de/bixilon/minosoft/input/interaction/HotbarHandler.kt b/src/main/java/de/bixilon/minosoft/input/interaction/HotbarHandler.kt index b77314a42..adafa1a66 100644 --- a/src/main/java/de/bixilon/minosoft/input/interaction/HotbarHandler.kt +++ b/src/main/java/de/bixilon/minosoft/input/interaction/HotbarHandler.kt @@ -17,8 +17,8 @@ import de.bixilon.kutil.collections.CollectionUtil.synchronizedSetOf import de.bixilon.kutil.rate.RateLimiter import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.container.equipment.EquipmentSlots -import de.bixilon.minosoft.protocol.packets.c2s.play.HotbarSlotC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.HotbarSlotC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP class HotbarHandler( val interactions: InteractionManager, diff --git a/src/main/java/de/bixilon/minosoft/input/interaction/InteractionManager.kt b/src/main/java/de/bixilon/minosoft/input/interaction/InteractionManager.kt index 7103815ea..ddeb56312 100644 --- a/src/main/java/de/bixilon/minosoft/input/interaction/InteractionManager.kt +++ b/src/main/java/de/bixilon/minosoft/input/interaction/InteractionManager.kt @@ -24,7 +24,7 @@ import de.bixilon.minosoft.data.registries.item.items.Item import de.bixilon.minosoft.input.interaction.InteractionUtil.canInteract import de.bixilon.minosoft.input.interaction.breaking.BreakHandler import de.bixilon.minosoft.input.interaction.use.UseHandler -import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.SwingArmC2SP import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition class InteractionManager(val camera: ConnectionCamera) : Tickable { diff --git a/src/main/java/de/bixilon/minosoft/input/interaction/breaking/creative/CreativeBreaker.kt b/src/main/java/de/bixilon/minosoft/input/interaction/breaking/creative/CreativeBreaker.kt index db5f0f09c..fe906abbe 100644 --- a/src/main/java/de/bixilon/minosoft/input/interaction/breaking/creative/CreativeBreaker.kt +++ b/src/main/java/de/bixilon/minosoft/input/interaction/breaking/creative/CreativeBreaker.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.input.interaction.breaking.creative import de.bixilon.minosoft.camera.target.targets.BlockTarget import de.bixilon.minosoft.data.entities.entities.player.Hands import de.bixilon.minosoft.input.interaction.breaking.BreakHandler -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP class CreativeBreaker( private val breaking: BreakHandler, diff --git a/src/main/java/de/bixilon/minosoft/input/interaction/breaking/survival/SurvivalDigger.kt b/src/main/java/de/bixilon/minosoft/input/interaction/breaking/survival/SurvivalDigger.kt index b695af018..72bc21565 100644 --- a/src/main/java/de/bixilon/minosoft/input/interaction/breaking/survival/SurvivalDigger.kt +++ b/src/main/java/de/bixilon/minosoft/input/interaction/breaking/survival/SurvivalDigger.kt @@ -25,7 +25,7 @@ import de.bixilon.minosoft.data.registries.fluid.fluids.WaterFluid import de.bixilon.minosoft.data.registries.item.items.tool.MiningTool import de.bixilon.minosoft.data.registries.item.items.tool.properties.requirement.ToolRequirement import de.bixilon.minosoft.input.interaction.breaking.BreakHandler -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP class SurvivalDigger( private val breaking: BreakHandler, diff --git a/src/main/java/de/bixilon/minosoft/input/interaction/use/LongUseHandler.kt b/src/main/java/de/bixilon/minosoft/input/interaction/use/LongUseHandler.kt index 160086aea..1db74acbd 100644 --- a/src/main/java/de/bixilon/minosoft/input/interaction/use/LongUseHandler.kt +++ b/src/main/java/de/bixilon/minosoft/input/interaction/use/LongUseHandler.kt @@ -18,7 +18,7 @@ import de.bixilon.minosoft.data.entities.entities.player.Hands import de.bixilon.minosoft.data.registries.item.handler.item.LongItemUseHandler import de.bixilon.minosoft.data.registries.item.handler.item.LongUseResults import de.bixilon.minosoft.physics.ItemUsing -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP class LongUseHandler( private val interactionHandler: UseHandler, diff --git a/src/main/java/de/bixilon/minosoft/input/interaction/use/UseHandler.kt b/src/main/java/de/bixilon/minosoft/input/interaction/use/UseHandler.kt index 74a910bcc..f0c00ee06 100644 --- a/src/main/java/de/bixilon/minosoft/input/interaction/use/UseHandler.kt +++ b/src/main/java/de/bixilon/minosoft/input/interaction/use/UseHandler.kt @@ -19,8 +19,8 @@ import de.bixilon.minosoft.data.entities.entities.player.Hands import de.bixilon.minosoft.input.interaction.InteractionManager import de.bixilon.minosoft.input.interaction.KeyHandler import de.bixilon.minosoft.protocol.packets.c2s.play.block.BlockInteractC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.item.UseItemC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_15W31A class UseHandler( diff --git a/src/main/java/de/bixilon/minosoft/main/BootTasks.kt b/src/main/java/de/bixilon/minosoft/main/BootTasks.kt index 65bbba6f1..c30d8cf13 100644 --- a/src/main/java/de/bixilon/minosoft/main/BootTasks.kt +++ b/src/main/java/de/bixilon/minosoft/main/BootTasks.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -16,7 +16,6 @@ package de.bixilon.minosoft.main enum class BootTasks { PROFILES, LANGUAGE_FILES, - PACKETS, VERSIONS, ASSETS_PROPERTIES, DEFAULT_REGISTRIES, diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpawnEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpawnEvent.kt index a67d7b68d..1cda77bc2 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpawnEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpawnEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -15,7 +15,6 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.entity.EntityPlayerS2CP import de.bixilon.minosoft.protocol.packets.s2c.play.entity.spawn.* @Deprecated("Observables") diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpectateEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpectateEvent.kt index 5057dbf60..2e85f3a2f 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpectateEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpectateEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -15,7 +15,7 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.CameraS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.entity.player.CameraS2CP /** * Fired when the player should spectate an entity diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt index b18fa9f7e..7ddd17f1a 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -17,7 +17,7 @@ import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.ExplosionS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.world.ExplosionS2CP class ExplosionEvent( connection: PlayConnection, diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/KickEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/KickEvent.kt index 0f1a207aa..437cf7358 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/KickEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/KickEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -15,12 +15,8 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.KickS2CP open class KickEvent( connection: PlayConnection, val reason: ChatComponent, -) : PlayConnectionEvent(connection) { - - constructor(connection: PlayConnection, packet: KickS2CP) : this(connection, packet.reason) -} +) : PlayConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/LoginKickEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/LoginKickEvent.kt deleted file mode 100644 index 8129c479d..000000000 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/LoginKickEvent.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ -package de.bixilon.minosoft.modding.event.events - -import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.login.KickS2CP - -@Deprecated("check connection state") -class LoginKickEvent( - connection: PlayConnection, - val reason: ChatComponent, -) : PlayConnectionEvent(connection) { - - constructor(connection: PlayConnection, packet: KickS2CP) : this(connection, packet.reason) -} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt index 741bdb2ed..3f72876e0 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -17,7 +17,7 @@ import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.ParticleS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.world.ParticleS2CP class ParticleSpawnEvent( connection: PlayConnection, diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/util/ConnectionUtil.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/util/ConnectionUtil.kt index 71a7bb47b..9dbc58ddf 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/util/ConnectionUtil.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/util/ConnectionUtil.kt @@ -30,10 +30,10 @@ import de.bixilon.minosoft.modding.event.events.chat.ChatMessageSendEvent import de.bixilon.minosoft.modding.event.events.container.ContainerCloseEvent import de.bixilon.minosoft.protocol.ProtocolUtil.encodeNetwork import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.c2s.play.ClientActionC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.chat.ChatMessageC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.chat.CommandC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.chat.SignedChatMessageC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.ClientActionC2SP import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketBufferUnderflowException.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketBufferUnderflowException.kt index 3c4c57d25..83bd16147 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketBufferUnderflowException.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketBufferUnderflowException.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -13,10 +13,10 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.exceptions -import de.bixilon.minosoft.protocol.packets.factory.S2CPacketType +import de.bixilon.minosoft.protocol.packets.registry.PacketType class PacketBufferUnderflowException( - val type: S2CPacketType, + val type: PacketType, val size: Int, val available: Int, ) : NetworkException() { diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketNotAvailableException.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketNotAvailableException.kt index 8076fdc3d..d4636cdc8 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketNotAvailableException.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketNotAvailableException.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -13,14 +13,14 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.exceptions -import de.bixilon.minosoft.protocol.versions.Version -import de.bixilon.minosoft.protocol.packets.factory.C2SPacketType +import de.bixilon.minosoft.protocol.packets.registry.PacketType import de.bixilon.minosoft.protocol.protocol.ProtocolStates +import de.bixilon.minosoft.protocol.versions.Version class PacketNotAvailableException( - val type: C2SPacketType, + val type: PacketType, val state: ProtocolStates, val version: Version?, ) : NetworkException() { - override val message: String = "type=$type, state=$state, version=$version" + override val message: String = "name=${type.name}, state=$state, version=$version" } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/WrongProtocolStateException.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketNotFoundException.kt similarity index 75% rename from src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/WrongProtocolStateException.kt rename to src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketNotFoundException.kt index 06bdad965..34b9d457b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/WrongProtocolStateException.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/PacketNotFoundException.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -13,11 +13,10 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.exceptions -import de.bixilon.minosoft.protocol.protocol.ProtocolStates +import kotlin.reflect.KClass -class WrongProtocolStateException( - val required: ProtocolStates, - val current: ProtocolStates, +class PacketNotFoundException( + val clazz: KClass<*>, ) : NetworkException() { - override val message: String = "required=$required, current=$current" + override val message: String = "No packet is registered with class $clazz" } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/implementation/S2CPacketNotImplementedException.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/implementation/PacketNotImplementedException.kt similarity index 81% rename from src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/implementation/S2CPacketNotImplementedException.kt rename to src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/implementation/PacketNotImplementedException.kt index ff517e68a..601f48db4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/implementation/S2CPacketNotImplementedException.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/implementation/PacketNotImplementedException.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -13,15 +13,14 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.implementation -import de.bixilon.kutil.primitive.IntUtil.toHex -import de.bixilon.minosoft.protocol.versions.Version import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.NetworkException import de.bixilon.minosoft.protocol.protocol.ProtocolStates +import de.bixilon.minosoft.protocol.versions.Version -class S2CPacketNotImplementedException( - val packetId: Int, +class PacketNotImplementedException( + val name: String, val state: ProtocolStates, val version: Version?, ) : NetworkException() { - override val message: String = "packetId=0x${packetId.toHex(0)}, state=$state, version=$version" + override val message: String = "name=$name, state=$state, version=$version" } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/unknown/UnknownPacketException.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/unknown/UnknownPacketException.kt index ddb2eaa86..ac7144b83 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/unknown/UnknownPacketException.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/exceptions/unknown/UnknownPacketException.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -15,7 +15,7 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.unk import de.bixilon.kutil.reflection.ReflectionUtil.realName import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.NetworkException -import de.bixilon.minosoft.protocol.packets.Packet +import de.bixilon.minosoft.protocol.packets.types.Packet class UnknownPacketException( val clazz: Class, diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/ClientPacketHandler.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/ClientPacketHandler.kt index 483b8d841..584b40c3d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/ClientPacketHandler.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/ClientPacketHandler.kt @@ -26,7 +26,7 @@ import de.bixilon.minosoft.protocol.network.network.client.netty.NettyClient import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.NetworkException import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketHandleException import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.WrongConnectionException -import de.bixilon.minosoft.protocol.packets.factory.S2CPacketType +import de.bixilon.minosoft.protocol.packets.registry.PacketType import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket import de.bixilon.minosoft.protocol.packets.s2c.StatusS2CPacket @@ -48,18 +48,23 @@ class ClientPacketHandler( } } - private fun tryHandle(context: ChannelHandlerContext, type: S2CPacketType, packet: S2CPacket) { + private fun handleError(context: ChannelHandlerContext, type: PacketType, error: Throwable) { + if (type.extra != null) { + type.extra.onError(error, connection) + } + context.fireExceptionCaught(error) + } + + private fun tryHandle(context: ChannelHandlerContext, type: PacketType, packet: S2CPacket) { if (!client.connected) { return } try { handle(packet) } catch (exception: NetworkException) { - type.onError(exception, connection) - context.fireExceptionCaught(exception) + handleError(context, type, exception) } catch (error: Throwable) { - type.onError(error, connection) - context.fireExceptionCaught(PacketHandleException(error)) + handleError(context, type, PacketHandleException(error)) } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/QueuedS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/QueuedS2CP.kt index c9654e726..f2b4b127c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/QueuedS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/QueuedS2CP.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -13,10 +13,10 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.pipeline -import de.bixilon.minosoft.protocol.packets.factory.S2CPacketType +import de.bixilon.minosoft.protocol.packets.registry.PacketType import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket data class QueuedS2CP( - val type: S2CPacketType, + val type: PacketType, val packet: T, ) diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/encoding/PacketDecoder.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/encoding/PacketDecoder.kt index de36c7cdd..180c5e2eb 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/encoding/PacketDecoder.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/encoding/PacketDecoder.kt @@ -14,19 +14,15 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.pipeline.encoding import de.bixilon.kutil.cast.CastUtil.unsafeCast -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.network.client.netty.NettyClient import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.NetworkException -import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketBufferUnderflowException import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketReadException import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.ciritical.UnknownPacketIdException -import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.implementation.S2CPacketNotImplementedException +import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.implementation.PacketNotImplementedException import de.bixilon.minosoft.protocol.network.network.client.netty.pipeline.QueuedS2CP -import de.bixilon.minosoft.protocol.packets.factory.S2CPacketType import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket -import de.bixilon.minosoft.protocol.protocol.Protocol +import de.bixilon.minosoft.protocol.protocol.DefaultPacketMapping import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer -import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.protocol.versions.Version import io.netty.channel.ChannelHandlerContext import io.netty.handler.codec.MessageToMessageDecoder @@ -44,43 +40,31 @@ class PacketDecoder( val state = client.state - val packetType = version?.s2cPackets?.get(state)?.getKey(packetId) ?: Protocol.S2C_PACKET_MAPPING[state]?.getKey(packetId) ?: throw UnknownPacketIdException(packetId, state, version) - if (packetType.clazz == S2CPacket::class.java) { - throw S2CPacketNotImplementedException(packetId, state, version) - } - if (packetType.canSkip(client.connection)) { + val type = version?.s2c?.get(state, packetId) ?: DefaultPacketMapping.S2C_PACKET_MAPPING[state, packetId] ?: throw UnknownPacketIdException(packetId, state, version) + + if (type.extra != null && type.extra.skip(client.connection)) { return } val packet = try { - readPacket(packetType, data) + type.create(data, client.connection).unsafeCast() + } catch (error: PacketNotImplementedException) { + error.printStackTrace() + return } catch (exception: NetworkException) { - packetType.onError(exception, client.connection) + type.extra?.onError(exception, client.connection) throw exception } catch (error: Throwable) { var realError = error if (error is InvocationTargetException) { error.cause?.let { realError = it } } - packetType.onError(realError, client.connection) + type.extra?.onError(realError, client.connection) throw PacketReadException(realError) } - out += QueuedS2CP(packetType, packet) - } - - private fun readPacket(type: S2CPacketType, data: ByteArray): S2CPacket { - val buffer: InByteBuffer = if (client.connection is PlayConnection) { - PlayInByteBuffer(data, client.connection) - } else { - InByteBuffer(data) - } - val packet = type.factory?.createPacket(buffer) ?: throw IllegalStateException("Packet factory is null?") - if (buffer.pointer < buffer.size) { - throw PacketBufferUnderflowException(type, buffer.size, buffer.size - buffer.pointer) - } - return packet.unsafeCast() + out += QueuedS2CP(type, packet) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/encoding/PacketEncoder.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/encoding/PacketEncoder.kt index 018e05023..b1fa33922 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/encoding/PacketEncoder.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/netty/pipeline/encoding/PacketEncoder.kt @@ -13,17 +13,18 @@ package de.bixilon.minosoft.protocol.network.network.client.netty.pipeline.encoding -import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.network.client.netty.NettyClient import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketNotAvailableException import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.WrongConnectionException -import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.WrongProtocolStateException import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.unknown.UnknownPacketException import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketTypeRegistry -import de.bixilon.minosoft.protocol.protocol.Protocol +import de.bixilon.minosoft.protocol.packets.registry.DefaultPackets +import de.bixilon.minosoft.protocol.packets.registry.PacketMapping +import de.bixilon.minosoft.protocol.packets.registry.PacketType +import de.bixilon.minosoft.protocol.protocol.DefaultPacketMapping +import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.buffers.OutByteBuffer import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.protocol.versions.Version @@ -35,27 +36,54 @@ class PacketEncoder( ) : MessageToMessageEncoder() { private val version: Version? = client.connection.version + private fun PlayC2SPacket.write(): OutByteBuffer { + if (client.connection !is PlayConnection) throw WrongConnectionException(PlayConnection::class.java, client.connection::class.java) + val buffer = PlayOutByteBuffer(client.connection) + write(buffer) + + return buffer + } + + private fun C2SPacket.write(): OutByteBuffer { + if (this is PlayC2SPacket) { + return this.write() + } + val buffer = OutByteBuffer() + write(buffer) + + return buffer + } + + @JvmName("getVersionPacketId") + private fun Version?.getPacketId(state: ProtocolStates, type: PacketType): Int { + if (this == null) return PacketMapping.INVALID_ID + return c2s[state, type] + } + + private fun getPacketId(version: Version?, state: ProtocolStates, type: PacketType): Int { + var id = version.getPacketId(state, type) + if (id != PacketMapping.INVALID_ID) { + return id + } + + id = DefaultPacketMapping.C2S_PACKET_MAPPING[state, type] + if (id != PacketMapping.INVALID_ID) { + return id + } + + throw PacketNotAvailableException(type, state, version) + } + override fun encode(context: ChannelHandlerContext, packet: C2SPacket, out: MutableList) { val state = client.state - val packetData: OutByteBuffer - when (packet) { - is PlayC2SPacket -> { - packetData = PlayOutByteBuffer(client.connection.nullCast() ?: throw WrongConnectionException(PlayConnection::class.java, client.connection::class.java)) - packet.write(packetData) - } - else -> { - packetData = OutByteBuffer() - packet.write(packetData) - } - } - val packetType = PacketTypeRegistry.getC2S(packet::class.java) ?: throw UnknownPacketException(packet::class.java) - if (packetType.state != state) { - throw WrongProtocolStateException(packetType.state, state) - } - val packetId = version?.c2sPackets?.get(state)?.get(packetType) ?: Protocol.C2S_PACKET_MAPPING[state]?.get(packetType) ?: throw PacketNotAvailableException(packetType, state, version) + + val type = DefaultPackets.C2S[state]?.get(packet::class) ?: throw UnknownPacketException(packet::class.java) + val id = getPacketId(version, state, type) + + val packetData = packet.write() val data = OutByteBuffer() - data.writeVarInt(packetId) + data.writeVarInt(id) data.writeBareByteArray(packetData.toArray()) out += data.toArray() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/C2SPacket.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/C2SPacket.kt index baa53cfd1..6204ee5f1 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/C2SPacket.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/C2SPacket.kt @@ -12,7 +12,7 @@ */ package de.bixilon.minosoft.protocol.packets.c2s -import de.bixilon.minosoft.protocol.packets.Packet +import de.bixilon.minosoft.protocol.packets.types.Packet import de.bixilon.minosoft.protocol.protocol.buffers.OutByteBuffer /** diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/handshake/HandshakeC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/handshake/HandshakeC2SP.kt index 3b36c5bc1..6afcbec1b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/handshake/HandshakeC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/handshake/HandshakeC2SP.kt @@ -14,15 +14,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.handshake import de.bixilon.minosoft.protocol.address.ServerAddress import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.buffers.OutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(state = ProtocolStates.HANDSHAKE) class HandshakeC2SP( val address: ServerAddress, val action: Actions = Actions.STATUS, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/ChannelC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/ChannelC2SP.kt index 4a733d506..3347254bb 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/ChannelC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/ChannelC2SP.kt @@ -13,14 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.login import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(state = ProtocolStates.LOGIN) class ChannelC2SP( val messageId: Int, val data: ByteArray?, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/EncryptionC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/EncryptionC2SP.kt index 598847b88..12e1456ac 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/EncryptionC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/EncryptionC2SP.kt @@ -15,8 +15,6 @@ package de.bixilon.minosoft.protocol.packets.c2s.login import de.bixilon.kutil.base64.Base64Util.toBase64 import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.protocol.protocol.encryption.EncryptionSignatureData @@ -24,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(state = ProtocolStates.LOGIN) class EncryptionC2SP private constructor( val secret: ByteArray, val nonce: Any, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/StartC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/StartC2SP.kt index a1c953898..b494673d8 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/StartC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/login/StartC2SP.kt @@ -15,8 +15,6 @@ package de.bixilon.minosoft.protocol.packets.c2s.login import de.bixilon.minosoft.data.entities.entities.player.local.LocalPlayerEntity import de.bixilon.minosoft.protocol.PlayerPublicKey import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log @@ -24,7 +22,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(state = ProtocolStates.LOGIN) class StartC2SP( val username: String, val sessionId: UUID, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ChannelC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ChannelC2SP.kt index 571bad594..3ba037647 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ChannelC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ChannelC2SP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.c2s.play import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.OutByteBuffer import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ChannelC2SP( val channel: ResourceLocation, val data: ByteArray, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/HeartbeatC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/HeartbeatC2SP.kt index 60f9d8183..41b2fb9e5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/HeartbeatC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/HeartbeatC2SP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class HeartbeatC2SP( val id: Long, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PongC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PongC2SP.kt index 1b9cbebda..fe66ef6d1 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PongC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PongC2SP.kt @@ -14,13 +14,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class PongC2SP(val payload: Int) : PlayC2SPacket { override fun write(buffer: PlayOutByteBuffer) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ResourcepackC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ResourcepackC2SP.kt index efc072767..d0ecdf68e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ResourcepackC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ResourcepackC2SP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ResourcepackC2SP( val hash: String, val status: ResourcePackStates, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SessionDataC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SessionDataC2SP.kt index a5768b02a..6f309d15e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SessionDataC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SessionDataC2SP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play import de.bixilon.minosoft.protocol.PlayerPublicKey import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket class SessionDataC2SP( val sessionId: UUID, val publicKey: PlayerPublicKey, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SettingsC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SettingsC2SP.kt index 3d2a18ddd..b2d6bd33f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SettingsC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SettingsC2SP.kt @@ -18,14 +18,12 @@ import de.bixilon.minosoft.data.entities.entities.player.Arms import de.bixilon.minosoft.data.entities.entities.player.SkinParts import de.bixilon.minosoft.data.world.difficulty.Difficulties import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class SettingsC2SP( val locale: String, var chatColors: Boolean, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/TradeC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/TradeC2SP.kt index 52a6502e3..93d629cbf 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/TradeC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/TradeC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class TradeC2SP( val id: Int, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/advancement/tab/AdvancementCloseTabC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/advancement/tab/AdvancementCloseTabC2SP.kt index 5d9477c5f..9555dc25d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/advancement/tab/AdvancementCloseTabC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/advancement/tab/AdvancementCloseTabC2SP.kt @@ -13,12 +13,10 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.advancement.tab -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class AdvancementCloseTabC2SP : AdvancementTabC2SP(Action.CLOSE_TAB) { override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/advancement/tab/AdvancementOpenTabC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/advancement/tab/AdvancementOpenTabC2SP.kt index 56cb88e39..d250d6040 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/advancement/tab/AdvancementOpenTabC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/advancement/tab/AdvancementOpenTabC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.advancement.tab -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class AdvancementOpenTabC2SP( val tabName: String, ) : AdvancementTabC2SP(Action.OPEN_TAB) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/AnvilItemNameC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/AnvilItemNameC2SP.kt index 4742b91c6..b2907099a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/AnvilItemNameC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/AnvilItemNameC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.block import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class AnvilItemNameC2SP( val name: String, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BeaconEffectC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BeaconEffectC2SP.kt index dcddecf5c..38f4d279e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BeaconEffectC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BeaconEffectC2SP.kt @@ -15,14 +15,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.block import de.bixilon.minosoft.data.registries.effects.StatusEffectType import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class BeaconEffectC2SP( val primaryEffect: Int?, val secondaryEffect: Int?, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BlockInteractC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BlockInteractC2SP.kt index c56b6173f..900929304 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BlockInteractC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BlockInteractC2SP.kt @@ -18,7 +18,6 @@ import de.bixilon.minosoft.data.container.stack.ItemStack import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.entities.entities.player.Hands import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_15W31A import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer @@ -26,7 +25,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket data class BlockInteractC2SP( val position: Vec3i?, val direction: Directions?, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BlockNbtC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BlockNbtC2SP.kt index 55b428676..d5c08a4c8 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BlockNbtC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/BlockNbtC2SP.kt @@ -15,13 +15,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.block import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class BlockNbtC2SP( val transactionId: Int, val blockPosition: Vec3i, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/CommandBlockC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/CommandBlockC2SP.kt index 0e0726c63..36f75a69d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/CommandBlockC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/CommandBlockC2SP.kt @@ -16,13 +16,11 @@ import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class CommandBlockC2SP( val position: Vec3i, val command: String, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/GenerateStructureC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/GenerateStructureC2SP.kt index 007a3c467..08d534621 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/GenerateStructureC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/GenerateStructureC2SP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.block import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class GenerateStructureC2SP( val position: Vec3i, val levels: Int, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/JigsawBlockC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/JigsawBlockC2SP.kt index 47c5b482e..389352f05 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/JigsawBlockC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/JigsawBlockC2SP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.block import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class JigsawBlockC2SP( val position: Vec3i, val targetPool: String, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/MinecartCommandBlockC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/MinecartCommandBlockC2SP.kt index 94b7cb2e1..f0c362228 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/MinecartCommandBlockC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/MinecartCommandBlockC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.block import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class MinecartCommandBlockC2SP( val entityId: Int, val command: String, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/SignTextC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/SignTextC2SP.kt index 7430427f4..05715e8fe 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/SignTextC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/SignTextC2SP.kt @@ -17,14 +17,12 @@ import de.bixilon.minosoft.data.entities.block.sign.SignBlockEntity import de.bixilon.minosoft.data.entities.block.sign.SignSides import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class SignTextC2SP( val position: Vec3i, val side: SignSides, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/StructureBlockC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/StructureBlockC2SP.kt index 7f9ce7376..80d5605f4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/StructureBlockC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/block/StructureBlockC2SP.kt @@ -16,13 +16,11 @@ import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class StructureBlockC2SP( val position: Vec3i, val action: StructureBlockActions, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/ChatMessageC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/ChatMessageC2SP.kt index f6e52fafc..59f006bca 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/ChatMessageC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/ChatMessageC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.chat import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class ChatMessageC2SP( val message: String, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ChatPreviewC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/ChatPreviewC2SP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ChatPreviewC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/ChatPreviewC2SP.kt index 66ab24a6d..2cf71a843 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ChatPreviewC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/ChatPreviewC2SP.kt @@ -10,16 +10,14 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play +package de.bixilon.minosoft.protocol.packets.c2s.play.chat import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ChatPreviewC2SP( val id: Int, val query: String, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/CommandC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/CommandC2SP.kt index db25e2705..dc2c5405e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/CommandC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/CommandC2SP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.chat import de.bixilon.minosoft.data.chat.signature.Acknowledgement import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.time.Instant -@LoadPacket(threadSafe = false) class CommandC2SP( val command: String, val time: Instant = Instant.now(), diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/CommandSuggestionsC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/CommandSuggestionsC2SP.kt index b6165f614..b6def7d8e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/CommandSuggestionsC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/CommandSuggestionsC2SP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.chat import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class CommandSuggestionsC2SP( val text: String, val assumeCommand: Boolean, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/LegacyMessageAcknowledgementC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/LegacyMessageAcknowledgementC2SP.kt index 081f17ba9..8cc38e8e0 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/LegacyMessageAcknowledgementC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/LegacyMessageAcknowledgementC2SP.kt @@ -14,13 +14,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.chat import de.bixilon.minosoft.data.chat.signature.Acknowledgement import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class LegacyMessageAcknowledgementC2SP( val acknowledgement: Acknowledgement, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/MessageAcknowledgementC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/MessageAcknowledgementC2SP.kt index 30ffe8ab8..8798016ff 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/MessageAcknowledgementC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/MessageAcknowledgementC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.chat import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class MessageAcknowledgementC2SP( val offset: Int, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/SignedChatMessageC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/SignedChatMessageC2SP.kt index 11c367773..9a2434f51 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/SignedChatMessageC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/chat/SignedChatMessageC2SP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.chat import de.bixilon.minosoft.data.chat.signature.Acknowledgement import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.KUtil @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.time.Instant -@LoadPacket(threadSafe = false) class SignedChatMessageC2SP( val message: ByteArray, val time: Instant = Instant.now(), diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/CloseContainerC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/CloseContainerC2SP.kt index 69d5e0b6a..b7c8025a7 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/CloseContainerC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/CloseContainerC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.container import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class CloseContainerC2SP( val containerId: Int, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerActionC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerActionC2SP.kt index 49c7c0832..9a7de7abd 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerActionC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerActionC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.container import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket @Deprecated("Unknown purpose???") class ContainerActionC2SP( val containerId: Int, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerButtonC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerButtonC2SP.kt index 78b85a53a..10d716ccc 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerButtonC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerButtonC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.container import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ContainerButtonC2SP( private val containerId: Int, private val buttonId: Int, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerClickC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerClickC2SP.kt index 2f90111b0..39e637ce6 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerClickC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/container/ContainerClickC2SP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.container import de.bixilon.minosoft.data.container.stack.ItemStack import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_17_1_PRE1 import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import it.unimi.dsi.fastutil.ints.Int2ObjectMap -@LoadPacket data class ContainerClickC2SP( val containerId: Int, val revision: Int, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/DifficultyC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/DifficultyC2SP.kt index 5bce0ef22..822b4fbeb 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/DifficultyC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/DifficultyC2SP.kt @@ -15,13 +15,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.difficulty import de.bixilon.minosoft.data.world.difficulty.Difficulties import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class DifficultyC2SP( val difficulty: Difficulties, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/LockDifficultyC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/LockDifficultyC2SP.kt index 442cc852b..77a86dfeb 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/LockDifficultyC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/LockDifficultyC2SP.kt @@ -14,13 +14,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.difficulty import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class LockDifficultyC2SP( val lock: Boolean, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntityActionC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntityActionC2SP.kt index e70e049f5..d74f8bc86 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntityActionC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntityActionC2SP.kt @@ -17,14 +17,12 @@ import de.bixilon.kutil.enums.ValuesEnum import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class EntityActionC2SP( val entityId: Int, val action: EntityActions, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntityNbtC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntityNbtC2SP.kt index 33701e2bb..dc7227dfb 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntityNbtC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntityNbtC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.entity import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class EntityNbtC2SP( val transactionId: Int, val entityId: Int, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntitySpectateC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntitySpectateC2SP.kt index b67525292..110971f0a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntitySpectateC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/EntitySpectateC2SP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.entity import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels @@ -23,7 +22,6 @@ import java.util.* /** * Teleports our self in spectator mode to an entity */ -@LoadPacket class EntitySpectateC2SP( val uuid: UUID, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityAttackC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityAttackC2SP.kt index b73dadfce..d689f41bd 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityAttackC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityAttackC2SP.kt @@ -15,14 +15,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class EntityAttackC2SP( entityId: Int, override val sneaking: Boolean, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityEmptyInteractC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityEmptyInteractC2SP.kt index 72de66720..4dd1d20c0 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityEmptyInteractC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityEmptyInteractC2SP.kt @@ -16,14 +16,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.entities.entities.player.Hands import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class EntityEmptyInteractC2SP( entityId: Int, val hand: Hands, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityInteractPositionC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityInteractPositionC2SP.kt index 17090bd7c..361b45868 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityInteractPositionC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/interact/EntityInteractPositionC2SP.kt @@ -17,14 +17,12 @@ import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.entities.entities.player.Hands import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class EntityInteractPositionC2SP( entityId: Int, val position: Vec3, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/ConfirmTeleportC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/ConfirmTeleportC2SP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/ConfirmTeleportC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/ConfirmTeleportC2SP.kt index af143b2db..8f7d10245 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/ConfirmTeleportC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/ConfirmTeleportC2SP.kt @@ -10,16 +10,14 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.move import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ConfirmTeleportC2SP( val teleportId: Int, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/GroundChangeC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/GroundChangeC2SP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/GroundChangeC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/GroundChangeC2SP.kt index 08369571b..f5e5ba731 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/GroundChangeC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/GroundChangeC2SP.kt @@ -10,16 +10,14 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.move import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class GroundChangeC2SP( val onGround: Boolean, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/PositionC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/PositionC2SP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/PositionC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/PositionC2SP.kt index c344570ef..53334b53a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/PositionC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/PositionC2SP.kt @@ -10,18 +10,16 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.move import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class PositionC2SP( val position: Vec3d, val onGround: Boolean, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/PositionRotationC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/PositionRotationC2SP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/PositionRotationC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/PositionRotationC2SP.kt index d20b6edd1..9c6ddcd51 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/PositionRotationC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/PositionRotationC2SP.kt @@ -10,19 +10,17 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.move import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class PositionRotationC2SP( val position: Vec3d, val rotation: EntityRotation, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/RotationC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/RotationC2SP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/RotationC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/RotationC2SP.kt index b90331270..5d94823a9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/RotationC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/RotationC2SP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.move import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class RotationC2SP( val rotation: EntityRotation, val onGround: Boolean, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/vehicle/MoveVehicleC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/vehicle/MoveVehicleC2SP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/vehicle/MoveVehicleC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/vehicle/MoveVehicleC2SP.kt index 9bdc135a4..5901975f6 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/vehicle/MoveVehicleC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/vehicle/MoveVehicleC2SP.kt @@ -10,18 +10,16 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move.vehicle +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.vehicle import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class MoveVehicleC2SP( val position: Vec3d, val rotation: EntityRotation, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/vehicle/SteerBoatC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/vehicle/SteerBoatC2SP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/vehicle/SteerBoatC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/vehicle/SteerBoatC2SP.kt index 23cc09afc..19331c86e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/vehicle/SteerBoatC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/vehicle/SteerBoatC2SP.kt @@ -10,16 +10,14 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move.vehicle +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.vehicle import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class SteerBoatC2SP( val leftPaddle: Boolean, val rightPaddle: Boolean, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/vehicle/VehicleInputC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/vehicle/VehicleInputC2SP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/vehicle/VehicleInputC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/vehicle/VehicleInputC2SP.kt index ab2880b0c..e324d0a64 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/vehicle/VehicleInputC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/move/vehicle/VehicleInputC2SP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move.vehicle +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.vehicle import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class VehicleInputC2SP( val sideways: Float, val forward: Float, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ClientActionC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/ClientActionC2SP.kt similarity index 94% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ClientActionC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/ClientActionC2SP.kt index 9153ee40e..c96ef2b58 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/ClientActionC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/ClientActionC2SP.kt @@ -10,19 +10,17 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.player import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ClientActionC2SP( val action: ClientActions, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/HotbarSlotC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/HotbarSlotC2SP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/HotbarSlotC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/HotbarSlotC2SP.kt index 95e23c376..4570f17f3 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/HotbarSlotC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/HotbarSlotC2SP.kt @@ -10,16 +10,14 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.player import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class HotbarSlotC2SP(val slot: Int) : PlayC2SPacket { override fun write(buffer: PlayOutByteBuffer) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PlayerActionC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/PlayerActionC2SP.kt similarity index 95% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PlayerActionC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/PlayerActionC2SP.kt index a07025c1f..26a6ba783 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PlayerActionC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/PlayerActionC2SP.kt @@ -10,7 +10,7 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.player import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.kutil.enums.EnumUtil @@ -18,14 +18,12 @@ import de.bixilon.kutil.enums.ValuesEnum import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class PlayerActionC2SP( val action: Actions, val position: Vec3i = Vec3i.EMPTY, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/SwingArmC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/SwingArmC2SP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/SwingArmC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/SwingArmC2SP.kt index d31c66c28..a6c0389af 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/SwingArmC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/SwingArmC2SP.kt @@ -10,18 +10,16 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.player import de.bixilon.minosoft.data.entities.entities.player.Hands import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class SwingArmC2SP( val arm: Hands, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/ToggleFlyC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/ToggleFlyC2SP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/ToggleFlyC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/ToggleFlyC2SP.kt index b1aba8724..7d8ef8196 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/move/ToggleFlyC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/entity/player/ToggleFlyC2SP.kt @@ -10,18 +10,16 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play.move +package de.bixilon.minosoft.protocol.packets.c2s.play.entity.player import de.bixilon.minosoft.data.entities.entities.player.local.Abilities import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ToggleFlyC2SP( val abilities: Abilities, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BookC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/BookC2SP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BookC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/BookC2SP.kt index 76f01edc0..e1af0fece 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/BookC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/BookC2SP.kt @@ -11,17 +11,15 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s.play +package de.bixilon.minosoft.protocol.packets.c2s.play.item import de.bixilon.minosoft.data.entities.entities.player.Hands import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class BookC2SP( val hand: Hands, val pages: Array, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/ItemPickC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/ItemPickC2SP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/c2s/ItemPickC2SP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/ItemPickC2SP.kt index a9a6fbddf..b1a334d01 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/ItemPickC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/ItemPickC2SP.kt @@ -11,15 +11,14 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.c2s +package de.bixilon.minosoft.protocol.packets.c2s.play.item -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket +import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ItemPickC2SP( val slot: Int, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/ItemStackCreateC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/ItemStackCreateC2SP.kt index 1ca16f3bb..5552e3a06 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/ItemStackCreateC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/ItemStackCreateC2SP.kt @@ -14,13 +14,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.item import de.bixilon.minosoft.data.container.stack.ItemStack import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ItemStackCreateC2SP( val slot: Int, val createdItem: ItemStack, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/UseItemC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/UseItemC2SP.kt index 431c43459..555d955af 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/UseItemC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/item/UseItemC2SP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.item import de.bixilon.minosoft.data.entities.entities.player.Hands import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket data class UseItemC2SP( val hand: Hands, val sequence: Int = 1, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/CraftingRecipeC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/CraftingRecipeC2SP.kt index a9cf56346..8fec2f26d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/CraftingRecipeC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/CraftingRecipeC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.recipe import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class CraftingRecipeC2SP( val containerId: Byte, val recipeId: Int, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/DisplayedRecipeC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/DisplayedRecipeC2SP.kt index ce2228129..82abec834 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/DisplayedRecipeC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/DisplayedRecipeC2SP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.recipe import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.recipes.Recipe import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class DisplayedRecipeC2SP( val recipe: Recipe, ) : PlayC2SPacket { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/RecipeBookC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/RecipeBookC2SP.kt index 4b066d741..c51edd141 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/RecipeBookC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/RecipeBookC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.recipe import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class RecipeBookC2SP( val book: RecipeBooks, val bookOpen: Boolean, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/book/DisplayRecipeC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/book/DisplayRecipeC2SP.kt index 237c95ff9..64729faba 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/book/DisplayRecipeC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/book/DisplayRecipeC2SP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.recipe.book -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class DisplayRecipeC2SP( val recipeId: Int, ) : RecipeBookStateC2SP(Action.DISPLAY_RECIPE) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/book/RecipeBookStatesC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/book/RecipeBookStatesC2SP.kt index 824ffa312..775739e27 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/book/RecipeBookStatesC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/recipe/book/RecipeBookStatesC2SP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.recipe.book -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayOutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class RecipeBookStatesC2SP( val craftingBookOpen: Boolean, val craftingFilter: Boolean, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/status/PingC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/status/PingC2SP.kt index ead75089d..4be0c9a58 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/status/PingC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/status/PingC2SP.kt @@ -13,14 +13,11 @@ package de.bixilon.minosoft.protocol.packets.c2s.status import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.buffers.OutByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(state = ProtocolStates.STATUS) class PingC2SP(val payload: Long) : C2SPacket { override fun write(buffer: OutByteBuffer) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/status/StatusRequestC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/status/StatusRequestC2SP.kt index f370269f8..f8ff5e6df 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/status/StatusRequestC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/status/StatusRequestC2SP.kt @@ -13,13 +13,10 @@ package de.bixilon.minosoft.protocol.packets.c2s.status import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(state = ProtocolStates.STATUS) class StatusRequestC2SP : C2SPacket { override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/AbstractPacketType.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/factory/AbstractPacketType.kt deleted file mode 100644 index afff7b61f..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/AbstractPacketType.kt +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.protocol.packets.factory - -interface AbstractPacketType { - val direction: PacketDirection - val threadSafe: Boolean - val lowPriority: Boolean -} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/C2SPacketType.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/factory/C2SPacketType.kt deleted file mode 100644 index 226316495..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/C2SPacketType.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.protocol.packets.factory - -import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates - -class C2SPacketType( - val state: ProtocolStates, - val clazz: Class, - val annotation: LoadPacket?, - override val threadSafe: Boolean = annotation!!.threadSafe, - override val lowPriority: Boolean = annotation!!.lowPriority, -) : AbstractPacketType { - override val direction = PacketDirection.CLIENT_TO_SERVER - - override fun toString(): String { - return clazz.toString() - } - - companion object { - val EMPTY = { C2SPacketType(ProtocolStates.HANDSHAKE, C2SPacket::class.java, null, threadSafe = false, lowPriority = false) } - } -} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/LoadPacket.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/factory/LoadPacket.kt deleted file mode 100644 index bcd5421e0..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/LoadPacket.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.protocol.packets.factory - -import de.bixilon.minosoft.protocol.protocol.ProtocolStates - -@Target(AnnotationTarget.CLASS) -@Retention(AnnotationRetention.RUNTIME) -annotation class LoadPacket( - val state: ProtocolStates = ProtocolStates.PLAY, - val name: String = "", - val threadSafe: Boolean = true, - val parent: Boolean = false, - val lowPriority: Boolean = false, -) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/PacketTypeRegistry.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/factory/PacketTypeRegistry.kt deleted file mode 100644 index 37b24ebc7..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/PacketTypeRegistry.kt +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.protocol.packets.factory - -import com.google.common.reflect.ClassPath -import de.bixilon.kutil.cast.CastUtil.nullCast -import de.bixilon.kutil.cast.CastUtil.unsafeCast -import de.bixilon.kutil.collections.CollectionUtil.synchronizedMapOf -import de.bixilon.kutil.collections.map.SynchronizedMap -import de.bixilon.kutil.concurrent.worker.unconditional.UnconditionalWorker -import de.bixilon.kutil.latch.AbstractLatch -import de.bixilon.kutil.reflection.KotlinReflection.kClass -import de.bixilon.kutil.reflection.ReflectionUtil.realName -import de.bixilon.kutil.string.StringUtil.toSnakeCase -import de.bixilon.minosoft.protocol.PacketErrorHandler -import de.bixilon.minosoft.protocol.PacketSkipper -import de.bixilon.minosoft.protocol.packets.Packet -import de.bixilon.minosoft.protocol.packets.PacketsRoot -import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket -import de.bixilon.minosoft.protocol.packets.factory.factories.PacketFactory -import de.bixilon.minosoft.protocol.packets.factory.factories.ReflectionFactory -import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates -import de.bixilon.minosoft.util.logging.Log -import de.bixilon.minosoft.util.logging.LogLevels -import de.bixilon.minosoft.util.logging.LogMessageType -import kotlin.reflect.full.companionObjectInstance - -object PacketTypeRegistry { - private var initialized = false - private lateinit var S2C_CLASS_MAP: Map, S2CPacketType> - private lateinit var S2C_STATE_MAP: Map> - private lateinit var C2S_CLASS_MAP: Map, C2SPacketType> - private lateinit var C2S_STATE_MAP: Map> - - - fun getS2C(clazz: Class): S2CPacketType? { - return S2C_CLASS_MAP[getPacketMapClass(clazz)] - } - - fun getS2C(state: ProtocolStates, name: String): S2CPacketType? { - return S2C_STATE_MAP[state]?.get(name) - } - - fun getC2S(clazz: Class): C2SPacketType? { - return C2S_CLASS_MAP[getPacketMapClass(clazz)] - } - - fun getC2S(state: ProtocolStates, name: String): C2SPacketType? { - return C2S_STATE_MAP[state]?.get(name) - } - - private fun getPacketMapClass(clazz: Class): Class? { - if (!clazz.isAnnotationPresent(LoadPacket::class.java)) { - return null - } - val annotation = clazz.getAnnotation(LoadPacket::class.java) - - if (annotation.parent) { - val parent = clazz.superclass.unsafeCast>() - if (parent == Packet::class.java || parent == S2CPacket::class.java || parent == C2SPacket::class.java) { - return clazz - } - return parent.unsafeCast() - } - return clazz - } - - - fun init(latch: AbstractLatch?) { - Log.log(LogMessageType.OTHER, LogLevels.VERBOSE) { "Initializing packets..." } - val classLoader = Thread.currentThread().contextClassLoader - - val s2cClassMap: SynchronizedMap, S2CPacketType> = synchronizedMapOf() - val s2cStateMap: SynchronizedMap> = synchronizedMapOf() - val c2sClassMap: SynchronizedMap, C2SPacketType> = synchronizedMapOf() - val c2sStateMap: SynchronizedMap> = synchronizedMapOf() - - val worker = UnconditionalWorker() - for (info in ClassPath.from(classLoader).getTopLevelClassesRecursive(PacketsRoot::class.java.packageName)) { - worker += { loadClass(s2cClassMap, s2cStateMap, c2sClassMap, c2sStateMap, info) } - } - worker.work(latch) - this.S2C_CLASS_MAP = s2cClassMap - this.S2C_STATE_MAP = s2cStateMap - this.C2S_CLASS_MAP = c2sClassMap - this.C2S_STATE_MAP = c2sStateMap - - initialized = true - Log.log(LogMessageType.OTHER, LogLevels.VERBOSE) { "Packets initialized!" } - } - - private fun loadClass( - s2cClassMap: SynchronizedMap, S2CPacketType>, - s2cStateMap: SynchronizedMap>, - c2sClassMap: SynchronizedMap, C2SPacketType>, - c2sStateMap: SynchronizedMap>, - info: ClassPath.ClassInfo, - ) { - val clazz = info.load() - if (!clazz.isAnnotationPresent(LoadPacket::class.java)) { - return - } - if (!Packet::class.java.isAssignableFrom(clazz) && !PacketFactory::class.java.isAssignableFrom(clazz)) { - return - } - val kClass = clazz.kClass - val objectInstance: Any? = kClass.objectInstance ?: kClass.companionObjectInstance - val annotation = clazz.getAnnotation(LoadPacket::class.java) - val errorHandler = if (objectInstance is PacketErrorHandler) objectInstance else null - val packetSkipper = if (objectInstance is PacketSkipper) objectInstance else null - - val direction = when { - objectInstance is PacketFactory -> objectInstance.direction - C2SPacket::class.java.isAssignableFrom(clazz) -> PacketDirection.CLIENT_TO_SERVER - S2CPacket::class.java.isAssignableFrom(clazz) -> PacketDirection.SERVER_TO_CLIENT - else -> throw IllegalArgumentException("${clazz.realName}: Can not determinate direction!") - } - - val factory = when { - direction == PacketDirection.CLIENT_TO_SERVER -> null // They have data constructors only (yet) - objectInstance is PacketFactory -> objectInstance - else -> ReflectionFactory(clazz.unsafeCast>(), direction, annotation.state) - } - - val name = clazz.getPacketName(annotation) - - val parentClass = getPacketMapClass(clazz.unsafeCast()) - - if (direction == PacketDirection.SERVER_TO_CLIENT) { - val s2cClass = clazz.unsafeCast>() - val type = S2CPacketType(annotation.state, s2cClass, errorHandler, packetSkipper, annotation, factory) - s2cClassMap[s2cClass] = type - s2cStateMap.synchronizedGetOrPut(annotation.state) { mutableMapOf() }.put(name, type)?.let { throw IllegalStateException("Packet already mapped: $it (name=$name)") } - if (parentClass != null && parentClass != s2cClass) { - val parentKClass = parentClass.kClass - val parentObject = parentKClass.objectInstance ?: parentKClass.companionObjectInstance - val parentErrorHandler = parentObject.nullCast() - val parentPacketSkipper = parentObject.nullCast() - s2cClassMap[parentClass.unsafeCast()] = S2CPacketType(annotation.state, parentClass.unsafeCast(), parentErrorHandler, parentPacketSkipper, annotation) - s2cStateMap[annotation.state]!!.putIfAbsent(parentClass.getPacketName(null), type) - } - } else { - val c2sClass = clazz.unsafeCast>() - val type = C2SPacketType(annotation.state, c2sClass, annotation) - c2sClassMap[c2sClass] = type - c2sStateMap.synchronizedGetOrPut(annotation.state) { mutableMapOf() }.put(name, type)?.let { throw IllegalStateException("Packet already mapped: $it (name=$name)") } - if (parentClass != null && parentClass != c2sClass) { - val parentType = c2sClassMap.synchronizedGetOrPut(parentClass.unsafeCast()) { C2SPacketType(annotation.state, parentClass.unsafeCast(), annotation) } - c2sClassMap[parentClass.unsafeCast()] = parentType - c2sStateMap[annotation.state]!!.putIfAbsent(parentClass.getPacketName(null), parentType) - } - } - } - - - fun Class<*>.getPacketName(annotation: LoadPacket?): String { - var name = annotation?.name - if (name == null || name.isBlank()) { - name = simpleName.removePrefix("Base").removeSuffix("S2CP").removeSuffix("C2SP").removeSuffix("C2SF").removeSuffix("S2CF").toSnakeCase() - } - return name - } -} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/S2CPacketType.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/factory/S2CPacketType.kt deleted file mode 100644 index 6e4d84f18..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/S2CPacketType.kt +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.protocol.packets.factory - -import de.bixilon.minosoft.protocol.PacketErrorHandler -import de.bixilon.minosoft.protocol.PacketSkipper -import de.bixilon.minosoft.protocol.network.connection.Connection -import de.bixilon.minosoft.protocol.packets.factory.factories.PacketFactory -import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates - -class S2CPacketType( - val state: ProtocolStates, - val clazz: Class, - private val packetErrorHandler: PacketErrorHandler?, - private val packetSkipper: PacketSkipper?, - val annotation: LoadPacket?, - val factory: PacketFactory? = null, - override val threadSafe: Boolean = annotation!!.threadSafe, - override val lowPriority: Boolean = annotation!!.lowPriority, -) : AbstractPacketType, PacketErrorHandler, PacketSkipper { - override val direction = PacketDirection.SERVER_TO_CLIENT - - - override fun onError(error: Throwable, connection: Connection) { - packetErrorHandler?.onError(error, connection) - } - - override fun canSkip(connection: Connection): Boolean { - return packetSkipper?.canSkip(connection) ?: false - } - - override fun toString(): String { - return clazz.toString() - } - - - companion object { - val EMPTY = { S2CPacketType(ProtocolStates.HANDSHAKE, S2CPacket::class.java, null, null, null, threadSafe = false, lowPriority = false) } - } -} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/ReflectionFactory.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/ReflectionFactory.kt deleted file mode 100644 index 9b200bb02..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/ReflectionFactory.kt +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ - -package de.bixilon.minosoft.protocol.packets.factory.factories - -import de.bixilon.minosoft.protocol.packets.Packet -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.protocol.ProtocolStates -import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer -import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer - -class ReflectionFactory( - clazz: Class, - override val direction: PacketDirection, - state: ProtocolStates, -) : PacketFactory { - private val constructor = if (state == ProtocolStates.PLAY || state == ProtocolStates.LOGIN) { - clazz.getConstructor(PlayInByteBuffer::class.java) - } else { - clazz.getConstructor(InByteBuffer::class.java) - } - - override fun createPacket(buffer: InByteBuffer): T { - return constructor.newInstance(buffer) - } -} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/registry/DefaultPackets.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/DefaultPackets.kt new file mode 100644 index 000000000..b8ba7f4a2 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/DefaultPackets.kt @@ -0,0 +1,373 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.protocol.packets.registry + +import de.bixilon.minosoft.protocol.packets.c2s.handshake.HandshakeC2SP +import de.bixilon.minosoft.protocol.packets.c2s.login.ChannelC2SP +import de.bixilon.minosoft.protocol.packets.c2s.login.EncryptionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.login.StartC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.* +import de.bixilon.minosoft.protocol.packets.c2s.play.advancement.tab.AdvancementCloseTabC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.advancement.tab.AdvancementOpenTabC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.block.* +import de.bixilon.minosoft.protocol.packets.c2s.play.chat.* +import de.bixilon.minosoft.protocol.packets.c2s.play.container.CloseContainerC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.container.ContainerActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.container.ContainerButtonC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.container.ContainerClickC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.difficulty.DifficultyC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.difficulty.LockDifficultyC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.EntityActionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.EntityNbtC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.EntitySpectateC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact.EntityAttackC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact.EntityEmptyInteractC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.interact.EntityInteractPositionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.* +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.vehicle.MoveVehicleC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.vehicle.SteerBoatC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.vehicle.VehicleInputC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.* +import de.bixilon.minosoft.protocol.packets.c2s.play.item.BookC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.item.ItemPickC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.item.ItemStackCreateC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.item.UseItemC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.recipe.CraftingRecipeC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.recipe.DisplayedRecipeC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.recipe.RecipeBookC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.recipe.book.DisplayRecipeC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.recipe.book.RecipeBookStatesC2SP +import de.bixilon.minosoft.protocol.packets.c2s.status.PingC2SP +import de.bixilon.minosoft.protocol.packets.c2s.status.StatusRequestC2SP +import de.bixilon.minosoft.protocol.packets.s2c.general.CompressionS2CP +import de.bixilon.minosoft.protocol.packets.s2c.general.KickS2CP +import de.bixilon.minosoft.protocol.packets.s2c.login.ChannelS2CP +import de.bixilon.minosoft.protocol.packets.s2c.login.EncryptionS2CP +import de.bixilon.minosoft.protocol.packets.s2c.login.SuccessS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.* +import de.bixilon.minosoft.protocol.packets.s2c.play.advancement.AdvancementTabS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.advancement.AdvancementsS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.block.* +import de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk.* +import de.bixilon.minosoft.protocol.packets.s2c.play.border.* +import de.bixilon.minosoft.protocol.packets.s2c.play.bossbar.BossbarS2CF +import de.bixilon.minosoft.protocol.packets.s2c.play.chat.* +import de.bixilon.minosoft.protocol.packets.s2c.play.combat.CombatEventS2CF +import de.bixilon.minosoft.protocol.packets.s2c.play.combat.EndCombatEventS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.combat.EnterCombatEventS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.combat.KillCombatEventS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.container.* +import de.bixilon.minosoft.protocol.packets.s2c.play.entity.* +import de.bixilon.minosoft.protocol.packets.s2c.play.entity.effect.EntityEffectS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.entity.effect.EntityRemoveEffectS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.entity.move.* +import de.bixilon.minosoft.protocol.packets.s2c.play.entity.passenger.EntityAttachS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.entity.passenger.EntityPassengerS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.entity.player.* +import de.bixilon.minosoft.protocol.packets.s2c.play.entity.spawn.* +import de.bixilon.minosoft.protocol.packets.s2c.play.item.BookS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.item.CompassPositionS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.item.CraftingRecipeS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.item.ItemCooldownS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.map.MapS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.map.legacy.LegacyMapS2CF +import de.bixilon.minosoft.protocol.packets.s2c.play.recipes.RecipesS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.recipes.UnlockRecipesS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.ObjectivePositionS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.objective.ObjectiveS2CF +import de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.score.ScoreboardScoreS2CF +import de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.teams.TeamsS2CF +import de.bixilon.minosoft.protocol.packets.s2c.play.sign.SignEditorS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.sign.SignTextS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.sound.EntitySoundS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.sound.NamedSoundS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.sound.SoundEventS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.sound.StopSoundS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.tab.LegacyTabListS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.tab.TabListRemoveS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.tab.TabListS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.tab.TabListTextS2CP +import de.bixilon.minosoft.protocol.packets.s2c.play.title.* +import de.bixilon.minosoft.protocol.packets.s2c.play.world.* +import de.bixilon.minosoft.protocol.packets.s2c.status.PongS2CP +import de.bixilon.minosoft.protocol.packets.s2c.status.StatusS2CP +import de.bixilon.minosoft.protocol.protocol.PacketDirections +import de.bixilon.minosoft.protocol.protocol.ProtocolStates + +object DefaultPackets { + val C2S = mapOf( + ProtocolStates.HANDSHAKE to PacketRegistry(threadSafe = false, extra = PacketExtraHandler.Disconnect).apply { + register("handshake", HandshakeC2SP::class) + }, + ProtocolStates.STATUS to PacketRegistry(threadSafe = false, extra = PacketExtraHandler.Disconnect).apply { + register("ping", PingC2SP::class) + register("status_request", StatusRequestC2SP::class) + }, + ProtocolStates.LOGIN to PacketRegistry(threadSafe = false, extra = PacketExtraHandler.Disconnect).apply { + register("channel", ChannelC2SP::class) + register("encryption", EncryptionC2SP::class) + register("start", StartC2SP::class) + }, + ProtocolStates.PLAY to PacketRegistry(threadSafe = true).apply { + register("advancement_tab", AdvancementCloseTabC2SP::class) + register("advancement_tab", AdvancementOpenTabC2SP::class) + + register("anvil_item_name", AnvilItemNameC2SP::class) + register("beacon_effect", BeaconEffectC2SP::class) + register("block_interact", BlockInteractC2SP::class) + register("block_nbt", BlockNbtC2SP::class) + register("command_block", CommandBlockC2SP::class) + register("generate_structure", GenerateStructureC2SP::class) + register("jigsaw_block", JigsawBlockC2SP::class) + register("minecart_command_block", MinecartCommandBlockC2SP::class) + register("sign_text", SignTextC2SP::class) + register("structure_block", StructureBlockC2SP::class) + + register("chat_message", ChatMessageC2SP::class, threadSafe = false) + register("chat_preview", ChatPreviewC2SP::class, threadSafe = false) + register("command", CommandC2SP::class, threadSafe = false) + register("command_suggestions", CommandSuggestionsC2SP::class, threadSafe = false) + register("legacy_message_acknowledgement", LegacyMessageAcknowledgementC2SP::class, threadSafe = false) + register("message_acknowledgement", MessageAcknowledgementC2SP::class, threadSafe = false) + register("signed_chat_message", SignedChatMessageC2SP::class, threadSafe = false) + + register("close_container", CloseContainerC2SP::class) + register("container_action", ContainerActionC2SP::class) + register("container_button", ContainerButtonC2SP::class) + register("container_click", ContainerClickC2SP::class) + + register("difficulty", DifficultyC2SP::class) + register("lock_difficulty", LockDifficultyC2SP::class) + + register("entity_attack", EntityAttackC2SP::class); register("entity_interact", EntityAttackC2SP::class) + register("entity_empty_interact", EntityEmptyInteractC2SP::class); register("entity_interact", EntityEmptyInteractC2SP::class) + register("entity_interact_position", EntityInteractPositionC2SP::class); register("entity_interact", EntityInteractPositionC2SP::class) + + register("move_vehicle", MoveVehicleC2SP::class) + register("steer_boat", SteerBoatC2SP::class) + register("vehicle_input", VehicleInputC2SP::class) + + register("confirm_teleport", ConfirmTeleportC2SP::class) + register("ground_change", GroundChangeC2SP::class) + register("position", PositionC2SP::class) + register("position_rotation", PositionRotationC2SP::class) + register("rotation", RotationC2SP::class) + + register("client_action", ClientActionC2SP::class) + register("hotbar_slot", HotbarSlotC2SP::class) + register("player_action", PlayerActionC2SP::class) + register("swing_arm", SwingArmC2SP::class) + register("toggle_fly", ToggleFlyC2SP::class) + + register("entity_action", EntityActionC2SP::class) + register("entity_nbt", EntityNbtC2SP::class) + register("entity_spectate", EntitySpectateC2SP::class) + + register("book", BookC2SP::class) + register("item_pick", ItemPickC2SP::class) + register("item_stack_create", ItemStackCreateC2SP::class) + register("use_item", UseItemC2SP::class) + + register("display_recipe", DisplayRecipeC2SP::class) + register("recipe_book_states", RecipeBookStatesC2SP::class) + + register("crafting_recipe", CraftingRecipeC2SP::class) + register("displayed_recipe", DisplayedRecipeC2SP::class) + register("recipe_book", RecipeBookC2SP::class) + + register("channel", de.bixilon.minosoft.protocol.packets.c2s.play.ChannelC2SP::class, threadSafe = false) + register("heartbeat", HeartbeatC2SP::class) + register("pong", PongC2SP::class) + register("resourcepack", ResourcepackC2SP::class) + register("session_data", SessionDataC2SP::class) + register("settings", SettingsC2SP::class) + register("trade", TradeC2SP::class) + }, + ) + + val S2C = mapOf( + ProtocolStates.STATUS to PacketRegistry(threadSafe = false, extra = PacketExtraHandler.Disconnect).apply { + register("pong", PongS2CP::class, ::PongS2CP) + register("status", StatusS2CP::class, ::StatusS2CP) + }, + ProtocolStates.LOGIN to PacketRegistry(threadSafe = false, extra = PacketExtraHandler.Disconnect).apply { + registerPlay("channel", ::ChannelS2CP, ChannelS2CP::class) + registerPlay("compression", ::CompressionS2CP, CompressionS2CP::class) + registerPlay("encryption", ::EncryptionS2CP, EncryptionS2CP::class) + registerPlay("kick", ::KickS2CP, KickS2CP::class) + registerPlay("success", ::SuccessS2CP, SuccessS2CP::class) + }, + ProtocolStates.PLAY to PacketRegistry(threadSafe = true).apply { + registerPlay("advancements", ::AdvancementsS2CP, threadSafe = false) + registerPlay("advancement_tab", ::AdvancementTabS2CP, threadSafe = false) + + registerPlay("block_action", ::BlockActionS2CP, threadSafe = false) + registerPlay("block_break_animation", ::BlockBreakAnimationS2CP) + registerPlay("block_break", ::BlockBreakS2CP, threadSafe = false) + registerPlay("block_data", ::BlockDataS2CP, threadSafe = false) + registerPlay("block", ::BlockS2CP, threadSafe = false) + registerPlay("blocks", ::BlocksS2CP, threadSafe = false) + registerPlay("legacy_block_break", ::LegacyBlockBreakS2CP, threadSafe = false) + + registerPlay("chunk_biome", ::ChunkBiomeS2CP, lowPriority = true) + registerPlay("chunk_center", ::ChunkCenterS2CP) + registerPlay("chunk_light", ::ChunkLightS2CP, lowPriority = true) + registerPlay("chunk", ::ChunkS2CP, lowPriority = true) + registerPlay("chunks", ::ChunksS2CP, lowPriority = true) + registerPlay("simulation_distance", ::SimulationDistanceS2CP) + registerPlay("unload_chunk", ::UnloadChunkS2CP, threadSafe = false) + registerPlay("view_distance", ::ViewDistanceS2CP) + + registerPlay("center_world_border", ::CenterWorldBorderS2CP, threadSafe = false) + registerPlay("initialize_world_border", ::InitializeWorldBorderS2CP, threadSafe = false) + registerPlay("interpolate_world_border", ::InterpolateWorldBorderS2CP, threadSafe = false) + registerPlay("size_world_border", ::SizeWorldBorderS2CP, threadSafe = false) + registerPlay("warn_blocks_world_border", ::WarnBlocksWorldBorderS2CP, threadSafe = false) + registerPlay("warn_time_world_border", ::WarnTimeWorldBorderS2CP, threadSafe = false) + registerPlay("world_border", WorldBorderS2CF, threadSafe = false) + + registerPlay("bossbar", BossbarS2CF, threadSafe = false) + + registerPlay("chat_message", ::ChatMessageS2CP, threadSafe = false) + registerPlay("chat_preview", ::ChatPreviewS2CP, threadSafe = false) + registerPlay("chat_suggestions", ::ChatSuggestionsS2CP, threadSafe = false) + registerPlay("commands", ::CommandsS2CP, threadSafe = false) + registerPlay("command_suggestions", ::CommandSuggestionsS2CP, threadSafe = false) + registerPlay("hide_message", ::HideMessageS2CP) + registerPlay("message_header", ::MessageHeaderS2CP, threadSafe = false) + registerPlay("signed_chat_message", ::SignedChatMessageS2CP, threadSafe = false) + registerPlay("temporary_chat_preview", ::TemporaryChatPreviewS2CP) + registerPlay("unsigned_chat_message", ::UnsignedChatMessageS2CP, threadSafe = false) + + registerPlay("combat_event", CombatEventS2CF) + registerPlay("end_combat_event", ::EndCombatEventS2CP) + registerPlay("enter_combat_event", ::EnterCombatEventS2CP) + registerPlay("kill_combat_event", ::KillCombatEventS2CP) + + registerPlay("close_container", ::CloseContainerS2CP, threadSafe = false) + registerPlay("container_action", ::ContainerActionS2CP, threadSafe = false) + registerPlay("container_item", ::ContainerItemS2CP, threadSafe = false) + registerPlay("container_items", ::ContainerItemsS2CP, threadSafe = false) + registerPlay("container_properties", ::ContainerPropertiesS2CP, threadSafe = false) + registerPlay("open_container", ::OpenContainerS2CP, threadSafe = false) + registerPlay("open_entity_container", ::OpenEntityContainerS2CP, threadSafe = false) + + registerPlay("entity_effect", ::EntityEffectS2CP, threadSafe = false) + registerPlay("entity_remove_effect", ::EntityRemoveEffectS2CP, threadSafe = false) + registerPlay("empty_move", ::EmptyMoveS2CP, threadSafe = false) + registerPlay("head_rotation", ::HeadRotationS2CP, threadSafe = false) + registerPlay("movement_rotation", ::MovementRotationS2CP, threadSafe = false) + registerPlay("move_vehicle", ::MoveVehicleS2CP, threadSafe = false) + registerPlay("player_face", ::PlayerFaceS2CP, threadSafe = false) + registerPlay("position_rotation", ::PositionRotationS2CP, threadSafe = false) + registerPlay("relative_move", ::RelativeMoveS2CP, threadSafe = false) + registerPlay("rotation", ::RotationS2CP, threadSafe = false) + registerPlay("teleport", ::TeleportS2CP, threadSafe = false) + registerPlay("velocity", ::VelocityS2CP, threadSafe = false) + + registerPlay("entity_attach", ::EntityAttachS2CP, threadSafe = false) + registerPlay("entity_passenger", ::EntityPassengerS2CP, threadSafe = false) + + registerPlay("camera", ::CameraS2CP, threadSafe = false) + registerPlay("experience", ::ExperienceS2CP, threadSafe = false) + registerPlay("health", ::HealthS2CP, threadSafe = false) + registerPlay("hotbar_slot", ::HotbarSlotS2CP, threadSafe = false) + registerPlay("player_abilities", ::PlayerAbilitiesS2CP, threadSafe = false) + + registerPlay("entity_destroy", ::EntityDestroyS2CP, threadSafe = false) + registerPlay("entity_experience_orb", ::EntityExperienceOrbS2CP, threadSafe = false) + registerPlay("entity_mob_spawn", ::EntityMobSpawnS2CP, threadSafe = false) + registerPlay("entity_object_spawn", ::EntityObjectSpawnS2CP, threadSafe = false) + registerPlay("entity_painting", ::EntityPaintingS2CP, threadSafe = false) + registerPlay("entity_player", ::EntityPlayerS2CP, threadSafe = false) + registerPlay("global_entity_spawn", ::GlobalEntitySpawnS2CP, threadSafe = false) + + registerPlay("damage_tilt", ::DamageTiltS2CP) + registerPlay("entity_animation", ::EntityAnimationS2CP) + registerPlay("entity_attributes", ::EntityAttributesS2CP, threadSafe = false) + registerPlay("entity_collect", ::EntityCollectS2CP) + registerPlay("entity_damage", ::EntityDamageS2CP) + registerPlay("entity_data", ::EntityDataS2CP, threadSafe = false) + registerPlay("entity_equipment", ::EntityEquipmentS2CP, threadSafe = false) + registerPlay("entity_event", ::EntityEventS2CP, threadSafe = false) + registerPlay("entity_sleep", ::EntitySleepS2CP) + + registerPlay("book", ::BookS2CP) + registerPlay("compass_position", ::CompassPositionS2CP) + registerPlay("crafting_recipe", ::CraftingRecipeS2CP) + registerPlay("item_cooldown", ::ItemCooldownS2CP, threadSafe = false) + + registerPlay("legacy_map", LegacyMapS2CF, threadSafe = false) + registerPlay("map", ::MapS2CP) + + registerPlay("recipes", ::RecipesS2CP) + registerPlay("unlock_recipes", ::UnlockRecipesS2CP) + + registerPlay("objective", ObjectiveS2CF, threadSafe = false) + registerPlay("scoreboard_score", ScoreboardScoreS2CF, threadSafe = false) + registerPlay("teams", TeamsS2CF, threadSafe = false) + registerPlay("objective_position", ::ObjectivePositionS2CP, threadSafe = false) + + registerPlay("sign_editor", ::SignEditorS2CP) + registerPlay("sign_text", ::SignTextS2CP, threadSafe = false) + + registerPlay("entity_sound", ::EntitySoundS2CP) + registerPlay("named_sound", ::NamedSoundS2CP) + registerPlay("sound_event", ::SoundEventS2CP) + registerPlay("stop_sound", ::StopSoundS2CP) + + registerPlay("legacy_tab_list", ::LegacyTabListS2CP, threadSafe = false) + registerPlay("tab_list_remove", ::TabListRemoveS2CP, threadSafe = false) + registerPlay("tab_list", ::TabListS2CP, threadSafe = false) + registerPlay("tab_list_text", ::TabListTextS2CP, threadSafe = false) + + registerPlay("clear_title", ClearTitleS2CF, threadSafe = false) + registerPlay("hotbar_text", ::HotbarTextS2CP, threadSafe = false) + registerPlay("subtitle", ::SubtitleS2CP, threadSafe = false) + registerPlay("title", TitleS2CF, threadSafe = false) + registerPlay("title_text", ::TitleTextS2CP, threadSafe = false) + registerPlay("title_times", ::TitleTimesS2CP, threadSafe = false) + + registerPlay("difficulty", ::DifficultyS2CP) + registerPlay("explosion", ::ExplosionS2CP, lowPriority = true) + registerPlay("particle", ::ParticleS2CP) + registerPlay("time", ::TimeS2CP) + registerPlay("vibration", ::VibrationS2CP) + registerPlay("villager_trades", ::VillagerTradesS2CP) + registerPlay("world_event", ::WorldEventS2CP) + + registerPlay("bundle", ::BundleS2CP, threadSafe = false) + registerPlay("channel", { de.bixilon.minosoft.protocol.packets.s2c.play.ChannelS2CP(it) }, threadSafe = false) + registerPlay("features", ::FeaturesS2CP, threadSafe = false) + registerPlay("game_event", ::GameEventS2CP, threadSafe = false) + registerPlay("heartbeat", ::HeartbeatS2CP) + registerPlay("initialize", ::InitializeS2CP, threadSafe = false) + registerPlay("nbt_response", ::NbtResponseS2CP) + registerPlay("ping", ::PingS2CP) + registerPlay("play_status", ::PlayStatusS2CP) + registerPlay("resourcepack", ::ResourcepackS2CP) + registerPlay("respawn", ::RespawnS2CP, threadSafe = false) + registerPlay("statistics", ::StatisticsS2CP) + registerPlay("tags", ::TagsS2CP) + + registerPlay("kick", ::KickS2CP, threadSafe = false) + registerPlay("compression", ::CompressionS2CP, threadSafe = false) + }, + ) + + operator fun get(direction: PacketDirections) = when (direction) { + PacketDirections.CLIENT_TO_SERVER -> C2S + PacketDirections.SERVER_TO_CLIENT -> S2C + } +} diff --git a/src/main/java/de/bixilon/minosoft/protocol/PacketErrorHandler.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketExtraHandler.kt similarity index 64% rename from src/main/java/de/bixilon/minosoft/protocol/PacketErrorHandler.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketExtraHandler.kt index e3ad7d0f2..829c2bba9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/PacketErrorHandler.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketExtraHandler.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -11,11 +11,20 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol +package de.bixilon.minosoft.protocol.packets.registry import de.bixilon.minosoft.protocol.network.connection.Connection -interface PacketErrorHandler { +interface PacketExtraHandler { + fun skip(connection: Connection): Boolean = false + fun onError(error: Throwable, connection: Connection) = Unit - fun onError(error: Throwable, connection: Connection) + + object Disconnect : PacketExtraHandler { + + override fun onError(error: Throwable, connection: Connection) { + connection.error = error + connection.disconnect() + } + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketMapping.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketMapping.kt new file mode 100644 index 000000000..598034307 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketMapping.kt @@ -0,0 +1,73 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.protocol.packets.registry + +import de.bixilon.kutil.primitive.IntUtil.toHex +import de.bixilon.minosoft.protocol.packets.types.Packet +import de.bixilon.minosoft.protocol.protocol.PacketDirections +import de.bixilon.minosoft.protocol.protocol.ProtocolStates +import it.unimi.dsi.fastutil.ints.Int2ObjectMap +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap +import it.unimi.dsi.fastutil.objects.Object2IntMap +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap +import java.util.* +import kotlin.reflect.KClass + +class PacketMapping(val direction: PacketDirections) { + private val packets: MutableMap = EnumMap(ProtocolStates::class.java) + + operator fun get(state: ProtocolStates, id: Int): PacketType? { + return packets[state]?.get(id) + } + + operator fun get(state: ProtocolStates, type: PacketType): Int { + val mapping = packets[state] ?: return INVALID_ID + return mapping[type] + } + + fun register(state: ProtocolStates, type: PacketType, id: Int) { + val mapping = packets.getOrPut(state) { StatePacketMapping() } + mapping.register(type, id) + } + + fun register(state: ProtocolStates, clazz: KClass, id: Int) { + register(state, DefaultPackets[direction][state]!![clazz], id) + } + + private inner class StatePacketMapping { + val type: Int2ObjectMap = Int2ObjectOpenHashMap() + val id: Object2IntMap = Object2IntOpenHashMap() + + init { + id.defaultReturnValue(INVALID_ID) + } + + operator fun get(type: PacketType): Int { + return this.id.getInt(type) + } + + operator fun get(id: Int): PacketType? { + return this.type.get(id) + } + + fun register(type: PacketType, id: Int) { + if (this.type.put(id, type) != null) throw IllegalArgumentException("Packet id duplicated: 0x${id.toHex()} (name=${type.name})") + if (this.id.put(type, id) != INVALID_ID) throw IllegalArgumentException("Packet type duplicated: $type") + } + } + + companion object { + const val INVALID_ID = -1 + } +} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketRegistry.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketRegistry.kt new file mode 100644 index 000000000..a3fc8c8f5 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketRegistry.kt @@ -0,0 +1,77 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.protocol.packets.registry + +import de.bixilon.kutil.cast.CastUtil.unsafeCast +import de.bixilon.kutil.observer.ObserveUtil.jClass +import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketNotFoundException +import de.bixilon.minosoft.protocol.packets.registry.factory.PacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.types.Packet +import kotlin.jvm.internal.Reflection +import kotlin.reflect.KClass + +open class PacketRegistry( + val threadSafe: Boolean = true, + val extra: PacketExtraHandler? = null, +) { + private val name: MutableMap = hashMapOf() + private val clazz: MutableMap, PacketType> = hashMapOf() + + + fun register(name: String, clazz: KClass? = null, factory: PacketFactory? = null, threadSafe: Boolean = this.threadSafe, lowPriority: Boolean = false, extra: PacketExtraHandler? = this.extra): PacketRegistry { + /* + 3 cases: + - packet not registered before -> create packet type + - packet registered before (loop all parent classes and get packet type, store with current klass) + - packet is registered before (set factory) + */ + val nameType = this.name[name] + val type = clazz?.let { register(clazz) { nameType ?: PacketType(name, threadSafe, lowPriority, extra, null) } } ?: PacketType(name, threadSafe, lowPriority, extra, null) + + if (factory != null) { + if (type.factory != null) throw IllegalStateException("Ambiguous packet factory: $name") + type.factory = factory + } + + if (nameType == null) { + this.name[name] = type + } + + return this + } + + fun registerPlay(name: String, factory: PlayPacketFactory? = null, clazz: KClass? = null, threadSafe: Boolean = this.threadSafe, lowPriority: Boolean = false, extra: PacketExtraHandler? = this.extra): PacketRegistry { + return register(name, clazz, factory, threadSafe, lowPriority, extra) + } + + private fun register(clazz: KClass<*>, type: () -> PacketType): PacketType { + if (clazz == Any::class) return type.invoke() + this.clazz[clazz]?.let { return it } + + val superclass = Reflection.createKotlinClass(clazz.jClass.superclass) + val type = register(superclass, type) + this.clazz[clazz.unsafeCast()] = type + + return type + } + + operator fun get(clazz: KClass): PacketType { + return this.clazz[clazz] ?: throw PacketNotFoundException(clazz) + } + + operator fun get(name: String): PacketType? { + return this.name[name] + } +} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketType.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketType.kt new file mode 100644 index 000000000..d51b99c5e --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/PacketType.kt @@ -0,0 +1,45 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.protocol.packets.registry + +import de.bixilon.minosoft.protocol.network.connection.Connection +import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection +import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.PacketBufferUnderflowException +import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.implementation.PacketNotImplementedException +import de.bixilon.minosoft.protocol.packets.registry.factory.PacketFactory +import de.bixilon.minosoft.protocol.packets.types.Packet +import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer +import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer + +class PacketType( + val name: String, + val threadSafe: Boolean, + val lowPriority: Boolean, + val extra: PacketExtraHandler?, + var factory: PacketFactory?, +) { + + fun create(data: ByteArray, connection: Connection): Packet { + val factory = this.factory ?: throw PacketNotImplementedException(name, connection.network.state, connection.version) + + val buffer = if (connection is PlayConnection) PlayInByteBuffer(data, connection) else InByteBuffer(data) + val packet = factory.create(buffer) + + if (buffer.pointer < buffer.size) { + throw PacketBufferUnderflowException(this, buffer.size, buffer.size - buffer.pointer) + } + + return packet + } +} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/PacketFactory.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/factory/PacketFactory.kt similarity index 74% rename from src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/PacketFactory.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/registry/factory/PacketFactory.kt index 3a3351236..5c104950a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/PacketFactory.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/factory/PacketFactory.kt @@ -10,15 +10,12 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ +package de.bixilon.minosoft.protocol.packets.registry.factory -package de.bixilon.minosoft.protocol.packets.factory.factories - -import de.bixilon.minosoft.protocol.packets.Packet -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection +import de.bixilon.minosoft.protocol.packets.types.Packet import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer -interface PacketFactory { - val direction: PacketDirection +fun interface PacketFactory { - fun createPacket(buffer: InByteBuffer): Packet + fun create(buffer: InByteBuffer): Packet } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/PlayPacketFactory.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/factory/PlayPacketFactory.kt similarity index 69% rename from src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/PlayPacketFactory.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/registry/factory/PlayPacketFactory.kt index a70a49aed..6755fd218 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/factories/PlayPacketFactory.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/registry/factory/PlayPacketFactory.kt @@ -10,17 +10,17 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ +package de.bixilon.minosoft.protocol.packets.registry.factory -package de.bixilon.minosoft.protocol.packets.factory.factories - -import de.bixilon.kutil.cast.CastUtil.unsafeCast -import de.bixilon.minosoft.protocol.packets.Packet +import de.bixilon.minosoft.protocol.packets.types.Packet import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -interface PlayPacketFactory : PacketFactory { +fun interface PlayPacketFactory : PacketFactory { + override fun create(buffer: InByteBuffer): Packet { + if (buffer !is PlayInByteBuffer) throw IllegalStateException("Must be a PlayInByteBuffer") + return create(buffer) + } - override fun createPacket(buffer: InByteBuffer) = createPacket(buffer.unsafeCast()) - - fun createPacket(buffer: PlayInByteBuffer): Packet + fun create(buffer: PlayInByteBuffer): Packet } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/PlayS2CPacket.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/PlayS2CPacket.kt index fdc826e48..44a21448c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/PlayS2CPacket.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/PlayS2CPacket.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -12,11 +12,19 @@ */ package de.bixilon.minosoft.protocol.packets.s2c +import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection +import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.WrongConnectionException interface PlayS2CPacket : S2CPacket { fun handle(connection: PlayConnection) = Unit fun check(connection: PlayConnection) = Unit + + override fun handle(connection: Connection) { + if (connection !is PlayConnection) throw WrongConnectionException(PlayConnection::class.java, connection::class.java) + check(connection) + handle(connection) + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/S2CPacket.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/S2CPacket.kt index 062b7ee5d..daacf3e64 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/S2CPacket.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/S2CPacket.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -12,6 +12,7 @@ */ package de.bixilon.minosoft.protocol.packets.s2c -import de.bixilon.minosoft.protocol.packets.Packet +import de.bixilon.minosoft.protocol.packets.types.HandleablePacket +import de.bixilon.minosoft.protocol.packets.types.Packet -interface S2CPacket : Packet +interface S2CPacket : Packet, HandleablePacket diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/StatusS2CPacket.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/StatusS2CPacket.kt index 88bcc1b8f..514d09bb3 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/StatusS2CPacket.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/StatusS2CPacket.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -12,11 +12,22 @@ */ package de.bixilon.minosoft.protocol.packets.s2c +import de.bixilon.minosoft.protocol.network.connection.Connection +import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection +import de.bixilon.minosoft.protocol.network.network.client.netty.exceptions.WrongConnectionException +import de.bixilon.minosoft.protocol.packets.types.HandleablePacket -interface StatusS2CPacket : S2CPacket { +interface StatusS2CPacket : S2CPacket, HandleablePacket { fun handle(connection: StatusConnection) = Unit fun check(connection: StatusConnection) = Unit + + + override fun handle(connection: Connection) { + if (connection !is StatusConnection) throw WrongConnectionException(PlayConnection::class.java, connection::class.java) + check(connection) + handle(connection) + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/CompressionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/general/CompressionS2CP.kt similarity index 72% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/CompressionS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/general/CompressionS2CP.kt index b3975c230..2b2d66b96 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/CompressionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/general/CompressionS2CP.kt @@ -10,19 +10,22 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.login +package de.bixilon.minosoft.protocol.packets.s2c.general -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.s2c.interfaces.CompressionS2CP -import de.bixilon.minosoft.protocol.protocol.ProtocolStates +import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection +import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(state = ProtocolStates.LOGIN, threadSafe = false) -class CompressionS2CP(buffer: PlayInByteBuffer) : CompressionS2CP { - override val threshold: Int = buffer.readVarInt() +class CompressionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { + val threshold: Int = buffer.readVarInt() + + + override fun handle(connection: PlayConnection) { + connection.network.compressionThreshold = threshold + } override fun log(reducedLog: Boolean) { Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Compression (threshold=$threshold)" } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/KickS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/general/KickS2CP.kt similarity index 81% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/KickS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/general/KickS2CP.kt index d51db1f35..30d2f3031 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/KickS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/general/KickS2CP.kt @@ -10,20 +10,19 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.general import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.modding.event.events.KickEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket +import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class KickS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val reason: ChatComponent = buffer.readChatComponent() @@ -31,14 +30,18 @@ class KickS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { if (!connection.network.connected) { return // already disconnected, maybe timed out? } - connection.events.fire(KickEvent(connection, this)) + connection.events.fire(KickEvent(connection, reason)) // got kicked connection.network.disconnect() - connection.state = PlayConnectionStates.KICKED + if (connection.network.state == ProtocolStates.LOGIN) { + connection.state = PlayConnectionStates.ERROR + } else { + connection.state = PlayConnectionStates.KICKED + } Log.log(LogMessageType.NETWORK, LogLevels.WARN) { "Kicked from ${connection.address}: $reason" } } override fun log(reducedLog: Boolean) { - Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Kick (reason=$reason)" } + Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Login kick (reason=$reason)" } } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/interfaces/CompressionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/interfaces/CompressionS2CP.kt deleted file mode 100644 index df439004d..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/interfaces/CompressionS2CP.kt +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ -package de.bixilon.minosoft.protocol.packets.s2c.interfaces - -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket - -interface CompressionS2CP : PlayS2CPacket { - val threshold: Int - - override fun handle(connection: PlayConnection) { - connection.network.compressionThreshold = threshold - } -} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/ChannelS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/ChannelS2CP.kt index 389a85eb1..15ccefe63 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/ChannelS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/ChannelS2CP.kt @@ -13,15 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.login import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(state = ProtocolStates.LOGIN, threadSafe = false) class ChannelS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val messageId = buffer.readVarInt() val channel = buffer.readResourceLocation() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/EncryptionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/EncryptionS2CP.kt index 7690a8439..95cc59860 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/EncryptionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/EncryptionS2CP.kt @@ -14,13 +14,9 @@ package de.bixilon.minosoft.protocol.packets.s2c.login import com.google.common.primitives.Longs import de.bixilon.kutil.base64.Base64Util.toBase64 -import de.bixilon.minosoft.protocol.PacketErrorHandler -import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.login.EncryptionC2SP -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.protocol.protocol.encryption.CryptManager import de.bixilon.minosoft.protocol.protocol.encryption.EncryptionSignatureData @@ -31,7 +27,6 @@ import java.math.BigInteger import java.security.SecureRandom import javax.crypto.Cipher -@LoadPacket(state = ProtocolStates.LOGIN, threadSafe = false) class EncryptionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val serverId: String = buffer.readString() val publicKey: ByteArray = buffer.readByteArray() @@ -72,11 +67,4 @@ class EncryptionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun log(reducedLog: Boolean) { Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Encryption request (serverId=$serverId, publicKey=${publicKey.toBase64()}, nonce=${nonce.toBase64()})" } } - - companion object : PacketErrorHandler { - override fun onError(error: Throwable, connection: Connection) { - connection.error = error - connection.network.disconnect() - } - } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/KickS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/KickS2CP.kt deleted file mode 100644 index 8247094af..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/KickS2CP.kt +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ -package de.bixilon.minosoft.protocol.packets.s2c.login - -import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.modding.event.events.LoginKickEvent -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates -import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -import de.bixilon.minosoft.util.logging.Log -import de.bixilon.minosoft.util.logging.LogLevels -import de.bixilon.minosoft.util.logging.LogMessageType - -@LoadPacket(state = ProtocolStates.LOGIN, threadSafe = false) -class KickS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { - val reason: ChatComponent = buffer.readChatComponent() - - override fun handle(connection: PlayConnection) { - connection.events.fire(LoginKickEvent(connection, this)) - Log.log(LogMessageType.NETWORK, level = LogLevels.WARN) { "Kicked from ${connection.address}: $reason" } - connection.network.disconnect() - connection.state = PlayConnectionStates.ERROR - } - - override fun log(reducedLog: Boolean) { - Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Login kick (reason=$reason)" } - } -} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt index 35a214f2e..3c4d4b78f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt @@ -16,7 +16,6 @@ import de.bixilon.kutil.primitive.BooleanUtil.decide import de.bixilon.minosoft.data.entities.entities.player.properties.PlayerProperties import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.ProtocolVersions @@ -26,7 +25,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(state = ProtocolStates.LOGIN, threadSafe = false) class SuccessS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val uuid: UUID = (buffer.versionId < ProtocolVersions.V_20W12A).decide({ buffer.readUUIDString() }, { buffer.readUUID() }) val name: String = buffer.readString() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/BundleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/BundleS2CP.kt index c2db21bf8..b9221e669 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/BundleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/BundleS2CP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class BundleS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChannelS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChannelS2CP.kt index d8da46177..8a012cd3c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChannelS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChannelS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ChannelS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val channel: ResourceLocation = buffer.readResourceLocation() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompressionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompressionS2CP.kt deleted file mode 100644 index 74720a202..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompressionS2CP.kt +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ -package de.bixilon.minosoft.protocol.packets.s2c.play - -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.s2c.interfaces.CompressionS2CP -import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -import de.bixilon.minosoft.util.logging.Log -import de.bixilon.minosoft.util.logging.LogLevels -import de.bixilon.minosoft.util.logging.LogMessageType - -@LoadPacket(threadSafe = false) -class CompressionS2CP(buffer: PlayInByteBuffer) : CompressionS2CP { - override val threshold: Int = buffer.readVarInt() - - override fun log(reducedLog: Boolean) { - Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Compression set (threshold=$threshold)" } - } -} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/FeaturesS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/FeaturesS2CP.kt index 1dd7e7b41..764a7abaf 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/FeaturesS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/FeaturesS2CP.kt @@ -12,14 +12,12 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class FeaturesS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val features = buffer.readArray { buffer.readResourceLocation() }.toSet() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/GameEventS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/GameEventS2CP.kt index 5ce03380f..398ab7bf5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/GameEventS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/GameEventS2CP.kt @@ -15,14 +15,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.data.registries.misc.event.game.DefaultGameEventHandlers import de.bixilon.minosoft.modding.event.events.GameEventChangeEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class GameEventS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val event = buffer.connection.registries.gameEvent[buffer.readUnsignedByte()] val data: Float = buffer.readFloat() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HeartbeatS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HeartbeatS2CP.kt index d9815da16..b7d489443 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HeartbeatS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HeartbeatS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.play.HeartbeatC2SP -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class HeartbeatS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { var id: Long = when { buffer.versionId < ProtocolVersions.V_14W31A -> { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt index 08721a92f..af2e703ff 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt @@ -24,12 +24,9 @@ import de.bixilon.minosoft.data.world.biome.accessor.NoiseBiomeAccessor import de.bixilon.minosoft.data.world.difficulty.Difficulties import de.bixilon.minosoft.modding.event.events.DimensionChangeEvent import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent -import de.bixilon.minosoft.protocol.PacketErrorHandler -import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates import de.bixilon.minosoft.protocol.network.connection.play.channel.vanila.BrandHandler.sendBrand -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_20W27A @@ -38,7 +35,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class InitializeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int val isHardcore: Boolean @@ -188,6 +184,7 @@ class InitializeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Initialize (entityId=$entityId, gamemode=$gamemode, dimension=$dimension, difficulty=$difficulty, hardcore=$isHardcore, viewDistance=$viewDistance)" } } + /* companion object : PacketErrorHandler { override fun onError(error: Throwable, connection: Connection) { @@ -195,4 +192,6 @@ class InitializeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { connection.network.disconnect() } } + + */ } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/NbtResponseS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/NbtResponseS2CP.kt index 37be77471..c8e8121d5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/NbtResponseS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/NbtResponseS2CP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.kutil.json.JsonUtil.asJsonObject -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class NbtResponseS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val transactionId: Int = buffer.readVarInt() val nbt: Map = buffer.readNBT().asJsonObject() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PingS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PingS2CP.kt index f7a1ca1ba..78afc6472 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PingS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PingS2CP.kt @@ -15,14 +15,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.play.PongC2SP -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class PingS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val payload = buffer.readInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayStatusS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayStatusS2CP.kt index a862ae245..de7bc2ae9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayStatusS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayStatusS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.kutil.image.ImageEncodingUtil.toFavicon -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -21,7 +20,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class PlayStatusS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val motd = if (buffer.versionId >= ProtocolVersions.V_23W07A) buffer.readChatComponent() else buffer.readOptional { buffer.readChatComponent() } val favicon = if (buffer.versionId >= ProtocolVersions.V_23W07A) buffer.readOptional { buffer.readByteArray() } else buffer.readOptional { buffer.readString().toFavicon() } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ResourcepackS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ResourcepackS2CP.kt index f00646511..16b23c486 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ResourcepackS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ResourcepackS2CP.kt @@ -18,7 +18,6 @@ import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.modding.event.events.ResourcePackRequestEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.play.ResourcepackC2SP -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -26,7 +25,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ResourcepackS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val url: String = buffer.readString().apply { toURL().checkWeb() } val hash: String = buffer.readString() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt index c4358616f..94f272551 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt @@ -22,7 +22,6 @@ import de.bixilon.minosoft.data.world.difficulty.Difficulties import de.bixilon.minosoft.modding.event.events.DimensionChangeEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -30,7 +29,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { var dimension: DimensionProperties private set diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/StatisticsS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/StatisticsS2CP.kt index b442ddb73..92f522264 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/StatisticsS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/StatisticsS2CP.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.data.registries.statistics.Statistic import de.bixilon.minosoft.data.registries.statistics.StatisticUnits -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_17W47A import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class StatisticsS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val statistics: Map> diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TagsS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TagsS2CP.kt index bb48f7f71..914dccb30 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TagsS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TagsS2CP.kt @@ -21,7 +21,6 @@ import de.bixilon.minosoft.data.registries.item.items.Item import de.bixilon.minosoft.data.registries.registries.registry.Registry import de.bixilon.minosoft.data.registries.registries.registry.RegistryItem import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -38,7 +37,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet -@LoadPacket class TagsS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val tags: TagManager diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/advancement/AdvancementTabS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/advancement/AdvancementTabS2CP.kt index 207542166..fd8709e55 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/advancement/AdvancementTabS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/advancement/AdvancementTabS2CP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.advancement -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class AdvancementTabS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val tab = buffer.readOptional { buffer.readResourceLocation() } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/advancement/AdvancementsS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/advancement/AdvancementsS2CP.kt index c56d813f1..3da244214 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/advancement/AdvancementsS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/advancement/AdvancementsS2CP.kt @@ -19,7 +19,6 @@ import de.bixilon.minosoft.advancements.AdvancementDisplay import de.bixilon.minosoft.advancements.AdvancementFrames import de.bixilon.minosoft.advancements.AdvancementProgress import de.bixilon.minosoft.data.registries.identified.ResourceLocation -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_23W18A import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -27,7 +26,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class AdvancementsS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val reset = buffer.readBoolean() val advancements: Map diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockActionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockActionS2CP.kt index 8f75b2f6a..ca7952f3a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockActionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockActionS2CP.kt @@ -16,7 +16,6 @@ import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.data.entities.block.BlockActionEntity import de.bixilon.minosoft.data.registries.blocks.types.Block import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -24,7 +23,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class BlockActionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position: Vec3i = if (buffer.versionId < ProtocolVersions.V_14W03B) { buffer.readShortBlockPosition() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakAnimationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakAnimationS2CP.kt index 4915a2041..b458efc08 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakAnimationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakAnimationS2CP.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.block import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.modding.event.events.BlockBreakAnimationEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class BlockBreakAnimationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { /** * Entity id of the entity who is breaking the block diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakS2CP.kt index 5e4b1faf0..1f8ef8aa4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakS2CP.kt @@ -12,14 +12,12 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play.block -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class BlockBreakS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val sequence = buffer.readVarInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockDataS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockDataS2CP.kt index 2204258c6..3e1b9684c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockDataS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockDataS2CP.kt @@ -19,7 +19,6 @@ import de.bixilon.minosoft.data.world.chunk.update.block.SingleBlockDataUpdate import de.bixilon.minosoft.data.world.positions.ChunkPositionUtil.chunkPosition import de.bixilon.minosoft.data.world.positions.ChunkPositionUtil.inChunkPosition import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_21W37A @@ -28,7 +27,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class BlockDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position: Vec3i = if (buffer.versionId < ProtocolVersions.V_14W03B) { buffer.readShortBlockPosition() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockS2CP.kt index 6acabf79d..9128d629e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockS2CP.kt @@ -17,7 +17,6 @@ import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.minosoft.data.registries.blocks.state.BlockState import de.bixilon.minosoft.input.interaction.breaking.executor.SequencedExecutor import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -25,7 +24,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class BlockS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position: Vec3i val state: BlockState? diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlocksS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlocksS2CP.kt index 5c3c4af35..ecf1ff354 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlocksS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlocksS2CP.kt @@ -19,7 +19,6 @@ import de.bixilon.kutil.array.ArrayUtil.cast import de.bixilon.minosoft.data.world.chunk.update.block.ChunkLocalBlockUpdate import de.bixilon.minosoft.data.world.positions.ChunkPosition import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.protocol.protocol.ProtocolVersions @@ -28,7 +27,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class BlocksS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val chunkPosition: ChunkPosition val update: Array diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/LegacyBlockBreakS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/LegacyBlockBreakS2CP.kt index d252125a0..417b7bcc3 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/LegacyBlockBreakS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/LegacyBlockBreakS2CP.kt @@ -16,15 +16,13 @@ import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.data.registries.blocks.state.BlockState import de.bixilon.minosoft.input.interaction.breaking.executor.LegacyExecutor import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP.Actions -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.PlayerActionC2SP.Actions import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class LegacyBlockBreakS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position: Vec3i = buffer.readBlockPosition() val state: BlockState? = buffer.connection.registries.blockState.getOrNull(buffer.readVarInt()) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkAction.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkAction.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkAction.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkAction.kt index 262854423..d69316de4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkAction.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkAction.kt @@ -11,7 +11,7 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play.chunk +package de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk enum class ChunkAction { UPDATE, diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkBiomeS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkBiomeS2CP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkBiomeS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkBiomeS2CP.kt index 14503251a..cb590143f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkBiomeS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkBiomeS2CP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play.chunk +package de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk import de.bixilon.kotlinglm.vec2.Vec2i -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ChunkBiomeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val data = buffer.readArray { ChunkBiomeData(buffer.readLongChunkPosition(), buffer.readByteArray()) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkCenterS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkCenterS2CP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkCenterS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkCenterS2CP.kt index 622ac0016..18244e87d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkCenterS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkCenterS2CP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play.chunk +package de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk import de.bixilon.minosoft.data.world.positions.ChunkPosition -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ChunkCenterS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { private val position = ChunkPosition(buffer.readVarInt(), buffer.readVarInt()) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkLightS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkLightS2CP.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkLightS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkLightS2CP.kt index b77307892..d734ac900 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkLightS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkLightS2CP.kt @@ -10,16 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play.chunk +package de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.minosoft.config.StaticConfiguration import de.bixilon.minosoft.data.world.chunk.chunk.ChunkPrototype -import de.bixilon.minosoft.protocol.PacketSkipper import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket +import de.bixilon.minosoft.protocol.packets.registry.PacketExtraHandler import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -28,9 +27,7 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(lowPriority = true) -// @JvmOverloads for reflection by packet registry -class ChunkLightS2CP @JvmOverloads constructor( +class ChunkLightS2CP( buffer: PlayInByteBuffer, val position: Vec2i = Vec2i(buffer.readVarInt(), buffer.readVarInt()), ) : PlayS2CPacket { @@ -62,10 +59,8 @@ class ChunkLightS2CP @JvmOverloads constructor( connection.world.chunks[position] = this.prototype } - companion object : PacketSkipper { + companion object : PacketExtraHandler { - override fun canSkip(connection: Connection): Boolean { - return StaticConfiguration.IGNORE_SERVER_LIGHT - } + override fun skip(connection: Connection) = StaticConfiguration.IGNORE_SERVER_LIGHT } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkS2CP.kt similarity index 98% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkS2CP.kt index e7b07297f..a3f812779 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunkS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunkS2CP.kt @@ -10,7 +10,7 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play.chunk +package de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.kotlinglm.vec3.Vec3i @@ -29,7 +29,6 @@ import de.bixilon.minosoft.datafixer.rls.BlockEntityFixer.fix import de.bixilon.minosoft.gui.rendering.util.VecUtil.of import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.protocol.protocol.ProtocolVersions @@ -52,7 +51,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(lowPriority = true) class ChunkS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position: Vec2i val prototype: ChunkPrototype = ChunkPrototype() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunksS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunksS2CP.kt similarity index 96% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunksS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunksS2CP.kt index a98adbaac..9ef0d7ccc 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ChunksS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ChunksS2CP.kt @@ -10,13 +10,12 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play.chunk +package de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.kutil.compression.zlib.ZlibUtil.decompress import de.bixilon.minosoft.data.world.chunk.chunk.ChunkPrototype import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -26,7 +25,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(lowPriority = true) class ChunksS2CP : PlayS2CPacket { val chunks: MutableMap = mutableMapOf() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/SimulationDistanceS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/SimulationDistanceS2CP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/SimulationDistanceS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/SimulationDistanceS2CP.kt index 28e075e83..49e4115fa 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/SimulationDistanceS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/SimulationDistanceS2CP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class SimulationDistanceS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val simulationDistance: Int = buffer.readVarInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/UnloadChunkS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/UnloadChunkS2CP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/UnloadChunkS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/UnloadChunkS2CP.kt index 4a39aec81..22e98c080 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/UnloadChunkS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/UnloadChunkS2CP.kt @@ -10,18 +10,16 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play.chunk +package de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk import de.bixilon.minosoft.data.world.positions.ChunkPosition import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class UnloadChunkS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position: ChunkPosition = buffer.readChunkPosition() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ViewDistanceS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ViewDistanceS2CP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ViewDistanceS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ViewDistanceS2CP.kt index 9058bf6b5..bda215ca0 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chunk/ViewDistanceS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/chunk/ViewDistanceS2CP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play.chunk +package de.bixilon.minosoft.protocol.packets.s2c.play.block.chunk import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ViewDistanceS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val viewDistance: Int = buffer.readVarInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/CenterWorldBorderS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/CenterWorldBorderS2CP.kt index 446a7f885..2e6b1d3fe 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/CenterWorldBorderS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/CenterWorldBorderS2CP.kt @@ -14,13 +14,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.border import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class CenterWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP { val center = buffer.readVec2d() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/InitializeWorldBorderS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/InitializeWorldBorderS2CP.kt index d5dc7d5e3..cf8e9740a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/InitializeWorldBorderS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/InitializeWorldBorderS2CP.kt @@ -14,13 +14,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.border import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class InitializeWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP { val center = buffer.readVec2d() val oldRadius = buffer.readDouble() / 2.0 diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/InterpolateWorldBorderS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/InterpolateWorldBorderS2CP.kt index 4fae6aa21..940d414ab 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/InterpolateWorldBorderS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/InterpolateWorldBorderS2CP.kt @@ -14,13 +14,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.border import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class InterpolateWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP { val oldRadius = buffer.readDouble() / 2.0 val newRadius = buffer.readDouble() / 2.0 diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/SizeWorldBorderS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/SizeWorldBorderS2CP.kt index 97f27c065..fb54aa7b2 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/SizeWorldBorderS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/SizeWorldBorderS2CP.kt @@ -15,13 +15,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.border import de.bixilon.minosoft.data.world.border.area.StaticBorderArea import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class SizeWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP { val radius = buffer.readDouble() / 2.0 diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WarnBlocksWorldBorderS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WarnBlocksWorldBorderS2CP.kt index 57805d275..3662f5be9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WarnBlocksWorldBorderS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WarnBlocksWorldBorderS2CP.kt @@ -14,13 +14,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.border import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class WarnBlocksWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP { val warningBlocks = buffer.readVarInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WarnTimeWorldBorderS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WarnTimeWorldBorderS2CP.kt index 0dd82640d..668c94798 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WarnTimeWorldBorderS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WarnTimeWorldBorderS2CP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.border import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class WarnTimeWorldBorderS2CP(buffer: PlayInByteBuffer) : WorldBorderS2CP { val warningTime = buffer.readVarInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WorldBorderS2CF.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WorldBorderS2CF.kt index 28fe08cce..d3dd4db1b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WorldBorderS2CF.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/border/WorldBorderS2CF.kt @@ -15,18 +15,14 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.border import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.packets.factory.factories.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -@LoadPacket object WorldBorderS2CF : PlayPacketFactory { - override val direction = PacketDirection.SERVER_TO_CLIENT // this function was signed by Maximilian Rosenmüller // and that means A LOT! - override fun createPacket(buffer: PlayInByteBuffer): WorldBorderS2CP { + override fun create(buffer: PlayInByteBuffer): WorldBorderS2CP { return when (WorldBorderActions[buffer.readVarInt()]) { WorldBorderActions.SET_SIZE -> SizeWorldBorderS2CP(buffer) WorldBorderActions.INTERPOLATE_SIZE -> InterpolateWorldBorderS2CP(buffer) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/BossbarS2CF.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/BossbarS2CF.kt index c1e74c299..604ed60a4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/BossbarS2CF.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/BossbarS2CF.kt @@ -15,16 +15,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.bossbar import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.packets.factory.factories.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -@LoadPacket(threadSafe = false) object BossbarS2CF : PlayPacketFactory { - override val direction = PacketDirection.SERVER_TO_CLIENT - override fun createPacket(buffer: PlayInByteBuffer): BossbarS2CP { + override fun create(buffer: PlayInByteBuffer): BossbarS2CP { val uuid = buffer.readUUID() return when (BossbarActions[buffer.readVarInt()]) { BossbarActions.ADD -> AddBossbarS2CP(uuid, buffer) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatMessageS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatMessageS2CP.kt index d8e0f7fb4..bdc2fe69a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatMessageS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatMessageS2CP.kt @@ -21,7 +21,6 @@ import de.bixilon.minosoft.data.registries.chat.ChatMessageType import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.modding.event.events.chat.ChatMessageEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.protocol.protocol.ProtocolVersions @@ -32,7 +31,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(threadSafe = false) class ChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val text: ChatComponent = buffer.readChatComponent() var type: ChatMessageType = buffer.connection.registries.messageType[DefaultMessageTypes.CHAT]!! diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChatPreviewS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatPreviewS2CP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChatPreviewS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatPreviewS2CP.kt index 5b14f7d9d..0b087a20a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ChatPreviewS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatPreviewS2CP.kt @@ -10,16 +10,14 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.chat -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ChatPreviewS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val id = buffer.readInt() val preview = buffer.readOptional { buffer.readChatComponent() } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatSuggestionsS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatSuggestionsS2CP.kt index 5fb01700c..95287921e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatSuggestionsS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatSuggestionsS2CP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.chat import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ChatSuggestionsS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val action = Actions[buffer.readVarInt()] val matches = buffer.readArray { buffer.readString() } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/CommandSuggestionsS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/CommandSuggestionsS2CP.kt index ef5ec8a59..b61f9a1b5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/CommandSuggestionsS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/CommandSuggestionsS2CP.kt @@ -12,7 +12,6 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play.chat -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -20,7 +19,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class CommandSuggestionsS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { var matches: Array = when { buffer.versionId < ProtocolVersions.V_14W33A -> { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CommandsS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/CommandsS2CP.kt similarity index 96% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CommandsS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/CommandsS2CP.kt index 6ed49357d..44292c0e7 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CommandsS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/CommandsS2CP.kt @@ -10,7 +10,7 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.chat import de.bixilon.kutil.bit.BitByte.isBitMask import de.bixilon.kutil.cast.CastUtil.nullCast @@ -25,7 +25,6 @@ import de.bixilon.minosoft.commands.parser.factory.ArgumentParserFactories import de.bixilon.minosoft.commands.parser.minosoft.dummy.DummyParser import de.bixilon.minosoft.commands.suggestion.factory.SuggestionFactories import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -33,7 +32,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = true) class CommandsS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val nodes = buffer.readArray { buffer.readCommandNode() }.build() val rootNode = nodes[buffer.readVarInt()].nullCast() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/HideMessageS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/HideMessageS2CP.kt index 732a0c10d..de673ad02 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/HideMessageS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/HideMessageS2CP.kt @@ -12,7 +12,6 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play.chat -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -20,7 +19,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class HideMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val id = if (buffer.versionId >= ProtocolVersions.V_22W42A) buffer.readVarInt() - 1 else -1 val signature = if (buffer.versionId < ProtocolVersions.V_22W42A || id >= 0) buffer.readSignatureData() else null diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/MessageHeaderS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/MessageHeaderS2CP.kt index 691a064d1..41e261002 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/MessageHeaderS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/MessageHeaderS2CP.kt @@ -12,14 +12,12 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play.chat -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class MessageHeaderS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val header = buffer.readMessageHeader() val signature = buffer.readByteArray() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/SignedChatMessageS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/SignedChatMessageS2CP.kt index d0eb24e3d..71649fc9e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/SignedChatMessageS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/SignedChatMessageS2CP.kt @@ -24,7 +24,6 @@ import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.data.text.TextComponent import de.bixilon.minosoft.modding.event.events.chat.ChatMessageEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ChatMessageSender import de.bixilon.minosoft.protocol.protocol.ProtocolVersions @@ -35,7 +34,6 @@ import de.bixilon.minosoft.util.logging.LogMessageType import java.time.Instant import java.util.* -@LoadPacket(threadSafe = false) class SignedChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val message = buffer.readSignedMessage() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TemporaryChatPreview.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/TemporaryChatPreviewS2CP.kt similarity index 86% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TemporaryChatPreview.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/TemporaryChatPreviewS2CP.kt index b2dc66964..7b27f12ef 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TemporaryChatPreview.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/TemporaryChatPreviewS2CP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.chat -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket -class TemporaryChatPreview(buffer: PlayInByteBuffer) : PlayS2CPacket { +class TemporaryChatPreviewS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val enabled = buffer.readBoolean() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/UnsignedChatMessageS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/UnsignedChatMessageS2CP.kt index 38b0bf373..6ec2d2c1c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/UnsignedChatMessageS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/UnsignedChatMessageS2CP.kt @@ -17,14 +17,12 @@ import de.bixilon.minosoft.data.registries.chat.ChatParameter import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.modding.event.events.chat.ChatMessageEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class UnsignedChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val text: ChatComponent = buffer.readChatComponent() val type = buffer.readRegistryItem(buffer.connection.registries.messageType) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/CombatEventS2CF.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/CombatEventS2CF.kt index 01291efc3..f0dadb4e6 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/CombatEventS2CF.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/CombatEventS2CF.kt @@ -15,16 +15,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.combat import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.packets.factory.factories.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -@LoadPacket object CombatEventS2CF : PlayPacketFactory { - override val direction = PacketDirection.SERVER_TO_CLIENT - override fun createPacket(buffer: PlayInByteBuffer): CombatEventS2CP { + override fun create(buffer: PlayInByteBuffer): CombatEventS2CP { return when (CombatEvents[buffer.readVarInt()]) { CombatEvents.ENTER_COMBAT -> EnterCombatEventS2CP(buffer) CombatEvents.END_COMBAT -> EndCombatEventS2CP(buffer) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/EndCombatEventS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/EndCombatEventS2CP.kt index b8ded1dd1..d1c88f294 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/EndCombatEventS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/EndCombatEventS2CP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.combat -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_20_PRE3 import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class EndCombatEventS2CP(buffer: PlayInByteBuffer) : CombatEventS2CP { val duration = buffer.readVarInt() val entityId = if (buffer.versionId >= V_1_20_PRE3) -1 else buffer.readInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/EnterCombatEventS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/EnterCombatEventS2CP.kt index 526eccb54..bf6737ae0 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/EnterCombatEventS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/EnterCombatEventS2CP.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.combat -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class EnterCombatEventS2CP(buffer: PlayInByteBuffer) : CombatEventS2CP { override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/KillCombatEventS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/KillCombatEventS2CP.kt index cea0c697a..fc8d0b65b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/KillCombatEventS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/combat/KillCombatEventS2CP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.combat -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_20_PRE3 import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true) class KillCombatEventS2CP(buffer: PlayInByteBuffer) : CombatEventS2CP { val deadEntityId = buffer.readVarInt() val killerEntityId = if (buffer.versionId >= V_1_20_PRE3) -1 else buffer.readInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/CloseContainerS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/CloseContainerS2CP.kt index f21f7d063..7c51e2a02 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/CloseContainerS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/CloseContainerS2CP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.container import de.bixilon.minosoft.data.container.types.PlayerInventory import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class CloseContainerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val containerId: Int = buffer.readUnsignedByte() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerActionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerActionS2CP.kt index 543e8e265..f81000c27 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerActionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerActionS2CP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.container import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ContainerActionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val containerId = buffer.readUnsignedByte() val actionId = buffer.readUnsignedShort() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerItemS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerItemS2CP.kt index efef5c104..d14ddd9cf 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerItemS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerItemS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.container import de.bixilon.minosoft.data.container.IncompleteContainer import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_17_1_PRE1 import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ContainerItemS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val containerId = buffer.readUnsignedByte() val revision: Int = if (buffer.versionId >= V_1_17_1_PRE1) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerItemsS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerItemsS2CP.kt index 4e61e08b9..234b96db2 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerItemsS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerItemsS2CP.kt @@ -16,7 +16,6 @@ import de.bixilon.minosoft.data.container.Container import de.bixilon.minosoft.data.container.IncompleteContainer import de.bixilon.minosoft.data.container.stack.ItemStack import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_17_1_PRE1 import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -25,7 +24,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket class ContainerItemsS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val containerId = buffer.readUnsignedByte() val revision: Int = if (buffer.versionId >= V_1_17_1_PRE1) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerPropertiesS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerPropertiesS2CP.kt index 3721b8e82..3089b54e5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerPropertiesS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/ContainerPropertiesS2CP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.container import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class ContainerPropertiesS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val containerId = buffer.readUnsignedByte() val property = buffer.readUnsignedShort() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenContainerS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenContainerS2CP.kt index 9eef37959..309a3c9a9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenContainerS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenContainerS2CP.kt @@ -18,7 +18,6 @@ import de.bixilon.minosoft.data.registries.containers.ContainerType import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.modding.event.events.container.ContainerOpenEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_14W03B import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_19W11A @@ -28,7 +27,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class OpenContainerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val containerId = if (buffer.versionId <= V_1_14) { // ToDo: This is completely guessed, it has changed between 1.13 and 1.14, same as #L38 buffer.readUnsignedByte() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/OpenHorseContainerS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenEntityContainerS2CP.kt similarity index 84% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/OpenHorseContainerS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenEntityContainerS2CP.kt index 981f7f989..e1875e8d9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/OpenHorseContainerS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenEntityContainerS2CP.kt @@ -10,18 +10,16 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.container import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket -class OpenHorseContainerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { +class OpenEntityContainerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val containerId = buffer.readUnsignedByte() val slotCount: Int = buffer.readVarInt() val entityId: Int = buffer.readInt() @@ -34,6 +32,6 @@ class OpenHorseContainerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } override fun log(reducedLog: Boolean) { - Log.log(LogMessageType.NETWORK_IN, LogLevels.VERBOSE) { "Open horse container (containerId=$containerId, slotCount=$slotCount, entityId=$entityId)" } + Log.log(LogMessageType.NETWORK_IN, LogLevels.VERBOSE) { "Open entity container (containerId=$containerId, slotCount=$slotCount, entityId=$entityId)" } } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DamageTiltS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/DamageTiltS2CP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DamageTiltS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/DamageTiltS2CP.kt index e4c2bd592..60d4a488d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DamageTiltS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/DamageTiltS2CP.kt @@ -11,19 +11,17 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.entity import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.minosoft.gui.rendering.entity.models.DamageableModel import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class DamageTiltS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readVarInt() val yaw = buffer.readFloat() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityAnimationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityAnimationS2CP.kt index f150a02dd..4367131a7 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityAnimationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityAnimationS2CP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity import de.bixilon.minosoft.data.entities.EntityAnimations import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class EntityAnimationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readVarInt() val animation: EntityAnimations = buffer.readEnum(buffer.connection.registries.entityAnimation)!! diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityAttributesS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityAttributesS2CP.kt index 1e83d26e5..45c36c009 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityAttributesS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityAttributesS2CP.kt @@ -21,7 +21,6 @@ import de.bixilon.minosoft.data.registries.effects.attributes.container.Attribut import de.bixilon.minosoft.data.registries.effects.attributes.container.AttributeModifier import de.bixilon.minosoft.datafixer.rls.EntityAttributeFixer.fix import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_14W04A import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_21W08A @@ -31,7 +30,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(threadSafe = false) class EntityAttributesS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val attributes: Map diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityCollectS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityCollectS2CP.kt index 4b6c46de9..c21b4c2d9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityCollectS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityCollectS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity import de.bixilon.minosoft.modding.event.events.CollectItemAnimationEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class EntityCollectS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val itemEntityId: Int = buffer.readEntityId() var collectorEntityId: Int = if (buffer.versionId < ProtocolVersions.V_14W04A) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDamageS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDamageS2CP.kt index b3dd61cf5..3bad80bc2 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDamageS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDamageS2CP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity import de.bixilon.minosoft.data.registries.entities.damage.DamageType -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class EntityDamageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readVarInt() val type: DamageType = buffer.readRegistryItem(buffer.connection.registries.damageType) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDataS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDataS2CP.kt index 9e1641947..ebb6c3a20 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDataS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDataS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log @@ -21,7 +20,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap -@LoadPacket(threadSafe = false) class EntityDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId = buffer.readEntityId() val data: Int2ObjectOpenHashMap = buffer.readEntityData() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEquipmentS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEquipmentS2CP.kt index 5c64ee27a..a75e3a712 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEquipmentS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEquipmentS2CP.kt @@ -17,7 +17,6 @@ import de.bixilon.minosoft.data.container.equipment.EquipmentSlots import de.bixilon.minosoft.data.container.stack.ItemStack import de.bixilon.minosoft.data.entities.entities.LivingEntity import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -25,7 +24,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class EntityEquipmentS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val equipment: Map diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityStatusS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEventS2CP.kt similarity index 89% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityStatusS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEventS2CP.kt index d69584e7f..bc7a05c26 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityStatusS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEventS2CP.kt @@ -17,16 +17,13 @@ import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.entities.event.EntityEvent import de.bixilon.minosoft.data.entities.event.EntityEvents import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket -@Deprecated("Will be renamed to EntityEventS2CP") -class EntityStatusS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { +class EntityEventS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { private val entityId: Int = buffer.readInt() private val eventId: Int = buffer.readUnsignedByte() @@ -41,6 +38,6 @@ class EntityStatusS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } override fun log(reducedLog: Boolean) { - Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Entity status (entityId=$entityId, event=$eventId)" } + Log.log(LogMessageType.NETWORK_IN, level = LogLevels.VERBOSE) { "Entity event (entityId=$entityId, event=$eventId)" } } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntitySleepS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntitySleepS2CP.kt index a09a763ca..59ea19a01 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntitySleepS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntitySleepS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity import de.bixilon.kotlinglm.vec3.Vec3i -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -21,7 +20,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class EntitySleepS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readInt() val blockPosition: Vec3i = if (buffer.versionId < ProtocolVersions.V_14W04A) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/effect/EntityEffectS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/effect/EntityEffectS2CP.kt index e5b04044c..a895bdf8b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/effect/EntityEffectS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/effect/EntityEffectS2CP.kt @@ -19,7 +19,6 @@ import de.bixilon.kutil.json.JsonUtil.toJsonObject import de.bixilon.minosoft.data.entities.StatusEffectInstance import de.bixilon.minosoft.data.entities.entities.LivingEntity import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_14W04A @@ -32,7 +31,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class EntityEffectS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() var effect: StatusEffectInstance = buffer.readStatusEffectInstance() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/effect/EntityRemoveEffectS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/effect/EntityRemoveEffectS2CP.kt index f4916869a..2d63af48f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/effect/EntityRemoveEffectS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/effect/EntityRemoveEffectS2CP.kt @@ -16,7 +16,6 @@ import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.minosoft.data.entities.entities.LivingEntity import de.bixilon.minosoft.data.registries.effects.StatusEffectType import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -24,7 +23,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class EntityRemoveEffectS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val effect: StatusEffectType = buffer.connection.registries.statusEffect[if (buffer.versionId >= ProtocolVersions.V_1_18_2_PRE1) buffer.readVarInt() else buffer.readUnsignedByte()] diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/EmptyMoveS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/EmptyMoveS2CP.kt index a08cbba53..2ddf63abf 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/EmptyMoveS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/EmptyMoveS2CP.kt @@ -12,14 +12,12 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.move -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class EmptyMoveS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/HeadRotationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/HeadRotationS2CP.kt index 8a4955e6f..873ef0dd4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/HeadRotationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/HeadRotationS2CP.kt @@ -13,14 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.move import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class HeadRotationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val headYaw: Float = buffer.readAngle() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MoveVehicleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/MoveVehicleS2CP.kt similarity index 89% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MoveVehicleS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/MoveVehicleS2CP.kt index ff467d564..bde7d34e2 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/MoveVehicleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/MoveVehicleS2CP.kt @@ -10,20 +10,18 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.entity.move import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.c2s.play.move.vehicle.MoveVehicleC2SP -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.vehicle.MoveVehicleC2SP import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class MoveVehicleS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position: Vec3d = buffer.readVec3d() val yaw: Float = buffer.readFloat() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/MovementRotationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/MovementRotationS2CP.kt index d2d73292d..cf8955d83 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/MovementRotationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/MovementRotationS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.move import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class MovementRotationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() var delta: Vec3d = buffer.readPositionDelta() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerFaceS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/PlayerFaceS2CP.kt similarity index 94% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerFaceS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/PlayerFaceS2CP.kt index 9c23c5e6f..6e8c21f5e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerFaceS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/PlayerFaceS2CP.kt @@ -10,19 +10,17 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.entity.move import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class PlayerFaceS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val face: PlayerFaces = PlayerFaces[buffer.readVarInt()] val position: Vec3d = buffer.readVec3d() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/PositionRotationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/PositionRotationS2CP.kt index 8c17ea4d1..83ceba591 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/PositionRotationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/PositionRotationS2CP.kt @@ -17,9 +17,8 @@ import de.bixilon.kutil.bit.BitByte.isBitMask import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates -import de.bixilon.minosoft.protocol.packets.c2s.play.move.ConfirmTeleportC2SP -import de.bixilon.minosoft.protocol.packets.c2s.play.move.PositionRotationC2SP -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.ConfirmTeleportC2SP +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.move.PositionRotationC2SP import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -27,7 +26,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class PositionRotationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position: Vec3d = buffer.readVec3d() val rotation: EntityRotation diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/RelativeMoveS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/RelativeMoveS2CP.kt index e84d42aba..8da5aa322 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/RelativeMoveS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/RelativeMoveS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.move import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class RelativeMoveS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val delta: Vec3d = buffer.readPositionDelta() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/RotationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/RotationS2CP.kt index 20acd77ca..0bad75f18 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/RotationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/RotationS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.move import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -21,7 +20,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class RotationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val rotation = buffer.readEntityRotation() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/TeleportS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/TeleportS2CP.kt index ec174b4e6..ba9c19163 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/TeleportS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/TeleportS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.move import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class TeleportS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val position: Vec3d = if (buffer.versionId < ProtocolVersions.V_16W06A) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/VelocityS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/VelocityS2CP.kt index e6bb4d620..b1ce99985 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/VelocityS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/move/VelocityS2CP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.move import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class VelocityS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val velocity: Vec3d = buffer.readVelocity() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/passenger/EntityAttachS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/passenger/EntityAttachS2CP.kt index 299f87ee6..a43bcd0b2 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/passenger/EntityAttachS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/passenger/EntityAttachS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.passenger import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -21,7 +20,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class EntityAttachS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readInt() val vehicle: Int = buffer.readInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/passenger/EntityPassengerS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/passenger/EntityPassengerS2CP.kt index 388d79c39..75ed20d0c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/passenger/EntityPassengerS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/passenger/EntityPassengerS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.passenger import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.KUtil.entities @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import it.unimi.dsi.fastutil.ints.IntOpenHashSet -@LoadPacket(threadSafe = false) class EntityPassengerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val vehicle: Int = buffer.readVarInt() val passengers: IntOpenHashSet = IntOpenHashSet(buffer.readVarIntArray()) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CameraS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/CameraS2CP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CameraS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/CameraS2CP.kt index 91409005b..db6544185 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CameraS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/CameraS2CP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.entity.player import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class CameraS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readVarInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExperienceS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/ExperienceS2CP.kt similarity index 94% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExperienceS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/ExperienceS2CP.kt index 1aa6ddee5..702618ab3 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExperienceS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/ExperienceS2CP.kt @@ -10,11 +10,10 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.entity.player import de.bixilon.minosoft.data.entities.entities.player.local.ExperienceCondition import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ExperienceS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val bar = buffer.readFloat() val level: Int diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HealthS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/HealthS2CP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HealthS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/HealthS2CP.kt index 58dbef3dc..b902384bd 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HealthS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/HealthS2CP.kt @@ -10,14 +10,13 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.entity.player import de.bixilon.kotlinglm.func.common.clamp import de.bixilon.minosoft.data.entities.entities.player.local.HealthCondition import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates -import de.bixilon.minosoft.protocol.packets.c2s.play.ClientActionC2SP -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket +import de.bixilon.minosoft.protocol.packets.c2s.play.entity.player.ClientActionC2SP import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -25,7 +24,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class HealthS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val hp: Float = buffer.readFloat() val hunger = if (buffer.versionId < ProtocolVersions.V_14W04A) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/HotbarSlotS2CP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/HotbarSlotS2CP.kt index 93d956039..dfecf70d5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/HotbarSlotS2CP.kt @@ -10,18 +10,16 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.entity.player import de.bixilon.minosoft.data.container.types.PlayerInventory import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class HotbarSlotS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val slot: Int = buffer.readUnsignedByte() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerAbilitiesS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/PlayerAbilitiesS2CP.kt similarity index 95% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerAbilitiesS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/PlayerAbilitiesS2CP.kt index 0a12c04fc..67778f695 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PlayerAbilitiesS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/player/PlayerAbilitiesS2CP.kt @@ -10,12 +10,11 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.entity.player import de.bixilon.kutil.bit.BitByte.isBit import de.bixilon.minosoft.data.entities.entities.player.local.Abilities import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class PlayerAbilitiesS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val invulnerable: Boolean val flying: Boolean diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityDestroyS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityDestroyS2CP.kt index 2532e0ef2..7e67aa94a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityDestroyS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityDestroyS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.spawn import de.bixilon.minosoft.modding.event.events.EntityDestroyEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_17_1_RC1 @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class EntityDestroyS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityIds: IntArray = if (buffer.versionId < ProtocolVersions.V_21W17A || buffer.versionId >= V_1_17_1_RC1) { buffer.readEntityIdArray( diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityExperienceOrbS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityExperienceOrbS2CP.kt index 7ba1cb0d2..6af11123d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityExperienceOrbS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityExperienceOrbS2CP.kt @@ -16,7 +16,6 @@ import de.bixilon.minosoft.data.entities.data.EntityData import de.bixilon.minosoft.data.entities.entities.ExperienceOrb import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.KUtil.startInit @@ -24,7 +23,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class EntityExperienceOrbS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val entity: ExperienceOrb = ExperienceOrb( diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityMobSpawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityMobSpawnS2CP.kt index 32595c64b..6f2955a45 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityMobSpawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityMobSpawnS2CP.kt @@ -17,7 +17,6 @@ import de.bixilon.minosoft.data.entities.data.EntityData import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -28,7 +27,6 @@ import de.bixilon.minosoft.util.logging.LogMessageType import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap import java.util.* -@LoadPacket(threadSafe = false) class EntityMobSpawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() val entityUUID: UUID? = if (buffer.versionId >= ProtocolVersions.V_15W31A) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityObjectSpawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityObjectSpawnS2CP.kt index bb6757cbf..d2239d23d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityObjectSpawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityObjectSpawnS2CP.kt @@ -17,7 +17,6 @@ import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.registries.fallback.FallbackRegistries.ENTITY_OBJECT_REGISTRY import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -27,7 +26,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(threadSafe = false) class EntityObjectSpawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readEntityId() var entityUUID: UUID? = null diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPaintingS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPaintingS2CP.kt index a3ee9d0fb..a3df8d4c4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPaintingS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPaintingS2CP.kt @@ -19,7 +19,6 @@ import de.bixilon.minosoft.data.entities.entities.decoration.Painting import de.bixilon.minosoft.data.registries.Motif import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -29,7 +28,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(threadSafe = false) class EntityPaintingS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { private val entityId: Int = buffer.readVarInt() private var entityUUID: UUID? = if (buffer.versionId >= ProtocolVersions.V_16W02A) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityPlayerS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPlayerS2CP.kt similarity index 95% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityPlayerS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPlayerS2CP.kt index 792a28e0e..57a28430b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityPlayerS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPlayerS2CP.kt @@ -10,7 +10,7 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play.entity +package de.bixilon.minosoft.protocol.packets.s2c.play.entity.spawn import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.data.entities.data.EntityData @@ -20,7 +20,6 @@ import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditi import de.bixilon.minosoft.data.entities.entities.player.properties.PlayerProperties import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -31,7 +30,6 @@ import de.bixilon.minosoft.util.logging.LogMessageType import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap import java.util.* -@LoadPacket(threadSafe = false) class EntityPlayerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int val entityUUID: UUID diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/GlobalEntitySpawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/GlobalEntitySpawnS2CP.kt index 784812e0e..fbe4f9a82 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/GlobalEntitySpawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/GlobalEntitySpawnS2CP.kt @@ -17,7 +17,6 @@ import de.bixilon.minosoft.data.entities.data.EntityData import de.bixilon.minosoft.data.entities.entities.LightningBolt import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.KUtil.startInit @@ -25,7 +24,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class GlobalEntitySpawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entityId: Int = buffer.readVarInt() val type = buffer.readByte() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/BookS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/BookS2CP.kt similarity index 91% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/BookS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/BookS2CP.kt index c6b62d118..e4f72edcb 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/BookS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/BookS2CP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.item import de.bixilon.minosoft.data.entities.entities.player.Hands -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class BookS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val hand: Hands = Hands[buffer.readVarInt()] diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompassPositionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/CompassPositionS2CP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompassPositionS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/CompassPositionS2CP.kt index f34f8a7e3..99fc8612a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompassPositionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/CompassPositionS2CP.kt @@ -10,12 +10,11 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.item import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.data.entities.entities.player.compass.CompassPosition import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class CompassPositionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { var position: Vec3i = if (buffer.versionId < ProtocolVersions.V_14W03B) { buffer.readIntBlockPosition() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CraftingRecipeS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/CraftingRecipeS2CP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CraftingRecipeS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/CraftingRecipeS2CP.kt index 8a046f593..35bbd9916 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CraftingRecipeS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/CraftingRecipeS2CP.kt @@ -10,9 +10,8 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.item -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -20,7 +19,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class CraftingRecipeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val containerId = buffer.readUnsignedByte() var recipeId: Int? = null diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ItemCooldownS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/ItemCooldownS2CP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ItemCooldownS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/ItemCooldownS2CP.kt index 0773973ce..7745bfc87 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ItemCooldownS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/item/ItemCooldownS2CP.kt @@ -10,19 +10,17 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.item import de.bixilon.kutil.time.TimeUtil.millis import de.bixilon.minosoft.data.abilities.ItemCooldown import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ItemCooldownS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val item = buffer.readRegistryItem(buffer.connection.registries.item) val time = buffer.readVarInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/map/MapS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/map/MapS2CP.kt index 64c5ed64e..0c0e34b86 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/map/MapS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/map/MapS2CP.kt @@ -16,7 +16,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.map import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.minosoft.data.world.map.MapPin import de.bixilon.minosoft.data.world.map.MapPinTypes -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_15W34A import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_18W19A @@ -28,7 +27,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class MapS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val id = buffer.readVarInt() val scale = buffer.readUnsignedByte() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/map/legacy/LegacyMapS2CF.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/map/legacy/LegacyMapS2CF.kt index 2c41cd655..bd29f0761 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/map/legacy/LegacyMapS2CF.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/map/legacy/LegacyMapS2CF.kt @@ -15,16 +15,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.map.legacy import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.packets.factory.factories.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -@LoadPacket object LegacyMapS2CF : PlayPacketFactory { - override val direction = PacketDirection.SERVER_TO_CLIENT - override fun createPacket(buffer: PlayInByteBuffer): LegacyMapS2CP { + override fun create(buffer: PlayInByteBuffer): LegacyMapS2CP { val id = buffer.readVarInt() val length = buffer.readUnsignedShort() val action = Actions[buffer.readUnsignedByte()] diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/recipes/RecipesS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/recipes/RecipesS2CP.kt index 14d595b38..19ca83758 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/recipes/RecipesS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/recipes/RecipesS2CP.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.recipes import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_19W03A import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -26,7 +25,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class RecipesS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val recipes: Map diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/recipes/UnlockRecipesS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/recipes/UnlockRecipesS2CP.kt index c9ff72dbb..21ed81daa 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/recipes/UnlockRecipesS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/recipes/UnlockRecipesS2CP.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.recipes import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_17W48A import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_12 @@ -26,7 +25,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class UnlockRecipesS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val action = Actions[if (buffer.versionId < V_1_12) buffer.readInt() else buffer.readVarInt()] diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/ObjectivePositionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/ObjectivePositionS2CP.kt index b0a1d5a89..876358544 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/ObjectivePositionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/ObjectivePositionS2CP.kt @@ -15,14 +15,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard import de.bixilon.minosoft.data.scoreboard.ScoreboardPositions import de.bixilon.minosoft.modding.event.events.scoreboard.ObjectivePositionSetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class ObjectivePositionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { private val position: ScoreboardPositions = ScoreboardPositions[buffer.readUnsignedByte()] private val name: String? = buffer.readNullString() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/ObjectiveS2CF.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/ObjectiveS2CF.kt index a8d0c79ef..a3952089d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/ObjectiveS2CF.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/ObjectiveS2CF.kt @@ -15,17 +15,13 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.objective import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.packets.factory.factories.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -@LoadPacket(threadSafe = false) object ObjectiveS2CF : PlayPacketFactory { - override val direction = PacketDirection.SERVER_TO_CLIENT - override fun createPacket(buffer: PlayInByteBuffer): ObjectiveS2CP { + override fun create(buffer: PlayInByteBuffer): ObjectiveS2CP { val objective = buffer.readString() val displayName = if (buffer.versionId < ProtocolVersions.V_14W04A) { // ToDo buffer.readChatComponent() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/ScoreboardScoreS2CF.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/ScoreboardScoreS2CF.kt index 0c7d1baa8..56819e16d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/ScoreboardScoreS2CF.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/ScoreboardScoreS2CF.kt @@ -15,16 +15,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.score import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.packets.factory.factories.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -@LoadPacket(threadSafe = false) object ScoreboardScoreS2CF : PlayPacketFactory { - override val direction = PacketDirection.SERVER_TO_CLIENT - override fun createPacket(buffer: PlayInByteBuffer): ScoreboardScoreS2CP { + override fun create(buffer: PlayInByteBuffer): ScoreboardScoreS2CP { val entity = buffer.readString() val action = ScoreboardScoreActions[buffer.readVarInt()] val objective = buffer.readNullString() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/TeamsS2CF.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/TeamsS2CF.kt index 1e49e2955..a558e45be 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/TeamsS2CF.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/TeamsS2CF.kt @@ -15,16 +15,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.scoreboard.teams import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.packets.factory.factories.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -@LoadPacket(threadSafe = false) object TeamsS2CF : PlayPacketFactory { - override val direction = PacketDirection.SERVER_TO_CLIENT - override fun createPacket(buffer: PlayInByteBuffer): TeamsS2CP { + override fun create(buffer: PlayInByteBuffer): TeamsS2CP { val name = buffer.readString() return when (TeamActions[buffer.readUnsignedByte()]) { TeamActions.CREATE -> CreateTeamS2CP(name, buffer) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignEditorS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignEditorS2CP.kt index be9a98ea6..5cfcf020f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignEditorS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignEditorS2CP.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.sign import de.bixilon.minosoft.data.entities.block.sign.SignSides import de.bixilon.minosoft.modding.event.events.OpenSignEditorEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class SignEditorS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position = if (buffer.versionId < ProtocolVersions.V_14W03B) buffer.readIntBlockPosition() else buffer.readBlockPosition() val side = if (buffer.versionId >= ProtocolVersions.V_23W12A) if (buffer.readBoolean()) SignSides.FRONT else SignSides.BACK else SignSides.FRONT diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignTextS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignTextS2CP.kt index 433420b39..f90405f5a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignTextS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignTextS2CP.kt @@ -17,7 +17,6 @@ import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.minosoft.data.entities.block.sign.SignBlockEntity import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -25,7 +24,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class SignTextS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position: Vec3i = if (buffer.versionId < ProtocolVersions.V_14W04A) { buffer.readShortBlockPosition() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/EntitySoundS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/EntitySoundS2CP.kt index e20a64293..e76344c9b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/EntitySoundS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/EntitySoundS2CP.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.sound import de.bixilon.minosoft.data.SoundCategories import de.bixilon.minosoft.data.registries.identified.ResourceLocation -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class EntitySoundS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val soundEvent: ResourceLocation = buffer.readSound() val category: SoundCategories = SoundCategories[buffer.readVarInt()] diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/NamedSoundS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/NamedSoundS2CP.kt index 163b2b1bd..636f6fc92 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/NamedSoundS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/NamedSoundS2CP.kt @@ -17,7 +17,6 @@ import de.bixilon.minosoft.data.SoundCategories import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.modding.event.events.PlaySoundEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_16W02A import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_17W15A @@ -28,7 +27,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class NamedSoundS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val soundEvent: ResourceLocation? val volume: Float diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/SoundEventS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/SoundEventS2CP.kt index 7df528ca7..cad8457a7 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/SoundEventS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/SoundEventS2CP.kt @@ -17,7 +17,6 @@ import de.bixilon.minosoft.data.SoundCategories import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.modding.event.events.PlaySoundEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_16W02A @@ -29,7 +28,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class SoundEventS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { var category: SoundCategories? = null private set diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/StopSoundS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/StopSoundS2CP.kt index 790023469..05231e477 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/StopSoundS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/StopSoundS2CP.kt @@ -16,7 +16,6 @@ import de.bixilon.kutil.bit.BitByte.isBitMask import de.bixilon.minosoft.data.SoundCategories import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -24,7 +23,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class StopSoundS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val category: SoundCategories? val sound: ResourceLocation? diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/LegacyTabListS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/LegacyTabListS2CP.kt index 5aa1fca83..309b3beb9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/LegacyTabListS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/LegacyTabListS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.tab import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -21,7 +20,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(threadSafe = false) class LegacyTabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val items: MutableMap = mutableMapOf() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListRemoveS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListRemoveS2CP.kt index d6468b526..34f16bfe9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListRemoveS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListRemoveS2CP.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.tab import de.bixilon.minosoft.data.entities.entities.player.additional.AdditionalDataUpdate import de.bixilon.minosoft.modding.event.events.TabListEntryChangeEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(threadSafe = false) class TabListRemoveS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val uuids: Array = buffer.readArray { buffer.readUUID() } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt index 5f4d10afb..d6afe213f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt @@ -19,7 +19,6 @@ import de.bixilon.minosoft.data.entities.entities.player.additional.AdditionalDa import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditional import de.bixilon.minosoft.modding.event.events.TabListEntryChangeEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.packets.s2c.play.tab.actions.AbstractAction import de.bixilon.minosoft.protocol.packets.s2c.play.tab.actions.Actions @@ -31,7 +30,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.* -@LoadPacket(threadSafe = false) class TabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entries: Map diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListTextS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListTextS2CP.kt index 68ed4e556..2c48fdc9f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListTextS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListTextS2CP.kt @@ -14,14 +14,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.tab import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class TabListTextS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val header: ChatComponent = buffer.readChatComponent() val footer: ChatComponent = buffer.readChatComponent() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ClearTitleS2CF.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ClearTitleS2CF.kt index fe18b17b1..9949fef2e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ClearTitleS2CF.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ClearTitleS2CF.kt @@ -13,17 +13,13 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.title -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.packets.factory.factories.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -@LoadPacket(threadSafe = false) object ClearTitleS2CF : PlayPacketFactory { - override val direction: PacketDirection = PacketDirection.SERVER_TO_CLIENT - override fun createPacket(buffer: PlayInByteBuffer): PlayS2CPacket { + override fun create(buffer: PlayInByteBuffer): PlayS2CPacket { val resetTimes = buffer.readBoolean() return if (resetTimes) { ResetTitleS2CP(buffer) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HideTitleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HideTitleS2CP.kt index e7526de6b..336d6db1c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HideTitleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HideTitleS2CP.kt @@ -15,13 +15,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.title import de.bixilon.minosoft.modding.event.events.title.TitleHideEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true, threadSafe = false) class HideTitleS2CP(buffer: PlayInByteBuffer) : TitleS2CP { override fun handle(connection: PlayConnection) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HotbarTextS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HotbarTextS2CP.kt index da230a0d1..fc92e6585 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HotbarTextS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HotbarTextS2CP.kt @@ -17,13 +17,11 @@ import de.bixilon.minosoft.data.chat.message.SimpleChatMessage import de.bixilon.minosoft.data.chat.type.DefaultMessageTypes import de.bixilon.minosoft.modding.event.events.chat.ChatMessageEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true, threadSafe = false) class HotbarTextS2CP(buffer: PlayInByteBuffer) : TitleS2CP { val text = buffer.readChatComponent() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ResetTitleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ResetTitleS2CP.kt index f3dd2ed1c..ad25f980b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ResetTitleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ResetTitleS2CP.kt @@ -15,13 +15,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.title import de.bixilon.minosoft.modding.event.events.title.TitleResetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true, threadSafe = false) class ResetTitleS2CP(buffer: PlayInByteBuffer) : TitleS2CP { override fun handle(connection: PlayConnection) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/SubtitleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/SubtitleS2CP.kt index 469140fc1..7a24b04a0 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/SubtitleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/SubtitleS2CP.kt @@ -15,13 +15,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.title import de.bixilon.minosoft.modding.event.events.title.TitleSubtitleSetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true, threadSafe = false) class SubtitleS2CP(buffer: PlayInByteBuffer) : TitleS2CP { val text = buffer.readChatComponent() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleS2CF.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleS2CF.kt index 7c6349391..296736127 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleS2CF.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleS2CF.kt @@ -15,16 +15,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.title import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket -import de.bixilon.minosoft.protocol.packets.factory.PacketDirection -import de.bixilon.minosoft.protocol.packets.factory.factories.PlayPacketFactory +import de.bixilon.minosoft.protocol.packets.registry.factory.PlayPacketFactory import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer -@LoadPacket(threadSafe = false) object TitleS2CF : PlayPacketFactory { - override val direction: PacketDirection = PacketDirection.SERVER_TO_CLIENT - override fun createPacket(buffer: PlayInByteBuffer): TitleS2CP { + override fun create(buffer: PlayInByteBuffer): TitleS2CP { return when (buffer.readEnum(buffer.connection.registries.titleActions)!!) { TitleActions.TITLE_TEXT -> TitleTextS2CP(buffer) TitleActions.SUBTITLE -> SubtitleS2CP(buffer) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTextS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTextS2CP.kt index 200f541f9..8e18d7603 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTextS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTextS2CP.kt @@ -15,13 +15,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.title import de.bixilon.minosoft.modding.event.events.title.TitleSetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true, threadSafe = false) class TitleTextS2CP(buffer: PlayInByteBuffer) : TitleS2CP { val text = buffer.readChatComponent() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTimesS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTimesS2CP.kt index 69fc47ee3..d22b36410 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTimesS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTimesS2CP.kt @@ -15,13 +15,11 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.title import de.bixilon.minosoft.modding.event.events.title.TitleTimesSetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(parent = true, threadSafe = false) class TitleTimesS2CP(buffer: PlayInByteBuffer) : TitleS2CP { val fadeInTime = buffer.readInt() val stayTime = buffer.readInt() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DifficultyS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/DifficultyS2CP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DifficultyS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/DifficultyS2CP.kt index 5955ec3b8..ff7732417 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DifficultyS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/DifficultyS2CP.kt @@ -10,12 +10,11 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.world import de.bixilon.minosoft.data.world.difficulty.Difficulties import de.bixilon.minosoft.data.world.difficulty.WorldDifficulty import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class DifficultyS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val difficulty: Difficulties = Difficulties[buffer.readUnsignedByte()] var locked = false diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExplosionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/ExplosionS2CP.kt similarity index 96% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExplosionS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/ExplosionS2CP.kt index 12f9e4601..611145707 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExplosionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/ExplosionS2CP.kt @@ -10,7 +10,7 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.world import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.kotlinglm.vec3.Vec3d @@ -25,7 +25,6 @@ import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.floor import de.bixilon.minosoft.modding.event.events.ExplosionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_17 @@ -34,7 +33,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(lowPriority = true) class ExplosionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val position = if (buffer.versionId >= ProtocolVersions.V_22W42A) buffer.readVec3d() else Vec3d(buffer.readVec3f()) val power = buffer.readFloat() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ParticleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/ParticleS2CP.kt similarity index 95% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ParticleS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/ParticleS2CP.kt index 6873a9a26..5738c1362 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ParticleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/ParticleS2CP.kt @@ -10,7 +10,7 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.world import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.kotlinglm.vec3.Vec3d @@ -18,7 +18,6 @@ import de.bixilon.minosoft.data.registries.particle.ParticleType import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.modding.event.events.ParticleSpawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -26,7 +25,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class ParticleS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val type: ParticleType = if (buffer.versionId < ProtocolVersions.V_14W19A) { buffer.readLegacyRegistryItem(buffer.connection.registries.particleType)!! diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TimeS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/TimeS2CP.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TimeS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/TimeS2CP.kt index 68c743f14..6ec5bf132 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TimeS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/TimeS2CP.kt @@ -10,12 +10,11 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.world import de.bixilon.minosoft.config.DebugOptions import de.bixilon.minosoft.data.world.time.WorldTime import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class TimeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val age = buffer.readLong() val time = buffer.readLong() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/VibrationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/VibrationS2CP.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/VibrationS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/VibrationS2CP.kt index 0f1674e38..029939257 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/VibrationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/VibrationS2CP.kt @@ -10,17 +10,15 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.world import de.bixilon.kotlinglm.vec3.Vec3i -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class VibrationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val sourcePosition: Vec3i = buffer.readBlockPosition() val target = buffer.readVibrationSource() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/VillagerTradesS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/VillagerTradesS2CP.kt similarity index 95% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/VillagerTradesS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/VillagerTradesS2CP.kt index 7a4da3265..cb102a2f3 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/VillagerTradesS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/VillagerTradesS2CP.kt @@ -10,11 +10,10 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.world import de.bixilon.minosoft.data.Trade import de.bixilon.minosoft.data.container.stack.ItemStack -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -22,7 +21,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class VillagerTradesS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val containerId: Int = buffer.readVarInt() val trades: List = buffer.readArray(buffer.readUnsignedByte()) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/WorldEventS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/WorldEventS2CP.kt similarity index 94% rename from src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/WorldEventS2CP.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/WorldEventS2CP.kt index ed2ba11c8..f3b682b93 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/WorldEventS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/world/WorldEventS2CP.kt @@ -10,12 +10,11 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.s2c.play +package de.bixilon.minosoft.protocol.packets.s2c.play.world import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.data.registries.misc.event.world.DefaultWorldEventHandlers import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -23,7 +22,6 @@ import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket class WorldEventS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val eventId: Int = buffer.readInt() val event = buffer.connection.registries.worldEvent.getOrNull(eventId) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/PongS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/PongS2CP.kt index 8dc249c23..0d472611d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/PongS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/PongS2CP.kt @@ -15,16 +15,13 @@ package de.bixilon.minosoft.protocol.packets.s2c.status import de.bixilon.kutil.time.TimeUtil.nanos import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection import de.bixilon.minosoft.protocol.network.connection.status.StatusConnectionStates -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.StatusS2CPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer import de.bixilon.minosoft.protocol.status.StatusPong import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -@LoadPacket(state = ProtocolStates.STATUS) class PongS2CP(buffer: InByteBuffer) : StatusS2CPacket { val payload: Long = buffer.readLong() diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusS2CP.kt index 98b9f55dd..6f2656686 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusS2CP.kt @@ -15,9 +15,7 @@ package de.bixilon.minosoft.protocol.packets.s2c.status import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection import de.bixilon.minosoft.protocol.network.connection.status.StatusConnectionStates import de.bixilon.minosoft.protocol.packets.c2s.status.PingC2SP -import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.StatusS2CPacket -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.buffers.InByteBuffer import de.bixilon.minosoft.protocol.status.ServerStatus import de.bixilon.minosoft.protocol.status.StatusPing @@ -28,7 +26,6 @@ import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType import java.util.concurrent.ThreadLocalRandom -@LoadPacket(state = ProtocolStates.STATUS) class StatusS2CP(buffer: InByteBuffer) : StatusS2CPacket { val status: ServerStatus = ServerStatus(buffer.readJson()) diff --git a/src/main/java/de/bixilon/minosoft/protocol/PacketSkipper.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/types/HandleablePacket.kt similarity index 83% rename from src/main/java/de/bixilon/minosoft/protocol/PacketSkipper.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/types/HandleablePacket.kt index fafec2de8..2e1d7d5b0 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/PacketSkipper.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/types/HandleablePacket.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -11,11 +11,11 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol +package de.bixilon.minosoft.protocol.packets.types import de.bixilon.minosoft.protocol.network.connection.Connection -interface PacketSkipper { +interface HandleablePacket { - fun canSkip(connection: Connection): Boolean + fun handle(connection: Connection) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/Packet.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/types/Packet.kt similarity index 89% rename from src/main/java/de/bixilon/minosoft/protocol/packets/Packet.kt rename to src/main/java/de/bixilon/minosoft/protocol/packets/types/Packet.kt index 96a651e67..3b217c0fe 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/Packet.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/types/Packet.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -10,7 +10,7 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets +package de.bixilon.minosoft.protocol.packets.types interface Packet { diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/DefaultPacketMapping.kt b/src/main/java/de/bixilon/minosoft/protocol/protocol/DefaultPacketMapping.kt new file mode 100644 index 000000000..0c80b3bf3 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/DefaultPacketMapping.kt @@ -0,0 +1,51 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ +package de.bixilon.minosoft.protocol.protocol + +import de.bixilon.minosoft.protocol.packets.c2s.handshake.HandshakeC2SP +import de.bixilon.minosoft.protocol.packets.c2s.login.ChannelC2SP +import de.bixilon.minosoft.protocol.packets.c2s.login.EncryptionC2SP +import de.bixilon.minosoft.protocol.packets.c2s.login.StartC2SP +import de.bixilon.minosoft.protocol.packets.c2s.status.PingC2SP +import de.bixilon.minosoft.protocol.packets.c2s.status.StatusRequestC2SP +import de.bixilon.minosoft.protocol.packets.registry.PacketMapping +import de.bixilon.minosoft.protocol.packets.s2c.general.CompressionS2CP +import de.bixilon.minosoft.protocol.packets.s2c.general.KickS2CP +import de.bixilon.minosoft.protocol.packets.s2c.login.ChannelS2CP +import de.bixilon.minosoft.protocol.packets.s2c.login.EncryptionS2CP +import de.bixilon.minosoft.protocol.packets.s2c.login.SuccessS2CP +import de.bixilon.minosoft.protocol.packets.s2c.status.PongS2CP +import de.bixilon.minosoft.protocol.packets.s2c.status.StatusS2CP + +object DefaultPacketMapping { + val C2S_PACKET_MAPPING = PacketMapping(PacketDirections.CLIENT_TO_SERVER).apply { + register(ProtocolStates.HANDSHAKE, HandshakeC2SP::class, 0x00) + + register(ProtocolStates.STATUS, StatusRequestC2SP::class, 0x00) + register(ProtocolStates.STATUS, PingC2SP::class, 0x01) + + register(ProtocolStates.LOGIN, StartC2SP::class, 0x00) + register(ProtocolStates.LOGIN, EncryptionC2SP::class, 0x01) + register(ProtocolStates.LOGIN, ChannelC2SP::class, 0x02) + } + val S2C_PACKET_MAPPING = PacketMapping(PacketDirections.SERVER_TO_CLIENT).apply { + register(ProtocolStates.STATUS, StatusS2CP::class, 0x00) + register(ProtocolStates.STATUS, PongS2CP::class, 0x01) + + register(ProtocolStates.LOGIN, KickS2CP::class, 0x00) + register(ProtocolStates.LOGIN, EncryptionS2CP::class, 0x01) + register(ProtocolStates.LOGIN, SuccessS2CP::class, 0x02) + register(ProtocolStates.LOGIN, CompressionS2CP::class, 0x03) + register(ProtocolStates.LOGIN, ChannelS2CP::class, 0x04) + } +} diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/PacketDirection.kt b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketDirections.kt similarity index 86% rename from src/main/java/de/bixilon/minosoft/protocol/packets/factory/PacketDirection.kt rename to src/main/java/de/bixilon/minosoft/protocol/protocol/PacketDirections.kt index 7a7c15a88..1228a041b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/factory/PacketDirection.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketDirections.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -11,9 +11,9 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets.factory +package de.bixilon.minosoft.protocol.protocol -enum class PacketDirection { +enum class PacketDirections { SERVER_TO_CLIENT, CLIENT_TO_SERVER, ; diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.kt b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.kt deleted file mode 100644 index e61253800..000000000 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.kt +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2023 Moritz Zwerger - * - * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with this program. If not, see . - * - * This software is not affiliated with Mojang AB, the original developer of Minecraft. - */ -package de.bixilon.minosoft.protocol.protocol - -import de.bixilon.kutil.collections.CollectionUtil.biMapOf -import de.bixilon.kutil.collections.map.bi.BiMap -import de.bixilon.minosoft.protocol.packets.c2s.handshake.HandshakeC2SP -import de.bixilon.minosoft.protocol.packets.c2s.login.ChannelC2SP -import de.bixilon.minosoft.protocol.packets.c2s.login.EncryptionC2SP -import de.bixilon.minosoft.protocol.packets.c2s.login.StartC2SP -import de.bixilon.minosoft.protocol.packets.c2s.status.PingC2SP -import de.bixilon.minosoft.protocol.packets.c2s.status.StatusRequestC2SP -import de.bixilon.minosoft.protocol.packets.factory.C2SPacketType -import de.bixilon.minosoft.protocol.packets.factory.PacketTypeRegistry -import de.bixilon.minosoft.protocol.packets.factory.S2CPacketType -import de.bixilon.minosoft.protocol.packets.s2c.login.* -import de.bixilon.minosoft.protocol.packets.s2c.status.PongS2CP -import de.bixilon.minosoft.protocol.packets.s2c.status.StatusS2CP - -object Protocol { - val C2S_PACKET_MAPPING: Map> = mapOf( - ProtocolStates.HANDSHAKE to biMapOf( - PacketTypeRegistry.getC2S(HandshakeC2SP::class.java)!! to 0x00, - ), - ProtocolStates.STATUS to biMapOf( - PacketTypeRegistry.getC2S(StatusRequestC2SP::class.java)!! to 0x00, - PacketTypeRegistry.getC2S(PingC2SP::class.java)!! to 0x01, - ), - ProtocolStates.LOGIN to biMapOf( - PacketTypeRegistry.getC2S(StartC2SP::class.java)!! to 0x00, - PacketTypeRegistry.getC2S(EncryptionC2SP::class.java)!! to 0x01, - PacketTypeRegistry.getC2S(ChannelC2SP::class.java)!! to 0x02, - ), - ) - val S2C_PACKET_MAPPING: Map> = mapOf( - ProtocolStates.STATUS to biMapOf( - PacketTypeRegistry.getS2C(StatusS2CP::class.java)!! to 0x00, - PacketTypeRegistry.getS2C(PongS2CP::class.java)!! to 0x01, - ), - ProtocolStates.LOGIN to biMapOf( - PacketTypeRegistry.getS2C(KickS2CP::class.java)!! to 0x00, - PacketTypeRegistry.getS2C(EncryptionS2CP::class.java)!! to 0x01, - PacketTypeRegistry.getS2C(SuccessS2CP::class.java)!! to 0x02, - PacketTypeRegistry.getS2C(CompressionS2CP::class.java)!! to 0x03, - PacketTypeRegistry.getS2C(ChannelS2CP::class.java)!! to 0x04, - ), - ) -} diff --git a/src/main/java/de/bixilon/minosoft/protocol/versions/Version.kt b/src/main/java/de/bixilon/minosoft/protocol/versions/Version.kt index a80154584..c1ba316c9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/versions/Version.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/versions/Version.kt @@ -13,27 +13,32 @@ package de.bixilon.minosoft.protocol.versions -import de.bixilon.kutil.collections.map.bi.AbstractBiMap import de.bixilon.kutil.latch.AbstractLatch -import de.bixilon.kutil.primitive.BooleanUtil.decide import de.bixilon.minosoft.config.profile.profiles.resources.ResourcesProfile import de.bixilon.minosoft.data.registries.registries.Registries import de.bixilon.minosoft.data.registries.registries.RegistriesLoader -import de.bixilon.minosoft.protocol.packets.factory.C2SPacketType -import de.bixilon.minosoft.protocol.packets.factory.S2CPacketType -import de.bixilon.minosoft.protocol.protocol.ProtocolStates -import de.bixilon.minosoft.protocol.protocol.ProtocolVersions +import de.bixilon.minosoft.protocol.packets.registry.PacketMapping +import de.bixilon.minosoft.protocol.protocol.PacketDirections import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_15W31A +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_15W34A +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_16W38A +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_17W47A +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_18W02A +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_1_17_1_RC2 +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_20W17A +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_22W17A +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_22W43A +import de.bixilon.minosoft.protocol.protocol.ProtocolVersions.V_23W12A class Version( val name: String, val versionId: Int, val protocolId: Int, val type: VersionTypes, - val s2cPackets: Map>, - val c2sPackets: Map>, + val s2c: PacketMapping, + val c2s: PacketMapping, ) { - val sortingId: Int = (versionId == -1).decide(Int.MAX_VALUE, versionId) + val sortingId: Int = if (versionId == -1) Int.MAX_VALUE else versionId fun load(profile: ResourcesProfile, latch: AbstractLatch): Registries { @@ -48,14 +53,19 @@ class Version( return this.versionId.compareTo(versionId) } - val flattened: Boolean get() = versionId >= ProtocolVersions.V_17W47A + operator fun get(directions: PacketDirections) = when (directions) { + PacketDirections.CLIENT_TO_SERVER -> c2s + PacketDirections.SERVER_TO_CLIENT -> s2c + } + + val flattened: Boolean get() = versionId >= V_17W47A val hasOffhand: Boolean get() = versionId >= V_15W31A - val maxPacketLength get() = if (versionId < ProtocolVersions.V_1_17_1_RC2) 1 shl 21 else 1 shl 23 - val maxChatMessageSize get() = if (versionId < ProtocolVersions.V_16W38A) 100 else 256 - val hasAttackCooldown get() = versionId >= ProtocolVersions.V_15W34A - val requiresSignedChat get() = versionId >= ProtocolVersions.V_22W17A - val requiresSignedLogin get() = requiresSignedChat && versionId < ProtocolVersions.V_22W43A - val supportsRGBChat get() = versionId >= ProtocolVersions.V_20W17A - val jsonLanguage get() = versionId >= ProtocolVersions.V_18W02A - val doubleSigns get() = versionId >= ProtocolVersions.V_23W12A + val maxPacketLength get() = if (versionId < V_1_17_1_RC2) 1 shl 21 else 1 shl 23 + val maxChatMessageSize get() = if (versionId < V_16W38A) 100 else 256 + val hasAttackCooldown get() = versionId >= V_15W34A + val requiresSignedChat get() = versionId >= V_22W17A + val requiresSignedLogin get() = requiresSignedChat && versionId < V_22W43A + val supportsRGBChat get() = versionId >= V_20W17A + val jsonLanguage get() = versionId >= V_18W02A + val doubleSigns get() = versionId >= V_23W12A } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/PacketsRoot.kt b/src/main/java/de/bixilon/minosoft/protocol/versions/VersionIndex.kt similarity index 80% rename from src/main/java/de/bixilon/minosoft/protocol/packets/PacketsRoot.kt rename to src/main/java/de/bixilon/minosoft/protocol/versions/VersionIndex.kt index 22a863ce6..9d24888f8 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/PacketsRoot.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/versions/VersionIndex.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -11,9 +11,8 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.protocol.packets +package de.bixilon.minosoft.protocol.versions -/** - * Something to determinate in what package all packets are - */ -annotation class PacketsRoot +import de.bixilon.kutil.json.JsonObject + +typealias VersionIndex = Map diff --git a/src/main/java/de/bixilon/minosoft/protocol/versions/VersionLoader.kt b/src/main/java/de/bixilon/minosoft/protocol/versions/VersionLoader.kt new file mode 100644 index 000000000..c0d58298e --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/protocol/versions/VersionLoader.kt @@ -0,0 +1,98 @@ +/* + * Minosoft + * Copyright (C) 2020-2023 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.protocol.versions + +import de.bixilon.kutil.cast.CastUtil.unsafeCast +import de.bixilon.kutil.json.JsonObject +import de.bixilon.kutil.latch.AbstractLatch +import de.bixilon.kutil.primitive.IntUtil.toInt +import de.bixilon.minosoft.Minosoft +import de.bixilon.minosoft.assets.util.InputStreamUtil.readJson +import de.bixilon.minosoft.data.registries.identified.Namespaces.minosoft +import de.bixilon.minosoft.protocol.packets.registry.DefaultPackets +import de.bixilon.minosoft.protocol.packets.registry.PacketMapping +import de.bixilon.minosoft.protocol.protocol.PacketDirections +import de.bixilon.minosoft.protocol.protocol.ProtocolStates +import de.bixilon.minosoft.util.logging.Log +import de.bixilon.minosoft.util.logging.LogLevels +import de.bixilon.minosoft.util.logging.LogMessageType + +object VersionLoader { + private val INDEX = minosoft("mapping/versions.json") + + private fun loadMapping(state: ProtocolStates, direction: PacketDirections, mapping: PacketMapping, names: List) { + for ((id, name) in names.withIndex()) { + val type = DefaultPackets[direction][state]?.get(name) + if (type == null) { + Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Can not find packet $name in $state $direction!" } + continue + } + mapping.register(state, type, id) + } + } + + private fun loadMapping(data: Any, direction: PacketDirections): PacketMapping { + val mapping = PacketMapping(direction) + when (data) { + is List<*> -> loadMapping(ProtocolStates.PLAY, direction, mapping, data.unsafeCast()) + is Map<*, *> -> { + for ((state, names) in data) { + loadMapping(ProtocolStates[state!!]!!, direction, mapping, names.unsafeCast()) + } + } + + else -> throw IllegalArgumentException("Can not load packet mapping $data") + } + return mapping + } + + + private fun load(id: Int, index: VersionIndex, data: JsonObject = index[id]!!): Version { + Versions.getById(id)?.let { return it } + + val name = data["name"]!!.toString() + val protocolId = data["protocol_id"]?.toInt() ?: id + val type = data["type"]?.toString()?.let { VersionTypes[it] } ?: VersionTypes.SNAPSHOT + + val s2c: PacketMapping + val c2s: PacketMapping + + val packets = data["packets"] + if (packets is Int) { + val version = load(packets, index) + s2c = version.s2c + c2s = version.c2s + } else { + if (packets !is Map<*, *>) throw IllegalArgumentException() + s2c = loadMapping(packets["s2c"]!!, PacketDirections.SERVER_TO_CLIENT) + c2s = loadMapping(packets["c2s"]!!, PacketDirections.CLIENT_TO_SERVER) + } + + val version = Version(name, id, protocolId, type, s2c, c2s) + Versions.register(version) + return version + } + + fun load(latch: AbstractLatch) { + Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Loading versions..." } + val index: VersionIndex = Minosoft.MINOSOFT_ASSETS_MANAGER[INDEX].readJson() + + for ((versionId, data) in index) { + load(versionId, index, data) + } + + Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Versions loaded!" } + } +} + diff --git a/src/main/java/de/bixilon/minosoft/protocol/versions/Versions.kt b/src/main/java/de/bixilon/minosoft/protocol/versions/Versions.kt index 3147dc98a..79ced3db1 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/versions/Versions.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/versions/Versions.kt @@ -13,154 +13,38 @@ package de.bixilon.minosoft.protocol.versions -import de.bixilon.kutil.cast.CastUtil.unsafeCast -import de.bixilon.kutil.collections.CollectionUtil.mutableBiMapOf -import de.bixilon.kutil.collections.map.bi.AbstractBiMap -import de.bixilon.kutil.collections.map.bi.MutableBiMap -import de.bixilon.kutil.latch.AbstractLatch -import de.bixilon.kutil.primitive.IntUtil.toInt -import de.bixilon.minosoft.Minosoft -import de.bixilon.minosoft.assets.util.InputStreamUtil.readJson -import de.bixilon.minosoft.protocol.packets.factory.C2SPacketType -import de.bixilon.minosoft.protocol.packets.factory.PacketTypeRegistry -import de.bixilon.minosoft.protocol.packets.factory.S2CPacketType -import de.bixilon.minosoft.protocol.protocol.ProtocolStates -import de.bixilon.minosoft.util.KUtil.toResourceLocation -import de.bixilon.minosoft.util.logging.Log -import de.bixilon.minosoft.util.logging.LogLevels -import de.bixilon.minosoft.util.logging.LogMessageType +import de.bixilon.minosoft.protocol.packets.registry.PacketMapping +import de.bixilon.minosoft.protocol.protocol.PacketDirections import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap object Versions : Iterable { - private val VERSIONS_INDEX = "minosoft:mapping/versions.json".toResourceLocation() - private val VERSIONS_BY_NAME: MutableMap = mutableMapOf() - private val VERSIONS_BY_ID: Int2ObjectOpenHashMap = Int2ObjectOpenHashMap() - private val VERSIONS_BY_PROTOCOL: Int2ObjectOpenHashMap = Int2ObjectOpenHashMap() - val AUTOMATIC = Version("Automatic", -1, -1, VersionTypes.RELEASE, emptyMap(), emptyMap()) + private val name: MutableMap = mutableMapOf() + private val id: Int2ObjectOpenHashMap = Int2ObjectOpenHashMap() + private val protocol: Int2ObjectOpenHashMap = Int2ObjectOpenHashMap() + val AUTOMATIC = Version("Automatic", -1, -1, VersionTypes.RELEASE, PacketMapping(PacketDirections.SERVER_TO_CLIENT), PacketMapping(PacketDirections.CLIENT_TO_SERVER)) - private fun addVersion(version: Version) { - VERSIONS_BY_NAME.put(version.name, version)?.let { throw IllegalStateException("Duplicated version name: ${version.name}") } - VERSIONS_BY_ID.put(version.versionId, version)?.let { throw IllegalStateException("Duplicated version id: ${version.name}") } - VERSIONS_BY_PROTOCOL.put(version.protocolId, version)?.let { throw IllegalStateException("Duplicated protocol id: ${version.name}") } - } - - @Synchronized - fun load(latch: AbstractLatch) { - Log.log(LogMessageType.OTHER, LogLevels.VERBOSE) { "Loading versions..." } - val index: Map> = Minosoft.MINOSOFT_ASSETS_MANAGER[VERSIONS_INDEX].readJson() - - fun loadVersion(versionId: Int, data: Map = index[versionId.toString()]!!): Version { - VERSIONS_BY_ID[versionId]?.let { return it } - - - val s2cPackets: Map> - val c2sPackets: Map> - - when (val mapping = data["packets"]) { - is Int -> { - val mappingVersion = loadVersion(mapping) - s2cPackets = mappingVersion.s2cPackets - c2sPackets = mappingVersion.c2sPackets - } - is Map<*, *> -> { - when (val s2c = mapping["s2c"]) { - is List<*> -> { - // just play - s2cPackets = mapOf(ProtocolStates.PLAY to readS2PPacketMapping(versionId, ProtocolStates.PLAY, s2c.unsafeCast())) - } - is Map<*, *> -> { - // map other states - val packets: MutableMap> = mutableMapOf() - for ((stateName, packetMapping) in s2c) { - val state = ProtocolStates[stateName.toString()] - packets[state] = readS2PPacketMapping(versionId, state, packetMapping.unsafeCast()) - } - s2cPackets = packets - } - else -> throw IllegalArgumentException() - } - when (val c2s = mapping["c2s"]) { - is List<*> -> { - c2sPackets = mapOf(ProtocolStates.PLAY to readC2SPacketMapping(versionId, ProtocolStates.PLAY, c2s.unsafeCast())) - } - is Map<*, *> -> { - // map other states - val packets: MutableMap> = mutableMapOf() - for ((stateName, packetMapping) in c2s) { - val state = ProtocolStates[stateName.toString()] - packets[state] = readC2SPacketMapping(versionId, state, packetMapping.unsafeCast()) - } - c2sPackets = packets - } - else -> throw IllegalArgumentException() - } - - } - else -> TODO("Can not create version mapping $mapping") - } - - - val version = Version( - name = data["name"].toString(), - versionId = versionId, - protocolId = data["protocol_id"]?.toInt() ?: versionId, - type = data["type"]?.unsafeCast()?.let { return@let VersionTypes[it] } ?: VersionTypes.SNAPSHOT, - s2cPackets = s2cPackets, - c2sPackets = c2sPackets, - ) - addVersion(version) - return version - } - - latch.count += index.size - for ((versionId, data) in index) { - loadVersion(versionId.toInt(), data) - latch.dec() - } - Log.log(LogMessageType.OTHER, LogLevels.VERBOSE) { "Versions loaded!" } - } - - private fun readPacketMapping(versionId: Int, list: List, typeGetter: (name: String) -> T): MutableBiMap { - val map: MutableBiMap = mutableBiMapOf() - for (name in list) { - val packetType = typeGetter(name) - map.put(packetType, map.size)?.let { Log.log(LogMessageType.LOADING, LogLevels.WARN) { "Packet $name registered twice (version=$versionId)" } } - } - return map - } - - private fun readS2PPacketMapping(versionId: Int, state: ProtocolStates, list: List): AbstractBiMap { - return readPacketMapping(versionId, list) { - PacketTypeRegistry.getS2C(state, it)?.let { type -> return@readPacketMapping type } - Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Packet $it is not registered (versionId=$versionId, state=$state, direction=SERVER_TO_CLIENT)!" } - return@readPacketMapping S2CPacketType.EMPTY() - } - } - - private fun readC2SPacketMapping(versionId: Int, state: ProtocolStates, list: List): AbstractBiMap { - return readPacketMapping(versionId, list) { - PacketTypeRegistry.getC2S(state, it)?.let { type -> return@readPacketMapping type } - Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Packet $it is not registered (versionId=$versionId, state=$state, direction=CLIENT_TO_SERVER)!" } - return@readPacketMapping C2SPacketType.EMPTY() - } + fun register(version: Version) { + name.put(version.name, version)?.let { throw IllegalStateException("Duplicated version name: ${version.name}") } + id.put(version.versionId, version)?.let { throw IllegalStateException("Duplicated version id: ${version.name}") } + protocol.put(version.protocolId, version)?.let { throw IllegalStateException("Duplicated protocol id: ${version.name}") } } operator fun get(name: String?): Version? { if (name == "automatic") { return AUTOMATIC } - return VERSIONS_BY_NAME[name] + return this.name[name] } fun getById(versionId: Int): Version? { - return VERSIONS_BY_ID[versionId] + return id[versionId] } fun getByProtocol(protocolId: Int): Version? { - return VERSIONS_BY_PROTOCOL[protocolId] + return protocol[protocolId] } override fun iterator(): Iterator { - return VERSIONS_BY_NAME.values.iterator() + return name.values.iterator() } } diff --git a/src/main/java/de/bixilon/minosoft/util/KUtil.kt b/src/main/java/de/bixilon/minosoft/util/KUtil.kt index 576cfd466..fd3e4e939 100644 --- a/src/main/java/de/bixilon/minosoft/util/KUtil.kt +++ b/src/main/java/de/bixilon/minosoft/util/KUtil.kt @@ -51,6 +51,8 @@ import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection import de.bixilon.minosoft.protocol.network.network.client.netty.NettyClient +import de.bixilon.minosoft.protocol.packets.registry.DefaultPackets +import de.bixilon.minosoft.protocol.protocol.DefaultPacketMapping import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.protocol.protocol.buffers.OutByteBuffer import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer @@ -283,6 +285,8 @@ object KUtil { DefaultThreadPool += { NettyClient::class.java.forceInit() } DefaultThreadPool += { SimpleChannelInboundHandler::class.java.forceInit() } DefaultThreadPool += { SSLContext.getDefault() } + DefaultThreadPool += { DefaultPackets::class.java.forceInit() } + DefaultThreadPool += { DefaultPacketMapping::class.java.forceInit() } DefaultThreadPool += { GLM::class.java.forceInit() } // whole glm } diff --git a/src/main/java/de/bixilon/minosoft/util/crash/section/ConnectionCrashSection.kt b/src/main/java/de/bixilon/minosoft/util/crash/section/ConnectionCrashSection.kt index f5d7c45cd..10934b7ca 100644 --- a/src/main/java/de/bixilon/minosoft/util/crash/section/ConnectionCrashSection.kt +++ b/src/main/java/de/bixilon/minosoft/util/crash/section/ConnectionCrashSection.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020-2022 Moritz Zwerger + * Copyright (C) 2020-2023 Moritz Zwerger * * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * @@ -25,9 +25,9 @@ class ConnectionCrashSection( builder.appendProperty(intent, "Account", entry.account.username) builder.appendProperty(intent, "Address", entry.address) builder.appendProperty(intent, "Brand", entry.serverInfo.brand) - builder.appendProperty(intent, "Events", entry.size) + builder.appendProperty(intent, "Events", entry.events.size) builder.appendProperty(intent, "State", entry.state) - builder.appendProperty(intent, "Protocol state", entry.network.state) + builder.appendProperty(intent, "DefaultPacketMapping state", entry.network.state) builder.appendProperty(intent, "Compression threshold", entry.network.compressionThreshold) builder.appendProperty(intent, "Encrypted", entry.network.encrypted) builder.appendProperty(intent, "Was connected", entry.wasConnected) diff --git a/src/main/resources/assets/minosoft/mapping/versions.json b/src/main/resources/assets/minosoft/mapping/versions.json index 2899e11bb..f6e82d4db 100644 --- a/src/main/resources/assets/minosoft/mapping/versions.json +++ b/src/main/resources/assets/minosoft/mapping/versions.json @@ -121,7 +121,7 @@ "protocol_id": 1073741944, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "message_acknowledgement", "command", "signed_chat_message", "session_data", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["bundle", "entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chunk_biome", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "entity_damage", "hide_message", "kick", "unsigned_chat_message", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "damage_tilt", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] + "s2c": ["bundle", "entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chunk_biome", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "entity_damage", "hide_message", "kick", "unsigned_chat_message", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "damage_tilt", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] } }, "879": { @@ -134,7 +134,7 @@ "protocol_id": 1073741942, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "message_acknowledgement", "command", "signed_chat_message", "session_data", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["bundle", "entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "entity_damage", "hide_message", "kick", "unsigned_chat_message", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "damage_tilt", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] + "s2c": ["bundle", "entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "entity_damage", "hide_message", "kick", "unsigned_chat_message", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "damage_tilt", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] } }, "877": { @@ -152,7 +152,7 @@ "protocol_id": 1073741939, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "message_acknowledgement", "command", "signed_chat_message", "session_data", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["bundle", "entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "hide_message", "kick", "unsigned_chat_message", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "damage_tilt", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] + "s2c": ["bundle", "entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "hide_message", "kick", "unsigned_chat_message", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "damage_tilt", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] } }, "874": { @@ -181,7 +181,7 @@ "protocol_id": 1073741935, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "message_acknowledgement", "command", "signed_chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "session_data", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "hide_message", "kick", "unsigned_chat_message", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "hide_message", "kick", "unsigned_chat_message", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] } }, "869": { @@ -214,7 +214,7 @@ "protocol_id": 1073741929, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "message_acknowledgement", "command", "signed_chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "session_data", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "hide_message", "kick", "unsigned_chat_message", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "hide_message", "kick", "unsigned_chat_message", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] } }, "863": { @@ -222,7 +222,7 @@ "protocol_id": 1073741928, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "message_acknowledgement", "command", "signed_chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "hide_message", "kick", "unsigned_chat_message", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "hide_message", "kick", "unsigned_chat_message", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list_remove", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "features", "entity_effect", "recipes", "tags"] } }, "862": { @@ -261,7 +261,7 @@ "protocol_id": 1073741922, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "legacy_message_acknowledgement", "command", "signed_chat_message", "chat_preview", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "hide_message", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "message_header", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "temporary_chat_preview", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "hide_message", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "message_header", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "temporary_chat_preview", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "854": { @@ -269,7 +269,7 @@ "protocol_id": 1073741921, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "command", "signed_chat_message", "chat_preview", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "hide_message", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "message_header", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "temporary_chat_preview", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "hide_message", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "message_header", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "temporary_chat_preview", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "853": { @@ -277,7 +277,7 @@ "protocol_id": 1073741920, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "command", "signed_chat_message", "chat_preview", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "temporary_chat_preview", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "chat_suggestions", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "temporary_chat_preview", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "852": { @@ -341,7 +341,7 @@ "protocol_id": 1073741909, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "command", "signed_chat_message", "chat_preview", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "temporary_chat_preview", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "temporary_chat_preview", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "840": { @@ -349,7 +349,7 @@ "protocol_id": 1073741908, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "command", "signed_chat_message", "chat_preview", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_preview", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "play_status", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "839": { @@ -357,7 +357,7 @@ "protocol_id": 1073741907, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "command", "signed_chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "838": { @@ -365,7 +365,7 @@ "protocol_id": 1073741906, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "signed_chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "signed_chat_message", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "chat_message", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "837": { @@ -378,7 +378,7 @@ "protocol_id": 1073741904, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "835": { @@ -391,7 +391,7 @@ "protocol_id": 1073741902, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "833": { @@ -410,7 +410,7 @@ "protocol_id": 1073741899, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "830": { @@ -418,7 +418,7 @@ "protocol_id": 1073741898, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "829": { @@ -578,7 +578,7 @@ "protocol_id": 1073741868, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "simulation_distance", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "797": { @@ -678,7 +678,7 @@ "protocol_id": 1073741851, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "pong", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "ping", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "778": { @@ -721,7 +721,7 @@ "protocol_id": 1073741842, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "770": { @@ -734,7 +734,7 @@ "protocol_id": 1073741840, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "clear_title", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "initialize_world_border", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "end_combat_event", "enter_combat_event", "kill_combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "hotbar_text", "center_world_border", "interpolate_world_border", "size_world_border", "warn_time_world_border", "warn_blocks_world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "subtitle", "time", "title_text", "title_times", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "768": { @@ -772,7 +772,7 @@ "protocol_id": 1073741832, "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "vibration", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "761": { @@ -862,14 +862,14 @@ "name": "20w28a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "blocks", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "738": { "name": "20w27a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "displayed_recipe", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "736": { @@ -918,7 +918,7 @@ "name": "1.16-pre1", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "719": { @@ -953,7 +953,7 @@ "name": "20w16a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "generate_structure", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "711": { @@ -976,7 +976,7 @@ "name": "20w12a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "compass_position", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "706": { @@ -1118,7 +1118,7 @@ "name": "19w34a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "legacy_block_break", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "498": { @@ -1142,7 +1142,7 @@ "name": "1.14.4-pre4", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "legacy_block_break"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "legacy_block_break"] } }, "493": { @@ -1241,7 +1241,7 @@ "name": "19w14b", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "heartbeat", "lock_difficulty", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "open_horse_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "open_entity_container", "heartbeat", "chunk", "world_event", "particle", "chunk_light", "initialize", "map", "villager_trades", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "book", "open_container", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "chunk_center", "view_distance", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "entity_sound", "sound_event", "stop_sound", "tab_list_text", "nbt_response", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "470": { @@ -1256,7 +1256,7 @@ "name": "19w13a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "lock_difficulty", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "jigsaw_block", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "open_horse_container", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light", "open_container", "villager_trades", "view_distance"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "container_items", "open_entity_container", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light", "open_container", "villager_trades", "view_distance"] } }, "467": { @@ -1275,7 +1275,7 @@ "name": "19w11a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "difficulty", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "lock_difficulty", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_horse_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light", "open_container", "villager_trades"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_entity_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light", "open_container", "villager_trades"] } }, "463": { @@ -1290,7 +1290,7 @@ "name": "19w08a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_horse_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light", "open_container", "villager_trades"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_entity_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light", "open_container", "villager_trades"] } }, "460": { @@ -1329,14 +1329,14 @@ "name": "19w02a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_horse_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light", "open_container", "villager_trades"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_entity_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light", "open_container", "villager_trades"] } }, "451": { "name": "18w50a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "book", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light"] } }, "450": { @@ -1383,7 +1383,7 @@ "name": "18w43a", "packets": { "c2s": ["confirm_teleport", "block_nbt", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "entity_sound", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags", "chunk_light"] } }, "404": { @@ -1445,7 +1445,7 @@ "name": "1.13-pre9", "packets": { "c2s": ["confirm_teleport", "block_nbt", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "book", "entity_nbt", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "item_pick", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "anvil_item_name", "resourcepack", "advancement_tab", "trade", "beacon_effect", "hotbar_slot", "command_block", "minecart_command_block", "item_stack_create", "structure_block", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "390": { @@ -1461,7 +1461,7 @@ }, "s2c": { "login": ["channel", "kick", "encryption", "success", "compression"], - "play": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags" + "play": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "nbt_response", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags" ] } } @@ -1483,7 +1483,7 @@ }, "s2c": { "login": ["channel", "kick", "encryption", "success", "compression"], - "play": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags" + "play": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags" ] } } @@ -1497,7 +1497,7 @@ }, "s2c": { "login": ["channel", "kick", "encryption", "success", "compression"], - "play": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags" + "play": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags" ] } } @@ -1634,7 +1634,7 @@ "name": "18w01a", "packets": { "c2s": ["confirm_teleport", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "resourcepack", "advancement_tab", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "player_face", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "351": { @@ -1649,14 +1649,14 @@ "name": "17w49a", "packets": { "c2s": ["confirm_teleport", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "resourcepack", "advancement_tab", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes", "tags"] } }, "348": { "name": "17w48a", "packets": { "c2s": ["confirm_teleport", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "resourcepack", "advancement_tab", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect", "recipes"] } }, "347": { @@ -1671,7 +1671,7 @@ "name": "17w46a", "packets": { "c2s": ["confirm_teleport", "chat_message", "client_action", "settings", "command_suggestions", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "resourcepack", "advancement_tab", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "command_suggestions", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect"] } }, "344": { @@ -1682,7 +1682,7 @@ "name": "17w45a", "packets": { "c2s": ["confirm_teleport", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "resourcepack", "advancement_tab", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "chat_message", "blocks", "commands", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "stop_sound", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect"] } }, "342": { @@ -1713,7 +1713,7 @@ "name": "17w31a", "packets": { "c2s": ["confirm_teleport", "command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "crafting_recipe", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "resourcepack", "advancement_tab", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "crafting_recipe", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect"] } }, "335": { @@ -1733,7 +1733,7 @@ "name": "1.12-pre5", "packets": { "c2s": ["confirm_teleport", "crafting_grid", "command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "ground_change", "position", "position_rotation", "rotation", "move_vehicle", "steer_boat", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "resourcepack", "advancement_tab", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "empty_move", "relative_move", "movement_rotation", "rotation", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "advancement_tab", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "advancements", "entity_attributes", "entity_effect"] } }, "331": { @@ -1744,7 +1744,7 @@ "name": "1.12-pre3", "packets": { "c2s": ["crafting_grid", "confirm_teleport", "command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "resourcepack", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item", "advancement_tab"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "advancements", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect", "advancement_progress"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "advancements", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect", "advancement_progress"] } }, "329": { @@ -1795,7 +1795,7 @@ "name": "17w13a", "packets": { "c2s": ["crafting_grid", "confirm_teleport", "command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "toggle_fly", "player_action", "entity_action", "vehicle_input", "recipe_book", "resourcepack", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "advancements", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "advancements", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "unlock_recipes", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] } }, "317": { @@ -1898,7 +1898,7 @@ "type": "release", "packets": { "c2s": ["confirm_teleport", "command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "toggle_fly", "player_action", "entity_action", "vehicle_input", "resourcepack", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] } }, "109": { @@ -1998,7 +1998,7 @@ "name": "15w46a", "packets": { "c2s": ["confirm_teleport", "command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "toggle_fly", "player_action", "entity_action", "vehicle_input", "resourcepack", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] } }, "85": { @@ -2025,14 +2025,14 @@ "name": "15w43a", "packets": { "c2s": ["confirm_teleport", "command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "position", "position_rotation", "rotation", "ground_change", "move_vehicle", "steer_boat", "toggle_fly", "player_action", "entity_action", "vehicle_input", "resourcepack", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_status", "explosion", "unload_chunk", "compression", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "named_sound", "kick", "entity_event", "explosion", "unload_chunk", "compression", "game_event", "heartbeat", "chunk", "world_event", "particle", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "move_vehicle", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "entity_passenger", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "sound_event", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] } }, "79": { "name": "15w42a", "packets": { "c2s": ["command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "move_vehicle", "position", "position_rotation", "rotation", "ground_change", "toggle_fly", "player_action", "entity_action", "vehicle_input", "resourcepack", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item", "steer_boat", "confirm_teleport"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "kick", "entity_status", "explosion", "unload_chunk", "compression", "game_event", "heartbeat", "chunk", "world_event", "particle", "named_sound", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_passenger", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "kick", "entity_event", "explosion", "unload_chunk", "compression", "game_event", "heartbeat", "chunk", "world_event", "particle", "named_sound", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_passenger", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] } }, "78": { @@ -2043,7 +2043,7 @@ "name": "15w41a", "packets": { "c2s": ["command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "move_vehicle", "position", "position_rotation", "rotation", "ground_change", "toggle_fly", "player_action", "entity_action", "vehicle_input", "resourcepack", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item", "steer_boat"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "kick", "entity_status", "explosion", "unload_chunk", "compression", "game_event", "heartbeat", "chunk", "world_event", "particle", "named_sound", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_passenger", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "kick", "entity_event", "explosion", "unload_chunk", "compression", "game_event", "heartbeat", "chunk", "world_event", "particle", "named_sound", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_passenger", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] } }, "76": { @@ -2086,7 +2086,7 @@ "name": "15w36a", "packets": { "c2s": ["command_suggestions", "chat_message", "client_action", "settings", "container_action", "container_button", "container_click", "close_container", "channel", "entity_interact", "heartbeat", "position", "position_rotation", "rotation", "ground_change", "toggle_fly", "player_action", "entity_action", "vehicle_input", "resourcepack", "hotbar_slot", "item_stack_create", "sign_text", "swing_arm", "entity_spectate", "block_interact", "use_item"], - "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "kick", "entity_status", "explosion", "unload_chunk", "compression", "game_event", "heartbeat", "chunk", "world_event", "particle", "named_sound", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] + "s2c": ["entity_object_spawn", "entity_experience_orb", "global_entity_spawn", "entity_mob_spawn", "entity_painting", "entity_player", "entity_animation", "statistics", "block_break_animation", "block_data", "block_action", "block", "bossbar", "difficulty", "command_suggestions", "chat_message", "blocks", "container_action", "close_container", "open_container", "container_items", "container_properties", "container_item", "item_cooldown", "channel", "kick", "entity_event", "explosion", "unload_chunk", "compression", "game_event", "heartbeat", "chunk", "world_event", "particle", "named_sound", "initialize", "map", "relative_move", "movement_rotation", "rotation", "empty_move", "sign_editor", "player_abilities", "combat_event", "tab_list", "position_rotation", "entity_sleep", "entity_destroy", "entity_remove_effect", "resourcepack", "respawn", "head_rotation", "world_border", "camera", "hotbar_slot", "objective_position", "entity_data", "entity_attach", "velocity", "entity_equipment", "experience", "health", "objective", "teams", "scoreboard_score", "compass_position", "time", "title", "sign_text", "tab_list_text", "entity_collect", "teleport", "entity_attributes", "entity_effect"] } }, "66": { @@ -2109,7 +2109,7 @@ "name": "15w35a", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "use_item", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel", "entity_spectate", "resourcepack"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "unload_chunk", "blocks", "block_action", "block_break_animation", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack", "bossbar", "item_cooldown"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "unload_chunk", "blocks", "block_action", "block_break_animation", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack", "bossbar", "item_cooldown"] } }, "61": { @@ -2120,7 +2120,7 @@ "name": "15w34c", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "use_item", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel", "entity_spectate", "resourcepack"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack", "bossbar", "item_cooldown"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack", "bossbar", "item_cooldown"] } }, "59": { @@ -2167,7 +2167,7 @@ "name": "15w31a", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "use_item", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel", "entity_spectate", "resourcepack"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack", "bossbar"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack", "bossbar"] } }, "47": { @@ -2231,14 +2231,14 @@ "name": "14w32a", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel", "entity_spectate", "resourcepack"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack", "nbt_response"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack", "nbt_response"] } }, "32": { "name": "14w31a", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel", "entity_spectate", "resourcepack"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text", "resourcepack"] } }, "31": { @@ -2257,14 +2257,14 @@ "name": "14w28b", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel", "entity_spectate"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression", "tab_list_text"] } }, "27": { "name": "14w28a", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel", "entity_spectate"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title", "compression"] } }, "26": { @@ -2303,14 +2303,14 @@ "name": "14w20b", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel", "entity_spectate"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border", "title"] } }, "17": { "name": "14w19a", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel", "entity_spectate"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border"] } }, "16": { @@ -2321,7 +2321,7 @@ "name": "14w17a", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera", "world_border"] } }, "14": { @@ -2348,7 +2348,7 @@ "name": "14w05b", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event", "camera"] } }, "8": { @@ -2359,14 +2359,14 @@ "name": "14w04a", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty", "combat_event"] } }, "6": { "name": "14w03b", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick", "difficulty"] } }, "5": { @@ -2395,7 +2395,7 @@ "name": "13w41b", "packets": { "c2s": ["heartbeat", "chat_message", "entity_interact", "ground_change", "position", "rotation", "position_rotation", "player_action", "block_interact", "hotbar_slot", "swing_arm", "entity_action", "vehicle_input", "close_container", "container_click", "container_action", "item_stack_create", "container_button", "sign_text", "toggle_fly", "command_suggestions", "settings", "client_action", "channel"], - "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_status", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick"] + "s2c": ["heartbeat", "initialize", "chat_message", "time", "entity_equipment", "compass_position", "health", "respawn", "position_rotation", "hotbar_slot", "entity_sleep", "entity_animation", "entity_player", "entity_collect", "entity_object_spawn", "entity_mob_spawn", "entity_painting", "entity_experience_orb", "velocity", "entity_destroy", "empty_move", "relative_move", "rotation", "movement_rotation", "teleport", "head_rotation", "entity_event", "entity_attach", "entity_data", "entity_effect", "entity_remove_effect", "experience", "entity_attributes", "chunk", "blocks", "block", "block_action", "block_break_animation", "chunks", "explosion", "world_event", "named_sound", "particle", "game_event", "global_entity_spawn", "open_container", "close_container", "container_item", "container_items", "container_properties", "container_action", "sign_text", "legacy_map", "block_data", "sign_editor", "statistics", "legacy_tab_list", "player_abilities", "command_suggestions", "objective", "scoreboard_score", "objective_position", "teams", "channel", "kick"] } } }