62 $stringIndexLookup = [];
64 $addString =
function(
string $string) use (&$stringIndexLookup, &$strings) :
int{
65 if(isset($stringIndexLookup[$string])){
66 return $stringIndexLookup[$string];
69 $stringIndexLookup[$string] = count($stringIndexLookup);
71 return $stringIndexLookup[$string];
75 $addString($entry->getBiomeName()),
77 $entry->getTemperature(),
78 $entry->getDownfall(),
79 $entry->getFoliageSnow(),
82 $entry->getMapWaterColor(),
84 $entry->
getTags() ===
null ?
null : array_map($addString, $entry->
getTags()),
85 $entry->getChunkGenData(),
88 return self::create($definitionData, $strings);
108 $this->locateString($data->getNameIndex()),
110 $data->getTemperature(),
111 $data->getDownfall(),
112 $data->getFoliageSnow(),
115 $data->getMapWaterColor(),
117 ($tagIndexes = $data->getTagIndexes()) === null ? null : array_map($this->locateString(...), $tagIndexes),
118 $data->getChunkGenData(),
119 ), $this->definitionData);
123 for($i = 0, $count = VarInt::readUnsignedInt($in); $i < $count; ++$i){
124 $this->definitionData[] = BiomeDefinitionData::read($in);
127 for($i = 0, $count = VarInt::readUnsignedInt($in); $i < $count; ++$i){
128 $this->strings[] = CommonTypes::getString($in);
133 VarInt::writeUnsignedInt($out, count($this->definitionData));
134 foreach($this->definitionData as $data){
138 VarInt::writeUnsignedInt($out, count($this->strings));
139 foreach($this->strings as $string){
140 CommonTypes::putString($out, $string);