Skip to content

Instantly share code, notes, and snippets.

@Camotoy
Last active March 23, 2023 14:04
Show Gist options
  • Save Camotoy/3459458489f81817ea547f61d138b34a to your computer and use it in GitHub Desktop.
Save Camotoy/3459458489f81817ea547f61d138b34a to your computer and use it in GitHub Desktop.
Updating MCProtocolLib to 1.18

MCProtocolLib is moving to the same packet names that Minecraft: Java Edition uses internally. There is some steps involved, but hopefully this guide helps.

This guide is not perfect and is only based on updating Geyser to the new packet names. Please reach out in the comments or on Geyser's Discord (https://discord.gg/geysermc) for assistance.

Handshake packet: com.github.steveice10.mc.protocol.packet.handshake.client.HandshakePacket -> com.github.steveice10.mc.protocol.packet.handshake.serverbound.ClientIntentionPacket

Login packets

Rename com.github.steveice10.mc.protocol.packet.login.server. to com.github.steveice10.mc.protocol.packet.login.clientbound. Rename com.github.steveice10.mc.protocol.packet.login.client. to com.github.steveice10.mc.protocol.packet.login.serverbound.

Clientbound class renames: LoginDisconnectPacket is now prefixed with Clientbound LoginPluginRequest -> CustomQuery LoginSuccess -> GameProfile

Serverbound class renames: PluginResponse -> CustomQuery

Game data

Rename com.github.steveice10.mc.protocol.data.game.world. to com.github.steveice10.mc.protocol.data.game.level.

com.github.steveice10.mc.protocol.packet.ingame.clientbound.window.* -> com.github.steveice10.mc.protocol.packet.ingame.clientbound.inventory.*

com.github.steveice10.mc.protocol.packet.ingame.serverbound.window.* -> com.github.steveice10.mc.protocol.packet.ingame.serverbound.inventory.*

com.github.steveice10.mc.protocol.data.game.ClientRequest -> com.github.steveice10.mc.protocol.data.game.ClientCommand

com.github.steveice10.mc.protocol.data.game.chunk.Chunk -> com.github.steveice10.mc.protocol.data.game.chunk.ChunkSection

com.github.steveice10.mc.protocol.data.game.chunk.Column -> com.github.steveice10.mc.protocol.data.game.chunk.Chunk

com.github.steveice10.mc.protocol.data.game.entity.EntityStatus -> com.github.steveice10.mc.protocol.data.game.entity.EntityEvent

com.github.steveice10.mc.protocol.data.game.window.WindowAction -> com.github.steveice10.mc.protocol.data.game.inventory.ContainerActionType

com.github.steveice10.mc.protocol.data.game.window.WindowType -> com.github.steveice10.mc.protocol.data.game.inventory.ContainerType

com.github.steveice10.mc.protocol.data.game.window.**Param -> com.github.steveice10.mc.protocol.data.game.inventory.**Action

com.github.steveice10.mc.protocol.data.game.window.property.WindowProperty -> com.github.steveice10.mc.protocol.data.game.inventory.property.ContainerProperty

com.github.steveice10.mc.protocol.data.game.world.block.BlockChangeRecord -> com.github.steveice10.mc.protocol.data.game.level.block.BlockChangeEntry

com.github.steveice10.mc.protocol.data.game.world.effect.WorldEffect -> com.github.steveice10.mc.protocol.data.game.level.effect.LevelEvent

com.github.steveice10.mc.protocol.data.game.world.effect.ParticleEffect -> com.github.steveice10.mc.protocol.data.game.level.effect.ParticleEvent

com.github.steveice10.mc.protocol.data.game.world.effect.**EffectData -> com.github.steveice10.mc.protocol.data.game.level.effect.**EventData

com.github.steveice10.mc.protocol.data.game.world.notify.ClientNotivationValue -> com.github.steveice10.mc.protocol.data.game.level.notify.GameEventValue

com.github.steveice10.mc.protocol.data.game.entity.EntityStatus -> com.github.steveice10.mc.protocol.data.game.entity.EntityEvent

com.github.steveice10.mc.protocol.data.game.level.block.UpdatedTileType -> com.github.steveice10.mc.protocol.data.game.level.block.BlockEntityType

Anything in com.github.steveice10.mc.protocol.packet.ingame.serverbound.window moved to com.github.steveice10.mc.protocol.packet.ingame.serverbound.inventory and any usage of windowId / getWindowId() was replaced with containerId / getContainerId()

com.github.steveice10.mc.protocol.data.game.world.notify.ClientNotification -> com.github.steveice10.mc.protocol.data.game.level.notify.GameEvent

Ingame packets

