sakura-ryoko / litematica

A modern client-side schematic mod for Minecraft
GNU Lesser General Public License v3.0
457 stars 41 forks source link

When I enable chat encryption, writing the schematic materials list to a file causes the game to crash #49

Closed notavaliablename closed 1 month ago

notavaliablename commented 1 month ago

Version Info

Game Version: 1.21 Fabric Loader Version: 0.16.0 Fabric API Version: 0.100.7+1.21 MaLiLib Version: 0.20.0 Litematica Version: 0.18.999-sakura.27

Description

I often play on a Minecraft Realm server, and since Minecraft Realms does not allow disabling chat signing, I installed the No Chat Reports mod. This mod features chat encryption, but when I enable chat encryption, writing the materials list to a file causes the game to crash. I hope you can help resolve this issue. Image

Minecraft Crash Report

---- Minecraft Crash Report ---- // Hey, that tickles! Hehehe!

Time: 2024-07-24 20:02:28 Description: mouseClicked event handler

com.google.gson.JsonParseException: Action not allowed: OPEN_FILE at com.mojang.serialization.DataResult$Error.getOrThrow(DataResult.java:287) at net.minecraft.class_2561$class_2562.method_10874(class_2561.java:164) at net.minecraft.class_2561$class_2562.method_10867(class_2561.java:170) at com.aizistral.nochatreports.common.core.EncryptionUtil.recreate(EncryptionUtil.java:85) at com.aizistral.nochatreports.common.core.EncryptionUtil.tryDecrypt(EncryptionUtil.java:24) at net.minecraft.class_338.localvar$bbd000$nochatreports$modifyGUIMessage(class_338.java:624) at net.minecraft.class_338.method_44811(class_338.java:213) at net.minecraft.class_338.method_1812(class_338.java:208) at net.minecraft.class_746.method_43496(class_746.java:479) at fi.dy.masa.malilib.util.StringUtils.sendOpenFileChatMessage(StringUtils.java:82) at fi.dy.masa.litematica.gui.GuiMaterialList$ButtonListener.actionPerformedWithButton(GuiMaterialList.java:301) at fi.dy.masa.malilib.gui.button.ButtonBase.onMouseClickedImpl(ButtonBase.java:85) at fi.dy.masa.malilib.gui.widgets.WidgetBase.onMouseClicked(WidgetBase.java:92) at fi.dy.masa.malilib.gui.GuiBase.onMouseClicked(GuiBase.java:280) at fi.dy.masa.malilib.gui.GuiListBase.onMouseClicked(GuiListBase.java:92) at fi.dy.masa.malilib.gui.GuiBase.method_25402(GuiBase.java:222) at net.minecraft.class_312.method_1611(class_312.java:107) at net.minecraft.class_437.method_25412(class_437.java:431) at net.minecraft.class_312.method_1601(class_312.java:107) at net.minecraft.class_312.method_22686(class_312.java:196) at net.minecraft.class_1255.execute(class_1255.java:108) at net.minecraft.class_312.method_22684(class_312.java:196) at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) at org.lwjgl.system.JNI.invokeV(Native Method) at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3438) at com.mojang.blaze3d.systems.RenderSystem.pollEvents(RenderSystem.java:150) at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:161) at net.minecraft.class_1041.method_15998(class_1041.java:303) at net.minecraft.class_310.method_1523(class_310.java:1307) at net.minecraft.class_310.method_1514(class_310.java:882) at net.minecraft.client.main.Main.main(Main.java:256) at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480) at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100) at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129) at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

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

