An implementation of the Minecraft: Bedrock Edition protocol in PHP
UpdateClientInputLocksPacket
: exact purpose unclear, currently non-functionalStructureTemplateDataRequestPacket
has a new type IMPORT
StructureTemplateDataResponsePacket
has a new type IMPORT
EntityMetadataFlags
added a new CAN_DASH
(46) - everything above and including LINGER
shifts value up by 1ClientboundMapItemDataPacket
checking incorrect flags when reading scale field.ItemStackRequest
(BC break)StructureSettings
(BC break)BossEventPacket::unknown6()
AddActorPacket
now requires a new PropertySyncData $syncedProperties
fieldAddPlayerPacket
now requires a new PropertySyncData $syncedProperties
fieldSetActorDataPacket
now requires a new PropertySyncData $syncedProperties
fieldUpdateAbilitiesPacketLayer
has a new EDITOR
memberPropertySyncData
: Purpose currently unclear, but appears to be a planned replacement for actor metadata. Currently unused and can be filled with empty arrays for now.GameTestRequestPacket
GameTestResultsPacket
RequestNetworkSettingsPacket
- this is now the first packet in a session, instead of LoginPacket
ServerStatsPacket
AdventureSettingsPacket
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
CompressionType
- used by NetworkSettingsPacket
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 withMolangItemDescriptor
- allows selecting compatible items based on a Molang code predicateStringIdMetaItemDescriptor
- 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)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.
ContainerUIIds
for working with the ItemStackRequest
systemphotoId
to PhotoInfoRequestPacket
FeatureRegistryPacket
- sends generator settings to the client for client-side chunk generationChatRestrictionLevel
AttributeModifierOperation
AttributeModifierTargetOperand
ClientboundMapItemDataPacket
now contains a BlockPosition $origin
fieldMapInfoRequestPacket
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
cancelReason
field, which can be one of USER_CLOSED
or USER_BUSY
constantsnull
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 enabledStartGamePacket
now contains a bool $enableClientSideChunkGeneration
Attribute
now requires list<AttributeModifer>
in the constructorLevelSettings
contains the following new fields:
bool $disablePersona
bool $disableCustomSkins
int $chatRestrictionLevel
- see ChatRestrictionLevel
bool $disablePlayerInteractions
ClientData
JSON in LoginPacket
now requires a new TrustedSkin
boolLevelChunkPacket
now requires ChunkPosition
instead of separate chunkX/chunkZ parametersPacketSerializer->readOptional()
and PacketSerializer->writeOptional()
- used for boolean-prefixed optional typesPlayerAuthInputPacket->hasFlag()
.