Jump to content

[1.5.2]Can't get BiomeDecorator to work in my custom dimension.


Recommended Posts

Posted

Hi there,

 

I used to have my few WorldGenVines inside the chunkprovider but i desided that whenever i am going to add more biomes that it would be much better to have those in a custom BiomeDecorator, so off i go. First i tried just to use the BiomeDecorator grassperchunk and treeperchunk. but whenever i look in my custom dimenson they did not show up anywhere in the world. I tried making a custom one and added my WorldGenVines to it but they wouldn't show aswell. Whenever i moved those for loops back to the chunkprovider they would appear. So i guess that something goes wrong when the chunks are being created. That it doesn't get its information right from TheBiomeDeco (my custom BiomeDecorator) as i debugged TheBiomeDeco and it ran through the grassGen functions just fine.

 

Even though i think that the problem lies in the chunk creation i still will put TheBiomeDeco and one of my Biomes in here:

 

Biome:

 

 

package Mod_Ores.BiomeGen.Biomes;

import java.util.Random;

import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeDecorator;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.SpawnListEntry;
import net.minecraft.world.gen.feature.WorldGenerator;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import Mod_Ores.mod_Ores;
import Mod_Ores.BiomeGen.WorldGen.WorldGenGrapeTree;
import Mod_Ores.Mobs.Entity.EntityBlueSlime;
import Mod_Ores.Mobs.Entity.EntityEnt;
import Mod_Ores.Mobs.Entity.EntityIceFairy;
import Mod_Ores.Mobs.Entity.EntitySnowCreeper;

public class BiomeGenSoulForest extends BiomeGenBase
{
private WorldGenerator theWorldGenerator;
private TheBiomeDeco customBiomeDecorator;

        public BiomeGenSoulForest(int par1)
    {
        super(par1);
        theBiomeDecorator = new TheBiomeDeco(this);
        customBiomeDecorator = (TheBiomeDeco) theBiomeDecorator;
        this.topBlock = (byte)mod_Ores.LateriteGrass.blockID;
        this.fillerBlock = (byte)mod_Ores.LateriteDirt.blockID;
        
        customBiomeDecorator.baneberryvineperchunk = 3;
        customBiomeDecorator.blueberryvineperchunk = 5;
        customBiomeDecorator.blackberryvineperchunk = 3;
        customBiomeDecorator.cranberryvineperchunk = 5;
        customBiomeDecorator.raspberryvineperchunk = 4;
        customBiomeDecorator.razzberryvineperchunk = 4;
        customBiomeDecorator.strawberryvineperchunk = 6;
        customBiomeDecorator.grapetreeperchunk = 10;
        customBiomeDecorator.grassPerChunk = 10;
        customBiomeDecorator.mushroomsPerChunk = 30;
        
        spawnableMonsterList.clear();
        spawnableCreatureList.clear();
        spawnableCaveCreatureList.clear();
        spawnableMonsterList.add(new SpawnListEntry(EntityBlueSlime.class, 20, 5, 10));
        theWorldGenerator = new WorldGenGrapeTree(true);
    }
}

 

 

 

TheBiomeDeco:

 

 

package Mod_Ores.BiomeGen.Biomes;

import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.BIG_SHROOM;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.CACTUS;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.CLAY;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.DEAD_BUSH;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.FLOWERS;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.GRASS;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.LAKE;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.LILYPAD;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.PUMPKIN;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.REED;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.SAND;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.SAND_PASS2;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.SHROOM;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.TREE;
import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.COAL;
import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.DIAMOND;
import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.DIRT;
import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.GOLD;
import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.GRAVEL;
import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.IRON;
import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.LAPIS;
import static net.minecraftforge.event.terraingen.OreGenEvent.GenerateMinable.EventType.REDSTONE;

import java.util.Random;

import Mod_Ores.mod_Ores;
import Mod_Ores.BiomeGen.WorldGen.WorldGenBaneberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenBlackberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenBlueberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenCantaloupe;
import Mod_Ores.BiomeGen.WorldGen.WorldGenCranberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenGrapeTree;
import Mod_Ores.BiomeGen.WorldGen.WorldGenRaspberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenRazzberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenStrawberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenVines;

import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeDecorator;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.gen.feature.WorldGenBigMushroom;
import net.minecraft.world.gen.feature.WorldGenCactus;
import net.minecraft.world.gen.feature.WorldGenClay;
import net.minecraft.world.gen.feature.WorldGenDeadBush;
import net.minecraft.world.gen.feature.WorldGenFlowers;
import net.minecraft.world.gen.feature.WorldGenLiquids;
import net.minecraft.world.gen.feature.WorldGenMinable;
import net.minecraft.world.gen.feature.WorldGenPumpkin;
import net.minecraft.world.gen.feature.WorldGenReed;
import net.minecraft.world.gen.feature.WorldGenSand;
import net.minecraft.world.gen.feature.WorldGenWaterlily;
import net.minecraft.world.gen.feature.WorldGenerator;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import net.minecraftforge.event.terraingen.OreGenEvent;
import net.minecraftforge.event.terraingen.TerrainGen;

public class TheBiomeDeco extends BiomeDecorator
{	
/** The world the BiomeDecorator is currently decorating */
protected World currentWorld;

/** The Biome Decorator's random number generator. */
protected Random randomGenerator;

/** The X-coordinate of the chunk currently being decorated */
protected int chunk_X;

/** The Z-coordinate of the chunk currently being decorated */
protected int chunk_Z;

/** The biome generator object. */
protected BiomeGenBase biome;

// Vanilla Stuff
protected WorldGenerator clayGen = new WorldGenClay(4);
protected WorldGenerator sandGen;
protected WorldGenerator gravelAsSandGen;
protected WorldGenerator dirtGen;
protected WorldGenerator gravelGen;
protected WorldGenerator coalGen;
protected WorldGenerator ironGen;
protected WorldGenerator goldGen;
protected WorldGenerator redstoneGen;
protected WorldGenerator diamondGen;
protected WorldGenerator lapisGen;
protected WorldGenerator plantYellowGen;
protected WorldGenerator plantRedGen;
protected WorldGenerator mushroomBrownGen;
protected WorldGenerator mushroomRedGen;
protected WorldGenerator bigMushroomGen;
protected WorldGenerator reedGen;
    protected WorldGenerator cactusGen;
    protected WorldGenerator waterlilyGen;
    
    protected int waterlilyPerChunk;
    protected int treesPerChunk;
    protected int flowersPerChunk;
    protected int grassPerChunk;
    protected int deadBushPerChunk;
    protected int mushroomsPerChunk;
    protected int reedsPerChunk;
    protected int cactiPerChunk;
    protected int sandPerChunk;
    protected int sandPerChunk2;
    protected int clayPerChunk;
    protected int bigMushroomsPerChunk;
    public boolean generateLakes;

    // Custom Stuff
    	// Vines
protected WorldGenerator baneberryVineGen;
protected WorldGenerator blackberryVineGen;
protected WorldGenerator blueberryVineGen;
protected WorldGenerator cranberryVineGen;
protected WorldGenerator raspberryVineGen;
protected WorldGenerator razzberryVineGen;
protected WorldGenerator strawberryVineGen;
	// Trees
protected WorldGenerator grapeTreeGen;
	// plants
protected WorldGenerator cantaloupeGen;

	// Vines
protected int baneberryvineperchunk;	
protected int blackberryvineperchunk;	
protected int blueberryvineperchunk;	
protected int cranberryvineperchunk;	
protected int raspberryvineperchunk;	
protected int razzberryvineperchunk;	
protected int strawberryvineperchunk;
	// Trees
protected int grapetreeperchunk;	
	// Plants
protected int cantaloupeperchunk;