-- Head -- Thread: Render thread Stacktrace: at com.mojang.serialization.DataResult$Error.getOrThrow(DataResult.java:287) at net.minecraft.class_2561$class_2562.method_10874(class_2561.java:164) at net.minecraft.class_2561$class_2562.method_10867(class_2561.java:170) at com.aizistral.nochatreports.common.core.EncryptionUtil.recreate(EncryptionUtil.java:85) at com.aizistral.nochatreports.common.core.EncryptionUtil.tryDecrypt(EncryptionUtil.java:24) at net.minecraft.class_338.localvar$bbd000$nochatreports$modifyGUIMessage(class_338.java:624) at net.minecraft.class_338.method_44811(class_338.java:213) at net.minecraft.class_338.method_1812(class_338.java:208) at net.minecraft.class_746.method_43496(class_746.java:479) at fi.dy.masa.malilib.util.StringUtils.sendOpenFileChatMessage(StringUtils.java:82) at fi.dy.masa.litematica.gui.GuiMaterialList$ButtonListener.actionPerformedWithButton(GuiMaterialList.java:301) at fi.dy.masa.malilib.gui.button.ButtonBase.onMouseClickedImpl(ButtonBase.java:85) at fi.dy.masa.malilib.gui.widgets.WidgetBase.onMouseClicked(WidgetBase.java:92) at fi.dy.masa.malilib.gui.GuiBase.onMouseClicked(GuiBase.java:280) at fi.dy.masa.malilib.gui.GuiListBase.onMouseClicked(GuiListBase.java:92) at fi.dy.masa.malilib.gui.GuiBase.method_25402(GuiBase.java:222) at net.minecraft.class_312.method_1611(class_312.java:107) at net.minecraft.class_437.method_25412(class_437.java:431) at net.minecraft.class_312.method_1601(class_312.java:107) at net.minecraft.class_312.method_22686(class_312.java:196) at net.minecraft.class_1255.execute(class_1255.java:108) at net.minecraft.class_312.method_22684(class_312.java:196) at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) at org.lwjgl.system.JNI.invokeV(Native Method) at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3438) at com.mojang.blaze3d.systems.RenderSystem.pollEvents(RenderSystem.java:150) at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:161)

-- Affected screen -- Details: Screen name: fi.dy.masa.litematica.gui.GuiMaterialList Stacktrace: at net.minecraft.class_437.method_25412(class_437.java:431) at net.minecraft.class_312.method_1601(class_312.java:107) at net.minecraft.class_312.method_22686(class_312.java:196) at net.minecraft.class_1255.execute(class_1255.java:108) at net.minecraft.class_312.method_22684(class_312.java:196) at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) at org.lwjgl.system.JNI.invokeV(Native Method) at org.lwjgl.glfw.GLFW.glfwPollEvents(GLFW.java:3438) at com.mojang.blaze3d.systems.RenderSystem.pollEvents(RenderSystem.java:150) at com.mojang.blaze3d.systems.RenderSystem.flipFrame(RenderSystem.java:161) at net.minecraft.class_1041.method_15998(class_1041.java:303) at net.minecraft.class_310.method_1523(class_310.java:1307) at net.minecraft.class_310.method_1514(class_310.java:882) at net.minecraft.client.main.Main.main(Main.java:256) at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480) at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100) at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129) at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

-- Uptime -- Details: JVM uptime: 95.325s Wall uptime: 79.600s High-res time: 78.180s Client ticks: 1469 ticks / 73.450s Stacktrace: at net.minecraft.class_310.method_1587(class_310.java:2501) at net.minecraft.class_310.method_54580(class_310.java:949) at net.minecraft.class_310.method_1514(class_310.java:902) at net.minecraft.client.main.Main.main(Main.java:256) at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480) at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:100) at org.prismlauncher.EntryPoint.listen(EntryPoint.java:129) at org.prismlauncher.EntryPoint.main(EntryPoint.java:70)

-- Affected level -- Details: All players: 1 total; [class_746['InvalidShell'/494, l='ClientLevel', x=-239.04, y=71.00, z=179.70]] Chunk stats: 961, 424 Level dimension: minecraft:overworld Level spawn location: World: (0,91,0), Section: (at 0,11,0 in 0,5,0; chunk contains blocks 0,-64,0 to 15,319,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,-64,0 to 511,319,511) Level time: 27265713 game time, 5087435 day time Server brand: vanilla Server type: Non-integrated multiplayer server Tracked entity count: 166

