Jump to content

Namikon

Members
  • Posts

    5
  • Joined

  • Last visited

Converted

  • Gender
    Undisclosed
  • Personal Text
    I am new!

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Namikon's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. Heh, it's always good when you find the solution yourself. Ok, for anyone who is struggling with the same Problem, here is the solution: (Improvements are welcome!) Goal: A block that has an animated texture as background (That can be swapped dynamically; For example in a multiblock), and a second texture on top of that, with transparent areas. (Good if you want to fade something in and out) First, you should read this tutorial; It's working with 1.7.10 and explains a lot: http://www.minecraftforge.net/wiki/Multiple_Pass_Render_Blocks Second, you don't need that "drawDiamond" function: - Set the animated texture as default icon (getIIcon()) in your Block - In your ISBRH Class, for Render pass 0, let Minecraft render the Block itself (And the animation!) with renderStandardBlockWithAmbientOcclusion - Then, retrieve the texture with your alpha channel areas, and tell the renderer to draw every face of that Block again, but this time with your new texture. - Done! There you have your animated block This is the actual function i'm using now: @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { ClientProxy tProxy = (ClientProxy)MyMod.proxy; CoreBlock tBlock = (CoreBlock)block; if(tProxy.renderPass == 0) { renderer.renderStandardBlockWithAmbientOcclusion(block, x, y, z, 1, 1, 1); IIcon ico = tBlock.getAlpaIcon(); renderer.renderFaceXNeg(block, x, y, z, ico); renderer.renderFaceXPos(block, x, y, z, ico); renderer.renderFaceYNeg(block, x, y, z, ico); renderer.renderFaceYPos(block, x, y, z, ico); renderer.renderFaceZNeg(block, x, y, z, ico); renderer.renderFaceZPos(block, x, y, z, ico); } return false; } If it's a terrible way to do it, please tell me. But it seems to work fine
  2. Aha, good. I thought I derped hard on this. Well, not a problem. Can you recommend some tutorials for TESR and ISBR? For this case, I'll need something for non tile entities, as only the controller block will be one. So I guess I need ISBR then..? Ok, I got it to the point where I managed to have a custom renderer for my Block. (Found the "Diamond in ice" tutorial). But now I have a problem, the Block does render in both pass 0 and 1, but the Texture that is rendered in pass 1, is always the one that is visible. My idea was, to draw the background texture in pass 0, and the Texture with transparent pixels on top of that, in pass 1. But the texture from pass 0 is overwritten with the one from pass 1; The transparent areas show the grass below it, it's completely replaced. This is my (messy..) function to render the Block: CoreBlock tBlock = (CoreBlock)block; FMLLog.log(Level.INFO, "RenderPass: %d start", tProxy.renderPass); if(tProxy.renderPass == 0) { IIcon tBackL = tBlock.getNormalIcon(); float u = tBackL.getMinU(); float v = tBackL.getMinV(); float U = tBackL.getMaxU(); float V = tBackL.getMaxV(); Tessellator tes = Tessellator.instance; tes.addTranslation(x, y, z); tes.addVertexWithUV(0, 1, 1, u, v); tes.addVertexWithUV(1, 1, 1, u, V); tes.addVertexWithUV(1, 1, 0, U, V); tes.addVertexWithUV(0, 1, 0, U, v); tes.addTranslation(-x, -y, -z); FMLLog.log(Level.INFO, "RenderPass 0 done"); } else { IIcon tTopL = tBlock.getAlpaIcon(); float u = tTopL.getMinU(); float v = tTopL.getMinV(); float U = tTopL.getMaxU(); float V = tTopL.getMaxV(); Tessellator tes = Tessellator.instance; tes.addTranslation(x, y, z); tes.addVertexWithUV(0, 1, 1, u, v); tes.addVertexWithUV(1, 1, 1, u, V); tes.addVertexWithUV(1, 1, 0, U, V); tes.addVertexWithUV(0, 1, 0, U, v); tes.addTranslation(-x, -y, -z); FMLLog.log(Level.INFO, "RenderPass 1 done"); } This is the actual result: Also, I wonder if that will work with an animated texture. (The one i've tried is not). The renderer is only called when I place/break something around it, I assume it needs to redraw the texture to "animate" the background layer?
  3. Ok, so in my getIIcon method I already have around 20 textures being registered, for all possible combinations of the connected texture feature. But I must be blind, to me it looks like neither the IIconRegister.registerIcon, nor the IIcon has has a function or property to define the Layer for the texture...? Same for the Block class. There are a bunch of methods that relate to rendering, but for most of them (Those I let google search for) lead me to the ISBR thing. Is that the way to go?
  4. Hello, I have this simple texture for my Block (which is not a TileEntity), that is going to be the interior Block of a MultiBlock structure. What I want to achieve is, that the block changes its color and animation speed while the Multiblock is doing its job. So I have said Texture (16x16) with transparent pixels, and I want to merge that with a couple of other textures (depending on the state of the controller block) for the animation, those are 16x320px pngs with different colors, and animation speeds. Now, how can I combine these textures, so that the main texture is the top layer, and you can see the color change through the transparent pixels? Sure, I could just copy&paste the transparent top layer to all colored animations, but the interior block is supposed to have connected textures, so that would result in a massive amount of png files. Not the way I'd like to go. I've been reading all day about Tessellator, ISBRH and that stuff, but all tutorials where either outdated, didn't work for me (No doubt i derped somewhere), or it was way to complicated for me to understand. Can someone guide me here please? All this rendering stuff is to complicated for my brain somehow. -Namikon
  5. Heya, so I had trouble running a Modpack, and after removing all the mods, all I had left was just Minecraft 1.7.10 and Forge. So I deleted everything, and downloaded Forge-10.13.3.1403-1.7.10, did a plain install with the installer (for Win), and the same happend. fml-client-latest.log (Java 8 ): http://pastebin.com/3sh1Pgt8 fml-client-latest.log (Java 7): http://pastebin.com/zeDD93ku fml-junk-earlystartup.log: http://pastebin.com/JeMEt6kT latest: http://pastebin.com/Rh81Ar5h As you can see, there is no Crash, no Error, nothing. It just stops at this screen: I had the problem with Forge 1400, and I have it with 1403, so using the latest Version available. I also closed my antivirus, and most applications running in the background, until I reached the point where only Windows, a few drivers and.. TeamViewer where active. So guess what, I closed TeamViewer and.. It worked. I did several reboots of my machine, and tried that again. Turns out that for my system, when I have TeamViewer running in the background, Forge does freeze on the screen above. (And yes I tested it with both Java 7 and 8 ) My System: Intel I-7 3770K Win7x64 - Latest updates TeamViewer - Latest; 10.0.41459 It's not a big deal however, I don't need TeamViewer active all the time. And I guess it might be a weird combination of software on my system only, but i thought I'd let you know, if someone runs into a similar problem. -Nam Edit: Oh, I should also mention that i'm playing another modpack with forge 1236. So that is why i assume it must be something related to forge itself and a change that has been made between 1236 and 1400. If that helps, i could try to find the exact version where it began to freeze...?
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.