package net.minecraft.client.renderer; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.IResourceManager; import net.minecraft.client.resources.IResourceManagerReloadListener; import net.minecraft.client.resources.model.IBakedModel; import net.minecraft.client.resources.model.SimpleBakedModel; import net.minecraft.client.resources.model.WeightedBakedModel; import net.minecraft.client.settings.GameSettings; import net.minecraft.crash.CrashReport; import net.minecraft.crash.CrashReportCategory; import net.minecraft.util.BlockPos; import net.minecraft.util.MathHelper; import net.minecraft.util.ReportedException; import net.minecraft.world.IBlockAccess; import net.minecraft.world.WorldType; public class BlockRendererDispatcher implements IResourceManagerReloadListener { private BlockModelShapes field_175028_a; private final GameSettings field_175026_b; private final BlockModelRenderer blockModelRenderer = new BlockModelRenderer(); private final ChestRenderer chestRenderer = new ChestRenderer(); private final BlockFluidRenderer fluidRenderer = new BlockFluidRenderer(); private static final String __OBFID = "CL_00002520"; public BlockRendererDispatcher(BlockModelShapes p_i46237_1_, GameSettings p_i46237_2_) { this.field_175028_a = p_i46237_1_; this.field_175026_b = p_i46237_2_; } public BlockModelShapes func_175023_a() { return this.field_175028_a; } public void func_175020_a(IBlockState p_175020_1_, BlockPos p_175020_2_, TextureAtlasSprite p_175020_3_, IBlockAccess p_175020_4_) { Block var5 = p_175020_1_.getBlock(); int var6 = var5.getRenderType(); if (var6 == 3) { p_175020_1_ = var5.getActualState(p_175020_1_, p_175020_4_, p_175020_2_); IBakedModel var7 = this.field_175028_a.func_178125_b(p_175020_1_); IBakedModel var8 = (new SimpleBakedModel.Builder(var7, p_175020_3_)).func_177645_b(); this.blockModelRenderer.func_178259_a(p_175020_4_, var8, p_175020_1_, p_175020_2_, Tessellator.getInstance().getWorldRenderer()); } } public boolean func_175018_a(IBlockState p_175018_1_, BlockPos p_175018_2_, IBlockAccess p_175018_3_, WorldRenderer p_175018_4_) { try { int var5 = p_175018_1_.getBlock().getRenderType(); if (var5 == -1) { return false; } else { switch (var5) { case 1: return this.fluidRenderer.func_178270_a(p_175018_3_, p_175018_1_, p_175018_2_, p_175018_4_); case 2: return false; case 3: IBakedModel var9 = this.getModelFromBlockState(p_175018_1_, p_175018_3_, p_175018_2_); return this.blockModelRenderer.func_178259_a(p_175018_3_, var9, p_175018_1_, p_175018_2_, p_175018_4_); default: return false; } } } catch (Throwable var8) { CrashReport var6 = CrashReport.makeCrashReport(var8, "Tesselating block in world"); CrashReportCategory var7 = var6.makeCategory("Block being tesselated"); CrashReportCategory.addBlockInfo(var7, p_175018_2_, p_175018_1_.getBlock(), p_175018_1_.getBlock().getMetaFromState(p_175018_1_)); throw new ReportedException(var6); } } public BlockModelRenderer func_175019_b() { return this.blockModelRenderer; } private IBakedModel func_175017_a(IBlockState p_175017_1_, BlockPos p_175017_2_) { IBakedModel var3 = this.field_175028_a.func_178125_b(p_175017_1_); if (p_175017_2_ != null && this.field_175026_b.field_178880_u && var3 instanceof WeightedBakedModel) { var3 = ((WeightedBakedModel)var3).func_177564_a(MathHelper.func_180186_a(p_175017_2_)); } return var3; } public IBakedModel getModelFromBlockState(IBlockState p_175022_1_, IBlockAccess p_175022_2_, BlockPos p_175022_3_) { Block var4 = p_175022_1_.getBlock(); if (p_175022_2_.getWorldType() != WorldType.DEBUG_WORLD) { try { p_175022_1_ = var4.getActualState(p_175022_1_, p_175022_2_, p_175022_3_); } catch (Exception var6) { ; } } IBakedModel var5 = this.field_175028_a.func_178125_b(p_175022_1_); if (p_175022_3_ != null && this.field_175026_b.field_178880_u && var5 instanceof WeightedBakedModel) { var5 = ((WeightedBakedModel)var5).func_177564_a(MathHelper.func_180186_a(p_175022_3_)); } return var5; } public void func_175016_a(IBlockState p_175016_1_, float p_175016_2_) { int var3 = p_175016_1_.getBlock().getRenderType(); if (var3 != -1) { switch (var3) { case 1: default: break; case 2: this.chestRenderer.func_178175_a(p_175016_1_.getBlock(), p_175016_2_); break; case 3: IBakedModel var4 = this.func_175017_a(p_175016_1_, (BlockPos)null); this.blockModelRenderer.func_178266_a(var4, p_175016_1_, p_175016_2_, true); } } } public boolean func_175021_a(Block p_175021_1_, int p_175021_2_) { if (p_175021_1_ == null) { return false; } else { int var3 = p_175021_1_.getRenderType(); return var3 == 3 ? false : var3 == 2; } } public void onResourceManagerReload(IResourceManager p_110549_1_) { this.fluidRenderer.func_178268_a(); } }