Applied-Energistics-2-tiler.../src/main/java/appeng/client/SmartModel.java

125 lines
3.6 KiB
Java
Raw Normal View History

2015-06-16 02:44:59 +02:00
package appeng.client;
import java.util.Collections;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.IBakedModel;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
import net.minecraftforge.client.model.IModelPart;
import net.minecraftforge.client.model.IModelState;
import net.minecraftforge.client.model.ISmartBlockModel;
import net.minecraftforge.client.model.ISmartItemModel;
import net.minecraftforge.client.model.TRSRTransformation;
import net.minecraftforge.common.property.IExtendedBlockState;
import appeng.api.util.AEPartLocation;
import appeng.block.AEBaseBlock;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BlockRenderInfo;
2015-06-22 18:16:25 +02:00
import appeng.client.render.ModelGenerator;
2015-06-16 02:44:59 +02:00
import appeng.client.texture.MissingIcon;
// net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer
public class SmartModel implements IBakedModel, ISmartBlockModel,ISmartItemModel
{
BlockRenderInfo AERenderer;
private class DefState implements IModelState
{
@Override
public TRSRTransformation apply(
2015-09-30 14:24:40 +02:00
final IModelPart part )
2015-06-16 02:44:59 +02:00
{
return TRSRTransformation.identity();
}
};
public SmartModel(
2015-09-30 14:24:40 +02:00
final BlockRenderInfo rendererInstance )
2015-06-16 02:44:59 +02:00
{
2015-09-30 14:26:54 +02:00
this.AERenderer = rendererInstance;
2015-06-16 02:44:59 +02:00
}
@Override
public List getFaceQuads(
2015-09-30 14:24:40 +02:00
final EnumFacing p_177551_1_ )
2015-06-16 02:44:59 +02:00
{
return Collections.emptyList();
}
@Override
public List getGeneralQuads()
{
return Collections.emptyList();
}
@Override
public boolean isAmbientOcclusion()
{
return true;
}
@Override
public boolean isGui3d()
{
return true;
}
@Override
public boolean isBuiltInRenderer()
{
return false;
}
@Override
public TextureAtlasSprite getTexture()
{
2015-09-30 14:26:54 +02:00
return this.AERenderer != null ? this.AERenderer.getTexture( AEPartLocation.UP ).getAtlas() : MissingIcon.getMissing();
2015-06-16 02:44:59 +02:00
}
@Override
public ItemCameraTransforms getItemCameraTransforms()
{
return ItemCameraTransforms.DEFAULT;
}
@Override
public IBakedModel handleItemState(
2015-09-30 14:24:40 +02:00
final ItemStack stack )
2015-06-16 02:44:59 +02:00
{
2015-09-30 14:24:40 +02:00
final ModelGenerator helper = new ModelGenerator();
final Block blk = Block.getBlockFromItem( stack.getItem() );
2015-06-16 02:44:59 +02:00
helper.setRenderBoundsFromBlock( blk );
2015-09-30 14:26:54 +02:00
this.AERenderer.rendererInstance.renderInventory( blk instanceof AEBaseBlock ? (AEBaseBlock) blk : null, stack, helper, ItemRenderType.INVENTORY, null );
2015-06-16 02:44:59 +02:00
helper.finalizeModel( true );
return helper.getOutput();
}
@Override
public IBakedModel handleBlockState(
2015-09-30 14:24:40 +02:00
final IBlockState state )
2015-06-16 02:44:59 +02:00
{
2015-09-30 14:24:40 +02:00
final ModelGenerator helper = new ModelGenerator();
final Block blk = state.getBlock();
final BlockPos pos = ( (IExtendedBlockState)state ).getValue( AEBaseTileBlock.AE_BLOCK_POS );
final IBlockAccess world = ( (IExtendedBlockState)state ).getValue( AEBaseTileBlock.AE_BLOCK_ACCESS);
2015-06-16 02:44:59 +02:00
helper.setTranslation( -pos.getX(), -pos.getY(), -pos.getZ() );
helper.setRenderBoundsFromBlock( blk );
helper.blockAccess = world;
2015-09-30 14:26:54 +02:00
this.AERenderer.rendererInstance.renderInWorld( blk instanceof AEBaseBlock ? (AEBaseBlock) blk : null, world, pos, helper);
2015-06-16 02:44:59 +02:00
helper.finalizeModel( false );
return helper.getOutput();
}
}