package me.hugmanrique.slime.bukkit;

import net.minecraft.server.v1_8_R3.ServerNBTManager;
import net.minecraft.server.v1_8_R3.WorldProvider;
import net.minecraft.server.v1_8_R3.WorldServer;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_8_R3.CraftWorld;
import org.bukkit.generator.ChunkGenerator;

import java.util.Random;
import java.util.UUID;

public class EmptyChunkGenerator extends ChunkGenerator {

    /**
     * Sets the generator of the world specified by {@code worldUuid}
     * to {@link EmptyChunkGenerator}.
     *
     * This method should be called from {@link ServerNBTManager#createChunkLoader(WorldProvider)},
     * right before {@code WorldServer#k()} accesses {@link WorldServer#generator}.
     *
     * @param worldUuid the UUID of the world
     */
    public static void setGenerator(UUID worldUuid) {
        CraftWorld craftWorld = (CraftWorld) Bukkit.getWorld(worldUuid);

        craftWorld.getHandle().generator = new EmptyChunkGenerator();
    }

    @Override
    public byte[][] generateBlockSections(World world, Random random, int x, int z, BiomeGrid biomes) {
        // Leave all sections as null, meaning they aren't populated.
        return new byte[world.getMaxHeight() / 16][];
    }
}