setId((int) $id); } public static function init(){ self::register(self::OCEAN, new OceanBiome()); self::register(self::PLAINS, new PlainBiome()); self::register(self::DESERT, new DesertBiome()); self::register(self::MOUNTAINS, new MountainsBiome()); self::register(self::FOREST, new ForestBiome()); self::register(self::TAIGA, new TaigaBiome()); self::register(self::RIVER, new RiverBiome()); self::register(self::ICE_PLAINS, new IcePlainsBiome()); self::register(self::SWAMP, new SwampBiome()); self::register(self::SMALL_MOUNTAINS, new SmallMountainsBiome()); self::register(self::BIRCH_FOREST, new ForestBiome(ForestBiome::TYPE_BIRCH)); } /** * @param $id * * @return Biome */ public static function getBiome($id){ return isset(self::$biomes[$id]) ? self::$biomes[$id] : self::$biomes[self::OCEAN]; } public function clearPopulators(){ $this->populators = []; } public function addPopulator(Populator $populator){ $this->populators[] = $populator; } public function populateChunk(ChunkManager $level, $chunkX, $chunkZ, Random $random){ foreach($this->populators as $populator){ $populator->populate($level, $chunkX, $chunkZ, $random); } } public function getPopulators(){ return $this->populators; } public function setId($id){ if(!$this->registered){ $this->registered = true; $this->id = $id; } } public function getId(){ return $this->id; } public abstract function getName(); public function getMinElevation(){ return $this->minElevation; } public function getMaxElevation(){ return $this->maxElevation; } public function setElevation($min, $max){ $this->minElevation = $min; $this->maxElevation = $max; } /** * @return Block[] */ public function getGroundCover(){ return $this->groundCover; } /** * @param Block[] $covers */ public function setGroundCover(array $covers){ $this->groundCover = $covers; } public function getTemperature(){ return $this->temperature; } public function getRainfall(){ return $this->rainfall; } /** * @return int (randomness|Red|Green|Blue) */ abstract public function getColor(); }