refinedmods / refinedstorage

An elegant solution to your hoarding problem.
https://refinedmods.com/refined-storage
MIT License
362 stars 177 forks source link

Crash and world corruption when breaking RS parts with Ars Nouveau #3583

Closed TheFlyron closed 1 year ago

TheFlyron commented 1 year ago

Describe the bug

We found out the hard way on our small server when you're picking up RS storage system parts with a spell book from Ars (Touch + Break) and quickly replacing them with different RS parts, the server suddenly crashes and the world is corrupted until the chunk in which this happened is deleted/reset. It's a ClassCastException of looking for one type of RS part and finding another. See log and steps how to reproduce.

How can we reproduce this bug or crash?

  1. Create modpack with Refined Storage and Ars Nouveau (+ Curio), JEI may be optional
  2. Start new world, can be flat. Creative mode.
  3. Place a (Creative) Controller and some cables like this: https://imgur.com/a/0oKUnTG
  4. Get a (Creative) Spell Book from Ars Nouveau, create a new spell with Touch -> Break. You need to hold Sneak to break RS parts.
  5. Take an RS Exporter. Break a piece of cable and quickly replace it with the exporter. Then break the exporter and replace it with a cable. Cycle both items in one spot until crash occurs.
  6. World is now corrupt and cannot be started again without deleting that chunk.

What Minecraft version is this happening on?

Minecraft 1.20.1

What Forge version is this happening on?

47.2.0

What Refined Storage version is this happening on?

Refined Storage 1.12.3 & Ars Nouveau 4.7.4

Relevant log output

---- Minecraft Crash Report ----
// Don't be sad, have a hug! <3

Time: 2023-11-02 18:15:32
Description: Exception ticking world

java.lang.ClassCastException: class com.refinedmods.refinedstorage.apiimpl.network.node.ExporterNetworkNode cannot be cast to class com.refinedmods.refinedstorage.apiimpl.network.node.CableNetworkNode (com.refinedmods.refinedstorage.apiimpl.network.node.ExporterNetworkNode and com.refinedmods.refinedstorage.apiimpl.network.node.CableNetworkNode are in module refinedstorage@1.12.3 of loader 'TRANSFORMER' @75023c53)
    at com.refinedmods.refinedstorage.blockentity.CableBlockEntity.writeUpdate(CableBlockEntity.java:49) ~[refinedstorage-1.12.3.jar%23163!/:?] {re:classloading}
    at com.refinedmods.refinedstorage.blockentity.BaseBlockEntity.m_5995_(BaseBlockEntity.java:35) ~[refinedstorage-1.12.3.jar%23163!/:?] {re:classloading}
    at net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket.m_195642_(ClientboundBlockEntityDataPacket.java:21) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading}
    at com.refinedmods.refinedstorage.blockentity.BaseBlockEntity.getUpdatePacket(BaseBlockEntity.java:40) ~[refinedstorage-1.12.3.jar%23163!/:?] {re:classloading}
    at com.refinedmods.refinedstorage.blockentity.BaseBlockEntity.m_58483_(BaseBlockEntity.java:13) ~[refinedstorage-1.12.3.jar%23163!/:?] {re:classloading}
    at net.minecraft.server.level.ChunkHolder.m_288223_(ChunkHolder.java:243) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:mixin,re:classloading}
    at net.minecraft.server.level.ChunkHolder.m_288224_(ChunkHolder.java:235) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:mixin,re:classloading}
    at net.minecraft.server.level.ChunkHolder.m_288111_(ChunkHolder.java:221) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:mixin,re:classloading}
    at net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket.m_132992_(ClientboundSectionBlocksUpdatePacket.java:68) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading}
    at net.minecraft.server.level.ChunkHolder.m_140054_(ChunkHolder.java:220) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:mixin,re:classloading}
    at net.minecraft.server.level.ServerChunkCache.m_184021_(ServerChunkCache.java:374) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?] {}
    at net.minecraft.server.level.ServerChunkCache.m_8490_(ServerChunkCache.java:373) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.level.ServerChunkCache.m_201698_(ServerChunkCache.java:312) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.level.ServerLevel.m_8793_(ServerLevel.java:305) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.m_5703_(MinecraftServer.java:893) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.m_5705_(MinecraftServer.java:814) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.server.IntegratedServer.m_5705_(IntegratedServer.java:89) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:661) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at java.lang.Thread.run(Thread.java:833) ~[?:?] {}

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

