--- a/net/minecraft/client/shader/Framebuffer.java
+++ b/net/minecraft/client/shader/Framebuffer.java
@@ -118,7 +118,10 @@
          GlStateManager.func_227677_b_(3553, 10242, 10496);
          GlStateManager.func_227677_b_(3553, 10243, 10496);
          GlStateManager.func_227677_b_(3553, 34892, 0);
+         if (!stencilEnabled)
          GlStateManager.func_227647_a_(3553, 0, 6402, this.field_147622_a, this.field_147620_b, 0, 6402, 5126, (IntBuffer)null);
+         else
+         GlStateManager.func_227647_a_(3553, 0, org.lwjgl.opengl.GL30.GL_DEPTH32F_STENCIL8, this.field_147622_a, this.field_147620_b, 0, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL, org.lwjgl.opengl.GL30.GL_FLOAT_32_UNSIGNED_INT_24_8_REV, null);
       }
 
       this.func_147607_a(9728);
@@ -127,7 +130,14 @@
       GlStateManager.func_227727_h_(FramebufferConstants.field_227592_a_, this.field_147616_f);
       GlStateManager.func_227645_a_(FramebufferConstants.field_227592_a_, FramebufferConstants.field_227594_c_, 3553, this.field_147617_g, 0);
       if (this.field_147619_e) {
+         if(!stencilEnabled)
          GlStateManager.func_227645_a_(FramebufferConstants.field_227592_a_, FramebufferConstants.field_227595_d_, 3553, this.field_147624_h, 0);
+         else if(net.minecraftforge.common.ForgeConfig.CLIENT.useCombinedDepthStencilAttachment.get()) {
+            GlStateManager.func_227645_a_(FramebufferConstants.field_227592_a_, org.lwjgl.opengl.GL30.GL_DEPTH_STENCIL_ATTACHMENT, 3553, this.field_147624_h, 0);
+         } else {
+            GlStateManager.func_227645_a_(FramebufferConstants.field_227592_a_, org.lwjgl.opengl.GL30.GL_DEPTH_ATTACHMENT, 3553, this.field_147624_h, 0);
+            GlStateManager.func_227645_a_(FramebufferConstants.field_227592_a_, org.lwjgl.opengl.GL30.GL_STENCIL_ATTACHMENT, 3553, this.field_147624_h, 0);
+         }
       }
 
       this.func_147611_b();
@@ -280,4 +290,30 @@
       GlStateManager.func_227658_a_(i, p_216493_1_);
       this.func_147609_e();
    }
+
+
+   /*================================ FORGE START ================================================*/
+   private boolean stencilEnabled = false;
+   /**
+    * Attempts to enable 8 bits of stencil buffer on this FrameBuffer.
+    * Modders must call this directly to set things up.
+    * This is to prevent the default cause where graphics cards do not support stencil bits.
+    * <b>Make sure to call this on the main render thread!</b>
+    */
+   public void enableStencil()
+   {
+      if(stencilEnabled) return;
+      stencilEnabled = true;
+      this.func_216491_a(field_147621_c, field_147618_d, net.minecraft.client.Minecraft.field_142025_a);
+   }
+
+   /**
+    * Returns wither or not this FBO has been successfully initialized with stencil bits.
+    * If not, and a modder wishes it to be, they must call enableStencil.
+    */
+   public boolean isStencilEnabled()
+   {
+      return this.stencilEnabled;
+   }
+   /*================================ FORGE END   ================================================*/
 }