-- Last reload -- Details: Reload number: 1 Reload reason: initial Finished: Yes Packs: vanilla, fabric, fabric-api, fabric-api-base, fabric-api-lookup-api-v1, fabric-biome-api-v1, fabric-block-api-v1, fabric-block-view-api-v2, fabric-blockrenderlayer-v1, fabric-client-tags-api-v1, fabric-command-api-v1, fabric-command-api-v2, fabric-commands-v0, fabric-content-registries-v0, fabric-convention-tags-v1, fabric-convention-tags-v2, fabric-crash-report-info-v1, fabric-data-attachment-api-v1, fabric-data-generation-api-v1, fabric-dimensions-v1, fabric-entity-events-v1, fabric-events-interaction-v0, fabric-game-rule-api-v1, fabric-item-api-v1, fabric-item-group-api-v1, fabric-key-binding-api-v1, fabric-keybindings-v0, fabric-lifecycle-events-v1, fabric-loot-api-v2, fabric-loot-api-v3, fabric-message-api-v1, fabric-model-loading-api-v1, fabric-networking-api-v1, fabric-object-builder-api-v1, fabric-particles-v1, fabric-recipe-api-v1, fabric-registry-sync-v0, fabric-renderer-api-v1, fabric-renderer-indigo, fabric-renderer-registries-v1, fabric-rendering-data-attachment-v1, fabric-rendering-fluids-v1, fabric-rendering-v0, fabric-rendering-v1, fabric-resource-conditions-api-v1, fabric-resource-loader-v0, fabric-screen-api-v1, fabric-screen-handler-api-v1, fabric-sound-api-v1, fabric-transfer-api-v1, fabric-transitive-access-wideners-v1, fabricloader, litematica, malilib, minihud, nochatreports, tweakeroo

