BedrockProtocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

LGPL-3.0 License

Downloads
288.2K
Stars
123
Committers
28

Bot releases are visible (Hide)

BedrockProtocol - 17.1.0 for Minecraft Bedrock 1.19.50 Latest Release

Published by github-actions[bot] almost 2 years ago

Changes since 17.0.0

Protocol changes

Enum changes

  • Updated LevelSoundEvent enum to 1.19.50
  • ContainerUIIds adds a new member RECIPE_BOOK (21) - everything above and including ENCHANTING_INPUT shifts value up by 1
BedrockProtocol - 17.0.0 for Minecraft Bedrock 1.19.50

Published by github-actions[bot] almost 2 years ago

Changes since 16.0.0

Protocol changes

New packets

  • UpdateClientInputLocksPacket: exact purpose unclear, currently non-functional

Packet changes

  • StructureTemplateDataRequestPacket has a new type IMPORT
  • StructureTemplateDataResponsePacket has a new type IMPORT

Enum changes

  • EntityMetadataFlags added a new CAN_DASH (46) - everything above and including LINGER shifts value up by 1

Other changes

  • Fixed ClientboundMapItemDataPacket checking incorrect flags when reading scale field.
BedrockProtocol - 16.0.0 for Minecraft Bedrock 1.19.40

Published by github-actions[bot] almost 2 years ago

Changes since 15.0.0

  • Added missing field to ItemStackRequest (BC break)
  • Added missing field to StructureSettings (BC break)
  • Add color parameter to BossEventPacket::unknown6()
BedrockProtocol - 15.0.0 for Minecraft Bedrock 1.19.40

Published by github-actions[bot] almost 2 years ago

Changes since 14.0.0

  • CraftRecipeAutoStackRequestAction: added missing protocol change from 1.19.40 (BC breaking)
BedrockProtocol - 14.0.0 for Minecraft Bedrock 1.19.40

Published by github-actions[bot] almost 2 years ago

Changes since 13.x.x

Protocol changes

Packet changes

  • AddActorPacket now requires a new PropertySyncData $syncedProperties field
  • AddPlayerPacket now requires a new PropertySyncData $syncedProperties field
  • SetActorDataPacket now requires a new PropertySyncData $syncedProperties field

Enum changes

  • UpdateAbilitiesPacketLayer has a new EDITOR member

New types

  • PropertySyncData: Purpose currently unclear, but appears to be a planned replacement for actor metadata. Currently unused and can be filled with empty arrays for now.
BedrockProtocol - 13.0.0 for Minecraft Bedrock 1.19.30

Published by github-actions[bot] about 2 years ago

Changes since 12.x.x

Protocol changes

New packets

  • GameTestRequestPacket
  • GameTestResultsPacket
  • RequestNetworkSettingsPacket - this is now the first packet in a session, instead of LoginPacket
  • ServerStatsPacket

Removed packets

  • AdventureSettingsPacket

Packet changes

  • NetworkSettingsPacket has new fields int $compressionAlgorithm, bool $enableClientThrottling, int $clientThrottleThreshold, float $clientThrottleScalar
  • StructureBlockUpdatePacket has a new field bool $waterlogged
  • TextPacket has a new type TYPE_JSON_ANNOUNCEMENT

New enums

  • CompressionType - used by NetworkSettingsPacket

Other changes

  • RecipeIngredient now accepts an ItemDescriptor instead of ID+meta. This enables more features like selecting items based on tags, Molang code, or other conditions. The types of descriptors currently supported are:
    • IntIdMetaItemDescriptor - this is used by all current vanilla recipes and is essentially the same as what we had to begin with
    • MolangItemDescriptor - allows selecting compatible items based on a Molang code predicate
    • StringIdMetaItemDescriptor - same as IntIdMetaItemDescriptor, but uses string IDs and doesn't allow negative meta values (?)
    • TagItemDescriptor - allows selecting compatible items based on their type tags, like in Java (see the wiki)
BedrockProtocol - 12.2.0 for Minecraft Bedrock 1.19.21

