diff --git a/client/net/minecraftforge/client/MinecraftForgeClient.java b/client/net/minecraftforge/client/MinecraftForgeClient.java index d0d68b0e5..a74c48484 100644 --- a/client/net/minecraftforge/client/MinecraftForgeClient.java +++ b/client/net/minecraftforge/client/MinecraftForgeClient.java @@ -5,6 +5,8 @@ package net.minecraftforge.client; +import java.util.BitSet; + import org.lwjgl.opengl.Display; import net.minecraft.block.Block; @@ -61,4 +63,39 @@ public class MinecraftForgeClient { return ForgeHooksClient.stencilBits; } + + + private static BitSet stencilBits = new BitSet(getStencilBits()); + static + { + stencilBits.set(0,getStencilBits()); + } + + /** + * Reserve a stencil bit for use in rendering + * + * @return A bit or -1 if no further stencil bits are available + */ + public static int reserveStencilBit() + { + int bit = stencilBits.nextSetBit(0); + if (bit >= 0) + { + stencilBits.clear(bit); + } + return bit; + } + + /** + * Release the stencil bit for other use + * + * @param bit The bit from {@link #reserveStencilBit()} + */ + public static void releaseStencilBit(int bit) + { + if (bit >= 0 && bit < getStencilBits()) + { + stencilBits.set(bit); + } + } }