diff --git a/src/network/mcpe/convert/BlockStateDictionary.php b/src/network/mcpe/convert/BlockStateDictionary.php index b70038220..55dcd2210 100644 --- a/src/network/mcpe/convert/BlockStateDictionary.php +++ b/src/network/mcpe/convert/BlockStateDictionary.php @@ -130,6 +130,7 @@ final class BlockStateDictionary{ $entries = []; + $uniqueNames = []; foreach(self::loadPaletteFromString($blockPaletteContents) as $i => $state){ $meta = $metaMap[$i] ?? null; if($meta === null){ @@ -138,7 +139,8 @@ final class BlockStateDictionary{ if(!is_int($meta)){ throw new \InvalidArgumentException("Invalid metaMap offset $i, expected int, got " . get_debug_type($meta)); } - $entries[$i] = new BlockStateDictionaryEntry($state, $meta); + $uniqueName = $uniqueNames[$state->getName()] ??= $state->getName(); + $entries[$i] = new BlockStateDictionaryEntry($uniqueName, $state->getStates(), $meta); } return new self($entries); diff --git a/src/network/mcpe/convert/BlockStateDictionaryEntry.php b/src/network/mcpe/convert/BlockStateDictionaryEntry.php index 746e93977..994695df2 100644 --- a/src/network/mcpe/convert/BlockStateDictionaryEntry.php +++ b/src/network/mcpe/convert/BlockStateDictionaryEntry.php @@ -34,15 +34,17 @@ use const SORT_STRING; final class BlockStateDictionaryEntry{ - private string $stateName; private string $rawStateProperties; + /** + * @param Tag[] $stateProperties + */ public function __construct( - BlockStateData $stateData, + private string $stateName, + array $stateProperties, private int $meta ){ - $this->stateName = $stateData->getName(); - $this->rawStateProperties = self::encodeStateProperties($stateData->getStates()); + $this->rawStateProperties = self::encodeStateProperties($stateProperties); } public function getStateName() : string{ return $this->stateName; }