- 1,057
- 50
- 234
Добрый день. Делаю аддон для GC3
Вопрос: как сделать подобную генерацию измерения?
Т.е.
Основной слой кастомного блока(TestBlocks.blockone пример), а сверху снег, только не везде, а в случайных местах.
И как сделать каньоны, длинные, километровые.
Код:
Вопрос: как сделать подобную генерацию измерения?
Т.е.
Основной слой кастомного блока(TestBlocks.blockone пример), а сверху снег, только не везде, а в случайных местах.
И как сделать каньоны, длинные, километровые.
Код:
Код:
package blessentumble.moons.europajupiter.dimension;
import java.util.ArrayList;
import java.util.List;
import micdoodle8.mods.galacticraft.api.prefab.core.BlockMetaPair;
import micdoodle8.mods.galacticraft.api.prefab.world.gen.BiomeDecoratorSpace;
import micdoodle8.mods.galacticraft.api.prefab.world.gen.ChunkProviderSpace;
import micdoodle8.mods.galacticraft.api.prefab.world.gen.MapGenBaseMeta;
import micdoodle8.mods.galacticraft.core.blocks.GCBlocks;
import micdoodle8.mods.galacticraft.core.entities.EntityEvolvedCreeper;
import micdoodle8.mods.galacticraft.core.entities.EntityEvolvedSkeleton;
import micdoodle8.mods.galacticraft.core.entities.EntityEvolvedZombie;
import micdoodle8.mods.galacticraft.core.world.gen.dungeon.MapGenDungeon;
import micdoodle8.mods.galacticraft.planets.mars.world.gen.MapGenCaveMars;
import micdoodle8.mods.galacticraft.planets.mars.world.gen.MapGenCavernMars;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraftforge.common.util.ForgeDirection;
import blessentumble.moons.europajupiter.blocks.EuropaBlocks;
import blessentumble.moons.europajupiter.world.gen.BiomeDecoratorEuropa;
import blessentumble.moons.europajupiter.world.gen.dungeon.RoomBossEuropa;
import blessentumble.moons.europajupiter.world.gen.dungeon.RoomChestsEuropa;
import blessentumble.moons.europajupiter.world.gen.dungeon.RoomEmptyEuropa;
import blessentumble.moons.europajupiter.world.gen.dungeon.RoomSpawnerEuropa;
import blessentumble.moons.europajupiter.world.gen.dungeon.RoomTreasureEuropa;
import com.google.common.collect.Lists;
public class ChunkProviderEuropa extends ChunkProviderSpace {
private final BiomeDecoratorEuropa marsBiomeDecorator = new BiomeDecoratorEuropa();
private final MapGenCaveMars cavernGenerator = new MapGenCaveMars();
private final MapGenDungeon dungeonGenerator = new MapGenDungeon(GCBlocks.blockMoon, 14, 8, 16, 3);
{
this.dungeonGenerator.otherRooms.add(new RoomEmptyEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomSpawnerEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomSpawnerEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomSpawnerEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomSpawnerEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomSpawnerEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomSpawnerEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomSpawnerEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomSpawnerEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomChestsEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.otherRooms.add(new RoomChestsEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.bossRooms.add(new RoomBossEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
this.dungeonGenerator.treasureRooms.add(new RoomTreasureEuropa(null, 0, 0, 0, ForgeDirection.UNKNOWN));
}
@Override
protected List<MapGenBaseMeta> getWorldGenerators()
{
List<MapGenBaseMeta> generators = Lists.newArrayList();
generators.add(this.cavernGenerator);
return generators;
}
public ChunkProviderEuropa(World par1World, long seed, boolean mapFeaturesEnabled)
{
super(par1World, seed, mapFeaturesEnabled);
}
@Override
protected BiomeDecoratorSpace getBiomeGenerator() {
// TODO Auto-generated method stub
return new BiomeDecoratorEuropa();
}
//This should be a custom biome for your mod, but I'm opting to go desert instead out of quickness
//and the fact that biomes are outside the scope of this tutorial
@Override
protected BiomeGenBase[] getBiomesForGeneration() {
// TODO make phobos biome
return new BiomeGenBase[]{BiomeGenBase.extremeHillsPlus};
}
@Override
public int getCraterProbability() {
return 2000;
}
@Override
protected SpawnListEntry[] getCreatures() {
return new SpawnListEntry[]{};
}
@Override
protected BlockMetaPair getStoneBlock() {
// TODO Auto-generated method stub
return new BlockMetaPair(EuropaBlocks.EuropaIce, (byte) 4);
}
@Override
protected BlockMetaPair getDirtBlock() {
// TODO Auto-generated method stub
return new BlockMetaPair(Blocks.dirt, (byte) 3);
}
@Override
protected BlockMetaPair getGrassBlock() {
// TODO Auto-generated method stub
return new BlockMetaPair(Blocks.ice, (byte) 1);
}
@Override
public double getHeightModifier() {
// TODO Auto-generated method stub
return 10;
}
@Override
protected SpawnListEntry[] getMonsters() {
SpawnListEntry skele = new SpawnListEntry(EntityEvolvedSkeleton.class, 100, 4, 4);
SpawnListEntry creeper = new SpawnListEntry(EntityEvolvedCreeper.class, 100, 4, 4);
SpawnListEntry zombie = new SpawnListEntry(EntityEvolvedZombie.class, 100, 4, 4);
return new SpawnListEntry[]{skele, creeper, zombie};
}
@Override
public double getMountainHeightModifier() {
return 10;
}
@Override
protected int getSeaLevel() {
return 70;
}
@Override
public double getSmallFeatureHeightModifier() {
return 0;
}
@Override
public double getValleyHeightModifier() {
return 0;
}
@Override
public void onChunkProvide(int cX, int cZ, Block[] blocks, byte[] metadata) {
this.dungeonGenerator.generateUsingArrays(this.worldObj, this.worldObj.getSeed(), cX * 16, 30, cZ * 16, cX, cZ, blocks, metadata);
}
@Override
public void onPopulate(IChunkProvider arg0, int arg1, int arg2){
this.dungeonGenerator.handleTileEntities(this.rand);
}
@Override
public boolean chunkExists(int x, int y){
return false;
}
}