Published by github-actions[bot] about 2 years ago

Changes since 12.1.0

  • Support for 1.19.21
  • Dropped support for 1.19.20

The only change known between 1.19.20 and 1.19.21 has to do with custom blocks. Nobody seems to have any specifics about it.

BedrockProtocol - 12.1.0 for Minecraft Bedrock 1.19.20

Published by github-actions[bot] about 2 years ago

Changes since 12.0.0

  • Added ContainerUIIds for working with the ItemStackRequest system
  • Added missing getter for photoId to PhotoInfoRequestPacket
  • Use PHP 8.0 features in the code in some places
BedrockProtocol - 12.0.0 for Minecraft Bedrock 1.19.20

Published by github-actions[bot] about 2 years ago

Changes since 11.0.x

Protocol changes

New packets

  • FeatureRegistryPacket - sends generator settings to the client for client-side chunk generation

New enums

  • ChatRestrictionLevel
  • AttributeModifierOperation
  • AttributeModifierTargetOperand

Packet changes

  • ClientboundMapItemDataPacket now contains a BlockPosition $origin field
  • MapInfoRequestPacket now contains a list<MapInfoRequestPacketClientPixel> - list of map pixels from the client's own chunk generation, to override pixels in the response packet. It's not clear why this is needed.
  • ModalFormResponsePacket
    • Now includes a nullable cancelReason field, which can be one of USER_CLOSED or USER_BUSY constants
    • Form data is now nullable, and will be null if the form was closed, rather than the JSON-encoded text null as a string.
  • NetworkChunkPublisherUpdatePacket now contains a list<ChunkPosition> $savedChunks - tells the client which chunks not to generate, if client-side chunk generation is enabled
  • StartGamePacket now contains a bool $enableClientSideChunkGeneration

Types

  • Attribute now requires list<AttributeModifer> in the constructor
  • LevelSettings contains the following new fields:
    • bool $disablePersona
    • bool $disableCustomSkins
    • int $chatRestrictionLevel - see ChatRestrictionLevel
    • bool $disablePlayerInteractions
  • ClientData JSON in LoginPacket now requires a new TrustedSkin bool

API changes

  • LevelChunkPacket now requires ChunkPosition instead of separate chunkX/chunkZ parameters
  • Added PacketSerializer->readOptional() and PacketSerializer->writeOptional() - used for boolean-prefixed optional types
BedrockProtocol - 11.0.4 for Minecraft Bedrock 1.19.10

Published by github-actions[bot] about 2 years ago

Changes since 11.0.3

  • Improved performance of PlayerAuthInputPacket->hasFlag().
BedrockProtocol - 11.0.3 for Minecraft Bedrock 1.19.10

Published by github-actions[bot] about 2 years ago

Changes since 11.0.2

  • Fixed bug in UIInventorySlotOffset introduced by 11.0.2.
BedrockProtocol - 11.0.2 for Minecraft Bedrock 1.19.10

Published by github-actions[bot] about 2 years ago

Changes since 11.0.1

  • Added UIInventorySlotOffset::SMITHING_TABLE offsets.
BedrockProtocol - 11.0.1 for Minecraft Bedrock 1.19.10

Published by github-actions[bot] over 2 years ago

Changes since 11.0.0

  • Added CraftingRecipeBlockType::SMITHING_TABLE
  • Updated documentation of DeathInfoPacket
BedrockProtocol - 11.0.0 for Minecraft Bedrock 1.19.10

Published by github-actions[bot] over 2 years ago

Changes since 10.0.x

Protocol changes

New packets

  • DeathInfoPacket - sets the subtitle text under You died! on the death screen
  • EditorNetworkPacket - unclear purpose
  • UpdateAbilitiesPacket - replaces the ability-specific parts of AdventureSettingsPacket (e.g. command permissions, build/mine flags, fly speed, etc).
  • UpdateAdventureSettingsPacket - sets some misc flags that aren't considered "abilities", such as noAttackingMobs, showNameTags, autoJump, etc. Intended to replace AdventureSettingsPacket.

