| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- package me.km;
- import java.awt.Color;
- import java.lang.reflect.Field;
- import me.km.blocks.ModBlocks;
- import me.km.blocks.cauldron.TileEntityCauldron;
- import me.km.entities.ModEntities;
- import me.km.items.ItemColoredSoup;
- import me.km.items.ItemJewel;
- import me.km.items.ModItems;
- import me.km.items.ModelCylinder;
- import me.km.items.ModelHat;
- import me.km.networking.KeyManager;
- import me.km.utils.ReflectionUtils;
- import net.minecraft.block.Block;
- import net.minecraft.block.state.IBlockState;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.model.ModelBiped;
- import net.minecraft.client.renderer.block.model.ModelBakery;
- import net.minecraft.client.renderer.block.model.ModelResourceLocation;
- import net.minecraft.client.renderer.block.statemap.StateMapperBase;
- import net.minecraft.client.renderer.color.BlockColors;
- import net.minecraft.client.renderer.color.ItemColors;
- import net.minecraft.client.renderer.entity.Render;
- import net.minecraft.client.resources.FoliageColorReloadListener;
- import net.minecraft.client.resources.GrassColorReloadListener;
- import net.minecraft.entity.Entity;
- import net.minecraft.init.Blocks;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemBlock;
- import net.minecraft.item.ItemStack;
- import net.minecraft.util.ResourceLocation;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.ColorizerFoliage;
- import net.minecraft.world.IBlockAccess;
- import net.minecraft.world.biome.BiomeColorHelper;
- import net.minecraftforge.client.model.ModelLoader;
- import net.minecraftforge.common.MinecraftForge;
- import net.minecraftforge.fluids.IFluidBlock;
- import net.minecraftforge.fml.client.registry.RenderingRegistry;
- import net.minecraftforge.fml.relauncher.Side;
- import net.minecraftforge.fml.relauncher.SideOnly;
- public class ClientProxy extends CommonProxy
- {
- @Override
- public void registerItemRenderer(Item item, int meta, String id, String variant)
- {
- ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(KajetansMod.MODID + ":" + id, variant));
- }
-
- @Override
- public void registerItemRenderer(Item item, int meta, String id)
- {
- registerItemRenderer(item, meta, id, null);
- }
- @Override
- public void registerFluidModel(IFluidBlock fluidBlock)
- {
- final Item item = Item.getItemFromBlock((Block) fluidBlock);
- assert item != null;
- ModelBakery.registerItemVariants(item);
- ModelResourceLocation modelResourceLocation = new ModelResourceLocation(KajetansMod.MODID + ":fluids", fluidBlock.getFluid().getName());
- ModelLoader.setCustomMeshDefinition(item, MeshDefinitionFix.create(stack -> modelResourceLocation));
- ModelLoader.setCustomStateMapper((Block) fluidBlock, new StateMapperBase()
- {
- @Override
- protected ModelResourceLocation getModelResourceLocation(IBlockState state)
- {
- return modelResourceLocation;
- }
- });
- }
-
- @Override
- public void registerEntityRenderer(Class<? extends Entity> c, Render<? extends Entity> r)
- {
- RenderingRegistry.registerEntityRenderingHandler(c, r);
- }
-
- @Override
- public void init()
- {
- ModEntities.initClient();
- MinecraftForge.EVENT_BUS.register(new ClientEvents());
- MinecraftForge.EVENT_BUS.register(new KeyManager());
-
- BlockColors bColors = Minecraft.getMinecraft().getBlockColors();
- bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int tintIndex) ->
- {
- TileEntityCauldron tile = (TileEntityCauldron) w.getTileEntity(pos);
- if(tile == null)
- {
- return -16777216;
- }
- Color c = tile.getColor();
- return -16777216 | c.getRed() << 16 | c.getGreen() << 8 | c.getBlue();
- }, ModBlocks.cauldronOak, ModBlocks.cauldronAcacia, ModBlocks.cauldronBigOak, ModBlocks.cauldronBirch, ModBlocks.cauldronJungle, ModBlocks.cauldronSpruce);
- bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 0xFFD4F7, ModBlocks.redCrystalLeaves);
- bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 0xD0FFFF, ModBlocks.blueCrystalLeaves);
- bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) -> 0xFFFFFF, ModBlocks.whiteCrystalLeaves);
-
- bColors.registerBlockColorHandler((IBlockState state, IBlockAccess w, BlockPos pos, int ti) ->
- w != null && pos != null ? BiomeColorHelper.getFoliageColorAtPos(w, pos) : ColorizerFoliage.getFoliageColorBasic(),
- Blocks.LEAVES, ModBlocks.apricotLeaves, ModBlocks.pearLeaves, ModBlocks.plumLeaves);
-
- ItemColors iColors = Minecraft.getMinecraft().getItemColors();
- iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> tintIndex > 0 ? -1 : ((ItemColoredSoup) stack.getItem()).getColor(stack), ModItems.coloredSoup);
- iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> tintIndex > 0 ? -1 : ((ItemJewel) stack.getItem()).getColor(stack), ModItems.jewel);
-
- iColors.registerItemColorHandler((ItemStack stack, int tintIndex) ->
- {
- IBlockState iblockstate = ((ItemBlock) stack.getItem()).getBlock().getStateFromMeta(stack.getMetadata());
- return bColors.colorMultiplier(iblockstate, null, null, tintIndex);
- }, ModBlocks.apricotLeaves, ModBlocks.pearLeaves, ModBlocks.plumLeaves);
-
- iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 0xFFD4F7, Item.getItemFromBlock(ModBlocks.redCrystalLeaves));
- iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 0xD0FFFF, Item.getItemFromBlock(ModBlocks.blueCrystalLeaves));
- iColors.registerItemColorHandler((ItemStack stack, int tintIndex) -> 0xFFFFFF, Item.getItemFromBlock(ModBlocks.whiteCrystalLeaves));
- }
- @SideOnly(Side.CLIENT)
- private final static ModelHat STRAW_HAT = new ModelHat(1);
- @SideOnly(Side.CLIENT)
- private final static ModelCylinder CYLINDER = new ModelCylinder(1);
-
- @Override
- public ModelBiped getCylinderModel()
- {
- return CYLINDER;
- }
- @Override
- public ModelBiped getStrawHatModel()
- {
- return STRAW_HAT;
- }
-
- // -------------------------------------------------------------------------
- // rendering stuff
- // -------------------------------------------------------------------------
-
- @SideOnly(Side.CLIENT)
- private final static Field LOC_FOLIAGE_PNG = ReflectionUtils.getFinalStaticField(FoliageColorReloadListener.class, "field_130079_a", "LOC_FOLIAGE_PNG");
-
- @Override
- public void setFoliage(ResourceLocation loc)
- {
- ReflectionUtils.setFieldValue(null, LOC_FOLIAGE_PNG, loc);
- }
-
- @SideOnly(Side.CLIENT)
- private final static Field LOC_GRASS_PNG = ReflectionUtils.getFinalStaticField(GrassColorReloadListener.class, "field_130078_a", "LOC_GRASS_PNG");
-
- @Override
- public void setGrass(ResourceLocation loc)
- {
- ReflectionUtils.setFieldValue(null, LOC_GRASS_PNG, loc);
- }
- }
|