An implementation of the Minecraft: Bedrock Edition protocol in PHP
LGPL-3.0 License
Bot releases are visible (Hide)
Published by github-actions[bot] over 2 years ago
StringMetadataProperty::getValue()
.ClientboundPacket
and ServerboundPacket
to some newer packets.PlayerAuthInputPacket::create()
.PlayerAuthInputPacket::create()
.Published by github-actions[bot] over 2 years ago
CodeBuilderSourcePacket
PlayerStartItemCooldownPacket
ScriptMessagePacket
AddVolumeEntityPacket
now requires jsonIdentifier
and instanceName
fields.BossEventPacket
has a new TYPE_QUERY
type, and a new static method ::query()
.LevelChunkPacket
now requires clientSubChunkRequestsEnabled
field.SubChunkRequestPacket
now contains a list of requested subchunk positions relative to a base position. Its ::create()
has been changed to reflect this, and some getters have been replaced.SubChunkPacket
now contains a list of subchunk datas. Note that either all must have blob hashes (cache enabled), or all must not (cache disabled). Its ::create()
has been changed to reflect this, and some getters have been replaced.SubChunkPosition
in SubChunkRequestPacket
and SubChunkPacket
.LevelSoundEvent
constants.SubChunkRequestResult::SUCCESS_ALL_AIR
.EntityMetadataCollection->markDirty()
and EntityMetadataCollection->markAllDirty()
.ItemStackRequestAction
s have been added:
GrindstoneStackRequestAction
: this already existed in 1.18.0, but was never accounted forLoomStackRequestAction
: same as abovePlaceIntoBundleStackRequestAction
TakeFromBundleStackRequestAction
Published by github-actions[bot] over 2 years ago
ByteMetadataProperty
resulting in a crash.Published by github-actions[bot] almost 3 years ago
LevelEvent
constants.Published by github-actions[bot] almost 3 years ago
types\BossBarColor
class containing several constants.BossEventPacket::show()
now accepts an optional color
argument, which can be any member from the BossBarColor
class.PlayerAction::CRACK_BLOCK
constant (replaces CRACK_BREAK
, which was a typo and will be removed).PlayerAuthInputFlags
constants.EntityMetadataCollection::setAtomicBatch()
(useful for setting things like entity height/width, where both properties must be sent even if only one of them is actually changed).Published by dktapps almost 3 years ago
PlayerAuthInputPacket
.ActorEvent
constants.LevelSoundEvent
constants.EntityMetadataFlags
constants.Published by dktapps almost 3 years ago
EntityMetadataProperty::id()
(use EntityMetadataProperty->getTypeId()
or WhateverClassMetadataProperty::ID
instead).GameRule->getType()
has been renamed to GameRule->getTypeId()
.ItemStackRequestAction::getTypeId()
is no longer static.GameRule
subclass now declares an ID
constant.TransactionData
subclass now declares an ID
constant.ItemStackRequestAction
subclass now declares an ID
constant.EntityMetadataProperty
subclass now declares an ID
constant.Published by dktapps almost 3 years ago
responseType
field to StructureTemplateDataResponsePacket
.StructureTemplateDataRequestPacket
.StructureSettings
: animationMode
, animationSeconds
.StructureSettings
(incorrectly used big-endian instead of little-endian).#include
directives have been removed.tools/generate-create-static-methods.php
, used to generate ::create()
methods in packet classes.Published by dktapps almost 3 years ago
PlayerAuthInputPacket
.Published by dktapps almost 3 years ago
DisconnectPacket
not showing disconnection screen messages.Published by dktapps almost 3 years ago
PlayerAuthInputPacket
.Published by dktapps almost 3 years ago
ClientboundMapItemDataPacket::BITFLAG_MAP_CREATION
.::create()
static method. This should be preferred over the old way of new WhateverPacket
and then assigning fields, since it ensures you can't accidentally forget to assign a field.UnknownPacket
is removed. Unknown packets are now signified by null
returned from PacketBatch->getPackets()
.x
/y
/z
block position fields with BlockPosition
structure.CacheableNbt
is now used everywhere CompoundTag
s were used (except ItemStack
, because those use a different encoding ...)ActorEventPacket
action constants have been moved to types\ActorEvent
.LevelEventPacket::EVENT_*
constants have been moved to types\LevelEvent
.LevelSoundEventPacket::SOUND_*
constants have been moved to types\LevelSoundEvent
.PlayerActionPacket::ACTION_*
constants have been moved to types\PlayerAction
.actorUniqueId
fields in AddActorPacket
, AddPlayerPacket
, AddItemActorPacket
and AddPaintingPacket
are now mandatory and non-nullable.actor
is now consistently used instead of entity
. This affects the following things:
PacketSerializer->getEntityUniqueId()
PacketSerializer->getEntityRuntimeId()
PacketSerializer->putEntityUniqueId()
PacketSerializer->putEntityRuntimeId()
PacketSerializer->putByteRotation()
has been renamed to putRotationByte()
.PacketSerializer->getByteRotation()
has been renamed to getRotationByte()
.DisconnectPacket
now uses a nullable message
field. null
value indicates that the disconnection screen should not be shown.LevelChunkPacket::withoutCache()
and LevelChunkPacket::withCache()
have been removed. LevelChunkPacket
now has a standard ::create()
.LevelChunkPacket->cacheEnabled
has been removed. This is now represented by usedBlobHashes
being null instead.LevelSettings
has been extracted from StartGamePacket
.LevelSoundEventPacket::create()
now has a standardised signature. Unfortunately, this means it requires all fields to be specified, which may not be ideal for some use cases. So...LevelSoundEventPacket::nonActorSound()
static method has been added.LevelSoundEvent->position
is no longer nullable.AddPlayerPacket->headYaw
is no longer nullable, but is still optional (defaults to 0).actor
is now consistently used instead of entity
. This affects the following things:
entityUniqueId
and/or entityRuntimeId
fields in AddActorPacket
, AddPlayerPacket
, AddPaintingPacket
, AddItemActorPacket
, AdventureSettingsPacket
, AnimatePacket
, ContainerOpenPacket
, CreatePhotoPacket
, DebugInfoPacket
, EmotePacket
, MobArmorEquipmentPacket
, MobEffectPacket
, MobEquipmentPacket
, MotionPredictionHintsPacket
, MoveActorAbsolutePacket
, MoveActorDeltaPacket
, MovePlayerPacket
, NpcRequestPacket
, PlayerActionPacket
, PlayerListEntry
, RemoveActorPacket
, RespawnPacket
, SetActorDataPacket
, SetActorMotionPacket
, SetLocalPlayerAsInitializedPacket
, ScorePacketEntry
, ScoreboardIdentityPacketEntry
, SpawnParticleEffectPacket
, StartGamePacket
, UpdateAttributesPacket
, UpdateBlockSyncedPacket
, UpdateEquipPacket
, MapTrackedObject
, UseItemOnEntityTransactionData
bossEid
and playerEid
fields in BossEventPacket
(now bossActorUniqueId
and playerActorUniqueId
respectively)minecartEid
field in CommandBlockUpdatePacket
(now minecartActorRuntimeId
)playerEntityRuntimeId
field in EmoteListPacket
playerEntityUniqueId
field in UpdatePlayerGameTypePacket
ridingEid
field in MovePlayerPacket
(now ridingActorRuntimeId
)ownerEntityUniqueId
field in PhotoTransferPacket
playerEid
field in ShowCreditsPacket
(now playerActorRuntimeId
)target
field in TakeItemActorPacket
(now itemActorRuntimeId
)eid
field in TakeItemActorPacket
(now takerActorRuntimeId
)traderEid
field in UpdateTradePacket
(now traderActorUniqueId
)playerEid
field in UpdateTradePacket
(now playerActorUniqueId
)fromEntityUniqueId
and toEntityUniqueId
fields in EntityLink
(yes, some things weren't noticed until release was tagged)playerEntityUniqueId
field in CommandOriginData
syncedUpdateEntityUniqueId
field in UpdateSubChunkBlocksPacketEntry
position
is now consistently used instead of pos
for naming.ClientboundMapItemDataPacket
eids
-> parentMapIds
.UpdateTradePacket
isWilling
->isEconomyTrade
.ActorEventPacket
event
-> eventId
data
-> eventData
AdventureSettingsPacket
entityUniqueId
-> targetActorUniqueId
BiomeDefinitionListPacket
defs
-> definitions
BlockActorDataPacket
namedtag
-> nbt
CameraPacket
playerUniqueId
-> playerActorUniqueId
cameraUniqueId
-> cameraActorUniqueId
ContainerOpenPacket
type
-> windowType
CraftingDataPacket
entries
-> recipesWithTypeIds
CraftingEventPacket
type
-> windowType
id
-> recipeUUID
InteractPacket
target
-> targetActorRuntimeId
LabTablePacket
type
-> actionType
LevelEventPacket
evid
-> eventId
data
-> eventData
NpcRequestPacket
actionType
-> actionIndex
ResourcePackChunkDataPacket
progress
-> offset
StructureTemplateDataRequestPacket
structureTemplateResponseType
-> requestType
(no, this is not a typo)StructureTemplateDataResponsePacket
namedtag
-> nbt
SyncActorPropertyPacket
data
-> nbt
UpdateEquipPacket
namedtag
-> nbt
Published by dktapps almost 3 years ago
Published by dktapps almost 3 years ago
MineBlockStackRequestAction
has been renamed to hotbarSlot
.