Occultism

Occultism

19M Downloads

Taking Familiar Rings out of Dimensional Storage behaves strangely

f-raZ0R opened this issue ยท 4 comments

commented

Describe the bug

Taking familiar rings out of dimensional storage will always take out the first ring shown, instead of whatever you selected. This seems to only affect familiar rings, and not other NBT containing items like written books or soul gems.

To Reproduce
Steps to reproduce the behavior:

  1. Put multiple familiar rings containing different familiars inside of a dimensional storage controller.
  2. Take one out
  3. notice that instead of taking out the familiar you selected, you took out something different.

Expected behavior
I would always retrieve the familiar ring that I had selected.

Screenshots
https://github.com/klikli-dev/occultism/assets/30442287/ddb1db35-90a9-4fbc-a5ad-3a51a2b8bf81

System (please complete the following information):

  • Occultism Version: 1.89.1
  • OS: [e.g. Windows]: Windows 10
  • Minecraft Version: 1.20.1
  • Modpack Link and Version, or list of mods: Tested in an environment with purely the dependencies of curios, geckolib, modonomicon, and smartbrainlib.
  • Forge Version: tested on both 47.2.0 and 47.1.3 to ensure that this wasn't just a Lex Manos Imploding issue

Additional context
Happens regardless of whether you are accessing the storage from a wormhole, the actual controller, or an accessor. You can still retrieve all of the rings by just taking them all out one by one, of course.

The bug still happens even if i rename each ring in an anvil, as long as multiple show up in a single search query.

commented

Further update on this issue, this seems to also happen with Apotheosis's gems, and on one occasion there, of putting gems into a storage fast enough, caused one of the gems to be completely deleted from the storage.
Definitely should look into this issue more, if it can cause items to be deleted.

commented

@f-raZ0R @steventsvetkov I think I know what is going on.

The storage actuator is different from a chest in how it identifies items. Chests identify items by the slot they occupy, the actuator does not do this, instead it tries to create a query to get a fitting item (this allows scenarios where a full stack of an item is taken, even if under the hood the item is split into multiple stacks from previous take operations).

The problem is that certain items do not send their full nbt tag to the client side (usually that is items that store other items), which means that the query is incomplete.

I think there are some ways to solve this, but I have to experiment

commented

This bug with apotheosis items still exists as of the latest version, is there a way around this?

commented

I am not sure how to fix it to be honest, it would require a bigger rework on how items are identified on server vs client.
However, it looks like in 1.20.6+ this will resolve itself due to changes to vanilla minecraft.

For this reason I will close the issue. If it remains in 1.20.6 please let me know and I will reassess the situation