Posted June 30, 201312 yr Hi all, I'm hoping you can help me overcome a couple of issues I'm struggling with. I'm attempting to create Girder/Frame blocks that will support the attachment of independant panels to any of their 6 available sides. So far I have a Girder placeholder: http://danielgovier.com/minecraft/2013/06/bare_girder.jpg[/img] And I've made a couple of panels for it (additional models under my renderer): http://danielgovier.com/minecraft/2013/06/girder_panels.jpg[/img] And I've got as far as the Girder storing the blockID of the panel you right clicked it with (and which side was clicked): http://danielgovier.com/minecraft/2013/06/girder_nbt.jpg[/img] But... I cannot figure out how to check the stored NBT data from within the TileEntityRenderer class. I need to only show panels when the NBT data for that side is something other than 0. I also need to use the same data to apply the correct panel texture. Here's my code... which is a bit of a mess as I'm still learning Java: BlockGirder http://paste.minecraftforge.net/view/9b2231e0 TileEntityGirder http://paste.minecraftforge.net/view/dbb8eb68 TileEntityGirderRenderer http://paste.minecraftforge.net/view/fab5a3e3 BlockGirderModel http://paste.minecraftforge.net/view/5e4e64ef BlockGirderPanel0Model http://paste.minecraftforge.net/view/0561f960 Am I over complicating this? Is there an easier way of achieving 6 unique faces per block? Any help and/or advice greatly appreciated! Thanks.
June 30, 201312 yr Author Self bump and additional question... My NBT data gets updated when I right click the block. Considering I want the TileEntity model to change when the block is right clicked, is there a straightforward way of forcing the block to re-render itself? Does that make sense?
June 30, 201312 yr Self bump and additional question... My NBT data gets updated when I right click the block. Considering I want the TileEntity model to change when the block is right clicked, is there a straightforward way of forcing the block to re-render itself? Does that make sense? Yes. The first argument in TESR.renderTileEntityAt() is the TE to be rendered. So instead of creating side* fields in your TESR and using if (this.side0 == 0){ ... this.panel0.render((Entity)null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); you can just use if (te.side0 == 0){ ... this.panel0.render((Entity)null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); Note: you will have to cast your TE first. BEWARE OF GOD --- Co-author of Pentachoron Labs' SBFP Tech.
July 3, 201312 yr Author Just to clarify, what do you mean by "cast your TE first"? (I'm noobish at Java) If I try to check the value of "te.side0" it throws an error, because "te" isn't defined in TileEntity.java. Sorry if I'm missing something obvious
July 4, 201312 yr Author Ah! Now I understand. This works: public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale) { TileEntityGirder tegirder = (TileEntityGirder) te; I can now access the int tegirder.side0 etc from my TESR.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.