Pretty table renders pretty blocks

This commit is contained in:
Justin Aquadro committed 2016-02-16 00:48:25 -05:00
1 parent f421edaf13
commit 143f8acab2
7 files changed
+242 -3

No files matched your search

@@ -43,10 +43,42 @@ public class BlockFramingTable extends BlockContainer
@Override
public boolean onBlockActivated (World world, int x, int y, int z, EntityPlayer player, int side, float vx, float vy, float vz) {
player.openGui(StorageDrawers.instance, GuiHandler.framingGuiID, world, x, y, z);
int meta = world.getBlockMetadata(x, y, z);
int priX = x + getXOff(meta);
int priZ = z + getZOff(meta);
if (world.getBlock(priX, y, priZ) != this || (world.getBlockMetadata(priX, y, priZ) & 0x8) != 0)
return false;
player.openGui(StorageDrawers.instance, GuiHandler.framingGuiID, world, priX, y, priZ);
return true;
}
private int getXOff (int meta) {
if ((meta & 0x8) == 0)
return 0;
int side = meta & 0x7;
if (side == 2)
return -1;
else if (side == 3)
return 1;
else
return 0;
}
private int getZOff (int meta) {
if ((meta & 0x8) == 0)
return 0;
int side = meta & 0x7;
if (side == 4)
return 1;
else if (side == 5)
return -1;
else
return 0;
}
@Override
public boolean isOpaqueCube () {
return false;
@@ -7,6 +7,9 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.Constants;
@@ -169,4 +172,18 @@ public class TileEntityFramingTable extends TileEntity implements IInventory
if (hasCustomInventoryName())
tag.setString("CustomName", customName);
}
@Override
public Packet getDescriptionPacket () {
NBTTagCompound tag = new NBTTagCompound();
writeToNBT(tag);
return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 5, tag);
}
@Override
public void onDataPacket (NetworkManager net, S35PacketUpdateTileEntity pkt) {
readFromNBT(pkt.func_148857_g());
//getWorldObj().func_147479_m(xCoord, yCoord, zCoord); // markBlockForRenderUpdate
}
}
@@ -50,8 +50,10 @@ public class DrawersItemRenderer implements IItemRenderer
if (renderType == ItemRenderType.INVENTORY)
GL11.glRotatef(90, 0, 1, 0);
if (renderType == ItemRenderType.ENTITY)
if (renderType == ItemRenderType.ENTITY) {
GL11.glRotatef(180, 0, 1, 0);
GL11.glRotatef(180, 1, 0, 0);
}
if (renderType == ItemRenderType.INVENTORY || renderType == ItemRenderType.ENTITY)
GL11.glTranslatef(block.halfDepth ? -.75f : -.5f, -.5f, -.5f);
@@ -5,7 +5,6 @@ import com.jaquadro.minecraft.storagedrawers.block.BlockFramingTable;
import com.jaquadro.minecraft.storagedrawers.client.renderer.common.CommonFramingRenderer;
import com.jaquadro.minecraft.storagedrawers.core.ClientProxy;
import com.jaquadro.minecraft.storagedrawers.util.RenderHelper;
import com.jaquadro.minecraft.storagedrawers.util.RenderHelperState;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
@@ -0,0 +1,177 @@
package com.jaquadro.minecraft.storagedrawers.client.renderer;
import com.jaquadro.minecraft.storagedrawers.block.BlockDrawersCustom;
import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityFramingTable;
import com.jaquadro.minecraft.storagedrawers.item.ItemCustomDrawers;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import org.lwjgl.opengl.GL11;
@SideOnly(Side.CLIENT)
public class TileEntityFramingRenderer extends TileEntitySpecialRenderer
{
private RenderItem itemRenderer = new RenderItem() {
@Override
public byte getMiniBlockCount (ItemStack stack, byte original) {
return 1;
}
@Override
public boolean shouldBob () {
return false;
}
@Override
public boolean shouldSpreadItems () {
return false;
}
};
@Override
public void renderTileEntityAt (TileEntity tile, double x, double y, double z, float partialTickTime) {
TileEntityFramingTable tileTable = (TileEntityFramingTable) tile;
if (tileTable == null)
return;
int meta = tile.getBlockMetadata();
if ((meta & 8) != 0)
return;
int side = meta & 0x07;
itemRenderer.setRenderManager(RenderManager.instance);
ItemStack target = tileTable.getStackInSlot(0);
if (target != null) {
Block block = Block.getBlockFromItem(target.getItem());
if (block instanceof BlockDrawersCustom) {
ItemStack result = ItemCustomDrawers.makeItemStack(block, 1, tileTable.getStackInSlot(1), tileTable.getStackInSlot(2), tileTable.getStackInSlot(3));
renderSlot(tileTable, x, y, z, result, 2f, 0f, .25f, 0f);
}
}
renderSlot(tileTable, x, y, z, tileTable.getStackInSlot(1), 1.15f, -.225f, .15f, .65f);
renderSlot(tileTable, x, y, z, tileTable.getStackInSlot(2), 1.15f, -.225f, .15f, -.65f);
renderSlot(tileTable, x, y, z, tileTable.getStackInSlot(3), 1.15f, .225f, .15f, .65f);
/*ItemStack result = tileTable.getStackInSlot(0);
if (result != null) {
Block itemBlock = Block.getBlockFromItem(result.getItem());
if (itemBlock != null) {
itemBlock.setBlockBoundsBasedOnState(tile.getWorldObj(), 0, 0, 0);
itemBlock.setBlockBoundsForItemRender();
GL11.glPushMatrix();
GL11.glTranslated(x + .5, y + 1, z + .5);
if (side == 2)
GL11.glRotatef(90, 0, 1, 0);
if (side == 3)
GL11.glRotatef(270, 0, 1, 0);
if (side == 4)
GL11.glRotatef(180, 0, 1, 0);
GL11.glTranslatef(0f, .25f, .5f);
GL11.glScalef(2f, 2f, 2f);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_LIGHTING);
try {
EntityItem itemEnt = new EntityItem(null, 0, 0, 0, result);
itemEnt.hoverStart = 0;
itemRenderer.doRender(itemEnt, 0, 0, 0, 0, 0);
}
catch (Exception e) { }
GL11.glPopMatrix();
}
}
ItemStack materialSide = tileTable.getStackInSlot(1);
if (materialSide != null) {
Block itemBlock = Block.getBlockFromItem(materialSide.getItem());
if (itemBlock != null) {
itemBlock.setBlockBoundsBasedOnState(tile.getWorldObj(), 0, 0, 0);
itemBlock.setBlockBoundsForItemRender();
GL11.glPushMatrix();
GL11.glTranslated(x + .5, y, z + .5);
if (side == 2)
GL11.glRotatef(90, 0, 1, 0);
if (side == 3)
GL11.glRotatef(270, 0, 1, 0);
if (side == 4)
GL11.glRotatef(180, 0, 1, 0);
GL11.glTranslatef(0, 0f, .5f);
GL11.glTranslatef(-.225f, 1.15f, .5f + .15f);
GL11.glScalef(1.15f, 1.15f, 1.15f);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_LIGHTING);
try {
EntityItem itemEnt = new EntityItem(null, 0, 0, 0, materialSide);
itemEnt.hoverStart = 0;
itemRenderer.doRender(itemEnt, 0, 0, 0, 0, 0);
}
catch (Exception e) { }
GL11.glPopMatrix();
}
}*/
}
private void renderSlot (TileEntityFramingTable tileTable, double x, double y, double z, ItemStack item, float scale, float tx, float ty, float tz) {
if (item == null)
return;
Block itemBlock = Block.getBlockFromItem(item.getItem());
if (itemBlock == null)
return;
int meta = tileTable.getBlockMetadata();
int side = meta & 0x07;
itemBlock.setBlockBoundsBasedOnState(tileTable.getWorldObj(), 0, 0, 0);
itemBlock.setBlockBoundsForItemRender();
GL11.glPushMatrix();
GL11.glTranslated(x + .5, y + 1, z + .5);
if (side == 2)
GL11.glRotatef(90, 0, 1, 0);
if (side == 3)
GL11.glRotatef(270, 0, 1, 0);
if (side == 4)
GL11.glRotatef(180, 0, 1, 0);
GL11.glTranslatef(0, 0f, .5f);
GL11.glTranslatef(tx, ty, tz);
GL11.glScalef(scale, scale, scale);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL11.GL_LIGHTING);
try {
EntityItem itemEnt = new EntityItem(null, 0, 0, 0, item);
itemEnt.hoverStart = 0;
itemRenderer.doRender(itemEnt, 0, 0, 0, 0, 0);
}
catch (Exception e) { }
GL11.glPopMatrix();
}
}
@@ -131,6 +131,9 @@ public class CommonFramingRenderer
private void renderFoot (IBlockAccess blockAccess, int x, int y, int z, BlockFramingTable block, IIcon icon, boolean left) {
RenderHelper renderer = RenderHelper.instance;
float oldColor = renderer.state.colorMultYPos;
renderer.state.colorMultYPos = .9f;
for (int i = 0; i < 2; i++)
renderer.state.setUVRotation(i, (renderer.state.rotateTransform + RenderHelperState.ROTATE90) % 4);
@@ -142,6 +145,8 @@ public class CommonFramingRenderer
for (int i = 0; i < 2; i++)
renderer.state.clearUVRotation(i);
renderer.state.colorMultYPos = oldColor;
}
private void renderLegs (IBlockAccess blockAccess, int x, int y, int z, BlockFramingTable block, IIcon icon, boolean left) {
@@ -167,6 +172,9 @@ public class CommonFramingRenderer
private void renderBraces (IBlockAccess blockAccess, int x, int y, int z, BlockFramingTable block, IIcon icon, boolean left) {
RenderHelper renderer = RenderHelper.instance;
float oldColor = renderer.state.colorMultYPos;
renderer.state.colorMultYPos = .85f;
for (int i = 0; i < 2; i++)
renderer.state.setUVRotation(i, renderer.state.rotateTransform);
@@ -183,5 +191,7 @@ public class CommonFramingRenderer
for (int i = 0; i < 2; i++)
renderer.state.clearUVRotation(i);
renderer.state.colorMultYPos = oldColor;
}
}
@@ -2,6 +2,7 @@ package com.jaquadro.minecraft.storagedrawers.core;
import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityDrawersComp;
import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityDrawersStandard;
import com.jaquadro.minecraft.storagedrawers.block.tile.TileEntityFramingTable;
import com.jaquadro.minecraft.storagedrawers.client.renderer.*;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry;
@@ -28,6 +29,7 @@ public class ClientProxy extends CommonProxy
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDrawersStandard.class, new TileEntityDrawersRenderer());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDrawersComp.class, new TileEntityDrawersRenderer());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFramingTable.class, new TileEntityFramingRenderer());
}
@Override