AtomicStryker's Battle Towers

AtomicStryker's Battle Towers

23M Downloads

MultiMine incompatibility with BetterPortals

Johni0702 opened this issue ยท 2 comments

commented
  1. Build nether portal
  2. Go into nether
  3. Dig block
  4. Crash:
---- Minecraft Crash Report ----

WARNING: coremods are present:
  ForgelinPlugin (Forgelin-1.8.3.jar)
  MMFMLCorePlugin (MultiMine-1.12.2.jar)
Contact their authors BEFORE contacting forge

// Oh - I know what I did wrong!

Time: 7/21/19 10:31 AM
Description: Unexpected error

java.lang.NullPointerException: Unexpected error
	at atomicstryker.multimine.client.MultiMineClient.updateCloudTickReading(MultiMineClient.java:336)
	at atomicstryker.multimine.client.MultiMineClient.updateLocalPartialBlock(MultiMineClient.java:181)
	at atomicstryker.multimine.client.MultiMineClient.eventPlayerDamageBlock(MultiMineClient.java:131)
	at net.minecraft.client.multiplayer.PlayerControllerMP.func_180512_c(PlayerControllerMP.java:318)
	at net.minecraft.client.Minecraft.func_147115_a(Minecraft.java:1480)
	at net.minecraft.client.Minecraft.func_184117_aA(Minecraft.java:2268)
	at net.minecraft.client.Minecraft.func_184118_az(Minecraft.java:2020)
	at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1808)
	at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1098)
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398)
	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)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Client thread
Stacktrace:
	at atomicstryker.multimine.client.MultiMineClient.updateCloudTickReading(MultiMineClient.java:336)
	at atomicstryker.multimine.client.MultiMineClient.updateLocalPartialBlock(MultiMineClient.java:181)
	at atomicstryker.multimine.client.MultiMineClient.eventPlayerDamageBlock(MultiMineClient.java:131)
	at net.minecraft.client.multiplayer.PlayerControllerMP.func_180512_c(PlayerControllerMP.java:318)
	at net.minecraft.client.Minecraft.func_147115_a(Minecraft.java:1480)
	at net.minecraft.client.Minecraft.func_184117_aA(Minecraft.java:2268)
	at net.minecraft.client.Minecraft.func_184118_az(Minecraft.java:2020)

-- Affected level --
Details:
	Level name: MpServer
	All players: 1 total; [EntityPlayerSP['Johni0702'/94, l='MpServer', x=67.94, y=50.00, z=-13.50]]
	Chunk stats: MultiplayerChunkCache: 576, 576
	Level seed: 0
	Level generator: ID 01 - flat, ver 0. Features enabled: false
	Level generator options: 
	Level spawn location: World: (624,4,400), Chunk: (at 0,0,0 in 39,25; contains blocks 624,0,400 to 639,255,415), Region: (1,0; contains chunks 32,0 to 63,31, blocks 512,0,0 to 1023,255,511)
	Level time: 3844 game time, 3844 day time
	Level dimension: 0
	Level storage version: 0x00000 - Unknown?
	Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false)
	Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false
	Forced entities: 2 total; [NetherPortalEntity['entity.nether_portal.name'/261, l='MpServer', x=55.50, y=47.50, z=-12.50], EntityPlayerSP['Johni0702'/94, l='MpServer', x=67.94, y=50.00, z=-13.50]]
	Retry entities: 0 total; []
	Server brand: fml,forge
	Server type: Integrated singleplayer server
Stacktrace:
	at net.minecraft.client.multiplayer.WorldClient.func_72914_a(WorldClient.java:420)
	at net.minecraft.client.Minecraft.func_71396_d(Minecraft.java:2741)
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:427)
	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)

-- System Details --
Details:
	Minecraft Version: 1.12.2
	Operating System: Linux (amd64) version 4.14.67-1.pvops.qubes.x86_64
	Java Version: 1.8.0_212, Oracle Corporation
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation
	Memory: 221357304 bytes (211 MB) / 702021632 bytes (669 MB) up to 1219493888 bytes (1163 MB)
	JVM Flags: 2 total; -Xms512m -Xmx1308m
	IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
	FML: MCP 9.42 Powered by Forge 14.23.5.2838 7 mods loaded, 7 mods active
	States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored

	| State  | ID            | Version      | Source                                  | Signature                                |
	|:------ |:------------- |:------------ |:--------------------------------------- |:---------------------------------------- |
	| LCHIJA | minecraft     | 1.12.2       | minecraft.jar                           | None                                     |
	| LCHIJA | mcp           | 9.42         | minecraft.jar                           | None                                     |
	| LCHIJA | FML           | 8.0.99.99    | forge-1.12.2-14.23.5.2838-universal.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 |
	| LCHIJA | forge         | 14.23.5.2838 | forge-1.12.2-14.23.5.2838-universal.jar | e3c3d50c7c986df74c645c0ac54639741c90a557 |
	| LCHIJA | forgelin      | 1.8.3        | Forgelin-1.8.3.jar                      | None                                     |
	| LCHIJA | betterportals | 0.2.3        | betterportals-0.2.3.jar                 | None                                     |
	| LCHIJA | multimine     | 1.6.0        | MultiMine-1.12.2.jar                    | None                                     |

	Loaded coremods (and transformers): 
ForgelinPlugin (Forgelin-1.8.3.jar)
  
MMFMLCorePlugin (MultiMine-1.12.2.jar)
  atomicstryker.multimine.common.fmlmagic.MMTransformer
	GL info: ' Vendor: 'X.Org' Version: '4.4 (Compatibility Profile) Mesa 18.2.8' Renderer: 'AMD Radeon (TM) R9 380 Series (TONGA, DRM 3.19.0, 4.14.67-1.pvops.qubes.x86_64, LLVM 6.0.0)'
	Launched Version: MultiMC5
	LWJGL: 2.9.4
	OpenGL: AMD Radeon (TM) R9 380 Series (TONGA, DRM 3.19.0, 4.14.67-1.pvops.qubes.x86_64, LLVM 6.0.0) GL version 4.4 (Compatibility Profile) Mesa 18.2.8, X.Org
	GL Caps: Using GL 1.3 multitexturing.
Using GL 1.3 texture combiners.
Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
Shaders are available because OpenGL 2.1 is supported.
VBOs are available because OpenGL 1.5 is supported.

	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fml,forge'
	Type: Client (map_client.txt)
	Resource Packs: 
	Current Language: English (US)
	Profiler Position: N/A (disabled)
	CPU: 4x Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz

With BP, different dimensions have different RenderGlobal instances which will cause your vanillaDestroyBlockProgressMap reference to link to a different one than mc.renderGlobal.

Simplest way to fix this is to store the Field, not its value, and then just fetch it whenever required instead of just once at the beginning. Performance impact of that should be negligible but if you're concerned, you can also update your reference on demand whenever the mc.renderGlobal has changed.

commented

Should be resolved with 535f606

commented

Thanks for the quick response.
While this does fix the crash, the reference will unfortunately still become outdated if the player leaves the world while having break progress on any block (i.e. if they leave the world while vanillaDestroyBlockProgressMap.get(0) != null).

To reproduce:

  1. Build portal
  2. Partially break block (vanillaDestroyBlockProgressMap.get(0) == null will now be false until the progress is earsed)
  3. Use portal before progress is erased
  4. Hit block
  5. Progress will show while you hit it but the moment you stop hitting it, it'll stop showing the progress