Jump to content

Rendering a standard block as part of a TileEntity?


Draco18s

Recommended Posts

So here's what I'm trying to do, I have a model that I want to render a block of flowing water in the same space so that my model doesn't need to supply the faces and texture of flowing water itself for various reasons.

 

public class TESRSluiceBottom extends TileEntitySpecialRenderer {
private ModelSluice sluice = new ModelSluice();

@Override
public void renderTileEntityAt(TileEntity tileentity, double d0, double d1, double d2, float f) {
	System.out.println("Rendering sluice at " + tileentity.xCoord + "," + tileentity.yCoord + "," + tileentity.zCoord);
	System.out.println("world: " + RenderBlocks.getInstance().blockAccess);
	if(RenderBlocks.getInstance().blockAccess != null) {
		RenderBlocks.getInstance().renderBlockAllFaces(Blocks.flowing_water, tileentity.xCoord, tileentity.yCoord, tileentity.zCoord);
	}
	sluice.render(tileentity, d0, d1, d2, 0, ((TileEntitySluiceBottom)tileentity).getRotationY());
}

public void renderTileEntityInventory(TileEntity tileentity, double d0, double d1, double d2, float f) {
	sluice.render(tileentity, d0, d1, d2, 0, f);
}
}

 

Problem is:

RenderBlocks.getInstance().blockAccess is always null.

 

Rendering sluice at -720,62,-447
world: null
Rendering sluice at -720,62,-447
world: null
Rendering sluice at -720,62,-447
world: null
Rendering sluice at -720,62,-447
world: null
Rendering sluice at -720,62,-447
world: null
Rendering sluice at -720,62,-447
world: null
Rendering sluice at -720,62,-447
world: null

 

If that IBlockAccess field is null, then when it goes to attempt to render the water, it tries to get the biome color to use for the water, which requires a non-null world (i.e. it crashes).

 

So clearly I'm doing something wrong somewhere.  What do I need to change?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

RenderBlocks.getInstance() is a global, singleton-like instance added by Forge. It has no world by default, you need to set it before you render and unset it afterwards.

 

Ahh.  I'll try that, thanks.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Hmm.  It didn't crash, but it also didn't render the water.

 

width=800 height=449http://s27.postimg.org/kb12ndiar/2014_11_21_13_30_09.png[/img]

 

Item Render is using an old model which is not being used in-world at all (commented sluice.render(...) so it would just draw the water).  Not sure how to go about debugging that, as it would require adding statements inside vanilla code.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Thanks anyway Diesieben.  Trying to poke at the values that make RenderBlock do its Thing, nothing is seeming to indicate a complete non-render. :\

 

Copying tessellator code now to do it my bloody self.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Link to comment
Share on other sites

Long story short:

 

For some reason the tessellator doesn't work when called from a TESR.

Same code copied into an ISimpleBlockRenderer renders just fine.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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.