Disenchant price exploit
GalahadLafayette opened this issue ยท 13 comments
Hey,
Completely by chance I encountered a bug that leads to abuse when using a disenchanting table. If you put in any item and get the enchant back, all you have to do is pull out the book, swap it for a new one and you can pull out another enchant at the same price. The higher price from the next enchant only updates when we pull out the item and put it back in the slot.
To summarize:
- put an item with several enchantments and a book
- pull out 1 enchant
- pull the book out of the slot and replace it with a new one
- do not pull out the item!
- you can pull out another enchant at the same price :)
Of course, I checked this bug on a clean version - Fabric 0.14.9
A similar situation occurs when you transfer enchants to a new item of the same type (after extraction) using anvil, just to avoid paying a higher amount for disenchant.
No problem. Other than these minor bugs, it's really fun to play your mod - I feel like it's an official update to mc developing magic :)
Awesome! Here's a zip with the newest .jar inside (jars can't be uploaded directly to github comments).
UNZIP_ME.zip
After a quick check of the reported errors, I find that all problems have been resolved. I am uploading this version on the server where I play with a friend and we will test additionally during normal play.
We have backups every 10 minutes so I'm not worried about damaging the world.
After additional testing, I have some information that unfortunately extends the aforementioned exploit. Using exploit we can not only skip the higher cost but also the requirement to set up columns. If we set a limit of drawn enchants then we can skip this one as well.
Another thing I have noticed is the problem with blocking the interface when the limits are reached. When our weapon has reached the limit and in fact the interface no longer shows enchants to be drawn (there is even a message that the limit has been reached) then if we lay down the book and click on the empty middle field (where the enchant is normally selected) then we can also draw it completely free. It looks as if the interface is simply hidden when the limit is reached and not blocked.
To summarize:
- place the table, don't place the columns
- put a sword with several enchantments and pull one of them out
- without rearranging the weapon pull out another (despite the fact that second enchantment should require a column)
- now pull out the sword, put it in again along with the book
- click the empty middle box - you will pull out another enchantment like this
In short, a fairly simple solution to both bugs would be to return the enchanted weapon along with the book, then the player will be forced to place the weapon again in the appropriate slot anyway. Alternatively, you need to add a refresh when the enchant is drawn that updates and checks the limits. As for the second bug it would be enough to lock the interface :)
For the time being, I disabled this table using KubeJS and look forward to a fix. If you need more information / more detailed instructions / tests then let me know in this thread - I have some time then I can help :)
Great! I didn't expect such a quick response :) The update will also come out for the older 1.18.2?
Thank you for the additional testing. I think I found those same additional exploits while working on my fixes. I believe I have fixed all the issues mentioned and the fix will be out soon! The problems were indeed related to the system not properly refreshing after a disenchant happened.
Thank you for your hard work. If I find anything else I will let you know in a new thread.
might you want an indev
version to play around with and see if all the exploits you've seen are resolved? In 1.18.2 I would assume?