Packet changes

  • AddActorPacket now requires an additional bodyYaw field (unclear purpose, since yaw is already body yaw)
  • AddPlayerPacket no longer accepts an actorUniqueId field
  • AddPlayerPacket now embeds an UpdateAbilitiesPacket instead of AdventureSettingsPacket
    • Actor unique ID must be specified in here now instead

Enum changes

  • PlayStatusPacket has new statuses LOGIN_FAILED_EDITOR_VANILLA and LOGIN_FAILED_VANILLA_EDITOR
  • ActorEvent has new members VIBRATION_DETECTED and DRINK_MILK

LoginPacket JWT changes

  • ClientData has a new IsEditorMode field

API changes

New enums

  • CommandPermission - used by AdventureSettingsPacket and UpdateAbilitiesPacket (this isn't really new to the game, but it was added to BedrockProtocol in this version)

Removed stuff

  • Removed permission constants in AdventureSettingsPacket - CommandPermission constants should now be used instead
BedrockProtocol - 10.0.1 for Minecraft Bedrock 1.19.0

Published by github-actions[bot] over 2 years ago

Changes since 10.0.0

  • Updated command argument type constants for 1.19.0.
  • Added command enum constraint flag constants to CommandEnumConstraint.
BedrockProtocol - 10.0.0 for Minecraft Bedrock 1.19.0

Published by github-actions[bot] over 2 years ago

Changes since 9.0.2

Protocol changes

Updated to support Bedrock 1.19.0 (BC breaks).

New packets

  • LessonProgressPacket
  • RequestAbilityPacket
  • RequestPermissionsPacket
  • ToastRequestPacket

Packet changes

  • PlayerActionPacket now requires a resultPosition field
  • PlayerAuthInputPacket now requires an interactionMode field
  • StartGamePacket now requires playerActorProperties and worldTemplateId fields

New enums

  • InteractionMode (used in PlayerAuthInputPacket)

Enum changes

  • PlayerAction has new cases START_ITEM_USE_ON and STOP_ITEM_USE_ON
BedrockProtocol - 9.0.2 for Minecraft Bedrock 1.18.30

Published by github-actions[bot] over 2 years ago

Changes since 9.0.1

  • Fixed incorrect encoding of molangVariablesJson in SpawnParticleEffectPacket.
BedrockProtocol - 9.0.1 for Minecraft Bedrock 1.18.30

Published by github-actions[bot] over 2 years ago

Changes since 9.0.0

  • Fixed AvailableCommandsPacket::ARG_TYPE_* constants being incorrect for 1.18.30.
BedrockProtocol - 9.0.0 for Minecraft Bedrock 1.18.30

Published by github-actions[bot] over 2 years ago

Changes since 8.0.2

Fixes

  • Fixed not reading all data from InteractPacket.
  • Fixed generation of ::create() static methods when types contained * (e.g. PHPStan constant wildcards).

Protocol changes

Updated to support Bedrock 1.18.30 (BC breaks)

New packets

  • AgentActionEventPacket
  • ChangeMobPropertyPacket
  • DimensionDataPacket
  • TickingAreasLoadStatusPacket

New enums

  • AgentActionType - used by AgentActionEventPacket
  • DimensionNameIds - used by DimensionDataPacket

New types

  • DimensionData - used by DimensionDataPacket

Changes

  • AddPlayerPacket now requires a gameMode field, which should be filled by a member of the GameMode enum.
  • AddVolumeEntityPacket now requires minBound, maxBound and dimension fields.
  • RemoveVolumeEntityPacket now requires a dimension field.
  • SpawnParticleEffectPacket now requires a molangVariablesJson field.
  • LevelSettings->seed is now ulongLE instead of svarint32
BedrockProtocol - 8.0.2 for Minecraft Bedrock 1.18.10

Published by github-actions[bot] over 2 years ago

Changes since 8.0.1

  • Fixed a buffer length underflow bug in LoginPacket decoding causing unchecked exceptions to be thrown.