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;
}
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);
}
}
Aggregations