Jump to content

Recommended Posts

Posted

Hey, I made a block with a transparent texture on the sides, but it looks ugly because it doesn't draw the textures on the inner sides :

 

width=761 height=517TeFde20.png?1 [/img]

 

(I overrode the isOpaqueCube function to return false so it renders block that are next to mine)

Is there a way I can render a texture inside the block ?

Posted

I just tried, it doesn't work

 

  Reveal hidden contents

 

 

I'm guessing it's because the textures are drawn on planes, which only have one side rendered

Posted

Hi

 

I think you can achieve this by rendering your block in pass 1, which turns off back-face culling  - Block.getRenderBlockPass() or Block.canRenderInPass().  It also turns on alpha blending but if you set your alpha to 1 it won't look any different.

 

-TGG

Posted

Thanks everyone, I tried to use a custom renderer with a tessellator, couldn't really get how I was supposed to do it, so I tried TGG's solution, and added this to my block's class

@Override
public int getRenderBlockPass() {
return 1;
}

@Override
public boolean canRenderInPass(int pass) {
return (pass == 1)? true : false;
}

 

But I don't think I'm doing this right, and it didn't change anything

 

Posted

Hmm that should have worked.  Perhaps I'm wrong, I last tested it in 1.6.4 I think.

 

Instead, you could use an ISimpleBlockRenderingHandler and use GL11.glDisable(GL11.GL_CULL_FACE), then call the vanilla block rendering method, then change CULL_FACE back again.

 

http://greyminecraftcoder.blogspot.com.au/2013/07/rendering-non-standard-blocks.html

and

http://greyminecraftcoder.blogspot.com.au/2013/07/block-rendering.html

 

-TGG

 

Posted

Hey, thanks for the link ! I was curious and looked at your blog, found this very interesting post on the Tessellator. It explains everything I need, I'll try again using the Tesselator because it's really interesting and I might need it later on. Thanks a lot !

Posted

Alright, spent a lot of time on this thing, but it was worth it !

JBY9piJ.png

Had some problems too with the render in inventory, thanks again TGG found a solution of yours on another topic. My block looks really nice now

Code for my renderer, not really commented but you can find anything you need on TGG's blog

 

package com.niverton.concretemod.client;

import org.lwjgl.opengl.GL11;

import com.niverton.concretemod.blocks.BlockScaffold;

import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import cpw.mods.fml.client.registry.RenderingRegistry;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;

public class RendererScaffoldBlock implements ISimpleBlockRenderingHandler {
public static int renderID;

public RendererScaffoldBlock() {
	renderID = RenderingRegistry.getNextAvailableRenderId();
}

@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
	GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
	Tessellator tessellator = Tessellator.instance;

	//Get icons from custom register (useful for renderers and fluids)
	IIcon side = ConcreteModClientProxy.getIcon(BlockScaffold.name.toLowerCase() + "_side");
	IIcon top = ConcreteModClientProxy.getIcon(BlockScaffold.name.toLowerCase() + "_top");

	tessellator.startDrawingQuads();
                tessellator.setNormal(0.0F, -1.0F, 0.0F);
                renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, top);
                tessellator.draw();
                tessellator.startDrawingQuads();
                tessellator.setNormal(0.0F, 1.0F, 0.0F);
      	        renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, top);
                tessellator.draw();
                tessellator.startDrawingQuads();
                tessellator.setNormal(0.0F, 0.0F, -1.0F);
      	        renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, side);
                tessellator.draw();
                tessellator.startDrawingQuads();
                tessellator.setNormal(0.0F, 0.0F, 1.0F);
      	        renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, side);
                tessellator.draw();
                tessellator.startDrawingQuads();
                tessellator.setNormal(-1.0F, 0.0F, 0.0F);
      	        renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, side);
                tessellator.draw();
                tessellator.startDrawingQuads();
                tessellator.setNormal(1.0F, 0.0F, 0.0F);
      	        renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, side);
                tessellator.draw();

    GL11.glTranslatef(0.5F, 0.5F, 0.5F);
}

