--- a/net/minecraft/client/renderer/BlockRendererDispatcher.java
+++ b/net/minecraft/client/renderer/BlockRendererDispatcher.java
@@ -33,7 +33,7 @@
    public BlockRendererDispatcher(BlockModelShapes p_i46577_1_, BlockColors p_i46577_2_) {
       this.field_175028_a = p_i46577_1_;
       this.field_228790_e_ = p_i46577_2_;
-      this.field_175027_c = new BlockModelRenderer(this.field_228790_e_);
+      this.field_175027_c = new net.minecraftforge.client.model.pipeline.ForgeBlockModelRenderer(this.field_228790_e_);
       this.field_175025_e = new FluidBlockRenderer();
    }
 
@@ -41,22 +41,30 @@
       return this.field_175028_a;
    }
 
+   @Deprecated //Forge: Model parameter
    public void func_228792_a_(BlockState p_228792_1_, BlockPos p_228792_2_, IBlockDisplayReader p_228792_3_, MatrixStack p_228792_4_, IVertexBuilder p_228792_5_) {
-      if (p_228792_1_.func_185901_i() == BlockRenderType.MODEL) {
-         IBakedModel ibakedmodel = this.field_175028_a.func_178125_b(p_228792_1_);
-         long i = p_228792_1_.func_209533_a(p_228792_2_);
-         this.field_175027_c.func_228802_a_(p_228792_3_, ibakedmodel, p_228792_1_, p_228792_2_, p_228792_4_, p_228792_5_, true, this.field_195476_e, i, OverlayTexture.field_229196_a_);
+       renderBlockDamage(p_228792_1_,p_228792_2_, p_228792_3_, p_228792_4_, p_228792_5_, net.minecraftforge.client.model.data.EmptyModelData.INSTANCE);
+   }
+   public void renderBlockDamage(BlockState blockStateIn, BlockPos posIn, IBlockDisplayReader lightReaderIn, MatrixStack matrixStackIn, IVertexBuilder vertexBuilderIn, net.minecraftforge.client.model.data.IModelData modelData) {
+      if (blockStateIn.func_185901_i() == BlockRenderType.MODEL) {
+         IBakedModel ibakedmodel = this.field_175028_a.func_178125_b(blockStateIn);
+         long i = blockStateIn.func_209533_a(posIn);
+         this.field_175027_c.renderModel(lightReaderIn, ibakedmodel, blockStateIn, posIn, matrixStackIn, vertexBuilderIn, true, this.field_195476_e, i, OverlayTexture.field_229196_a_, modelData);
       }
    }
 
+   @Deprecated //Forge: Model parameter
    public boolean func_228793_a_(BlockState p_228793_1_, BlockPos p_228793_2_, IBlockDisplayReader p_228793_3_, MatrixStack p_228793_4_, IVertexBuilder p_228793_5_, boolean p_228793_6_, Random p_228793_7_) {
+       return renderModel(p_228793_1_, p_228793_2_, p_228793_3_, p_228793_4_, p_228793_5_, p_228793_6_, p_228793_7_, net.minecraftforge.client.model.data.EmptyModelData.INSTANCE);
+   }
+   public boolean renderModel(BlockState blockStateIn, BlockPos posIn, IBlockDisplayReader lightReaderIn, MatrixStack matrixStackIn, IVertexBuilder vertexBuilderIn, boolean checkSides, Random rand, net.minecraftforge.client.model.data.IModelData modelData) {
       try {
-         BlockRenderType blockrendertype = p_228793_1_.func_185901_i();
-         return blockrendertype != BlockRenderType.MODEL ? false : this.field_175027_c.func_228802_a_(p_228793_3_, this.func_184389_a(p_228793_1_), p_228793_1_, p_228793_2_, p_228793_4_, p_228793_5_, p_228793_6_, p_228793_7_, p_228793_1_.func_209533_a(p_228793_2_), OverlayTexture.field_229196_a_);
+         BlockRenderType blockrendertype = blockStateIn.func_185901_i();
+         return blockrendertype != BlockRenderType.MODEL ? false : this.field_175027_c.renderModel(lightReaderIn, this.func_184389_a(blockStateIn), blockStateIn, posIn, matrixStackIn, vertexBuilderIn, checkSides, rand, blockStateIn.func_209533_a(posIn), OverlayTexture.field_229196_a_, modelData);
       } catch (Throwable throwable) {
          CrashReport crashreport = CrashReport.func_85055_a(throwable, "Tesselating block in world");
          CrashReportCategory crashreportcategory = crashreport.func_85058_a("Block being tesselated");
-         CrashReportCategory.func_175750_a(crashreportcategory, p_228793_2_, p_228793_1_);
+         CrashReportCategory.func_175750_a(crashreportcategory, posIn, blockStateIn);
          throw new ReportedException(crashreport);
       }
    }
@@ -80,7 +88,11 @@
       return this.field_175028_a.func_178125_b(p_184389_1_);
    }
 
+   @Deprecated //Forge: Model parameter
    public void func_228791_a_(BlockState p_228791_1_, MatrixStack p_228791_2_, IRenderTypeBuffer p_228791_3_, int p_228791_4_, int p_228791_5_) {
+      renderBlock(p_228791_1_, p_228791_2_, p_228791_3_, p_228791_4_, p_228791_5_, net.minecraftforge.client.model.data.EmptyModelData.INSTANCE);
+   }
+   public void renderBlock(BlockState p_228791_1_, MatrixStack p_228791_2_, IRenderTypeBuffer p_228791_3_, int p_228791_4_, int p_228791_5_, net.minecraftforge.client.model.data.IModelData modelData) {
       BlockRenderType blockrendertype = p_228791_1_.func_185901_i();
       if (blockrendertype != BlockRenderType.INVISIBLE) {
          switch(blockrendertype) {
@@ -90,10 +102,11 @@
             float f = (float)(i >> 16 & 255) / 255.0F;
             float f1 = (float)(i >> 8 & 255) / 255.0F;
             float f2 = (float)(i & 255) / 255.0F;
-            this.field_175027_c.func_228804_a_(p_228791_2_.func_227866_c_(), p_228791_3_.getBuffer(RenderTypeLookup.func_239220_a_(p_228791_1_, false)), p_228791_1_, ibakedmodel, f, f1, f2, p_228791_4_, p_228791_5_);
+            this.field_175027_c.renderModel(p_228791_2_.func_227866_c_(), p_228791_3_.getBuffer(RenderTypeLookup.func_239220_a_(p_228791_1_, false)), p_228791_1_, ibakedmodel, f, f1, f2, p_228791_4_, p_228791_5_, modelData);
             break;
          case ENTITYBLOCK_ANIMATED:
-            ItemStackTileEntityRenderer.field_147719_a.func_239207_a_(new ItemStack(p_228791_1_.func_177230_c()), ItemCameraTransforms.TransformType.NONE, p_228791_2_, p_228791_3_, p_228791_4_, p_228791_5_);
+            ItemStack stack = new ItemStack(p_228791_1_.func_177230_c());
+            stack.func_77973_b().getItemStackTileEntityRenderer().func_239207_a_(stack, ItemCameraTransforms.TransformType.NONE, p_228791_2_, p_228791_3_, p_228791_4_, p_228791_5_);
          }
 
       }
@@ -102,4 +115,9 @@
    public void func_195410_a(IResourceManager p_195410_1_) {
       this.field_175025_e.func_178268_a();
    }
+
+   @Override
+   public net.minecraftforge.resource.IResourceType getResourceType() {
+      return net.minecraftforge.resource.VanillaResourceType.MODELS;
+   }
 }
