/*
 * Forge Mod Loader
 * Copyright (c) 2012-2013 cpw.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Lesser Public License v2.1
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 *
 * Contributors:
 *     cpw - implementation
 */

package cpw.mods.fml.common.registry;

import java.util.BitSet;

import net.minecraft.block.Block;

class BlockTracker
{
    private static final BlockTracker INSTANCE = new BlockTracker();
    private BitSet allocatedBlocks;

    private BlockTracker()
    {
        allocatedBlocks = new BitSet(4096);
        allocatedBlocks.set(0, 4096);

        for (int i = 0; i < Block.blocksList.length; i++)
        {
            if (Block.blocksList[i] != null)
            {
                allocatedBlocks.clear(i);
            }
        }
    }
    public static int nextBlockId()
    {
        return instance().getNextBlockId();
    }

    private int getNextBlockId()
    {
        int idx = allocatedBlocks.nextSetBit(0);
        allocatedBlocks.clear(idx);
        return idx;
    }
    private static BlockTracker instance()
    {
        return INSTANCE;
    }
    public static void reserveBlockId(int id)
    {
        instance().doReserveId(id);
    }
    private void doReserveId(int id)
    {
        allocatedBlocks.clear(id);
    }
}
