Posted January 24, 201411 yr Hi guys, it's me again. I have a blocks that has one asphalt texture and it says here. In my renderer I "stick" some texture on it's top face, but they don't render and by the way how can I make them able to rotate only themselves, not touching the base texture? Here's the code: RenderBlocksOfAsphalt_Yellow_0 package trafficStuffMod.client; import org.lwjgl.opengl.GL11; import trafficStuffMod.common.*; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class RenderBlocksOfAsphalt_Yellow_0 implements ISimpleBlockRenderingHandler { public static int blocksOfAsphalt_Yellow_0_renderID; public RenderBlocksOfAsphalt_Yellow_0() { RenderBlocksOfAsphalt_Yellow_0.blocksOfAsphalt_Yellow_0_renderID = RenderingRegistry.getNextAvailableRenderId(); } @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderBlocks) { /** Tessellator tessellator = Tessellator.instance; GL11.glTranslatef(-0.5F, -0.5F, -0.5F); tessellator.startDrawingQuads(); renderBlocksOfAsphalt_Yellow_0(0, 0, 0, renderBlocks); tessellator.draw(); GL11.glTranslatef(0.5F, 0.5F, 0.5F); */ } @Override public boolean renderWorldBlock(IBlockAccess IBlockAccess, int X, int Y, int Z, Block block, int modelID, RenderBlocks renderBlocks) { Tessellator tessellator = Tessellator.instance; TileEntityBlocksOfAsphalt_Yellow_0 BOA_Yellow_0 = (TileEntityBlocksOfAsphalt_Yellow_0) IBlockAccess.getBlockTileEntity(X, Y, Z); BlocksOfAsphalt_Yellow_0 blocksOfAsphalt_Yellow_0 = (BlocksOfAsphalt_Yellow_0) TrafficStuffMod.blocksOfAsphalt_Yellow_0; int subtype = BOA_Yellow_0.getSubtype(); int age = BOA_Yellow_0.getAge(); switch (subtype) { case 1: renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_1); renderBlocks.uvRotateTop = 0; break; case 2: renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_2); renderBlocks.uvRotateTop = 0; break; case 3: renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_1); renderBlocks.uvRotateTop = 1; break; case 4: renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_2); renderBlocks.uvRotateTop = 1; break; case 5: renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_1); renderBlocks.uvRotateTop = 3; break; case 6: renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_2); renderBlocks.uvRotateTop = 3; break; case 7: renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_1); renderBlocks.uvRotateTop = 2; break; case 8: renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_2); renderBlocks.uvRotateTop = 2; break; } boolean flag = renderBlocks.renderStandardBlock(blocksOfAsphalt_Yellow_0, X, Y, Z); renderBlocks.uvRotateSouth = 0; renderBlocks.uvRotateEast = 0; renderBlocks.uvRotateWest = 0; renderBlocks.uvRotateNorth = 0; renderBlocks.uvRotateTop = 0; renderBlocks.uvRotateBottom = 0; return flag; } @Override public boolean shouldRender3DInInventory() { return true; } @Override public int getRenderId() { return ClientProxy.BOA_Yellow_0_renderID; } private void renderBlocksOfAsphalt_Yellow_0(int X, int Y, int Z, RenderBlocks renderBlocks) { } }
January 24, 201411 yr Author Textures do rotate, if they are block's base texture, but why don't these texture I've given render on top of the block? EDIT: Wait sorry, my bad. Textures now do stick, but how do I rotate only them?
January 24, 201411 yr Hi This link might help. http://greyminecraftcoder.blogspot.com.au/p/list-of-topics.html See the Block Rendering sections and especially http://greyminecraftcoder.blogspot.com.au/2013/07/rendering-standard-blocks-cubes.html and http://greyminecraftcoder.blogspot.com.au/2013/07/rendering-non-standard-blocks.html -TGG
January 25, 201411 yr Author Thanks. Now the textures I wanted to stick on the block really do stick, but how do I rotate them NEW CODE: RenderBlocksOfAsphalt_Yellow_0 package trafficStuffMod.client; import org.lwjgl.opengl.GL11; import trafficStuffMod.common.*; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class RenderBlocksOfAsphalt_Yellow_0 implements ISimpleBlockRenderingHandler { public static int blocksOfAsphalt_Yellow_0_renderID; public RenderBlocksOfAsphalt_Yellow_0() { RenderBlocksOfAsphalt_Yellow_0.blocksOfAsphalt_Yellow_0_renderID = RenderingRegistry.getNextAvailableRenderId(); } @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderBlocks) { /** Tessellator tessellator = Tessellator.instance; GL11.glTranslatef(-0.5F, -0.5F, -0.5F); tessellator.startDrawingQuads(); renderBlocksOfAsphalt_Yellow_0(0, 0, 0, renderBlocks); tessellator.draw(); GL11.glTranslatef(0.5F, 0.5F, 0.5F); */ } @Override public boolean renderWorldBlock(IBlockAccess IBlockAccess, int X, int Y, int Z, Block block, int modelID, RenderBlocks renderBlocks) { Tessellator tessellator = Tessellator.instance; TileEntityBlocksOfAsphalt_Yellow_0 BOA_Yellow_0 = (TileEntityBlocksOfAsphalt_Yellow_0) IBlockAccess.getBlockTileEntity(X, Y, Z); BlocksOfAsphalt_Yellow_0 blocksOfAsphalt_Yellow_0 = (BlocksOfAsphalt_Yellow_0) TrafficStuffMod.blocksOfAsphalt_Yellow_0; int subtype = BOA_Yellow_0.getSubtype(); int age = BOA_Yellow_0.getAge(); double D = 0.000000000000001D; int l = blocksOfAsphalt_Yellow_0.getMixedBrightnessForBlock(IBlockAccess, X, Y, Z); renderBlocks.setRenderBounds(0.0D + D, 0.0D + D, 0.0D + D, 1.0D - D, 1.0D - D, 1.0D - D); boolean flag = renderBlocks.renderStandardBlock(blocksOfAsphalt_Yellow_0, X, Y, Z); renderBlocks.setRenderBounds(0.0D, 0.0D, 0.0D, 1.0D, 1.0D, 1.0D); tessellator.setBrightness(l); renderBlocks.renderStandardBlockWithColorMultiplier(blocksOfAsphalt_Yellow_0, X, Y, Z, l, l, l); if (subtype == 1) { renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_1); renderBlocks.uvRotateTop = 0; } if (subtype == 2) { renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_2); renderBlocks.uvRotateTop = 0; } if (subtype == 3) { renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_1); renderBlocks.uvRotateTop = 1; } if (subtype == 4) { renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_2); renderBlocks.uvRotateTop = 1; } if (subtype == 5) { renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_1); renderBlocks.uvRotateTop = 3; } if (subtype == 6) { renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_2); renderBlocks.uvRotateTop = 3; } if (subtype == 7) { renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_1); renderBlocks.uvRotateTop = 2; } if (subtype == { renderBlocks.renderFaceYPos(blocksOfAsphalt_Yellow_0, X, Y, Z, BlocksOfAsphalt_Yellow_0.AY_2); renderBlocks.uvRotateTop = 2; } renderBlocks.uvRotateSouth = 0; renderBlocks.uvRotateEast = 0; renderBlocks.uvRotateWest = 0; renderBlocks.uvRotateNorth = 0; renderBlocks.uvRotateTop = 0; renderBlocks.uvRotateBottom = 0; return flag; } @Override public boolean shouldRender3DInInventory() { return true; } @Override public int getRenderId() { return ClientProxy.BOA_Yellow_0_renderID; } private void renderBlocksOfAsphalt_Yellow_0(int X, int Y, int Z, RenderBlocks renderBlocks) { } }
January 26, 201411 yr Hi You need to put renderBlocks.uvRotateTop before the call to renderFaceYPos, not after it. -TGG
January 26, 201411 yr Author Thanks! It works now!! But is still didn't figure out the rendering for the inventory. I did use tutorials from greyminecraftcoder (you sent me links for his tutorials) but it still doesn't work for me. So... help?
January 26, 201411 yr Hi If you want your item to be rendered in the inventory as a 3D block using the ISBRH, you should define it as an ItemBlock. so for example /* This is the item that corresponds to BlockPyramid. */ public class ItemBlockPyramid extends ItemBlock { public ItemBlockPyramid(int id) { super(id); this.setMaxStackSize(64); this.setCreativeTab(CreativeTabs.tabBlock); this.setUnlocalizedName("ItemBlockPyramid"); } } and register it properly... GameRegistry.registerBlock(blockPyramid, ItemBlockPyramid.class, "blockPyramid"); It should render fine in the inventory if you do that. -TGG for reference: public class BlockPyramid extends Block { public BlockPyramid(int id) { super(id, Material.ground); this.setCreativeTab(CreativeTabs.tabBlock).setUnlocalizedName("BlockPyramid"); } @Override public boolean isOpaqueCube() { return false; } // This icon is never actually displayed because we always render it using ISBRendererBlockPyramid, however when you // destroy a block the // fragments that fly everywhere are derived from the block Icon, so we use something sensible.. @Override public void registerIcons(IconRegister iconRegister) { blockIcon = Block.blockLapis.getIcon(0, 0); } @Override public boolean renderAsNormalBlock() { return false; } @Override public int getRenderType() { return ISBRendererBlockPyramid.myRenderID; } }
January 29, 201411 yr Author yes because it causes crashes and it's there if I get an idea in the future and the renderBlocksOfAsphalt_Yellow_0 method is empty because if I put all the rendeing stuff in there and then when the renderWorldBlock method is called it gives me a crash and a nullPointerException on that line, dunno why
January 29, 201411 yr I did all that, but it is still invincible. I do not think that word means what you think it means. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
January 30, 201411 yr Hi I'm not sure I understand - if you have commented out the code in renderIventoryBlock, how were you expecting it to render in the inventory? Am I missing something? @Override public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderBlocks) { /** Tessellator tessellator = Tessellator.instance; GL11.glTranslatef(-0.5F, -0.5F, -0.5F); tessellator.startDrawingQuads(); renderBlocksOfAsphalt_Yellow_0(0, 0, 0, renderBlocks); tessellator.draw(); GL11.glTranslatef(0.5F, 0.5F, 0.5F); */ } You should be able to use more-or-less the same rendering code in your renderInventoryBlock as in your renderWorldBlock, except that you will have to supply the TileEntity information some other way, since the Block passed in doesn't have a valid one. Give it a shot and if you get an error, post it here and we can try to help more? -TGG
January 30, 201411 yr Author ok, thanks I'll try to make it render the same and the reason the renderInvenotryBlock is commented is because it gives me crashes
January 31, 201411 yr Hi ok, thanks I'll try to make it render the same and the reason the renderInvenotryBlock is commented is because it gives me crashes Crash is good, that means your renderer is registered and being called. Now you just need to figure out why it's crashing. If you're having trouble with that, post the crash log and the code causing the crash. -TGG
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.