Storage Drawers: Biomes O' Plenty Pack

Storage Drawers: Biomes O' Plenty Pack

6M Downloads

Duplication/Conversion Bug: Compacting Drawers

Danekjovax opened this issue ยท 11 comments

commented

MC 1.16.5
Forge 36.2.31
StorageDrawers-1.16.3-8.5.1
ImmersiveEngineering-1.16.5-5.0.7-143

Seems the previous dupe fix got "some" of the problem I was observing, but not all of it. May be a mod interaction issue at this point. I used the following steps to reproduce:

  1. Get a compacting drawer. Place it down.

  2. Get a Quantify Key and activate the counter on the compacting drawer.

  3. Get 1 bock and 1 ingot of Immersive Engineering Steel in your hotbar. Also grab a diamond and put it in your hotbar.

  4. Place the Block of steel into the compacting drawer. (Notice that the ingot slot isn't populating - this is an indication that this block can be duped. Trying to place an ingot in it at this point won't work.)
    image

  5. Take the Block out of the drawer then place the ingot in. (Note the correct counts) Pull out the ingot.

  6. Place the block back in. (Notice the missing ingot slot again.) Now, pull the block out and then place it back in a second time. (Note the identical counts!)
    image

  7. Place the ingot in. Note that the ingot/block numbers are incrementing 1:1.
    image

  8. Pull 1 block out, convert it to 9 ingots, then place all ingots into the drawer. Note the same incrementing.
    image

You get the pattern at this point that this can be a duplication exploit. However, there's one other thing I saw while testing:

  1. Pull out all Steel ingots/blocks. The drawer should revert to blank state.
  2. Place the diamond into the drawer and then pull it back out. (this should show proper behavior).
  3. Now, place the blocks of Steel back into the drawer. (Note: things appear like they did in step 3.)
  4. Pull all the Steel blocks out and place them back in a second time. Note that the Blocks and diamonds are now showing in the display, with the identical counts.
    image

Placing any diamonds into the drawer at this point will result in a matching increment of Steel blocks.

You see where a player could go with this?
image

As an extra note, using nuggets can also cause the same conversion/duplication issue between ingots/blocks.

commented

This is still unresolved and causing issues in my pack. If this could be addressed before 1.16 support is dropped, that would be great. Thanks!

commented

Is this issue exclusive to 1.16? Couldn't reproduce on latest 1.18 versions of SD/IE.

commented

I discovered this issue as well in 1.18 using mod version 10.2.0. You can reproduce it in fewer steps, and it can be used to convert any non-compressible item to any compressible item and vice versa, or any item to any other item if you use two steps.

How to reproduce:

  1. Place the compacting drawers
  2. Insert a compressible item, then remove it.
  3. Insert a non-compressible item, remove it, then replace it.

The non-compressible item will be at the top, and the compressible one will be at the bottom. You can add more of either and then take them out to duplicate.

commented

I also just realized it works using items that only compress once vs twice.
image

commented

I see, managed to reproduce it in 1.18

commented

@Danekjovax @Elfinlocks I fixed the bug in this PR: #1017. If the issue is urgent and you don't want to wait for the release, you can try building the jar yourself.

commented

Excellent, thank you! For now we'll wait a little bit for the PR to be approved, as we've kept this one under wraps. ;)

commented

@Danekjovax @Elfinlocks I fixed the bug in this PR: #1017. If the issue is urgent and you don't want to wait for the release, you can try building the jar yourself.

Appreciate your reply. We'll await the release and test again.

commented

@Danekjovax @Elfinlocks A new 1.16 release was posted yesterday with the dupe fix and some performance imporvements, give it a try.

commented

@Quinteger What about 1.18? We've been patiently waiting, but having a dupe glitch on our server is scary.

commented

@SimonMeskens The fix was originally done in 1.18, 1.16 was just a backport. The next 1.18 release will have it included.