ClientProxy.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package me.km;
  2. import me.km.blocks.ModBlocks;
  3. import me.km.blocks.TileEntityCauldron;
  4. import me.km.entities.ModEntities;
  5. import me.km.items.ModelCylinder;
  6. import me.km.items.ModelHat;
  7. import me.km.networking.KeyManager;
  8. import net.minecraft.block.Block;
  9. import net.minecraft.block.state.IBlockState;
  10. import net.minecraft.client.Minecraft;
  11. import net.minecraft.client.model.ModelBiped;
  12. import net.minecraft.client.renderer.block.model.ModelBakery;
  13. import net.minecraft.client.renderer.block.model.ModelResourceLocation;
  14. import net.minecraft.client.renderer.block.statemap.StateMapperBase;
  15. import net.minecraft.client.renderer.color.BlockColors;
  16. import net.minecraft.client.renderer.color.IBlockColor;
  17. import net.minecraft.client.renderer.entity.Render;
  18. import net.minecraft.entity.Entity;
  19. import net.minecraft.item.Item;
  20. import net.minecraft.server.MinecraftServer;
  21. import net.minecraft.util.math.BlockPos;
  22. import net.minecraft.world.IBlockAccess;
  23. import net.minecraftforge.client.model.ModelLoader;
  24. import net.minecraftforge.common.MinecraftForge;
  25. import net.minecraftforge.fluids.IFluidBlock;
  26. import net.minecraftforge.fml.client.registry.RenderingRegistry;
  27. import net.minecraftforge.fml.relauncher.Side;
  28. import net.minecraftforge.fml.relauncher.SideOnly;
  29. public class ClientProxy extends CommonProxy
  30. {
  31. @Override
  32. public void registerItemRenderer(Item item, int meta, String id, String variant)
  33. {
  34. ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(KajetansMod.MODID + ":" + id, variant));
  35. }
  36. @Override
  37. public void registerItemRenderer(Item item, int meta, String id)
  38. {
  39. registerItemRenderer(item, meta, id, null);
  40. }
  41. @Override
  42. public void registerFluidModel(IFluidBlock fluidBlock)
  43. {
  44. final Item item = Item.getItemFromBlock((Block) fluidBlock);
  45. assert item != null;
  46. ModelBakery.registerItemVariants(item);
  47. ModelResourceLocation modelResourceLocation = new ModelResourceLocation(KajetansMod.MODID + ":fluids", fluidBlock.getFluid().getName());
  48. ModelLoader.setCustomMeshDefinition(item, MeshDefinitionFix.create(stack -> modelResourceLocation));
  49. ModelLoader.setCustomStateMapper((Block) fluidBlock, new StateMapperBase()
  50. {
  51. @Override
  52. protected ModelResourceLocation getModelResourceLocation(IBlockState state)
  53. {
  54. return modelResourceLocation;
  55. }
  56. });
  57. }
  58. @Override
  59. public void registerEntityRenderer(Class<? extends Entity> c, Render<? extends Entity> r)
  60. {
  61. RenderingRegistry.registerEntityRenderingHandler(c, r);
  62. }
  63. @Override
  64. public void init()
  65. {
  66. ModEntities.initClient();
  67. MinecraftForge.EVENT_BUS.register(new ClientEvents());
  68. MinecraftForge.EVENT_BUS.register(new KeyManager());
  69. IBlockColor colorer = (IBlockState state, IBlockAccess w, BlockPos pos, int tintIndex) ->
  70. {
  71. TileEntityCauldron tile = (TileEntityCauldron) w.getTileEntity(pos);
  72. if(tile == null)
  73. {
  74. return -16777216;
  75. }
  76. return -16777216 | tile.getRed() << 16 | tile.getGreen() << 8 | tile.getBlue();
  77. };
  78. BlockColors colors = Minecraft.getMinecraft().getBlockColors();
  79. colors.registerBlockColorHandler(colorer, ModBlocks.cauldronOak);
  80. colors.registerBlockColorHandler(colorer, ModBlocks.cauldronAcacia);
  81. colors.registerBlockColorHandler(colorer, ModBlocks.cauldronBigOak);
  82. colors.registerBlockColorHandler(colorer, ModBlocks.cauldronBirch);
  83. colors.registerBlockColorHandler(colorer, ModBlocks.cauldronJungle);
  84. colors.registerBlockColorHandler(colorer, ModBlocks.cauldronSpruce);
  85. }
  86. @Override
  87. public void overloadPlayerList(MinecraftServer server)
  88. {
  89. }
  90. @SideOnly(Side.CLIENT)
  91. private final static ModelHat STRAW_HAT = new ModelHat(1);
  92. @SideOnly(Side.CLIENT)
  93. private final static ModelCylinder CYLINDER = new ModelCylinder(1);
  94. @Override
  95. public ModelBiped getCylinderModel()
  96. {
  97. return CYLINDER;
  98. }
  99. @Override
  100. public ModelBiped getStrawHatModel()
  101. {
  102. return STRAW_HAT;
  103. }
  104. }