From 22b76a5ef9576ec4df7b8d2b74ee53b4b380af79 Mon Sep 17 00:00:00 2001 From: Justin Aquadro Date: Sat, 6 Sep 2014 15:22:15 -0400 Subject: [PATCH] Indicator work --- .../textures/blocks/indicator_amber.png | Bin 0 -> 397 bytes .../textures/blocks/indicator_off.png | Bin 0 -> 342 bytes .../textures/blocks/indicator_on.png | Bin 0 -> 367 bytes .../textures/items/upgrade_indicator.png | Bin 0 -> 467 bytes .../textures/items/upgrade_template.png | Bin 0 -> 466 bytes .../storagedrawers/block/BlockDrawers.java | 30 +++++++ .../block/tile/TileEntityDrawers.java | 4 + .../client/renderer/DrawersRenderer.java | 75 +++++++++++++++++- .../renderer/TileEntityDrawersRenderer.java | 2 +- 9 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 resources/assets/storagedrawers/textures/blocks/indicator_amber.png create mode 100644 resources/assets/storagedrawers/textures/blocks/indicator_off.png create mode 100644 resources/assets/storagedrawers/textures/blocks/indicator_on.png create mode 100644 resources/assets/storagedrawers/textures/items/upgrade_indicator.png create mode 100644 resources/assets/storagedrawers/textures/items/upgrade_template.png diff --git a/resources/assets/storagedrawers/textures/blocks/indicator_amber.png b/resources/assets/storagedrawers/textures/blocks/indicator_amber.png new file mode 100644 index 0000000000000000000000000000000000000000..42480c20dab0d84decfda2f791df2d53c5a362e0 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`+9j?LCC){ui6xo&c?uz!xv31n zi6shV3c;xb3PuKoCJF|IR>me)#s&(y2BroEZRLl40=2Q1c>21s-{WLsRkJ$ZRHP3S z;w?gxP%{b`t&F|a`oIfAn@azxOjMCHTQDKPtVSu-xRs={;ihj z*Ai71c&4hI6Z+{FP^x~znNdpc-0|;klDG<{#YmfdpB+>9&O(C0Q|qCO#Ciqw+fPsM zH(A_nSu(dF>YVKAb&bJ#2ma|!ooTUqa!Sim_5PWq;w#P^*_phM<21s-{WLsRpRP3Z*K<* zaTa()7Bet#3xP1>rMq>1fPyUPj=qiz3>*8o|0J>k`RhDg978H@C0|KM_;H?r)m%bC zLUICw58rePjtwU^8XQ#pS5WZRJ?sa&*J_1K2F9K8_aEd;bFcq*(6W4Ajp8X*ofCQq ziEfjAo^D`zP_*NS;~V>oNg8oKydz{Jn0!2f{s)LCJt^okUhqPVd&7y!9flqr9tL|V zJ~lnP)hDYl$zW$Tw^)KG`^!W|Lk9`z1FG#h=UyB;#L_>hS|-NDGCI>lHo#K$kF&9? fyUwf>wlG_ zaSO!@5^dWRDo)BRW*6)hiTTcT&Fr#Ify&yG_gd>ePyYU&MaXHdreyxxyORYxH_M0% z9{$AA&15`h?nTSbnsPH0Zq8k{!CpeV=&2ENy-55?gZ8IUv!3qQQRwob#=S=SY*Ead zyoU$o9#_t)U%F#OWUt}L)MN2C798h(bpMjh@xNzs4t`qo==Q8MOTD-lzx0sM)$h9(L|hE^ssB(x(22O2G$PuOM&{>OFVsD+3#^Ou`8IiHg+=t zg*Xd5B8wRqxP?HN@zUM8KR`j2bVpxD28NCO+$G4?1Z86T0*IdJqSo7j_-#MFx4FSY0JGskxKHD{)+ zuoFmV%)AmPoH#*Lkd@o)><#|wQzRBKFMFJ2W^8bm!Dt(EZ19N>@@YWx^6%Ffc6|C^ z^ykON=Emmc=7oBP1WdKxlWgs#(AVGC!ATls9G$1lDIy5pmGczD9Ff}kRJ3!xc00007bV*G` z2i^$+2M!t~SHE-s000SaNLh0L01FZT01FZU(%pXi00004XF*Lt006O%3;baP0003g zNkl|pvcNRzsEIJhiim<0HO<%$*Pyey1S}`Y!^^P$+NHd5A z8}RMhFR+3iKYlQ9aBwixWjKP_AfW15&v1KtBg5-2pTX*o!vJIm6U+r5jUWsHkKeoo zYXD)GAt2Wkv@XL4Ko%GSqzMLKUIBq)Krg_+c4%0@oR4C_sSD5G3QsXSg9j+gi?{$h z49pCqz&3;Y-nHO3TtQ-p4%}61_guto0LV6&vqAobX#xRI;DP`wP_Y_-FAR|7k-dds z07w%^5sXF$5SP5cZNPz3cfhF+6oA5f-0+l$2*_txT|hAa05gA&Jtwd}vj6}907*qo IM6N<$f(fIn?*IS* literal 0 HcmV?d00001 diff --git a/src/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java b/src/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java index 10553bb..3787508 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java +++ b/src/com/jaquadro/minecraft/storagedrawers/block/BlockDrawers.java @@ -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"); } } diff --git a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java index 74aaeb8..20242aa 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java +++ b/src/com/jaquadro/minecraft/storagedrawers/block/tile/TileEntityDrawers.java @@ -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; diff --git a/src/com/jaquadro/minecraft/storagedrawers/client/renderer/DrawersRenderer.java b/src/com/jaquadro/minecraft/storagedrawers/client/renderer/DrawersRenderer.java index 7a33e91..ac7a6ec 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/client/renderer/DrawersRenderer.java +++ b/src/com/jaquadro/minecraft/storagedrawers/client/renderer/DrawersRenderer.java @@ -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; diff --git a/src/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java b/src/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java index 584dfba..8677f95 100644 --- a/src/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java +++ b/src/com/jaquadro/minecraft/storagedrawers/client/renderer/TileEntityDrawersRenderer.java @@ -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; }