Rename com.github.steveice10.mc.protocol.packet.ingame.server. to com.github.steveice10.mc.protocol.packet.ingame.clientbound. Rename com.github.steveice10.mc.protocol.packet.ingame.client. to com.github.steveice10.mc.protocol.packet.ingame.serverbound.

Rename com.github.steveice10.mc.protocol.packet.ingame.clientbound.Server to com.github.steveice10.mc.protocol.packet.ingame.clientbound.Clientbound Rename com.github.steveice10.mc.protocol.packet.ingame.serverbound.Client to com.github.steveice10.mc.protocol.packet.ingame.serverbound.Serverbound

Rename com.github.steveice10.mc.protocol.packet.ingame.clientbound.world. to com.github.steveice10.mc.protocol.packet.ingame.clientbound.level. Rename com.github.steveice10.mc.protocol.packet.ingame.serverbound.world. to com.github.steveice10.mc.protocol.packet.ingame.serverbound.level.

Clientbound class renames: AdvancementTab -> SelectAdvancementsTab Advancements -> UpdateAdvancements BossBar -> BossEvent DeclareCommands -> Commands DeclareRecipes -> UpdateRecipes DeclareTags -> UpdateTags Difficulty -> ChangeDifficulty JoinGame -> Login PlayerListEntry -> PlayerInfo PlayerListData -> TabList PluginMessage -> CustomPayload Statistics -> AwardStats UnlockRecipes -> Recipe

PlayerActionAck -> BlockBreakAck PlayerChangeHeldItem -> SetCarriedItem PlayerHealth -> SetHealth PlayerPositionRotation -> PlayerPosition PlayerSetExperience -> SetExperience

SpawnEntity -> AddEntity SpawnExpOrb -> AddExperienceOrb SpawnLivingEntity -> AddMob SpawnPainting -> AddPainting SpawnPlayer -> AddPlayer

EntityAnimation -> Animate EntityAttach -> SetEntityLink EntityCollectItem -> TakeItemEntity EntityEffect -> UpdateMobEffect EntityEquipment -> SetEquipment EntityHeadLook -> RotateHead EntityMetadata -> SetEntityData EntityPositionRotation -> MoveEntityPosRot EntityPosition -> MoveEntityPos EntityProperties -> UpdateAttributes EntityRemoveEffect -> RemoveMobEffect EntityRotation -> MoveEntityRot EntitySetPassengers -> SetPassengers EntityStatus -> EntityEvent EntityTeleport -> TeleportEntity EntityVelocity -> SetEntityMotion VehicleMove -> MoveVehicle

DisplayScoreboard -> SetDisplayObjective ScoreboardObjective -> SetObjective Team -> SetPlayerTeam UpdateScore -> SetScore

BlockBreakAnim -> BlockDestruction BlockChange -> BlockUpdate BlockValue -> BlockEvent ChunkData -> LevelChunkWithLight Explosion -> Explode MapData -> MapItemData MultiBlockChange -> SectionBlocksUpdate NotifyClient -> GameEvent PlayBuiltinSound -> Sound PlayEffect -> LevelEvent PlaySound -> CustomSound SpawnParticle -> LevelParticles SpawnPosition -> SetDefaultSpawnPosition UnloadChunk -> ForgetLevelChunk UpdateLight -> LightUpdate UpdateTileEntity -> BlockEntityData UpdateTime -> SetTime UpdateViewDistance -> SetChunkCacheRadius UpdateViewPosition -> SetChunkCacheCenter

CloseWindow -> ContainerClose OpenHorseWindow -> HorseScreenOpen OpenWindow -> OpenScreen SetSlot -> ContainerSetSlot TradeList -> MerchantOffers WindowItems -> ContainerSetContent WindowProperty -> ContainerSetData

Serverbound class renames: PluginMessage -> CustomPayload Request -> ClientCommand Settings -> ClientInformation

AdvancementsTab -> SeenAdvancements CreativeInventoryAction -> SetCreativeModeSlot ClickWindowButton -> ContainerButtonClick CloseWindow -> ContainerClose MoveItemToHotbar -> PickItem SetBeaconEffect -> SetBeacon UpdateCommandBlockMinecart -> SetCommandMinecart UpdateCommandBlock -> SetCommandBlock UpdateJigsaw -> SetJigsawBlock WindowAction -> ContainerClick

TeleportConfirm -> AcceptTeleportation SteerBoat -> PaddleBoat SteerVehicle -> PlayerInput UpdateSign -> SignUpdate VehicleMove -> MoveVehicle

PlayerChangeHeldItem -> SetCarriedItem PlayerInteractEntity -> Interact PlayerPlaceBlock -> UseItemOn PlayerPosition -> MovePlayerPos PlayerPositionRotation -> MovePlayerPosRot PlayerRotation -> MovePlayerRot PlayerState -> PlayerCommand PlayerSwingArm -> Swing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment