Jump to content

[1.11.2] When creating a new IBlockState does the TileEntity get recreated?


Recommended Posts

Posted

TileEntity#shouldRefresh is the method to look at. This controls whether the TileEntity is re-created when the IBlockState changes.

  • Like 1

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Posted

Oh man I face palmed so hard. I forgot to call TileEntity#validate during the block state update because the TileEntity becomes invalid if you update the block state. I feel silly now. Thanks LexManos. P.S. Sorry about earlier.

 

40 minutes ago, Choonster said:

TileEntity#shouldRefresh is the method to look at. This controls whether the TileEntity is re-created when the IBlockState changes.

Hmm, that actually might make it easier to keep the TileEntity validated. Thanks Choonster.

Posted

Just don't fall into the mistake of overriding shouldRefresh to simply return false (never regenerate). There are situations when a TE should be cleaned up (e.g. when the new block type isn't the one the TE class supports), so make sure yours is well behaved.

  • Like 1

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Posted
3 hours ago, jeffryfisher said:

Just don't fall into the mistake of overriding shouldRefresh to simply return false (never regenerate). There are situations when a TE should be cleaned up (e.g. when the new block type isn't the one the TE class supports), so make sure yours is well behaved.

I still don't get why the default behavior is "oh, it's not vanilla, that means it always refreshes!"

  • Like 1

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.

Posted
9 hours ago, jeffryfisher said:

Just don't fall into the mistake of overriding shouldRefresh to simply return false (never regenerate). There are situations when a TE should be cleaned up (e.g. when the new block type isn't the one the TE class supports), so make sure yours is well behaved.

You read my mind. I was thanking about that during break at work I like "hmm, if I simply return false the TE wont become invalid so the deletion process won't work." You proved my from theory from work. Thank jeffryfisher.

Posted
6 hours ago, Draco18s said:

I still don't get why the default behavior is "oh, it's not vanilla, that means it always refreshes!"

 I don't get it either I find it silly when I was looking at TE source.  I would imagine that would cause a nasty garbage collection issue were a lot of TE's getting deallocated and reallocated by simply doing a BlockState changes.

Posted

Mainly because it's better to be more strict then it is to be lenient.

Combined with trying to make it clear to modders that different block states are different blocks. {A concept that Mojang is trying to force in code for a long time}

Its more 'We want it to always refresh, but vanilla breaks that sometimes, so special case vanilla'

  • Like 2

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted
8 hours ago, LexManos said:

Mainly because it's better to be more strict then it is to be lenient.

Combined with trying to make it clear to modders that different block states are different blocks. {A concept that Mojang is trying to force in code for a long time}

Its more 'We want it to always refresh, but vanilla breaks that sometimes, so special case vanilla'


Makes since to me. And it also explains the problem I was having too. What to do... I guess I'll follow the rules but make exceptions when I need too. Thanks for the help and clarification.

 

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.