@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z,
								Block block, int modelId,
								RenderBlocks renderer) {

	renderer.renderStandardBlock(block, x, y, z);
	Tessellator tes = Tessellator.instance;
	tes.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));

	IIcon side = ConcreteModClientProxy.getIcon(BlockScaffold.name.toLowerCase() + "_side");

	//South
	tes.addVertexWithUV(x+0, y+0, z+0.999, side.getMinU(), side.getMaxV()); //0.999 instead of 1 for Z fighting (textures overlapping)
	tes.addVertexWithUV(x+0, y+1, z+0.999, side.getMinU(), side.getMinV());
	tes.addVertexWithUV(x+1, y+1, z+0.999, side.getMaxU(), side.getMinV());
	tes.addVertexWithUV(x+1, y+0, z+0.999, side.getMaxU(), side.getMaxV());
	//East
	tes.addVertexWithUV(x+0.999, y+0, z+1, side.getMinU(), side.getMaxV());
	tes.addVertexWithUV(x+0.999, y+1, z+1, side.getMinU(), side.getMinV());
	tes.addVertexWithUV(x+0.999, y+1, z+0, side.getMaxU(), side.getMinV());
	tes.addVertexWithUV(x+0.999, y+0, z+0, side.getMaxU(), side.getMaxV());
	//North
	tes.addVertexWithUV(x+1, y+0, z+0.001, side.getMinU(), side.getMaxV());
	tes.addVertexWithUV(x+1, y+1, z+0.001, side.getMinU(), side.getMinV());
	tes.addVertexWithUV(x+0, y+1, z+0.001, side.getMaxU(), side.getMinV());
	tes.addVertexWithUV(x+0, y+0, z+0.001, side.getMaxU(), side.getMaxV());
	//West
	tes.addVertexWithUV(x+0.001, y+0, z+0, side.getMinU(), side.getMaxV());
	tes.addVertexWithUV(x+0.001, y+1, z+0, side.getMinU(), side.getMinV());
	tes.addVertexWithUV(x+0.001, y+1, z+1, side.getMaxU(), side.getMinV());
	tes.addVertexWithUV(x+0.001, y+0, z+1, side.getMaxU(), side.getMaxV());

	IIcon top = ConcreteModClientProxy.getIcon(BlockScaffold.name.toLowerCase() + "_top");

	//Top
	tes.addVertexWithUV(x+0, y+0.999, z+1, top.getMinU(), top.getMaxV());
	tes.addVertexWithUV(x+0, y+0.999, z+0, top.getMinU(), top.getMinV());
	tes.addVertexWithUV(x+1, y+0.999, z+0, top.getMaxU(), top.getMinV());
	tes.addVertexWithUV(x+1, y+0.999, z+1, top.getMaxU(), top.getMaxV()); 
	//Bottom
	tes.addVertexWithUV(x+0, y+0.001, z+0, top.getMinU(), top.getMaxV());
	tes.addVertexWithUV(x+0, y+0.001, z+1, top.getMinU(), top.getMinV());
	tes.addVertexWithUV(x+1, y+0.001, z+1, top.getMaxU(), top.getMinV());
	tes.addVertexWithUV(x+1, y+0.001, z+0, top.getMaxU(), top.getMaxV());

	return true;
}

@Override
public boolean shouldRender3DInInventory(int modelId) {
	return true;
}

@Override
public int getRenderId() {
	return renderID;
}

}

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hi, I made this mod, inspired by my friends and various loud streamers, and it's perfect for YouTubers who want a little extra pizzaz when they scream in their videos.   The mod works by detecting a high sound level (which you can configure) through your computer’s audio input. Once the sound threshold is reached, your player character will instantly explode! It doesn't use any external APIs; it just relies on the built-in javax sampled package. Check it out!    
    • Good day, I know this is years later and I hate to necropost but I ran into this exact same issue today and yours was the only one that popped up in my search. Turns out my file system permissions were all kinds of messed up in my minecraft directory. Here's how I fixed it: 1. Open terminal 2. Navigate to the .minecraft directory using the cd command, it can be helpful to have your file explorer open next to your terminal if you're a more visual person like me 3. On my OS (PopOS) the folders with messed up permissions had a padlock on them 4. Ran the command  sudo chmod a+rwx [fileName] I also ran  sudo chmod 777 [fileName] and got the same results with both. However it turns out a lot of my sub folders were messed up too which meant I had to make the changes recursively, which in plain English means all of the sub-folders under the directory. So I ended up running the command  sudo chmod -R 777 [fileName] which then changed all of the subfolders and files and ended up saving me a LOT of time doing it one at a time like the first two commands do. 5. After fixing permissions in the various subfolders ran the installer with the command java -jar [latestForgeInstallerNameGoesHereWithoutSquareBrackets] 6. Installed and launched without a hitch! Hope this helps new Linux users as for most advanced users this breakdown isn't very helpful, I'm still learning a ton myself. Additional note that might clear up future confusion, do not include [ or ] in your commands that I've listed here, I just use [ and ] in my personal notes to denote that I need to put something from the file system in the command. If yours was anything like mine all of the files from /de/oceanlabs/mcp/mcp_config/1.18-20211130.085255/mcp_config-1.18-20211130.085255-mappings.txt all had the wrong permissions. -Zamorakphat
    • hi fellas I remember back when I was in high school and had way more time to develop mods, there were tons of active posts, and while the documentation wasn’t always super extensive, you could always find someone to help you out with your questions or see someone else’s threads that were really informative. But lately, I’ve noticed that the forum seems pretty empty compared to how it used to be. I’m wondering, is there a specific reason for this? Is it just that the community has moved to other platforms, like Discord? It feels like a lot of the knowledge base and conversations have shifted over there. I’m just curious to hear others’ thoughts on this, and if anyone knows why the forum has become quieter, I’d love to know! Thanks!
    • @TileEntity Here's the log, sorry for all the trouble and confusion  https://paste.ee/p/Ihi4VMVn
    • https://gist.github.com/StrikeAttack7/f638897b5ffb88cc6db6c21946e1a216 When I tried logging into the server client side this is the error I got
  • Topics

×
×
  • Create New...

Important Information

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