stewbeet 3.3.2__tar.gz → 3.4.0__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.3.2 → stewbeet-3.4.0}/PKG-INFO +5 -5
- {stewbeet-3.3.2 → stewbeet-3.4.0}/pyproject.toml +5 -5
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/__init__.py +1 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/__init__.pyi +1 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/cli.py +16 -3
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/cables.py +133 -18
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/__memory__.py +7 -3
- stewbeet-3.4.0/stewbeet/core/__memory__.pyi +10 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/cls/ingredients.py +0 -1
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/completion.py +12 -13
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/completion.pyi +0 -2
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/simplenergy.py +1 -3
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/simplenergy.pyi +0 -1
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/text.py +3 -3
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/text.pyi +3 -3
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/utils/text_component.py +0 -4
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/dependencies/download_manager.py +18 -20
- stewbeet-3.4.0/stewbeet/plugins/archive/__init__.py +156 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/lang_file/utils.py +4 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/dependencies/__init__.py +1 -1
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/__init__.py +57 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/api.py +58 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/assets/home.png +0 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/assets/wiki_growing_seed.png +0 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/button_layout.py +73 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/config.py +133 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/dialog.py +185 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/glyphs.py +156 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/images.py +320 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/iso_renders.py +73 -27
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/manual.py +491 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/manual_emit.py +204 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/book_optimizer.py → stewbeet-3.4.0/stewbeet/plugins/ingame_manual/optimizer.py +27 -46
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/__init__.py +25 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/base.py +70 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/browser_page.py +98 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/button_layout.py +8 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/category_page.py +98 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/custom_page.py +42 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/intro_page.py +46 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/item_page.py +264 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/raw_page.py +32 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/pages/texture_page.py +54 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/paths.py +15 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/__init__.py +22 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/buttons.py +35 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/collection.py +215 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/components.py +112 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/hovers.py +61 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/registry.py +88 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/renderer.py +230 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/types/__init__.py +5 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/types/awakened_forge.py +142 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/types/furnace.py +105 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/types/linear.py +87 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/types/shaped.py +166 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/recipes/types/smithing.py +80 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/refs.py +30 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/showcase.py +97 -0
- stewbeet-3.4.0/stewbeet/plugins/ingame_manual/special.py +69 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/initialize/__init__.py +10 -0
- stewbeet-3.4.0/stewbeet/plugins/merge_smithed_weld/__init__.py +54 -0
- stewbeet-3.4.0/stewbeet/plugins/merge_smithed_weld/weld.py +150 -0
- stewbeet-3.4.0/stewbeet/plugins/verify_definitions/__init__.py +12 -0
- stewbeet-3.3.2/stewbeet/core/__memory__.pyi +0 -9
- stewbeet-3.3.2/stewbeet/plugins/archive/__init__.py +0 -117
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/__init__.py +0 -60
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/book_components.py +0 -139
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/craft_content.py +0 -442
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/dialog.py +0 -223
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/image_utils.py +0 -173
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/main.py +0 -1058
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/other_utils.py +0 -211
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/page_font.py +0 -230
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/shared_import.py +0 -144
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/showcase_image.py +0 -161
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/stardust_forge.py +0 -32
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/.gitignore +0 -1
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/1book.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/_README.md +0 -5
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/awakened_forge_1.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/awakened_forge_2.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x3.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x4.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/book.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/donut_holer.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/mining.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/stonecutting.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/wiki_mining_template.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
- stewbeet-3.3.2/stewbeet/plugins/ingame_manual/text_components.py +0 -48
- stewbeet-3.3.2/stewbeet/plugins/merge_smithed_weld/__init__.py +0 -43
- stewbeet-3.3.2/stewbeet/plugins/merge_smithed_weld/weld.py +0 -186
- stewbeet-3.3.2/stewbeet/plugins/verify_definitions/__init__.py +0 -356
- stewbeet-3.3.2/stewbeet/plugins/verify_definitions/silent.py +0 -11
- {stewbeet-3.3.2 → stewbeet-3.4.0}/LICENSE +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/README.md +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/__main__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/all/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/all/__init__.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/all/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/all/silent.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/cli.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/__init__.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/cd_utils.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/cd_utils.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/github.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/github.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/modrinth.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/modrinth.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/pmc.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/pmc.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/smithed.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/continuous_delivery/smithed.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/balancing.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/batteries.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_d.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_de.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dn.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dne.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dns.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnse.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ds.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dse.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_e.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_n.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ne.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_new.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ns.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nse.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_s.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_se.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_u.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ud.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ude.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udn.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udne.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udns.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnse.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uds.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udse.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ue.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_un.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_une.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uns.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unse.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_us.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_use.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usew.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uw.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_cable_models/variant_w.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/energy_lib_calls.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/gui.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/py.typed +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/servo_mechanism_models/base_block.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/servo_mechanism_models/base_item.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_block.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_connected.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_item.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_block.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_connected.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_item.json +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/contrib/simplenergy/wrench.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/__init__.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/cls/_recipe_list.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/cls/_utils.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/cls/block.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/cls/external_item.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/cls/item.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/cls/painting.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/cls/recipe.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/cls/wiki_button.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/constants.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/constants.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/__init__.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/equipments.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/equipments.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/materials.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/materials.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/records.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/records.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/smart_ore_generation.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/definitions_helper/smart_ore_generation.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/dump.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/dump.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/migrate.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/migrate.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/template.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/template.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/utils/equation.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/utils/io.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/utils/loot_table.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/core/utils/sounds.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/dependencies/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/dependencies/__init__.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/dependencies/download_manager.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/dependencies/official_libs.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/dependencies/official_libs.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/archive/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/headers/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/headers/context_analyzer.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/headers/execution_parser.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/headers/function_analyzer.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/headers/macro_analyzer.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/headers/macro_parser.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/headers/object.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/headers/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/headers/type_inference.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/lang_file/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/lang_file/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/scoreboard_constants/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/auto/scoreboard_constants/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/compatibilities/neo_enchant/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/compatibilities/simpledrawer/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/compute_sha1/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/compute_sha1/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/copy_to_destination/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/copy_to_destination/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/custom_paintings/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/custom_paintings/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/custom_recipes/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/custom_recipes/awakened_forge.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/custom_recipes/furnace.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/custom_recipes/pulverizer.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/custom_recipes/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/custom_recipes/smithed.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/custom_recipes/vanilla.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/custom_blocks/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/custom_blocks/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/loading/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/loading/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/loot_tables/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/loot_tables/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/sorters/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/sorters/constants.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/sorters/extend_datapack.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/sorters/match.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/sorters/mod.mcdoc +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/sorters/quick_sort.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/sorters/selection_sort.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/datapack/sorters/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/basic_datapack_structure/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/check_unused_textures/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/custom_blocks_ticking/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/dependencies/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/last_final/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/last_final/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/unload/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/finalyze/unload/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/awakened_forge_1.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/awakened_forge_2.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x3.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x4.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/book.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/mining.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/stonecutting.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/wiki_mining_template.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/initialize/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/initialize/source_lore_font.py +0 -0
- {stewbeet-3.3.2/stewbeet/plugins/ingame_manual → stewbeet-3.4.0/stewbeet/plugins/merge_smithed_weld}/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +0 -0
- {stewbeet-3.3.2/stewbeet/plugins/merge_smithed_weld → stewbeet-3.4.0/stewbeet/plugins/resource_pack/check_power_of_2}/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/resource_pack/item_models/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/resource_pack/item_models/object.py +0 -0
- {stewbeet-3.3.2/stewbeet/plugins/resource_pack/check_power_of_2 → stewbeet-3.4.0/stewbeet/plugins/resource_pack/item_models}/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/resource_pack/sounds/__init__.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/plugins/resource_pack/sounds/silent.py +0 -0
- {stewbeet-3.3.2/stewbeet/plugins/resource_pack/item_models → stewbeet-3.4.0/stewbeet/plugins/verify_definitions}/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/py.typed +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/silent.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/silent.pyi +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/utils.py +0 -0
- {stewbeet-3.3.2 → stewbeet-3.4.0}/stewbeet/utils.pyi +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: stewbeet
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.4.0
|
|
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,12 +10,12 @@ 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.29.
|
|
13
|
+
Requires-Dist: stouputils>=1.29.3
|
|
14
14
|
Requires-Dist: model-resolver>=1.15.2
|
|
15
|
-
Requires-Dist: beet>=0.
|
|
15
|
+
Requires-Dist: beet>=0.116.0
|
|
16
16
|
Requires-Dist: bolt>=0.50.1
|
|
17
|
-
Requires-Dist: mecha>=0.
|
|
18
|
-
Requires-Dist: mutagen>=1.
|
|
17
|
+
Requires-Dist: mecha>=0.104.0
|
|
18
|
+
Requires-Dist: mutagen>=1.48.1
|
|
19
19
|
Requires-Dist: pyperclip>=1.11.0
|
|
20
20
|
Requires-Dist: fsspec>=2026.6.0
|
|
21
21
|
Requires-Dist: paramiko>=5.0.0
|
|
@@ -8,7 +8,7 @@ module-root = ""
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "stewbeet"
|
|
11
|
-
version = "3.
|
|
11
|
+
version = "3.4.0"
|
|
12
12
|
description = "Beet Framework made to help generating advanced Minecraft datapack contents"
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
license = "MIT"
|
|
@@ -24,12 +24,12 @@ authors = [
|
|
|
24
24
|
{ name = "Stoupy51", email = "stoupy51@gmail.com" },
|
|
25
25
|
]
|
|
26
26
|
dependencies = [
|
|
27
|
-
"stouputils>=1.29.
|
|
27
|
+
"stouputils>=1.29.3",
|
|
28
28
|
"model_resolver>=1.15.2",
|
|
29
|
-
"beet>=0.
|
|
29
|
+
"beet>=0.116.0",
|
|
30
30
|
"bolt>=0.50.1",
|
|
31
|
-
"mecha>=0.
|
|
32
|
-
"mutagen>=1.
|
|
31
|
+
"mecha>=0.104.0",
|
|
32
|
+
"mutagen>=1.48.1",
|
|
33
33
|
"pyperclip>=1.11.0",
|
|
34
34
|
"fsspec>=2026.6.0",
|
|
35
35
|
"paramiko>=5.0.0",
|
|
@@ -8,6 +8,7 @@ from beet import *
|
|
|
8
8
|
|
|
9
9
|
from .cli import main
|
|
10
10
|
from .core import *
|
|
11
|
+
from .plugins.ingame_manual.api import *
|
|
11
12
|
from .plugins.initialize.source_lore_font import find_pack_png
|
|
12
13
|
from .plugins.resource_pack.item_models.object import AutoModel
|
|
13
14
|
from .plugins.resource_pack.sounds import add_sound
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from beet import *
|
|
2
2
|
from .core import *
|
|
3
|
+
from .plugins.ingame_manual.api import *
|
|
3
4
|
from .cli import main as main
|
|
4
5
|
from .plugins.initialize.source_lore_font import find_pack_png as find_pack_png
|
|
5
6
|
from .plugins.resource_pack.item_models.object import AutoModel as AutoModel
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import importlib
|
|
4
4
|
import os
|
|
5
5
|
import shutil
|
|
6
|
-
import subprocess
|
|
7
6
|
import sys
|
|
8
7
|
|
|
9
8
|
import stouputils as stp
|
|
@@ -81,7 +80,12 @@ def main() -> None:
|
|
|
81
80
|
stp.info("Cleaning project and caches...")
|
|
82
81
|
|
|
83
82
|
# Remove the beet cache directory
|
|
84
|
-
|
|
83
|
+
try:
|
|
84
|
+
from beet.toolchain.project import Project
|
|
85
|
+
project = Project(resolved_config=cfg)
|
|
86
|
+
project.clear_cache([])
|
|
87
|
+
except Exception:
|
|
88
|
+
pass
|
|
85
89
|
if os.path.exists(".beet_cache"):
|
|
86
90
|
shutil.rmtree(".beet_cache", ignore_errors=True)
|
|
87
91
|
|
|
@@ -120,10 +124,19 @@ def main() -> None:
|
|
|
120
124
|
def stop_callback(exception: BaseException) -> None:
|
|
121
125
|
sys.exit(1)
|
|
122
126
|
|
|
123
|
-
# Try to import all pipeline
|
|
127
|
+
# Try to import all pipeline (upfront, only for nice error messages)
|
|
128
|
+
modules_before: set[str] = set(sys.modules)
|
|
124
129
|
for plugin in cfg.pipeline:
|
|
125
130
|
stp.handle_error(importlib.import_module, error_log=stp.LogLevels.WARNING_TRACEBACK, callback=stop_callback)(plugin)
|
|
126
131
|
|
|
132
|
+
# Forget project-local modules so beet re-imports them in its own tracked
|
|
133
|
+
# region, else `stewbeet watch` ignores edits to project source files.
|
|
134
|
+
for name in set(sys.modules) - modules_before:
|
|
135
|
+
module = sys.modules.get(name)
|
|
136
|
+
filename: str | None = getattr(module, "__file__", None)
|
|
137
|
+
if filename and "site-packages" not in filename and filename.startswith(current_dir):
|
|
138
|
+
del sys.modules[name]
|
|
139
|
+
|
|
127
140
|
# Run beet with all remaining arguments
|
|
128
141
|
from beet.toolchain.cli import main as beet_main
|
|
129
142
|
beet_main()
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
import os
|
|
5
5
|
|
|
6
6
|
import stouputils as stp
|
|
7
|
-
from beet import ItemModel, Model
|
|
7
|
+
from beet import ItemModel, Model, Texture
|
|
8
|
+
from PIL import Image
|
|
8
9
|
|
|
9
|
-
from ...core import
|
|
10
|
+
from ...core import Item, JsonDict, Mem, set_json_encoder, texture_mcmeta, write_advancement, write_function, write_load_file
|
|
10
11
|
|
|
11
12
|
# Constants
|
|
12
13
|
ENERGY_CABLE_MODELS_FOLDER: str = stp.get_root_path(__file__) + "/energy_cable_models"
|
|
@@ -81,7 +82,7 @@ tag @s add {ns}.cable
|
|
|
81
82
|
|
|
82
83
|
# Update_cable_model function
|
|
83
84
|
cables_str: str = "\n".join([
|
|
84
|
-
f"execute if entity @s[tag={ns}.{cable}] run item replace entity @s contents with {
|
|
85
|
+
f"execute if entity @s[tag={ns}.{cable}] run item replace entity @s contents with {Item.base_item}[item_model=\"{ns}:{cable}\"]"
|
|
85
86
|
for cable in cables
|
|
86
87
|
])
|
|
87
88
|
cable_update_content: str = f"""
|
|
@@ -202,7 +203,7 @@ function #itemio:calls/cables/destroy
|
|
|
202
203
|
|
|
203
204
|
# Update cable_model function
|
|
204
205
|
cables_str: str = "\n".join([
|
|
205
|
-
f"execute if entity @s[tag={ns}.{cable}] run item replace entity @s contents with {
|
|
206
|
+
f"execute if entity @s[tag={ns}.{cable}] run item replace entity @s contents with {Item.base_item}[item_model=\"{ns}:{cable}\"]"
|
|
206
207
|
for cable in cables
|
|
207
208
|
])
|
|
208
209
|
cable_update_content: str = f"""
|
|
@@ -262,14 +263,21 @@ def servo_mechanisms_models(servos: dict[str, dict[str, str] | None]) -> None:
|
|
|
262
263
|
connected_model["textures"] = {"0": f"{ns}:block/{connected_texture}", "particle": f"{ns}:block/{connected_texture}"}
|
|
263
264
|
Mem.ctx.assets[ns].models[f"block/servo/{typ}_connected"] = set_json_encoder(Model(connected_model), max_level=3)
|
|
264
265
|
|
|
266
|
+
# Register the off model (grayed out version of the default texture, shown when the servo is disabled)
|
|
267
|
+
off_texture: str = f"servo/{typ}_off"
|
|
268
|
+
off_model: JsonDict = stp.json_load(f"{models_path}/{typ}_block.json")
|
|
269
|
+
off_model["parent"] = f"{ns}:block/servo/base_block"
|
|
270
|
+
off_model["textures"] = {"0": f"{ns}:block/{off_texture}", "particle": f"{ns}:block/{off_texture}"}
|
|
271
|
+
Mem.ctx.assets[ns].models[f"block/servo/{typ}_off"] = set_json_encoder(Model(off_model), max_level=3)
|
|
272
|
+
|
|
265
273
|
# Register the item model
|
|
266
274
|
item_model: JsonDict = stp.json_load(f"{models_path}/{typ}_item.json")
|
|
267
275
|
item_model["parent"] = f"{ns}:block/servo/base_item"
|
|
268
276
|
item_model["textures"] = {"0": f"{ns}:block/{default_texture}", "particle": f"{ns}:block/{default_texture}"}
|
|
269
277
|
Mem.ctx.assets[ns].models[f"block/servo/{typ}_item"] = set_json_encoder(Model(item_model), max_level=3)
|
|
270
278
|
|
|
271
|
-
# Register
|
|
272
|
-
for texture in ("block", "connected"):
|
|
279
|
+
# Register items files (for default, connected and off)
|
|
280
|
+
for texture in ("block", "connected", "off"):
|
|
273
281
|
model_data = {
|
|
274
282
|
"model": {
|
|
275
283
|
"type": "minecraft:model",
|
|
@@ -288,6 +296,17 @@ def servo_mechanisms_models(servos: dict[str, dict[str, str] | None]) -> None:
|
|
|
288
296
|
if os.path.exists(src) and (not Mem.ctx.assets[ns].textures.get(dst)):
|
|
289
297
|
Mem.ctx.assets[ns].textures[dst] = texture_mcmeta(src)
|
|
290
298
|
|
|
299
|
+
# Generate the grayed out "off" texture from the default texture (desaturated and darkened)
|
|
300
|
+
off_dst: str = f"block/{off_texture}"
|
|
301
|
+
default_src: str = f"{textures_folder}/{textures.get('default', f'{typ}_default')}.png"
|
|
302
|
+
if os.path.exists(default_src) and (not Mem.ctx.assets[ns].textures.get(off_dst)):
|
|
303
|
+
with Image.open(default_src) as base_image:
|
|
304
|
+
rgba: Image.Image = base_image.convert("RGBA")
|
|
305
|
+
r, g, b, a = rgba.split()
|
|
306
|
+
gray = Image.merge("RGB", (r, g, b)).convert("L").point(lambda p: int(p * 0.5))
|
|
307
|
+
off_image: Image.Image = Image.merge("RGBA", (gray, gray, gray, a))
|
|
308
|
+
Mem.ctx.assets[ns].textures[off_dst] = Texture(off_image)
|
|
309
|
+
|
|
291
310
|
## Working functions
|
|
292
311
|
# On placement, add necessary tag and call init function
|
|
293
312
|
item = Item.from_id(servo)
|
|
@@ -301,6 +320,7 @@ tag @s add itemio.servo
|
|
|
301
320
|
tag @s add {ns}.servo
|
|
302
321
|
scoreboard players set @s itemio.servo.stack_limit {stack_limit}
|
|
303
322
|
scoreboard players set @s itemio.servo.retry_limit {retry_limit}
|
|
323
|
+
scoreboard players set @s {ns}.servo_off 0
|
|
304
324
|
function #itemio:calls/servos/init
|
|
305
325
|
""")
|
|
306
326
|
# On destruction, call destroy function of itemio
|
|
@@ -309,22 +329,117 @@ function #itemio:calls/servos/init
|
|
|
309
329
|
function #itemio:calls/servos/destroy
|
|
310
330
|
""")
|
|
311
331
|
|
|
312
|
-
# Update
|
|
313
|
-
|
|
332
|
+
# Update the servo model on itemio network changes (delegates to the shared model logic)
|
|
333
|
+
write_function(f"{ns}:calls/itemio/network_update", f"""
|
|
314
334
|
# Stop if not {ns} servo
|
|
315
335
|
execute unless entity @s[tag={ns}.custom_block,tag={ns}.servo] run return fail
|
|
316
336
|
|
|
317
|
-
# Apply the model
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
337
|
+
# Apply the model depending on the on/off state and the network connection
|
|
338
|
+
function {ns}:utils/servo/update_model
|
|
339
|
+
""", tags=["itemio:event/network_update"])
|
|
340
|
+
|
|
341
|
+
# Setup the "rotate to toggle on/off" feature
|
|
342
|
+
servo_toggle(servos)
|
|
343
|
+
return
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
# Setup the ability to turn servos off and on by rotating (right-clicking) them
|
|
347
|
+
def servo_toggle(servos: dict[str, dict[str, str] | None]) -> None:
|
|
348
|
+
""" Setup the functions allowing players to turn servo mechanisms off and on by rotating them.
|
|
349
|
+
|
|
350
|
+
Rotating (right-clicking) a servo item frame changes its 'ItemRotation'. A vanilla advancement listening to
|
|
351
|
+
the 'minecraft:player_interacted_with_entity' trigger detects the interaction (so nothing runs every tick),
|
|
352
|
+
then the nearby servos are checked: an odd rotation disables the rotated one (grayed out texture, item
|
|
353
|
+
transfers stopped by removing the 'itemio.servo.extract' / 'itemio.servo.insert' tag), an even rotation
|
|
354
|
+
enables it back to normal. As the check only acts when the parity differs, only the rotated servo toggles.
|
|
355
|
+
|
|
356
|
+
Args:
|
|
357
|
+
servos (dict[str, dict[str, str]]): Same servos dictionary as the one passed to 'servo_mechanisms_models'.
|
|
358
|
+
"""
|
|
359
|
+
ns: str = Mem.ctx.project_id
|
|
360
|
+
servo_types: dict[str, str] = {servo: (textures or {}).get("type", "extract") for servo, textures in servos.items()}
|
|
361
|
+
|
|
362
|
+
# Score holding the on/off state of each servo (created at load time)
|
|
363
|
+
write_load_file(f"\n# Score for the on/off state of servo mechanisms\nscoreboard objectives add {ns}.servo_off dummy\n")
|
|
364
|
+
|
|
365
|
+
# Advancement detecting the interaction with a servo item frame, then revoked and handled by a function
|
|
366
|
+
write_advancement(f"{ns}:technical/servo_toggle", {
|
|
367
|
+
"criteria": {
|
|
368
|
+
"requirement": {
|
|
369
|
+
"trigger": "minecraft:player_interacted_with_entity",
|
|
370
|
+
"conditions": {
|
|
371
|
+
"entity": {
|
|
372
|
+
"minecraft:entity_tags": {"any_of": [f"{ns}.servo"]},
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
"requirements": [["requirement"]],
|
|
378
|
+
"rewards": {"function": f"{ns}:utils/servo/on_interact"},
|
|
379
|
+
})
|
|
380
|
+
|
|
381
|
+
# Reward function: revoke the advancement, then check the servos around the player (only the rotated one toggles)
|
|
382
|
+
write_function(f"{ns}:utils/servo/on_interact", f"""
|
|
383
|
+
# Revoke the advancement so it can trigger again
|
|
384
|
+
advancement revoke @s only {ns}:technical/servo_toggle
|
|
385
|
+
|
|
386
|
+
# Check the servos within reach (the change detection makes it a no-op for the ones that did not rotate)
|
|
387
|
+
execute as @e[tag={ns}.servo,distance=..24] run function {ns}:utils/servo/check
|
|
388
|
+
""")
|
|
389
|
+
|
|
390
|
+
# Check the rotation parity and apply the on/off state only when it changed
|
|
391
|
+
write_function(f"{ns}:utils/servo/check", f"""
|
|
392
|
+
# Compute the rotation parity (0 = on, 1 = off)
|
|
393
|
+
scoreboard players set #two {ns}.data 2
|
|
394
|
+
execute store result score #parity {ns}.data run data get entity @s ItemRotation
|
|
395
|
+
scoreboard players operation #parity {ns}.data %= #two {ns}.data
|
|
396
|
+
|
|
397
|
+
# Keep the servo visually aligned while on (any even rotation is normalized to 0)
|
|
398
|
+
execute if score #parity {ns}.data matches 0 unless data entity @s {{ItemRotation:0b}} run data modify entity @s ItemRotation set value 0b
|
|
399
|
+
|
|
400
|
+
# Apply the state only when the parity differs from the current state
|
|
401
|
+
execute if score #parity {ns}.data matches 0 unless score @s {ns}.servo_off matches 0 run function {ns}:utils/servo/enable
|
|
402
|
+
execute if score #parity {ns}.data matches 1 unless score @s {ns}.servo_off matches 1 run function {ns}:utils/servo/disable
|
|
403
|
+
""")
|
|
404
|
+
|
|
405
|
+
# Enable: allow item transfers again by adding back the servo tag, then restore the normal model
|
|
406
|
+
enable_tags: str = "\n".join(
|
|
407
|
+
f"execute if entity @s[tag={ns}.{servo}] run tag @s add itemio.servo.{typ}"
|
|
408
|
+
for servo, typ in servo_types.items()
|
|
409
|
+
)
|
|
410
|
+
write_function(f"{ns}:utils/servo/enable", f"""
|
|
411
|
+
# Mark the servo as on and allow item transfers again
|
|
412
|
+
scoreboard players set @s {ns}.servo_off 0
|
|
413
|
+
{enable_tags}
|
|
414
|
+
|
|
415
|
+
# Restore the normal model and play feedback
|
|
416
|
+
function {ns}:utils/servo/update_model
|
|
417
|
+
playsound minecraft:block.lever.click block @a[distance=..16] ~ ~ ~ 0.6 1.2
|
|
418
|
+
""")
|
|
419
|
+
|
|
420
|
+
# Disable: stop item transfers by removing the servo tag, then apply the grayed out model
|
|
421
|
+
write_function(f"{ns}:utils/servo/disable", f"""
|
|
422
|
+
# Mark the servo as off and stop item transfers
|
|
423
|
+
scoreboard players set @s {ns}.servo_off 1
|
|
424
|
+
tag @s remove itemio.servo.extract
|
|
425
|
+
tag @s remove itemio.servo.insert
|
|
426
|
+
|
|
427
|
+
# Apply the grayed out model and play feedback
|
|
428
|
+
function {ns}:utils/servo/update_model
|
|
429
|
+
playsound minecraft:block.lever.click block @a[distance=..16] ~ ~ ~ 0.6 0.7
|
|
430
|
+
""")
|
|
431
|
+
|
|
432
|
+
# Shared model logic: grayed out when off, normal (depending on the network connection) when on
|
|
433
|
+
model_lines: list[str] = [
|
|
434
|
+
f'execute if score @s {ns}.servo_off matches 1 if entity @s[tag={ns}.{servo}] run data modify entity @s Item.components."minecraft:item_model" set value "{ns}:servo/{typ}_off"'
|
|
435
|
+
for servo, typ in servo_types.items()
|
|
436
|
+
]
|
|
437
|
+
for servo, typ in servo_types.items():
|
|
323
438
|
for number, texture in ((0, "block"), (1, "connected")):
|
|
324
|
-
|
|
325
|
-
f'execute if score @s itemio.math matches {number} if entity @s[tag={ns}.{servo}] run '
|
|
326
|
-
f'data modify entity @s Item.components."minecraft:item_model" set value "{ns}:servo/{typ}_{texture}"
|
|
439
|
+
model_lines.append(
|
|
440
|
+
f'execute if score @s {ns}.servo_off matches 0 if score @s itemio.math matches {number} if entity @s[tag={ns}.{servo}] run '
|
|
441
|
+
f'data modify entity @s Item.components."minecraft:item_model" set value "{ns}:servo/{typ}_{texture}"'
|
|
327
442
|
)
|
|
328
|
-
write_function(f"{ns}:
|
|
443
|
+
write_function(f"{ns}:utils/servo/update_model", "\n".join(model_lines) + "\n")
|
|
329
444
|
return
|
|
330
445
|
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
7
|
from beet import Context
|
|
8
|
-
from stouputils.typing import JsonDict
|
|
9
8
|
|
|
10
9
|
if TYPE_CHECKING:
|
|
10
|
+
from ..plugins.ingame_manual.manual import Manual
|
|
11
11
|
from .cls.external_item import ExternalItem
|
|
12
12
|
from .cls.item import Item
|
|
13
13
|
|
|
@@ -18,9 +18,13 @@ class Mem:
|
|
|
18
18
|
""" Global context object that holds the beet project configuration.
|
|
19
19
|
This is set during plugins.initialize and used throughout the codebase. """
|
|
20
20
|
|
|
21
|
-
definitions: dict[str,
|
|
21
|
+
definitions: dict[str, Item] = {}
|
|
22
22
|
""" JsonDict storing all item and block definitions for the project. """
|
|
23
23
|
|
|
24
|
-
external_definitions: dict[str,
|
|
24
|
+
external_definitions: dict[str, ExternalItem] = {}
|
|
25
25
|
""" Secondary JsonDict for storing external items or blocks most likely for recipes. """
|
|
26
26
|
|
|
27
|
+
manual: Manual | None = None
|
|
28
|
+
""" The ingame_manual Manual handle, used to register pages/hooks during setup.
|
|
29
|
+
Created lazily via stewbeet.get_manual(); reset after each build (for `beet watch`). """
|
|
30
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from ..plugins.ingame_manual.manual import Manual as Manual
|
|
2
|
+
from .cls.external_item import ExternalItem as ExternalItem
|
|
3
|
+
from .cls.item import Item as Item
|
|
4
|
+
from beet import Context as Context
|
|
5
|
+
|
|
6
|
+
class Mem:
|
|
7
|
+
ctx: Context
|
|
8
|
+
definitions: dict[str, Item]
|
|
9
|
+
external_definitions: dict[str, ExternalItem]
|
|
10
|
+
manual: Manual | None
|
|
@@ -137,7 +137,6 @@ class Ingr(dict[str, Any]):
|
|
|
137
137
|
return namespace + ":" + id
|
|
138
138
|
return id
|
|
139
139
|
|
|
140
|
-
@stp.simple_cache
|
|
141
140
|
def to_name(self) -> str:
|
|
142
141
|
""" Get the name of the ingredient, ex: "Stick" or "Adamantium Ingot" """
|
|
143
142
|
return item_id_to_name(self.to_id(add_namespace=True))
|
|
@@ -7,8 +7,6 @@ from beet.core.utils import TextComponent
|
|
|
7
7
|
from stouputils.typing import JsonDict
|
|
8
8
|
|
|
9
9
|
from ..__memory__ import Mem
|
|
10
|
-
from ..cls.external_item import ExternalItem
|
|
11
|
-
from ..cls.item import Item
|
|
12
10
|
|
|
13
11
|
|
|
14
12
|
# Add item model component
|
|
@@ -22,8 +20,7 @@ def add_item_model_component(black_list: list[str] | None = None) -> None:
|
|
|
22
20
|
if black_list is None:
|
|
23
21
|
black_list = []
|
|
24
22
|
for item, data in Mem.definitions.items():
|
|
25
|
-
|
|
26
|
-
data = data.components
|
|
23
|
+
data = data.components
|
|
27
24
|
if item in black_list or data.get("item_model", None) is not None:
|
|
28
25
|
continue
|
|
29
26
|
data["item_model"] = f"{Mem.ctx.project_id}:{item}"
|
|
@@ -47,8 +44,7 @@ def add_item_name_and_lore_if_missing(is_external: bool = False, black_list: lis
|
|
|
47
44
|
for item, data in defs.items():
|
|
48
45
|
if item in black_list:
|
|
49
46
|
continue
|
|
50
|
-
|
|
51
|
-
data = data.components
|
|
47
|
+
data = data.components
|
|
52
48
|
|
|
53
49
|
# Add item name if none
|
|
54
50
|
if not data.get("item_name"):
|
|
@@ -95,8 +91,7 @@ def add_private_custom_data_for_namespace(is_external: bool = False, black_list:
|
|
|
95
91
|
for item, data in defs.items():
|
|
96
92
|
if item in black_list:
|
|
97
93
|
continue
|
|
98
|
-
|
|
99
|
-
data = data.components
|
|
94
|
+
data = data.components
|
|
100
95
|
custom_data: JsonDict = data.setdefault("custom_data", {})
|
|
101
96
|
if is_external and ":" in item:
|
|
102
97
|
ns, id = item.split(":")
|
|
@@ -118,9 +113,7 @@ def add_smithed_ignore_vanilla_behaviours_convention() -> None:
|
|
|
118
113
|
Refer to https://wiki.smithed.dev/conventions/tag-specification/#custom-items for more information.
|
|
119
114
|
"""
|
|
120
115
|
for data in Mem.definitions.values():
|
|
121
|
-
|
|
122
|
-
data = data.components
|
|
123
|
-
smithed_ignore: JsonDict = data.setdefault("custom_data", {}).setdefault("smithed", {}).setdefault("ignore", {})
|
|
116
|
+
smithed_ignore: JsonDict = data.components.setdefault("custom_data", {}).setdefault("smithed", {}).setdefault("ignore", {})
|
|
124
117
|
smithed_ignore.setdefault("functionality", True)
|
|
125
118
|
smithed_ignore.setdefault("crafting", True)
|
|
126
119
|
|
|
@@ -133,8 +126,14 @@ def set_manual_components(white_list: list[str]) -> None:
|
|
|
133
126
|
"""
|
|
134
127
|
if not white_list:
|
|
135
128
|
return
|
|
136
|
-
|
|
137
|
-
|
|
129
|
+
|
|
130
|
+
# v2 plugin (ingame_manual): record an override picked up by ManualConfig.from_meta,
|
|
131
|
+
# and update any Manual already created during setup.
|
|
132
|
+
from ...plugins.ingame_manual import config as v2_config
|
|
133
|
+
v2_config.COMPONENTS_OVERRIDE = list(white_list)
|
|
134
|
+
from ...core.__memory__ import Mem
|
|
135
|
+
if Mem.manual is not None:
|
|
136
|
+
Mem.manual.config.components_to_include = list(white_list)
|
|
138
137
|
|
|
139
138
|
# Export all definitions to JSON
|
|
140
139
|
def export_all_definitions_to_json(file_name: str, is_external: bool | JsonDict = False, verbose: bool = True) -> None:
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
from beet.core.utils import TextComponent
|
|
4
4
|
|
|
5
5
|
from ..__memory__ import Mem
|
|
6
|
-
from ..cls.item import Item
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
def format_energy_number(number: int) -> str:
|
|
@@ -58,8 +57,7 @@ def create_energy_lore(energy_data: dict[str, int]) -> TextComponent:
|
|
|
58
57
|
def add_energy_lore_to_definitions():
|
|
59
58
|
""" Adds energy-related lore to definitions based on their custom data. """
|
|
60
59
|
for data in Mem.definitions.values():
|
|
61
|
-
|
|
62
|
-
data = data.components
|
|
60
|
+
data = data.components
|
|
63
61
|
if "energy" in data.get("custom_data", {}):
|
|
64
62
|
data["lore"] = data.get("lore", []) + create_energy_lore(data["custom_data"]["energy"])
|
|
65
63
|
|
|
@@ -5,13 +5,13 @@ from stouputils.typing import JsonDict
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
# Functions
|
|
8
|
-
def create_gradient_text(text: str, start_hex: str = "c24a17", end_hex: str = "c77e36", text_length: int | None = None) -> list[JsonDict]:
|
|
8
|
+
def create_gradient_text(text: str, start_hex: str = "#c24a17", end_hex: str = "#c77e36", text_length: int | None = None) -> list[JsonDict]:
|
|
9
9
|
""" Create a gradient text effect by interpolating colors between start and end hex.
|
|
10
10
|
|
|
11
11
|
Args:
|
|
12
12
|
text (str): The text to apply the gradient to.
|
|
13
|
-
start_hex (str): Starting color in hex format (e.g. 'c24a17').
|
|
14
|
-
end_hex (str): Ending color in hex format (e.g. 'c77e36').
|
|
13
|
+
start_hex (str): Starting color in hex format (e.g. '#c24a17').
|
|
14
|
+
end_hex (str): Ending color in hex format (e.g. '#c77e36').
|
|
15
15
|
text_length (int | None): Optional length override for the text. If provided, uses this instead of len(text).
|
|
16
16
|
|
|
17
17
|
Returns:
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from stouputils.typing import JsonDict as JsonDict
|
|
2
2
|
|
|
3
|
-
def create_gradient_text(text: str, start_hex: str = 'c24a17', end_hex: str = 'c77e36', text_length: int | None = None) -> list[JsonDict]:
|
|
3
|
+
def create_gradient_text(text: str, start_hex: str = '#c24a17', end_hex: str = '#c77e36', text_length: int | None = None) -> list[JsonDict]:
|
|
4
4
|
""" Create a gradient text effect by interpolating colors between start and end hex.
|
|
5
5
|
|
|
6
6
|
\tArgs:
|
|
7
7
|
\t\ttext (str): The text to apply the gradient to.
|
|
8
|
-
\t\tstart_hex (str): Starting color in hex format (e.g. 'c24a17').
|
|
9
|
-
\t\tend_hex (str): Ending color in hex format (e.g. 'c77e36').
|
|
8
|
+
\t\tstart_hex (str): Starting color in hex format (e.g. '#c24a17').
|
|
9
|
+
\t\tend_hex (str): Ending color in hex format (e.g. '#c77e36').
|
|
10
10
|
\t\ttext_length (int | None): Optional length override for the text. If provided, uses this instead of len(text).
|
|
11
11
|
|
|
12
12
|
\tReturns:
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
|
|
2
2
|
# Imports
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
3
|
import stouputils as stp
|
|
6
4
|
from beet.core.utils import TextComponent
|
|
7
5
|
from stouputils.typing import JsonDict
|
|
@@ -47,7 +45,6 @@ def text_component_to_str(tc: TextComponent) -> str:
|
|
|
47
45
|
result += text_component_to_str(extra)
|
|
48
46
|
return result
|
|
49
47
|
|
|
50
|
-
@stp.simple_cache
|
|
51
48
|
def item_id_to_text_component(item_id: str, use_default: bool = True) -> TextComponent:
|
|
52
49
|
""" Get the TextComponent from an item id
|
|
53
50
|
|
|
@@ -99,7 +96,6 @@ def item_id_to_text_component(item_id: str, use_default: bool = True) -> TextCom
|
|
|
99
96
|
return id.replace("_", " ").title()
|
|
100
97
|
return ""
|
|
101
98
|
|
|
102
|
-
@stp.simple_cache
|
|
103
99
|
def item_id_to_name(item_id: str) -> str:
|
|
104
100
|
""" Get the name from an item id
|
|
105
101
|
|
|
@@ -209,22 +209,16 @@ def get_lib_paths(ctx: Context) -> list[DownloadedLib]:
|
|
|
209
209
|
ctx.cache["stewbeet"].timeout(days=30)
|
|
210
210
|
mc_t = mc_tuple(ctx)
|
|
211
211
|
mc_v = mc_str(ctx)
|
|
212
|
-
results: list[DownloadedLib] = []
|
|
213
212
|
|
|
213
|
+
# Collect every lib to resolve first, then fetch them in parallel (network bound);
|
|
214
|
+
# results keep the input order because weld merges packs in this order.
|
|
215
|
+
tasks: list[tuple[str, JsonDict, str]] = []
|
|
214
216
|
for lib_ns, lib_data in OFFICIAL_LIBS.items():
|
|
215
217
|
if not lib_data.get("is_used", False):
|
|
216
218
|
continue
|
|
217
219
|
source = lib_data.get("source", "")
|
|
218
|
-
if source
|
|
219
|
-
|
|
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)
|
|
220
|
+
if source in ("smithed", "modrinth", "static"):
|
|
221
|
+
tasks.append((lib_ns, lib_data, source))
|
|
228
222
|
|
|
229
223
|
# Also process custom load_dependencies entries that specify a source
|
|
230
224
|
load_deps: JsonDict = ctx.meta.get("stewbeet", {}).get("load_dependencies", {})
|
|
@@ -232,17 +226,21 @@ def get_lib_paths(ctx: Context) -> list[DownloadedLib]:
|
|
|
232
226
|
source = lib_data.get("source", "")
|
|
233
227
|
if not source:
|
|
234
228
|
continue # old-format entry with explicit version — nothing to download
|
|
235
|
-
if source
|
|
236
|
-
|
|
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)
|
|
229
|
+
if source in ("smithed", "modrinth", "static"):
|
|
230
|
+
tasks.append((lib_ns, lib_data, source))
|
|
241
231
|
else:
|
|
242
232
|
stp.warning(f"Unknown source '{source}' for load_dependency '{lib_ns}'. Skipping download.")
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
233
|
+
|
|
234
|
+
def resolve(task: tuple[str, JsonDict, str]) -> DownloadedLib | None:
|
|
235
|
+
lib_ns, lib_data, source = task
|
|
236
|
+
if source == "smithed":
|
|
237
|
+
return resolve_smithed_lib(ctx, lib_ns, lib_data, mc_t)
|
|
238
|
+
if source == "modrinth":
|
|
239
|
+
return resolve_modrinth_lib(ctx, lib_ns, lib_data, mc_v)
|
|
240
|
+
return resolve_static_lib(ctx, lib_ns, lib_data, mc_t, mc_v)
|
|
241
|
+
|
|
242
|
+
resolved: list[DownloadedLib | None] = stp.multithreading(resolve, tasks, max_workers=min(8, len(tasks))) if tasks else []
|
|
243
|
+
results: list[DownloadedLib] = [r for r in resolved if r]
|
|
246
244
|
|
|
247
245
|
BUILD_CACHE[cache_key] = results
|
|
248
246
|
return results
|