BlockColor в 1.9

4,045
63
645
Чо-т они наворотили О_о
Кто-нибудь уже столкнулся с тем, как теперь окрашивать блоки в цвет биомов?

Я вот столкнулся и выяснил, что методов:  Block.colorMultiplier(), getBlockColor() и getRenderColor() теперь в блоке нету...

Вопрос: где ж их теперь искать?
Методом тыка по клавишам, нашёл вот такую вот темку.
В ней написано:
Looks like Block.colorMultiplier and Item.getColorFromItemstack have disappeared...what?!
  • Don't fret, they've just been split out into a separate interface (allowing the same logic to be used for multiple block/item types IBlockColor and IItemColor contain those two old methods.
  • BlockColors and ItemColors are where you register instances of the above interfaces to Block and Item instances.The BlockColors and ItemColors instances can be obtained from Minecraft, and both contain methods to scan all registered Blocks/Items to apply coloring to an unspecified Block or Item.
Что из этого понятно... Имплементируешь блоку IBlockColor и вуаля! У тебя есть метод Block.colorMultiplier().
Но, по сути, он говорит только что во что красить... И как-то нифига не фурычит у меня... Травка остаётся серенькой...

А вот где искать оставшиеся два метода или куда их нужно пихать я так и не понял.
Кто-нибудь может помочь?
 
4,045
63
645
Ох жесть... Ну они и запихнули методы...
В общем, кому интересно, травушка делается так.
Пишите в postInit(почему-то рекомендую именно туда) что-то типа этого:
Код:
final BlockColors block = FMLClientHandler.instance().getClient().getBlockColors();         
block.registerBlockColorHandler(new IBlockColor() { 
     @Override
     public int colorMultiplier(IBlockState state, IBlockAccess worldIn, BlockPos pos, int tintIndex)
     {return worldIn != null && pos != null ? (tintIndex == 1 ? BiomeColorHelper.getGrassColorAtPos(worldIn, pos) : 0xFFFFFFFF) : ColorizerGrass.getGrassColor(0.5D, 1.0D);}                
}, ModBlocks.saltGrass);
        
ItemColors color = FMLClientHandler.instance().getClient().getItemColors();
color.registerItemColorHandler(new IItemColor() {
     @Override
     public int getColorFromItemstack(ItemStack stack, int tintIndex)
     {return block.colorMultiplier(ModBlocks.saltGrass.getStateFromMeta(0), (IBlockAccess)null, (BlockPos)null, tintIndex);}
}, ModBlocks.saltGrass);

То есть теперь цвет блоков регистрируется отдельно от блоков...

Тему можно закрывать.
Всем спасибо )
 
Сверху