brandon3055 Posted July 24, 2014 Share Posted July 24, 2014 I have two questions involving rendering. 1. Is there a way to prevent a blocks texture from rendering based on its state. Normally when i use a custom model for a tile i would use. @Override public int getRenderType() { return -1; } But what i need is something like @Override public int getRenderType(int metadata) { if (metadata == 1) return -1; else super.getRenderType(int metadata) } Is there a way to do this? 2. How can i make a TESR render if the block the tile belongs to is not in the players FOV? I know this is possible because beacons do it (when you look up the beam dose not disappear) I would check the beacon code but for some reason ether a bug in the forge version im using or a problem with my dev environment i cant look at a lot of the minecraft src code. Quote I am the author of Draconic Evolution Link to comment Share on other sites More sharing options...
brandon3055 Posted July 24, 2014 Author Share Posted July 24, 2014 ok thats not a problem i will just use two different blocks. but what about my second question? Quote I am the author of Draconic Evolution Link to comment Share on other sites More sharing options...
brandon3055 Posted July 24, 2014 Author Share Posted July 24, 2014 Thank You! Quote I am the author of Draconic Evolution Link to comment Share on other sites More sharing options...
brandon3055 Posted July 26, 2014 Author Share Posted July 26, 2014 I have two questions involving rendering. 1. Is there a way to prevent a blocks texture from rendering based on its state. Normally when i use a custom model for a tile i would use. @Override public int getRenderType() { return -1; } But what i need is something like @Override public int getRenderType(int metadata) { if (metadata == 1) return -1; else super.getRenderType(int metadata) } Is there a way to do this? 2. How can i make a TESR render if the block the tile belongs to is not in the players FOV? I know this is possible because beacons do it (when you look up the beam dose not disappear) I would check the beacon code but for some reason ether a bug in the forge version im using or a problem with my dev environment i cant look at a lot of the minecraft src code. There is no way to do this. You have to either render your whole block manually, or not. All metadata distinguishing has to be done in your renderer. Decided to reopen this thread because it turns out there is actually a way to do this and it may prove useful to some people. It uses "shouldSideBeRendered" in the block class which gives you the world the x, y, z coords of the adjacent block and the side of the block the adjacent block is on. if you return false the side of the block wont be rendered (this is called for every side of the block being rendered) With that information you can use ForgeDirection to get the coords of the block being rendered which allows you to get the block metadata or TileEntity The following is an example of how to use this to prevent a block from rendering if its metadata == 1. @Override @SideOnly(Side.CLIENT) public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { int meta = world.getBlockMetadata(x - ForgeDirection.getOrientation(side).offsetX, y - ForgeDirection.getOrientation(side).offsetY, z - ForgeDirection.getOrientation(side).offsetZ) if (meta == 1) return false; else return super.shouldSideBeRendered(world, x, y, z, side); } If there is a problem with this please let me know but so far it seems to work just fine in my tests. Quote I am the author of Draconic Evolution Link to comment Share on other sites More sharing options...
Recommended Posts
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.