Jump to content

[1.7.10] Rendering Semi-Transparent Mobs


Lyeoj

Recommended Posts

So I've been trying to make a ghost-like mob that is semi-transparent. For its texture, I added a partial transparency mask, and I know I have done it right because I have gotten blocks to render in as semi-transparent. However, with blocks, there is a getRenderBlockPass method that lets you tell it to render as alpha. I haven't found a way to do this with entities though.

Link to comment
Share on other sites

Update: I have looked into the topic some more and found that the RenderSlime code has what I am looking for. However, I am not quite sure how to properly incorporate it into my Renderer, because the slime code is designed to render the outer transparent layer, then the inner opaque layer. I'm pretty sure I should modify my shouldRenderPass method, which currently only returns -1, to contain some of the code from the RenderSlime shouldRenderPass method. My first attempt was just copying the RenderSlime code and removing the line "this.setRenderPassModel(this.scaleAmount);" because I think that is the part that handles the inner and outer layers. That left me with this code:

protected int shouldRenderPass(EntityGhost p_77032_1_, int p_77032_2_, float p_77032_3_)
    {
        if (p_77032_1_.isInvisible())
        {
            return 0;
        }
        else if (p_77032_2_ == 0)
        {
            GL11.glEnable(GL11.GL_NORMALIZE);
            GL11.glEnable(GL11.GL_BLEND);
            GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
            return 1;
        }
        else
        {
            if (p_77032_2_ == 1)
            {
                GL11.glDisable(GL11.GL_BLEND);
                GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
            }

            return -1;
        }
    }

Upon testing, the mob still failed to render as transparent and my console was constantly spammed with errors until I killed it.

Link to comment
Share on other sites

Making the color very light wouldn't make it transparent at all, you need to add alpha channel to tell the game that a certain texture should be transparent. I have added alpha to my textures already, my problem is getting the Renderer to be able to read the alpha channel, which it doesn't do by default. As for changing the light level of the mob, I don't even.

Link to comment
Share on other sites

If you want your entire model to be semi-transparent, you don't need any extra layers. Instead, you want to make those same GL11 calls (the ones you see in Slimes) before your model renders, and make sure your model texture has an alpha layer (you can do this in your photo-editing software, such as GIMP).

 

Just make sure to disable/re-enable whatever settings you changed after you are done - best way is this:

GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
// make your GL setting change, e.g. enable alpha transparency
// render your model and all that jazz
GL11.glPopAttrib();

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.

×
×
  • Create New...

Important Information

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