package net.minecraft.client.renderer; import com.google.common.collect.Maps; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; import net.minecraft.block.Block; import net.minecraft.block.BlockBed; import net.minecraft.block.BlockCactus; import net.minecraft.block.BlockColored; import net.minecraft.block.BlockCommandBlock; import net.minecraft.block.BlockDirt; import net.minecraft.block.BlockDispenser; import net.minecraft.block.BlockDoor; import net.minecraft.block.BlockDoublePlant; import net.minecraft.block.BlockDropper; import net.minecraft.block.BlockFenceGate; import net.minecraft.block.BlockFire; import net.minecraft.block.BlockFlowerPot; import net.minecraft.block.BlockHopper; import net.minecraft.block.BlockJukebox; import net.minecraft.block.BlockLeaves; import net.minecraft.block.BlockNewLeaf; import net.minecraft.block.BlockNewLog; import net.minecraft.block.BlockOldLeaf; import net.minecraft.block.BlockOldLog; import net.minecraft.block.BlockPlanks; import net.minecraft.block.BlockPrismarine; import net.minecraft.block.BlockQuartz; import net.minecraft.block.BlockRedSandstone; import net.minecraft.block.BlockRedstoneWire; import net.minecraft.block.BlockReed; import net.minecraft.block.BlockSand; import net.minecraft.block.BlockSandStone; import net.minecraft.block.BlockSapling; import net.minecraft.block.BlockSilverfish; import net.minecraft.block.BlockStem; import net.minecraft.block.BlockStone; import net.minecraft.block.BlockStoneBrick; import net.minecraft.block.BlockStoneSlab; import net.minecraft.block.BlockStoneSlabNew; import net.minecraft.block.BlockTNT; import net.minecraft.block.BlockTallGrass; import net.minecraft.block.BlockTripWire; import net.minecraft.block.BlockWall; import net.minecraft.block.properties.IProperty; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.statemap.BlockStateMapper; import net.minecraft.client.renderer.block.statemap.IStateMapper; import net.minecraft.client.renderer.block.statemap.StateMap; import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.model.IBakedModel; import net.minecraft.client.resources.model.ModelManager; import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.init.Blocks; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; public class BlockModelShapes { private final Map field_178129_a = Maps.newIdentityHashMap(); private final BlockStateMapper blockStateMapper = new BlockStateMapper(); private final ModelManager modelManager; private static final String __OBFID = "CL_00002529"; public BlockModelShapes(ModelManager p_i46245_1_) { this.modelManager = p_i46245_1_; this.func_178119_d(); } public BlockStateMapper getBlockStateMapper() { return this.blockStateMapper; } public TextureAtlasSprite func_178122_a(IBlockState p_178122_1_) { Block var2 = p_178122_1_.getBlock(); IBakedModel var3 = this.func_178125_b(p_178122_1_); if (var3 == null || var3 == this.modelManager.getMissingModel()) { if (var2 == Blocks.wall_sign || var2 == Blocks.standing_sign || var2 == Blocks.chest || var2 == Blocks.trapped_chest || var2 == Blocks.standing_banner || var2 == Blocks.wall_banner) { return this.modelManager.func_174952_b().getAtlasSprite("minecraft:blocks/planks_oak"); } if (var2 == Blocks.ender_chest) { return this.modelManager.func_174952_b().getAtlasSprite("minecraft:blocks/obsidian"); } if (var2 == Blocks.flowing_lava || var2 == Blocks.lava) { return this.modelManager.func_174952_b().getAtlasSprite("minecraft:blocks/lava_still"); } if (var2 == Blocks.flowing_water || var2 == Blocks.water) { return this.modelManager.func_174952_b().getAtlasSprite("minecraft:blocks/water_still"); } if (var2 == Blocks.skull) { return this.modelManager.func_174952_b().getAtlasSprite("minecraft:blocks/soul_sand"); } if (var2 == Blocks.barrier) { return this.modelManager.func_174952_b().getAtlasSprite("minecraft:items/barrier"); } } if (var3 == null) { var3 = this.modelManager.getMissingModel(); } return var3.getTexture(); } public IBakedModel func_178125_b(IBlockState p_178125_1_) { IBakedModel var2 = (IBakedModel)this.field_178129_a.get(p_178125_1_); if (var2 == null) { var2 = this.modelManager.getMissingModel(); } return var2; } public ModelManager func_178126_b() { return this.modelManager; } public void func_178124_c() { this.field_178129_a.clear(); Iterator var1 = this.blockStateMapper.func_178446_a().entrySet().iterator(); while (var1.hasNext()) { Entry var2 = (Entry)var1.next(); this.field_178129_a.put(var2.getKey(), this.modelManager.getModel((ModelResourceLocation)var2.getValue())); } } public void func_178121_a(Block p_178121_1_, IStateMapper p_178121_2_) { this.blockStateMapper.func_178447_a(p_178121_1_, p_178121_2_); } public void func_178123_a(Block ... p_178123_1_) { this.blockStateMapper.registerBuiltInBlocks(p_178123_1_); } private void func_178119_d() { this.func_178123_a(new Block[] {Blocks.air, Blocks.flowing_water, Blocks.water, Blocks.flowing_lava, Blocks.lava, Blocks.piston_extension, Blocks.chest, Blocks.ender_chest, Blocks.trapped_chest, Blocks.standing_sign, Blocks.skull, Blocks.end_portal, Blocks.barrier, Blocks.wall_sign, Blocks.wall_banner, Blocks.standing_banner}); this.func_178121_a(Blocks.stone, (new StateMap.Builder()).func_178440_a(BlockStone.VARIANT_PROP).build()); this.func_178121_a(Blocks.prismarine, (new StateMap.Builder()).func_178440_a(BlockPrismarine.VARIANTS).build()); this.func_178121_a(Blocks.leaves, (new StateMap.Builder()).func_178440_a(BlockOldLeaf.VARIANT_PROP).func_178439_a("_leaves").func_178442_a(new IProperty[] {BlockLeaves.field_176236_b, BlockLeaves.field_176237_a}).build()); this.func_178121_a(Blocks.leaves2, (new StateMap.Builder()).func_178440_a(BlockNewLeaf.field_176240_P).func_178439_a("_leaves").func_178442_a(new IProperty[] {BlockLeaves.field_176236_b, BlockLeaves.field_176237_a}).build()); this.func_178121_a(Blocks.cactus, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockCactus.AGE_PROP}).build()); this.func_178121_a(Blocks.reeds, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockReed.field_176355_a}).build()); this.func_178121_a(Blocks.jukebox, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockJukebox.HAS_RECORD}).build()); this.func_178121_a(Blocks.command_block, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockCommandBlock.TRIGGERED_PROP}).build()); this.func_178121_a(Blocks.cobblestone_wall, (new StateMap.Builder()).func_178440_a(BlockWall.field_176255_P).func_178439_a("_wall").build()); this.func_178121_a(Blocks.double_plant, (new StateMap.Builder()).func_178440_a(BlockDoublePlant.VARIANT_PROP).build()); this.func_178121_a(Blocks.oak_fence_gate, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockFenceGate.field_176465_b}).build()); this.func_178121_a(Blocks.spruce_fence_gate, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockFenceGate.field_176465_b}).build()); this.func_178121_a(Blocks.birch_fence_gate, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockFenceGate.field_176465_b}).build()); this.func_178121_a(Blocks.jungle_fence_gate, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockFenceGate.field_176465_b}).build()); this.func_178121_a(Blocks.dark_oak_fence_gate, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockFenceGate.field_176465_b}).build()); this.func_178121_a(Blocks.acacia_fence_gate, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockFenceGate.field_176465_b}).build()); this.func_178121_a(Blocks.tripwire, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockTripWire.field_176295_N, BlockTripWire.field_176293_a}).build()); this.func_178121_a(Blocks.double_wooden_slab, (new StateMap.Builder()).func_178440_a(BlockPlanks.VARIANT_PROP).func_178439_a("_double_slab").build()); this.func_178121_a(Blocks.wooden_slab, (new StateMap.Builder()).func_178440_a(BlockPlanks.VARIANT_PROP).func_178439_a("_slab").build()); this.func_178121_a(Blocks.tnt, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockTNT.field_176246_a}).build()); this.func_178121_a(Blocks.fire, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockFire.field_176543_a}).build()); this.func_178121_a(Blocks.redstone_wire, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockRedstoneWire.POWER}).build()); this.func_178121_a(Blocks.oak_door, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockDoor.POWERED_PROP}).build()); this.func_178121_a(Blocks.spruce_door, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockDoor.POWERED_PROP}).build()); this.func_178121_a(Blocks.birch_door, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockDoor.POWERED_PROP}).build()); this.func_178121_a(Blocks.jungle_door, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockDoor.POWERED_PROP}).build()); this.func_178121_a(Blocks.acacia_door, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockDoor.POWERED_PROP}).build()); this.func_178121_a(Blocks.dark_oak_door, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockDoor.POWERED_PROP}).build()); this.func_178121_a(Blocks.iron_door, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockDoor.POWERED_PROP}).build()); this.func_178121_a(Blocks.wool, (new StateMap.Builder()).func_178440_a(BlockColored.COLOR).func_178439_a("_wool").build()); this.func_178121_a(Blocks.carpet, (new StateMap.Builder()).func_178440_a(BlockColored.COLOR).func_178439_a("_carpet").build()); this.func_178121_a(Blocks.stained_hardened_clay, (new StateMap.Builder()).func_178440_a(BlockColored.COLOR).func_178439_a("_stained_hardened_clay").build()); this.func_178121_a(Blocks.stained_glass_pane, (new StateMap.Builder()).func_178440_a(BlockColored.COLOR).func_178439_a("_stained_glass_pane").build()); this.func_178121_a(Blocks.stained_glass, (new StateMap.Builder()).func_178440_a(BlockColored.COLOR).func_178439_a("_stained_glass").build()); this.func_178121_a(Blocks.sandstone, (new StateMap.Builder()).func_178440_a(BlockSandStone.field_176297_a).build()); this.func_178121_a(Blocks.red_sandstone, (new StateMap.Builder()).func_178440_a(BlockRedSandstone.TYPE).build()); this.func_178121_a(Blocks.tallgrass, (new StateMap.Builder()).func_178440_a(BlockTallGrass.field_176497_a).build()); this.func_178121_a(Blocks.bed, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockBed.OCCUPIED_PROP}).build()); this.func_178121_a(Blocks.yellow_flower, (new StateMap.Builder()).func_178440_a(Blocks.yellow_flower.func_176494_l()).build()); this.func_178121_a(Blocks.red_flower, (new StateMap.Builder()).func_178440_a(Blocks.red_flower.func_176494_l()).build()); this.func_178121_a(Blocks.stone_slab, (new StateMap.Builder()).func_178440_a(BlockStoneSlab.field_176556_M).func_178439_a("_slab").build()); this.func_178121_a(Blocks.stone_slab2, (new StateMap.Builder()).func_178440_a(BlockStoneSlabNew.field_176559_M).func_178439_a("_slab").build()); this.func_178121_a(Blocks.monster_egg, (new StateMap.Builder()).func_178440_a(BlockSilverfish.VARIANT_PROP).func_178439_a("_monster_egg").build()); this.func_178121_a(Blocks.stonebrick, (new StateMap.Builder()).func_178440_a(BlockStoneBrick.VARIANT_PROP).build()); this.func_178121_a(Blocks.dispenser, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockDispenser.TRIGGERED}).build()); this.func_178121_a(Blocks.dropper, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockDropper.TRIGGERED}).build()); this.func_178121_a(Blocks.log, (new StateMap.Builder()).func_178440_a(BlockOldLog.VARIANT_PROP).func_178439_a("_log").build()); this.func_178121_a(Blocks.log2, (new StateMap.Builder()).func_178440_a(BlockNewLog.field_176300_b).func_178439_a("_log").build()); this.func_178121_a(Blocks.planks, (new StateMap.Builder()).func_178440_a(BlockPlanks.VARIANT_PROP).func_178439_a("_planks").build()); this.func_178121_a(Blocks.sapling, (new StateMap.Builder()).func_178440_a(BlockSapling.TYPE_PROP).func_178439_a("_sapling").build()); this.func_178121_a(Blocks.sand, (new StateMap.Builder()).func_178440_a(BlockSand.VARIANT_PROP).build()); this.func_178121_a(Blocks.hopper, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockHopper.field_176429_b}).build()); this.func_178121_a(Blocks.flower_pot, (new StateMap.Builder()).func_178442_a(new IProperty[] {BlockFlowerPot.field_176444_a}).build()); this.func_178121_a(Blocks.quartz_block, new StateMapperBase() { private static final String __OBFID = "CL_00002528"; protected ModelResourceLocation func_178132_a(IBlockState p_178132_1_) { BlockQuartz.EnumType var2 = (BlockQuartz.EnumType)p_178132_1_.getValue(BlockQuartz.VARIANT_PROP); switch (BlockModelShapes.SwitchEnumType.field_178257_a[var2.ordinal()]) { case 1: default: return new ModelResourceLocation("quartz_block", "normal"); case 2: return new ModelResourceLocation("chiseled_quartz_block", "normal"); case 3: return new ModelResourceLocation("quartz_column", "axis=y"); case 4: return new ModelResourceLocation("quartz_column", "axis=x"); case 5: return new ModelResourceLocation("quartz_column", "axis=z"); } } }); this.func_178121_a(Blocks.deadbush, new StateMapperBase() { private static final String __OBFID = "CL_00002527"; protected ModelResourceLocation func_178132_a(IBlockState p_178132_1_) { return new ModelResourceLocation("dead_bush", "normal"); } }); this.func_178121_a(Blocks.pumpkin_stem, new StateMapperBase() { private static final String __OBFID = "CL_00002526"; protected ModelResourceLocation func_178132_a(IBlockState p_178132_1_) { LinkedHashMap var2 = Maps.newLinkedHashMap(p_178132_1_.getProperties()); if (p_178132_1_.getValue(BlockStem.FACING_PROP) != EnumFacing.UP) { var2.remove(BlockStem.AGE_PROP); } return new ModelResourceLocation((ResourceLocation)Block.blockRegistry.getNameForObject(p_178132_1_.getBlock()), this.func_178131_a(var2)); } }); this.func_178121_a(Blocks.melon_stem, new StateMapperBase() { private static final String __OBFID = "CL_00002525"; protected ModelResourceLocation func_178132_a(IBlockState p_178132_1_) { LinkedHashMap var2 = Maps.newLinkedHashMap(p_178132_1_.getProperties()); if (p_178132_1_.getValue(BlockStem.FACING_PROP) != EnumFacing.UP) { var2.remove(BlockStem.AGE_PROP); } return new ModelResourceLocation((ResourceLocation)Block.blockRegistry.getNameForObject(p_178132_1_.getBlock()), this.func_178131_a(var2)); } }); this.func_178121_a(Blocks.dirt, new StateMapperBase() { private static final String __OBFID = "CL_00002524"; protected ModelResourceLocation func_178132_a(IBlockState p_178132_1_) { LinkedHashMap var2 = Maps.newLinkedHashMap(p_178132_1_.getProperties()); String var3 = BlockDirt.VARIANT.getName((Comparable)var2.remove(BlockDirt.VARIANT)); if (BlockDirt.DirtType.PODZOL != p_178132_1_.getValue(BlockDirt.VARIANT)) { var2.remove(BlockDirt.SNOWY); } return new ModelResourceLocation(var3, this.func_178131_a(var2)); } }); this.func_178121_a(Blocks.double_stone_slab, new StateMapperBase() { private static final String __OBFID = "CL_00002523"; protected ModelResourceLocation func_178132_a(IBlockState p_178132_1_) { LinkedHashMap var2 = Maps.newLinkedHashMap(p_178132_1_.getProperties()); String var3 = BlockStoneSlab.field_176556_M.getName((Comparable)var2.remove(BlockStoneSlab.field_176556_M)); var2.remove(BlockStoneSlab.field_176555_b); String var4 = ((Boolean)p_178132_1_.getValue(BlockStoneSlab.field_176555_b)).booleanValue() ? "all" : "normal"; return new ModelResourceLocation(var3 + "_double_slab", var4); } }); this.func_178121_a(Blocks.double_stone_slab2, new StateMapperBase() { private static final String __OBFID = "CL_00002522"; protected ModelResourceLocation func_178132_a(IBlockState p_178132_1_) { LinkedHashMap var2 = Maps.newLinkedHashMap(p_178132_1_.getProperties()); String var3 = BlockStoneSlabNew.field_176559_M.getName((Comparable)var2.remove(BlockStoneSlabNew.field_176559_M)); var2.remove(BlockStoneSlab.field_176555_b); String var4 = ((Boolean)p_178132_1_.getValue(BlockStoneSlabNew.field_176558_b)).booleanValue() ? "all" : "normal"; return new ModelResourceLocation(var3 + "_double_slab", var4); } }); } static final class SwitchEnumType { static final int[] field_178257_a = new int[BlockQuartz.EnumType.values().length]; private static final String __OBFID = "CL_00002521"; static { try { field_178257_a[BlockQuartz.EnumType.DEFAULT.ordinal()] = 1; } catch (NoSuchFieldError var5) { ; } try { field_178257_a[BlockQuartz.EnumType.CHISELED.ordinal()] = 2; } catch (NoSuchFieldError var4) { ; } try { field_178257_a[BlockQuartz.EnumType.LINES_Y.ordinal()] = 3; } catch (NoSuchFieldError var3) { ; } try { field_178257_a[BlockQuartz.EnumType.LINES_X.ordinal()] = 4; } catch (NoSuchFieldError var2) { ; } try { field_178257_a[BlockQuartz.EnumType.LINES_Z.ordinal()] = 5; } catch (NoSuchFieldError var1) { ; } } } }