Pokechu22 / WorldDownloader

Makes a copy of parts of a multiplayer world for singleplayer use (EG, for backups or renders)
https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-mods/2520465-world-downloader-mod-create-backups-of-your-builds
Other
568 stars 135 forks source link

NullPointerException: Rendering screen crash when viewing saved chunks #209

Open brycenaddison opened 3 years ago

brycenaddison commented 3 years ago

Was clicking around, ran into a game crash when clicking saved chunks before starting my world download. This is probably a pretty easy fix.

EDIT: Turns out this issue is more annoying than I thought. Saved chunks feature just doesn't work at all, tried again in the middle of my world download.

---- Minecraft Crash Report ----
// I let you down. Sorry :(

Time: 1/15/21 11:18 AM
Description: Rendering screen

java.lang.NullPointerException: Rendering screen
    at wdl.gui.GuiSavedChunks.render(GuiSavedChunks.java:138) ~[?:?] {re:classloading}
    at wdl.gui.widget.ExtGuiScreen.func_230430_a_(ExtGuiScreen_1_16_2.java:152) ~[?:?] {re:classloading}
    at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:290) ~[?:?] {re:classloading}
    at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source) ~[?:?] {}
    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.optifine.reflect.Reflector.callVoid(Reflector.java:717) ~[?:?] {re:classloading}
    at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:821) ~[?:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}
    at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:976) [?:?] {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.4-35.1.7.jar:35.1] {}
    at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$437/1160546880.call(Unknown Source) [forge-1.16.4-35.1.7.jar:35.1] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.6.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.6.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.6.jar:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.6.jar:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.6.jar:?] {}

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

-- Head --
Thread: Render thread
Stacktrace:
    at java.lang.Thread.getStackTrace(Thread.java:1552) ~[?:1.8.0_51] {}
-- World Downloader Mod - Core --
Details:
    WDL version: 4.1.1.0
    Minecraft version: Minecraft 1.16.4 (1.16.4-forge-35.1.7/forge/release)
    Expected version: 1.16.4
    Protocol version: 754
    Data version: 2584
    File location: ~~ERROR~~ NullPointerException: null
Stacktrace:
    at java.lang.Thread.getStackTrace(Thread.java:1552) ~[?:1.8.0_51] {}
    at net.minecraft.crash.CrashReportCategory.func_85073_a(CrashReportCategory.java:99) [?:?] {re:mixin,re:classloading}
    at net.minecraft.crash.CrashReport.func_85057_a(CrashReport.java:332) ~[?:?] {re:mixin,re:classloading,xf:OptiFine:default,pl:mixin:APP:mixins.ForgeWDL.json:MixinCrashReport,pl:mixin:A}
    at wdl.WDL.addInfoToCrash(WDL.java:1660) ~[?:?] {re:classloading}
    at wdl.WDLEvents$HooksListener.onCrashReportPopulateEnvironment(WDLEvents.java:803) ~[?:?] {re:classloading}
    at wdl.WDLHooks.onCrashReportPopulateEnvironment(WDLHooks.java:249) ~[?:?] {re:mixin,re:classloading}
    at net.minecraft.crash.CrashReport.handler$zzd000$onCrashReportPopulateEnvironment(CrashReport.java:532) ~[?:?] {re:mixin,re:classloading,xf:OptiFine:default,pl:mixin:APP:mixins.ForgeWDL.json:MixinCrashReport,pl:mixin:A}
    at net.minecraft.crash.CrashReport.func_71504_g(CrashReport.java:104) [?:?] {re:mixin,re:classloading,xf:OptiFine:default,pl:mixin:APP:mixins.ForgeWDL.json:MixinCrashReport,pl:mixin:A}
    at net.minecraft.crash.CrashReport.<init>(CrashReport.java:54) [?:?] {re:mixin,re:classloading,xf:OptiFine:default,pl:mixin:APP:mixins.ForgeWDL.json:MixinCrashReport,pl:mixin:A}
    at net.minecraft.crash.CrashReport.func_85055_a(CrashReport.java:417) [?:?] {re:mixin,re:classloading,xf:OptiFine:default,pl:mixin:APP:mixins.ForgeWDL.json:MixinCrashReport,pl:mixin:A}
    at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:828) ~[?:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}
    at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:976) [?:?] {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.4-35.1.7.jar:35.1] {}
    at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$437/1160546880.call(Unknown Source) [forge-1.16.4-35.1.7.jar:35.1] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.6.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.6.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.6.jar:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.6.jar:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.6.jar:?] {}

-- World Downloader Mod - Extensions --
Details:
    Number loaded: 2
    Hologram: Id: Hologram
