ClientProxy.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package me.km;
  2. import java.awt.Color;
  3. import me.km.blocks.ModBlocks;
  4. import me.km.blocks.cauldron.TileEntityCauldron;
  5. import me.km.entities.ModEntities;
  6. import me.km.items.ItemColoredSoup;
  7. import me.km.items.ItemGemStone;
  8. import me.km.items.ModItems;
  9. import me.km.items.ModelCylinder;
  10. import me.km.items.ModelHat;
  11. import me.km.networking.KeyManager;
  12. import net.minecraft.block.Block;
  13. import net.minecraft.block.state.IBlockState;
  14. import net.minecraft.client.Minecraft;
  15. import net.minecraft.client.model.ModelBiped;
  16. import net.minecraft.client.renderer.block.model.ModelBakery;
  17. import net.minecraft.client.renderer.block.model.ModelResourceLocation;
  18. import net.minecraft.client.renderer.block.statemap.StateMapperBase;
  19. import net.minecraft.client.renderer.color.BlockColors;
  20. import net.minecraft.client.renderer.color.IBlockColor;
  21. import net.minecraft.client.renderer.color.ItemColors;
  22. import net.minecraft.client.renderer.entity.Render;
  23. import net.minecraft.entity.Entity;
  24. import net.minecraft.item.Item;
  25. import net.minecraft.item.ItemBlock;
  26. import net.minecraft.item.ItemStack;
  27. import net.minecraft.util.math.BlockPos;
  28. import net.minecraft.world.ColorizerGrass;
  29. import net.minecraft.world.IBlockAccess;
  30. import net.minecraft.world.biome.BiomeColorHelper;
  31. import net.minecraftforge.client.model.ModelLoader;
  32. import net.minecraftforge.common.MinecraftForge;
  33. import net.minecraftforge.fluids.IFluidBlock;
  34. import net.minecraftforge.fml.client.registry.RenderingRegistry;
  35. import net.minecraftforge.fml.relauncher.Side;
  36. import net.minecraftforge.fml.relauncher.SideOnly;
  37. public class ClientProxy extends CommonProxy
  38. {
  39. @Override
  40. public void registerItemRenderer(Item item, int meta, String id, String variant)
  41. {
  42. ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(KajetansMod.MODID + ":" + id, variant));
  43. }
  44. @Override
  45. public void registerItemRenderer(Item item, int meta, String id)
  46. {
  47. registerItemRenderer(item, meta, id, null);
  48. }
  49. @Override
  50. public void registerFluidModel(IFluidBlock fluidBlock)
  51. {
  52. final Item item = Item.getItemFromBlock((Block) fluidBlock);
  53. assert item != null;
  54. ModelBakery.registerItemVariants(item);
  55. ModelResourceLocation modelResourceLocation = new ModelResourceLocation(KajetansMod.MODID + ":fluids", fluidBlock.getFluid().getName());
  56. ModelLoader.setCustomMeshDefinition(item, MeshDefinitionFix.create(stack -> modelResourceLocation));
  57. ModelLoader.setCustomStateMapper((Block) fluidBlock, new StateMapperBase()
  58. {
  59. @Override
  60. protected ModelResourceLocation getModelResourceLocation(IBlockState state)
  61. {
  62. return modelResourceLocation;
  63. }
  64. });
  65. }
  66. @Override
  67. public void registerEntityRenderer(Class<? extends Entity> c, Render<? extends Entity> r)
  68. {
  69. RenderingRegistry.registerEntityRenderingHandler(c, r);
  70. }
  71. @Override
  72. public void init()
  73. {
  74. ModEntities.initClient();
  75. MinecraftForge.EVENT_BUS.register(new ClientEvents());
  76. MinecraftForge.EVENT_BUS.register(new KeyManager());
  77. BlockColors bColors = Minecraft.getMinecraft().getBlockColors();
  78. bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int tintIndex) ->
  79. {
  80. TileEntityCauldron tile = (TileEntityCauldron) w.getTileEntity(pos);
  81. if(tile == null)
  82. {
  83. return -16777216;
  84. }
  85. Color c = tile.getColor();
  86. return -16777216 | c.getRed() << 16 | c.getGreen() << 8 | c.getBlue();
  87. }, ModBlocks.cauldronOak, ModBlocks.cauldronAcacia, ModBlocks.cauldronBigOak, ModBlocks.cauldronBirch, ModBlocks.cauldronJungle, ModBlocks.cauldronSpruce);
  88. IBlockColor tallGrass = (IBlockState state, IBlockAccess w, BlockPos pos, int tintIndex) ->
  89. {
  90. if(w != null && pos != null)
  91. {
  92. return BiomeColorHelper.getGrassColorAtPos(w, pos);
  93. }
  94. else
  95. {
  96. return ColorizerGrass.getGrassColor(0.5D, 1.0D);
  97. }
  98. };
  99. bColors.registerBlockColorHandler(tallGrass, ModBlocks.tallGrass);
  100. ItemColors iColors = Minecraft.getMinecraft().getItemColors();
  101. iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> tintIndex > 0 ? -1 : ((ItemColoredSoup) stack.getItem()).getColor(stack), ModItems.coloredSoup);
  102. iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> tintIndex > 0 ? -1 : ((ItemGemStone) stack.getItem()).getColor(stack),
  103. ModItems.gemStone, ModItems.rawGemStone, ModItems.flawlessGemStone);
  104. iColors.registerItemColorHandler((ItemStack stack, int tintIndex) ->
  105. {
  106. IBlockState state = ((ItemBlock) stack.getItem()).getBlock().getStateFromMeta(stack.getMetadata());
  107. return tallGrass.colorMultiplier(state, null, null, tintIndex);
  108. }, ModBlocks.tallGrass);
  109. }
  110. @SideOnly(Side.CLIENT)
  111. private final static ModelHat STRAW_HAT = new ModelHat(1.0f);
  112. @SideOnly(Side.CLIENT)
  113. private final static ModelCylinder CYLINDER = new ModelCylinder(1.0f);
  114. @Override
  115. public ModelBiped getCylinderModel()
  116. {
  117. return CYLINDER;
  118. }
  119. @Override
  120. public ModelBiped getStrawHatModel()
  121. {
  122. return STRAW_HAT;
  123. }
  124. }