Jump to content

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


derf6060

Recommended Posts

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

 

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.



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • my modpack work but i have some errors, mob random freeze and i don't know the issue  DEBUG LOG : https://paste.ee/p/6BDY8#section0
    • https://drive.google.com/drive/folders/1RSkPgDRwSkc9bF_SjgD3bjlJ8qv7fbCa?usp=sharing @TileEntity
    • Every time i try and open the game i get this   Description: Rendering overlay com.electronwill.nightconfig.core.io.WritingException: Unsupported value type: class net.minecraft.resources.ResourceLocation     at com.electronwill.nightconfig.toml.ValueWriter.write(ValueWriter.java:66) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.ArrayWriter.write(ArrayWriter.java:34) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.ValueWriter.write(ValueWriter.java:42) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.TableWriter.writeNormal(TableWriter.java:75) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.TableWriter.writeNormal(TableWriter.java:46) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.TomlWriter.write(TomlWriter.java:31) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.io.ConfigWriter.write(ConfigWriter.java:42) ~[core-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.io.ConfigWriter.write(ConfigWriter.java:88) ~[core-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.file.WriteSyncFileConfig.save(WriteSyncFileConfig.java:61) ~[core-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.file.AutosaveCommentedFileConfig.save(AutosaveCommentedFileConfig.java:80) ~[core-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.utils.ObservedMap.put(ObservedMap.java:48) ~[core-3.6.7.jar:?] {}     at net.minecraftforge.common.ForgeConfigSpec.correct(ForgeConfigSpec.java:216) ~[forge-1.20.4-49.1.0-universal.jar:?] {re:classloading,pl:accesstransformer:B}     at net.minecraftforge.common.ForgeConfigSpec.correct(ForgeConfigSpec.java:162) ~[forge-1.20.4-49.1.0-universal.jar:?] {re:classloading,pl:accesstransformer:B}     at net.minecraftforge.common.ForgeConfigSpec.setConfig(ForgeConfigSpec.java:85) ~[forge-1.20.4-49.1.0-universal.jar:?] {re:classloading,pl:accesstransformer:B}     at net.minecraftforge.common.ForgeConfigSpec.acceptConfig(ForgeConfigSpec.java:100) ~[forge-1.20.4-49.1.0-universal.jar:?] {re:classloading,pl:accesstransformer:B}     at net.minecraftforge.fml.config.ModConfig.setConfigData(ModConfig.java:73) ~[fmlcore-1.20.4-49.1.0.jar:?] {}     at net.minecraftforge.fml.config.ConfigTracker.openConfig(ConfigTracker.java:61) ~[fmlcore-1.20.4-49.1.0.jar:?] {}     at net.minecraftforge.fml.config.ConfigTracker.lambda$loadConfigs$1(ConfigTracker.java:50) ~[fmlcore-1.20.4-49.1.0.jar:?] {}     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}     at java.util.Collections$SynchronizedCollection.forEach(Collections.java:2131) ~[?:?] {}     at net.minecraftforge.fml.config.ConfigTracker.loadConfigs(ConfigTracker.java:50) ~[fmlcore-1.20.4-49.1.0.jar:?] {}     at net.minecraftforge.fml.core.ModStateProvider.lambda$new$3(ModStateProvider.java:68) ~[forge-1.20.4-49.1.0-universal.jar:?] {re:classloading}     at net.minecraftforge.fml.ModLoader.handleInlineTransition(ModLoader.java:219) ~[fmlcore-1.20.4-49.1.0.jar!/:1.0] {}     at net.minecraftforge.fml.ModLoader.lambda$dispatchAndHandleError$19(ModLoader.java:211) ~[fmlcore-1.20.4-49.1.0.jar!/:1.0] {}     at java.util.Optional.ifPresent(Optional.java:178) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.dispatchAndHandleError(ModLoader.java:211) ~[fmlcore-1.20.4-49.1.0.jar!/:1.0] {}     at net.minecraftforge.fml.ModLoader.lambda$loadMods$15(ModLoader.java:192) ~[fmlcore-1.20.4-49.1.0.jar!/:1.0] {}     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?] {re:mixin}     at net.minecraftforge.fml.ModLoader.loadMods(ModLoader.java:192) ~[fmlcore-1.20.4-49.1.0.jar!/:1.0] {}     at net.minecraftforge.client.loading.ClientModLoader.lambda$startModLoading$5(ClientModLoader.java:80) ~[forge-1.20.4-49.1.0-universal.jar!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:72) ~[forge-1.20.4-49.1.0-universal.jar!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.startModLoading(ClientModLoader.java:80) ~[forge-1.20.4-49.1.0-universal.jar!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.lambda$onResourceReload$2(ClientModLoader.java:63) ~[forge-1.20.4-49.1.0-universal.jar!/:?] {re:classloading,pl:runtimedistcleaner:A}     at net.minecraftforge.client.loading.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:72) ~[forge-1.20.4-49.1.0-universal.jar!/:?] {re:classloading,pl:runtimedistcleaner:A}     at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {}     at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {}     at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {}     at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {}     at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {re:computing_frames}     at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {re:computing_frames}     at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Suspected Mods: NONE Stacktrace:     at com.electronwill.nightconfig.toml.ValueWriter.write(ValueWriter.java:66) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.ArrayWriter.write(ArrayWriter.java:34) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.ValueWriter.write(ValueWriter.java:42) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.TableWriter.writeNormal(TableWriter.java:75) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.TableWriter.writeNormal(TableWriter.java:46) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.toml.TomlWriter.write(TomlWriter.java:31) ~[toml-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.io.ConfigWriter.write(ConfigWriter.java:42) ~[core-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.io.ConfigWriter.write(ConfigWriter.java:88) ~[core-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.file.WriteSyncFileConfig.save(WriteSyncFileConfig.java:61) ~[core-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.file.AutosaveCommentedFileConfig.save(AutosaveCommentedFileConfig.java:80) ~[core-3.6.7.jar:?] {}     at com.electronwill.nightconfig.core.utils.ObservedMap.put(ObservedMap.java:48) ~[core-3.6.7.jar:?] {}     at net.minecraftforge.common.ForgeConfigSpec.correct(ForgeConfigSpec.java:216) ~[forge-1.20.4-49.1.0-universal.jar:?] {re:classloading,pl:accesstransformer:B}     at net.minecraftforge.common.ForgeConfigSpec.correct(ForgeConfigSpec.java:162) ~[forge-1.20.4-49.1.0-universal.jar:?] {re:classloading,pl:accesstransformer:B}     at net.minecraftforge.common.ForgeConfigSpec.setConfig(ForgeConfigSpec.java:85) ~[forge-1.20.4-49.1.0-universal.jar:?] {re:classloading,pl:accesstransformer:B}     at net.minecraftforge.common.ForgeConfigSpec.acceptConfig(ForgeConfigSpec.java:100) ~[forge-1.20.4-49.1.0-universal.jar:?] {re:classloading,pl:accesstransformer:B}     at net.minecraftforge.fml.config.ModConfig.setConfigData(ModConfig.java:73) ~[fmlcore-1.20.4-49.1.0.jar!/:?] {}     at net.minecraftforge.fml.config.ConfigTracker.openConfig(ConfigTracker.java:61) ~[fmlcore-1.20.4-49.1.0.jar!/:?] {}     at net.minecraftforge.fml.config.ConfigTracker.lambda$loadConfigs$1(ConfigTracker.java:50) ~[fmlcore-1.20.4-49.1.0.jar!/:?] {} -- Overlay render details -- Details:     Overlay name: net.minecraftforge.client.loading.ForgeLoadingOverlay Stacktrace:     at net.minecraft.client.renderer.GameRenderer.m_109093_(GameRenderer.java:934) ~[forge-1.20.4-49.1.0-client.jar:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:forge-DistantHorizons.forge.mixins.json:client.MixinGameRenderer,pl:mixin:APP:mixins.essential.json:client.renderer.MixinEntityRenderer_Zoom,pl:mixin:APP:mixins.essential.json:events.Mixin_RenderTickEvent,pl:mixin:APP:mixins.essential.json:events.Mixin_GuiDrawScreenEvent_Priority,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1250) ~[forge-1.20.4-49.1.0-client.jar:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:balm.forge.mixins.json:MinecraftMixin,pl:mixin:APP:iceberg.mixins.json:MinecraftMixin,pl:mixin:APP:betterf3.mixins.json:ClientAccessor,pl:mixin:APP:mixins.essential.json:client.Mixin_RunEssentialTasks,pl:mixin:APP:mixins.essential.json:client.MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_FixKeybindUnpressedInEmoteWheel,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_RecalculateMenuScale,pl:mixin:APP:mixins.essential.json:compatibility.vanilla.Mixin_WorkaroundBrokenFramebufferBlitBlending,pl:mixin:APP:mixins.essential.json:feature.emote.Mixin_AllowMovementDuringEmoteWheel_HandleKeybinds,pl:mixin:APP:mixins.essential.json:feature.skin_overwrites.Mixin_InstallTrustingServicesKeyInfo,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:801) ~[forge-1.20.4-49.1.0-client.jar:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:bookshelf.common.mixins.json:accessors.client.AccessorMinecraft,pl:mixin:APP:balm.forge.mixins.json:MinecraftMixin,pl:mixin:APP:iceberg.mixins.json:MinecraftMixin,pl:mixin:APP:betterf3.mixins.json:ClientAccessor,pl:mixin:APP:mixins.essential.json:client.Mixin_RunEssentialTasks,pl:mixin:APP:mixins.essential.json:client.MixinMinecraft,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_FixKeybindUnpressedInEmoteWheel,pl:mixin:APP:mixins.essential.json:client.gui.Mixin_RecalculateMenuScale,pl:mixin:APP:mixins.essential.json:compatibility.vanilla.Mixin_WorkaroundBrokenFramebufferBlitBlending,pl:mixin:APP:mixins.essential.json:feature.emote.Mixin_AllowMovementDuringEmoteWheel_HandleKeybinds,pl:mixin:APP:mixins.essential.json:feature.skin_overwrites.Mixin_InstallTrustingServicesKeyInfo,pl:mixin:A,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:234) ~[forge-1.20.4-49.1.0-client.jar:?] {re:classloading,pl:runtimedistcleaner:A}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:91) ~[fmlloader-1.20.4-49.1.0.jar:?] {}     at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.lambda$makeService$0(CommonLaunchHandler.java:75) ~[fmlloader-1.20.4-49.1.0.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:74) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:114) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:73) ~[modlauncher-10.1.2.jar:?] {}     at cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17) ~[modlauncher-10.1.2.jar:?] {}     at net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:188) ~[bootstrap-2.1.0.jar!/:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {}     at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {}     at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {}     at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {}     at net.minecraftforge.bootstrap.Bootstrap.bootstrapMain(Bootstrap.java:133) ~[bootstrap-2.1.0.jar!/:?] {}     at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:53) ~[bootstrap-2.1.0.jar!/:?] {}     at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:19) ~[bootstrap-2.1.0.jar!/:?] {} -- Uptime -- Details:     JVM uptime: 41.449s     Wall uptime: 9.802s     High-res time: 33.664s     Client ticks: 20 ticks / 1.000s -- Last reload -- Details:     Reload number: 1     Reload reason: initial     Finished: No     Packs: vanilla, mod_resources, Essential Assets, essential   how can i fix this ?
    • Hello there! I'm here today to invite you to join us in an experience like no other. We play on a server that aims to simulate civilization in minecraft and we invite you to join us. Become part of an expansive nation, grow your power and influence or perhaps simply assist your countrymen in their own endeavors. With enough effort here you can do anything you can imagine. Lead an army into battle, rule over bustling towns, create a company and become rich, or perhaps retire to a simple life of farming with a small group of friends and simply enjoy the days as they come. We also host events regularly so I promise it won't get boring for a while. If your even slightly interested I highly recommend you join the discord! We can answer any questions you have there. Thank you for your time and interest and I hope to see you soon! https://discord.com/invite/VGxhdF2V56
    • i have been trying to play a modpack created by my boyfriend , but it keeps crashing for me. it’ll open on the narrator or the main menu and then it’ll just freeze up fully and crash. it works for him and his friends. i have tried everything from uninstalling cursedforge and forge and reinstalling them , to uninstalling my drivers and reinstalling and updating them , even deleting minecraft and reinstalling it. please help me out , it is only forge. fabric works just fine for everyone version. i even downloaded it to my laptop and forge works fine on there. any suggestions on what to do??  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.