OpenComputers II

OpenComputers II

27.1k Downloads

Bus Interface + Sneak + Click on some blocks = Crash

Bs0Dd opened this issue ยท 2 comments

commented

When I sneak with Bus Interface in hand and click to some blocks like the Door, Button, placed Bus Interface and etc. Minecraft is crashes with this stacktrace:

java.lang.NullPointerException: Unexpected error
	at li.cil.oc2.common.item.BusInterfaceItem.func_195945_b(BusInterfaceItem.java:90) ~[?:0.0.1] {re:classloading}
	at net.minecraft.item.BlockItem.func_195942_a(BlockItem.java:51) ~[?:?] {re:classloading}
	at li.cil.oc2.common.item.BusInterfaceItem.func_195942_a(BusInterfaceItem.java:58) ~[?:0.0.1] {re:classloading}
	at net.minecraft.item.BlockItem.func_195939_a(BlockItem.java:39) ~[?:?] {re:classloading}
	at li.cil.oc2.common.item.BusInterfaceItem.func_195939_a(BusInterfaceItem.java:52) ~[?:0.0.1] {re:classloading}
	at net.minecraft.item.ItemStack.lambda$useOn$5(ItemStack.java:188) ~[?:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack}
	at net.minecraft.item.ItemStack$$Lambda$6660/781975304.apply(Unknown Source) ~[?:?] {}
	at net.minecraft.item.ItemStack.onItemUse(ItemStack.java:203) ~[?:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack}
	at net.minecraft.item.ItemStack.func_196084_a(ItemStack.java:188) ~[?:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack}
	at net.minecraft.client.multiplayer.PlayerController.func_217292_a(PlayerController.java:301) ~[?:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.optifine.override.PlayerControllerOF.func_217292_a(PlayerControllerOF.java:97) ~[?:?] {re:classloading}
	at net.minecraft.client.Minecraft.func_147121_ag(Minecraft.java:1366) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.func_184117_aA(Minecraft.java:1645) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1460) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:953) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:607) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}
	at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}
	at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) [forge-1.16.5-36.2.2.jar:36.2] {}
	at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$446/698784309.call(Unknown Source) [forge-1.16.5-36.2.2.jar:36.2] {}
	at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?] {}
	at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?] {}
	at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?] {}
	at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?] {}

As i think, Bus Interface fails placing on these blocks and throws an error.

commented

While I couldn't reproduce this, the code path where this could happen should be fixed now. Thanks for reporting!

commented

I don't claim to know anything, but that sounds right and that bus interface placing is trying to read some sort of attribute from block that doesn't exist in normal blocks but does in OC2 blocks. I think what probably needs to be done to fix this is when bus interface is trying to be placed, instead of getting attribute from placed on block instantly, it checks for if block has attribute and then moves on. In my head though that poses the question, "What happens when it doesn't have the attribute? Does it place anyways and not connect or something?"