From 1e89d64a9f50ef79919e183a57ee6c123bea0185 Mon Sep 17 00:00:00 2001 From: Sampsa Date: Fri, 12 Aug 2022 17:49:53 +0300 Subject: [PATCH 1/3] Add transparency button to advanced info panels. --- .../gui/GuiAdvancedInfoPanel.java | 15 ++- .../renderers/model/ModelInfoPanel.java | 114 +++++++++--------- .../TileEntityAdvancedInfoPanel.java | 27 +++++ .../textures/gui/GUIAdvancedInfoPanel.png | Bin 4776 -> 2477 bytes 4 files changed, 96 insertions(+), 60 deletions(-) diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/gui/GuiAdvancedInfoPanel.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/gui/GuiAdvancedInfoPanel.java index c03895c1..33550221 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/gui/GuiAdvancedInfoPanel.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/gui/GuiAdvancedInfoPanel.java @@ -42,6 +42,7 @@ public class GuiAdvancedInfoPanel extends GuiInfoPanel{ private static final int ID_COLORS = 3; private static final int ID_POWER = 4; private static final int ID_SETTINGS = 5; + private static final int ID_TRANSPARENCY = 6; private byte activeTab; private boolean initialized; @@ -84,14 +85,15 @@ protected void initControls() prevCard = card; //labels - buttonList.add(new IconButton(ID_LABELS, guiLeft + 83 , guiTop + 42, 16, 16, TEXTURE_LOCATION, 192-16, getIconLabelsTopOffset(container.panel.getShowLabels()))); + buttonList.add(new IconButton(ID_LABELS, guiLeft + 80 + 18*2 , guiTop + 42 + 18, 16, 16, TEXTURE_LOCATION, 192-16, getIconLabelsTopOffset(container.panel.getShowLabels()))); //slope - buttonList.add(new IconButton(ID_SLOPE, guiLeft + 83 + 17*1, guiTop + 42, 16, 16, TEXTURE_LOCATION, 192, 15)); + buttonList.add(new IconButton(ID_SLOPE, guiLeft + 80 + 18*3, guiTop + 42 + 18, 16, 16, TEXTURE_LOCATION, 192, 15)); //colors - buttonList.add(new IconButton(ID_COLORS, guiLeft + 83 + 17*2, guiTop + 42, 16, 16, TEXTURE_LOCATION, 192, 15 + 16)); + buttonList.add(new IconButton(ID_COLORS, guiLeft + 80 + 18*2, guiTop + 42, 16, 16, TEXTURE_LOCATION, 192, 15 + 16)); //power - buttonList.add(new IconButton(ID_POWER, guiLeft + 83 + 17*3, guiTop + 42, 16, 16, TEXTURE_LOCATION, 192-16, + buttonList.add(new IconButton(ID_POWER, guiLeft + 80 + 18*3, guiTop + 42, 16, 16, TEXTURE_LOCATION, 192-16, getIconPowerTopOffset(((TileEntityAdvancedInfoPanel)container.panel).getPowerMode()))); + buttonList.add(new IconButton(ID_TRANSPARENCY, guiLeft + 80 + 18*4, guiTop + 42 + 18, 16, 16, TEXTURE_LOCATION, 192, 15 + 48)); if (card != null && card.getItem() instanceof IPanelDataSource) { @@ -100,7 +102,7 @@ protected void initControls() if (source instanceof IAdvancedCardSettings) { //settings - buttonList.add(new IconButton(ID_SETTINGS, guiLeft + 83 + 17*4, guiTop + 42, 16, 16, TEXTURE_LOCATION, 192, 15 + 16*2)); + buttonList.add(new IconButton(ID_SETTINGS, guiLeft + 80 + 18*4, guiTop + 42, 16, 16, TEXTURE_LOCATION, 192, 15 + 16*2)); } List settingsList = null; if (card.getItem() instanceof IPanelMultiCard) @@ -230,6 +232,9 @@ protected void actionPerformed(GuiButton button){ GuiPanelSlope slopeGui = new GuiPanelSlope(this, (TileEntityAdvancedInfoPanel)container.panel); mc.displayGuiScreen(slopeGui); break; + case ID_TRANSPARENCY: + ((NetworkManager)IC2.network.get()).initiateClientTileEntityEvent(container.panel, ID_TRANSPARENCY); + break; } } diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/model/ModelInfoPanel.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/model/ModelInfoPanel.java index 1a9a0dd9..95a0dfe7 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/model/ModelInfoPanel.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/model/ModelInfoPanel.java @@ -388,71 +388,75 @@ public void renderScreen(Block block, TileEntityAdvancedInfoPanel panel, double tess.setBrightness(block.getMixedBrightnessForBlock(panel.getWorldObj(), panel.xCoord, panel.yCoord, panel.zCoord)); tess.setColorOpaque_F(0.5F, 0.5F, 0.5F); - drawFacing(facing, panel.getRotation(), screen, panel, block, tess); + + if (panel.getTransparencyMode() == 0) { //Check if face should be transparent + drawFacing(facing, panel.getRotation(), screen, panel, block, tess); + } // tess.draw(); //SIDES - Tessellator.instance.startDrawingQuads(); - renderer.minecraftRB.renderEngine.bindTexture(TEXTURE_LOCATION); - Tessellator.instance.setBrightness(block.getMixedBrightnessForBlock(panel.getWorldObj(), panel.xCoord, panel.yCoord, panel.zCoord)); - Tessellator.instance.setColorOpaque_F(0.5F, 0.5F, 0.5F); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - - int dx = screen.getDx() + 1; - int dy = screen.getDy() + 1; - int dz = screen.getDz() + 1; - - // bottom - if (facing != 0) { - Tessellator.instance.setNormal(0, -1, 0); - addPoint(0, 0, 0); - addPoint(3, dx, 0); - addPoint(2, dx, dz); - addPoint(1, 0, dz); - } + if (panel.getTransparencyMode() == 0) { //Check if block should be transparent + Tessellator.instance.startDrawingQuads(); + renderer.minecraftRB.renderEngine.bindTexture(TEXTURE_LOCATION); + Tessellator.instance.setBrightness(block.getMixedBrightnessForBlock(panel.getWorldObj(), panel.xCoord, panel.yCoord, panel.zCoord)); + Tessellator.instance.setColorOpaque_F(0.5F, 0.5F, 0.5F); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + int dx = screen.getDx() + 1; + int dy = screen.getDy() + 1; + int dz = screen.getDz() + 1; + + // bottom + if (facing != 0) { + Tessellator.instance.setNormal(0, -1, 0); + addPoint(0, 0, 0); + addPoint(3, dx, 0); + addPoint(2, dx, dz); + addPoint(1, 0, dz); + } - if (facing != 1) { - Tessellator.instance.setNormal(0, 1, 0); - addPoint(4, 0, 0); - addPoint(5, dz, 0); - addPoint(6, dz, dx); - addPoint(7, 0, dx); - } + if (facing != 1) { + Tessellator.instance.setNormal(0, 1, 0); + addPoint(4, 0, 0); + addPoint(5, dz, 0); + addPoint(6, dz, dx); + addPoint(7, 0, dx); + } - if (facing != 2) { - Tessellator.instance.setNormal(0, 0, -1); - addPoint(0, 0, 0); - addPoint(4, dy, 0); - addPoint(7, dy, dx); - addPoint(3, 0, dx); - } + if (facing != 2) { + Tessellator.instance.setNormal(0, 0, -1); + addPoint(0, 0, 0); + addPoint(4, dy, 0); + addPoint(7, dy, dx); + addPoint(3, 0, dx); + } - if (facing != 3) { - Tessellator.instance.setNormal(0, 0, 1); - addPoint(6, 0, 0); - addPoint(5, dx, 0); - addPoint(1, dx, dy); - addPoint(2, 0, dy); - } + if (facing != 3) { + Tessellator.instance.setNormal(0, 0, 1); + addPoint(6, 0, 0); + addPoint(5, dx, 0); + addPoint(1, dx, dy); + addPoint(2, 0, dy); + } - if (facing != 4) { - Tessellator.instance.setNormal(-1, 0, 0); - addPoint(5, 0, 0); - addPoint(4, dz, 0); - addPoint(0, dz, dy); - addPoint(1, 0, dy); - } + if (facing != 4) { + Tessellator.instance.setNormal(-1, 0, 0); + addPoint(5, 0, 0); + addPoint(4, dz, 0); + addPoint(0, dz, dy); + addPoint(1, 0, dy); + } - if (facing != 5) { - Tessellator.instance.setNormal(1, 0, 0); - addPoint(2, 0, 0); - addPoint(3, dz, 0); - addPoint(7, dz, dy); - addPoint(6, 0, dy); + if (facing != 5) { + Tessellator.instance.setNormal(1, 0, 0); + addPoint(2, 0, 0); + addPoint(3, dz, 0); + addPoint(7, dz, dy); + addPoint(6, 0, dy); + } + Tessellator.instance.draw(); } - Tessellator.instance.draw(); - //RETURN TO MC DRAWING Tessellator.instance.startDrawingQuads(); renderer.minecraftRB.renderEngine.bindTexture(TEXTURE_LOCATION); diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityAdvancedInfoPanel.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityAdvancedInfoPanel.java index 92f686a7..76451cad 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityAdvancedInfoPanel.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityAdvancedInfoPanel.java @@ -18,6 +18,9 @@ public class TileEntityAdvancedInfoPanel extends TileEntityInfoPanel { private byte prevPowerMode; public byte powerMode; + private byte prevtransparencyMode; + public byte transparencyMode; + private byte prevThickness; public byte thickness; @@ -40,6 +43,7 @@ public class TileEntityAdvancedInfoPanel extends TileEntityInfoPanel { public static final int POWER_INVERTED = 1; public static final int POWER_ON = 2; public static final int POWER_OFF = 3; + public static final int TRANSPARENCY_CHANGED = 6; public static final int OFFSET_THICKNESS = 100; public static final int OFFSET_ROTATE_HOR = 200; @@ -68,6 +72,19 @@ public void setPowerMode(byte p) { prevPowerMode = powerMode; } + public byte getTransparencyMode() { + return transparencyMode; + } + + public void setTransparencyMode(byte b) { + if (b == 2) {b = 0;} + transparencyMode = b; + if (prevtransparencyMode != b) { + IC2.network.get().updateTileEntityField(this, "transparencyMode"); + } + prevtransparencyMode = transparencyMode; + } + public void setThickness(byte p) { thickness = p; if (prevThickness != p) { @@ -110,6 +127,7 @@ public List getNetworkedFields() { list.add("card2"); list.add("card3"); list.add("powerMode"); + list.add("transparencyMode"); list.add("thickness"); list.add("rotateHor"); list.add("rotateVert"); @@ -134,6 +152,9 @@ public void onNetworkUpdate(String field) { } else if (field.equals("thickness") || field.equals("rotateHor") || field.equals("rotateVert")) { worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } else if (field.equals("transparencyMode")) { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + worldObj.func_147451_t(xCoord, yCoord, zCoord); } } @@ -194,6 +215,7 @@ protected void saveDisplaySettings(NBTTagCompound nbttagcompound) { nbttagcompound.setByte("rotateVert", rotateVert); nbttagcompound.setByte("thickness", thickness); nbttagcompound.setByte("powerMode", powerMode); + nbttagcompound.setByte("transparencyMode", transparencyMode); } @Override @@ -205,6 +227,7 @@ protected void readDisplaySettings(NBTTagCompound nbttagcompound) { rotateVert = nbttagcompound.getByte("rotateVert"); thickness = nbttagcompound.getByte("thickness"); powerMode = nbttagcompound.getByte("powerMode"); + transparencyMode = nbttagcompound.getByte("transparencyMode"); } @Override @@ -259,6 +282,10 @@ public void onNetworkEvent(EntityPlayer entityplayer, int i) { case POWER_REDSTONE: case POWER_INVERTED: setPowerMode((byte) i); + break; + case TRANSPARENCY_CHANGED: + setTransparencyMode((byte) (getTransparencyMode() + 1)); + break; } } else if (i >= OFFSET_THICKNESS && i < OFFSET_THICKNESS + 100) { i -= OFFSET_THICKNESS; diff --git a/src/main/resources/assets/nuclearcontrol/textures/gui/GUIAdvancedInfoPanel.png b/src/main/resources/assets/nuclearcontrol/textures/gui/GUIAdvancedInfoPanel.png index 5a8163c57cc681f4394e72946416a78b4ce2e097..c446686a1e1ce5d2de24288b48ca603c4c429ab3 100644 GIT binary patch literal 2477 zcmbVO2UJs88onTrm>q1Vd1V5<=)LB!PK2>(1;PXV0E}=iGDe|KGoS_j~Vt=f&FD9FasT zq5%Ms$BrI44FCi$A%GHtr*k**@N3r1(?=`;^_?;sHbmVIo;(OZN%A_u_ej{5xOUX# zCIA~6*9O$$n|B%ZSspud&>_%`%d}1EWNZ{4+NRQ&N{nVq&$i&F+YBlw) zJ|RM~A^~@_WMnPgj#?{R#)^n^HyCCY0CtYe$No0L2kNs{M&^|3-7a!)IR8UDss!p%*raqu;#RU>AFfZZJqwwkp5)u0!9X?Vo1-= zjF#Af@e$*U$4f3L91h2MiT+MacE%Ar4_~cwxqT%rJ0y_5Kv3q|CVANZh6M^7Jpqb?uS-&x>CEwizz*5C>LCiYZ3lS~A6E?# zStro#l}w*$Ga`G}(pf7k+;nl0Rqy{wDy*NoslH`3~=*|BMbPR zLK!T7KETV(<|G`?%nm8#cWY7j2Hc*wnxqx$#B2aHjHP%1W_BHf()b3ibV$SG=&VA^Z@F`l^ARdXAWOPLMj_WYO<~I6EL_X~4wgJVaEhut9CIZF} zWaYq}G(dj!^@Jdnw-w}f2)AMvmBRUBq%$VtWBHTBZkRGtCg@%CdQKn;ZA2S*JYIls zY|OL9+qY*Euz{Rw7fJ!YqGnj+bu)_GwSU;@mWFbA7uPaN^1&>t10}v~(o4Rj0$YJiM^Am-gemVrX+iU7Jej}gyx@dj z{QSLcDgUdOY9$Vnt9}yeoh-uJky3M>7=ljdIlDrb~II9>u%(!C2^H+grUx6*x! zfa=n0U4LV<`W|!?YhSD9E2SGFp%6E3oKp)75Cr2S%Kqh4``g+o7T`W6oHVmM&%wuE+N&Xb zNySeRI9I-q!7A5|;6$gwwm^E_?|?~JU=|`2gCLh=BJLcnDsl$9-YRSwKvM}yeJ4dfgBMMV&2uPI%35&g)YPO-t4Zg6Dx>^;hot!?6HpxLpv@XYQEC%Jzz3-ckpbJ z(kBnBUb+LH-S!A~b&UINgGw1nC)Tka-D;&>{8IixaN* z{BbIOloGYXz%6-Yc&A_l%zeDYeUwgNU&=rph;a=ba>TKo6*MMy5+jM7lOq}Af_L;q z@DsgNrcORAr2qZuzFgqY6be4W674;*vq3o%p_lv6p8T+dWFadkd;!vKdx5uvo>CC@ z19geNA4xGiHF|1_`*?{j0iMbuSw1u$)8B>ct49Ax<4Ur{$>O(gRS5tV^xu{IPf=@I zP2Nw4E8)YIu%Qx$~85SuY#x%nH_*J3HbL@&H z_eIW;v?p&-hIdI(w7z78TS+YmSUI+PZ>BI!W;F1e$p6)@+Mp=y2|f)j*=4(U)8jCO zmnL)dJK_3_QdI+l3fyITdt32-zP<*1`e(8K%GkF~xOo=x_IG#Fx2NgBCG#IljI<|U zXB9G~Men_iRQvLA{VUCE2hzgf1lps!zlIG{c*$|_bDsj37B`7>@s0lKS-U9TYP0>X zU*~TKE*QCT|Baxa;Ts5wwXZC-nZM!LpF1}_{7jn)DN_@`L{?UoQGRh~T=-U|F`cln l+j3e2{#E*4AC(dne$4;yU>ISbR9kaGMM76|4{0hdCN5=pF literal 4776 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 From 99226bda85e6e49e91ce9f64ccf473c3f1b545fa Mon Sep 17 00:00:00 2001 From: Sampsa Date: Fri, 12 Aug 2022 23:31:45 +0300 Subject: [PATCH 2/3] Fix extender blocks rendering wrong at chunk borders --- .../renderers/MainBlockRenderer.java | 5 ++--- .../TileEntityInfoPanelExtender.java | 21 ++++++++++++++++++- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/MainBlockRenderer.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/MainBlockRenderer.java index da8ad3e7..42f5d4e5 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/MainBlockRenderer.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/MainBlockRenderer.java @@ -116,10 +116,9 @@ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, renderer.renderStandardBlock(block, x, y, z); } else if (tileEntity instanceof TileEntityAdvancedInfoPanelExtender) { TileEntityAdvancedInfoPanelExtender advancedExtender = (TileEntityAdvancedInfoPanelExtender) tileEntity; - if (advancedExtender.getScreen() == null - || advancedExtender.getScreen().getCore( - advancedExtender.getWorldObj()) == null) + if (advancedExtender.getNBTLoaded() && !advancedExtender.getPartOfScreen()) { renderer.renderStandardBlock(block, x, y, z); + } } else { renderer.renderStandardBlock(block, x, y, z); } diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanelExtender.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanelExtender.java index 93205b2f..bf9d4047 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanelExtender.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanelExtender.java @@ -33,7 +33,7 @@ public class TileEntityInfoPanelExtender extends TileEntity implements private short prevFacing; public short facing; private boolean partOfScreen; - + private boolean NBTLoaded; private int coreX; private int coreY; private int coreZ; @@ -43,6 +43,14 @@ public short getFacing() { return (short) Facing.oppositeSide[facing]; } + public boolean getPartOfScreen() { + return partOfScreen; + } + + public boolean getNBTLoaded() { + return NBTLoaded; + } + @Override public void setFacing(short f) { setSide((short) Facing.oppositeSide[f]); @@ -78,6 +86,7 @@ public TileEntityInfoPanelExtender() { prevFacing = 0; screen = null; partOfScreen = false; + NBTLoaded = false; } @Override @@ -102,6 +111,12 @@ protected void initData() { init = true; } + public void setCoreCoordinates(int x, int y, int z) { + coreX = x; + coreY = y; + coreZ = z; + } + @Override public void updateEntity() { if (!init) { @@ -120,6 +135,7 @@ public void readFromNBT(NBTTagCompound nbttagcompound) { coreY = nbttagcompound.getInteger("coreY"); coreZ = nbttagcompound.getInteger("coreZ"); } + NBTLoaded = true; } @Override @@ -174,6 +190,9 @@ public int modifyTextureIndex(int texture) { public void setScreen(Screen screen) { this.screen = screen; partOfScreen = screen != null; + if (partOfScreen) { + setCoreCoordinates(screen.getCore(worldObj).xCoord, screen.getCore(worldObj).yCoord, screen.getCore(worldObj).zCoord); + } } @Override From e7917daae14a6be2de55d76fe7ab8a88083e12f8 Mon Sep 17 00:00:00 2001 From: Sampsa Date: Sat, 13 Aug 2022 03:12:43 +0300 Subject: [PATCH 3/3] Add text rotation buttons to advanced info panel --- .../gui/GuiAdvancedInfoPanel.java | 13 ++++++++ .../TileEntityInfoPanelRenderer.java | 7 +++++ .../TileEntityAdvancedInfoPanel.java | 29 ++++++++++++++++++ .../tileentities/TileEntityInfoPanel.java | 4 +++ .../textures/gui/GUIAdvancedInfoPanel.png | Bin 2477 -> 2587 bytes 5 files changed, 53 insertions(+) diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/gui/GuiAdvancedInfoPanel.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/gui/GuiAdvancedInfoPanel.java index 33550221..ec5fc327 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/gui/GuiAdvancedInfoPanel.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/gui/GuiAdvancedInfoPanel.java @@ -43,6 +43,8 @@ public class GuiAdvancedInfoPanel extends GuiInfoPanel{ private static final int ID_POWER = 4; private static final int ID_SETTINGS = 5; private static final int ID_TRANSPARENCY = 6; + private static final int ID_ROTATELEFT = 7; + private static final int ID_ROTATERIGHT = 8; private byte activeTab; private boolean initialized; @@ -93,7 +95,12 @@ protected void initControls() //power buttonList.add(new IconButton(ID_POWER, guiLeft + 80 + 18*3, guiTop + 42, 16, 16, TEXTURE_LOCATION, 192-16, getIconPowerTopOffset(((TileEntityAdvancedInfoPanel)container.panel).getPowerMode()))); + //transparency buttonList.add(new IconButton(ID_TRANSPARENCY, guiLeft + 80 + 18*4, guiTop + 42 + 18, 16, 16, TEXTURE_LOCATION, 192, 15 + 48)); + //rotate left + buttonList.add(new IconButton(ID_ROTATELEFT, guiLeft + 80 + 18*1, guiTop + 42, 16, 16, TEXTURE_LOCATION, 192, 15 + 64)); + //rotate right + buttonList.add(new IconButton(ID_ROTATERIGHT, guiLeft + 80 + 18*1, guiTop + 42 + 18, 16, 16, TEXTURE_LOCATION, 192, 15 + 80)); if (card != null && card.getItem() instanceof IPanelDataSource) { @@ -235,6 +242,12 @@ protected void actionPerformed(GuiButton button){ case ID_TRANSPARENCY: ((NetworkManager)IC2.network.get()).initiateClientTileEntityEvent(container.panel, ID_TRANSPARENCY); break; + case ID_ROTATELEFT: + ((NetworkManager)IC2.network.get()).initiateClientTileEntityEvent(container.panel, ID_ROTATELEFT); + break; + case ID_ROTATERIGHT: + ((NetworkManager)IC2.network.get()).initiateClientTileEntityEvent(container.panel, ID_ROTATERIGHT); + break; } } diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/TileEntityInfoPanelRenderer.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/TileEntityInfoPanelRenderer.java index 8ed7d801..adf754bf 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/TileEntityInfoPanelRenderer.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/renderers/TileEntityInfoPanelRenderer.java @@ -239,6 +239,8 @@ public void renderTileEntityAt(TileEntity tileEntity, double x, double y, } GL11.glRotatef((float) -angleVert, 1, 0, 0); GL11.glRotatef((float) angleHor, 0, 1, 0); + //Do text rotation here + GL11.glRotatef((float) panel.getTextRotation() * 90.0f, 0, 0, 1); FontRenderer fontRenderer = this.func_147498_b(); int maxWidth = 1; @@ -253,6 +255,11 @@ public void renderTileEntityAt(TileEntity tileEntity, double x, double y, int lineHeight = fontRenderer.FONT_HEIGHT + 2; int requiredHeight = lineHeight * joinedData.size(); + if (panel.getTextRotation() == 1 || panel.getTextRotation() == 3) { + float tm = displayWidth; + displayWidth = displayHeight; + displayHeight = tm; + } float scaleX = displayWidth / maxWidth; float scaleY = displayHeight / requiredHeight; float scale = Math.min(scaleX, scaleY); diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityAdvancedInfoPanel.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityAdvancedInfoPanel.java index 76451cad..c38f9006 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityAdvancedInfoPanel.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityAdvancedInfoPanel.java @@ -30,6 +30,9 @@ public class TileEntityAdvancedInfoPanel extends TileEntityInfoPanel { private byte prevRotateVert; public byte rotateVert; + private byte prevTextRotation; + public byte textRotation; + public ItemStack card2; public ItemStack card3; @@ -44,6 +47,8 @@ public class TileEntityAdvancedInfoPanel extends TileEntityInfoPanel { public static final int POWER_ON = 2; public static final int POWER_OFF = 3; public static final int TRANSPARENCY_CHANGED = 6; + public static final int ROTATE_LEFT = 7; + public static final int ROTATE_RIGHT = 8; public static final int OFFSET_THICKNESS = 100; public static final int OFFSET_ROTATE_HOR = 200; @@ -84,6 +89,19 @@ public void setTransparencyMode(byte b) { } prevtransparencyMode = transparencyMode; } + @Override + public byte getTextRotation() { + return textRotation; + } + + public void setTextRotation(byte r) { + if (r == -1) {r = 3;} else if (r == 4) {r = 0;} + textRotation = r; + if (prevTextRotation != r) { + IC2.network.get().updateTileEntityField(this, "textRotation"); + } + prevTextRotation = textRotation; + } public void setThickness(byte p) { thickness = p; @@ -131,6 +149,7 @@ public List getNetworkedFields() { list.add("thickness"); list.add("rotateHor"); list.add("rotateVert"); + list.add("textRotation"); return list; } @@ -155,6 +174,8 @@ public void onNetworkUpdate(String field) { } else if (field.equals("transparencyMode")) { worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); worldObj.func_147451_t(xCoord, yCoord, zCoord); + } else if (field.equals("textRotation")) { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } } @@ -216,6 +237,7 @@ protected void saveDisplaySettings(NBTTagCompound nbttagcompound) { nbttagcompound.setByte("thickness", thickness); nbttagcompound.setByte("powerMode", powerMode); nbttagcompound.setByte("transparencyMode", transparencyMode); + nbttagcompound.setByte("textRotation", transparencyMode); } @Override @@ -228,6 +250,7 @@ protected void readDisplaySettings(NBTTagCompound nbttagcompound) { thickness = nbttagcompound.getByte("thickness"); powerMode = nbttagcompound.getByte("powerMode"); transparencyMode = nbttagcompound.getByte("transparencyMode"); + textRotation = nbttagcompound.getByte("textRotation"); } @Override @@ -286,6 +309,12 @@ public void onNetworkEvent(EntityPlayer entityplayer, int i) { case TRANSPARENCY_CHANGED: setTransparencyMode((byte) (getTransparencyMode() + 1)); break; + case ROTATE_LEFT: + setTextRotation((byte) (textRotation - 1)); + break; + case ROTATE_RIGHT: + setTextRotation((byte) (textRotation + 1)); + break; } } else if (i >= OFFSET_THICKNESS && i < OFFSET_THICKNESS + 100) { i -= OFFSET_THICKNESS; diff --git a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanel.java b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanel.java index 95204783..f1fbac9b 100644 --- a/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanel.java +++ b/src/main/java/shedar/mods/ic2/nuclearcontrol/tileentities/TileEntityInfoPanel.java @@ -161,6 +161,10 @@ public boolean getColored() { return colored; } + public byte getTextRotation() { + return 0; + } + public void setIsWeb(boolean c) { isWeb = c; if (prevIsWeb != c) { diff --git a/src/main/resources/assets/nuclearcontrol/textures/gui/GUIAdvancedInfoPanel.png b/src/main/resources/assets/nuclearcontrol/textures/gui/GUIAdvancedInfoPanel.png index c446686a1e1ce5d2de24288b48ca603c4c429ab3..03a8bef4ab2ecb48f3ceb34905c0a761e3308dfa 100644 GIT binary patch delta 2271 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