Pattern Renderer ( for shift )
This commit is contained in:
parent
8a5a4b3097
commit
85f15e7c06
2 changed files with 84 additions and 0 deletions
80
client/render/items/ItemEncodedPatternRenderer.java
Normal file
80
client/render/items/ItemEncodedPatternRenderer.java
Normal file
|
@ -0,0 +1,80 @@
|
|||
package appeng.client.render.items;
|
||||
|
||||
import net.minecraft.client.renderer.entity.RenderItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
import appeng.util.Platform;
|
||||
|
||||
public class ItemEncodedPatternRenderer implements IItemRenderer
|
||||
{
|
||||
|
||||
RenderItem ri = new RenderItem();
|
||||
boolean resursive;
|
||||
|
||||
@Override
|
||||
public boolean handleRenderType(ItemStack item, ItemRenderType type)
|
||||
{
|
||||
boolean isShiftHeld = Keyboard.isKeyDown( Keyboard.KEY_LSHIFT ) || Keyboard.isKeyDown( Keyboard.KEY_RSHIFT );
|
||||
|
||||
if ( resursive == false && type == IItemRenderer.ItemRenderType.INVENTORY && isShiftHeld )
|
||||
{
|
||||
if ( readOutput( item ) != null )
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private ItemStack readOutput(ItemStack item)
|
||||
{
|
||||
NBTTagCompound encodedValue = item.getTagCompound();
|
||||
|
||||
if ( encodedValue == null )
|
||||
return null;
|
||||
|
||||
NBTTagList outTag = encodedValue.getTagList( "out", 10 );
|
||||
|
||||
if ( outTag.tagCount() == 0 )
|
||||
return null;
|
||||
|
||||
ItemStack out = null;
|
||||
|
||||
for (int x = 0; x < outTag.tagCount(); x++)
|
||||
{
|
||||
ItemStack readItem = ItemStack.loadItemStackFromNBT( outTag.getCompoundTagAt( x ) );
|
||||
if ( readItem != null )
|
||||
{
|
||||
if ( out == null )
|
||||
out = readItem;
|
||||
else if ( out != null && Platform.isSameItemPrecise( readItem, out ) )
|
||||
out.stackSize += readItem.stackSize;
|
||||
}
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderItem(ItemRenderType type, ItemStack item, Object... data)
|
||||
{
|
||||
resursive = true;
|
||||
|
||||
ItemStack is = readOutput( item );
|
||||
// data is just render blocks.
|
||||
|
||||
// ri.renderItemAndEffectIntoGUI( par1FontRenderer, par2TextureManager, par3ItemStack, par4, par5 );
|
||||
|
||||
resursive = false;
|
||||
}
|
||||
}
|
|
@ -7,8 +7,10 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraftforge.client.MinecraftForgeClient;
|
||||
import appeng.api.crafting.ICraftingPatternDetails;
|
||||
import appeng.api.implementations.ICraftingPatternItem;
|
||||
import appeng.client.render.items.ItemEncodedPatternRenderer;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.core.localization.GuiText;
|
||||
import appeng.items.AEBaseItem;
|
||||
|
@ -21,6 +23,8 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt
|
|||
super( ItemEncodedPattern.class );
|
||||
setfeature( EnumSet.of( AEFeature.Crafting ) );
|
||||
setMaxStackSize( 1 );
|
||||
if ( Platform.isClient() )
|
||||
MinecraftForgeClient.registerItemRenderer( this, new ItemEncodedPatternRenderer() );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue