Search in sources :

Example 1 with IMimic

use of com.ferreusveritas.dynamictrees.blocks.MimicProperty.IMimic in project DynamicTrees by DynamicTreesTeam.

the class BakedModelBlockRooty method getQuads.

@Override
public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand) {
    List<BakedQuad> quads = new ArrayList<>(16);
    if (state != null && state.getBlock() instanceof IMimic && state instanceof IExtendedBlockState) {
        IExtendedBlockState extendedState = ((IExtendedBlockState) state);
        IBlockState mimicState = extendedState.getValue(MimicProperty.MIMIC);
        Minecraft mc = Minecraft.getMinecraft();
        BlockRendererDispatcher blockRendererDispatcher = mc.getBlockRendererDispatcher();
        BlockModelShapes blockModelShapes = blockRendererDispatcher.getBlockModelShapes();
        IBakedModel mimicModel = blockModelShapes.getModelForState(mimicState);
        quads.addAll(mimicModel.getQuads(mimicState, side, rand));
        if (MinecraftForgeClient.getRenderLayer() == BlockRenderLayer.CUTOUT_MIPPED) {
            quads.addAll(rootsModel.getQuads(state, side, rand));
        }
    }
    return quads;
}
Also used : BakedQuad(net.minecraft.client.renderer.block.model.BakedQuad) IMimic(com.ferreusveritas.dynamictrees.blocks.MimicProperty.IMimic) IBlockState(net.minecraft.block.state.IBlockState) IExtendedBlockState(net.minecraftforge.common.property.IExtendedBlockState) ArrayList(java.util.ArrayList) IBakedModel(net.minecraft.client.renderer.block.model.IBakedModel) Minecraft(net.minecraft.client.Minecraft) BlockModelShapes(net.minecraft.client.renderer.BlockModelShapes) BlockRendererDispatcher(net.minecraft.client.renderer.BlockRendererDispatcher)

Example 2 with IMimic

use of com.ferreusveritas.dynamictrees.blocks.MimicProperty.IMimic in project DynamicTrees by DynamicTreesTeam.

the class ClientProxy method registerColorHandlers.

public void registerColorHandlers() {
    final int white = 0xFFFFFFFF;
    // for errors.. because magenta sucks.
    final int magenta = 0x00FF00FF;
    // BLOCKS
    final BlockColors blockColors = Minecraft.getMinecraft().getBlockColors();
    // Register Rooty Colorizers
    blockColors.registerBlockColorHandler((state, world, pos, tintIndex) -> {
        if (state.getBlock() instanceof BlockRooty) {
            BlockRooty blockRooty = (BlockRooty) state.getBlock();
            switch(tintIndex) {
                case 0:
                    {
                        // Layer Zero is the green color of grass
                        IBlockState muse = blockRooty.getMimic(world, pos);
                        if (!(muse instanceof IMimic)) {
                            // Ensure we don't recurse endlessly
                            return blockColors.colorMultiplier(muse, world, pos, tintIndex);
                        }
                    }
                case 1:
                    // Layer One is the root color
                    return blockRooty.rootColor(state, world, pos);
                default:
                    // All other color process unmultiplied
                    return white;
            }
        }
        return white;
    }, ModBlocks.blockRootyDirt, ModBlocks.blockRootyDirtSpecies, ModBlocks.blockRootySand, ModBlocks.blockRootyDirtFake);
    // Register Sapling Colorizer
    ModelHelper.regColorHandler(ModBlocks.blockDynamicSapling, (state, access, pos, tintIndex) -> {
        return isValid(access, pos) ? ModBlocks.blockDynamicSapling.getSpecies(access, pos, state).saplingColorMultiplier(state, access, pos, tintIndex) : white;
    });
    // Register Bonsai Pot Colorizer
    ModelHelper.regColorHandler(ModBlocks.blockBonsaiPot, (state, access, pos, tintIndex) -> {
        return isValid(access, pos) && (state.getBlock() instanceof BlockBonsaiPot) ? ModBlocks.blockBonsaiPot.getSpecies(access, pos).saplingColorMultiplier(state, access, pos, tintIndex) : white;
    });
    // ITEMS
    // Register Potion Colorizer
    ModelHelper.regColorHandler(ModItems.dendroPotion, (stack, tint) -> ModItems.dendroPotion.getColor(stack, tint));
    // Register Woodland Staff Mesher and Colorizer
    ModelHelper.regColorHandler(ModItems.treeStaff, (stack, tint) -> ModItems.treeStaff.getColor(stack, tint));
    // Register GrowingLeavesBlocks Colorizers
    for (BlockDynamicLeaves leaves : LeavesPaging.getLeavesMapForModId(ModConstants.MODID).values()) {
        ModelHelper.regColorHandler(leaves, (state, worldIn, pos, tintIndex) -> TreeHelper.isLeaves(state.getBlock()) ? ((BlockDynamicLeaves) state.getBlock()).getProperties(state).foliageColorMultiplier(state, worldIn, pos) : magenta);
    }
}
Also used : IMimic(com.ferreusveritas.dynamictrees.blocks.MimicProperty.IMimic) IBlockState(net.minecraft.block.state.IBlockState) BlockColors(net.minecraft.client.renderer.color.BlockColors)

Aggregations

IMimic (com.ferreusveritas.dynamictrees.blocks.MimicProperty.IMimic)2 IBlockState (net.minecraft.block.state.IBlockState)2 ArrayList (java.util.ArrayList)1 Minecraft (net.minecraft.client.Minecraft)1 BlockModelShapes (net.minecraft.client.renderer.BlockModelShapes)1 BlockRendererDispatcher (net.minecraft.client.renderer.BlockRendererDispatcher)1 BakedQuad (net.minecraft.client.renderer.block.model.BakedQuad)1 IBakedModel (net.minecraft.client.renderer.block.model.IBakedModel)1 BlockColors (net.minecraft.client.renderer.color.BlockColors)1 IExtendedBlockState (net.minecraftforge.common.property.IExtendedBlockState)1