derf6060 Posted May 30, 2017 Posted May 30, 2017 If it does get destroyed is there a way to reuse the old TileEntity? Quote
LexManos Posted May 31, 2017 Posted May 31, 2017 Look at the methods in TileEntity... 1 Quote I do Forge for free, however the servers to run it arn't free, so anything is appreciated. Consider supporting the team on Patreon
derf6060 Posted May 31, 2017 Author Posted May 31, 2017 Thanks lex I'm going to take a good look at them and experiment some more. Quote
Choonster Posted May 31, 2017 Posted May 31, 2017 TileEntity#shouldRefresh is the method to look at. This controls whether the TileEntity is re-created when the IBlockState changes. 1 Quote 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.
derf6060 Posted May 31, 2017 Author Posted May 31, 2017 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. Quote
jeffryfisher Posted May 31, 2017 Posted May 31, 2017 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. 1 Quote 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.
Draco18s Posted May 31, 2017 Posted May 31, 2017 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!" 1 Quote 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.
derf6060 Posted June 1, 2017 Author Posted June 1, 2017 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. Quote
derf6060 Posted June 1, 2017 Author Posted June 1, 2017 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. Quote
LexManos Posted June 1, 2017 Posted June 1, 2017 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' 2 Quote I do Forge for free, however the servers to run it arn't free, so anything is appreciated. Consider supporting the team on Patreon
derf6060 Posted June 2, 2017 Author Posted June 2, 2017 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. Quote
Recommended Posts
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.