Applied-Energistics-2-tiler.../src/main/java/appeng/items/tools/powered/ToolColorApplicatorRendering.java
2016-10-14 00:08:42 +02:00

68 lines
2.1 KiB
Java

package appeng.items.tools.powered;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import appeng.api.util.AEColor;
import appeng.bootstrap.IItemRendering;
import appeng.bootstrap.ItemRenderingCustomizer;
import appeng.client.render.model.ColorApplicatorModel;
import appeng.core.AppEng;
public class ToolColorApplicatorRendering extends ItemRenderingCustomizer
{
private static final ModelResourceLocation MODEL_COLORED = new ModelResourceLocation( new ResourceLocation( AppEng.MOD_ID, "builtin/color_applicator_colored" ), "inventory" );
private static final ModelResourceLocation MODEL_UNCOLORED = new ModelResourceLocation( new ResourceLocation( AppEng.MOD_ID, "color_applicator_uncolored" ), "inventory" );
@Override
@SideOnly( Side.CLIENT )
public void customize( IItemRendering rendering )
{
rendering.builtInModel( "models/item/builtin/color_applicator_colored", new ColorApplicatorModel() );
rendering.variants( MODEL_COLORED, MODEL_UNCOLORED );
rendering.color( this::getColor );
rendering.meshDefinition( this::getMesh );
}
private ModelResourceLocation getMesh( ItemStack itemStack )
{
// If the stack has no color, don't use the colored model since the impact of calling getColor for every quad is extremely high,
// if the stack tries to re-search its inventory for a new paintball everytime
AEColor col = ( (ToolColorApplicator) itemStack.getItem() ).getActiveColor( itemStack );
return ( col != null ) ? MODEL_COLORED : MODEL_UNCOLORED;
}
private int getColor( ItemStack itemStack, int idx )
{
if( idx == 0 )
{
return -1;
}
final AEColor col = ( (ToolColorApplicator) itemStack.getItem() ).getActiveColor( itemStack );
if( col == null )
{
return -1;
}
switch( idx )
{
case 1:
return col.blackVariant;
case 2:
return col.mediumVariant;
case 3:
return col.whiteVariant;
default:
return -1;
}
}
}