Ender IO Zoo

Ender IO Zoo

961k Downloads

Placing a RF Gauge on a RFTools Power Cell causes a crash

lhw opened this issue ยท 5 comments

commented

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:

  1. Place two Powercells and put them in the same network
  2. Place an EnderIO RF Gauge on one of the Powercells
  3. 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)
commented

Accessing capabilities client-side is perfectly valid. Producing capability objects that crash is not.

commented

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

commented

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?

commented

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

commented

The point is that you're trying to display this (in the gauge presumably?) client side but powercells don't have any RF information client side. So even if I got rid of the crash it wouldn't work still (i.e. you would get wrong info)