diff --git a/src/main/java/appeng/client/render/ColorableTileBlockColor.java b/src/main/java/appeng/client/render/ColorableTileBlockColor.java new file mode 100644 index 00000000..be3261f0 --- /dev/null +++ b/src/main/java/appeng/client/render/ColorableTileBlockColor.java @@ -0,0 +1,67 @@ +/* + * This file is part of Applied Energistics 2. + * Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved. + * + * Applied Energistics 2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Applied Energistics 2 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Applied Energistics 2. If not, see . + */ + +package appeng.client.render; + + +import javax.annotation.Nullable; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.color.IBlockColor; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; + +import appeng.api.implementations.tiles.IColorableTile; +import appeng.api.util.AEColor; + + +/** + * Automatically exposes the color of a colorable tile using tint indices 0-2 + */ +public class ColorableTileBlockColor implements IBlockColor +{ + + public static final ColorableTileBlockColor INSTANCE = new ColorableTileBlockColor(); + + @Override + public int colorMultiplier( IBlockState state, @Nullable IBlockAccess worldIn, @Nullable BlockPos pos, int tintIndex ) + { + AEColor color = AEColor.Transparent; // Default to a neutral color + + if( worldIn != null && pos != null ) + { + TileEntity te = worldIn.getTileEntity( pos ); + if( te instanceof IColorableTile ) + { + color = ( (IColorableTile) te ).getColor(); + } + } + + switch( tintIndex ) + { + default: + case 0: + return color.whiteVariant; + case 1: + return color.mediumVariant; + case 2: + return color.blackVariant; + } + } +} diff --git a/src/main/java/appeng/client/render/StaticItemColor.java b/src/main/java/appeng/client/render/StaticItemColor.java new file mode 100644 index 00000000..5d453d2e --- /dev/null +++ b/src/main/java/appeng/client/render/StaticItemColor.java @@ -0,0 +1,38 @@ +package appeng.client.render; + + +import net.minecraft.client.renderer.color.IItemColor; +import net.minecraft.item.ItemStack; + +import appeng.api.util.AEColor; + + +/** + * Returns the shades of a single AE color for tint indices 0, 1, and 2. + */ +public class StaticItemColor implements IItemColor +{ + + private final AEColor color; + + public StaticItemColor( AEColor color ) + { + this.color = color; + } + + @Override + public int getColorFromItemstack( ItemStack stack, int tintIndex ) + { + switch( tintIndex ) + { + default: + case 0: + return color.whiteVariant; + case 1: + return color.mediumVariant; + case 2: + return color.blackVariant; + } + } + +}