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);