
Placing a RF Gauge on a RFTools Power Cell causes a crash
lhw opened this issue ยท 5 comments
Issue Description:
Placing a RF Gauge on a RFTools Power Cell causes a crash to desktop.
It does take a second or two to crash.
I already reported it to McJty and he mentions that it is most likely because the gauge is accessing the RF API client-side for rendering. (See McJtyMods/RFTools#1714)
What happens:
Crash
What you expected to happen:
Show the Energy Storage of the Powercell network.
Steps to reproduce:
- Place two Powercells and put them in the same network
- Place an EnderIO RF Gauge on one of the Powercells
- Crash after a few seconds
Affected Versions (Do not use "latest"):
- Minecraft: 1.12.2
- Forge: 14.23.3.2668
- McJtyLib: 1.12-2.6.7-SNAPSHOT
- EnderIO: 5.0.21
- EnderCore: 1.12.2-5.0.18
- RFTools: 1.12-7.33
Your most recent log file where the issue was present:
net.minecraft.util.ReportedException: Rendering Block Entity
at net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.func_192854_a(TileEntityRendererDispatcher.java:162) ~[bwx.class:?]
at net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.func_180546_a(TileEntityRendererDispatcher.java:130) ~[bwx.class:?]
at net.minecraft.client.renderer.RenderGlobal.func_180446_a(RenderGlobal.java:705) ~[buy.class:?]
at net.minecraft.client.renderer.EntityRenderer.func_175068_a(EntityRenderer.java:1345) ~[buq.class:?]
at net.minecraft.client.renderer.EntityRenderer.func_78471_a(EntityRenderer.java:1259) ~[buq.class:?]
at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1062) ~[buq.class:?]
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1117) ~[bib.class:?]
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:397) [bib.class:?]
at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_121-2-ojdkbuild]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_121-2-ojdkbuild]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121-2-ojdkbuild]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121-2-ojdkbuild]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_121-2-ojdkbuild]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_121-2-ojdkbuild]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_121-2-ojdkbuild]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_121-2-ojdkbuild]
at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196) [NewLaunch.jar:?]
at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231) [NewLaunch.jar:?]
at org.multimc.EntryPoint.listen(EntryPoint.java:143) [NewLaunch.jar:?]
at org.multimc.EntryPoint.main(EntryPoint.java:34) [NewLaunch.jar:?]
Caused by: java.lang.NullPointerException
at mcjty.rftools.blocks.powercell.PowerCellTileEntity.getNetwork(PowerCellTileEntity.java:155) ~[PowerCellTileEntity.class:?]
at mcjty.rftools.blocks.powercell.PowerCellTileEntity.getEnergyStored(PowerCellTileEntity.java:568) ~[PowerCellTileEntity.class:?]
at mcjty.rftools.blocks.powercell.PowerCellTileEntity$1.getEnergyStored(PowerCellTileEntity.java:733) ~[PowerCellTileEntity$1.class:?]
at crazypants.enderio.base.power.forge.PowerInterfaceForge.getEnergyStored(PowerInterfaceForge.java:36) ~[PowerInterfaceForge.class:?]
at crazypants.enderio.powertools.machine.gauge.TESRGauge.renderTileEntity(TESRGauge.java:39) ~[TESRGauge.class:?]
at crazypants.enderio.powertools.machine.gauge.TESRGauge.renderTileEntity(TESRGauge.java:24) ~[TESRGauge.class:?]
at com.enderio.core.client.render.ManagedTESR.render(ManagedTESR.java:45) ~[ManagedTESR.class:?]
at com.enderio.core.client.render.ManagedTESR.func_192841_a(ManagedTESR.java:16) ~[ManagedTESR.class:?]
at net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.func_192854_a(TileEntityRendererDispatcher.java:155) ~[bwx.class:?]
java.lang.NullPointerException: Rendering Block Entity
at mcjty.rftools.blocks.powercell.PowerCellTileEntity.getNetwork(PowerCellTileEntity.java:155)
at mcjty.rftools.blocks.powercell.PowerCellTileEntity.getEnergyStored(PowerCellTileEntity.java:568)
at mcjty.rftools.blocks.powercell.PowerCellTileEntity$1.getEnergyStored(PowerCellTileEntity.java:733)
at crazypants.enderio.base.power.forge.PowerInterfaceForge.getEnergyStored(PowerInterfaceForge.java:36)
at crazypants.enderio.powertools.machine.gauge.TESRGauge.renderTileEntity(TESRGauge.java:39)
at crazypants.enderio.powertools.machine.gauge.TESRGauge.renderTileEntity(TESRGauge.java:24)
at com.enderio.core.client.render.ManagedTESR.render(ManagedTESR.java:45)
at com.enderio.core.client.render.ManagedTESR.func_192841_a(ManagedTESR.java:16)
at net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.func_192854_a(TileEntityRendererDispatcher.java:155)
at net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.func_180546_a(TileEntityRendererDispatcher.java:130)
at net.minecraft.client.renderer.RenderGlobal.func_180446_a(RenderGlobal.java:705)
at net.minecraft.client.renderer.EntityRenderer.func_175068_a(EntityRenderer.java:1345)
at net.minecraft.client.renderer.EntityRenderer.func_78471_a(EntityRenderer.java:1259)
at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1062)
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1117)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:397)
at net.minecraft.client.main.Main.main(SourceFile:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:196)
at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:231)
at org.multimc.EntryPoint.listen(EntryPoint.java:143)
at org.multimc.EntryPoint.main(EntryPoint.java:34)
Accessing capabilities client-side is perfectly valid. Producing capability objects that crash is not.
Well this cannot work client side as client side there is no information about how much RF there is (the network is not stored client side). So there is no useful information that you can get from this client-side and that's why it crashes: to prevent mods from using information that isn't valid in any way. Why do you need to access RF client side anyway? No other pipe mod has this issue
So you say you are crashing the game on purpose because you don't want to return null instead of a Capability object on the client?
If I return null on the client then cable mods will think the block doesn't support RF and will not connect. For example XNet checks for the presence of the capability to see if it has to connect visually (generate the right baked model). I guess other cable mods may do this too