Skip to content

Commit b28a5d3

Browse files
authored
Bedrock 1.26.20 (#7040)
1 parent 9c2871e commit b28a5d3

28 files changed

Lines changed: 134 additions & 149 deletions

changelogs/5.43.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# 5.43.0
2+
Released 9th May 2026.
3+
4+
This is a support release for Minecraft: Bedrock Edition 1.26.20 (display version 26.20).
5+
6+
**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.
7+
Do not update plugin minimum API versions unless you need new features added in this release.
8+
9+
**WARNING: If your plugin uses the `pocketmine\network\mcpe` namespace, you're not shielded by API change constraints.**
10+
Consider using the `mcpe-protocol` directive in `plugin.yml` as a constraint if you're using packets directly.
11+
12+
## General
13+
- Added support for Minecraft: Bedrock Edition 1.26.20 (display version 26.20). (@dries-c)
14+
- Removed support for earlier versions.

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
"adhocore/json-comment": "~1.2.0",
3636
"netresearch/jsonmapper": "~v5.0.0",
3737
"pocketmine/bedrock-block-upgrade-schema": "~5.2.0+bedrock-1.21.110",
38-
"pocketmine/bedrock-data": "~6.5.0+bedrock-1.26.10",
39-
"pocketmine/bedrock-item-upgrade-schema": "~1.16.0+bedrock-1.21.110",
40-
"pocketmine/bedrock-protocol": "~56.1.0+bedrock-1.26.10",
38+
"pocketmine/bedrock-data": "~6.6.0+bedrock-1.26.20",
39+
"pocketmine/bedrock-item-upgrade-schema": "~1.17.0+bedrock-1.26.20",
40+
"pocketmine/bedrock-protocol": "~57.0.0+bedrock-1.26.20",
4141
"pocketmine/binaryutils": "^0.2.1",
4242
"pocketmine/callback-validator": "~1.0.4",
4343
"pocketmine/color": "^0.3.0",

composer.lock

Lines changed: 19 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

generated/data/bedrock/block/BlockTypeNames.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ private function __construct(){
219219
public const CHEST = "minecraft:chest";
220220
public const CHIPPED_ANVIL = "minecraft:chipped_anvil";
221221
public const CHISELED_BOOKSHELF = "minecraft:chiseled_bookshelf";
222+
public const CHISELED_CINNABAR = "minecraft:chiseled_cinnabar";
222223
public const CHISELED_COPPER = "minecraft:chiseled_copper";
223224
public const CHISELED_DEEPSLATE = "minecraft:chiseled_deepslate";
224225
public const CHISELED_NETHER_BRICKS = "minecraft:chiseled_nether_bricks";
@@ -228,10 +229,21 @@ private function __construct(){
228229
public const CHISELED_RESIN_BRICKS = "minecraft:chiseled_resin_bricks";
229230
public const CHISELED_SANDSTONE = "minecraft:chiseled_sandstone";
230231
public const CHISELED_STONE_BRICKS = "minecraft:chiseled_stone_bricks";
232+
public const CHISELED_SULFUR = "minecraft:chiseled_sulfur";
231233
public const CHISELED_TUFF = "minecraft:chiseled_tuff";
232234
public const CHISELED_TUFF_BRICKS = "minecraft:chiseled_tuff_bricks";
233235
public const CHORUS_FLOWER = "minecraft:chorus_flower";
234236
public const CHORUS_PLANT = "minecraft:chorus_plant";
237+
public const CINNABAR = "minecraft:cinnabar";
238+
public const CINNABAR_BRICK_DOUBLE_SLAB = "minecraft:cinnabar_brick_double_slab";
239+
public const CINNABAR_BRICK_SLAB = "minecraft:cinnabar_brick_slab";
240+
public const CINNABAR_BRICK_STAIRS = "minecraft:cinnabar_brick_stairs";
241+
public const CINNABAR_BRICK_WALL = "minecraft:cinnabar_brick_wall";
242+
public const CINNABAR_BRICKS = "minecraft:cinnabar_bricks";
243+
public const CINNABAR_DOUBLE_SLAB = "minecraft:cinnabar_double_slab";
244+
public const CINNABAR_SLAB = "minecraft:cinnabar_slab";
245+
public const CINNABAR_STAIRS = "minecraft:cinnabar_stairs";
246+
public const CINNABAR_WALL = "minecraft:cinnabar_wall";
235247
public const CLAY = "minecraft:clay";
236248
public const CLIENT_REQUEST_PLACEHOLDER_BLOCK = "minecraft:client_request_placeholder_block";
237249
public const CLOSED_EYEBLOSSOM = "minecraft:closed_eyeblossom";
@@ -957,6 +969,11 @@ private function __construct(){
957969
public const POLISHED_BLACKSTONE_SLAB = "minecraft:polished_blackstone_slab";
958970
public const POLISHED_BLACKSTONE_STAIRS = "minecraft:polished_blackstone_stairs";
959971
public const POLISHED_BLACKSTONE_WALL = "minecraft:polished_blackstone_wall";
972+
public const POLISHED_CINNABAR = "minecraft:polished_cinnabar";
973+
public const POLISHED_CINNABAR_DOUBLE_SLAB = "minecraft:polished_cinnabar_double_slab";
974+
public const POLISHED_CINNABAR_SLAB = "minecraft:polished_cinnabar_slab";
975+
public const POLISHED_CINNABAR_STAIRS = "minecraft:polished_cinnabar_stairs";
976+
public const POLISHED_CINNABAR_WALL = "minecraft:polished_cinnabar_wall";
960977
public const POLISHED_DEEPSLATE = "minecraft:polished_deepslate";
961978
public const POLISHED_DEEPSLATE_DOUBLE_SLAB = "minecraft:polished_deepslate_double_slab";
962979
public const POLISHED_DEEPSLATE_SLAB = "minecraft:polished_deepslate_slab";
@@ -970,6 +987,11 @@ private function __construct(){
970987
public const POLISHED_GRANITE_DOUBLE_SLAB = "minecraft:polished_granite_double_slab";
971988
public const POLISHED_GRANITE_SLAB = "minecraft:polished_granite_slab";
972989
public const POLISHED_GRANITE_STAIRS = "minecraft:polished_granite_stairs";
990+
public const POLISHED_SULFUR = "minecraft:polished_sulfur";
991+
public const POLISHED_SULFUR_DOUBLE_SLAB = "minecraft:polished_sulfur_double_slab";
992+
public const POLISHED_SULFUR_SLAB = "minecraft:polished_sulfur_slab";
993+
public const POLISHED_SULFUR_STAIRS = "minecraft:polished_sulfur_stairs";
994+
public const POLISHED_SULFUR_WALL = "minecraft:polished_sulfur_wall";
973995
public const POLISHED_TUFF = "minecraft:polished_tuff";
974996
public const POLISHED_TUFF_DOUBLE_SLAB = "minecraft:polished_tuff_double_slab";
975997
public const POLISHED_TUFF_SLAB = "minecraft:polished_tuff_slab";
@@ -978,6 +1000,7 @@ private function __construct(){
9781000
public const POPPY = "minecraft:poppy";
9791001
public const PORTAL = "minecraft:portal";
9801002
public const POTATOES = "minecraft:potatoes";
1003+
public const POTENT_SULFUR = "minecraft:potent_sulfur";
9811004
public const POWDER_SNOW = "minecraft:powder_snow";
9821005
public const POWERED_COMPARATOR = "minecraft:powered_comparator";
9831006
public const POWERED_REPEATER = "minecraft:powered_repeater";
@@ -1172,6 +1195,16 @@ private function __construct(){
11721195
public const STRIPPED_WARPED_STEM = "minecraft:stripped_warped_stem";
11731196
public const STRUCTURE_BLOCK = "minecraft:structure_block";
11741197
public const STRUCTURE_VOID = "minecraft:structure_void";
1198+
public const SULFUR = "minecraft:sulfur";
1199+
public const SULFUR_BRICK_DOUBLE_SLAB = "minecraft:sulfur_brick_double_slab";
1200+
public const SULFUR_BRICK_SLAB = "minecraft:sulfur_brick_slab";
1201+
public const SULFUR_BRICK_STAIRS = "minecraft:sulfur_brick_stairs";
1202+
public const SULFUR_BRICK_WALL = "minecraft:sulfur_brick_wall";
1203+
public const SULFUR_BRICKS = "minecraft:sulfur_bricks";
1204+
public const SULFUR_DOUBLE_SLAB = "minecraft:sulfur_double_slab";
1205+
public const SULFUR_SLAB = "minecraft:sulfur_slab";
1206+
public const SULFUR_STAIRS = "minecraft:sulfur_stairs";
1207+
public const SULFUR_WALL = "minecraft:sulfur_wall";
11751208
public const SUNFLOWER = "minecraft:sunflower";
11761209
public const SUSPICIOUS_GRAVEL = "minecraft:suspicious_gravel";
11771210
public const SUSPICIOUS_SAND = "minecraft:suspicious_sand";

generated/data/bedrock/item/ItemTypeNames.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,8 @@ final class ItemTypeNames{
566566
public const STRING = "minecraft:string";
567567
public const SUGAR = "minecraft:sugar";
568568
public const SUGAR_CANE = "minecraft:sugar_cane";
569+
public const SULFUR_CUBE_BUCKET = "minecraft:sulfur_cube_bucket";
570+
public const SULFUR_CUBE_SPAWN_EGG = "minecraft:sulfur_cube_spawn_egg";
569571
public const SUSPICIOUS_STEW = "minecraft:suspicious_stew";
570572
public const SWEET_BERRIES = "minecraft:sweet_berries";
571573
public const TADPOLE_BUCKET = "minecraft:tadpole_bucket";

src/VersionInfo.php

Lines changed: 2 additions & 2 deletions
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.42.2";
35-
public const IS_DEVELOPMENT_BUILD = true;
34+
public const BASE_VERSION = "5.43.0";
35+
public const IS_DEVELOPMENT_BUILD = false;
3636
public const BUILD_CHANNEL = "stable";
3737
public const GITHUB_URL = "https://github.com/pmmp/PocketMine-MP";
3838

src/crafting/CraftingManagerFromDataHelper.php

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
namespace pocketmine\crafting;
2525

26-
use pocketmine\crafting\json\FurnaceRecipeData;
2726
use pocketmine\crafting\json\ItemStackData;
2827
use pocketmine\crafting\json\PotionContainerChangeRecipeData;
2928
use pocketmine\crafting\json\PotionTypeRecipeData;
@@ -44,6 +43,7 @@
4443
use pocketmine\world\format\io\GlobalItemDataHandlers;
4544
use Symfony\Component\Filesystem\Path;
4645
use function base64_decode;
46+
use function count;
4747
use function get_debug_type;
4848
use function is_array;
4949
use function is_object;
@@ -215,6 +215,11 @@ public static function make(string $directoryPath) : CraftingManager{
215215
"stonecutter" => ShapelessRecipeType::STONECUTTER,
216216
"smithing_table" => ShapelessRecipeType::SMITHING,
217217
"cartography_table" => ShapelessRecipeType::CARTOGRAPHY,
218+
"furnace" => FurnaceType::FURNACE,
219+
"blast_furnace" => FurnaceType::BLAST_FURNACE,
220+
"smoker" => FurnaceType::SMOKER,
221+
"campfire" => FurnaceType::CAMPFIRE,
222+
"soul_campfire" => FurnaceType::SOUL_CAMPFIRE,
218223
default => null
219224
};
220225
if($recipeType === null){
@@ -237,11 +242,23 @@ public static function make(string $directoryPath) : CraftingManager{
237242
$outputs[] = $output;
238243
}
239244
//TODO: check unlocking requirements - our current system doesn't support this
240-
$result->registerShapelessRecipe(new ShapelessRecipe(
241-
$inputs,
242-
$outputs,
243-
$recipeType
244-
));
245+
246+
if($recipeType instanceof FurnaceType){
247+
if(count($inputs) !== 1 || count($outputs) !== 1){
248+
throw new SavedDataLoadingException("Furnace recipes must have exactly 1 input and 1 output");
249+
}
250+
251+
$result->getFurnaceRecipeManager($recipeType)->register(new FurnaceRecipe(
252+
$outputs[0],
253+
$inputs[0]
254+
));
255+
}else{
256+
$result->registerShapelessRecipe(new ShapelessRecipe(
257+
$inputs,
258+
$outputs,
259+
$recipeType
260+
));
261+
}
245262
}
246263
foreach(self::loadJsonArrayOfObjectsFile(Path::join($directoryPath, 'shaped_crafting.json'), ShapedRecipeData::class) as $recipe){
247264
if($recipe->block !== "crafting_table"){ //TODO: filter others out for now to avoid breaking economics
@@ -270,31 +287,6 @@ public static function make(string $directoryPath) : CraftingManager{
270287
$outputs
271288
));
272289
}
273-
foreach(self::loadJsonArrayOfObjectsFile(Path::join($directoryPath, 'smelting.json'), FurnaceRecipeData::class) as $recipe){
274-
$furnaceType = match ($recipe->block){
275-
"furnace" => FurnaceType::FURNACE,
276-
"blast_furnace" => FurnaceType::BLAST_FURNACE,
277-
"smoker" => FurnaceType::SMOKER,
278-
"campfire" => FurnaceType::CAMPFIRE,
279-
"soul_campfire" => FurnaceType::SOUL_CAMPFIRE,
280-
default => null
281-
};
282-
if($furnaceType === null){
283-
continue;
284-
}
285-
$output = self::deserializeItemStack($recipe->output);
286-
if($output === null){
287-
continue;
288-
}
289-
$input = self::deserializeIngredient($recipe->input);
290-
if($input === null){
291-
continue;
292-
}
293-
$result->getFurnaceRecipeManager($furnaceType)->register(new FurnaceRecipe(
294-
$output,
295-
$input
296-
));
297-
}
298290

299291
foreach(self::loadJsonArrayOfObjectsFile(Path::join($directoryPath, 'potion_type.json'), PotionTypeRecipeData::class) as $recipe){
300292
$input = self::deserializeIngredient($recipe->input);

src/crafting/json/FurnaceRecipeData.php

Lines changed: 0 additions & 42 deletions
This file was deleted.

src/entity/animation/ArmSwingAnimation.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function __construct(private Living $entity){}
3434

3535
public function encode() : array{
3636
return [
37-
ActorEventPacket::create($this->entity->getId(), ActorEvent::ARM_SWING, 0)
37+
ActorEventPacket::create($this->entity->getId(), ActorEvent::ARM_SWING, 0, null)
3838
];
3939
}
4040
}

src/entity/animation/ArrowShakeAnimation.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function __construct(
3636

3737
public function encode() : array{
3838
return [
39-
ActorEventPacket::create($this->arrow->getId(), ActorEvent::ARROW_SHAKE, $this->durationInTicks)
39+
ActorEventPacket::create($this->arrow->getId(), ActorEvent::ARROW_SHAKE, $this->durationInTicks, null)
4040
];
4141
}
4242
}

0 commit comments

Comments
 (0)