package mods.eln.ore; import cpw.mods.fml.common.IWorldGenerator; import mods.eln.Eln; import mods.eln.generic.GenericItemBlockUsingDamageDescriptor; import mods.eln.wiki.Data; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraft.world.WorldType; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.feature.WorldGenMinable; import java.util.ArrayList; import java.util.Random; public class OreDescriptor extends GenericItemBlockUsingDamageDescriptor implements IWorldGenerator { int metadata; int spawnRate, spawnSizeMax, spawnSizeMin, spawnHeightMin, spawnHeightMax; public OreDescriptor(String name, int metadata, int spawnRate, int spawnSizeMin, int spawnSizeMax, int spawnHeightMin, int spawnHeightMax) { super(name); this.metadata = metadata; this.spawnHeightMax = spawnHeightMax; this.spawnHeightMin = spawnHeightMin; this.spawnRate = spawnRate; this.spawnSizeMin = spawnSizeMin; this.spawnSizeMax = spawnSizeMax; } public IIcon getBlockIconId(int side, int damage) { return getIcon(); } @Override public void setParent(Item item, int damage) { super.setParent(item, damage); Data.addOre(newItemStack()); } public ArrayList<ItemStack> getBlockDropped(int fortune) { ArrayList<ItemStack> list = new ArrayList<ItemStack>(); list.add(new ItemStack(Eln.oreItem, 1, metadata)); return list; } @Override public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { if (world.provider.isSurfaceWorld()) { generateSurface(random, chunkX * 16, chunkZ * 16, world); //This makes it gen overworld (the *16 is important) } } public void generateSurface(Random random, int x, int z, World w) { if (w.getWorldInfo().getTerrainType() == WorldType.FLAT) return; //for(int i = 0;i<4;i++){ //This goes through the ore metadata for (int ii = 0; ii < spawnRate; ii++) { //This makes it gen multiple times in each chunk int posX = x + random.nextInt(16); //X coordinate to gen at int posY = spawnHeightMin + random.nextInt(spawnHeightMax - spawnHeightMin); //Y coordinate less than 40 to gen at int posZ = z + random.nextInt(16); //Z coordinate to gen at int size = spawnSizeMin + random.nextInt(spawnSizeMax - spawnSizeMin); new WorldGenMinable(Eln.oreBlock, metadata, size, Blocks.stone).generate(w, random, posX, posY, posZ); //The gen call } //} //new WorldGenTrees(par1, par2, par3, par4, par5) } }