Skip to content

Commit ba6828c

Browse files
dries-cdktapps
andauthored
Release 5.22.0 (Bedrock 1.21.50 support) (#6559)
Co-authored-by: Dylan K. Taylor <[email protected]>
1 parent c56d4d3 commit ba6828c

13 files changed

+120
-33
lines changed

changelogs/5.22.md

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# 5.22.0
2+
Released 4th December 2024.
3+
4+
**For Minecraft: Bedrock Edition 1.21.50**
5+
6+
This is a support release for Minecraft: Bedrock Edition 1.21.50.
7+
8+
**Plugin compatibility:** Plugins for previous 5.x versions will run unchanged on this release, unless they use internal APIs, reflection, or packages like the `pocketmine\network\mcpe` or `pocketmine\data` namespace.
9+
Do not update plugin minimum API versions unless you need new features added in this release.
10+
11+
**WARNING: If your plugin uses the `pocketmine\network\mcpe` namespace, you're not shielded by API change constraints.**
12+
Consider using the `mcpe-protocol` directive in `plugin.yml` as a constraint if you're using packets directly.
13+
14+
## General
15+
- Added support for Minecraft: Bedrock Edition 1.21.50.
16+
- Removed support for earlier versions.

composer.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@
3434
"adhocore/json-comment": "~1.2.0",
3535
"pocketmine/netresearch-jsonmapper": "~v4.4.999",
3636
"pocketmine/bedrock-block-upgrade-schema": "~5.0.0+bedrock-1.21.40",
37-
"pocketmine/bedrock-data": "~2.14.0+bedrock-1.21.40",
38-
"pocketmine/bedrock-item-upgrade-schema": "~1.13.0+bedrock-1.21.40",
39-
"pocketmine/bedrock-protocol": "~35.0.0+bedrock-1.21.40",
37+
"pocketmine/bedrock-data": "~2.15.0+bedrock-1.21.50",
38+
"pocketmine/bedrock-item-upgrade-schema": "~1.14.0+bedrock-1.21.50",
39+
"pocketmine/bedrock-protocol": "~35.0.0+bedrock-1.21.50",
4040
"pocketmine/binaryutils": "^0.2.1",
4141
"pocketmine/callback-validator": "^1.0.2",
4242
"pocketmine/color": "^0.3.0",

composer.lock

+19-19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/VersionInfo.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131

3232
final class VersionInfo{
3333
public const NAME = "PocketMine-MP";
34-
public const BASE_VERSION = "5.21.3";
35-
public const IS_DEVELOPMENT_BUILD = true;
34+
public const BASE_VERSION = "5.22.0";
35+
public const IS_DEVELOPMENT_BUILD = false;
3636
public const BUILD_CHANNEL = "stable";
3737

3838
/**

src/data/bedrock/BedrockDataFiles.php

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ private function __construct(){
4545
public const ITEM_TAGS_JSON = BEDROCK_DATA_PATH . '/item_tags.json';
4646
public const LEVEL_SOUND_ID_MAP_JSON = BEDROCK_DATA_PATH . '/level_sound_id_map.json';
4747
public const PARTICLE_ID_MAP_JSON = BEDROCK_DATA_PATH . '/particle_id_map.json';
48+
public const PROTOCOL_INFO_JSON = BEDROCK_DATA_PATH . '/protocol_info.json';
4849
public const R12_TO_CURRENT_BLOCK_MAP_BIN = BEDROCK_DATA_PATH . '/r12_to_current_block_map.bin';
4950
public const R16_TO_CURRENT_ITEM_MAP_JSON = BEDROCK_DATA_PATH . '/r16_to_current_item_map.json';
5051
public const REQUIRED_ITEM_LIST_JSON = BEDROCK_DATA_PATH . '/required_item_list.json';

src/data/bedrock/BiomeIds.php

+1
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,5 @@ private function __construct(){
122122
public const DEEP_DARK = 190;
123123
public const MANGROVE_SWAMP = 191;
124124
public const CHERRY_GROVE = 192;
125+
public const PALE_GARDEN = 193;
125126
}

src/data/bedrock/block/BlockStateNames.php

+6
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,17 @@ private function __construct(){
9393
public const MC_VERTICAL_HALF = "minecraft:vertical_half";
9494
public const MOISTURIZED_AMOUNT = "moisturized_amount";
9595
public const MULTI_FACE_DIRECTION_BITS = "multi_face_direction_bits";
96+
public const NATURAL = "natural";
9697
public const OCCUPIED_BIT = "occupied_bit";
9798
public const OMINOUS = "ominous";
9899
public const OPEN_BIT = "open_bit";
99100
public const ORIENTATION = "orientation";
100101
public const OUTPUT_LIT_BIT = "output_lit_bit";
101102
public const OUTPUT_SUBTRACT_BIT = "output_subtract_bit";
103+
public const PALE_MOSS_CARPET_SIDE_EAST = "pale_moss_carpet_side_east";
104+
public const PALE_MOSS_CARPET_SIDE_NORTH = "pale_moss_carpet_side_north";
105+
public const PALE_MOSS_CARPET_SIDE_SOUTH = "pale_moss_carpet_side_south";
106+
public const PALE_MOSS_CARPET_SIDE_WEST = "pale_moss_carpet_side_west";
102107
public const PERSISTENT_BIT = "persistent_bit";
103108
public const PILLAR_AXIS = "pillar_axis";
104109
public const PORTAL_AXIS = "portal_axis";
@@ -116,6 +121,7 @@ private function __construct(){
116121
public const STABILITY_CHECK = "stability_check";
117122
public const STRUCTURE_BLOCK_TYPE = "structure_block_type";
118123
public const SUSPENDED_BIT = "suspended_bit";
124+
public const TIP = "tip";
119125
public const TOGGLE_BIT = "toggle_bit";
120126
public const TORCH_FACING_DIRECTION = "torch_facing_direction";
121127
public const TRIAL_SPAWNER_STATE = "trial_spawner_state";

src/data/bedrock/block/BlockStateStringValues.php

+16
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,22 @@ private function __construct(){
106106
public const ORIENTATION_UP_WEST = "up_west";
107107
public const ORIENTATION_WEST_UP = "west_up";
108108

109+
public const PALE_MOSS_CARPET_SIDE_EAST_NONE = "none";
110+
public const PALE_MOSS_CARPET_SIDE_EAST_SHORT = "short";
111+
public const PALE_MOSS_CARPET_SIDE_EAST_TALL = "tall";
112+
113+
public const PALE_MOSS_CARPET_SIDE_NORTH_NONE = "none";
114+
public const PALE_MOSS_CARPET_SIDE_NORTH_SHORT = "short";
115+
public const PALE_MOSS_CARPET_SIDE_NORTH_TALL = "tall";
116+
117+
public const PALE_MOSS_CARPET_SIDE_SOUTH_NONE = "none";
118+
public const PALE_MOSS_CARPET_SIDE_SOUTH_SHORT = "short";
119+
public const PALE_MOSS_CARPET_SIDE_SOUTH_TALL = "tall";
120+
121+
public const PALE_MOSS_CARPET_SIDE_WEST_NONE = "none";
122+
public const PALE_MOSS_CARPET_SIDE_WEST_SHORT = "short";
123+
public const PALE_MOSS_CARPET_SIDE_WEST_TALL = "tall";
124+
109125
public const PILLAR_AXIS_X = "x";
110126
public const PILLAR_AXIS_Y = "y";
111127
public const PILLAR_AXIS_Z = "z";

src/data/bedrock/block/BlockTypeNames.php

+34
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ private function __construct(){
192192
public const CAVE_VINES_HEAD_WITH_BERRIES = "minecraft:cave_vines_head_with_berries";
193193
public const CHAIN = "minecraft:chain";
194194
public const CHAIN_COMMAND_BLOCK = "minecraft:chain_command_block";
195+
public const CHALKBOARD = "minecraft:chalkboard";
195196
public const CHEMICAL_HEAT = "minecraft:chemical_heat";
196197
public const CHERRY_BUTTON = "minecraft:cherry_button";
197198
public const CHERRY_DOOR = "minecraft:cherry_door";
@@ -219,6 +220,7 @@ private function __construct(){
219220
public const CHISELED_POLISHED_BLACKSTONE = "minecraft:chiseled_polished_blackstone";
220221
public const CHISELED_QUARTZ_BLOCK = "minecraft:chiseled_quartz_block";
221222
public const CHISELED_RED_SANDSTONE = "minecraft:chiseled_red_sandstone";
223+
public const CHISELED_RESIN_BRICKS = "minecraft:chiseled_resin_bricks";
222224
public const CHISELED_SANDSTONE = "minecraft:chiseled_sandstone";
223225
public const CHISELED_STONE_BRICKS = "minecraft:chiseled_stone_bricks";
224226
public const CHISELED_TUFF = "minecraft:chiseled_tuff";
@@ -227,6 +229,7 @@ private function __construct(){
227229
public const CHORUS_PLANT = "minecraft:chorus_plant";
228230
public const CLAY = "minecraft:clay";
229231
public const CLIENT_REQUEST_PLACEHOLDER_BLOCK = "minecraft:client_request_placeholder_block";
232+
public const CLOSED_EYEBLOSSOM = "minecraft:closed_eyeblossom";
230233
public const COAL_BLOCK = "minecraft:coal_block";
231234
public const COAL_ORE = "minecraft:coal_ore";
232235
public const COARSE_DIRT = "minecraft:coarse_dirt";
@@ -262,6 +265,7 @@ private function __construct(){
262265
public const CRACKED_STONE_BRICKS = "minecraft:cracked_stone_bricks";
263266
public const CRAFTER = "minecraft:crafter";
264267
public const CRAFTING_TABLE = "minecraft:crafting_table";
268+
public const CREAKING_HEART = "minecraft:creaking_heart";
265269
public const CREEPER_HEAD = "minecraft:creeper_head";
266270
public const CRIMSON_BUTTON = "minecraft:crimson_button";
267271
public const CRIMSON_DOOR = "minecraft:crimson_door";
@@ -831,6 +835,7 @@ private function __construct(){
831835
public const OBSERVER = "minecraft:observer";
832836
public const OBSIDIAN = "minecraft:obsidian";
833837
public const OCHRE_FROGLIGHT = "minecraft:ochre_froglight";
838+
public const OPEN_EYEBLOSSOM = "minecraft:open_eyeblossom";
834839
public const ORANGE_CANDLE = "minecraft:orange_candle";
835840
public const ORANGE_CANDLE_CAKE = "minecraft:orange_candle_cake";
836841
public const ORANGE_CARPET = "minecraft:orange_carpet";
@@ -856,6 +861,26 @@ private function __construct(){
856861
public const OXIDIZED_DOUBLE_CUT_COPPER_SLAB = "minecraft:oxidized_double_cut_copper_slab";
857862
public const PACKED_ICE = "minecraft:packed_ice";
858863
public const PACKED_MUD = "minecraft:packed_mud";
864+
public const PALE_HANGING_MOSS = "minecraft:pale_hanging_moss";
865+
public const PALE_MOSS_BLOCK = "minecraft:pale_moss_block";
866+
public const PALE_MOSS_CARPET = "minecraft:pale_moss_carpet";
867+
public const PALE_OAK_BUTTON = "minecraft:pale_oak_button";
868+
public const PALE_OAK_DOOR = "minecraft:pale_oak_door";
869+
public const PALE_OAK_DOUBLE_SLAB = "minecraft:pale_oak_double_slab";
870+
public const PALE_OAK_FENCE = "minecraft:pale_oak_fence";
871+
public const PALE_OAK_FENCE_GATE = "minecraft:pale_oak_fence_gate";
872+
public const PALE_OAK_HANGING_SIGN = "minecraft:pale_oak_hanging_sign";
873+
public const PALE_OAK_LEAVES = "minecraft:pale_oak_leaves";
874+
public const PALE_OAK_LOG = "minecraft:pale_oak_log";
875+
public const PALE_OAK_PLANKS = "minecraft:pale_oak_planks";
876+
public const PALE_OAK_PRESSURE_PLATE = "minecraft:pale_oak_pressure_plate";
877+
public const PALE_OAK_SAPLING = "minecraft:pale_oak_sapling";
878+
public const PALE_OAK_SLAB = "minecraft:pale_oak_slab";
879+
public const PALE_OAK_STAIRS = "minecraft:pale_oak_stairs";
880+
public const PALE_OAK_STANDING_SIGN = "minecraft:pale_oak_standing_sign";
881+
public const PALE_OAK_TRAPDOOR = "minecraft:pale_oak_trapdoor";
882+
public const PALE_OAK_WALL_SIGN = "minecraft:pale_oak_wall_sign";
883+
public const PALE_OAK_WOOD = "minecraft:pale_oak_wood";
859884
public const PEARLESCENT_FROGLIGHT = "minecraft:pearlescent_froglight";
860885
public const PEONY = "minecraft:peony";
861886
public const PETRIFIED_OAK_DOUBLE_SLAB = "minecraft:petrified_oak_double_slab";
@@ -994,6 +1019,13 @@ private function __construct(){
9941019
public const REINFORCED_DEEPSLATE = "minecraft:reinforced_deepslate";
9951020
public const REPEATING_COMMAND_BLOCK = "minecraft:repeating_command_block";
9961021
public const RESERVED6 = "minecraft:reserved6";
1022+
public const RESIN_BLOCK = "minecraft:resin_block";
1023+
public const RESIN_BRICK_DOUBLE_SLAB = "minecraft:resin_brick_double_slab";
1024+
public const RESIN_BRICK_SLAB = "minecraft:resin_brick_slab";
1025+
public const RESIN_BRICK_STAIRS = "minecraft:resin_brick_stairs";
1026+
public const RESIN_BRICK_WALL = "minecraft:resin_brick_wall";
1027+
public const RESIN_BRICKS = "minecraft:resin_bricks";
1028+
public const RESIN_CLUMP = "minecraft:resin_clump";
9971029
public const RESPAWN_ANCHOR = "minecraft:respawn_anchor";
9981030
public const ROSE_BUSH = "minecraft:rose_bush";
9991031
public const SAND = "minecraft:sand";
@@ -1096,6 +1128,8 @@ private function __construct(){
10961128
public const STRIPPED_MANGROVE_WOOD = "minecraft:stripped_mangrove_wood";
10971129
public const STRIPPED_OAK_LOG = "minecraft:stripped_oak_log";
10981130
public const STRIPPED_OAK_WOOD = "minecraft:stripped_oak_wood";
1131+
public const STRIPPED_PALE_OAK_LOG = "minecraft:stripped_pale_oak_log";
1132+
public const STRIPPED_PALE_OAK_WOOD = "minecraft:stripped_pale_oak_wood";
10991133
public const STRIPPED_SPRUCE_LOG = "minecraft:stripped_spruce_log";
11001134
public const STRIPPED_SPRUCE_WOOD = "minecraft:stripped_spruce_wood";
11011135
public const STRIPPED_WARPED_HYPHAE = "minecraft:stripped_warped_hyphae";

src/data/bedrock/item/ItemTypeNames.php

+8
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ final class ItemTypeNames{
7575
public const BLEACH = "minecraft:bleach";
7676
public const BLUE_BUNDLE = "minecraft:blue_bundle";
7777
public const BLUE_DYE = "minecraft:blue_dye";
78+
public const BOARD = "minecraft:board";
7879
public const BOAT = "minecraft:boat";
7980
public const BOGGED_SPAWN_EGG = "minecraft:bogged_spawn_egg";
8081
public const BOLT_ARMOR_TRIM_SMITHING_TEMPLATE = "minecraft:bolt_armor_trim_smithing_template";
@@ -154,6 +155,7 @@ final class ItemTypeNames{
154155
public const CORAL_FAN = "minecraft:coral_fan";
155156
public const CORAL_FAN_DEAD = "minecraft:coral_fan_dead";
156157
public const COW_SPAWN_EGG = "minecraft:cow_spawn_egg";
158+
public const CREAKING_SPAWN_EGG = "minecraft:creaking_spawn_egg";
157159
public const CREEPER_BANNER_PATTERN = "minecraft:creeper_banner_pattern";
158160
public const CREEPER_SPAWN_EGG = "minecraft:creeper_spawn_egg";
159161
public const CRIMSON_DOOR = "minecraft:crimson_door";
@@ -398,6 +400,11 @@ final class ItemTypeNames{
398400
public const ORANGE_DYE = "minecraft:orange_dye";
399401
public const OXIDIZED_COPPER_DOOR = "minecraft:oxidized_copper_door";
400402
public const PAINTING = "minecraft:painting";
403+
public const PALE_OAK_BOAT = "minecraft:pale_oak_boat";
404+
public const PALE_OAK_CHEST_BOAT = "minecraft:pale_oak_chest_boat";
405+
public const PALE_OAK_DOOR = "minecraft:pale_oak_door";
406+
public const PALE_OAK_HANGING_SIGN = "minecraft:pale_oak_hanging_sign";
407+
public const PALE_OAK_SIGN = "minecraft:pale_oak_sign";
401408
public const PANDA_SPAWN_EGG = "minecraft:panda_spawn_egg";
402409
public const PAPER = "minecraft:paper";
403410
public const PARROT_SPAWN_EGG = "minecraft:parrot_spawn_egg";
@@ -448,6 +455,7 @@ final class ItemTypeNames{
448455
public const RED_FLOWER = "minecraft:red_flower";
449456
public const REDSTONE = "minecraft:redstone";
450457
public const REPEATER = "minecraft:repeater";
458+
public const RESIN_BRICK = "minecraft:resin_brick";
451459
public const RIB_ARMOR_TRIM_SMITHING_TEMPLATE = "minecraft:rib_armor_trim_smithing_template";
452460
public const ROTTEN_FLESH = "minecraft:rotten_flesh";
453461
public const SADDLE = "minecraft:saddle";

src/network/mcpe/handler/InGamePacketHandler.php

+8-7
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
use pocketmine\network\mcpe\protocol\PlayerInputPacket;
7878
use pocketmine\network\mcpe\protocol\PlayerSkinPacket;
7979
use pocketmine\network\mcpe\protocol\RequestChunkRadiusPacket;
80+
use pocketmine\network\mcpe\protocol\serializer\BitSet;
8081
use pocketmine\network\mcpe\protocol\ServerSettingsRequestPacket;
8182
use pocketmine\network\mcpe\protocol\SetActorMotionPacket;
8283
use pocketmine\network\mcpe\protocol\SetPlayerGameTypePacket;
@@ -135,7 +136,7 @@ class InGamePacketHandler extends PacketHandler{
135136
protected ?Vector3 $lastPlayerAuthInputPosition = null;
136137
protected ?float $lastPlayerAuthInputYaw = null;
137138
protected ?float $lastPlayerAuthInputPitch = null;
138-
protected ?int $lastPlayerAuthInputFlags = null;
139+
protected ?BitSet $lastPlayerAuthInputFlags = null;
139140

140141
public bool $forceMoveSync = false;
141142

@@ -161,9 +162,9 @@ public function handleMovePlayer(MovePlayerPacket $packet) : bool{
161162
return true;
162163
}
163164

164-
private function resolveOnOffInputFlags(int $inputFlags, int $startFlag, int $stopFlag) : ?bool{
165-
$enabled = ($inputFlags & (1 << $startFlag)) !== 0;
166-
$disabled = ($inputFlags & (1 << $stopFlag)) !== 0;
165+
private function resolveOnOffInputFlags(BitSet $inputFlags, int $startFlag, int $stopFlag) : ?bool{
166+
$enabled = $inputFlags->get($startFlag);
167+
$disabled = $inputFlags->get($stopFlag);
167168
if($enabled !== $disabled){
168169
return $enabled;
169170
}
@@ -215,7 +216,7 @@ public function handlePlayerAuthInput(PlayerAuthInputPacket $packet) : bool{
215216
if($inputFlags !== $this->lastPlayerAuthInputFlags){
216217
$this->lastPlayerAuthInputFlags = $inputFlags;
217218

218-
$sneaking = $packet->hasFlag(PlayerAuthInputFlags::SNEAKING);
219+
$sneaking = $inputFlags->get(PlayerAuthInputFlags::SNEAKING);
219220
if($this->player->isSneaking() === $sneaking){
220221
$sneaking = null;
221222
}
@@ -233,10 +234,10 @@ public function handlePlayerAuthInput(PlayerAuthInputPacket $packet) : bool{
233234
$this->player->sendData([$this->player]);
234235
}
235236

236-
if($packet->hasFlag(PlayerAuthInputFlags::START_JUMPING)){
237+
if($inputFlags->get(PlayerAuthInputFlags::START_JUMPING)){
237238
$this->player->jump();
238239
}
239-
if($packet->hasFlag(PlayerAuthInputFlags::MISSED_SWING)){
240+
if($inputFlags->get(PlayerAuthInputFlags::MISSED_SWING)){
240241
$this->player->missSwing();
241242
}
242243
}

src/network/mcpe/handler/ItemStackResponseBuilder.php

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ public function build() : ItemStackResponse{
9393
$item->getCount(),
9494
$itemStackInfo->getStackId(),
9595
$item->getCustomName(),
96+
$item->getCustomName(),
9697
$item instanceof Durable ? $item->getDamage() : 0,
9798
);
9899
}

0 commit comments

Comments
 (0)