Indicator work

This commit is contained in:
Justin Aquadro committed 2014-09-06 15:22:15 -04:00
1 parent eaae3b4490
commit 22b76a5ef9
9 files changed
+109 -2

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

@@ -58,6 +58,13 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
@SideOnly(Side.CLIENT)
private IIcon[] iconOverlayCross;
@SideOnly(Side.CLIENT)
private IIcon iconIndicatorOn;
@SideOnly(Side.CLIENT)
private IIcon iconIndicatorAmber;
@SideOnly(Side.CLIENT)
private IIcon iconIndicatorOff;
public BlockDrawers (String blockName, int drawerCount, boolean halfDepth) {
super(Material.wood);
@@ -399,6 +406,25 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
return getIcon(blockAccess, x, y, z, side, level);
}
@SideOnly(Side.CLIENT)
public IIcon getIndicatorIcon (boolean on) {
return on ? iconIndicatorOn : iconIndicatorAmber;
}
@SideOnly(Side.CLIENT)
public IIcon getIndicatorIcon (int level) {
switch (level) {
case 0:
return iconIndicatorOff;
case 1:
return iconIndicatorAmber;
case 2:
return iconIndicatorOn;
default:
return iconIndicatorOff;
}
}
@SideOnly(Side.CLIENT)
private IIcon getIcon (IBlockAccess blockAccess, int x, int y, int z, int side, int level) {
int meta = blockAccess.getBlockMetadata(x, y, z) % BlockWood.field_150096_a.length;
@@ -466,5 +492,9 @@ public class BlockDrawers extends BlockContainer implements IExtendedBlockClickH
iconOverlayH[i] = register.registerIcon(StorageDrawers.MOD_ID + ":overlay_" + overlays[i] + "_h");
iconOverlayCross[i] = register.registerIcon(StorageDrawers.MOD_ID + ":overlay_" + overlays[i] + "_cross");
}
iconIndicatorOff = register.registerIcon(StorageDrawers.MOD_ID + ":indicator_off");
iconIndicatorAmber = register.registerIcon(StorageDrawers.MOD_ID + ":indicator_amber");
iconIndicatorOn = register.registerIcon(StorageDrawers.MOD_ID + ":indicator_on");
}
}
@@ -162,6 +162,10 @@ public class TileEntityDrawers extends TileEntity implements ISidedInventory
return data[slot].count;
}
public int getItemCapacity (int slot) {
return data[slot].maxCapacity();
}
public int getStackSize (int slot) {
if (data[slot].getItem() == null)
return 0;
@@ -21,6 +21,8 @@ import org.lwjgl.opengl.GL11;
public class DrawersRenderer implements ISimpleBlockRenderingHandler
{
private static final double unit = .0625f;
private ModularBoxRenderer boxRenderer = new ModularBoxRenderer();
@Override
@@ -32,7 +34,6 @@ public class DrawersRenderer implements ISimpleBlockRenderingHandler
}
private void renderInventoryBlock (BlockDrawers block, int metadata, int modelId, RenderBlocks renderer) {
double unit = .0625;
int side = 4;
boxRenderer.setUnit(unit);
@@ -90,9 +91,81 @@ public class DrawersRenderer implements ISimpleBlockRenderingHandler
renderInterior(block, x, y, z, side, renderer);
boxRenderer.setIcon(block.getIndicatorIcon(false));
/*if (block.drawerCount == 2)
boxRenderer.renderExterior(renderer, block, x, y, z, unit * 14, unit * 1, unit * 15, unit * 15, unit * 15, unit * 15.5, 0,
ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_XPOS | ModularBoxRenderer.CUT_ZNEG);
else
boxRenderer.renderExterior(renderer, block, x, y, z, unit * 7, unit * 1, unit * 15, unit * 9, unit * 15, unit * 15.5, 0,
ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_ZNEG);*/
/*if (block.drawerCount == 2) {
boxRenderer.renderExterior(renderer, block, x, y, z, unit * 6, unit * 14, unit * 15, unit * 10, unit * 15, unit * 15.05, 0,
ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_XPOS | ModularBoxRenderer.CUT_XNEG | ModularBoxRenderer.CUT_ZNEG);
boxRenderer.renderExterior(renderer, block, x, y, z, unit * 6, unit * 6, unit * 15, unit * 10, unit * 7, unit * 15.05, 0,
ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_XPOS | ModularBoxRenderer.CUT_XNEG | ModularBoxRenderer.CUT_ZNEG);
}*/
renderHandleIndicator(block, x, y, z, side, renderer);
/*boxRenderer.renderExterior(renderer, block, x, y, z, unit * 14, unit * 14, unit * 15, unit * 15, unit * 15, unit * 16, 0,
ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_XPOS | ModularBoxRenderer.CUT_ZNEG);
if (block.drawerCount == 4)
boxRenderer.renderExterior(renderer, block, x, y, z, unit * 1, unit * 14, unit * 15, unit * 2, unit * 15, unit * 16, 0,
ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_XNEG | ModularBoxRenderer.CUT_ZNEG);*/
return true;
}
//private static double[] handleIndicatorX = new double[] { unit * 6, unit * 10, unit * 3, unit * 4, unit * 11, unit * 12 };
//private static double[] handleIndicatorXN = new double[] { 1 - unit * 6, 1 - unit * 10, 1 - unit * 3, 1 - unit * 4, 1 - unit * 11, 1 - unit * 12 };
//private static double[] handleIndicatorZ = new double[] { unit * 15.05, unit * 15.05, unit * 15.05, unit * 15.05, unit * 15.05, unit * 15.05 };
//private static double[] handleIndicatorZN = new double[] { unit * .95, unit * .95, unit * .95, unit * .95, unit * .96, unit * .95 };
private void renderHandleIndicator (BlockDrawers block, int x, int y, int z, int side, RenderBlocks renderer) {
TileEntityDrawers tile = block.getTileEntity(renderer.blockAccess, x, y, z);
double depth = block.halfDepth ? .5 : 1;
int cut2 = ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_XPOS | ModularBoxRenderer.CUT_XNEG | ModularBoxRenderer.CUT_ZPOS;
int cut3 = ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_XPOS | ModularBoxRenderer.CUT_XNEG | ModularBoxRenderer.CUT_ZNEG;
int cut4 = ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_XPOS | ModularBoxRenderer.CUT_ZNEG | ModularBoxRenderer.CUT_ZPOS;
int cut5 = ModularBoxRenderer.CUT_YPOS | ModularBoxRenderer.CUT_YNEG | ModularBoxRenderer.CUT_XNEG | ModularBoxRenderer.CUT_ZNEG | ModularBoxRenderer.CUT_ZPOS;
if (block.drawerCount == 2) {
int iconIndex0 = (tile.getItemCapacity(0) > 0 && tile.getItemCount(0) == tile.getItemCapacity(0)) ? 2
: (tile.getItemCapacity(0) > 0 && tile.getItemCount(0) / tile.getItemCapacity(0) > .75) ? 1 : 0;
int iconIndex1 = (tile.getItemCapacity(1) > 0 && tile.getItemCount(1) == tile.getItemCapacity(1)) ? 2
: (tile.getItemCapacity(1) > 0 && tile.getItemCount(1) / tile.getItemCapacity(1) > .75) ? 1 : 0;
switch (side) {
case 2:
boxRenderer.setExteriorIcon(block.getIndicatorIcon(iconIndex0));
boxRenderer.renderExterior(renderer, block, x, y, z, 1 - unit * 10, unit * 14, 1 - depth + unit * .95, 1 - unit * 6, unit * 15, 1 - depth + unit * 1, 0, cut2);
boxRenderer.setExteriorIcon(block.getIndicatorIcon(iconIndex1));
boxRenderer.renderExterior(renderer, block, x, y, z, 1 - unit * 10, unit * 6, 1 - depth + unit * .95, 1 - unit * 6, unit * 7, 1 - depth + unit * 1, 0, cut2);
break;
case 3:
boxRenderer.setExteriorIcon(block.getIndicatorIcon(iconIndex0));
boxRenderer.renderExterior(renderer, block, x, y, z, unit * 6, unit * 14, depth - unit * 1, unit * 10, unit * 15, depth - unit * .95, 0, cut3);
boxRenderer.setExteriorIcon(block.getIndicatorIcon(iconIndex1));
boxRenderer.renderExterior(renderer, block, x, y, z, unit * 6, unit * 6, depth - unit * 1, unit * 10, unit * 7, depth - unit * .95, 0, cut3);
break;
case 4:
boxRenderer.setExteriorIcon(block.getIndicatorIcon(iconIndex0));
boxRenderer.renderExterior(renderer, block, x, y, z, 1 - depth + unit * .95, unit * 14, 1 - unit * 10, 1 - depth + unit * 1, unit * 15, 1 - unit * 6, 0, cut4);
boxRenderer.setExteriorIcon(block.getIndicatorIcon(iconIndex1));
boxRenderer.renderExterior(renderer, block, x, y, z, 1 - depth + unit * .95, unit * 6, 1 - unit * 10, 1 - depth + unit * 1, unit * 7, 1 - unit * 6, 0, cut4);
break;
case 5:
boxRenderer.setExteriorIcon(block.getIndicatorIcon(iconIndex0));
boxRenderer.renderExterior(renderer, block, x, y, z, depth - unit * 1, unit * 14, unit * 6, depth - unit * .95, unit * 15, unit * 10, 0, cut5);
boxRenderer.setExteriorIcon(block.getIndicatorIcon(iconIndex1));
boxRenderer.renderExterior(renderer, block, x, y, z, depth - unit * 1, unit * 6, unit * 6, depth - unit * .95, unit * 7, unit * 10, 0, cut5);
break;
}
}
}
private void renderExterior (BlockDrawers block, int x, int y, int z, int side, RenderBlocks renderer) {
double depth = block.halfDepth ? .5 : 1;
double xMin = 0, xMax = 0, zMin = 0, zMax = 0;
@@ -86,7 +86,7 @@ public class TileEntityDrawersRenderer extends TileEntitySpecialRenderer
if (blockType) {
Block itemBlock = Block.getBlockFromItem(itemStack.getItem());
itemBlock.setBlockBoundsForItemRender();
double zDepth = 1 - itemBlock.getBlockBoundsMaxZ();
itemDepth += zDepth * zunit; // zDepth;
}