BedrockProtocol Versions Save

An implementation of the Minecraft: Bedrock Edition protocol in PHP

17.1.0+bedrock-1.19.50

1 year 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

17.0.0+bedrock-1.19.50

1 year 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.

16.0.0+bedrock-1.19.40

1 year 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()

15.0.0+bedrock-1.19.40

1 year ago

Changes since 14.0.0

  • CraftRecipeAutoStackRequestAction: added missing protocol change from 1.19.40 (BC breaking)

14.0.0+bedrock-1.19.40

1 year 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.

13.0.0+bedrock-1.19.30

1 year 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)

12.2.0+bedrock-1.19.21

1 year 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.

12.1.0+bedrock-1.19.20

1 year 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

12.0.0+bedrock-1.19.20

1 year 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

11.0.4+bedrock-1.19.10

1 year ago

Changes since 11.0.3

  • Improved performance of PlayerAuthInputPacket->hasFlag().