stewbeet 3.2.2__tar.gz → 3.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {stewbeet-3.2.2 → stewbeet-3.2.4}/PKG-INFO +4 -2
- {stewbeet-3.2.2 → stewbeet-3.2.4}/pyproject.toml +4 -2
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/all/__init__.py +1 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/constants.py +0 -23
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/constants.pyi +0 -6
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/smart_ore_generation.py +1 -1
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/smart_ore_generation.pyi +1 -1
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/io.py +21 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/__init__.py +2 -1
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/__init__.pyi +1 -0
- stewbeet-3.2.4/stewbeet/dependencies/download_manager.py +248 -0
- stewbeet-3.2.4/stewbeet/dependencies/download_manager.pyi +43 -0
- stewbeet-3.2.4/stewbeet/dependencies/official_libs.py +72 -0
- stewbeet-3.2.4/stewbeet/dependencies/official_libs.pyi +5 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/copy_to_destination/__init__.py +69 -34
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/smithed.py +1 -1
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/custom_blocks/__init__.py +1 -2
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/dependencies/__init__.py +11 -1
- stewbeet-3.2.4/stewbeet/plugins/finalyze/unload/__init__.py +253 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/main.py +1 -1
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/merge_smithed_weld/weld.py +9 -16
- stewbeet-3.2.4/stewbeet/plugins/verify_definitions/silent.py +11 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Bitwise.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Block.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Color.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Dump.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Environment.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Generation.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Health.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Hitbox.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Id.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Interaction.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Link.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Log.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Math.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Move.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Position.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Random.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Raycast.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Schedule.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Sidebar.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Spline.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf String.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Time.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Tree.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Vector.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf View.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Xp.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Common Signals.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Furnace NBT Recipes.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/RealisticExplosion.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/SmartOreGeneration.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Smithed Actionbar.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Smithed Crafter.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/datapack/Smithed Custom Block.zip +0 -0
- stewbeet-3.2.2/stewbeet/dependencies/resource_pack/Smithed Crafter.zip +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/LICENSE +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/README.md +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/__init__.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/__main__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/all/__init__.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/all/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/all/silent.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/cli.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/cli.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/__init__.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/cd_utils.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/cd_utils.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/github.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/github.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/modrinth.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/modrinth.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/pmc.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/pmc.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/smithed.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/smithed.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/balancing.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/batteries.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/cables.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_d.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_de.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dn.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dne.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dns.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnse.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ds.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dse.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_e.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_n.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ne.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_new.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ns.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nse.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_s.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_se.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_u.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ud.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ude.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udn.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udne.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udns.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnse.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uds.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udse.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ue.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_un.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_une.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uns.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unse.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_us.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_use.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usew.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uw.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_w.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_lib_calls.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/gui.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/py.typed +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/base_block.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/base_item.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_block.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_connected.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_item.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_block.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_connected.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_item.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/wrench.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/__init__.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/__memory__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/__memory__.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/_recipe_list.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/_utils.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/block.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/external_item.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/ingredients.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/item.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/painting.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/recipe.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/wiki_button.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/__init__.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/completion.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/completion.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/equipments.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/equipments.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/materials.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/materials.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/records.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/records.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/simplenergy.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/simplenergy.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/text.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/text.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/dump.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/dump.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/migrate.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/migrate.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/template.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/template.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/equation.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/loot_table.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/sounds.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/text_component.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/bookshelf.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/bookshelf.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/bookshelf_config.json +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/archive/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/archive/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/context_analyzer.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/execution_parser.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/function_analyzer.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/macro_analyzer.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/macro_parser.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/object.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/type_inference.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/lang_file/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/lang_file/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/lang_file/utils.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/scoreboard_constants/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/scoreboard_constants/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compatibilities/neo_enchant/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compatibilities/simpledrawer/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compute_sha1/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compute_sha1/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/copy_to_destination/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_paintings/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_paintings/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/awakened_forge.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/furnace.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/pulverizer.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/vanilla.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/custom_blocks/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/loading/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/loading/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/loot_tables/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/loot_tables/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/constants.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/extend_datapack.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/match.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/mod.mcdoc +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/quick_sort.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/selection_sort.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/basic_datapack_structure/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/check_unused_textures/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/custom_blocks_ticking/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/dependencies/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/last_final/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/last_final/silent.py +0 -0
- {stewbeet-3.2.2/stewbeet/plugins/ingame_manual → stewbeet-3.2.4/stewbeet/plugins/finalyze/unload}/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/awakened_forge_1.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/awakened_forge_2.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x3.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x4.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/book.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/mining.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/stonecutting.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_mining_template.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/book_components.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/book_optimizer.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/craft_content.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/dialog.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/image_utils.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/iso_renders.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/other_utils.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/page_font.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/shared_import.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/showcase_image.py +0 -0
- {stewbeet-3.2.2/stewbeet/plugins/merge_smithed_weld → stewbeet-3.2.4/stewbeet/plugins/ingame_manual}/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/stardust_forge.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/.gitignore +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/1book.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/_README.md +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/awakened_forge_1.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/awakened_forge_2.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x3.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x4.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/book.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/donut_holer.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/mining.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/stonecutting.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_mining_template.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/text_components.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/initialize/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/initialize/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/initialize/source_lore_font.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/merge_smithed_weld/__init__.py +0 -0
- {stewbeet-3.2.2/stewbeet/plugins/resource_pack/check_power_of_2 → stewbeet-3.2.4/stewbeet/plugins/merge_smithed_weld}/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +0 -0
- {stewbeet-3.2.2/stewbeet/plugins/resource_pack/item_models → stewbeet-3.2.4/stewbeet/plugins/resource_pack/check_power_of_2}/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/resource_pack/item_models/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/resource_pack/item_models/object.py +0 -0
- {stewbeet-3.2.2/stewbeet/plugins/resource_pack/sounds → stewbeet-3.2.4/stewbeet/plugins/resource_pack/item_models}/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/resource_pack/sounds/__init__.py +0 -0
- {stewbeet-3.2.2/stewbeet/plugins/verify_definitions → stewbeet-3.2.4/stewbeet/plugins/resource_pack/sounds}/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/verify_definitions/__init__.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/py.typed +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/silent.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/silent.pyi +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/utils.py +0 -0
- {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/utils.pyi +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: stewbeet
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.4
|
|
4
4
|
Summary: Beet Framework made to help generating advanced Minecraft datapack contents
|
|
5
5
|
Author: Stoupy51
|
|
6
6
|
Author-email: Stoupy51 <stoupy51@gmail.com>
|
|
@@ -10,13 +10,15 @@ Classifier: Programming Language :: Python :: 3
|
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.14
|
|
11
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
12
12
|
Classifier: Operating System :: OS Independent
|
|
13
|
-
Requires-Dist: stouputils>=1.24.
|
|
13
|
+
Requires-Dist: stouputils>=1.24.11
|
|
14
14
|
Requires-Dist: model-resolver>=1.15.2
|
|
15
15
|
Requires-Dist: beet>=0.115.0
|
|
16
16
|
Requires-Dist: bolt>=0.50.1
|
|
17
17
|
Requires-Dist: mecha>=0.103.0
|
|
18
18
|
Requires-Dist: mutagen>=1.47.0
|
|
19
19
|
Requires-Dist: pyperclip>=1.8.0
|
|
20
|
+
Requires-Dist: fsspec>=2026.3.0
|
|
21
|
+
Requires-Dist: paramiko>=4.0.0
|
|
20
22
|
Requires-Dist: smithed
|
|
21
23
|
Requires-Python: >=3.14
|
|
22
24
|
Project-URL: Homepage, https://github.com/Stoupy51/stewbeet
|
|
@@ -8,7 +8,7 @@ module-root = ""
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "stewbeet"
|
|
11
|
-
version = "3.2.
|
|
11
|
+
version = "3.2.4"
|
|
12
12
|
description = "Beet Framework made to help generating advanced Minecraft datapack contents"
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
license = "MIT"
|
|
@@ -24,13 +24,15 @@ authors = [
|
|
|
24
24
|
{ name = "Stoupy51", email = "stoupy51@gmail.com" },
|
|
25
25
|
]
|
|
26
26
|
dependencies = [
|
|
27
|
-
"stouputils>=1.24.
|
|
27
|
+
"stouputils>=1.24.11",
|
|
28
28
|
"model_resolver>=1.15.2",
|
|
29
29
|
"beet>=0.115.0",
|
|
30
30
|
"bolt>=0.50.1",
|
|
31
31
|
"mecha>=0.103.0",
|
|
32
32
|
"mutagen>=1.47.0",
|
|
33
33
|
"pyperclip>=1.8.0",
|
|
34
|
+
"fsspec>=2026.3.0",
|
|
35
|
+
"paramiko>=4.0.0",
|
|
34
36
|
"smithed",
|
|
35
37
|
]
|
|
36
38
|
|
|
@@ -23,6 +23,7 @@ FINALYZE_PLUGINS = (
|
|
|
23
23
|
"stewbeet.plugins.finalyze.custom_blocks_ticking",
|
|
24
24
|
"stewbeet.plugins.finalyze.basic_datapack_structure",
|
|
25
25
|
"stewbeet.plugins.finalyze.dependencies",
|
|
26
|
+
"stewbeet.plugins.finalyze.unload",
|
|
26
27
|
"stewbeet.plugins.finalyze.check_unused_textures",
|
|
27
28
|
"stewbeet.plugins.finalyze.last_final",
|
|
28
29
|
"stewbeet.plugins.auto.scoreboard_constants",
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
# Imports
|
|
4
4
|
from beet.library import base
|
|
5
5
|
from beet.toolchain.config import FormatSpecifier
|
|
6
|
-
from stouputils.typing import JsonDict
|
|
7
|
-
|
|
8
|
-
from ..dependencies.bookshelf import BOOKSHELF_MODULES
|
|
9
6
|
|
|
10
7
|
# Minecraft version specific constants
|
|
11
8
|
MORE_DATA_PACK_FORMATS: dict[tuple[int, ...], FormatSpecifier] = {
|
|
@@ -195,23 +192,3 @@ class Conventions:
|
|
|
195
192
|
AVOID_BLOCK_TAGS_NO_KILL: str = BLOCK_TAGS_NO_KILL.avoid
|
|
196
193
|
""" Deprecated (use Conventions.BLOCK_TAGS_NO_KILL.avoid instead): String of tags to avoid when executing a block command. Example of use: execute as @e[{Conventions.AVOID_BLOCK_TAGS_NO_KILL}] run function your_namespace:kill_entity """
|
|
197
194
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
# Automatically handled dependencies for supported libs with additional key "is_used" that is True when the lib is found to be used.
|
|
201
|
-
def official_lib_used(lib: str) -> bool:
|
|
202
|
-
is_used: bool = OFFICIAL_LIBS[lib]["is_used"]
|
|
203
|
-
OFFICIAL_LIBS[lib]["is_used"] = True
|
|
204
|
-
return is_used
|
|
205
|
-
|
|
206
|
-
OFFICIAL_LIBS: dict[str, JsonDict] = {
|
|
207
|
-
"common_signals": {"version":[0, 2, 0], "name":"Common Signals", "url":"https://github.com/Stoupy51/CommonSignals", "is_used": False},
|
|
208
|
-
"smithed.custom_block": {"version":[0, 7, 1], "name":"Smithed Custom Block", "url":"https://wiki.smithed.dev/libraries/custom-block/", "is_used": False},
|
|
209
|
-
"smithed.crafter": {"version":[0, 7, 1], "name":"Smithed Crafter", "url":"https://wiki.smithed.dev/libraries/crafter/", "is_used": False},
|
|
210
|
-
"smithed.actionbar": {"version":[0, 6, 6], "name":"Smithed Actionbar", "url":"https://wiki.smithed.dev/libraries/actionbar/", "is_used": False},
|
|
211
|
-
"furnace_nbt_recipes": {"version":[1, 10, 1], "name":"Furnace NBT Recipes", "url":"https://github.com/Stoupy51/FurnaceNbtRecipes", "is_used": False},
|
|
212
|
-
"smart_ore_generation": {"version":[1, 7, 2], "name":"SmartOreGeneration", "url":"https://github.com/Stoupy51/SmartOreGeneration", "is_used": False},
|
|
213
|
-
"realistic_explosion": {"version":[1, 2, 0], "name":"RealisticExplosion", "url":"https://github.com/Stoupy51/RealisticExplosionLibrary", "is_used": False},
|
|
214
|
-
"itemio": {"version":[1, 4, 1], "name":"ItemIO", "url":"https://github.com/edayot/ItemIO", "is_used": False},
|
|
215
|
-
**BOOKSHELF_MODULES,
|
|
216
|
-
}
|
|
217
|
-
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
from ..dependencies.bookshelf import BOOKSHELF_MODULES as BOOKSHELF_MODULES
|
|
2
1
|
from _typeshed import Incomplete
|
|
3
2
|
from beet.toolchain.config import FormatSpecifier as FormatSpecifier
|
|
4
|
-
from stouputils.typing import JsonDict as JsonDict
|
|
5
3
|
|
|
6
4
|
MORE_DATA_PACK_FORMATS: dict[tuple[int, ...], FormatSpecifier]
|
|
7
5
|
MORE_ASSETS_PACK_FORMATS: dict[tuple[int, ...], FormatSpecifier]
|
|
@@ -51,7 +49,3 @@ class Conventions:
|
|
|
51
49
|
AVOID_BLOCK_TAGS: str
|
|
52
50
|
AVOID_ENTITY_TAGS_NO_KILL: str
|
|
53
51
|
AVOID_BLOCK_TAGS_NO_KILL: str
|
|
54
|
-
|
|
55
|
-
def official_lib_used(lib: str) -> bool: ...
|
|
56
|
-
|
|
57
|
-
OFFICIAL_LIBS: dict[str, JsonDict]
|
|
@@ -7,8 +7,8 @@ import stouputils as stp
|
|
|
7
7
|
from beet import BlockTag
|
|
8
8
|
from stouputils.typing import JsonDict
|
|
9
9
|
|
|
10
|
+
from ...dependencies import official_lib_used
|
|
10
11
|
from ..__memory__ import Mem
|
|
11
|
-
from ..constants import official_lib_used
|
|
12
12
|
from ..utils.io import set_json_encoder, write_function
|
|
13
13
|
|
|
14
14
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
from ...dependencies import official_lib_used as official_lib_used
|
|
1
2
|
from ..__memory__ import Mem as Mem
|
|
2
|
-
from ..constants import official_lib_used as official_lib_used
|
|
3
3
|
from ..utils.io import set_json_encoder as set_json_encoder, write_function as write_function
|
|
4
4
|
from stouputils.typing import JsonDict as JsonDict
|
|
5
5
|
|
|
@@ -210,6 +210,27 @@ def write_load_file(
|
|
|
210
210
|
return write_versioned_function("load/confirm_load", content, overwrite, prepend, tags, condition)
|
|
211
211
|
|
|
212
212
|
|
|
213
|
+
def write_unload_file(
|
|
214
|
+
content: str,
|
|
215
|
+
overwrite: bool = False,
|
|
216
|
+
prepend: bool = False,
|
|
217
|
+
tags: list[str] | None = None,
|
|
218
|
+
condition: Callable[[str], bool] | None = lambda existing_content: True, # pyright: ignore[reportUnknownLambdaType]
|
|
219
|
+
) -> Function | None:
|
|
220
|
+
""" Write the content to the unload file
|
|
221
|
+
|
|
222
|
+
Args:
|
|
223
|
+
content (str): The content to write
|
|
224
|
+
overwrite (bool): If the file should be overwritten (default: Append the content)
|
|
225
|
+
prepend (bool): If the content should be prepended instead of appended (not used if overwrite is True)
|
|
226
|
+
tags (list[str] | None): The function tags to add to the function (ex: ["namespace:something"] for 'data/namespace/tags/function/something.json')
|
|
227
|
+
condition (Callable[[str], bool]): A function that takes the existing content and returns whether the new content should be written (default: always write)
|
|
228
|
+
"""
|
|
229
|
+
unload_tag = f"{Mem.ctx.project_id}:unload"
|
|
230
|
+
tags = (tags or []) + [unload_tag]
|
|
231
|
+
return write_versioned_function("unload", content, overwrite, prepend, tags, condition)
|
|
232
|
+
|
|
233
|
+
|
|
213
234
|
def write_tick_file(
|
|
214
235
|
content: str,
|
|
215
236
|
overwrite: bool = False,
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"""Dynamic dependency download manager for StewBeet.
|
|
2
|
+
|
|
3
|
+
Downloads official libraries on first use via beet's content-addressed cache
|
|
4
|
+
(``ctx.cache["stewbeet"]``). Three providers are supported:
|
|
5
|
+
|
|
6
|
+
1. **Smithed API** — ``bs.*`` and ``smithed.*`` libs
|
|
7
|
+
2. **Modrinth API** — ``itemio`` (and future Modrinth libs)
|
|
8
|
+
3. **Static URLs** — ``common_signals``, ``furnace_nbt_recipes``, etc.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import json
|
|
14
|
+
from dataclasses import dataclass
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
from typing import Any
|
|
17
|
+
|
|
18
|
+
import stouputils as stp
|
|
19
|
+
from beet import Context
|
|
20
|
+
from stouputils.typing import JsonDict
|
|
21
|
+
|
|
22
|
+
from ..core.constants import LATEST_MC_VERSION
|
|
23
|
+
from .official_libs import OFFICIAL_LIBS
|
|
24
|
+
|
|
25
|
+
SMITHED_API_BASE: str = "https://api.smithed.dev/v2/packs"
|
|
26
|
+
MODRINTH_API_BASE: str = "https://api.modrinth.com/v2"
|
|
27
|
+
HEADERS: dict[str, str] = {"User-Agent": "StewBeet"}
|
|
28
|
+
BUILD_CACHE: dict[str, list[DownloadedLib]] = {} # cache-dir → results
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass
|
|
32
|
+
class DownloadedLib:
|
|
33
|
+
lib_ns: str
|
|
34
|
+
name: str
|
|
35
|
+
version: tuple[int, ...]
|
|
36
|
+
datapack_path: str | None
|
|
37
|
+
resource_pack_path: str | None
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# ---------------------------------------------------------------------------
|
|
41
|
+
# Helpers
|
|
42
|
+
# ---------------------------------------------------------------------------
|
|
43
|
+
|
|
44
|
+
def mc_tuple(ctx: Context) -> tuple[int, ...]:
|
|
45
|
+
return tuple(int(x) for x in (ctx.minecraft_version or LATEST_MC_VERSION).split(".") if x.isdigit())
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def mc_str(ctx: Context) -> str:
|
|
49
|
+
return ctx.minecraft_version or LATEST_MC_VERSION
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def lookup_static(lib_data: JsonDict, mc_tup: tuple[int, ...]) -> tuple[tuple[int, ...], str] | None:
|
|
53
|
+
"""Return ``(dep_ver, url)`` for the highest MC key ``<= mc_tup``, or ``None``."""
|
|
54
|
+
best: tuple[tuple[int, ...], tuple[int, ...], str] | None = None
|
|
55
|
+
for (mc_key, dep_ver), url in lib_data.get("static_urls", {}).items():
|
|
56
|
+
if mc_key <= mc_tup and (best is None or mc_key > best[0]):
|
|
57
|
+
best = (mc_key, dep_ver, url)
|
|
58
|
+
return (best[1], best[2]) if best else None
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def cached_json(ctx: Context, url: str) -> Any | None:
|
|
62
|
+
try:
|
|
63
|
+
path: Path = ctx.cache["stewbeet"].download(url, headers=HEADERS)
|
|
64
|
+
return json.loads(path.read_text(encoding="utf-8"))
|
|
65
|
+
except Exception as exc:
|
|
66
|
+
stp.warning(f"Failed to fetch '{url}': {exc}")
|
|
67
|
+
return None
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def cached_zip(ctx: Context, url: str) -> Path | None:
|
|
71
|
+
"""Download *url* via beet cache, ensuring the file has a ``.zip`` suffix."""
|
|
72
|
+
if not url or url == "can't find":
|
|
73
|
+
return None
|
|
74
|
+
try:
|
|
75
|
+
cache = ctx.cache["stewbeet"]
|
|
76
|
+
path = cache.get_path(url)
|
|
77
|
+
if not path.suffix:
|
|
78
|
+
path = path.with_suffix(".zip")
|
|
79
|
+
return cache.download(url, path, headers=HEADERS)
|
|
80
|
+
except Exception as exc:
|
|
81
|
+
stp.warning(f"Failed to download '{url}': {exc}")
|
|
82
|
+
return None
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def version_str(ver: list[int] | tuple[int, ...]) -> str:
|
|
86
|
+
return ".".join(str(x) for x in ver)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def parse_version(s: str) -> tuple[int, ...]:
|
|
90
|
+
return tuple(int(x) for x in s.strip("v").split(".") if x.isdigit())
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def mc_compatible(versions: list[JsonDict], mc_tup: tuple[int, ...]) -> list[JsonDict]:
|
|
94
|
+
"""Return versions whose supports list includes mc_tup (exact), falling back to max(supports) <= mc_tup."""
|
|
95
|
+
def sup_tuples(v: JsonDict) -> list[tuple[int, ...]]:
|
|
96
|
+
return [parse_version(s) for s in v.get("supports", [])]
|
|
97
|
+
exact = [v for v in versions if mc_tup in sup_tuples(v)]
|
|
98
|
+
if exact:
|
|
99
|
+
return exact
|
|
100
|
+
return [v for v in versions if sup_tuples(v) and max(sup_tuples(v)) <= mc_tup]
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
# ---------------------------------------------------------------------------
|
|
104
|
+
# Providers
|
|
105
|
+
# ---------------------------------------------------------------------------
|
|
106
|
+
|
|
107
|
+
def resolve_smithed_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_tup: tuple[int, ...]) -> DownloadedLib | None:
|
|
108
|
+
smithed_id = lib_data.get("smithed_id") or ("bookshelf-" + lib_ns[3:])
|
|
109
|
+
target: str | None = version_str(lib_data["version"]) if "version" in lib_data else None
|
|
110
|
+
|
|
111
|
+
data = cached_json(ctx, f"{SMITHED_API_BASE}/{smithed_id}")
|
|
112
|
+
if not data or "versions" not in data:
|
|
113
|
+
stp.warning(f"Smithed API returned no data for '{smithed_id}'. Skipping.")
|
|
114
|
+
return None
|
|
115
|
+
|
|
116
|
+
versions: list[JsonDict] = data["versions"]
|
|
117
|
+
if target:
|
|
118
|
+
# Pinned version: find exact match, fall back to latest compatible
|
|
119
|
+
match = next((v for v in versions if v.get("name") == target), None)
|
|
120
|
+
if match is None:
|
|
121
|
+
compat = mc_compatible(versions, mc_tup)
|
|
122
|
+
match = max(compat or versions, key=lambda v: parse_version(v.get("name", "0.0.0")), default=None)
|
|
123
|
+
if match:
|
|
124
|
+
stp.warning(f"Smithed '{smithed_id}' v{target} not found; using v{match['name']} instead.")
|
|
125
|
+
else:
|
|
126
|
+
# No pinned version: pick latest compatible with user's MC
|
|
127
|
+
compat = mc_compatible(versions, mc_tup)
|
|
128
|
+
match = max(compat or versions, key=lambda v: parse_version(v.get("name", "0.0.0")), default=None)
|
|
129
|
+
|
|
130
|
+
if match is None:
|
|
131
|
+
stp.warning(f"Smithed '{smithed_id}': no versions available. Skipping.")
|
|
132
|
+
return None
|
|
133
|
+
|
|
134
|
+
downloads: JsonDict = match.get("downloads", {})
|
|
135
|
+
dp = cached_zip(ctx, downloads.get("datapack", ""))
|
|
136
|
+
rp = cached_zip(ctx, downloads.get("resourcepack", ""))
|
|
137
|
+
if dp is None:
|
|
138
|
+
stp.warning(f"No datapack download for Smithed '{smithed_id}'. Skipping.")
|
|
139
|
+
return None
|
|
140
|
+
|
|
141
|
+
ver = parse_version(match["name"])
|
|
142
|
+
lib_data["version"] = list(ver)
|
|
143
|
+
return DownloadedLib(lib_ns, lib_data["name"], ver, str(dp), str(rp) if rp else None)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def resolve_modrinth_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_ver: str) -> DownloadedLib | None:
|
|
147
|
+
slug = lib_data["modrinth_slug"]
|
|
148
|
+
base = f"{MODRINTH_API_BASE}/project/{slug}/version"
|
|
149
|
+
|
|
150
|
+
versions = cached_json(ctx, f"{base}?game_versions=[%22{mc_ver}%22]&loaders=[%22datapack%22]")
|
|
151
|
+
if not versions:
|
|
152
|
+
versions = cached_json(ctx, f"{base}?loaders=[%22datapack%22]")
|
|
153
|
+
if not versions:
|
|
154
|
+
stp.warning(f"No Modrinth release for '{slug}' (MC {mc_ver}). Skipping.")
|
|
155
|
+
return None
|
|
156
|
+
|
|
157
|
+
releases = [v for v in versions if v.get("version_type") == "release"]
|
|
158
|
+
vd: JsonDict = (releases or versions)[0]
|
|
159
|
+
ver = parse_version(vd.get("version_number", "0.0.0"))
|
|
160
|
+
|
|
161
|
+
files: list[JsonDict] = vd.get("files", [])
|
|
162
|
+
primary = next((f for f in files if f.get("primary")), files[0] if files else None)
|
|
163
|
+
if not primary:
|
|
164
|
+
stp.warning(f"No download file for Modrinth '{slug}'.")
|
|
165
|
+
return None
|
|
166
|
+
|
|
167
|
+
lib_data["version"] = list(ver)
|
|
168
|
+
dp = cached_zip(ctx, primary["url"])
|
|
169
|
+
if dp is None:
|
|
170
|
+
return None
|
|
171
|
+
non_primary = [f for f in files if not f.get("primary")]
|
|
172
|
+
rp = cached_zip(ctx, non_primary[0]["url"]) if non_primary else None
|
|
173
|
+
|
|
174
|
+
return DownloadedLib(lib_ns, lib_data["name"], ver, str(dp), str(rp) if rp else None)
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def resolve_static_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_tup: tuple[int, ...], mc_ver: str) -> DownloadedLib | None:
|
|
178
|
+
entry = lookup_static(lib_data, mc_tup)
|
|
179
|
+
if entry is None:
|
|
180
|
+
stp.warning(f"No static URL for '{lib_ns}' (MC {mc_ver}). Skipping.")
|
|
181
|
+
return None
|
|
182
|
+
dep_ver, url = entry
|
|
183
|
+
if url == "can't find":
|
|
184
|
+
stp.warning(f"Download URL for '{lib_ns}' (MC {mc_ver}) not yet configured. Skipping.")
|
|
185
|
+
return None
|
|
186
|
+
|
|
187
|
+
lib_data["version"] = list(dep_ver)
|
|
188
|
+
dp = cached_zip(ctx, url)
|
|
189
|
+
if dp is None:
|
|
190
|
+
return None
|
|
191
|
+
return DownloadedLib(lib_ns, lib_data["name"], dep_ver, str(dp), None)
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
# ---------------------------------------------------------------------------
|
|
195
|
+
# Public entry point
|
|
196
|
+
# ---------------------------------------------------------------------------
|
|
197
|
+
|
|
198
|
+
@stp.handle_error
|
|
199
|
+
def get_lib_paths(ctx: Context) -> list[DownloadedLib]:
|
|
200
|
+
""" Download all ``is_used`` official libs and return their cached paths.
|
|
201
|
+
|
|
202
|
+
Results are memoised per build so weld.py and copy_to_destination can
|
|
203
|
+
both call this without redundant work.
|
|
204
|
+
"""
|
|
205
|
+
cache_key = str(ctx.cache["stewbeet"].directory)
|
|
206
|
+
if cache_key in BUILD_CACHE:
|
|
207
|
+
return BUILD_CACHE[cache_key]
|
|
208
|
+
|
|
209
|
+
ctx.cache["stewbeet"].timeout(days=30)
|
|
210
|
+
mc_t = mc_tuple(ctx)
|
|
211
|
+
mc_v = mc_str(ctx)
|
|
212
|
+
results: list[DownloadedLib] = []
|
|
213
|
+
|
|
214
|
+
for lib_ns, lib_data in OFFICIAL_LIBS.items():
|
|
215
|
+
if not lib_data.get("is_used", False):
|
|
216
|
+
continue
|
|
217
|
+
source = lib_data.get("source", "")
|
|
218
|
+
if source == "smithed":
|
|
219
|
+
r = resolve_smithed_lib(ctx, lib_ns, lib_data, mc_t)
|
|
220
|
+
elif source == "modrinth":
|
|
221
|
+
r = resolve_modrinth_lib(ctx, lib_ns, lib_data, mc_v)
|
|
222
|
+
elif source == "static":
|
|
223
|
+
r = resolve_static_lib(ctx, lib_ns, lib_data, mc_t, mc_v)
|
|
224
|
+
else:
|
|
225
|
+
continue
|
|
226
|
+
if r:
|
|
227
|
+
results.append(r)
|
|
228
|
+
|
|
229
|
+
# Also process custom load_dependencies entries that specify a source
|
|
230
|
+
load_deps: JsonDict = ctx.meta.get("stewbeet", {}).get("load_dependencies", {})
|
|
231
|
+
for lib_ns, lib_data in load_deps.items():
|
|
232
|
+
source = lib_data.get("source", "")
|
|
233
|
+
if not source:
|
|
234
|
+
continue # old-format entry with explicit version — nothing to download
|
|
235
|
+
if source == "smithed":
|
|
236
|
+
r = resolve_smithed_lib(ctx, lib_ns, lib_data, mc_t)
|
|
237
|
+
elif source == "modrinth":
|
|
238
|
+
r = resolve_modrinth_lib(ctx, lib_ns, lib_data, mc_v)
|
|
239
|
+
elif source == "static":
|
|
240
|
+
r = resolve_static_lib(ctx, lib_ns, lib_data, mc_t, mc_v)
|
|
241
|
+
else:
|
|
242
|
+
stp.warning(f"Unknown source '{source}' for load_dependency '{lib_ns}'. Skipping download.")
|
|
243
|
+
continue
|
|
244
|
+
if r:
|
|
245
|
+
results.append(r)
|
|
246
|
+
|
|
247
|
+
BUILD_CACHE[cache_key] = results
|
|
248
|
+
return results
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import stouputils as stp
|
|
2
|
+
from ..core.constants import LATEST_MC_VERSION as LATEST_MC_VERSION
|
|
3
|
+
from .official_libs import OFFICIAL_LIBS as OFFICIAL_LIBS
|
|
4
|
+
from beet import Context as Context
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from stouputils.typing import JsonDict as JsonDict
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
SMITHED_API_BASE: str
|
|
11
|
+
MODRINTH_API_BASE: str
|
|
12
|
+
HEADERS: dict[str, str]
|
|
13
|
+
BUILD_CACHE: dict[str, list[DownloadedLib]]
|
|
14
|
+
|
|
15
|
+
@dataclass
|
|
16
|
+
class DownloadedLib:
|
|
17
|
+
lib_ns: str
|
|
18
|
+
name: str
|
|
19
|
+
version: tuple[int, ...]
|
|
20
|
+
datapack_path: str | None
|
|
21
|
+
resource_pack_path: str | None
|
|
22
|
+
|
|
23
|
+
def mc_tuple(ctx: Context) -> tuple[int, ...]: ...
|
|
24
|
+
def mc_str(ctx: Context) -> str: ...
|
|
25
|
+
def lookup_static(lib_data: JsonDict, mc_tup: tuple[int, ...]) -> tuple[tuple[int, ...], str] | None:
|
|
26
|
+
"""Return ``(dep_ver, url)`` for the highest MC key ``<= mc_tup``, or ``None``."""
|
|
27
|
+
def cached_json(ctx: Context, url: str) -> Any | None: ...
|
|
28
|
+
def cached_zip(ctx: Context, url: str) -> Path | None:
|
|
29
|
+
"""Download *url* via beet cache, ensuring the file has a ``.zip`` suffix."""
|
|
30
|
+
def version_str(ver: list[int] | tuple[int, ...]) -> str: ...
|
|
31
|
+
def parse_version(s: str) -> tuple[int, ...]: ...
|
|
32
|
+
def mc_compatible(versions: list[JsonDict], mc_tup: tuple[int, ...]) -> list[JsonDict]:
|
|
33
|
+
"""Return versions whose supports list includes mc_tup (exact), falling back to max(supports) <= mc_tup."""
|
|
34
|
+
def resolve_smithed_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_tup: tuple[int, ...]) -> DownloadedLib | None: ...
|
|
35
|
+
def resolve_modrinth_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_ver: str) -> DownloadedLib | None: ...
|
|
36
|
+
def resolve_static_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_tup: tuple[int, ...], mc_ver: str) -> DownloadedLib | None: ...
|
|
37
|
+
@stp.handle_error
|
|
38
|
+
def get_lib_paths(ctx: Context) -> list[DownloadedLib]:
|
|
39
|
+
""" Download all ``is_used`` official libs and return their cached paths.
|
|
40
|
+
|
|
41
|
+
\tResults are memoised per build so weld.py and copy_to_destination can
|
|
42
|
+
\tboth call this without redundant work.
|
|
43
|
+
\t"""
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
|
|
2
|
+
# ruff: noqa: E501, I001
|
|
3
|
+
# Imports
|
|
4
|
+
from stouputils.typing import JsonDict
|
|
5
|
+
|
|
6
|
+
def official_lib_used(lib: str) -> bool:
|
|
7
|
+
is_used: bool = OFFICIAL_LIBS[lib]["is_used"]
|
|
8
|
+
OFFICIAL_LIBS[lib]["is_used"] = True
|
|
9
|
+
return is_used
|
|
10
|
+
|
|
11
|
+
# Each entry has: name, url, is_used, source ("smithed"|"modrinth"|"static")
|
|
12
|
+
# Smithed entries can have: version, smithed_id, has_resource_pack
|
|
13
|
+
# Modrinth entries can have: modrinth_slug
|
|
14
|
+
# Static entries have: static_urls {(mc_ver_tuple, dep_ver_tuple): url}
|
|
15
|
+
# Bookshelf modules are merged with source="smithed" (smithed_id derived from bs.X → bookshelf-X)
|
|
16
|
+
OFFICIAL_LIBS: dict[str, JsonDict] = {
|
|
17
|
+
|
|
18
|
+
# Smithed API libs
|
|
19
|
+
"smithed.custom_block": {"name":"Smithed Custom Block", "url":"https://wiki.smithed.dev/libraries/custom-block/", "is_used": False, "source":"smithed", "smithed_id":"custom-block"},
|
|
20
|
+
"smithed.crafter": {"name":"Smithed Crafter", "url":"https://wiki.smithed.dev/libraries/crafter/", "is_used": False, "source":"smithed", "smithed_id":"crafter", "has_resource_pack": True},
|
|
21
|
+
"smithed.actionbar": {"name":"Smithed Actionbar", "url":"https://wiki.smithed.dev/libraries/actionbar/", "is_used": False, "source":"smithed", "smithed_id":"actionbar"},
|
|
22
|
+
|
|
23
|
+
# Modrinth API libs
|
|
24
|
+
"itemio": {"name":"ItemIO", "url":"https://github.com/edayot/ItemIO", "is_used": False, "source":"modrinth", "modrinth_slug":"itemio"},
|
|
25
|
+
|
|
26
|
+
# Static URL libs (version resolved from static_urls at download time)
|
|
27
|
+
"common_signals": {"name":"Common Signals", "url":"https://github.com/Stoupy51/CommonSignals", "is_used": False, "source":"static", "static_urls": {
|
|
28
|
+
((1, 21, 7), (0, 2, 0)): "https://github.com/Stoupy51/CommonSignals/releases/download/v0.2.0/CommonSignals_datapack.zip",
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"furnace_nbt_recipes": {"name":"Furnace NBT Recipes", "url":"https://github.com/Stoupy51/FurnaceNbtRecipes", "is_used": False, "source":"static", "static_urls": {
|
|
32
|
+
((1, 21, 8), (1, 10, 1)): "https://github.com/Stoupy51/FurnaceNbtRecipes/releases/download/v1.10.1/FurnaceNbtRecipes_datapack.zip",
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"smart_ore_generation": {"name":"SmartOreGeneration", "url":"https://github.com/Stoupy51/SmartOreGeneration", "is_used": False, "source":"static", "static_urls": {
|
|
36
|
+
((1, 21, 7), (1, 7, 2)): "https://github.com/Stoupy51/SmartOreGeneration/releases/download/v1.7.2/SmartOreGeneration_datapack.zip",
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"realistic_explosion": {"name":"RealisticExplosion", "url":"https://github.com/Stoupy51/RealisticExplosionLibrary", "is_used": False, "source":"static", "static_urls": {
|
|
40
|
+
((1, 21, 11), (1, 2, 0)): "https://github.com/Stoupy51/RealisticExplosionLibrary/releases/download/v1.2.0/RealisticExplosion_datapack.zip",
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
# Bookshelf modules (resolved via Smithed API with smithed_id)
|
|
45
|
+
"bs.bitwise": {"name": "Bookshelf Bitwise", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-bitwise"},
|
|
46
|
+
"bs.block": {"name": "Bookshelf Block", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-block"},
|
|
47
|
+
"bs.color": {"name": "Bookshelf Color", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-color"},
|
|
48
|
+
"bs.dump": {"name": "Bookshelf Dump", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-dump"},
|
|
49
|
+
"bs.environment": {"name": "Bookshelf Environment", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-environment"},
|
|
50
|
+
"bs.generation": {"name": "Bookshelf Generation", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-generation"},
|
|
51
|
+
"bs.health": {"name": "Bookshelf Health", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-health"},
|
|
52
|
+
"bs.hitbox": {"name": "Bookshelf Hitbox", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-hitbox"},
|
|
53
|
+
"bs.id": {"name": "Bookshelf Id", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-id"},
|
|
54
|
+
"bs.interaction": {"name": "Bookshelf Interaction", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-interaction"},
|
|
55
|
+
"bs.link": {"name": "Bookshelf Link", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-link"},
|
|
56
|
+
"bs.log": {"name": "Bookshelf Log", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-log"},
|
|
57
|
+
"bs.math": {"name": "Bookshelf Math", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-math"},
|
|
58
|
+
"bs.move": {"name": "Bookshelf Move", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-move"},
|
|
59
|
+
"bs.position": {"name": "Bookshelf Position", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-position"},
|
|
60
|
+
"bs.random": {"name": "Bookshelf Random", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-random"},
|
|
61
|
+
"bs.raycast": {"name": "Bookshelf Raycast", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-raycast"},
|
|
62
|
+
"bs.schedule": {"name": "Bookshelf Schedule", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-schedule"},
|
|
63
|
+
"bs.sidebar": {"name": "Bookshelf Sidebar", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-sidebar"},
|
|
64
|
+
"bs.spline": {"name": "Bookshelf Spline", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-spline"},
|
|
65
|
+
"bs.string": {"name": "Bookshelf String", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-string"},
|
|
66
|
+
"bs.time": {"name": "Bookshelf Time", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-time"},
|
|
67
|
+
"bs.tree": {"name": "Bookshelf Tree", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-tree"},
|
|
68
|
+
"bs.vector": {"name": "Bookshelf Vector", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-vector"},
|
|
69
|
+
"bs.view": {"name": "Bookshelf View", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-view"},
|
|
70
|
+
"bs.xp": {"name": "Bookshelf Xp", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-xp"}
|
|
71
|
+
}
|
|
72
|
+
|