Jump to content

[1.14] Gl Stack Overflow, Not sure what's happening


_Cruelar_

Recommended Posts

I'm currently trying to get a Item rendered on a block through TESR using code from 1.12. However now in 1.14 GL seems to be more strict/limited about what it's capable to do as the code now leads to MC spamming me with this in the console:

[14:46:59] [Client thread/INFO] [minecraft/GlDebugTextUtils]: OpenGL debug message, id=1283, source=API, type=ERROR, severity=HIGH, message=Error has been generated. GL error GL_STACK_OVERFLOW in (null): (ID: 173538523) Generic error

So I know this means that OpenGl uses all its assigned stack up, however as I'm not experienced with OpenGL (shame on me) I don't know what I have to change. Also as a side note this be possible with TESRFast as that could improve performance (Not much of an issue just trying to be server-friendly)

My code :

public class EmblemPedestalRenderer extends TileEntityRenderer<EmblemPedestalTileEntity> {
    public void render(EmblemPedestalTileEntity tileEntityIn, double x, double y, double z, float partialTicks, int destroyStage) {
        GlStateManager.pushLightingAttributes();
        GlStateManager.pushTextureAttributes();
        GlStateManager.pushMatrix();
        // Translate to the location of the tile entity
        GlStateManager.translated(x, y, z);
        GlStateManager.disableRescaleNormal();
        // Render our item
        renderItem(tileEntityIn);
        GlStateManager.popMatrix();
        GlStateManager.popAttributes();
    }

    @SuppressWarnings("deprecation")
    private void renderItem(EmblemPedestalTileEntity te) {
            ItemStack itemstack = EmblemPedestalBlock.getStack(te.getBlockState(),te.getEmblemType());
            if (!itemstack.isEmpty()) {
                GlStateManager.pushMatrix();
                GlStateManager.disableLighting();
                // Translate to the center of the block and .8 points higher
                GlStateManager.translated(.5, .8, .5);
                GlStateManager.scalef(.9f, .9f, .9f);
                if (te.getBlockState().get(EmblemPedestalBlock.FACING) == Direction.WEST) {
                    GlStateManager.rotatef(MathHelper.wrapDegrees(90), 0, 1, 0);
                }
                if (te.getBlockState().get(EmblemPedestalBlock.FACING) == Direction.NORTH) {
                    GlStateManager.rotatef(MathHelper.wrapDegrees(180), 0, 1, 0);
                }
                if (te.getBlockState().get(EmblemPedestalBlock.FACING) == Direction.EAST) {
                    GlStateManager.rotatef(MathHelper.wrapDegrees(270), 0, 1, 0);
                }
                GlStateManager.rotatef(MathHelper.wrapDegrees(90), 1, 0, 0);

                Minecraft.getInstance().getItemRenderer().renderItem(itemstack, ItemCameraTransforms.TransformType.NONE);
                GlStateManager.popMatrix();
            }
    }
}

Notes: The TileEntity doesn't actually save the stored item as the block only accepts one item it's handled as boolean blockstate, tell me if this is bad style

Additionally EmblemPedestalBlock.getStack(BlockState,EmblemPedestalBlock.Type (Is an enum)) returns ItemStack.EMPTY if no item is stored

EmblemPedestalTileEntity::getEmblemType() returns which item should be accepted represented as an enum (EmblemPedestalBlock.Type)

 

Thanks in advance!

My Projects:

Cruelars Triforcemod (1.12 release; 1.14 alpha soon coming)

 

Important:

As my mod is on at least 10 different third party sites without my permission, I want to warn you about that with a link to StopModReposts

Link to comment
Share on other sites

19 minutes ago, _Cruelar_ said:

tell me if this is bad style

If it's only one item with a finite amount of rotation/positions then you really should just use a json model or a BakedModel. However, if you do want to stick with the TESR check out CampfireTileEntityRenderer it seems it is simpler to render Items with a TESR than what you have.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

I never used json to add an item to an block model but if you could tell me how I'd try it as I have the additional models for the blockstates anyway (currently all set to the same model). Also biggest difference I saw to the campfire was TransformType.Fixed which didn't change anything.

My Projects:

