Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

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.

  • Author

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.

I love to think basic, so if this works I'll be really happy. Why not 1) change the mob texture so it's an extremely light color (almost transparent) or set the light level of the entity?

  • Author

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.

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();

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.