    public TheBiomeDeco(BiomeGenBase par1biomegenbase)
    {
    	super(par1biomegenbase);
    	// Vanilla Stuff
    	sandGen = new WorldGenSand(7, Block.sand.blockID);
        gravelAsSandGen = new WorldGenSand(6, Block.gravel.blockID);
        dirtGen = new WorldGenMinable(Block.dirt.blockID, 32);
        gravelGen = new WorldGenMinable(Block.gravel.blockID, 32);
        coalGen = new WorldGenMinable(Block.oreCoal.blockID, 16);
        ironGen = new WorldGenMinable(Block.oreIron.blockID, ;
        goldGen = new WorldGenMinable(Block.oreGold.blockID, ;
        redstoneGen = new WorldGenMinable(Block.oreRedstone.blockID, 7);
        diamondGen = new WorldGenMinable(Block.oreDiamond.blockID, 7);
        lapisGen = new WorldGenMinable(Block.oreLapis.blockID, 6);
        plantYellowGen = new WorldGenFlowers(Block.plantYellow.blockID);
        plantRedGen = new WorldGenFlowers(Block.plantRed.blockID);
        mushroomBrownGen = new WorldGenFlowers(Block.mushroomBrown.blockID);
        mushroomRedGen = new WorldGenFlowers(Block.mushroomRed.blockID);
        bigMushroomGen = new WorldGenBigMushroom();
        reedGen = new WorldGenReed();
        cactusGen = new WorldGenCactus();
        waterlilyGen = new WorldGenWaterlily();
        waterlilyPerChunk = 0;
        treesPerChunk = 0;
        flowersPerChunk = 2;
        grassPerChunk = 1;
        deadBushPerChunk = 0;
        mushroomsPerChunk = 0;
        reedsPerChunk = 0;
        cactiPerChunk = 0;
        sandPerChunk = 1;
        sandPerChunk2 = 3;
        clayPerChunk = 1;
        bigMushroomsPerChunk = 0;
        generateLakes = true;
               
        // Custom Stuff
        baneberryVineGen = new WorldGenVines(mod_Ores.Baneberry);
        blackberryVineGen = new WorldGenVines(mod_Ores.Blackberry);
        blueberryVineGen = new WorldGenVines(mod_Ores.Blueberry);
        cranberryVineGen = new WorldGenVines(mod_Ores.Cranberry);
        raspberryVineGen = new WorldGenVines(mod_Ores.Raspberry);
        razzberryVineGen = new WorldGenVines(mod_Ores.Razzberry);
        strawberryVineGen = new WorldGenVines(mod_Ores.Strawberry);
        grapeTreeGen = new WorldGenGrapeTree(true);
        cantaloupeGen = new WorldGenCantaloupe(mod_Ores.plantCantaloupe.blockID);
        baneberryvineperchunk = 0;
        blackberryvineperchunk = 0;
        blueberryvineperchunk = 0;
        cranberryvineperchunk = 0;
        raspberryvineperchunk = 0;
        razzberryvineperchunk = 0;
        strawberryvineperchunk = 0;
        grapetreeperchunk = 0;
        cantaloupeperchunk = 0;
        
        this.biome = par1biomegenbase;
    }
    
    /**
     * Decorates the world. Calls code that was formerly (pre-1. in ChunkProviderGenerate.populate
     */
    public void decorate(World par1World, Random par2Random, int par3, int par4)
    {
        if (currentWorld != null)
        {
        	return ;
        }
        else
        {
            currentWorld = par1World;
            randomGenerator = par2Random;
            chunk_X = par3;
            chunk_Z = par4;
            this.decorate();
            currentWorld = null;
            randomGenerator = null;
        }
    }
    
@Override
protected void decorate() 
{
	// Vanilla Stuff
	 MinecraftForge.EVENT_BUS.post(new DecorateBiomeEvent.Pre(currentWorld, randomGenerator, chunk_X, chunk_Z));
     boolean doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, SAND);
     
     this.generateOres();
        int i;
        int j;
        int k;


        for (i = 0; doGen && i < this.sandPerChunk2; ++i)
        {
            j = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            k = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            this.sandGen.generate(this.currentWorld, this.randomGenerator, j, this.currentWorld.getTopSolidOrLiquidBlock(j, k), k);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, CLAY);
        for (i = 0; doGen && i < this.clayPerChunk; ++i)
        {
            j = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            k = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            this.clayGen.generate(this.currentWorld, this.randomGenerator, j, this.currentWorld.getTopSolidOrLiquidBlock(j, k), k);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, SAND_PASS2);
        for (i = 0; doGen && i < this.sandPerChunk; ++i)
        {
            j = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            k = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            this.sandGen.generate(this.currentWorld, this.randomGenerator, j, this.currentWorld.getTopSolidOrLiquidBlock(j, k), k);
        }

        i = this.treesPerChunk;

        if (this.randomGenerator.nextInt(10) == 0)
        {
            ++i;
        }

        int l;

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, TREE);
        for (j = 0; doGen && j < i; ++j)
        {
            k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            l = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            WorldGenerator worldgenerator = this.biome.getRandomWorldGenForTrees(this.randomGenerator);
            worldgenerator.setScale(1.0D, 1.0D, 1.0D);
            worldgenerator.generate(this.currentWorld, this.randomGenerator, k, this.currentWorld.getHeightValue(k, l), l);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, BIG_SHROOM);
        for (j = 0; doGen && j < this.bigMushroomsPerChunk; ++j)
        {
            k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            l = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            this.bigMushroomGen.generate(this.currentWorld, this.randomGenerator, k, this.currentWorld.getHeightValue(k, l), l);
        }

        int i1;

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, FLOWERS);
        for (j = 0; doGen && j < this.flowersPerChunk; ++j)
        {
            k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            l = this.randomGenerator.nextInt(128);
            i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            this.plantYellowGen.generate(this.currentWorld, this.randomGenerator, k, l, i1);

            if (this.randomGenerator.nextInt(4) == 0)
            {
                k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
                l = this.randomGenerator.nextInt(128);
                i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
                this.plantRedGen.generate(this.currentWorld, this.randomGenerator, k, l, i1);
            }
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, GRASS);
        for (j = 0; doGen && j < this.grassPerChunk; ++j)
        {
            k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            l = this.randomGenerator.nextInt(128);
            i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            WorldGenerator worldgenerator1 = this.biome.getRandomWorldGenForGrass(this.randomGenerator);
            worldgenerator1.generate(this.currentWorld, this.randomGenerator, k, l, i1);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, DEAD_BUSH);
        for (j = 0; doGen && j < this.deadBushPerChunk; ++j)
        {
            k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            l = this.randomGenerator.nextInt(128);
            i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            (new WorldGenDeadBush(Block.deadBush.blockID)).generate(this.currentWorld, this.randomGenerator, k, l, i1);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, LILYPAD);
        for (j = 0; doGen && j < this.waterlilyPerChunk; ++j)
        {
            k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            l = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;

            for (i1 = this.randomGenerator.nextInt(128); i1 > 0 && this.currentWorld.getBlockId(k, i1 - 1, l) == 0; --i1)
            {
                ;
            }

            this.waterlilyGen.generate(this.currentWorld, this.randomGenerator, k, i1, l);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, SHROOM);
        for (j = 0; doGen && j < this.mushroomsPerChunk; ++j)
        {
            if (this.randomGenerator.nextInt(4) == 0)
            {
                k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
                l = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
                i1 = this.currentWorld.getHeightValue(k, l);
                this.mushroomBrownGen.generate(this.currentWorld, this.randomGenerator, k, i1, l);
            }

            if (this.randomGenerator.nextInt( == 0)
            {
                k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
                l = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
                i1 = this.randomGenerator.nextInt(128);
                this.mushroomRedGen.generate(this.currentWorld, this.randomGenerator, k, i1, l);
            }
        }

        if (doGen && this.randomGenerator.nextInt(4) == 0)
        {
            j = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            k = this.randomGenerator.nextInt(128);
            l = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            this.mushroomBrownGen.generate(this.currentWorld, this.randomGenerator, j, k, l);
        }

        if (doGen && this.randomGenerator.nextInt( == 0)
        {
            j = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            k = this.randomGenerator.nextInt(128);
            l = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            this.mushroomRedGen.generate(this.currentWorld, this.randomGenerator, j, k, l);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, REED);
        for (j = 0; doGen && j < this.reedsPerChunk; ++j)
        {
            k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            l = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            i1 = this.randomGenerator.nextInt(128);
            this.reedGen.generate(this.currentWorld, this.randomGenerator, k, i1, l);
        }

        for (j = 0; doGen && j < 10; ++j)
        {
            k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            l = this.randomGenerator.nextInt(128);
            i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            this.reedGen.generate(this.currentWorld, this.randomGenerator, k, l, i1);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, PUMPKIN);
        if (doGen && this.randomGenerator.nextInt(32) == 0)
        {
            j = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            k = this.randomGenerator.nextInt(128);
            l = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            (new WorldGenPumpkin()).generate(this.currentWorld, this.randomGenerator, j, k, l);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, CACTUS);
        for (j = 0; doGen && j < this.cactiPerChunk; ++j)
        {
            k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
            l = this.randomGenerator.nextInt(128);
            i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
            this.cactusGen.generate(this.currentWorld, this.randomGenerator, k, l, i1);
        }

        doGen = TerrainGen.decorate(currentWorld, randomGenerator, chunk_X, chunk_Z, LAKE);
        if (doGen && this.generateLakes)
        {
            for (j = 0; j < 50; ++j)
            {
                k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
                l = this.randomGenerator.nextInt(this.randomGenerator.nextInt(120) + ;
                i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
                (new WorldGenLiquids(Block.waterMoving.blockID)).generate(this.currentWorld, this.randomGenerator, k, l, i1);
            }

            for (j = 0; j < 20; ++j)
            {
                k = this.chunk_X + this.randomGenerator.nextInt(16) + 8;
                l = this.randomGenerator.nextInt(this.randomGenerator.nextInt(this.randomGenerator.nextInt(112) +  + ;
                i1 = this.chunk_Z + this.randomGenerator.nextInt(16) + 8;
                (new WorldGenLiquids(Block.lavaMoving.blockID)).generate(this.currentWorld, this.randomGenerator, k, l, i1);
            }
        }



	// Custom Stuff
		for (int g1 = 0; g1 < grapetreeperchunk; g1++)
        {
	        int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
	        int g3 = chunk_Z + randomGenerator.nextInt(16) + 8;
	        grapeTreeGen.generate(currentWorld, randomGenerator, g2, currentWorld.getHeightValue(g2, g3), g3);
        }
        //vines
        for (int g1 = 0; g1 < baneberryvineperchunk; g1++)
        {
	        int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
	        int g3 = chunk_Z + randomGenerator.nextInt(16) + 8;
	        baneberryVineGen.generate(currentWorld, randomGenerator, g2, currentWorld.getHeightValue(g2, g3), g3);
        }
        for (int g1 = 0; g1 < blackberryvineperchunk; g1++)
        {
	        int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
	        int g3 = chunk_Z + randomGenerator.nextInt(16) + 8;
	        blackberryVineGen.generate(currentWorld, randomGenerator, g2, currentWorld.getHeightValue(g2, g3), g3);
        }
        for (int g1 = 0; g1 < blueberryvineperchunk; g1++)
        {
	        int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
	        int g3 = chunk_Z + randomGenerator.nextInt(16) + 8;
	        blueberryVineGen.generate(currentWorld, randomGenerator, g2, currentWorld.getHeightValue(g2, g3), g3);
        }
        for (int g1 = 0; g1 < cranberryvineperchunk; g1++)
        {
	        int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
	        int g3 = chunk_Z + randomGenerator.nextInt(16) + 8;
	        cranberryVineGen.generate(currentWorld, randomGenerator, g2, currentWorld.getHeightValue(g2, g3), g3);
        }
        for (int g1 = 0; g1 < raspberryvineperchunk; g1++)
        {
	        int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
	        int g3 = chunk_Z + randomGenerator.nextInt(16) + 8;
	        raspberryVineGen.generate(currentWorld, randomGenerator, g2, currentWorld.getHeightValue(g2, g3), g3);
        }
        for (int g1 = 0; g1 < razzberryvineperchunk; g1++)
        {
	        int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
	        int g3 = chunk_Z + randomGenerator.nextInt(16) + 8;
	        razzberryVineGen.generate(currentWorld, randomGenerator, g2, currentWorld.getHeightValue(g2, g3), g3);
        }
        for (int g1 = 0; g1 < strawberryvineperchunk; g1++)
        {
	        int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
	        int g3 = chunk_Z + randomGenerator.nextInt(16) + 8;
	        strawberryVineGen.generate(currentWorld, randomGenerator, g2, currentWorld.getHeightValue(g2, g3), g3);
        }
        for (int g1 = 0; g1 < cantaloupeperchunk; g1++)
        {
	        int g2 = chunk_X + randomGenerator.nextInt(16) + 8;
	        int g3 = randomGenerator.nextInt(128);
	        int g4 = chunk_Z + randomGenerator.nextInt(16) + 8;
	        cantaloupeGen.generate(currentWorld, randomGenerator, g2, g3, g4);
        }
        
        MinecraftForge.EVENT_BUS.post(new DecorateBiomeEvent.Post(currentWorld, randomGenerator, chunk_X, chunk_Z));

}

/**
     * Standard ore generation helper. Generates most ores.
     */
    protected void genStandardOre1(int par1, WorldGenerator par2WorldGenerator, int par3, int par4)
    {
        for (int l = 0; l < par1; ++l)
        {
            int i1 = this.chunk_X + this.randomGenerator.nextInt(16);
            int j1 = this.randomGenerator.nextInt(par4 - par3) + par3;
            int k1 = this.chunk_Z + this.randomGenerator.nextInt(16);
            par2WorldGenerator.generate(this.currentWorld, this.randomGenerator, i1, j1, k1);
        }
    }

    /**
     * Standard ore generation helper. Generates Lapis Lazuli.
     */
    protected void genStandardOre2(int par1, WorldGenerator par2WorldGenerator, int par3, int par4)
    {
        for (int l = 0; l < par1; ++l)
        {
            int i1 = this.chunk_X + this.randomGenerator.nextInt(16);
            int j1 = this.randomGenerator.nextInt(par4) + this.randomGenerator.nextInt(par4) + (par3 - par4);
            int k1 = this.chunk_Z + this.randomGenerator.nextInt(16);
            par2WorldGenerator.generate(this.currentWorld, this.randomGenerator, i1, j1, k1);
        }
    }

    /**
     * Generates ores in the current chunk
     */
    protected void generateOres()
    {
        MinecraftForge.ORE_GEN_BUS.post(new OreGenEvent.Pre(currentWorld, randomGenerator, chunk_X, chunk_Z));
        if (TerrainGen.generateOre(currentWorld, randomGenerator, dirtGen, chunk_X, chunk_Z, DIRT))
        this.genStandardOre1(20, this.dirtGen, 0, 128);
        if (TerrainGen.generateOre(currentWorld, randomGenerator, gravelGen, chunk_X, chunk_Z, GRAVEL))
        this.genStandardOre1(10, this.gravelGen, 0, 128);
        if (TerrainGen.generateOre(currentWorld, randomGenerator, coalGen, chunk_X, chunk_Z, COAL))
        this.genStandardOre1(20, this.coalGen, 0, 128);
        if (TerrainGen.generateOre(currentWorld, randomGenerator, ironGen, chunk_X, chunk_Z, IRON))
        this.genStandardOre1(20, this.ironGen, 0, 64);
        if (TerrainGen.generateOre(currentWorld, randomGenerator, goldGen, chunk_X, chunk_Z, GOLD))
        this.genStandardOre1(2, this.goldGen, 0, 32);
        if (TerrainGen.generateOre(currentWorld, randomGenerator, redstoneGen, chunk_X, chunk_Z, REDSTONE))
        this.genStandardOre1(8, this.redstoneGen, 0, 16);
        if (TerrainGen.generateOre(currentWorld, randomGenerator, diamondGen, chunk_X, chunk_Z, DIAMOND))
        this.genStandardOre1(1, this.diamondGen, 0, 16);
        if (TerrainGen.generateOre(currentWorld, randomGenerator, lapisGen, chunk_X, chunk_Z, LAPIS))
        this.genStandardOre2(1, this.lapisGen, 16, 16);
        MinecraftForge.ORE_GEN_BUS.post(new OreGenEvent.Post(currentWorld, randomGenerator, chunk_X, chunk_Z));
    }
    
}

 

 

 

ChunkProviderMarona:

 

 

package Mod_Ores.BiomeGen.Dimension;

import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.DUNGEON;
import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.FIRE;
import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.GLOWSTONE;
import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.NETHER_LAVA;
import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.LAKE;
import java.util.List;
import java.util.Random;

import Mod_Ores.mod_Ores;
import Mod_Ores.BiomeGen.WorldGenIceTower;
import Mod_Ores.BiomeGen.WorldGenSoulTemple;
import Mod_Ores.BiomeGen.WorldGen.WorldGenBaneberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenBlackberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenBlueberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenCranberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenGrapeTree;
import Mod_Ores.BiomeGen.WorldGen.WorldGenRaspberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenRazzberryVines;
import Mod_Ores.BiomeGen.WorldGen.WorldGenStrawberryVines;

import net.minecraft.block.Block;
import net.minecraft.block.BlockSand;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.util.IProgressUpdate;
import net.minecraft.world.ChunkPosition;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.gen.MapGenBase;
import net.minecraft.world.gen.MapGenCavesHell;
import net.minecraft.world.gen.NoiseGeneratorOctaves;
import net.minecraft.world.gen.feature.WorldGenDungeons;
import net.minecraft.world.gen.feature.WorldGenFire;
import net.minecraft.world.gen.feature.WorldGenFlowers;
import net.minecraft.world.gen.feature.WorldGenGlowStone1;
import net.minecraft.world.gen.feature.WorldGenGlowStone2;
import net.minecraft.world.gen.feature.WorldGenHellLava;
import net.minecraft.world.gen.feature.WorldGenLiquids;
import net.minecraft.world.gen.feature.WorldGenMinable;
import net.minecraft.world.gen.feature.WorldGenerator;
import net.minecraft.world.gen.structure.MapGenNetherBridge;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.Event.Result;
import net.minecraftforge.event.terraingen.ChunkProviderEvent;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
import net.minecraftforge.event.terraingen.PopulateChunkEvent;
import static net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.*;
import static net.minecraftforge.event.terraingen.InitMapGenEvent.EventType.*;
import static net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType.*;
import net.minecraftforge.event.terraingen.TerrainGen;

public class ChunkProviderMarona implements IChunkProvider
{
//NETHER SOUL FOREST IDEA	

private Random soulRNG;
    public BiomeGenBase biome;
    
    /** A NoiseGeneratorOctaves used in generating nether terrain */
    private NoiseGeneratorOctaves netherNoiseGen1;
    private NoiseGeneratorOctaves netherNoiseGen2;
    private NoiseGeneratorOctaves netherNoiseGen3;
    public NoiseGeneratorOctaves mobSpawnerNoise;

    /** Determines whether lateriteGrass or porphyry can be generated at a location */
    private NoiseGeneratorOctaves lateriteGrassPorphyryNoise;

    /**
     * Determines whether something other than porphyry can be generated at a location
     */
    private NoiseGeneratorOctaves porphyryExclusivityNoiseGen;
    public NoiseGeneratorOctaves netherNoiseGen6;
    public NoiseGeneratorOctaves netherNoiseGen7;

    /** The biomes that are used to generate the chunk */
    private BiomeGenBase[] biomesForGeneration;
   
    /** Is the world that the nether is getting generated. */
    private World worldObj;
    private double[] noiseField;
    public MapGenNetherBridge genNetherBridge = new MapGenNetherBridge();

    /**
     * Holds the noise used to determine whether lateriteGrass can be generated at a location
     */
    private double[] lateriteGrassNoise = new double[256];
    private double[] porphyryNoise = new double[256];

    /**
     * Holds the noise used to determine whether something other than porphyry can be generated at a location
     */
    private double[] porphyryExclusivityNoise = new double[256];
    private MapGenBase netherCaveGenerator = new MapGenCavesHell();
    double[] noiseData1;
    double[] noiseData2;
    double[] noiseData3;
    double[] noiseData4;
    double[] noiseData5;

private Object theBiomeDecorator;

    public ChunkProviderMarona(World par1World, long par2, boolean b)
    {
        this.worldObj = par1World;
        this.soulRNG = new Random(par2);
        this.netherNoiseGen1 = new NoiseGeneratorOctaves(this.soulRNG, 16);
        this.netherNoiseGen2 = new NoiseGeneratorOctaves(this.soulRNG, 16);
        this.netherNoiseGen3 = new NoiseGeneratorOctaves(this.soulRNG, ;
        this.lateriteGrassPorphyryNoise = new NoiseGeneratorOctaves(this.soulRNG, 4);
        this.porphyryExclusivityNoiseGen = new NoiseGeneratorOctaves(this.soulRNG, 4);
        this.netherNoiseGen6 = new NoiseGeneratorOctaves(this.soulRNG, 10);
        this.netherNoiseGen7 = new NoiseGeneratorOctaves(this.soulRNG, 16);
        this.mobSpawnerNoise = new NoiseGeneratorOctaves(this.soulRNG, ;

        NoiseGeneratorOctaves[] noiseGens = {netherNoiseGen1, netherNoiseGen2, netherNoiseGen3, lateriteGrassPorphyryNoise, porphyryExclusivityNoiseGen, netherNoiseGen6, netherNoiseGen7, mobSpawnerNoise};
        noiseGens = TerrainGen.getModdedNoiseGenerators(par1World, this.soulRNG, noiseGens);
        this.netherNoiseGen1 = noiseGens[0];
        this.netherNoiseGen2 = noiseGens[1];
        this.netherNoiseGen3 = noiseGens[2];
        this.lateriteGrassPorphyryNoise = noiseGens[3];
        this.porphyryExclusivityNoiseGen = noiseGens[4];
        this.netherNoiseGen6 = noiseGens[5];
        this.netherNoiseGen7 = noiseGens[6];
        this.mobSpawnerNoise = noiseGens[7];
    }

    
    /**
     * Generates the shape of the terrain in the nether.
     */
    public void generateNetherTerrain(int par1, int par2, byte[] par3ArrayOfByte)
    {
        byte b0 = 4;
        byte b1 = 32;
        int k = b0 + 1;
        byte b2 = 17;
        int l = b0 + 1;
        this.noiseField = this.initializeNoiseField(this.noiseField, par1 * b0, 0, par2 * b0, k, b2, l);

        for (int i1 = 0; i1 < b0; ++i1)
        {
            for (int j1 = 0; j1 < b0; ++j1)
            {
                for (int k1 = 0; k1 < 16; ++k1)
                {
                    double d0 = 0.125D;
                    double d1 = this.noiseField[((i1 + 0) * l + j1 + 0) * b2 + k1 + 0];
                    double d2 = this.noiseField[((i1 + 0) * l + j1 + 1) * b2 + k1 + 0];
                    double d3 = this.noiseField[((i1 + 1) * l + j1 + 0) * b2 + k1 + 0];
                    double d4 = this.noiseField[((i1 + 1) * l + j1 + 1) * b2 + k1 + 0];
                    double d5 = (this.noiseField[((i1 + 0) * l + j1 + 0) * b2 + k1 + 1] - d1) * d0;
                    double d6 = (this.noiseField[((i1 + 0) * l + j1 + 1) * b2 + k1 + 1] - d2) * d0;
                    double d7 = (this.noiseField[((i1 + 1) * l + j1 + 0) * b2 + k1 + 1] - d3) * d0;
                    double d8 = (this.noiseField[((i1 + 1) * l + j1 + 1) * b2 + k1 + 1] - d4) * d0;

                    for (int l1 = 0; l1 < 8; ++l1)
                    {
                        double d9 = 0.25D;
                        double d10 = d1;
                        double d11 = d2;
                        double d12 = (d3 - d1) * d9;
                        double d13 = (d4 - d2) * d9;

                        for (int i2 = 0; i2 < 4; ++i2)
                        {
                            int j2 = i2 + i1 * 4 << 11 | 0 + j1 * 4 << 7 | k1 * 8 + l1;
                            short short1 = 128;
                            double d14 = 0.25D;
                            double d15 = d10;
                            double d16 = (d11 - d10) * d14;

                            for (int k2 = 0; k2 < 4; ++k2)
                            {
                                int l2 = 0;

                                if (k1 * 8 + l1 < b1)
                                {
                                    l2 = Block.waterStill.blockID;
                                }

                                if (d15 > 0.0D)
                                {
                                    l2 = (byte)mod_Ores.Porphyry.blockID;
                                }

                                par3ArrayOfByte[j2] = (byte)l2;
                                j2 += short1;
                                d15 += d16;
                            }

                            d10 += d12;
                            d11 += d13;
                        }

                        d1 += d5;
                        d2 += d6;
                        d3 += d7;
                        d4 += d8;
                    }
                }
            }
        }
    }

    /**
     * name based on ChunkProviderGenerate
     */
    public void replaceBlocksForBiome(int par1, int par2, byte[] par3ArrayOfByte, BiomeGenBase[] biomesForGeneration2)
    {
        ChunkProviderEvent.ReplaceBiomeBlocks event = new ChunkProviderEvent.ReplaceBiomeBlocks(this, par1, par2, par3ArrayOfByte, null);
        MinecraftForge.EVENT_BUS.post(event);
        if (event.getResult() == Result.DENY) return;

        byte b0 = 64;
        double d0 = 0.03125D;
        this.lateriteGrassNoise = this.lateriteGrassPorphyryNoise.generateNoiseOctaves(this.lateriteGrassNoise, par1 * 16, par2 * 16, 0, 16, 16, 1, d0, d0, 1.0D);
        this.porphyryNoise = this.lateriteGrassPorphyryNoise.generateNoiseOctaves(this.porphyryNoise, par1 * 16, 109, par2 * 16, 16, 1, 16, d0, 1.0D, d0);
        this.porphyryExclusivityNoise = this.porphyryExclusivityNoiseGen.generateNoiseOctaves(this.porphyryExclusivityNoise, par1 * 16, par2 * 16, 0, 16, 16, 1, d0 * 2.0D, d0 * 2.0D, d0 * 2.0D);

        for (int k = 0; k < 16; ++k)
        {
            for (int l = 0; l < 16; ++l)
            {
            	BiomeGenBase biomegenbase = biomesForGeneration2[l + k * 16];
                boolean flag = this.lateriteGrassNoise[k + l * 16] + this.soulRNG.nextDouble() * 0.2D > 0.0D;
                boolean flag1 = this.porphyryNoise[k + l * 16] + this.soulRNG.nextDouble() * 0.2D > 0.0D;
                int i1 = (int)(this.porphyryExclusivityNoise[k + l * 16] / 3.0D + 3.0D + this.soulRNG.nextDouble() * 0.25D);
                int j1 = -1;
                byte b1 = biomegenbase.topBlock;
                byte b2 = biomegenbase.fillerBlock;

                for (int k1 = 127; k1 >= 0; --k1)
                {
                    int l1 = (l * 16 + k) * 128 + k1;

                    if (k1 < 127 - this.soulRNG.nextInt(5) && k1 > 0 + this.soulRNG.nextInt(5))
                    {
                        byte b3 = par3ArrayOfByte[l1];

                        if (b3 == 0)
                        {
                            j1 = -1;
                        }
                        else if (b3 == (byte)mod_Ores.Porphyry.blockID)
                        {
                            if (j1 == -1)
                            {
                                if (i1 <= 0)
                                {
                                    b1 = 0;
                                    b2 = (byte)mod_Ores.Porphyry.blockID;
                                }
                                else if (k1 >= b0 - 4 && k1 <= b0 + 1)
                                {
                                	 b1 = biomegenbase.topBlock;
                                     b2 = biomegenbase.fillerBlock;

                                    if (flag1)
                                    {
                                        b1 = (byte)mod_Ores.LateriteGrass.blockID;
                                    }

                                    if (flag1)
                                    {
                                        b2 = (byte)mod_Ores.Porphyry.blockID;
                                    }

                                    if (flag)
                                    {
                                        b1 = (byte)mod_Ores.LateriteGrass.blockID;
                                    }

                                    if (flag)
                                    {
                                        b2 = (byte)mod_Ores.Slate.blockID;
                                    }
                                }

                                if (k1 < b0 && b1 == 0)
                                {
                                    b1 = (byte)Block.waterStill.blockID;
                                }

                                j1 = i1;

                                if (k1 >= b0 - 1)
                                {
                                    par3ArrayOfByte[l1] = b1;
                                }
                                else
                                {
                                    par3ArrayOfByte[l1] = b2;
                                }
                            }
                            else if (j1 > 0)
                            {
                                --j1;
                                par3ArrayOfByte[l1] = b2;
                            }
                        }
                    }
                    else
                    {
                        par3ArrayOfByte[l1] = (byte)Block.bedrock.blockID;
                    }
                }
            }
        }
    }

    /**
     * loads or generates the chunk at the chunk location specified
     */
    public Chunk loadChunk(int par1, int par2)
    {
        return this.provideChunk(par1, par2);
    }

    /**
     * Will return back a chunk, if it doesn't exist and its not a MP client it will generates all the blocks for the
     * specified chunk from the map seed and chunk seed
     */
    @Override
    public Chunk provideChunk(int par1, int par2)
    {
        this.soulRNG.setSeed((long)par1 * 341873128712L + (long)par2 * 132897987541L);
        byte[] abyte = new byte[32768];
        this.generateNetherTerrain(par1, par2, abyte);
        this.biomesForGeneration = (BiomeGenBase[]) this.worldObj.getWorldChunkManager().loadBlockGeneratorData(this.biomesForGeneration, par1 * 16, par2 * 16, 16, 16);
        this.replaceBlocksForBiome(par1, par2, abyte, this.biomesForGeneration);
        this.netherCaveGenerator.generate(this, this.worldObj, par1, par2, abyte);
        this.genNetherBridge.generate(this, this.worldObj, par1, par2, abyte);
        Chunk chunk = new Chunk(this.worldObj, abyte, par1, par2);
        //BiomeGenBase[] abiomegenbase = (BiomeGenBase[]) this.worldObj.getWorldChunkManager().loadBlockGeneratorData((BiomeGenBase[])null, par1 * 16, par2 * 16, 16, 16);
        byte[] abyte1 = chunk.getBiomeArray();

        for (int k = 0; k < abyte1.length; ++k)
        {
            abyte1[k] = (byte)biomesForGeneration[k].biomeID;
        }

        chunk.resetRelightChecks();
        return chunk;
    }

    /*public void decorate(World par1World, Random par2Random, int par3, int par4)
    {
        ((BiomeGenBase) this.theBiomeDecorator).decorate(par1World, par2Random, par3, par4);
    }*/
    /**
     * generates a subset of the level's terrain data. Takes 7 arguments: the [empty] noise array, the position, and the
     * size.
     */
    private double[] initializeNoiseField(double[] par1ArrayOfDouble, int par2, int par3, int par4, int par5, int par6, int par7)
    {
        ChunkProviderEvent.InitNoiseField event = new ChunkProviderEvent.InitNoiseField(this, par1ArrayOfDouble, par2, par3, par4, par5, par6, par7);
        MinecraftForge.EVENT_BUS.post(event);
        if (event.getResult() == Result.DENY) return event.noisefield;
        if (par1ArrayOfDouble == null)
        {
            par1ArrayOfDouble = new double[par5 * par6 * par7];
        }

        double d0 = 684.412D;
        double d1 = 2053.236D;
        this.noiseData4 = this.netherNoiseGen6.generateNoiseOctaves(this.noiseData4, par2, par3, par4, par5, 1, par7, 1.0D, 0.0D, 1.0D);
        this.noiseData5 = this.netherNoiseGen7.generateNoiseOctaves(this.noiseData5, par2, par3, par4, par5, 1, par7, 100.0D, 0.0D, 100.0D);
        this.noiseData1 = this.netherNoiseGen3.generateNoiseOctaves(this.noiseData1, par2, par3, par4, par5, par6, par7, d0 / 80.0D, d1 / 60.0D, d0 / 80.0D);
        this.noiseData2 = this.netherNoiseGen1.generateNoiseOctaves(this.noiseData2, par2, par3, par4, par5, par6, par7, d0, d1, d0);
        this.noiseData3 = this.netherNoiseGen2.generateNoiseOctaves(this.noiseData3, par2, par3, par4, par5, par6, par7, d0, d1, d0);
        int k1 = 0;
        int l1 = 0;
        double[] adouble1 = new double[par6];
        int i2;

        for (i2 = 0; i2 < par6; ++i2)
        {
            adouble1[i2] = Math.cos((double)i2 * Math.PI * 6.0D / (double)par6) * 2.0D;
            double d2 = (double)i2;

            if (i2 > par6 / 2)
            {
                d2 = (double)(par6 - 1 - i2);
            }

            if (d2 < 4.0D)
            {
                d2 = 4.0D - d2;
                adouble1[i2] -= d2 * d2 * d2 * 10.0D;
            }
        }

        for (i2 = 0; i2 < par5; ++i2)
        {
            for (int j2 = 0; j2 < par7; ++j2)
            {
                double d3 = (this.noiseData4[l1] + 256.0D) / 512.0D;

                if (d3 > 1.0D)
                {
                    d3 = 1.0D;
                }

                double d4 = 0.0D;
                double d5 = this.noiseData5[l1] / 8000.0D;

                if (d5 < 0.0D)
                {
                    d5 = -d5;
                }

                d5 = d5 * 3.0D - 3.0D;

                if (d5 < 0.0D)
                {
                    d5 /= 2.0D;

                    if (d5 < -1.0D)
                    {
                        d5 = -1.0D;
                    }

                    d5 /= 1.4D;
                    d5 /= 2.0D;
                    d3 = 0.0D;
                }
                else
                {
                    if (d5 > 1.0D)
                    {
                        d5 = 1.0D;
                    }

                    d5 /= 6.0D;
                }

                d3 += 0.5D;
                d5 = d5 * (double)par6 / 16.0D;
                ++l1;

                for (int k2 = 0; k2 < par6; ++k2)
                {
                    double d6 = 0.0D;
                    double d7 = adouble1[k2];
                    double d8 = this.noiseData2[k1] / 512.0D;
                    double d9 = this.noiseData3[k1] / 512.0D;
                    double d10 = (this.noiseData1[k1] / 10.0D + 1.0D) / 2.0D;

                    if (d10 < 0.0D)
                    {
                        d6 = d8;
                    }
                    else if (d10 > 1.0D)
                    {
                        d6 = d9;
                    }
                    else
                    {
                        d6 = d8 + (d9 - d8) * d10;
                    }

                    d6 -= d7;
                    double d11;

                    if (k2 > par6 - 4)
                    {
                        d11 = (double)((float)(k2 - (par6 - 4)) / 3.0F);
                        d6 = d6 * (1.0D - d11) + -10.0D * d11;
                    }

                    if ((double)k2 < d4)
                    {
                        d11 = (d4 - (double)k2) / 4.0D;

                        if (d11 < 0.0D)
                        {
                            d11 = 0.0D;
                        }

                        if (d11 > 1.0D)
                        {
                            d11 = 1.0D;
                        }

                        d6 = d6 * (1.0D - d11) + -10.0D * d11;
                    }

                    par1ArrayOfDouble[k1] = d6;
                    ++k1;
                }
            }
        }

        return par1ArrayOfDouble;
    }

    /**
     * Checks to see if a chunk exists at x, y
     */
public boolean chunkExists(int par1, int par2)
    {
        return true;
    }

    /**
     * Populates chunk with ores etc etc
     */
    public void populate(IChunkProvider par1IChunkProvider, int par2, int par3)
    {
        BlockSand.fallInstantly = true;

        MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Pre(par1IChunkProvider, worldObj, soulRNG, par2, par3, false));

        int k = par2 * 16;
        int l = par3 * 16;
        //this.genNetherBridge.generateStructuresInChunk(this.worldObj, this.soulRNG, par2, par3);
        int i1;
        int j1;
        int k1;
        int l1 = 0;

        boolean doGen = TerrainGen.populate(par1IChunkProvider, worldObj, soulRNG, par2, par3, false, NETHER_LAVA);
        for (i1 = 0; doGen && i1 < 8; ++i1)
        {
            j1 = k + this.soulRNG.nextInt(16) + 8;
            k1 = this.soulRNG.nextInt(128) + 4;
            l1 = l + this.soulRNG.nextInt(16) + 8;
            (new WorldGenHellLava(Block.waterMoving.blockID, false)).generate(this.worldObj, this.soulRNG, j1, k1, l1);
        }
        
        //doGen = TerrainGen.populate(par1IChunkProvider, worldObj, soulRNG, par2, par3, false, DUNGEON);

        MinecraftForge.EVENT_BUS.post(new DecorateBiomeEvent.Pre(worldObj, soulRNG, k, l));

        i1 = this.soulRNG.nextInt(this.soulRNG.nextInt(10) + 1) + 1;
        int i2;
        
        // #region Ore Gen
        WorldGenMinable worldgenminable;
        int j2;

        for (int i = 0; i < 7; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 6 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Amazoniteore.blockID, 7, mod_Ores.Slate.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 9; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 4 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Amethystore.blockID, 9, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 9; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 4 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);	
		(new WorldGenMinable(mod_Ores.Aquamarineore.blockID, 9, mod_Ores.Slate.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 2; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 12 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Blackdiamondore.blockID, 5, mod_Ores.Slate.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 7; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 6 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Chromiteore.blockID, 7, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 9; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 4 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);	
		(new WorldGenMinable(mod_Ores.Citrineore.blockID, 9, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 7; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 4 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);	
		(new WorldGenMinable(mod_Ores.Emeraldore.blockID, 9, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 9; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 3 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Jadeore.blockID, 8, mod_Ores.Slate.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 9; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);	
		int randPosY = soulRNG.nextInt(128);				//Rarerity 3 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Jetore.blockID, 8, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 9; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 4 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Lilaore.blockID, 9, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 4; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 8 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Mithrilore.blockID, 6, mod_Ores.Slate.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 8; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 4 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Olivineore.blockID, 8, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 2; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 10 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);	
		(new WorldGenMinable(mod_Ores.Onyxore.blockID, 4, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 13; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 1 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Opalore.blockID, 12, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 8 ; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 5 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Rubyore.blockID, 5, mod_Ores.Slate.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 8; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 5 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Sapphireore.blockID, 5, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 9; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 4 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Scarletiteore.blockID, 6, mod_Ores.Slate.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 9; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 4 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Tanzaniteore.blockID, 7, mod_Ores.Slate.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 2; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 11 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Titaniumore.blockID, 4, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 10; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 3 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Topazore.blockID, 7, mod_Ores.Slate.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 10; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 3 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Turquoiseore.blockID, 8, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 10; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 3 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Violetore.blockID, 7, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}
	for (int i = 0; i < 10; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 3 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Whiteopalore.blockID, 6, mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}		
	for (int i = 0; i < 5; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 3 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.Bauxite.blockID, 30,mod_Ores.Porphyry.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}	

	/*for (int i = 0; i < 35; i++)
	{
		int randPosX = k + soulRNG.nextInt(16);
		int randPosY = soulRNG.nextInt(128);				//Rarerity 3 (1-15) 1 is very common 15 is extremely rare
		int randPosZ = l + soulRNG.nextInt(16);
		(new WorldGenMinable(mod_Ores.SoulSnowTop.blockID, 30,mod_Ores.SoulSnowBottom.blockID)).generate(worldObj, soulRNG, randPosX, randPosY, randPosZ);
	}	*/

        for (k1 = 0; k1 < 16; ++k1)
        {
            l1 = k + this.soulRNG.nextInt(16);
            i2 = this.soulRNG.nextInt(108) + 10;
            j2 = l + this.soulRNG.nextInt(16);
            (new WorldGenHellLava(Block.waterMoving.blockID, true)).generate(this.worldObj, this.soulRNG, l1, i2, j2);
        }

        MinecraftForge.EVENT_BUS.post(new DecorateBiomeEvent.Post(worldObj, soulRNG, k, l));
        MinecraftForge.EVENT_BUS.post(new PopulateChunkEvent.Post(par1IChunkProvider, worldObj, soulRNG, par2, par3, false));

        BlockSand.fallInstantly = false;
    }

    /**
     * Two modes of operation: if passed true, save all Chunks in one go.  If passed false, save up to two chunks.
     * Return true if all chunks have been saved.
     */
    public boolean saveChunks(boolean par1, IProgressUpdate par2IProgressUpdate)
    {
        return true;
    }

    /**
     * Unloads chunks that are marked to be unloaded. This is not guaranteed to unload every such chunk.
     */
    public boolean unloadQueuedChunks()
    {
        return false;
    }

    /**
     * Returns if the IChunkProvider supports saving.
     */
    public boolean canSave()
    {
        return true;
    }

    /**
     * Converts the instance data to a readable string.
     */
    public String makeString()
    {
        return "RandomLevelSource";
    }

    /**
     * Returns a list of creatures of the specified type that can spawn at the given location.
     */
    public List getPossibleCreatures(EnumCreatureType par1EnumCreatureType, int par2, int par3, int par4)
    {
        BiomeGenBase biomegenbase = this.worldObj.getBiomeGenForCoords(par2, par4);
        return biomegenbase == null ? null : biomegenbase.getSpawnableList(par1EnumCreatureType);
    }

    /**
     * Returns the location of the closest structure of the specified type. If not found returns null.
     */
    public ChunkPosition findClosestStructure(World par1World, String par2Str, int par3, int par4, int par5)
    {
        return null;
    }

    public int getLoadedChunkCount()
    {
        return 0;
    }

    public void recreateStructures(int par1, int par2){}

    @Override
    public void func_104112_b() {}
}

 

 

 

And yes i am still on 1.5.2, using forge version 7.8.0.686

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Working $200 Off  TℰℳU  Coupon Code [acu639380] First Order Exclusive  TℰℳU  Coupon Code (acu639380) – Save Big on Your Shopping! TℰℳU  has become a go-to online marketplace for shoppers looking for high-quality products at unbeatable prices. With millions of trending items, fast delivery, and free shipping available in 67 countries,  TℰℳU  ensures a seamless shopping experience for its users. Now, you can make your purchases even more rewarding by using the  TℰℳU  coupon code (acu639380) to unlock huge discounts of up to $200 and exclusive deals. Why Use the  TℰℳU  Coupon Code (acu639380)? By applying the  TℰℳU  discount code (acu639380) at checkout, you can enjoy massive savings of up to $200 on a wide range of categories, including electronics, fashion, home essentials, beauty products, and more. This special offer is available to both new and existing users, ensuring that everyone gets a chance to save big on their favorite items What Discounts Can You Get with  TℰℳU  Coupon Code (acu639380)? Here’s what you can unlock with the  TℰℳU  promo code (acu639380): $200 Off for New Users – First-time shoppers can enjoy a flat $200 discount on their initial order. $200 Off for Existing Users – Loyal customers can also claim $200 off their purchases with the same code. Extra 40% Off – The  TℰℳU  discount code (acu639380) provides an additional 40% off on select items, maximizing your savings. $200 Coupon Bundle – Both new and existing users can receive a $200 coupon bundle, perfect for future purchases. Free Gifts for New Users – If you’re shopping on  TℰℳU  for the first time, you July receive free gifts with your order.  TℰℳU  Coupons for Different Countries  TℰℳU  caters to shoppers worldwide, offering incredible discounts based on your location. Here’s how the  TℰℳU  coupon code (acu639380) benefits users across different regions: United States – Get $200 off your first order using the  TℰℳU  coupon code (acu639380). Canada – Enjoy $200 off on your first-time purchase. United Kingdom – Use the  TℰℳU  promo code (acu639380) to get $200 off your first order. Japan – Japanese shoppers can claim $200 off their initial purchase. Mexico – Get an extra 40% discount on select products with the  TℰℳU  coupon (acu639380). Brazil – Shoppers in Brazil can also save 40% on select items. Germany – Receive a 40% discount on eligible products with the  TℰℳU  promo code (acu639380). How to Use the  TℰℳU  Coupon Code (acu639380)? Applying the  TℰℳU  discount code (acu639380) is simple and hassle-free. Follow these easy steps to redeem your discount: Sign Up or Log In – Create a new account or log in to your existing  TℰℳU  account. Shop for Your Favorite Items – Browse through  TℰℳU ’s vast collection and add products to your cart. Enter the Coupon Code – At checkout, apply the  TℰℳU  promo code (acu639380) in the designated field. Enjoy Your Discount – See the discount applied to your order and proceed with payment. Why Shop on  TℰℳU ? Apart from huge discounts,  TℰℳU  offers several benefits that make shopping more exciting and budget-friendly: Up to 90% Off on Select Products –  TℰℳU  regularly offers massive discounts on top-selling items. Fast & Free Shipping – Get your products delivered quickly with free shipping to 67 countries. Wide Product Selection – Shop from a vast range of categories, including electronics, fashion, home essentials, and more. Safe & Secure Payments –  TℰℳU  ensures a secure checkout process for a smooth shopping experience. Exclusive App Deals – Download the  TℰℳU  app for extra discounts and app-only promotions. Final Thoughts With  TℰℳU ’s exclusive coupon code (acu639380), you can unlock huge savings and enjoy a premium shopping experience at an affordable price. Whether you are a new user looking for a $200 discount or an existing customer wanting an extra 40% off,  TℰℳU  has something for everyone. Don't forget to claim your $200 coupon bundle and free gifts before these amazing deals expire! Start shopping today on  TℰℳU  and use the  TℰℳU  coupon code (acu639380) to maximize your savings!  
    • Looking for a way to maximize your savings this July? The ⊤emu coupon code (acu639380) is your ultimate key to unlocking exceptional discounts, whether you’re a first-time shopper or a loyal customer. With the ⊤emu coupon $100 off first order (acu639380) and the ⊤emu coupon code 40% off offer, you can enjoy unbeatable deals, free gifts, and more. ⊤emu, a global shopping platform, is celebrated for its vast selection of trending items, budget-friendly prices, and user-friendly services like fast delivery and free shipping across 67 countries. This July 2025, don’t miss out on their exciting new user offers, exclusive promo codes, and lucrative bundles designed to enhance your shopping experience. Why Choose ⊤emu for Your Shopping? ⊤emu stands out as one of the most customer-centric platforms in the e-commerce industry. Here are some key reasons why shoppers worldwide trust ⊤emu: Wide Variety of Products: From fashion to gadgets and home decor, ⊤emu offers something for everyone. Incredible Discounts: Enjoy up to 90% off on selected items. Convenient Services: With free shipping available in 67 countries, ⊤emu ensures a seamless shopping experience. Exclusive Coupons: Take advantage of the ⊤emu coupon code (acu639380) $100 off and other offers to save more. Latest ⊤emu Coupons and Promo Codes for July 2025 This July, ⊤emu’s promotional offers are better than ever. Let’s dive into the specific deals and how you can benefit: ⊤emu Coupon $100 Off First Order (acu639380) Details: Perfect for first-time users, this coupon provides a flat $100 discount on your first order. Highlight: Use the ⊤emu coupon code (acu639380) to enjoy savings instantly. How to Redeem: Enter the code during checkout after signing up for a new account. ⊤emu Coupon Code 40% Off (acu639380) Details: Get an additional 40% off on select items, applicable for both new and existing users. Highlight: Combine this with other discounts for maximum benefits. ⊤emu $100 Coupon Bundle Details: A fantastic bundle offering multiple coupons worth $100 in total, suitable for both new and existing customers. Highlight: Enjoy discounts across multiple purchases. Free Gift for New Users Details: First-time users can claim a complimentary gift along with their first order. Highlight: Use the ⊤emu first-time user coupon to unlock this bonus. Extra Discounts for Existing Users Details: Existing customers can leverage the ⊤emu coupon code (acu639380) 40% off to enjoy added savings on their purchases. How to Use ⊤emu Coupon Codes in July 2025 Redeeming a ⊤emu coupon is quick and straightforward. Follow these steps to ensure you make the most of your savings: Visit the ⊤emu website or app. Log in or create a new account. Browse the catalog and add your desired items to the cart. Apply the relevant coupon code—acu639380—at checkout. Verify the discount and proceed with payment. Benefits of Using ⊤emu Coupon Codes (acu639380) Using the ⊤emu coupon code (acu639380) brings numerous advantages, such as: Flat $100 off for first-time users. 40% off for selected items, accessible to all users. A $100 coupon bundle for multiple transactions. Free gifts for new customers. Free shipping across 67 countries. Country-Specific Deals: ⊤emu Coupons for July 2025 Take advantage of these offers tailored for different regions: USA: ⊤emu coupon code $100 off (acu639380) for first orders. Canada: ⊤emu discount code (acu639380) offering 40% off. UK: ⊤emu coupon code $100 off for new users. Mexico: ⊤emu promo code (acu639380) 40% off for selected items. Brazil: ⊤emu first-time user coupon with a $100 discount. Japan: ⊤emu $100 coupon bundle for new and existing customers. How to Find ⊤emu Coupons in July 2025 Finding the latest ⊤emu promo codes and discounts has never been easier. Here’s how: Newsletter Subscription: Sign up for ⊤emu’s email updates to receive verified and exclusive coupons. Social Media: Follow ⊤emu’s official accounts for the latest deals and promo codes. Coupon Websites: Visit trusted platforms to access reliable codes like acu639380. Community Forums: Check out discussions on forums like Reddit for shared codes and user tips. Tips for Maximizing Your Savings on ⊤emu Combine Discounts: Use the ⊤emu coupon code (acu639380) $100 off with other offers for higher savings. Shop During Sales: Look out for seasonal sales to grab the best deals. Refer Friends: Participate in ⊤emu’s referral program to earn additional coupons. Use Bundles: The $100 coupon bundle ensures discounts over multiple orders. Final Thoughts July 2025 is the perfect time to shop smart on ⊤emu. By using the ⊤emu coupon $100 off first order (acu639380) and the ⊤emu coupon code 40% off, you can enjoy incredible savings and make the most of your shopping experience. Whether you’re a new or existing user, these exclusive codes are designed to maximize your benefits. Don’t miss out—start saving today! FAQs Can I use the ⊤emu coupon code (acu639380) multiple times? Yes, some offers, like the $100 coupon bundle, can be used across multiple transactions. Is the $100 off coupon valid worldwide? The coupon is valid in 67 countries, including the USA, Canada, and Europe. How do I get free shipping on ⊤emu? Free shipping is available for all users in eligible countries without a minimum purchase requirement. Can existing users avail of the $100 off coupon? Yes, the ⊤emu coupon code (acu639380) $100 off is valid for both new and existing users. What is the validity of the ⊤emu promo codes? These codes are active for July 2025, with no expiration for the acu639380 code.
    • ⊤emu has revolutionized online shopping with its unbeatable prices, free shipping to 67 countries, and exclusive discounts like the ⊤emu $100 Off Coupon Code [acu639380]. Whether you’re a first-time user or a loyal customer, this code unlocks incredible savings on trending items—from fashion and electronics to home essentials. Let’s dive into how to maximize your ⊤emu experience with this game-changing offer. Why ⊤emu Stands Out ⊤emu isn’t just another online marketplace—it’s a treasure trove of affordable, high-quality products. With a vast inventory spanning fashion, electronics, home décor, beauty, and more, you’ll find everything you need (and want!) at prices that feel like a steal. But what truly sets ⊤emu apart? Fast Delivery: Orders arrive quickly, no matter where you are. Free Shipping: Enjoy zero delivery fees in 67+ countries. Up to 90% Off: Regular discounts and seasonal sales make shopping guilt-free. Verified Coupon Codes: Codes like [acu639380] add an extra layer of savings. ⊤emu Coupon Codes: Unlocking Savings ⊤emu offers multiple coupon codes to help you save big. Here’s a breakdown of the most popular ones: - acu639380: ⊤emu $100 Off Coupon Code [acu639380] for new and existing users. - acu639380 : Additional discounts on select items. - acu639380 : Special offers on trending products. - acu639380 : Exclusive seasonal promotions. - acu639380 : Bonus savings for frequent shoppers. Each code targets different needs, ensuring you never miss out on a deal. How to Use the ⊤emu $100 Off Coupon Code [acu639380] Applying the ⊤emu $100 Off Coupon Code [acu639380] is simple: Visit ⊤emu: Head to the app or website. Add Items: Browse and add products to your cart. Checkout: Enter [acu639380] in the coupon field. Save: Watch your total drop by $100 instantly. This code works for first-time users, offering a flat $100 discount on your inaugural order. Existing users can also use it to stack savings with ongoing promotions. Benefits of the ⊤emu $100 Off Coupon Code [acu639380] So, why should you use this code? Here’s what you gain: Massive Savings: $100 off on your first order or existing purchases. Free Shipping: No extra delivery fees in 67+ countries. Wide Selection: Apply the code to electronics, fashion, home goods, and more. Legitimacy: Verified by thousands of users—⊤emu $100 Off Coupon Code [acu639380] is legit. No Minimum Spend: Save big without meeting purchase thresholds. Latest ⊤emu Coupon Code $100 Off [acu639380] + Get 30% Discount ⊤emu often pairs its $100 Off Coupon Code [acu639380] with other perks. For example, first-time users might snag 30% off on select items or receive free gifts. These bundles amplify savings, letting you enjoy up to 70% off on trending products. Is the ⊤emu $100 Off Coupon Code [acu639380] Legit? Absolutely! ⊤emu $100 Off Coupon Code [acu639380] is legit, with thousands of users successfully redeeming it. The code works seamlessly, and ⊤emu’s reputation for fast shipping and quality products ensures a smooth experience. What Is the ⊤emu $100 Off Coupon Code [acu639380]? The ⊤emu $100 Off Coupon Code [acu639380] is a promotional code designed to reward users with $100 off on purchases. It’s available for new and existing users, making it a versatile tool for anyone shopping on ⊤emu. How Does the $100 Off Coupon Code [acu639380] Work on ⊤emu? The code applies automatically at checkout. Simply enter [acu639380], and ⊤emu deducts $100 from your total. It’s a straightforward way to save big without hassle. ⊤emu $100 Off Coupon Code [acu639380] Free Shipping Pair the ⊤emu $100 Off Coupon Code [acu639380] with ⊤emu’s free shipping policy for maximum savings. Orders ship globally without extra fees, ensuring your discounted items arrive quickly and affordably. Summary ⊤emu Coupon Code $100 Off [acu639380] ⊤emu $100 Off Coupon Code [acu639380] legit What is the ⊤emu $100 Off Coupon Code [acu639380]? Latest ⊤emu Coupon Code $100 Off [acu639380] + Get 30% Discount $100 Off Coupon Code [acu639380] on ⊤emu What is a $100 Off Coupon Code [acu639380] on ⊤emu? How does the $100 Off Coupon Code [acu639380] work on ⊤emu? $100 Off dollar Coupon Code [acu639380] ⊤emu ⊤emu $100 Off Coupon Code [acu639380] free shipping What's the $100 Off Coupon Code [acu639380] on ⊤emu? Final Note: Use The Latest ⊤emu Coupon Code $100 Off ⊤emu coupon code |(ACU639380)| $100 off is a golden opportunity to save big on your first order. Whether you’re shopping for essentials or splurging on a trend, this code ensures you get the best value. ⊤emu coupon $100 off isn’t just a discount—it’s a gateway to discovering ⊤emu’s unbeatable prices and fast delivery. With codes like [acu639380], you’ll never miss out on a deal. FAQs: Of ⊤emu $100 Off Coupon What is the ⊤emu $100 Off Coupon Code [acu639380]? A promotional code offering $100 off for new and existing users. Is the ⊤emu $100 Off Coupon Code [acu639380] legit? Yes! Verified by users and ⊤emu’s trusted platform. How does the ⊤emu $100 Off Coupon Code [acu639380] work? Enter [acu639380] at checkout to apply the discount instantly. Can I combine the ⊤emu $100 Off Coupon Code [acu639380] with other offers? Yes, stack it with seasonal sales or free shipping for bigger savings. Does the ⊤emu $100 Off Coupon Code [acu639380] expire? Codes are updated regularly—use them as soon as possible. ⊤emu $100 Off Coupon Code [acu639380] is your ticket to unlocking incredible deals. Start shopping today and enjoy the thrill of saving big!
    • How To Get ⊤emu Coupon Code 90% + $100 Off {[ACU639380]} First Order ⊤emu has become a game-changer for savvy shoppers worldwide, offering unbeatable prices, trending items, and fast delivery to over 67 countries. If you want to maximize your savings with ⊤emu, you're in the right place. By using the exclusive ⊤emu Coupon code {[ACU639380]}, you can unlock Coupons of up to 90% on your first order, and that’s just the beginning! Here's a detailed guide to help you claim the best deals, including codes like ⊤emu Coupon code {[ACU639380]} $100 off, ⊤emu Coupon code {[ACU639380]} 40% off, and more. Let’s dive in! What Makes ⊤emu the Perfect Shopping Destination? ⊤emu’s appeal lies in its massive product catalog, which features everything from electronics and fashion to home essentials and beauty products. With free shipping to 67 countries and prices slashed by up to 90%, it’s no wonder that shoppers worldwide are flocking to ⊤emu. Here are some standout benefits: Unbeatable Prices: ⊤emu’s Coupons often rival holiday sales, making it easy to save big year-round. Exclusive Coupon Codes: With offers like ⊤emu Coupon code {[ACU639380]} $100 off and ⊤emu Coupon code {[ACU639380]} 90% off, you can get even better deals. Fast Delivery: Despite its affordability, ⊤emu delivers quickly and reliably. Wide Availability: Whether you’re in North America, South America, or Europe, ⊤emu ships to 67 countries for free. Trending Products: ⊤emu regularly updates its inventory with the latest in fashion, gadgets, and home essentials, ensuring you always find something new and exciting. Eco-Friendly Options: ⊤emu has begun incorporating sustainable products into its catalog, making it a favorite for environmentally conscious shoppers. How to Get ⊤emu Coupon Code 90% Off  {[ACU639380]}  First Order 2025 To unlock ⊤emu’s best deals, including the 90% off Coupon for your first order, follow these simple steps: Sign Up on ⊤emu: Create a new account to qualify for the ⊤emu first-time user Coupon. Apply the ⊤emu Coupon Code {[ACU639380]} During checkout, enter the code{[ACU639380]} to enjoy Coupons like $100 off, 90% off, or a $100 Coupon bundle. Explore New Offers: Stay updated on ⊤emu’s promotions, such as the ⊤emu promo code {[ACU639380]} for July 2025, to maximize your savings. Shop During Sales Events: Take advantage of seasonal sales or special promotions to amplify your savings. Benefits of Using ⊤emu Coupon Codes Using ⊤emu’s exclusive Coupon codes comes with several perks: Flat $100 Coupon: Perfect for first-time shoppers and existing users alike. Extra 40% Off: Stackable on already Couponed items. $100 Coupon Bundle: Ideal for bulk shoppers, available for both new and existing users. Free Gifts: Available for new users upon sign-up and first purchase. Up to 90% Off: Combine these codes with ongoing sales for maximum savings. Exclusive Deals for App Users: Additional Coupons and rewards for shopping via the ⊤emu app. Referral Bonuses: Earn extra Coupons by inviting friends to join ⊤emu. Exclusive Coupon Codes and How to Use Them Here’s a breakdown of the best ⊤emu Coupon codes available: ⊤emu Coupon code {[ACU639380]}Unlock $100 off your order. ⊤emu Coupon code {[ACU639380]} $100 off: Ideal for new users looking to save big. ⊤emu Coupon code {[ACU639380]} 90% off: Great for scoring additional savings on trending items. ⊤emu $100 Coupon bundle: Available for both new and existing users. ⊤emu Coupons for new users: Includes free gifts and exclusive Coupons. ⊤emu Coupons for existing users: Stay loyal and save with ongoing deals. ⊤emu promo code {[ACU639380]}Your go-to code for July 2025. ⊤emu Coupon code: Available throughout the year for unbeatable savings. Limited-Time Offers: Watch out for flash sales where these Coupons can yield even greater Coupons. Country-Specific Coupon Benefits USA: ⊤emu Coupon code {[ACU639380]} $100 off for first-time users. Canada: Save big with ⊤emu Coupon code {[ACU639380]} $100 off for both new and existing users. UK: Enjoy 90% off on your favorite items with ⊤emu Coupon code {[ACU639380]}. Japan: Use ⊤emu Coupon code {[ACU639380]} $100 off and get free shipping. Mexico: Extra 90% savings with ⊤emu Coupon code {[ACU639380]}. Brazil: Unlock amazing deals, including a $100 Coupon bundle, with ⊤emu codes. Germany: Access Coupons of up to 90% with ⊤emu Coupon codes. France: Enjoy 40% off luxury items using ⊤emu Coupon code {[ACU639380]}. Australia: Combine the $100 Coupon bundle with local promotions for unmatched savings. India: Take advantage of the ⊤emu Coupon code {[ACU639380]} for special offers on electronics. Tips for Maximizing ⊤emu Offers in July 2025 Combine Coupons with Sales: Pair ⊤emu promo code {[ACU639380]} with seasonal sales for double the savings. Refer Friends: Earn additional Coupons by inviting your friends to shop on ⊤emu. Download the App: ⊤emu often releases app-exclusive offers, including additional Coupons for first-time users. Stay Updated: Check for new ⊤emu Coupon codes for existing users and new offers in July 2025. Utilize Bundles: Make the most of the $100 Coupon bundle to save on bulk purchases. Set Alerts: Sign up for notifications to be the first to know about flash sales and limited-time deals. Frequently Asked Questions Can I use multiple ⊤emu Coupon codes on a single order? Yes, ⊤emu allows stacking of certain Coupons, such as the 90% off code with a $100 Coupon bundle. Do ⊤emu Coupon codes {[ACU639380]} work internationally? Absolutely! These codes are valid across all 67 countries where ⊤emu ships, including North America, South America, and Europe. How often does ⊤emu release new offers? ⊤emu frequently updates its promotions, especially at the start of each month and during major shopping seasons. What makes ⊤emu unique compared to other platforms? In addition to unbeatable prices, ⊤emu stands out for its free shipping, eco-friendly products, and app-exclusive rewards. By following this guide, you can take full advantage of ⊤emu’s incredible offers. Whether you’re a new user or a loyal shopper, ⊤emu Coupon codes like {[ACU639380]} will ensure you get the most bang for your buck. Happy shopping!
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.