Changes

Summary

  1. Modifier extraction improvements (details)
  2. Introduce LazyToolStack to make it easier to do recipe outputs (details)
  3. Take advantage of the tool stack cache in the tinker station to reduce tool stack creation (details)
  4. Make enchantment converting when returning the input remove just 1 level at a time (details)
Commit 6cf93284c077e7e9de6eaefb89ab6e897d300006 by KnightMiner
Modifier extraction improvements

Can now extract modifiers using a wet sponge and a modifier crystal of the appropriate type. Ender is wild, amethyst slotless, skyslime for upgrades, earthslime for defense, and ichor for ability
Extracting enchantments now returns the tool minus the one enchantment rather than minus all enchantments, gives a bonus benefit to enderslime
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/ExtractModifierRecipe.java (diff)
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/defense.json
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/ModifierRemovalRecipeBuilder.java (diff)
The file was removedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract_dagger_modifier_sponge.json
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/modifier_dagger.json
The file was removedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract_modifier_breath.json
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/ModifierRemovalRecipe.java (diff)
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/defense_dagger.json
The file was modifiedsrc/main/resources/assets/tconstruct/lang/en_us.json (diff)
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/slotless_dagger.json
The file was removedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract_dagger_modifier_breath.json
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/ability_dagger.json
The file was modifiedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/remove_modifier_sponge.json (diff)
The file was modifiedsrc/main/resources/assets/tconstruct/book/images/worktable/extract_modifier.png (diff)
The file was removedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract_modifier_sponge.json
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/upgrade_dagger.json
The file was modifiedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/remove_modifier_venom.json (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/EnchantmentConvertingRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/data/ModifierRecipeProvider.java (diff)
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/modifier.json
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/upgrade.json
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/slotless.json
The file was modifiedsrc/main/resources/assets/tconstruct/book/tinkers_gadgetry/en_us/modifiers/extract_modifier.json (diff)
The file was addedsrc/generated/resources/data/tconstruct/recipes/tools/modifiers/worktable/extract/ability.json
Commit f63fe87472c0966f15d94d70ce0b1880d41f69fe by KnightMiner
Introduce LazyToolStack to make it easier to do recipe outputs

Using it in worktable recipes, small breaking change but the previous API was being used rather badly in a few cases so better to just port now I think. Its not heavily used by addons
Modifier recipes seem more likely to be used directly in addons so going to hold off on updating that until 1.20
The file was addedsrc/main/java/slimeknights/tconstruct/library/tools/nbt/LazyToolStack.java
The file was modifiedsrc/main/java/slimeknights/tconstruct/tables/block/entity/table/ModifierWorktableBlockEntity.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/worktable/AbstractWorktableRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/ModifierSortingRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/worktable/IModifierWorktableRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tables/client/inventory/ModifierWorktableScreen.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/worktable/ModifierSetWorktableRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/ExtractModifierRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/ModifierRemovalRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/ITinkerableContainer.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/item/ModifierCrystalItem.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/EnchantmentConvertingRecipe.java (diff)
Commit 1c29b34f5d93c4af8a32afd0125ab7fe092551bf by KnightMiner
Take advantage of the tool stack cache in the tinker station to reduce tool stack creation

Should have done this back when I added the cache, since quite a few modifier recipes parse the tool on matches; avoids needing to parse all that multiple times
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/modifiers/adding/IncrementalModifierRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/modifiers/adding/ModifierRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/modifiers/adding/OverslimeModifierRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/ArmorDyeingRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tables/recipe/TinkerStationRepairRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/modifiers/adding/SwappableModifierRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/tinkerstation/repairing/ModifierRepairTinkerStationRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/modifiers/adding/MultilevelModifierRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/library/recipe/tinkerstation/ITinkerStationRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/CreativeSlotRecipe.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tables/recipe/TinkerStationPartSwapping.java (diff)
The file was modifiedsrc/main/java/slimeknights/tconstruct/tables/recipe/TinkerStationDamagingRecipe.java (diff)
Commit 744aca88897534a830feb08da649ec7bf97ab6ba by KnightMiner
Make enchantment converting when returning the input remove just 1 level at a time

I cannot think of anything we lose by doing so.
The file was modifiedsrc/main/java/slimeknights/tconstruct/tools/recipe/EnchantmentConvertingRecipe.java (diff)