Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.ButterAleks.RandomIdeas.world;
- import java.util.ArrayList;
- import java.util.Random;
- import com.ButterAleks.RandomIdeas.blocks.BlockOfPastry;
- import com.ButterAleks.RandomIdeas.init.ModBlocks;
- import com.ButterAleks.RandomIdeas.world.biomes.BiomePastry;
- import net.minecraft.block.Block;
- import net.minecraft.init.Blocks;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.World;
- import net.minecraft.world.WorldType;
- import net.minecraft.world.biome.BiomeSnow;
- import net.minecraft.world.chunk.IChunkProvider;
- import net.minecraft.world.gen.IChunkGenerator;
- import net.minecraft.world.gen.feature.WorldGenerator;
- import net.minecraftforge.fml.common.IWorldGenerator;
- import scala.actors.threadpool.Arrays;
- public class WorldGenCustomSturctures implements IWorldGenerator
- {
- public static final WorldGenSturcture DEATH_CAKE = new WorldGenSturcture("death_cake");
- public static final WorldGenSturcture FAKE_STEAK = new WorldGenSturcture("fake_steak");
- public static final WorldGenSturcture APPLE_CAKE = new WorldGenSturcture("apple_cake");
- public static final WorldGenSturcture LEMON_CAKE = new WorldGenSturcture("lemon_cake");
- public static final WorldGenSturcture LIME_CAKE = new WorldGenSturcture("lime_cake");
- public static final WorldGenSturcture BLUEBERRY_CAKE = new WorldGenSturcture("blueberry_cake");
- public static final WorldGenSturcture BLACKBERRY_CAKE = new WorldGenSturcture("blackberry_cake");
- public static final WorldGenSturcture RASPBERRY_CAKE = new WorldGenSturcture("raspberry_cake");
- public static final WorldGenSturcture COCONUT_CAKE = new WorldGenSturcture("coconut_cake");
- public static final WorldGenSturcture ORANGE_CAKE = new WorldGenSturcture("orange_cake");
- @Override
- public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider)
- {
- switch(world.provider.getDimension())
- {
- case 3:
- break;
- case 2:
- break;
- case 1:
- break;
- case 0:
- generateStructure(DEATH_CAKE, world, random, chunkX, chunkZ, 100, Blocks.SNOW_LAYER, BiomeSnow.class);
- generateStructure(FAKE_STEAK, world, random, chunkX, chunkZ, 100, Blocks.SNOW_LAYER, BiomeSnow.class);
- generateStructure(APPLE_CAKE, world, random, chunkX, chunkZ, 100, Blocks.SNOW_LAYER, BiomeSnow.class);
- generateStructure(LEMON_CAKE, world, random, chunkX, chunkZ, 100, Blocks.SNOW_LAYER, BiomeSnow.class);
- generateStructure(LIME_CAKE, world, random, chunkX, chunkZ, 100, Blocks.SNOW_LAYER, BiomeSnow.class);
- generateStructure(BLUEBERRY_CAKE, world, random, chunkX, chunkZ, 100, Blocks.SNOW_LAYER, BiomeSnow.class);
- generateStructure(BLACKBERRY_CAKE, world, random, chunkX, chunkZ, 100, Blocks.SNOW_LAYER, BiomeSnow.class);
- generateStructure(RASPBERRY_CAKE, world, random, chunkX, chunkZ, 100, Blocks.SNOW_LAYER, BiomeSnow.class);
- generateStructure(COCONUT_CAKE, world, random, chunkX, chunkZ, 100, Blocks.SNOW_LAYER, BiomeSnow.class);
- generateStructure(ORANGE_CAKE, world, random, chunkX, chunkZ, 9999, Blocks.SNOW_LAYER, BiomeSnow.class);
- break;
- case -1:
- }
- }
- private void generateStructure(WorldGenerator generator, World world, Random random, int chunkX, int chunkZ, int chance, Block topBlock, Class<?>... classes)
- {
- ArrayList<Class<?>> classesList = new ArrayList<Class<?>>(Arrays.asList(classes));
- int x = (chunkX * 16) + random.nextInt(15);
- int z = (chunkZ * 16) + random.nextInt(15);
- int y = calculateGenerationHeight(world, x, z, topBlock);
- BlockPos pos = new BlockPos(x, y, z);
- Class<?> biome = world.provider.getBiomeForCoords(pos).getClass();
- if(world.getWorldType() != WorldType.FLAT)
- {
- if(classesList.contains(biome))
- {
- if(random.nextInt(chance) == 0)
- {
- generator.generate(world, random, pos);
- }
- }
- }
- }
- private static int calculateGenerationHeight(World world, int x, int z, Block topBlock)
- {
- int y = world.getHeight();
- boolean foundGround = false;
- while(! foundGround && --y >= 0)
- {
- Block block = world.getBlockState(new BlockPos(x, y, z)).getBlock();
- foundGround = block == topBlock;
- }
- return y;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement