2015-10-08 15:42:42 +02:00
|
|
|
|
2015-06-16 02:44:59 +02:00
|
|
|
package appeng.client;
|
|
|
|
|
2016-01-01 01:48:15 +01:00
|
|
|
|
2015-06-16 02:44:59 +02:00
|
|
|
import java.util.List;
|
|
|
|
|
2016-06-19 14:43:27 +02:00
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
2015-06-16 02:44:59 +02:00
|
|
|
import net.minecraft.block.Block;
|
|
|
|
import net.minecraft.block.state.IBlockState;
|
2016-06-19 14:43:27 +02:00
|
|
|
import net.minecraft.client.renderer.block.model.BakedQuad;
|
|
|
|
import net.minecraft.client.renderer.block.model.IBakedModel;
|
2015-06-16 02:44:59 +02:00
|
|
|
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
2016-06-19 14:43:27 +02:00
|
|
|
import net.minecraft.client.renderer.block.model.ItemOverrideList;
|
2015-06-16 02:44:59 +02:00
|
|
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
2016-06-19 14:43:27 +02:00
|
|
|
import net.minecraft.entity.EntityLivingBase;
|
2015-06-16 02:44:59 +02:00
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
import net.minecraft.util.EnumFacing;
|
2016-06-19 14:43:27 +02:00
|
|
|
import net.minecraft.util.math.BlockPos;
|
2015-06-16 02:44:59 +02:00
|
|
|
import net.minecraft.world.IBlockAccess;
|
2016-06-19 14:43:27 +02:00
|
|
|
import net.minecraft.world.World;
|
2015-06-16 02:44:59 +02:00
|
|
|
import net.minecraftforge.common.property.IExtendedBlockState;
|
2015-10-08 15:42:42 +02:00
|
|
|
|
2016-01-01 01:47:22 +01:00
|
|
|
import appeng.api.util.AEPartLocation;
|
2016-02-16 21:06:59 +01:00
|
|
|
import appeng.api.util.ModelGenerator;
|
2016-01-01 01:47:22 +01:00
|
|
|
import appeng.block.AEBaseBlock;
|
2016-02-16 21:06:59 +01:00
|
|
|
import appeng.client.render.BakingModelGenerator;
|
2016-01-01 01:47:22 +01:00
|
|
|
import appeng.client.render.BlockRenderInfo;
|
|
|
|
import appeng.client.texture.MissingIcon;
|
|
|
|
|
2016-01-01 01:48:15 +01:00
|
|
|
|
2015-06-16 02:44:59 +02:00
|
|
|
// net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer
|
2016-06-19 14:43:27 +02:00
|
|
|
public class SmartModel implements IBakedModel
|
2015-06-16 02:44:59 +02:00
|
|
|
{
|
|
|
|
|
2015-12-24 02:09:38 +01:00
|
|
|
private final BlockRenderInfo aeRenderer;
|
2015-06-16 02:44:59 +02:00
|
|
|
|
2016-01-01 02:02:05 +01:00
|
|
|
public SmartModel( final BlockRenderInfo rendererInstance )
|
2015-06-16 02:44:59 +02:00
|
|
|
{
|
2016-01-01 01:50:28 +01:00
|
|
|
this.aeRenderer = rendererInstance;
|
2015-10-08 15:42:42 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isAmbientOcclusion()
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isGui3d()
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isBuiltInRenderer()
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
2016-01-01 01:48:15 +01:00
|
|
|
|
2015-10-08 15:42:42 +02:00
|
|
|
@Override
|
2016-01-01 00:19:44 +01:00
|
|
|
public TextureAtlasSprite getParticleTexture()
|
2015-10-08 15:42:42 +02:00
|
|
|
{
|
2016-01-01 01:50:28 +01:00
|
|
|
return this.aeRenderer != null ? this.aeRenderer.getTexture( AEPartLocation.UP ).getAtlas() : MissingIcon.getMissing();
|
2015-06-16 02:44:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2015-10-08 15:42:42 +02:00
|
|
|
public ItemCameraTransforms getItemCameraTransforms()
|
|
|
|
{
|
|
|
|
return ItemCameraTransforms.DEFAULT;
|
|
|
|
}
|
2015-06-16 02:44:59 +02:00
|
|
|
|
|
|
|
@Override
|
2016-06-19 14:43:27 +02:00
|
|
|
public List<BakedQuad> getQuads( IBlockState state, EnumFacing side, long rand )
|
2015-06-16 02:44:59 +02:00
|
|
|
{
|
2016-02-16 21:06:59 +01:00
|
|
|
final ModelGenerator helper = new BakingModelGenerator();
|
2015-09-30 14:24:40 +02:00
|
|
|
final Block blk = state.getBlock();
|
2016-01-01 00:19:44 +01:00
|
|
|
final BlockPos pos = ( (IExtendedBlockState) state ).getValue( AEBaseBlock.AE_BLOCK_POS );
|
|
|
|
final IBlockAccess world = ( (IExtendedBlockState) state ).getValue( AEBaseBlock.AE_BLOCK_ACCESS );
|
2015-06-16 02:44:59 +02:00
|
|
|
helper.setTranslation( -pos.getX(), -pos.getY(), -pos.getZ() );
|
2016-06-21 11:03:10 +02:00
|
|
|
helper.setRenderBoundsFromBlock( state, pos );
|
2015-10-08 15:42:42 +02:00
|
|
|
helper.setBlockAccess( world );
|
2016-01-01 01:50:28 +01:00
|
|
|
this.aeRenderer.getRendererInstance().renderInWorld( blk instanceof AEBaseBlock ? (AEBaseBlock) blk : null, world, pos, helper );
|
2015-06-16 02:44:59 +02:00
|
|
|
helper.finalizeModel( false );
|
2016-06-19 14:43:27 +02:00
|
|
|
return helper.getOutput().getQuads( state, side, rand );
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public ItemOverrideList getOverrides()
|
|
|
|
{
|
|
|
|
return new ItemOverrideList( Lists.newArrayList() ){
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public IBakedModel handleItemState( IBakedModel originalModel, ItemStack stack, World world, EntityLivingBase entity )
|
|
|
|
{
|
|
|
|
final ModelGenerator helper = new BakingModelGenerator();
|
|
|
|
final Block blk = Block.getBlockFromItem( stack.getItem() );
|
2016-06-21 11:03:10 +02:00
|
|
|
helper.setRenderBoundsFromBlock( blk.getDefaultState(), null );
|
2016-06-19 14:43:27 +02:00
|
|
|
aeRenderer.getRendererInstance().renderInventory( blk instanceof AEBaseBlock ? (AEBaseBlock) blk : null, stack, helper, ItemRenderType.INVENTORY, null );
|
|
|
|
helper.finalizeModel( true );
|
|
|
|
return helper.getOutput();
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
2015-06-16 02:44:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|