SlimeKnights / TinkersConstruct

Tinker a little, build a little, tinker a little more...
MIT License
1.23k stars 777 forks source link

Lustrous trait can be used to obtain infinite metal from one ore in 1.18 #5268

Open TomatoFriesLAN opened 1 month ago

TomatoFriesLAN commented 1 month ago

Minecraft Version

1.18.2

Forge Version

40.2.0

Mantle Version

1.9.50

Tinkers' Construct Version

3.7.2.167

Describe your issue

If a tool with lustrous (e.g. platinum pickaxe) is used to mine ancient debris, both ancient debris and debris scrap will drop. If the tool also has silky, similar behavior arises when mining metal ores as well. This allows players to extract infinitely many nuggets from a single block of ore.

Crash Report

No response

Other mods

None, but lustrous cannot be obtained legitimately without datapacks or other mods. To reproduce, enable forceIntegrationMaterials and cheat in platinum tools.

Tried reproducing with just Tinkers?

Yes

Does this issue affect Tinkers' Construct in 1.19.2?

No

Performance Enchancers

None of the above

Searched for known issues?

Checked pinned issues, Searched open issues, Searched closed issues, Checked the FAQ, Checked the in game books

koh-gh commented 1 month ago

Platinum is intended to be the highest quality material, and I think the effects are overpowered to match that.

There are many mods that increase the yield of materials, and nuggets normally cannot be recycled into blocks, so this may have been intentional.

KnightMiner commented 1 month ago

Platinum is intended to be the highest quality material

No its not.

If a tool with lustrous (e.g. platinum pickaxe) is used to mine ancient debris, both ancient debris and debris scrap will drop. If the tool also has silky, similar behavior arises when mining metal ores as well. This allows players to extract infinitely many nuggets from a single block of ore.

This sounds wrong to me, as I specifically told it not to drop if the ore itself already drops. I'll test again when I have time, but I just checked the JSON and it correctly ensures it skips when silk touch is applied. Or more precisely, it skips if the block already drops itself.

KnightMiner commented 1 month ago

Did a quick look through the code, seems to be a Mantle bug on 1.18, its not properly reading in the conditions from JSON. 1.19 uses my new JSON serializer API which handles just this sort of problem so its not an issue there