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

  • Author

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.

  • Author

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.

  • Author

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.

  • Author

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.

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.