Version: 2.0
Display name: Hologram support
Main author: Pokechu22
Description: 
Provides basic support for disabling holograms.
Main class: wdl.HologramHandler
Containing file: Unknown (java.lang.NullPointerException)
Implemented interfaces (2)
0: wdl.api.IEntityManager
1: wdl.api.IWDLModDescripted
Superclass: java.lang.Object
Classloader: cpw.mods.modlauncher.TransformingClassLoader@470a9030 (cpw.mods.modlauncher.TransformingClassLoader)
Annotations (0)

    EntityRealigner: Id: EntityRealigner
Version: 1.0
Display name: Entity realigner
Main author: Pokechu22
Description: 
Realigns entities to their serverside position to deal with entities that drift clientside (for example, boats).
Main class: wdl.EntityRealigner
Containing file: Unknown (java.lang.NullPointerException)
Implemented interfaces (2)
0: wdl.api.IEntityEditor
1: wdl.api.IWDLModDescripted
Superclass: java.lang.Object
Classloader: cpw.mods.modlauncher.TransformingClassLoader@470a9030 (cpw.mods.modlauncher.TransformingClassLoader)
Annotations (1)
0: @java.lang.Deprecated() (java.lang.Deprecated)

-- World Downloader Mod - State --
Details:
    minecraft: net.minecraft.client.Minecraft@19677add
    worldClient: ClientLevel
    networkManager: net.minecraft.network.NetworkManager@4db16677
    player: ClientPlayerEntity['Hunter_Rave'/2045655, l='ClientLevel', x=-2580.71, y=63.00, z=13064.15]
    windowContainer: net.minecraft.inventory.container.PlayerContainer@b548f51
    lastClickedBlock: ~~NULL~~
    lastEntity: ~~NULL~~
    saveHandler: ~~NULL~~
    chunkLoader: ~~NULL~~
    newTileEntities: {}
    newEntities: {}
    entityPositions: {}
    newMapDatas: {}
    downloading: false
    isMultiworld: false
    propsFound: true
    startOnChange: false
    overrideLastModifiedCheck: false
    saving: false
    worldLoadingDeferred: false
    worldName: 
    baseFolderName: HobbitCraft
    serverProps: wdl.config.Configuration@71f4aeb6
    worldProps: wdl.config.Configuration@71f4aeb6
    globalProps: wdl.config.Configuration@56976b8b
    defaultProps: wdl.config.DefaultConfiguration@74844216
    gameRules: net.minecraft.world.GameRules@5b0575d0

-- World Downloader Mod - Server properties --
Details:
    LockDifficuty: false
    BackupExtension: 7z
    RandomSeed: 
    LinkedWorlds: 
    Spawn: player
    BackupCommand: 7z a -bsp1 ${destination} ${source}
    Backup: ZIP
    GameType: creative
    LastSaved: 1608944700561

-- World Downloader Mod - World properties --
Details:
    LockDifficuty: false
    BackupExtension: 7z
    RandomSeed: 
    LinkedWorlds: 
    Spawn: player
    BackupCommand: 7z a -bsp1 ${destination} ${source}
    Backup: ZIP
    GameType: creative
    LastSaved: 1608944700561

-- World Downloader Mod - Global properties --
Details:
    TutorialShown: true
    UpdateETag: W/"d3f8514d95c8b789ba2b6054e8559452bf3352f853798dff4fa36c7f712a730b"

-- Sanity checks --
Details:
    MIXIN_INVENTORYBASIC: Skipped
    MIXIN_GUIINGAMEMENU: Passed
    MIXIN_WORLDCLIENT: Passed
    MIXIN_NHPC: Passed
    MIXIN_CRASHREPORT: Passed
    ENCODING: Passed
    TRIPWIRE: Skipped
    VERSION: Passed
    TRANSLATION: Passed

-- Screen render details --
Details:
    Screen name: wdl.gui.GuiSavedChunks
    Mouse location: Scaled: (450, 193). Absolute: (1351.000000, 581.000000)
    Screen size: Scaled: (854, 480). Absolute: (2560, 1440). Scale factor of 3.000000

-- Affected level --
Details:
    All players: 1 total; [ClientPlayerEntity['Hunter_Rave'/2045655, l='ClientLevel', x=-2580.71, y=63.00, z=13064.15]]
    Chunk stats: Client Chunk Cache: 529, 361
    Level dimension: minecraft:overworld
    Level spawn location: World: (-894,63,434), Chunk: (at 2,3,2 in -56,27; contains blocks -896,0,432 to -881,255,447), Region: (-2,0; contains chunks -64,0 to -33,31, blocks -1024,0,0 to -513,255,511)
    Level time: 88247 game time, 134976302 day time
    Server brand: Tuinity
    Server type: Non-integrated multiplayer server

