package me.km; import java.awt.Color; import me.km.blocks.ModBlocks; import me.km.blocks.cookingpot.TileEntityCookingPot; import me.km.entities.ModEntities; import me.km.items.ItemColoredSoup; import me.km.items.ItemGemStone; import me.km.items.ModItems; import me.km.items.ModelCylinder; import me.km.items.ModelHat; import me.km.networking.KeyManager; import net.minecraft.block.BlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.color.BlockColors; import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.client.renderer.color.ItemColors; import net.minecraft.client.renderer.entity.model.BipedModel; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.MinecraftForge; import net.minecraft.world.GrassColors; import net.minecraft.world.IEnviromentBlockReader; import net.minecraft.world.biome.BiomeColors; public class ClientProxy extends CommonProxy { @Override public void init() { ModEntities.initClient(); MinecraftForge.EVENT_BUS.register(new ClientEvents()); MinecraftForge.EVENT_BUS.register(new KeyManager()); } @Override public void postInit() { BlockColors bColors = Minecraft.getInstance().getBlockColors(); bColors.register((BlockState state, IEnviromentBlockReader w, BlockPos pos, int tintIndex) -> { if(w == null || pos == null) { return -16777216; } TileEntityCookingPot tile = (TileEntityCookingPot) w.getTileEntity(pos); if(tile == null) { return -16777216; } Color c = tile.getColor(); return -16777216 | c.getRed() << 16 | c.getGreen() << 8 | c.getBlue(); }, ModBlocks.cookingPotCopper); IBlockColor tallGrass = (BlockState state, IEnviromentBlockReader w, BlockPos pos, int tintIndex) -> { if(w != null && pos != null) { return BiomeColors.getGrassColor(w, pos); } else { return GrassColors.get(0.5D, 1.0D); } }; bColors.register(tallGrass, ModBlocks.tallGrass); ItemColors iColors = Minecraft.getInstance().getItemColors(); iColors.register((ItemStack stack, int tintIndex) -> tintIndex > 0 ? -1 : ItemColoredSoup.getColor(stack), ModItems.coloredSoup); iColors.register((ItemStack stack, int tintIndex) -> tintIndex > 0 ? -1 : ((ItemGemStone) stack.getItem()).getColor(stack), ModItems.gemStone, ModItems.rawGemStone, ModItems.flawlessGemStone); iColors.register((ItemStack stack, int tintIndex) -> { BlockState state = ((BlockItem) stack.getItem()).getBlock().getDefaultState(); return tallGrass.getColor(state, null, null, tintIndex); }, ModBlocks.tallGrass); } @OnlyIn(Dist.CLIENT) private final static ModelHat STRAW_HAT = new ModelHat(1.0f); @OnlyIn(Dist.CLIENT) private final static ModelCylinder CYLINDER = new ModelCylinder(1.0f); @Override public BipedModel getCylinderModel() { return CYLINDER; } @Override public BipedModel getStrawHatModel() { return STRAW_HAT; } }