diff --git a/src/data/bedrock/LegacyEntityIdToStringIdMap.php b/src/data/bedrock/LegacyEntityIdToStringIdMap.php new file mode 100644 index 000000000..84f46b116 --- /dev/null +++ b/src/data/bedrock/LegacyEntityIdToStringIdMap.php @@ -0,0 +1,69 @@ + + */ + private $legacyToString = []; + /** + * @var int[] + * @phpstan-var array + */ + private $stringToLegacy = []; + + public function __construct(){ + $rawJson = @file_get_contents(\pocketmine\RESOURCE_PATH . '/vanilla/entity_id_map.json'); + if($rawJson === false) throw new AssumptionFailedError("Missing required resource file"); + $mapping = json_decode($rawJson, true); + if(!is_array($mapping)) throw new AssumptionFailedError("Entity ID map should be a JSON object"); + foreach($mapping as $stringId => $legacyId){ + if(!is_string($stringId) or !is_int($legacyId)){ + throw new AssumptionFailedError("Block ID map should have string keys and int values"); + } + $this->legacyToString[$legacyId] = $stringId; + $this->stringToLegacy[$stringId] = $legacyId; + } + } + + public function legacyToString(int $legacy) : ?string{ + return $this->legacyToString[$legacy] ?? null; + } + + public function stringToLegacy(string $string) : ?int{ + return $this->stringToLegacy[$string] ?? null; + } +}