Package mods.natura.worldgen.retro

Source Code of mods.natura.worldgen.retro.WorldHandler

package mods.natura.worldgen.retro;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Random;
import mantle.world.ChunkCoord;
import mods.natura.Natura;
import mods.natura.worldgen.BaseTreeWorldgen;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraftforge.event.world.ChunkDataEvent;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;

public class WorldHandler
{

    private static HashSet dimensionBlacklist = new HashSet();

    private static long genHash = 100;

    public static WorldHandler instance = new WorldHandler();

    @SubscribeEvent
    public void handleChunkSaveEvent (ChunkDataEvent.Save event)
    {

        NBTTagCompound tag = new NBTTagCompound();

        if (Natura.retrogen)
        {
            tag.setLong("Features", genHash);
        }
        event.getData().setTag("NaturaWorld", tag);
    }

    @SubscribeEvent
    public void handleChunkLoadEvent (ChunkDataEvent.Load event)
    {

        int dim = event.world.provider.dimensionId;

        if (dimensionBlacklist.contains(dim))
        {
            return;
        }
        boolean features = false;
        boolean regen = false;
        NBTTagCompound tag = (NBTTagCompound) event.getData().getTag("NaturaWorld");

        if (tag != null)
        {
            features = tag.getLong("Features") != genHash && Natura.retrogen;
        }
        ChunkCoord cCoord = new ChunkCoord(event.getChunk());

        if (tag == null && (Natura.retrogen) && !event.getData().getBoolean("Natura.Retrogen"))
        {
            regen = true;
        }

        if (features)
        {
            regen = true;
        }
        if (regen)
        {
            ArrayList chunks = (ArrayList) TickHandlerWorld.chunksToGen.get(Integer.valueOf(dim));

            if (chunks == null)
            {
                TickHandlerWorld.chunksToGen.put(Integer.valueOf(dim), new ArrayList());
                chunks = (ArrayList) TickHandlerWorld.chunksToGen.get(Integer.valueOf(dim));
            }
            if (chunks != null)
            {
                chunks.add(cCoord);
                TickHandlerWorld.chunksToGen.put(Integer.valueOf(dim), chunks);
            }
        }
    }

    /* HELPER FUNCTIONS */

    public void generateWorld (Random random, int chunkX, int chunkZ, World world, boolean newGen)
    {
        if (newGen && !Natura.retrogen)
        {
            return;
        }
        if (world.provider.dimensionId == 1)
        {//|| world.provider.dimensionId == -1) {
            return;
        }
        Natura.crops.generate(random, chunkX, chunkZ, world, world.provider.createChunkGenerator(), world.provider.createChunkGenerator());
        Natura.clouds.generate(random, chunkX, chunkZ, world, world.provider.createChunkGenerator(), world.provider.createChunkGenerator());
        BaseTreeWorldgen.retrogen = true;
        Natura.trees.generate(random, chunkX, chunkZ, world, world.provider.createChunkGenerator(), world.provider.createChunkGenerator());
        BaseTreeWorldgen.retrogen = false;

        if (!newGen)
        {
            world.getChunkFromChunkCoords(chunkX, chunkZ).setChunkModified();
        }
    }

}
TOP

Related Classes of mods.natura.worldgen.retro.WorldHandler

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