Mekanism Tools

Mekanism Tools

77M Downloads

QIO Data Wipe

A-72 opened this issue ยท 1 comments

commented

Issue description

By breaking the system to create an effect of 2 identical items separately in the QIO Dashboard and restart the server, the entire QIO system might be wiped out. This can happen randomly when you progress through a heavy modpack or a random chance (as I cannot reproduce this issue without editing nbt file directly)

"create an effect of 2 identical items separately in the QIO Dashboard" refers to having different uuids with identical value in qio_type_cache.dat. Then restart the server to invoke QIOGlobalItemLookupDataHandler::load, but in line 115 there is a call to BiMap::put function, which can throw if the value is identical to any of the previous BiMap stored value with different uuid. As a result, the function just being terminated with java.lang.IllegalArgumentException and have the incomplete result.

Then QIO Drives correct themselves by removing any pairs of key/data if key does not exist in an already loaded BiMap, which result in some items completely wiped out from the region file. The related code unchanged in 1.21 branch so I think it affect every versions from 1.19 to 1.21, including the current dev branch.

Steps to reproduce

  1. Break any QIO system as mentioned above.
  2. Restart the server.
  3. Check any QIO Drive and notice the item removal.

Minecraft version

1.20.x or earlier (No longer being developed)

NeoForge version

43.3.5 (Forge)

Mekanism version

Older

Other relevant versions

No response

If a (crash)log is relevant for this issue, link it here: (It's almost always relevant)

No response

commented

This is only possible by wrongly editing the data manually as you did. It is not possible for it to otherwise occur, due to how that bimap functions.