-- Head --
Thread: Server thread
Stacktrace:
    at com.refinedmods.refinedstorage.blockentity.CableBlockEntity.writeUpdate(CableBlockEntity.java:49) ~[refinedstorage-1.12.3.jar%23163!/:?] {re:classloading}
    at com.refinedmods.refinedstorage.blockentity.BaseBlockEntity.m_5995_(BaseBlockEntity.java:35) ~[refinedstorage-1.12.3.jar%23163!/:?] {re:classloading}
    at net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket.m_195642_(ClientboundBlockEntityDataPacket.java:21) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading}
    at com.refinedmods.refinedstorage.blockentity.BaseBlockEntity.getUpdatePacket(BaseBlockEntity.java:40) ~[refinedstorage-1.12.3.jar%23163!/:?] {re:classloading}
    at com.refinedmods.refinedstorage.blockentity.BaseBlockEntity.m_58483_(BaseBlockEntity.java:13) ~[refinedstorage-1.12.3.jar%23163!/:?] {re:classloading}
    at net.minecraft.server.level.ChunkHolder.m_288223_(ChunkHolder.java:243) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:mixin,re:classloading}
    at net.minecraft.server.level.ChunkHolder.m_288224_(ChunkHolder.java:235) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:mixin,re:classloading}
    at net.minecraft.server.level.ChunkHolder.m_288111_(ChunkHolder.java:221) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:mixin,re:classloading}
    at net.minecraft.network.protocol.game.ClientboundSectionBlocksUpdatePacket.m_132992_(ClientboundSectionBlocksUpdatePacket.java:68) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading}
    at net.minecraft.server.level.ChunkHolder.m_140054_(ChunkHolder.java:220) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:mixin,re:classloading}
    at net.minecraft.server.level.ServerChunkCache.m_184021_(ServerChunkCache.java:374) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?] {}
    at net.minecraft.server.level.ServerChunkCache.m_8490_(ServerChunkCache.java:373) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.level.ServerChunkCache.m_201698_(ServerChunkCache.java:312) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.level.ServerLevel.m_8793_(ServerLevel.java:305) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B}
-- Affected level --
Details:
    All players: 1 total; [ServerPlayer['TheFlyron'/1, l='ServerLevel[Test 1]', x=-1.28, y=-60.00, z=7.04]]
    Chunk stats: 2809
    Level dimension: minecraft:overworld
    Level spawn location: World: (0,-60,0), Section: (at 0,4,0 in 0,-4,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: 7186 game time, 7186 day time
    Level name: Test 1
    Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: true
    Level weather: Rain time: 165054 (now: false), thunder time: 87349 (now: false)
    Known server brands: forge
    Removed feature flags: 
    Level was modded: true
    Level storage version: 0x04ABD - Anvil
Stacktrace:
    at net.minecraft.server.MinecraftServer.m_5703_(MinecraftServer.java:893) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.m_5705_(MinecraftServer.java:814) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.server.IntegratedServer.m_5705_(IntegratedServer.java:89) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:661) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[client-1.20.1-20230612.114412-srg.jar%23164!/:?] {re:classloading,pl:accesstransformer:B}
    at java.lang.Thread.run(Thread.java:833) ~[?:?] {}