-- System Details -- Details: Minecraft Version: 1.21 Minecraft Version ID: 1.21 Operating System: Linux (amd64) version 6.9.10-zen1-1-zen Java Version: 21.0.4, Azul Systems, Inc. Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Azul Systems, Inc. Memory: 75956976 bytes (72 MiB) / 853540864 bytes (814 MiB) up to 4104126464 bytes (3914 MiB) CPUs: 8 Processor Vendor: AuthenticAMD Processor Name: AMD Ryzen 7 3700U with Radeon Vega Mobile Gfx Identifier: AuthenticAMD Family 23 Model 24 Stepping 1 Microarchitecture: Zen / Zen+ Frequency (GHz): -0.00 Number of physical packages: 1 Number of physical CPUs: 4 Number of logical CPUs: 8 Graphics card #0 name: Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series] Graphics card #0 vendor: Advanced Micro Devices, Inc. [AMD/ATI] (0x1002) Graphics card #0 VRAM (MiB): 258.00 Graphics card #0 deviceId: 0x15d8 Graphics card #0 versionInfo: unknown Virtual memory max (MiB): 13174.82 Virtual memory used (MiB): 8321.82 Swap memory total (MiB): 10239.00 Swap memory used (MiB): 4568.29 Space in storage for jna.tmpdir (MiB): Space in storage for org.lwjgl.system.SharedLibraryExtractPath (MiB): Space in storage for io.netty.native.workdir (MiB): Space in storage for java.io.tmpdir (MiB): available: 2860.33, total: 2935.82 Space in storage for workdir (MiB): available: 551983.13, total: 614400.00 JVM Flags: 2 total; -Xms512m -Xmx3913m Fabric Mods: fabric-api: Fabric API 0.100.7+1.21 fabric-api-base: Fabric API Base 0.4.42+6573ed8cd1 fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.6.67+b5597344d1 fabric-biome-api-v1: Fabric Biome API (v1) 13.0.29+5bd9f1bcd1 fabric-block-api-v1: Fabric Block API (v1) 1.0.22+0af3f5a7d1 fabric-block-view-api-v2: Fabric BlockView API (v2) 1.0.10+6573ed8cd1 fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.52+0af3f5a7d1 fabric-client-tags-api-v1: Fabric Client Tags 1.1.15+6573ed8cd1 fabric-command-api-v1: Fabric Command API (v1) 1.2.49+f71b366fd1 fabric-command-api-v2: Fabric Command API (v2) 2.2.28+6ced4dd9d1 fabric-commands-v0: Fabric Commands (v0) 0.2.66+df3654b3d1 fabric-content-registries-v0: Fabric Content Registries (v0) 8.0.15+b5597344d1 fabric-convention-tags-v1: Fabric Convention Tags 2.0.18+7f945d5bd1 fabric-convention-tags-v2: Fabric Convention Tags (v2) 2.4.2+c111832ad1 fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.2.29+0af3f5a7d1 fabric-data-attachment-api-v1: Fabric Data Attachment API (v1) 1.1.25+6a6dfa19d1 fabric-data-generation-api-v1: Fabric Data Generation API (v1) 20.2.12+16c4ae25d1 fabric-dimensions-v1: Fabric Dimensions API (v1) 4.0.0+6fc22b99d1 fabric-entity-events-v1: Fabric Entity Events (v1) 1.6.12+6fc22b99d1 fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.7.10+e633f883d1 fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.53+6ced4dd9d1 fabric-item-api-v1: Fabric Item API (v1) 11.0.0+afdfc921d1 fabric-item-group-api-v1: Fabric Item Group API (v1) 4.1.3+78017270d1 fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.47+0af3f5a7d1 fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.45+df3654b3d1 fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 2.3.11+8f3583aed1 fabric-loot-api-v2: Fabric Loot API (v2) 3.0.13+3f89f5a5d1 fabric-loot-api-v3: Fabric Loot API (v3) 1.0.1+3f89f5a5d1 fabric-message-api-v1: Fabric Message API (v1) 6.0.13+6573ed8cd1 fabric-model-loading-api-v1: Fabric Model Loading API (v1) 2.0.0+fe474d6bd1 fabric-networking-api-v1: Fabric Networking API (v1) 4.2.0+ab7edbacd1 fabric-object-builder-api-v1: Fabric Object Builder API (v1) 15.1.13+d1321076d1 fabric-particles-v1: Fabric Particles (v1) 4.0.2+6573ed8cd1 fabric-recipe-api-v1: Fabric Recipe API (v1) 5.0.10+65089712d1 fabric-registry-sync-v0: Fabric Registry Sync (v0) 5.0.25+5bd9f1bcd1 fabric-renderer-api-v1: Fabric Renderer API (v1) 3.3.0+0ae0b97dd1 fabric-renderer-indigo: Fabric Renderer - Indigo 1.6.5+48fb1586d1 fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.68+df3654b3d1 fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.3.48+73761d2ed1 fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 3.1.6+b5597344d1 fabric-rendering-v0: Fabric Rendering (v0) 1.1.71+df3654b3d1 fabric-rendering-v1: Fabric Rendering (v1) 5.0.5+df16efd0d1 fabric-resource-conditions-api-v1: Fabric Resource Conditions API (v1) 4.2.1+d153f344d1 fabric-resource-loader-v0: Fabric Resource Loader (v0) 1.2.0+7e687b32d1 fabric-screen-api-v1: Fabric Screen API (v1) 2.0.24+b5597344d1 fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.3.82+b5597344d1 fabric-sound-api-v1: Fabric Sound API (v1) 1.0.23+6573ed8cd1 fabric-transfer-api-v1: Fabric Transfer API (v1) 5.1.15+3dccd343d1 fabric-transitive-access-wideners-v1: Fabric Transitive Access Wideners (v1) 6.0.12+6573ed8cd1 fabricloader: Fabric Loader 0.16.0 mixinextras: MixinExtras 0.4.0 java: OpenJDK 64-Bit Server VM 21 litematica: Litematica 0.18.999-sakura.27 malilib: MaLiLib 0.20.0 minecraft: Minecraft 1.21 minihud: MiniHUD 0.31.999-sakura.13 nochatreports: No Chat Reports 1.21-v2.8.0 tweakeroo: Tweakeroo 0.20.999-sakura.20 Launched Version: 1.21 Launcher name: PrismLauncher Backend library: LWJGL version 3.3.3-snapshot Backend API: AMD Radeon Vega 10 Graphics (radeonsi, raven, LLVM 18.1.8, DRM 3.57, 6.9.10-zen1-1-zen) GL version 4.6 (Core Profile) Mesa 24.1.4-arch1.2, AMD Window size: 1920x1008 GFLW Platform: x11 GL Caps: Using framebuffer using OpenGL 3.2 GL debug messages: Is Modded: Definitely; Client brand changed to 'fabric' Universe: 400921fb54442d18 Type: Client (map_client.txt) Graphics mode: fancy Render Distance: 12/12 chunks Resource Packs: vanilla, fabric, fabric-api, fabric-api-base, fabric-api-lookup-api-v1, fabric-biome-api-v1, fabric-block-api-v1, fabric-block-view-api-v2, fabric-blockrenderlayer-v1, fabric-client-tags-api-v1, fabric-command-api-v1, fabric-command-api-v2, fabric-commands-v0, fabric-content-registries-v0, fabric-convention-tags-v1, fabric-convention-tags-v2, fabric-crash-report-info-v1, fabric-data-attachment-api-v1, fabric-data-generation-api-v1, fabric-dimensions-v1, fabric-entity-events-v1, fabric-events-interaction-v0, fabric-game-rule-api-v1, fabric-item-api-v1, fabric-item-group-api-v1, fabric-key-binding-api-v1, fabric-keybindings-v0, fabric-lifecycle-events-v1, fabric-loot-api-v2, fabric-loot-api-v3, fabric-message-api-v1, fabric-model-loading-api-v1, fabric-networking-api-v1, fabric-object-builder-api-v1, fabric-particles-v1, fabric-recipe-api-v1, fabric-registry-sync-v0, fabric-renderer-api-v1, fabric-renderer-indigo, fabric-renderer-registries-v1, fabric-rendering-data-attachment-v1, fabric-rendering-fluids-v1, fabric-rendering-v0, fabric-rendering-v1, fabric-resource-conditions-api-v1, fabric-resource-loader-v0, fabric-screen-api-v1, fabric-screen-handler-api-v1, fabric-sound-api-v1, fabric-transfer-api-v1, fabric-transitive-access-wideners-v1, fabricloader, litematica, malilib, minihud, nochatreports, tweakeroo (incompatible) Current Language: zh_cn Locale: en_CN System encoding: UTF-8 File encoding: UTF-8 CPU: 8x AMD Ryzen 7 3700U with Radeon Vega Mobile Gfx

