mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-08-31 07:21:17 +00:00
Merge branch 'next-minor' into next-major
This commit is contained in:
commit
c82b43a586
3
.github/workflows/main.yml
vendored
3
.github/workflows/main.yml
vendored
@ -189,6 +189,9 @@ jobs:
|
|||||||
- name: Regenerate RuntimeEnum(De)serializer
|
- name: Regenerate RuntimeEnum(De)serializer
|
||||||
run: php build/generate-runtime-enum-serializers.php
|
run: php build/generate-runtime-enum-serializers.php
|
||||||
|
|
||||||
|
- name: Regenerate BedrockData available files constants
|
||||||
|
run: php build/generate-bedrockdata-path-consts.php
|
||||||
|
|
||||||
- name: Verify code is unchanged
|
- name: Verify code is unchanged
|
||||||
run: |
|
run: |
|
||||||
git diff
|
git diff
|
||||||
|
128
build/generate-bedrockdata-path-consts.php
Normal file
128
build/generate-bedrockdata-path-consts.php
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* ____ _ _ __ __ _ __ __ ____
|
||||||
|
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
||||||
|
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
||||||
|
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
||||||
|
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* @author PocketMine Team
|
||||||
|
* @link http://www.pocketmine.net/
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace pocketmine\build\generate_bedrockdata_path_consts;
|
||||||
|
|
||||||
|
use Webmozart\PathUtil\Path;
|
||||||
|
use function dirname;
|
||||||
|
use function fclose;
|
||||||
|
use function fopen;
|
||||||
|
use function fwrite;
|
||||||
|
use function is_file;
|
||||||
|
use function scandir;
|
||||||
|
use function str_replace;
|
||||||
|
use function strtoupper;
|
||||||
|
use const PHP_EOL;
|
||||||
|
use const pocketmine\BEDROCK_DATA_PATH;
|
||||||
|
use const SCANDIR_SORT_ASCENDING;
|
||||||
|
use const STDERR;
|
||||||
|
|
||||||
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
||||||
|
|
||||||
|
function constantify(string $permissionName) : string{
|
||||||
|
return strtoupper(str_replace([".", "-"], "_", $permissionName));
|
||||||
|
}
|
||||||
|
|
||||||
|
$files = scandir(BEDROCK_DATA_PATH, SCANDIR_SORT_ASCENDING);
|
||||||
|
if($files === false){
|
||||||
|
fwrite(STDERR, "Couldn't find any files in " . BEDROCK_DATA_PATH . PHP_EOL);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$consts = [];
|
||||||
|
|
||||||
|
foreach($files as $file){
|
||||||
|
if($file === '.' || $file === '..'){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if($file[0] === '.'){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$path = Path::join(BEDROCK_DATA_PATH, $file);
|
||||||
|
if(!is_file($path)){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach([
|
||||||
|
'README.md',
|
||||||
|
'LICENSE',
|
||||||
|
'composer.json',
|
||||||
|
] as $ignored){
|
||||||
|
if($file === $ignored){
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$consts[] = $file;
|
||||||
|
}
|
||||||
|
|
||||||
|
$output = fopen(dirname(__DIR__) . '/src/data/bedrock/BedrockDataFiles.php', 'wb');
|
||||||
|
if($output === false){
|
||||||
|
fwrite(STDERR, "Couldn't open output file" . PHP_EOL);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
fwrite($output, <<<'HEADER'
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* ____ _ _ __ __ _ __ __ ____
|
||||||
|
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
||||||
|
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
||||||
|
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
||||||
|
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* @author PocketMine Team
|
||||||
|
* @link http://www.pocketmine.net/
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace pocketmine\data\bedrock;
|
||||||
|
|
||||||
|
use const pocketmine\BEDROCK_DATA_PATH;
|
||||||
|
|
||||||
|
final class BedrockDataFiles{
|
||||||
|
private function __construct(){
|
||||||
|
//NOOP
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
HEADER
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach($consts as $constName => $fileName){
|
||||||
|
fwrite($output, "\tpublic const " . constantify($fileName) . " = BEDROCK_DATA_PATH . '/$fileName';\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
fwrite($output, "}\n");
|
||||||
|
fclose($output);
|
||||||
|
|
||||||
|
echo "Done. Don't forget to run CS fixup after generating code.\n";
|
@ -35,7 +35,7 @@
|
|||||||
"fgrosse/phpasn1": "^2.3",
|
"fgrosse/phpasn1": "^2.3",
|
||||||
"netresearch/jsonmapper": "^4.0",
|
"netresearch/jsonmapper": "^4.0",
|
||||||
"pocketmine/bedrock-block-upgrade-schema": "^1.0.0",
|
"pocketmine/bedrock-block-upgrade-schema": "^1.0.0",
|
||||||
"pocketmine/bedrock-data": "dev-modern-world-support@dev",
|
"pocketmine/bedrock-data": "~2.0.0+bedrock-1.19.60",
|
||||||
"pocketmine/bedrock-item-upgrade-schema": "^1.0.0",
|
"pocketmine/bedrock-item-upgrade-schema": "^1.0.0",
|
||||||
"pocketmine/bedrock-protocol": "~19.3.0+bedrock-1.19.62",
|
"pocketmine/bedrock-protocol": "~19.3.0+bedrock-1.19.62",
|
||||||
"pocketmine/binaryutils": "^0.2.1",
|
"pocketmine/binaryutils": "^0.2.1",
|
||||||
|
18
composer.lock
generated
18
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "ea992cf9b9be39c9d5251b7769f9d044",
|
"content-hash": "8d4f1e461bcbce908a6a51d3e73f0440",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "adhocore/json-comment",
|
"name": "adhocore/json-comment",
|
||||||
@ -276,16 +276,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pocketmine/bedrock-data",
|
"name": "pocketmine/bedrock-data",
|
||||||
"version": "dev-modern-world-support",
|
"version": "2.0.0+bedrock-1.19.60",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/pmmp/BedrockData.git",
|
"url": "https://github.com/pmmp/BedrockData.git",
|
||||||
"reference": "27cb4d5133d6cbe30018b759eb97e3fdc7036c3b"
|
"reference": "957e49b2381641af29f595e4f32ded3e76ce4723"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/pmmp/BedrockData/zipball/27cb4d5133d6cbe30018b759eb97e3fdc7036c3b",
|
"url": "https://api.github.com/repos/pmmp/BedrockData/zipball/957e49b2381641af29f595e4f32ded3e76ce4723",
|
||||||
"reference": "27cb4d5133d6cbe30018b759eb97e3fdc7036c3b",
|
"reference": "957e49b2381641af29f595e4f32ded3e76ce4723",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
@ -296,9 +296,9 @@
|
|||||||
"description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP",
|
"description": "Blobs of data generated from Minecraft: Bedrock Edition, used by PocketMine-MP",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/pmmp/BedrockData/issues",
|
"issues": "https://github.com/pmmp/BedrockData/issues",
|
||||||
"source": "https://github.com/pmmp/BedrockData/tree/modern-world-support"
|
"source": "https://github.com/pmmp/BedrockData/tree/2.0.0+bedrock-1.19.60"
|
||||||
},
|
},
|
||||||
"time": "2023-02-08T18:33:49+00:00"
|
"time": "2023-02-23T21:25:04+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pocketmine/bedrock-item-upgrade-schema",
|
"name": "pocketmine/bedrock-item-upgrade-schema",
|
||||||
@ -3369,9 +3369,7 @@
|
|||||||
],
|
],
|
||||||
"aliases": [],
|
"aliases": [],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"stability-flags": {
|
"stability-flags": [],
|
||||||
"pocketmine/bedrock-data": 20
|
|
||||||
},
|
|
||||||
"prefer-stable": false,
|
"prefer-stable": false,
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": {
|
"platform": {
|
||||||
|
50
src/data/bedrock/BedrockDataFiles.php
Normal file
50
src/data/bedrock/BedrockDataFiles.php
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* ____ _ _ __ __ _ __ __ ____
|
||||||
|
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
||||||
|
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
||||||
|
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
||||||
|
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* @author PocketMine Team
|
||||||
|
* @link http://www.pocketmine.net/
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace pocketmine\data\bedrock;
|
||||||
|
|
||||||
|
use const pocketmine\BEDROCK_DATA_PATH;
|
||||||
|
|
||||||
|
final class BedrockDataFiles{
|
||||||
|
private function __construct(){
|
||||||
|
//NOOP
|
||||||
|
}
|
||||||
|
|
||||||
|
public const BANNER_PATTERNS_JSON = BEDROCK_DATA_PATH . '/banner_patterns.json';
|
||||||
|
public const BIOME_DEFINITIONS_NBT = BEDROCK_DATA_PATH . '/biome_definitions.nbt';
|
||||||
|
public const BIOME_DEFINITIONS_FULL_NBT = BEDROCK_DATA_PATH . '/biome_definitions_full.nbt';
|
||||||
|
public const BIOME_ID_MAP_JSON = BEDROCK_DATA_PATH . '/biome_id_map.json';
|
||||||
|
public const BLOCK_ID_TO_ITEM_ID_MAP_JSON = BEDROCK_DATA_PATH . '/block_id_to_item_id_map.json';
|
||||||
|
public const BLOCK_STATE_META_MAP_JSON = BEDROCK_DATA_PATH . '/block_state_meta_map.json';
|
||||||
|
public const CANONICAL_BLOCK_STATES_NBT = BEDROCK_DATA_PATH . '/canonical_block_states.nbt';
|
||||||
|
public const COMMAND_ARG_TYPES_JSON = BEDROCK_DATA_PATH . '/command_arg_types.json';
|
||||||
|
public const CREATIVEITEMS_JSON = BEDROCK_DATA_PATH . '/creativeitems.json';
|
||||||
|
public const ENTITY_ID_MAP_JSON = BEDROCK_DATA_PATH . '/entity_id_map.json';
|
||||||
|
public const ENTITY_IDENTIFIERS_NBT = BEDROCK_DATA_PATH . '/entity_identifiers.nbt';
|
||||||
|
public const ITEM_TAGS_JSON = BEDROCK_DATA_PATH . '/item_tags.json';
|
||||||
|
public const LEVEL_SOUND_ID_MAP_JSON = BEDROCK_DATA_PATH . '/level_sound_id_map.json';
|
||||||
|
public const PARTICLE_ID_MAP_JSON = BEDROCK_DATA_PATH . '/particle_id_map.json';
|
||||||
|
public const R12_TO_CURRENT_BLOCK_MAP_BIN = BEDROCK_DATA_PATH . '/r12_to_current_block_map.bin';
|
||||||
|
public const R16_TO_CURRENT_ITEM_MAP_JSON = BEDROCK_DATA_PATH . '/r16_to_current_item_map.json';
|
||||||
|
public const REQUIRED_ITEM_LIST_JSON = BEDROCK_DATA_PATH . '/required_item_list.json';
|
||||||
|
}
|
@ -24,12 +24,11 @@ declare(strict_types=1);
|
|||||||
namespace pocketmine\data\bedrock;
|
namespace pocketmine\data\bedrock;
|
||||||
|
|
||||||
use pocketmine\utils\SingletonTrait;
|
use pocketmine\utils\SingletonTrait;
|
||||||
use Symfony\Component\Filesystem\Path;
|
|
||||||
|
|
||||||
final class LegacyBiomeIdToStringIdMap extends LegacyToStringIdMap{
|
final class LegacyBiomeIdToStringIdMap extends LegacyToStringIdMap{
|
||||||
use SingletonTrait;
|
use SingletonTrait;
|
||||||
|
|
||||||
public function __construct(){
|
public function __construct(){
|
||||||
parent::__construct(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'biome_id_map.json'));
|
parent::__construct(BedrockDataFiles::BIOME_ID_MAP_JSON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,12 +24,11 @@ declare(strict_types=1);
|
|||||||
namespace pocketmine\data\bedrock;
|
namespace pocketmine\data\bedrock;
|
||||||
|
|
||||||
use pocketmine\utils\SingletonTrait;
|
use pocketmine\utils\SingletonTrait;
|
||||||
use Symfony\Component\Filesystem\Path;
|
|
||||||
|
|
||||||
final class LegacyEntityIdToStringIdMap extends LegacyToStringIdMap{
|
final class LegacyEntityIdToStringIdMap extends LegacyToStringIdMap{
|
||||||
use SingletonTrait;
|
use SingletonTrait;
|
||||||
|
|
||||||
public function __construct(){
|
public function __construct(){
|
||||||
parent::__construct(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'entity_id_map.json'));
|
parent::__construct(BedrockDataFiles::ENTITY_ID_MAP_JSON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
6
src/network/mcpe/cache/StaticPacketCache.php
vendored
6
src/network/mcpe/cache/StaticPacketCache.php
vendored
@ -23,13 +23,13 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace pocketmine\network\mcpe\cache;
|
namespace pocketmine\network\mcpe\cache;
|
||||||
|
|
||||||
|
use pocketmine\data\bedrock\BedrockDataFiles;
|
||||||
use pocketmine\network\mcpe\protocol\AvailableActorIdentifiersPacket;
|
use pocketmine\network\mcpe\protocol\AvailableActorIdentifiersPacket;
|
||||||
use pocketmine\network\mcpe\protocol\BiomeDefinitionListPacket;
|
use pocketmine\network\mcpe\protocol\BiomeDefinitionListPacket;
|
||||||
use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer;
|
use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer;
|
||||||
use pocketmine\network\mcpe\protocol\types\CacheableNbt;
|
use pocketmine\network\mcpe\protocol\types\CacheableNbt;
|
||||||
use pocketmine\utils\Filesystem;
|
use pocketmine\utils\Filesystem;
|
||||||
use pocketmine\utils\SingletonTrait;
|
use pocketmine\utils\SingletonTrait;
|
||||||
use Symfony\Component\Filesystem\Path;
|
|
||||||
|
|
||||||
class StaticPacketCache{
|
class StaticPacketCache{
|
||||||
use SingletonTrait;
|
use SingletonTrait;
|
||||||
@ -43,8 +43,8 @@ class StaticPacketCache{
|
|||||||
|
|
||||||
private static function make() : self{
|
private static function make() : self{
|
||||||
return new self(
|
return new self(
|
||||||
BiomeDefinitionListPacket::create(self::loadCompoundFromFile(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'biome_definitions.nbt'))),
|
BiomeDefinitionListPacket::create(self::loadCompoundFromFile(BedrockDataFiles::BIOME_DEFINITIONS_NBT)),
|
||||||
AvailableActorIdentifiersPacket::create(self::loadCompoundFromFile(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'entity_identifiers.nbt')))
|
AvailableActorIdentifiersPacket::create(self::loadCompoundFromFile(BedrockDataFiles::ENTITY_IDENTIFIERS_NBT))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,16 +23,16 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace pocketmine\network\mcpe\convert;
|
namespace pocketmine\network\mcpe\convert;
|
||||||
|
|
||||||
|
use pocketmine\data\bedrock\BedrockDataFiles;
|
||||||
use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary;
|
use pocketmine\network\mcpe\protocol\serializer\ItemTypeDictionary;
|
||||||
use pocketmine\utils\Filesystem;
|
use pocketmine\utils\Filesystem;
|
||||||
use pocketmine\utils\SingletonTrait;
|
use pocketmine\utils\SingletonTrait;
|
||||||
use Symfony\Component\Filesystem\Path;
|
|
||||||
|
|
||||||
final class GlobalItemTypeDictionary{
|
final class GlobalItemTypeDictionary{
|
||||||
use SingletonTrait;
|
use SingletonTrait;
|
||||||
|
|
||||||
private static function make() : self{
|
private static function make() : self{
|
||||||
$data = Filesystem::fileGetContents(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'required_item_list.json'));
|
$data = Filesystem::fileGetContents(BedrockDataFiles::REQUIRED_ITEM_LIST_JSON);
|
||||||
$dictionary = ItemTypeDictionaryFromDataHelper::loadFromString($data);
|
$dictionary = ItemTypeDictionaryFromDataHelper::loadFromString($data);
|
||||||
return new self($dictionary);
|
return new self($dictionary);
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace pocketmine\network\mcpe\convert;
|
namespace pocketmine\network\mcpe\convert;
|
||||||
|
|
||||||
|
use pocketmine\data\bedrock\BedrockDataFiles;
|
||||||
use pocketmine\data\bedrock\block\BlockStateData;
|
use pocketmine\data\bedrock\block\BlockStateData;
|
||||||
use pocketmine\data\bedrock\block\BlockStateSerializeException;
|
use pocketmine\data\bedrock\block\BlockStateSerializeException;
|
||||||
use pocketmine\data\bedrock\block\BlockStateSerializer;
|
use pocketmine\data\bedrock\block\BlockStateSerializer;
|
||||||
@ -31,7 +32,6 @@ use pocketmine\utils\AssumptionFailedError;
|
|||||||
use pocketmine\utils\Filesystem;
|
use pocketmine\utils\Filesystem;
|
||||||
use pocketmine\utils\SingletonTrait;
|
use pocketmine\utils\SingletonTrait;
|
||||||
use pocketmine\world\format\io\GlobalBlockStateHandlers;
|
use pocketmine\world\format\io\GlobalBlockStateHandlers;
|
||||||
use Symfony\Component\Filesystem\Path;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @internal
|
* @internal
|
||||||
@ -50,8 +50,8 @@ final class RuntimeBlockMapping{
|
|||||||
private int $fallbackStateId;
|
private int $fallbackStateId;
|
||||||
|
|
||||||
private static function make() : self{
|
private static function make() : self{
|
||||||
$canonicalBlockStatesRaw = Filesystem::fileGetContents(Path::join(\pocketmine\BEDROCK_DATA_PATH, "canonical_block_states.nbt"));
|
$canonicalBlockStatesRaw = Filesystem::fileGetContents(BedrockDataFiles::CANONICAL_BLOCK_STATES_NBT);
|
||||||
$metaMappingRaw = Filesystem::fileGetContents(Path::join(\pocketmine\BEDROCK_DATA_PATH, 'block_state_meta_map.json'));
|
$metaMappingRaw = Filesystem::fileGetContents(BedrockDataFiles::BLOCK_STATE_META_MAP_JSON);
|
||||||
return new self(
|
return new self(
|
||||||
BlockStateDictionary::loadFromString($canonicalBlockStatesRaw, $metaMappingRaw),
|
BlockStateDictionary::loadFromString($canonicalBlockStatesRaw, $metaMappingRaw),
|
||||||
GlobalBlockStateHandlers::getSerializer()
|
GlobalBlockStateHandlers::getSerializer()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user