Cruelars Triforcemod (1.12 release; 1.14 alpha soon coming)

 

Important:

As my mod is on at least 10 different third party sites without my permission, I want to warn you about that with a link to StopModReposts

Link to comment
Share on other sites

2 minutes ago, _Cruelar_ said:

Also biggest difference I saw to the campfire was TransformType.Fixed which didn't change anything.

It also doesn't pop or push attributes.

3 minutes ago, _Cruelar_ said:

but if you could tell me how I'd try it as I have the additional models for the blockstates anyway

Instead of adding the elements yourself you could probably use the multipart system to add the Items model in.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Now this has two problems:

  1. The Item is rendered in the center of the block, however I'd need it to be 0.3 higher
  2. The Item is rendered without transparency (I guess overwrite Block::isOpaqueCube or 1.14 equivalent, sorry still mostly thinking in 1.12 methods)

Would you know how to solve the first one?

My Projects:

Cruelars Triforcemod (1.12 release; 1.14 alpha soon coming)

 

Important:

As my mod is on at least 10 different third party sites without my permission, I want to warn you about that with a link to StopModReposts

Link to comment
Share on other sites

8 minutes ago, _Cruelar_ said:

Worst case I'll make a new model file just to align this.

I don't think multipart models support offsetting the models no. You'll have to make a new model file.

 

15 minutes ago, _Cruelar_ said:

The Item is rendered without transparency (I guess overwrite Block::isOpaqueCube or 1.14 equivalent, sorry still mostly thinking in 1.12 methods)

The correct way to do this is to override Block::getRenderLayer and return BlockRenderLayer.CUTOUT_MIPPED

  • Thanks 1

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Just now, Animefan8888 said:
19 minutes ago, _Cruelar_ said:

The Item is rendered without transparency (I guess overwrite Block::isOpaqueCube or 1.14 equivalent, sorry still mostly thinking in 1.12 methods)

The correct way to do this is to override Block::getRenderLayer and return BlockRenderLayer.CUTOUT_MIPPED

Yeah found that already, as I said I'm still mostly thinking in how it would working 1.12, I know bad practice and all. Thanks for your help!

My Projects:

Cruelars Triforcemod (1.12 release; 1.14 alpha soon coming)

 

Important:

As my mod is on at least 10 different third party sites without my permission, I want to warn you about that with a link to StopModReposts

Link to comment
Share on other sites

4 minutes ago, _Cruelar_ said:

I know bad practice and all.

No it's not bad practice you have a pretty good jumping off point, and you understand that it won't all be the same and know where to look. You'll get used to 1.14 in no time.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Just as a note I might come back to this later when updating my mod linked in my signature with tileentities and containers as there is a similar block with finite amount of rotations (2) and rescales (2) but infinite amount of items, which means I'll probably need a fix for the TESR issue anyways

My Projects:

Cruelars Triforcemod (1.12 release; 1.14 alpha soon coming)

 

Important:

As my mod is on at least 10 different third party sites without my permission, I want to warn you about that with a link to StopModReposts

Link to comment
Share on other sites

4 minutes ago, _Cruelar_ said:

but infinite amount of items, which means I'll probably need a fix for the TESR issue anyways

It's actually better for you to use a BakedModel instead since the rotations and scales are finite. However, I am unsure of the 1.14 way of doing that.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

1 minute ago, Animefan8888 said:

However, I am unsure of the 1.14 way of doing that.

That'S a bummer as the approach via json multipart doesn't seem to accept any translation whatsoever for the item model. So either one of us finds out how to do BakedModels or I'll use the TESR for now as it doesn't crash or hinder the game it's just flooding the console (Nice time finding errors with that)

My Projects:

Cruelars Triforcemod (1.12 release; 1.14 alpha soon coming)

 

Important:

As my mod is on at least 10 different third party sites without my permission, I want to warn you about that with a link to StopModReposts

Link to comment
Share on other sites

5 minutes ago, _Cruelar_ said:

That'S a bummer as the approach via json multipart doesn't seem to accept any translation whatsoever for the item model.

If you make a json model for the item you can use the display tag(check out item/generated for an example) to translate the model. I think.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

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.