Jump to content

[1.5] [SOLVED] How would I render multiple textures on a block?


Qwertygiy

Recommended Posts

How would I go about rendering multiple layers of textures on a single block face?

 

I've seen AtomicStryker's tutorial on updating textures for 1.5, but I want to, for example, be able to have fancy smart-auto-connected stained glass blocks, without having fifty thousand separate sprites. I know it could be done in some way in 1.4, as RailCraft, XyCraft, and ThaumCraft all did it, but I haven't done much modding in a while and I doubt any of it would work in 1.5 anyway.

 

If someone else somewhere has asked this question and you can link me to a detailed response that they got, that would be great too. But I'm not an expert modder (I haven't successfully done complex stuff since 1.2.5, and not much at all since 1.3) so the more detailed and simple an answer is, the more it would help me.

Link to comment
Share on other sites

A day later...

 

Does anybody at all know how? :( I really don't know enough fancy render stuff (or have the hours and hours of patience to try, fail, and repeat x1000)  to try to learn this completely on my own.

 

You can use an array which holds Icon instances. For example like an array with 5 textures:

@SideOnly(Side.CLIENT)
private Icon[] blockTextures;

 

Then initialize this array in the method with the IconRegister parameter:

@Override
@SideOnly(Side.CLIENT)
public void func_94332_a(IconRegister par1IconRegister) {
    this.blockTextures = new Icon[5];
    for(int i = 0; i < 5; i++) {
        this.blockTextures[i] = par1IconRegister.func_94245_a("MyMod:blockTexture_" + i);
    }
}

while having these 5 texture files ready and named like blockTexture0.png, blockTexture1.png aso.

 

Finally decide in any of the getBlockTextureXXX methods which texture should be shown, here a metadata example:

@Override
@SideOnly(Side.CLIENT)
public Icon getBlockTextureFromSideAndMetadata(int par1, int par2) {
    if(par1 < 0 || par1 >= 5)
        return this.blockTextures[0];
    return this.blockTextures[par1];
}

Don't ask for support per PM! They'll get ignored! | If a post helped you, click the "Thank You" button at the top right corner of said post! |

mah twitter

This thread makes me sad because people just post copy-paste-ready code when it's obvious that the OP has little to no programming experience. This is not how learning works.

Link to comment
Share on other sites

Assuming I understood you correctly, I'm not asking about different textures on different sides or metadata.

 

I'm talking about overlaying multiple textures on a single face of a single metadata block, like RailCraft's ores, so that I can have a base texture, and then several partial textures that overlay on top as I want them to, so that I only need around 10 or 16 textures instead of 2000.

 

Thank you for what you did tell me, but it's not what I was asking, sorry.

Link to comment
Share on other sites

I think what you are looking for is called Multi-Pass Rendering and there is a Tutorial about it on the ForgeWiki!

I can't say if the code provided there will work for 1.5 since i'm pretty new to Java but at least it's a start :)

 

http://www.minecraftforge.net/wiki/Multiple_Pass_Render_Blocks

 

From what i know the SecretRoomsMod has some sort of MPR going on and it get's currently ported to 1.5 so with the tutorial on the wiki and the source insight from Github you're on the right way.

 

https://github.com/AbrarSyed/SecretRoomsMod-forge

 

Hope it helps :)

Link to comment
Share on other sites

I looked at the Secret Rooms mod code; it doesn't seem to be what I'm looking for either -- useful, definitely, if I ever want to make camoflaging blocks, which I probably will if this project gets underway, but it's not what I'm after right now, unfortunately.

 

The wiki page might be able to help me if it works with 1.5; I'll give it a shot soon and see if I can make that work for me.

 

Thank you for your help!

Link to comment
Share on other sites

UPDATE: I have gotten it to work, to some extent. With just very basic modifications to that wiki code (adding the new render method override to the block class), I've gotten this with vanilla glass and ice textures:

 

 

axczut.png

 

 

I still have a lot of work to do to get it to do what I want, but I do have it working a little bit.

Link to comment
Share on other sites

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



×
×
  • Create New...

Important Information

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