-- System Details --
Details:
    Minecraft Version: 1.16.4
    Minecraft Version ID: 1.16.4
    Operating System: Windows 10 (amd64) version 10.0
    Java Version: 1.8.0_51, Oracle Corporation
    Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
    Memory: 946775624 bytes (902 MB) / 2113929216 bytes (2016 MB) up to 2147483648 bytes (2048 MB)
    CPUs: 4
    JVM Flags: 9 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx2G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M
    ModLauncher: 8.0.6+85+master.325de55
    ModLauncher launch target: fmlclient
    ModLauncher naming: srg
    ModLauncher services: 
        /mixin-0.8.2.jar mixin PLUGINSERVICE 
        /eventbus-3.0.5-service.jar eventbus PLUGINSERVICE 
        /forge-1.16.4-35.1.7.jar object_holder_definalize PLUGINSERVICE 
        /forge-1.16.4-35.1.7.jar runtime_enum_extender PLUGINSERVICE 
        /accesstransformers-2.2.0-shadowed.jar accesstransformer PLUGINSERVICE 
        /forge-1.16.4-35.1.7.jar capability_inject_definalize PLUGINSERVICE 
        /forge-1.16.4-35.1.7.jar runtimedistcleaner PLUGINSERVICE 
        /mixin-0.8.2.jar mixin TRANSFORMATIONSERVICE 
        /OptiFine_1.16.4_HD_U_G5.jar OptiFine TRANSFORMATIONSERVICE 
        /forge-1.16.4-35.1.7.jar fml TRANSFORMATIONSERVICE 
    FML: 35.1
    Forge: net.minecraftforge:35.1.7
    FML Language Providers: 
        javafml@35.1
        minecraft@1
    Mod List: 
        forge-1.16.4-35.1.7-client.jar                    |Minecraft                     |minecraft                     |1.16.4              |DONE      |NOSIGNATURE
        forge-1.16.4-35.1.7-universal.jar                 |Forge                         |forge                         |35.1.7              |DONE      |22:af:21:d8:19:82:7f:93:94:fe:2b:ac:b7:e4:41:57:68:39:87:b1:a7:5c:c6:44:f9:25:74:21:14:f5:0d:90
        worldedit-forge-mc1.16.3-7.2.0-dist.jar           |WorldEdit                     |worldedit                     |7.2.0+a51fa43       |DONE      |NOSIGNATURE
        WorldDownloader-forge-4.1.1.0-mc1.16.4.jar        |World Downloader (Forge)      |wdl                           |4.1.1.0             |DONE      |NOSIGNATURE
    Crash Report UUID: 487842f7-c3ad-41ef-9658-85b4488bc504
    Launched Version: 1.16.4-forge-35.1.7
    Backend library: LWJGL version 3.2.2 build 10
    Backend API: GeForce RTX 3070/PCIe/SSE2 GL version 4.6.0 NVIDIA 460.89, NVIDIA Corporation
    GL Caps: Using framebuffer using OpenGL 3.0
    Using VBOs: Yes
    Is Modded: Definitely; Client brand changed to 'forge'
    Type: Client (map_client.txt)
    Graphics mode: fancy
    Resource Packs: 
    Current Language: English (US)
    CPU: 4x Intel(R) Core(TM) i5-6600K CPU @ 3.50GHz
    OptiFine Version: OptiFine_1.16.4_HD_U_G5
    OptiFine Build: 20201106-171901
    Render Distance Chunks: 12
    Mipmaps: 4
    Anisotropic Filtering: 1
    Antialiasing: 0
    Multitexture: false
    Shaders: null
    OpenGlVersion: 4.6.0 NVIDIA 460.89
    OpenGlRenderer: GeForce RTX 3070/PCIe/SSE2
    OpenGlVendor: NVIDIA Corporation
    CpuCount: 4
Pokechu22 commented 3 years ago

Thanks for the report. The crashyness is probably related to d4febec4dbe57286a4c0a77d6bf6fd293b633dff; the GUI that draws chunks iterates through wdl.getChunkList() without checking for null chunks, but getChunkList warns that there can be null chunks. I'm not sure why there are sometimes null chunks though. What happens if you stand still for a minute or so before opening the saved chunks GUI?

brycenaddison commented 3 years ago

Thanks for the report. The crashyness is probably related to d4febec; the GUI that draws chunks iterates through wdl.getChunkList() without checking for null chunks, but getChunkList warns that there can be null chunks. I'm not sure why there are sometimes null chunks though. What happens if you stand still for a minute or so before opening the saved chunks GUI?

Same thing, it just crashes.

sudoker0 commented 3 years ago

Been over 6 months without any fix(es)

leastayspeachy commented 3 years ago

yeah Sad

Pokechu22 commented 3 years ago

Sorry about that. As I've mentioned elsewhere, I've been busy lately.

When I get around to updating the mod to 1.17, this issue should also be fixed.

Pokechu22 commented 3 years ago

I've figured out the cause and written a fix; it'll be included in the next update (whenever that is).

sudoker0 commented 3 years ago

nice