Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.8] Questions converting my old AdvancedModelLoader


ShetiPhian
 Share

Recommended Posts

I've gotten stuck :-\

 

I'll start with what worked in 1.7

- Items are crafted using stone and/or planks, and the materials are stored in nbt (for texture info while rendering)

- When the block is placed the nbt is stored in the tile entity

- While rendering the first texture was loaded and render part was called, this was done 4 time to render the full model

 

Now for 1.8

- As expected crafting and storing the materials in nbt works, so does moving it to the tile entity.

- Material info is placed in the block state so I'm ready for rendering.

 

 

Using json models is out, due to shape and texture limits.

Baked models seem to be restricted to cubes like the json files

B3D looks to have the texture imbedded

 

I need to be able load a texture obtained from the block state, that is unknown prior to crafting.

Render part of the model, load the next texture from the block state, and render the next part.

and so on until all four parts are rendered

 

If your looking for code I have nothing useful to show, nothing has been done up for 1.8 rendering and the old 1.7 code is nothing special just bindTexture & renderPart sets.

Link to comment
Share on other sites

Getting AdvancedModelLoader to work on 1.8 was surprisingly easy, I have to wonder why it is still missing from Forge.

 

Setting my block's getRenderType to -1 gets rid of the black/purple cube.

Using TileEntitySpecialRenderer allows my block to render correctly.

 

Just need to figure out how to get the items to render again.

Guess I need to see how the chest does it, might need to see about restoring IItemRenderer

 

 

I think Forge for 1.7 was prematurely dropped, 1.8 is lacking in rendering abilities (and is the most poorly documented part of Forge)

Link to comment
Share on other sites

So an idea hit me and I ran with it, looks good so far :)

 

Using a modified version of the old WavefrontObject class (and other required classes), to load the model and create the baked quads needed by IBakedModel.

 

I even got rotation and scaling working.

 

Have two issues though both may only be fixable by changes in the obj its self.

 

Issue 1: the model was made with triangles and quads are required, so I used the last vertex twice. This left noticeable triangles.

Fix Idea: rebuild models using only quads.

 

Issue 2: shadows are wrong due to me setting all faces to up, I don't think I can extract the direction based on the vertices

Fix Idea: rebuild models and group faces into directions

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

 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I was having  worries with writing my  assignments work, then I order my nursing homework help. They have a really  master team of  special writers who provided me great quality content  at a  acceptable price. If you don't have enough time or you don't wanna waste it - use this writing service. This guys can  make any type of  homework paper you need. I khow that doing your  coursework can take  weeks. With the help of  proficient writers, you can ask for help with anything. I just sent detailed  demands to paper writing service and started thinking about what to do in my  spare time! 
    • Do not use @OnlyIn. Pick one of RenderGameOverlayEvent.Pre or .Post. Not both. For just adding new things to the HUD use .Post. You must check RenderGameOverlayEvent#getType. For just adding new things to the HUD check for ElementType.ALL.
    • I want to replace the Player Model with a new one.
    • Ok thank you I made it like this and it works. @SubscribeEvent @OnlyIn(Dist.CLIENT) public static void RenderHUD(final RenderGameOverlayEvent event){ if (isRampage){ int screenColor = 0xfff00000; Minecraft mc = Minecraft.getInstance(); MatrixStack stack = event.getMatrixStack(); stack.pushPose(); int w = (mc.getWindow().getGuiScaledWidth()); int h = (mc.getWindow().getGuiScaledHeight()); float r = (float) (screenColor >> 16 & 255) / 255.0F; float g = (float) (screenColor >> 8 & 255) / 255.0F; float b = (float) (screenColor & 255) / 255.0F; float a = (1/ 100f) * (screenColor >> 24 & 255) / 255F; RenderSystem.disableTexture(); RenderSystem.enableBlend(); RenderSystem.disableAlphaTest(); RenderSystem.blendFuncSeparate(770, 771, 1, 0); RenderSystem.shadeModel(7425); Tessellator tessellator = Tessellator.getInstance(); Matrix4f matrix = stack.last().pose(); BufferBuilder worldrenderer = tessellator.getBuilder(); worldrenderer.begin(7, DefaultVertexFormats.POSITION_COLOR); worldrenderer.vertex(matrix, 0, h, mc.gui.getBlitOffset()).color(r, g, b, a).endVertex(); worldrenderer.vertex(matrix, w, h, mc.gui.getBlitOffset()).color(r, g, b, a).endVertex(); worldrenderer.vertex(matrix, w, 0, mc.gui.getBlitOffset()).color(r, g, b, a).endVertex(); worldrenderer.vertex(matrix, 0, 0, mc.gui.getBlitOffset()).color(r, g, b, a).endVertex(); tessellator.end(); RenderSystem.shadeModel(7424); RenderSystem.disableBlend(); RenderSystem.enableAlphaTest(); RenderSystem.enableTexture(); } }  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.