-- System Details --
Details:
    Minecraft Version: 1.20.1
    Minecraft Version ID: 1.20.1
    Operating System: Windows 11 (amd64) version 10.0
    Java Version: 17.0.8, Microsoft
    Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft
    Memory: 720318456 bytes (686 MiB) / 1786773504 bytes (1704 MiB) up to 10502537216 bytes (10016 MiB)
    CPUs: 12
    Processor Vendor: AuthenticAMD
    Processor Name: AMD Ryzen 5 5600G with Radeon Graphics         
    Identifier: AuthenticAMD Family 25 Model 80 Stepping 0
    Microarchitecture: Zen 3
    Frequency (GHz): 3.89
    Number of physical packages: 1
    Number of physical CPUs: 6
    Number of logical CPUs: 12
    Graphics card #0 name: NVIDIA GeForce GTX 1080
    Graphics card #0 vendor: NVIDIA (0x10de)
    Graphics card #0 VRAM (MB): 4095.00
    Graphics card #0 deviceId: 0x1b80
    Graphics card #0 versionInfo: DriverVersion=31.0.15.3742
    Graphics card #1 name: AMD Radeon(TM) Graphics
    Graphics card #1 vendor: Advanced Micro Devices, Inc. (0x1002)
    Graphics card #1 VRAM (MB): 4095.00
    Graphics card #1 deviceId: 0x1638
    Graphics card #1 versionInfo: DriverVersion=31.0.12027.9001
    Memory slot #0 capacity (MB): 16384.00
    Memory slot #0 clockSpeed (GHz): 2.13
    Memory slot #0 type: DDR4
    Memory slot #1 capacity (MB): 16384.00
    Memory slot #1 clockSpeed (GHz): 2.13
    Memory slot #1 type: DDR4
    Virtual memory max (MB): 48016.45
    Virtual memory used (MB): 25147.77
    Swap memory total (MB): 19456.00
    Swap memory used (MB): 82.72
    JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx10016m -Xms256m
    Server Running: true
    Player Count: 1 / 8; [ServerPlayer['TheFlyron'/1, l='ServerLevel[Test 1]', x=-1.28, y=-60.00, z=7.04]]
    Data Packs: vanilla, mod:mixinextras (incompatible), mod:forge, mod:curios (incompatible), mod:refinedstorage, mod:geckolib, mod:ars_nouveau (incompatible), mod:jei
    Enabled Feature Flags: minecraft:vanilla
    World Generation: Stable
    Type: Integrated Server (map_client.txt)
    Is Modded: Definitely; Client brand changed to 'forge'; Server brand changed to 'forge'
    Launched Version: forge-47.2.0
    ModLauncher: 10.0.9+10.0.9+main.dcd20f30
    ModLauncher launch target: forgeclient
    ModLauncher naming: srg
    ModLauncher services: 
        mixin-0.8.5.jar mixin PLUGINSERVICE 
        eventbus-6.0.5.jar eventbus PLUGINSERVICE 
        fmlloader-1.20.1-47.2.0.jar slf4jfixer PLUGINSERVICE 
        fmlloader-1.20.1-47.2.0.jar object_holder_definalize PLUGINSERVICE 
        fmlloader-1.20.1-47.2.0.jar runtime_enum_extender PLUGINSERVICE 
        fmlloader-1.20.1-47.2.0.jar capability_token_subclass PLUGINSERVICE 
        accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE 
        fmlloader-1.20.1-47.2.0.jar runtimedistcleaner PLUGINSERVICE 
        modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE 
        modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE 
    FML Language Providers: 
        minecraft@1.0
        lowcodefml@null
        javafml@null
    Mod List: 
        client-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |DONE      |Manifest: ****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****
        mixinextras-forge-0.2.0-beta.8.jar                |MixinExtras                   |mixinextras                   |0.2.0-beta.8        |DONE      |Manifest: NOSIGNATURE
        forge-1.20.1-47.2.0-universal.jar                 |Forge                         |forge                         |47.2.0              |DONE      |Manifest: ****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****:****
        curios-forge-5.4.2+1.20.1.jar                     |Curios API                    |curios                        |5.4.2+1.20.1        |DONE      |Manifest: NOSIGNATURE
        refinedstorage-1.12.3.jar                         |Refined Storage               |refinedstorage                |1.12.3              |DONE      |Manifest: NOSIGNATURE
        geckolib-forge-1.20.1-4.2.2.jar                   |GeckoLib 4                    |geckolib                      |4.2.2               |DONE      |Manifest: NOSIGNATURE
        ars_nouveau-1.20.1-4.7.4-all.jar                  |Ars Nouveau                   |ars_nouveau                   |4.7.4               |DONE      |Manifest: NOSIGNATURE
        jei-1.20.1-forge-15.2.0.27.jar                    |Just Enough Items             |jei                           |**.**.**.**           |DONE      |Manifest: NOSIGNATURE
    Crash Report UUID: 20a4baf3-062e-46bc-9bf4-3c3667d13edf
    FML: 47.2
    Forge: net.minecraftforge:47.2.0
raoulvdberge commented 1 year ago

Hi, thank you for reporting. I will be investigating this for the next RS version.

raoulvdberge commented 1 year ago

Will be tackled in the issue linked above

raoulvdberge commented 1 year ago

Thank you by the way, you had really good reproduction steps and I was able to reproduce it locally thanks to you.

raoulvdberge commented 1 year ago

Hello. This bug has been fixed in v1.12.4 of Refined Storage. If this issue persists anyway, please feel free to create a new bug.

TheFlyron commented 1 year ago

Finally came around to test the setup with the new version. Seems fine to me now. I was even able to join old, previously corrupted worlds again. Good job!👍

raoulvdberge commented 1 year ago

Thank you @TheFlyron !

raoulvdberge commented 1 year ago

This bug has also been fixed in v1.11.7 of Refined Storage for Minecraft 1.19.2. If this issue persists anyway, please feel free to create a new bug.

raoulvdberge commented 1 year ago

Hello, this bug is now also fixed for Minecraft 1.18.2 in v1.10.6.