@!@# Game crashed! Crash report saved to: #@!@# /data/Documents/GameSaves/PrismLauncherInstances/1.21FabricTest/.minecraft/crash-reports/crash-2024-07-24_20.02.28-client.txt

Code: 255

sakura-ryoko commented 1 month ago

Why is No Chat Reports concerned with Writing / Reading files ?

sakura-ryoko commented 1 month ago

I also don't understand why its doing this:

at fi.dy.masa.malilib.util.StringUtils.sendOpenFileChatMessage(StringUtils.java:82)
at fi.dy.masa.litematica.gui.GuiMaterialList$ButtonListener.actionPerformedWithButton(GuiMaterialList.java:301)
at fi.dy.masa.malilib.gui.button.ButtonBase.onMouseClickedImpl(ButtonBase.java:85)
at fi.dy.masa.malilib.gui.widgets.WidgetBase.onMouseClicked(WidgetBase.java:92)
at fi.dy.masa.malilib.gui.GuiBase.onMouseClicked(GuiBase.java:280)
at fi.dy.masa.malilib.gui.GuiListBase.onMouseClicked(GuiListBase.java:92)
at fi.dy.masa.malilib.gui.GuiBase.method_25402(GuiBase.java:222)

Because its not a "Chat Message" .

sakura-ryoko commented 1 month ago

I did more code digging, and this is a "NoChatReports" bug.

Report it to them, as their JSON Serializer is passing an Empty Dynamic Registry during their "Encrypt / Decrypt" attempts.

public static Component recreate(Component component) {
        return Component.Serializer.fromJson(Component.Serializer.toJson(component, RegistryAccess.EMPTY), RegistryAccess.EMPTY);
    }

EMPTY Dynamic Registry (RegistryAccess) objects causes crashes.

notavaliablename commented 1 month ago

I did more code digging, and this is a "NoChatReports" bug.

Report it to them, as their JSON Serializer is passing an Empty Dynamic Registry during their "Encrypt / Decrypt" attempts.

public static Component recreate(Component component) {
      return Component.Serializer.fromJson(Component.Serializer.toJson(component, RegistryAccess.EMPTY), RegistryAccess.EMPTY);
  }

EMPTY Dynamic Registry (RegistryAccess) objects causes crashes.

Okay, thank you, I will submit an issue to No Chat Reports.