mirror of
https://github.com/GTNewHorizons/StorageDrawers.git
synced 2026-10-26 14:24:33 +00:00
Pretty table renders pretty blocks
This commit is contained in:
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;
|
||||
|
||||
+177
@@ -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();
|
||||
}
|
||||
}
|
||||
+10
@@ -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
|
||||
|
||||
Reference in new issue
Block a user