Package org.spout.vanilla.world.generator.skylands.biome

Source Code of org.spout.vanilla.world.generator.skylands.biome.SkylandsBiome

/*
* This file is part of Vanilla.
*
* Copyright (c) 2011 Spout LLC <http://www.spout.org/>
* Vanilla is licensed under the Spout License Version 1.
*
* Vanilla is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option)
* any later version.
*
* In addition, 180 days after any changes are published, you can use the
* software, incorporating those changes, under the terms of the MIT license,
* as described in the Spout License Version 1.
*
* Vanilla is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for
* more details.
*
* You should have received a copy of the GNU Lesser General Public License,
* the MIT license and the Spout License Version 1 along with this program.
* If not, see <http://www.gnu.org/licenses/> for the GNU Lesser General Public
* License and see <http://spout.in/licensev1> for the full license, including
* the MIT license.
*/
package org.spout.vanilla.world.generator.skylands.biome;

import org.spout.cereal.config.ConfigurationNode;
import org.spout.cereal.config.annotated.Load;
import org.spout.cereal.config.annotated.Save;

import org.spout.vanilla.material.VanillaMaterials;
import org.spout.vanilla.world.generator.biome.VanillaBiome;
import org.spout.vanilla.world.generator.normal.biome.NormalBiome.NormalTallGrassFactory;
import org.spout.vanilla.world.generator.normal.biome.NormalBiome.NormalTreeWGOFactory;
import org.spout.vanilla.world.generator.normal.decorator.EmeraldOreDecorator;
import org.spout.vanilla.world.generator.normal.decorator.FlowerDecorator;
import org.spout.vanilla.world.generator.normal.decorator.PumpkinDecorator;
import org.spout.vanilla.world.generator.normal.decorator.TallGrassDecorator;
import org.spout.vanilla.world.generator.normal.decorator.TreeDecorator;
import org.spout.vanilla.world.generator.normal.populator.GroundCoverPopulator.GroundCoverBiome;
import org.spout.vanilla.world.generator.normal.populator.GroundCoverPopulator.GroundCoverLayer;
import org.spout.vanilla.world.generator.normal.populator.GroundCoverPopulator.GroundCoverUniformLayer;
import org.spout.vanilla.world.generator.normal.populator.GroundCoverPopulator.GroundCoverVariableLayer;
import org.spout.vanilla.world.generator.skylands.SkylandsGenerator;

public class SkylandsBiome extends VanillaBiome implements GroundCoverBiome {
  private GroundCoverLayer[] groundCover = new GroundCoverLayer[] {
      new GroundCoverUniformLayer(VanillaMaterials.GRASS, VanillaMaterials.GRASS, (byte) 1),
      new GroundCoverVariableLayer(VanillaMaterials.DIRT, VanillaMaterials.DIRT, (byte) 1, (byte) 4)
  };

  public SkylandsBiome(int biomeId) {
    super(biomeId);
    final TreeDecorator trees = new TreeDecorator();
    trees.setFactory(new NormalTreeWGOFactory());
    final TallGrassDecorator tallGrass = new TallGrassDecorator();
    tallGrass.setFactory(new NormalTallGrassFactory());
    final EmeraldOreDecorator emeraldOre = new EmeraldOreDecorator();
    emeraldOre.setMinimumElevation(SkylandsGenerator.MINIMUM);
    emeraldOre.setElevationRandomness(12);
    emeraldOre.setBaseAmount(2);
    emeraldOre.setRandomAmount(4);
    addDecorators(trees, new FlowerDecorator(), tallGrass, new PumpkinDecorator(), emeraldOre);
  }

  @Override
  public GroundCoverLayer[] getGroundCover() {
    return groundCover;
  }

  @Override
  public String getName() {
    return "Skylands";
  }

  @Load
  private void load(ConfigurationNode node) {
    final ConfigurationNode groundCoverNode = node.getNode("ground-cover");
    final int count = groundCoverNode.getKeys(false).size();
    if (count == 0) {
      save(node);
      return;
    }
    groundCover = new GroundCoverLayer[count];
    for (int i = 0; i < count; i++) {
      groundCover[i] = GroundCoverLayer.loadNew(groundCoverNode.getNode(Integer.toString(i + 1)));
    }
  }

  @Save
  private void save(ConfigurationNode node) {
    final ConfigurationNode groundCoverNode = node.getNode("ground-cover");
    byte number = 0;
    for (GroundCoverLayer layer : groundCover) {
      layer.save(groundCoverNode.getNode(Byte.toString(++number)));
    }
  }
}
TOP

Related Classes of org.spout.vanilla.world.generator.skylands.biome.SkylandsBiome

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.