Basic Block/Gui/Tile registertion work for Inscriber is done.

This commit is contained in:
AlgorithmX2
2014-03-07 00:15:54 -06:00
parent f918147b46
commit cd51b00b31
7 changed files with 299 additions and 26 deletions
+16 -4
View File
@@ -5,10 +5,14 @@ import java.util.EnumSet;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockInscriber;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
import appeng.tile.misc.TileInscriber;
import appeng.tile.misc.TileInterface;
import appeng.util.Platform;
public class BlockInscriber extends AEBaseBlock
{
@@ -17,6 +21,14 @@ public class BlockInscriber extends AEBaseBlock
super( BlockInscriber.class, Material.iron );
setfeature( EnumSet.of( AEFeature.Inscriber ) );
setTileEntiy( TileInscriber.class );
setLightOpacity( 2 );
isFullSize = isOpaque = false;
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
{
return RenderBlockInscriber.class;
}
@Override
@@ -25,11 +37,11 @@ public class BlockInscriber extends AEBaseBlock
if ( p.isSneaking() )
return false;
TileInterface tg = getTileEntity( w, x, y, z );
TileInscriber tg = getTileEntity( w, x, y, z );
if ( tg != null )
{
// if ( Platform.isServer() )
// Platform.openGUI( p, tg, ForgeDirection.getOrientation( side ), GuiBridge.GUI_INSCRIBER );
if ( Platform.isServer() )
Platform.openGUI( p, tg, ForgeDirection.getOrientation( side ), GuiBridge.GUI_INSCRIBER );
return true;
}
return false;
@@ -0,0 +1,31 @@
package appeng.client.gui.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.client.gui.AEBaseGui;
import appeng.container.implementations.ContainerInscriber;
import appeng.core.localization.GuiText;
import appeng.tile.misc.TileInscriber;
public class GuiInscriber extends AEBaseGui
{
public GuiInscriber(InventoryPlayer inventoryPlayer, TileInscriber te) {
super( new ContainerInscriber( inventoryPlayer, te ) );
this.ySize = 176;
}
@Override
public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY)
{
bindTexture( "guis/inscriber.png" );
this.drawTexturedModalRect( offsetX, offsetY, 0, 0, xSize, ySize );
}
@Override
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY)
{
fontRendererObj.drawString( GuiText.Inscriber.getLocal(), 8, 6, 4210752 );
fontRendererObj.drawString( GuiText.inventory.getLocal(), 8, ySize - 96 + 3, 4210752 );
}
}
@@ -0,0 +1,158 @@
package appeng.client.render.blocks;
import java.util.EnumSet;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
import net.minecraftforge.common.util.ForgeDirection;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import appeng.api.util.IOrientable;
import appeng.block.AEBaseBlock;
import appeng.block.misc.BlockInscriber;
import appeng.client.render.BaseBlockRender;
import appeng.client.texture.ExtraTextures;
import appeng.core.AELog;
import appeng.tile.AEBaseTile;
import appeng.util.Platform;
public class RenderBlockInscriber extends BaseBlockRender
{
public RenderBlockInscriber() {
super( true, 30 );
}
@Override
public void renderInventory(AEBaseBlock blk, ItemStack is, RenderBlocks renderer, ItemRenderType type, Object[] obj)
{
Tessellator tess = Tessellator.instance;
renderer.renderAllFaces = true;
setInvRenderBounds( renderer, 6, 1, 0, 10, 15, 2 );
renderInvBlock( EnumSet.allOf( ForgeDirection.class ), blk, is, tess, 0xffffff, renderer );
blk.getRendererInstance().setTemporaryRenderIcons( ExtraTextures.BlockChargerInside.getIcon(), null, null, null, null, null );
setInvRenderBounds( renderer, 2, 0, 2, 14, 3, 14 );
// renderInvBlock( EnumSet.allOf( ForgeDirection.class ), blk, is, tess, 0xffffff, renderer );
setInvRenderBounds( renderer, 3, 3, 3, 13, 4, 13 );
// renderInvBlock( EnumSet.allOf( ForgeDirection.class ), blk, is, tess, 0xffffff, renderer );
blk.getRendererInstance().setTemporaryRenderIcon( null );
blk.getRendererInstance().setTemporaryRenderIcons( null, ExtraTextures.BlockChargerInside.getIcon(), null, null, null, null );
setInvRenderBounds( renderer, 2, 13, 2, 14, 16, 14 );
// renderInvBlock( EnumSet.allOf( ForgeDirection.class ), blk, is, tess, 0xffffff, renderer );
setInvRenderBounds( renderer, 3, 12, 3, 13, 13, 13 );
// renderInvBlock( EnumSet.allOf( ForgeDirection.class ), blk, is, tess, 0xffffff, renderer );
renderer.renderAllFaces = false;
// blk.getRendererInstance().setTemporaryRenderIcon( null );
}
@Override
public boolean renderInWorld(AEBaseBlock block, IBlockAccess world, int x, int y, int z, RenderBlocks renderer)
{
preRenderInWorld( block, world, x, y, z, renderer );
BlockInscriber blk = (BlockInscriber) block;
IOrientable te = getOrientable( block, world, x, y, z );
ForgeDirection fdy = te.getUp();
ForgeDirection fdz = te.getForward();
ForgeDirection fdx = Platform.crossProduct( fdz, fdy ).getOpposite();
renderer.renderAllFaces = true;
renderBlockBounds( renderer, 6, 1, 0, 10, 15, 2, fdx, fdy, fdz );
boolean out = renderer.renderStandardBlock( blk, x, y, z );
blk.getRendererInstance().setTemporaryRenderIcons( ExtraTextures.BlockChargerInside.getIcon(), null, null, null, null, null );
renderBlockBounds( renderer, 2, 0, 2, 14, 3, 14, fdx, fdy, fdz );
// out = renderer.renderStandardBlock( blk, x, y, z );
renderBlockBounds( renderer, 3, 3, 3, 13, 4, 13, fdx, fdy, fdz );
// out = renderer.renderStandardBlock( blk, x, y, z );
blk.getRendererInstance().setTemporaryRenderIcon( null );
blk.getRendererInstance().setTemporaryRenderIcons( null, ExtraTextures.BlockChargerInside.getIcon(), null, null, null, null );
renderBlockBounds( renderer, 2, 13, 2, 14, 16, 14, fdx, fdy, fdz );
// out = renderer.renderStandardBlock( blk, x, y, z );
renderBlockBounds( renderer, 3, 12, 3, 13, 13, 13, fdx, fdy, fdz );
// out = renderer.renderStandardBlock( blk, x, y, z );
renderer.renderAllFaces = false;
blk.getRendererInstance().setTemporaryRenderIcon( null );
postRenderInWorld( renderer );
return out;
}
@Override
public void renderTile(AEBaseBlock block, AEBaseTile tile, Tessellator tess, double x, double y, double z, float f, RenderBlocks renderer)
{
ItemStack sis = null;
if ( tile instanceof IInventory )
sis = ((IInventory) tile).getStackInSlot( 0 );
if ( sis != null )
{
applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() );
GL11.glPushMatrix();
try
{
GL11.glTranslatef( 0.5f, 0.45f, 0.5f );
GL11.glScalef( 1.0f / 1.1f, 1.0f / 1.1f, 1.0f / 1.1f );
GL11.glScalef( 1.0f, 1.0f, 1.0f );
Block blk = Block.getBlockFromItem( sis.getItem() );
if ( sis.getItemSpriteNumber() == 0 && block != null && RenderBlocks.renderItemIn3d( blk.getRenderType() ) )
{
GL11.glRotatef( 25.0f, 1.0f, 0.0f, 0.0f );
GL11.glRotatef( 15.0f, 0.0f, 1.0f, 0.0f );
GL11.glRotatef( 30.0f, 0.0f, 1.0f, 0.0f );
}
int light = tile.getWorldObj().getLightBrightnessForSkyBlocks( tile.xCoord, tile.yCoord, tile.zCoord, 0 );
int br = light;// << 20 | light << 4;
int var11 = br % 65536;
int var12 = br / 65536;
OpenGlHelper.setLightmapTextureCoords( OpenGlHelper.lightmapTexUnit, var11, var12 );
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL12.GL_RESCALE_NORMAL );
tess.setColorOpaque_F( 1.0f, 1.0f, 1.0f );
doRenderItem( sis, tile );
}
catch (Exception err)
{
AELog.error( err );
}
GL11.glPopMatrix();
}
}
}
@@ -0,0 +1,19 @@
package appeng.container.implementations;
import net.minecraft.entity.player.InventoryPlayer;
import appeng.container.AEBaseContainer;
import appeng.tile.misc.TileInscriber;
public class ContainerInscriber extends AEBaseContainer
{
TileInscriber myte;
public ContainerInscriber(InventoryPlayer ip, TileInscriber te) {
super( ip, te, null );
myte = te;
bindPlayerInventory( ip, 0, 176 - /* height of playerinventory */82 );
}
}
+2 -16
View File
@@ -34,6 +34,7 @@ import appeng.block.grindstone.BlockGrinder;
import appeng.block.misc.BlockCellWorkbench;
import appeng.block.misc.BlockCharger;
import appeng.block.misc.BlockCondenser;
import appeng.block.misc.BlockInscriber;
import appeng.block.misc.BlockInterface;
import appeng.block.misc.BlockQuartzGrowthAccelerator;
import appeng.block.misc.BlockQuartzTorch;
@@ -276,22 +277,10 @@ public class Registration
blocks.blockGrindStone = addFeature( BlockGrinder.class );
blocks.blockCrankHandle = addFeature( BlockCrank.class );
// blocks.blockInscriber = addFeature( BlockInscriber.class );
blocks.blockInscriber = addFeature( BlockInscriber.class );
blocks.blockWireless = addFeature( BlockWireless.class );
blocks.blockTinyTNT = addFeature( BlockTinyTNT.class );
// blocks.blockQuartzCrystalizer = addFeature(
// BlockQuartzCrystalizer.class );
// blocks.blockNetworkEmitter = addFeature( BlockNetworkEmitter.class );
// blocks.blockPatternProvider = addFeature( BlockPatternProvider.class
// );
// blocks.blockAssemblerFieldWall = addFeature(
// BlockContainmentWall.class );
// blocks.blockHeatVent = addFeature( BlockHeatVent.class );
// blocks.blockCraftingCPU = addFeature( BlockCraftingAccelerator.class
// );
blocks.blockQuantumRing = addFeature( BlockQuantumRing.class );
blocks.blockQuantumLink = addFeature( BlockQuantumLinkChamber.class );
@@ -314,9 +303,6 @@ public class Registration
blocks.blockSecurity = addFeature( BlockSecurity.class );
// items.itemEncodedAsemblerPattern = addFeature(
// ItemEncodedPattern.class );
items.itemCellCreative = addFeature( ItemCreativeStorageCell.class );
items.itemViewCell = addFeature( ItemViewCell.class );
+3 -1
View File
@@ -36,6 +36,7 @@ import appeng.container.implementations.ContainerDrive;
import appeng.container.implementations.ContainerFormationPlane;
import appeng.container.implementations.ContainerGrinder;
import appeng.container.implementations.ContainerIOPort;
import appeng.container.implementations.ContainerInscriber;
import appeng.container.implementations.ContainerInterface;
import appeng.container.implementations.ContainerLevelEmitter;
import appeng.container.implementations.ContainerMEMonitorable;
@@ -65,6 +66,7 @@ import appeng.server.AccessType;
import appeng.tile.grindstone.TileGrinder;
import appeng.tile.misc.TileCellWorkbench;
import appeng.tile.misc.TileCondenser;
import appeng.tile.misc.TileInscriber;
import appeng.tile.misc.TileSecurity;
import appeng.tile.misc.TileVibrationChamber;
import appeng.tile.networking.TileWireless;
@@ -131,7 +133,7 @@ public enum GuiBridge implements IGuiHandler
GUI_SPATIALIOPORT(ContainerSpatialIOPort.class, TileSpatialIOPort.class, false, SecurityPermissions.BUILD),
// GUI_INSCRIBER
GUI_INSCRIBER(ContainerInscriber.class, TileInscriber.class, false, null),
GUI_CELLWORKBENCH(ContainerCellWorkbench.class, TileCellWorkbench.class, false, null);
+70 -5
View File
@@ -7,19 +7,26 @@ import java.util.EnumSet;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
import appeng.api.util.AECableType;
import appeng.recipes.handlers.Inscriber;
import appeng.tile.events.AETileEventHandler;
import appeng.tile.events.TileEventType;
import appeng.tile.grid.AENetworkPowerTile;
import appeng.tile.inventory.AppEngInternalInventory;
import appeng.tile.inventory.InvOperation;
import appeng.util.Platform;
import appeng.util.item.AEItemStack;
public class TileInscriber extends AENetworkPowerTile
{
final int sides[] = new int[] { 0, 1 };
AppEngInternalInventory inv = new AppEngInternalInventory( this, 2 );
final int top[] = new int[] { 0 };
final int bottom[] = new int[] { 1 };
final int sides[] = new int[] { 2, 3 };
AppEngInternalInventory inv = new AppEngInternalInventory( this, 4 );
int processingTime = 0;
@Override
@@ -32,12 +39,33 @@ public class TileInscriber extends AENetworkPowerTile
{
public TileInscriberHandler() {
super( TileEventType.TICK, TileEventType.NETWORK );
super( TileEventType.TICK, TileEventType.WORLD_NBT, TileEventType.NETWORK );
}
@Override
public void writeToNBT(NBTTagCompound data)
{
inv.writeToNBT( data, "inscriberInv" );
}
@Override
public void readFromNBT(NBTTagCompound data)
{
inv.readFromNBT( data, "inscriberInv" );
}
@Override
public boolean readFromStream(ByteBuf data) throws IOException
{
int slot = data.readByte();
for (int num = 0; num < inv.getSizeInventory(); num++)
{
if ( (slot | (1 << num)) > 0 )
inv.setInventorySlotContents( num, AEItemStack.loadItemStackFromPacket( data ).getItemStack() );
else
inv.setInventorySlotContents( num, null );
}
return false;
}
@@ -45,7 +73,22 @@ public class TileInscriber extends AENetworkPowerTile
@Override
public void writeToStream(ByteBuf data) throws IOException
{
int slot = 0;
for (int num = 0; num < inv.getSizeInventory(); num++)
{
if ( inv.getStackInSlot( num ) != null )
slot = slot | (1 << num);
}
for (int num = 0; num < inv.getSizeInventory(); num++)
{
if ( (slot | (1 << num)) > 0 )
{
AEItemStack st = AEItemStack.create( inv.getStackInSlot( num ) );
st.writeToPacket( data );
}
}
}
@Override
@@ -80,6 +123,14 @@ public class TileInscriber extends AENetworkPowerTile
@Override
public int[] getAccessibleSlotsFromSide(int side)
{
ForgeDirection d = ForgeDirection.getOrientation( side );
if ( d == ForgeDirection.UP )
return top;
if ( d == ForgeDirection.DOWN )
return bottom;
return sides;
}
@@ -92,13 +143,27 @@ public class TileInscriber extends AENetworkPowerTile
@Override
public boolean isItemValidForSlot(int i, ItemStack itemstack)
{
return i == 0;
if ( i == 0 || i == 1 )
{
for (ItemStack s : Inscriber.plates)
if ( Platform.isSameItemPrecise( s, itemstack ) )
return true;
}
if ( i == 2 )
{
for (ItemStack s : Inscriber.inputs)
if ( Platform.isSameItemPrecise( s, itemstack ) )
return true;
}
return false;
}
@Override
public boolean canExtractItem(int i, ItemStack itemstack, int j)
{
return i == 1;
return i == 0 || i == 1 || i == 3;
}
@Override