stewbeet 2.2.31__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-2.2.31/.gitignore +11 -0
- stewbeet-2.2.31/LICENSE +21 -0
- stewbeet-2.2.31/PKG-INFO +163 -0
- stewbeet-2.2.31/README.md +139 -0
- stewbeet-2.2.31/pyproject.toml +82 -0
- stewbeet-2.2.31/stewbeet/__init__.py +17 -0
- stewbeet-2.2.31/stewbeet/__main__.py +7 -0
- stewbeet-2.2.31/stewbeet/all.py +53 -0
- stewbeet-2.2.31/stewbeet/cli.py +79 -0
- stewbeet-2.2.31/stewbeet/continuous_delivery/__init__.py +8 -0
- stewbeet-2.2.31/stewbeet/continuous_delivery/cd_utils.py +50 -0
- stewbeet-2.2.31/stewbeet/continuous_delivery/github.py +3 -0
- stewbeet-2.2.31/stewbeet/continuous_delivery/modrinth.py +572 -0
- stewbeet-2.2.31/stewbeet/continuous_delivery/pmc.py +160 -0
- stewbeet-2.2.31/stewbeet/continuous_delivery/smithed.py +119 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/__init__.py +11 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/balancing.py +94 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/batteries.py +101 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/cables.py +329 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant.json +16 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_d.json +29 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_de.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dew.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dn.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dne.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnew.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dns.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnse.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsew.json +68 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsw.json +71 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnw.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ds.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dse.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsew.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsw.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dw.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_e.json +16 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ew.json +17 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_n.json +29 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ne.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_new.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ns.json +17 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_nse.json +61 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsew.json +110 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsw.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_nw.json +50 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_s.json +27 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_se.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_sew.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_sw.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_u.json +29 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ud.json +17 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ude.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udew.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udn.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udne.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnew.json +68 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udns.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnse.json +68 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsew.json +50 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsw.json +68 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnw.json +57 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_uds.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udse.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsew.json +68 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsw.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udw.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ue.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_uew.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_un.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_une.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unew.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_uns.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unse.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsew.json +68 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsw.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unw.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_us.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_use.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_usew.json +58 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_usw.json +48 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_uw.json +37 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_w.json +29 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_lib_calls.py +57 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/gui.py +103 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel +1 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json +755 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/py.typed +1 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/base_block.json +17 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/base_item.json +27 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_block.json +13 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_connected.json +13 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_item.json +6 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_block.json +13 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_connected.json +13 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_item.json +6 -0
- stewbeet-2.2.31/stewbeet/contrib/simplenergy/wrench.py +45 -0
- stewbeet-2.2.31/stewbeet/core/__init__.py +9 -0
- stewbeet-2.2.31/stewbeet/core/__memory__.py +20 -0
- stewbeet-2.2.31/stewbeet/core/constants.py +159 -0
- stewbeet-2.2.31/stewbeet/core/definitions_helper/__init__.py +12 -0
- stewbeet-2.2.31/stewbeet/core/definitions_helper/completion.py +126 -0
- stewbeet-2.2.31/stewbeet/core/definitions_helper/equipments.py +196 -0
- stewbeet-2.2.31/stewbeet/core/definitions_helper/materials.py +348 -0
- stewbeet-2.2.31/stewbeet/core/definitions_helper/records.py +106 -0
- stewbeet-2.2.31/stewbeet/core/definitions_helper/simplenergy.py +62 -0
- stewbeet-2.2.31/stewbeet/core/definitions_helper/smart_ore_generation.py +214 -0
- stewbeet-2.2.31/stewbeet/core/definitions_helper/text.py +123 -0
- stewbeet-2.2.31/stewbeet/core/ingredients.py +327 -0
- stewbeet-2.2.31/stewbeet/core/utils/io.py +192 -0
- stewbeet-2.2.31/stewbeet/core/utils/sounds.py +86 -0
- stewbeet-2.2.31/stewbeet/dependencies/__init__.py +9 -0
- stewbeet-2.2.31/stewbeet/dependencies/bookshelf.py +35 -0
- stewbeet-2.2.31/stewbeet/dependencies/bookshelf_config.json +3 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Bitwise.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Block.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Color.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Dump.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Environment.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Generation.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Health.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Hitbox.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Id.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Interaction.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Link.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Log.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Math.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Move.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Position.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Random.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Raycast.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Schedule.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Sidebar.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Spline.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf String.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Time.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Tree.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Vector.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf View.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Xp.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Common Signals.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Furnace NBT Recipes.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/SmartOreGeneration.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Smithed Crafter.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/datapack/Smithed Custom Block.zip +0 -0
- stewbeet-2.2.31/stewbeet/dependencies/resource_pack/Smithed Crafter.zip +0 -0
- stewbeet-2.2.31/stewbeet/plugins/archive/__init__.py +113 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/headers/__init__.py +48 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/headers/context_analyzer.py +104 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/headers/execution_parser.py +214 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/headers/function_analyzer.py +108 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/headers/macro_analyzer.py +130 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/headers/macro_parser.py +109 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/headers/object.py +351 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/headers/type_inference.py +310 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/lang_file/__init__.py +37 -0
- stewbeet-2.2.31/stewbeet/plugins/auto/lang_file/utils.py +101 -0
- stewbeet-2.2.31/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +31 -0
- stewbeet-2.2.31/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +157 -0
- stewbeet-2.2.31/stewbeet/plugins/compute_sha1/__init__.py +39 -0
- stewbeet-2.2.31/stewbeet/plugins/copy_to_destination/__init__.py +179 -0
- stewbeet-2.2.31/stewbeet/plugins/custom_paintings/__init__.py +88 -0
- stewbeet-2.2.31/stewbeet/plugins/custom_recipes/__init__.py +35 -0
- stewbeet-2.2.31/stewbeet/plugins/custom_recipes/awakened_forge.py +174 -0
- stewbeet-2.2.31/stewbeet/plugins/custom_recipes/furnace.py +171 -0
- stewbeet-2.2.31/stewbeet/plugins/custom_recipes/pulverizer.py +68 -0
- stewbeet-2.2.31/stewbeet/plugins/custom_recipes/smithed.py +190 -0
- stewbeet-2.2.31/stewbeet/plugins/custom_recipes/vanilla.py +339 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/custom_blocks/__init__.py +827 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/loading/__init__.py +105 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/loot_tables/__init__.py +163 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/__init__.py +30 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/constants.py +63 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/extend_datapack.py +19 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/match.py +37 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/mod.mcdoc +30 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/quick_sort.py +103 -0
- stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/selection_sort.py +125 -0
- stewbeet-2.2.31/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +93 -0
- stewbeet-2.2.31/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +61 -0
- stewbeet-2.2.31/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +67 -0
- stewbeet-2.2.31/stewbeet/plugins/finalyze/dependencies/__init__.py +247 -0
- stewbeet-2.2.31/stewbeet/plugins/finalyze/last_final/__init__.py +32 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/__init__.py +54 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/awakened_forge_1.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/awakened_forge_2.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x3.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x4.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/book.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/mining.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/stonecutting.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_mining_template.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/book_components.py +134 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/book_optimizer.py +126 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/craft_content.py +441 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/dialog.py +160 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/image_utils.py +149 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/iso_renders.py +134 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/main.py +971 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/other_utils.py +156 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/page_font.py +228 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/shared_import.py +91 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/showcase_image.py +131 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/stardust_forge.py +32 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/.gitignore +1 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/1book.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/_README.md +5 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/awakened_forge_1.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/awakened_forge_2.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x3.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x4.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/book.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/donut_holer.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/mining.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/stonecutting.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_mining_template.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
- stewbeet-2.2.31/stewbeet/plugins/ingame_manual/text_components.py +47 -0
- stewbeet-2.2.31/stewbeet/plugins/initialize/__init__.py +178 -0
- stewbeet-2.2.31/stewbeet/plugins/initialize/source_lore_font.py +74 -0
- stewbeet-2.2.31/stewbeet/plugins/merge_smithed_weld/__init__.py +44 -0
- stewbeet-2.2.31/stewbeet/plugins/merge_smithed_weld/weld.py +169 -0
- stewbeet-2.2.31/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +39 -0
- stewbeet-2.2.31/stewbeet/plugins/resource_pack/item_models/__init__.py +129 -0
- stewbeet-2.2.31/stewbeet/plugins/resource_pack/item_models/object.py +464 -0
- stewbeet-2.2.31/stewbeet/plugins/resource_pack/sounds/__init__.py +95 -0
- stewbeet-2.2.31/stewbeet/plugins/verify_definitions/__init__.py +344 -0
- stewbeet-2.2.31/stewbeet/py.typed +1 -0
- stewbeet-2.2.31/stewbeet/utils.py +31 -0
stewbeet-2.2.31/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Alexandre Collignon
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
stewbeet-2.2.31/PKG-INFO
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: stewbeet
|
|
3
|
+
Version: 2.2.31
|
|
4
|
+
Summary: Beet Framework made to help generating advanced Minecraft datapack contents
|
|
5
|
+
Project-URL: Homepage, https://github.com/Stoupy51/stewbeet
|
|
6
|
+
Project-URL: Issues, https://github.com/Stoupy51/stewbeet/issues
|
|
7
|
+
Author-email: Stoupy51 <stoupy51@gmail.com>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Requires-Python: >=3.12
|
|
14
|
+
Requires-Dist: beet>=0.112.0
|
|
15
|
+
Requires-Dist: bolt>=0.49.2
|
|
16
|
+
Requires-Dist: mecha>=0.99.0
|
|
17
|
+
Requires-Dist: model-resolver>=1.12.0
|
|
18
|
+
Requires-Dist: mutagen>=1.47.0
|
|
19
|
+
Requires-Dist: pydantic<2.12.0
|
|
20
|
+
Requires-Dist: pyperclip>=1.8.0
|
|
21
|
+
Requires-Dist: smithed>=0.19.0
|
|
22
|
+
Requires-Dist: stouputils>=1.5.0
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
[](https://www.youtube.com/watch?v=zkcQn23DRaw)
|
|
27
|
+
[](https://github.com/Stoupy51/stewbeet/releases/latest)
|
|
28
|
+
[](https://www.planetminecraft.com/data-pack/python-datapack/)
|
|
29
|
+
[](https://discord.gg/anxzu6rA9F)
|
|
30
|
+
[](https://pypi.org/project/stewbeet/)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## ❓ What is `StewBeet`
|
|
34
|
+
`StewBeet` is a [Beet](https://github.com/mcbeet/beet) framework and library 📦 aiming to provide huge automation for creating Minecraft datapacks.<br>
|
|
35
|
+
It is designed to be very simple to use and very convenient for developers.
|
|
36
|
+
|
|
37
|
+
`Example of the in-game manual generated by StewBeet:`<br>
|
|
38
|
+

|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
Here is a list of features that the package provides (the template is using all of them with clear comments):
|
|
42
|
+
|
|
43
|
+
- 🔄 Automatic resource pack files generation (models, textures, sounds, music discs) with the ability to override them with help of the `assets` folder.
|
|
44
|
+
- ⏳ Versioned load, and clock functions such as `tick`, `second`, `minute`.
|
|
45
|
+
- 🗃️ Loot tables for every item in the `definitions` along with a proper `_give_all` function that gives named chests.
|
|
46
|
+
- 📖 Automatic generation of a really [advanced and interactive items `manual`](./assets/in_game_manual_example.png).
|
|
47
|
+
- 📝 Automatic generation of a `en-us.json` lang file in the resource pack if configuration is set.
|
|
48
|
+
- 🖼️ Automatic headers for every function in `function` folders.
|
|
49
|
+
- 📦 Minecraft like vanilla recipes unlocking.
|
|
50
|
+
- 📚 Official libraries integrations:
|
|
51
|
+
- 🧪 Automatic support for NBT Recipes with [`Smithed Crafter`](https://wiki.smithed.dev/libraries/crafter/) and [`Furnace NBT Recipes`](https://github.com/Stoupy51/FurnaceNbtRecipes/)
|
|
52
|
+
- 🛠️ Placement and destruction for every custom block in the `definitions` with support for blockstates, ore drops (fortune, silk touch), with [`Smithed Custom Blocks`](https://wiki.smithed.dev/libraries/custom-block/).
|
|
53
|
+
- 📚 Each module from [`Bookshelf`](https://github.com/mcbookshelf/bookshelf) is automatically added if you are using it, ex: `function #bs.math:...` will add the `bs.math` module to the datapack.
|
|
54
|
+
- ⛏️ Custom ore generation with [`Smart Ore Generation`](https://github.com/Stoupy51/SmartOreGeneration).
|
|
55
|
+
- 📦 Item transportation / container declaration with [`ItemIO`](https://github.com/edayot/ItemIO) when making custom containers.
|
|
56
|
+
- 🔔 Events such as new items detection with [`Common Signals`](https://github.com/Stoupy51/CommonSignals).
|
|
57
|
+
- 🌐 External datapack libraries support, see configuration for more information.
|
|
58
|
+
- 🔗 Merging datapacks and resource packs with libraries using [Smithed Weld](https://weld.smithed.dev/).
|
|
59
|
+
- 🧩 Automatic recognition of custom blocks patterns depending on the texture names in the `assets/textures` folder. For instance, if you have a top, side, and bottom texture, the block will be automatically recognized as a cube with the top, side, and bottom textures.
|
|
60
|
+
- 📏 Follow the datapack conventions such as [LanternLoad](https://github.com/LanternMC/load), [CustomModelData prefix](https://mcdatapack.vercel.app/), [tag specification](https://wiki.smithed.dev/conventions/tag-specification/), and [namespacing](https://wiki.smithed.dev/conventions/namespacing/).
|
|
61
|
+
- 🧰 Ability to merge a model with the autogenerated one or override it.
|
|
62
|
+
- 🔀 `merge` folder providing a way to merge custom files with the autogenerated ones or add custom files to the datapack.
|
|
63
|
+
- ⚙️ Automatic special compatibilities with datapacks such as [`SimpleDrawer's compacted drawer`](https://edayot.github.io/SimpleDrawer/material.html), [`SimplEnergy's pulverizer`](./build/datapack/data/your_namespace/function/calls/simplenergy/pulverizer_recipes.mcfunction).
|
|
64
|
+
- 📂 Automatic copy of generated zip files to configured folders.
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
## 📦 How to use (beginner friendly)
|
|
68
|
+
In order to use `StewBeet`, you need to have at least [Python 3.12](https://www.python.org/downloads/) 🐍 or higher installed on your computer with pip!<br>
|
|
69
|
+
Then, you can open a terminal 💻 and run the following command to install the python package:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# This will install the latest version of the framework
|
|
73
|
+
# (including beet, bolt, mecha, and other dependencies)
|
|
74
|
+
pip install stewbeet
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Next, there are a few templates available in the [`./templates`](./templates/) folder 📁,<br>
|
|
78
|
+
There are 3 templates available, feel free to choose the one you prefer (but I highly recommend the basic template):
|
|
79
|
+
- 🔹 [`minimal template`](./templates/minimal_template.zip): A very minimal template using only one `stewbeet` plugin.
|
|
80
|
+
- ⭐ [`basic template`](./templates/basic_template.zip): A template with complete configuration but no coded features.
|
|
81
|
+
- 🌟 [`extensive template`](./templates/extensive_template.zip): A template with all the features of the framework, including all the plugins.
|
|
82
|
+
|
|
83
|
+
The clickable links are zip files 📦, but you can check the content of the templates in the [`./templates`](./templates/) folder.<br>
|
|
84
|
+
|
|
85
|
+
Once you have a template, you can modify the `beet.yml` configuration file ⚙️ to suit your needs.<br>
|
|
86
|
+
Finally, you can run the following command to build the project 🔨:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# You can also run 'beet' instead of 'stewbeet' but with less functionality
|
|
90
|
+
# (Make sure you are in the project folder)
|
|
91
|
+
stewbeet
|
|
92
|
+
```
|
|
93
|
+
The command will generate a datapack and a resource pack in your `build` folder 🏗️.<br>
|
|
94
|
+
And that's it! 🎉 That is this easy use the package.<br>
|
|
95
|
+
Since this template is using all the features of the package, you can remove the parts you don't need! 🧹
|
|
96
|
+
|
|
97
|
+
## 🌱 How to use (Beet users)
|
|
98
|
+
If you are already familiar with the [Beet](https://github.com/mcbeet/beet) development kit, `StewBeet` is developped as a bunch of plugins for it.<br>
|
|
99
|
+
Install `StewBeet` with `pip install stewbeet` and check the [StewBeet plugins documentation](./docs/plugins/README.md) to learn about them.
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
## 📚 Documentation
|
|
103
|
+
There are a lot of features in the package, you could check the [extensive template](./templates/extensive/) to see how to use them.<br>
|
|
104
|
+
Alternatively, you could join the [Discord server](https://discord.gg/anxzu6rA9F) to ask questions and get help from the community!<br>
|
|
105
|
+
Or, you could check the **highly detailed** [documentation folder](docs/)<br>
|
|
106
|
+
Here a list of all the currently available guides:
|
|
107
|
+
- 📖 [Getting started](docs/0_getting_started/README.md)
|
|
108
|
+
- 🌱 [Beet Plugins](docs/plugins/README.md)
|
|
109
|
+
- 📁 [Project structure](docs/1_project_structure.md)
|
|
110
|
+
- 🗄️ [Database setup](docs/2_definitions_setup.md)
|
|
111
|
+
- ✍️ [Writing to files](docs/3_writing_to_files.md)
|
|
112
|
+
- 🔗 [External dependencies](docs/4_external_dependencies.md)
|
|
113
|
+
- 🔧 [Miscellaneous](docs/5_miscellaneous.md)
|
|
114
|
+
- 🔄 [Migration guide](docs/6_migration_guide.md)
|
|
115
|
+
- 🚀 [Continuous delivery](docs/7_continuous_delivery.md)
|
|
116
|
+
- ⚔️ [Adding a sword](docs/specific_guides/adding_a_sword.md)
|
|
117
|
+
- More soon!
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
## 🤝 Contribute
|
|
121
|
+
Want to help improve StewBeet? 🔍<br>
|
|
122
|
+
Here's how you can contribute:
|
|
123
|
+
- 🐛 **Report Bugs**: Found a bug? Open an issue on GitHub describing what happened and how to reproduce it.
|
|
124
|
+
- ✨ **Suggest Features**: Have an idea for a new feature? Share it in the issues section!
|
|
125
|
+
- 🔧 **Submit Pull Requests**: Feel free to fix bugs or add new features by submitting pull requests.
|
|
126
|
+
- 📚 **Improve Documentation**: Help make our docs better by fixing errors or adding examples.
|
|
127
|
+
- 💬 **Help Others**: Join our [Discord server](https://discord.gg/anxzu6rA9F) and help other users with their questions.
|
|
128
|
+
|
|
129
|
+
Every contribution matters, no matter how small! 🙌
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
## 📜 What projects use StewBeet?
|
|
133
|
+
To search for projects that use the framework, I search like [this.](https://github.com/search?q=%22%5C%22stewbeet.plugins.%22&type=code)<br>
|
|
134
|
+
Here is a list of projects that use it:<br>
|
|
135
|
+
- Actual projects:
|
|
136
|
+
- Your next project here!
|
|
137
|
+
- https://github.com/e-psi-lon/Armored-Elytra (Python Datapack: before Stewbeet was a thing)
|
|
138
|
+
- https://github.com/Stoupy51/SimplEnergy
|
|
139
|
+
- https://github.com/Stoupy51/ImagineYourCraftDatapack
|
|
140
|
+
- https://github.com/Stoupy51/LifeSteal
|
|
141
|
+
- https://github.com/Stoupy51/Survisland
|
|
142
|
+
- https://github.com/Stoupy51/SmithedSummit
|
|
143
|
+
- https://github.com/Stoupy51/SheepWars
|
|
144
|
+
- https://github.com/Stoupy51/MoreApples
|
|
145
|
+
- https://github.com/Stoupy51/CauldronConcretePowder
|
|
146
|
+
|
|
147
|
+
- Libraries or tools:
|
|
148
|
+
- https://github.com/Stoupy51/SmartOreGeneration
|
|
149
|
+
- https://github.com/Stoupy51/CommonSignals
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
## ⭐ Star History
|
|
153
|
+
|
|
154
|
+
<html>
|
|
155
|
+
<a href="https://star-history.com/#Stoupy51/StewBeet&Date">
|
|
156
|
+
<picture>
|
|
157
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date&theme=dark" />
|
|
158
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date" />
|
|
159
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date" />
|
|
160
|
+
</picture>
|
|
161
|
+
</a>
|
|
162
|
+
</html>
|
|
163
|
+
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
|
|
2
|
+
[](https://www.youtube.com/watch?v=zkcQn23DRaw)
|
|
3
|
+
[](https://github.com/Stoupy51/stewbeet/releases/latest)
|
|
4
|
+
[](https://www.planetminecraft.com/data-pack/python-datapack/)
|
|
5
|
+
[](https://discord.gg/anxzu6rA9F)
|
|
6
|
+
[](https://pypi.org/project/stewbeet/)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
## ❓ What is `StewBeet`
|
|
10
|
+
`StewBeet` is a [Beet](https://github.com/mcbeet/beet) framework and library 📦 aiming to provide huge automation for creating Minecraft datapacks.<br>
|
|
11
|
+
It is designed to be very simple to use and very convenient for developers.
|
|
12
|
+
|
|
13
|
+
`Example of the in-game manual generated by StewBeet:`<br>
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
Here is a list of features that the package provides (the template is using all of them with clear comments):
|
|
18
|
+
|
|
19
|
+
- 🔄 Automatic resource pack files generation (models, textures, sounds, music discs) with the ability to override them with help of the `assets` folder.
|
|
20
|
+
- ⏳ Versioned load, and clock functions such as `tick`, `second`, `minute`.
|
|
21
|
+
- 🗃️ Loot tables for every item in the `definitions` along with a proper `_give_all` function that gives named chests.
|
|
22
|
+
- 📖 Automatic generation of a really [advanced and interactive items `manual`](./assets/in_game_manual_example.png).
|
|
23
|
+
- 📝 Automatic generation of a `en-us.json` lang file in the resource pack if configuration is set.
|
|
24
|
+
- 🖼️ Automatic headers for every function in `function` folders.
|
|
25
|
+
- 📦 Minecraft like vanilla recipes unlocking.
|
|
26
|
+
- 📚 Official libraries integrations:
|
|
27
|
+
- 🧪 Automatic support for NBT Recipes with [`Smithed Crafter`](https://wiki.smithed.dev/libraries/crafter/) and [`Furnace NBT Recipes`](https://github.com/Stoupy51/FurnaceNbtRecipes/)
|
|
28
|
+
- 🛠️ Placement and destruction for every custom block in the `definitions` with support for blockstates, ore drops (fortune, silk touch), with [`Smithed Custom Blocks`](https://wiki.smithed.dev/libraries/custom-block/).
|
|
29
|
+
- 📚 Each module from [`Bookshelf`](https://github.com/mcbookshelf/bookshelf) is automatically added if you are using it, ex: `function #bs.math:...` will add the `bs.math` module to the datapack.
|
|
30
|
+
- ⛏️ Custom ore generation with [`Smart Ore Generation`](https://github.com/Stoupy51/SmartOreGeneration).
|
|
31
|
+
- 📦 Item transportation / container declaration with [`ItemIO`](https://github.com/edayot/ItemIO) when making custom containers.
|
|
32
|
+
- 🔔 Events such as new items detection with [`Common Signals`](https://github.com/Stoupy51/CommonSignals).
|
|
33
|
+
- 🌐 External datapack libraries support, see configuration for more information.
|
|
34
|
+
- 🔗 Merging datapacks and resource packs with libraries using [Smithed Weld](https://weld.smithed.dev/).
|
|
35
|
+
- 🧩 Automatic recognition of custom blocks patterns depending on the texture names in the `assets/textures` folder. For instance, if you have a top, side, and bottom texture, the block will be automatically recognized as a cube with the top, side, and bottom textures.
|
|
36
|
+
- 📏 Follow the datapack conventions such as [LanternLoad](https://github.com/LanternMC/load), [CustomModelData prefix](https://mcdatapack.vercel.app/), [tag specification](https://wiki.smithed.dev/conventions/tag-specification/), and [namespacing](https://wiki.smithed.dev/conventions/namespacing/).
|
|
37
|
+
- 🧰 Ability to merge a model with the autogenerated one or override it.
|
|
38
|
+
- 🔀 `merge` folder providing a way to merge custom files with the autogenerated ones or add custom files to the datapack.
|
|
39
|
+
- ⚙️ Automatic special compatibilities with datapacks such as [`SimpleDrawer's compacted drawer`](https://edayot.github.io/SimpleDrawer/material.html), [`SimplEnergy's pulverizer`](./build/datapack/data/your_namespace/function/calls/simplenergy/pulverizer_recipes.mcfunction).
|
|
40
|
+
- 📂 Automatic copy of generated zip files to configured folders.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## 📦 How to use (beginner friendly)
|
|
44
|
+
In order to use `StewBeet`, you need to have at least [Python 3.12](https://www.python.org/downloads/) 🐍 or higher installed on your computer with pip!<br>
|
|
45
|
+
Then, you can open a terminal 💻 and run the following command to install the python package:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# This will install the latest version of the framework
|
|
49
|
+
# (including beet, bolt, mecha, and other dependencies)
|
|
50
|
+
pip install stewbeet
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Next, there are a few templates available in the [`./templates`](./templates/) folder 📁,<br>
|
|
54
|
+
There are 3 templates available, feel free to choose the one you prefer (but I highly recommend the basic template):
|
|
55
|
+
- 🔹 [`minimal template`](./templates/minimal_template.zip): A very minimal template using only one `stewbeet` plugin.
|
|
56
|
+
- ⭐ [`basic template`](./templates/basic_template.zip): A template with complete configuration but no coded features.
|
|
57
|
+
- 🌟 [`extensive template`](./templates/extensive_template.zip): A template with all the features of the framework, including all the plugins.
|
|
58
|
+
|
|
59
|
+
The clickable links are zip files 📦, but you can check the content of the templates in the [`./templates`](./templates/) folder.<br>
|
|
60
|
+
|
|
61
|
+
Once you have a template, you can modify the `beet.yml` configuration file ⚙️ to suit your needs.<br>
|
|
62
|
+
Finally, you can run the following command to build the project 🔨:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# You can also run 'beet' instead of 'stewbeet' but with less functionality
|
|
66
|
+
# (Make sure you are in the project folder)
|
|
67
|
+
stewbeet
|
|
68
|
+
```
|
|
69
|
+
The command will generate a datapack and a resource pack in your `build` folder 🏗️.<br>
|
|
70
|
+
And that's it! 🎉 That is this easy use the package.<br>
|
|
71
|
+
Since this template is using all the features of the package, you can remove the parts you don't need! 🧹
|
|
72
|
+
|
|
73
|
+
## 🌱 How to use (Beet users)
|
|
74
|
+
If you are already familiar with the [Beet](https://github.com/mcbeet/beet) development kit, `StewBeet` is developped as a bunch of plugins for it.<br>
|
|
75
|
+
Install `StewBeet` with `pip install stewbeet` and check the [StewBeet plugins documentation](./docs/plugins/README.md) to learn about them.
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
## 📚 Documentation
|
|
79
|
+
There are a lot of features in the package, you could check the [extensive template](./templates/extensive/) to see how to use them.<br>
|
|
80
|
+
Alternatively, you could join the [Discord server](https://discord.gg/anxzu6rA9F) to ask questions and get help from the community!<br>
|
|
81
|
+
Or, you could check the **highly detailed** [documentation folder](docs/)<br>
|
|
82
|
+
Here a list of all the currently available guides:
|
|
83
|
+
- 📖 [Getting started](docs/0_getting_started/README.md)
|
|
84
|
+
- 🌱 [Beet Plugins](docs/plugins/README.md)
|
|
85
|
+
- 📁 [Project structure](docs/1_project_structure.md)
|
|
86
|
+
- 🗄️ [Database setup](docs/2_definitions_setup.md)
|
|
87
|
+
- ✍️ [Writing to files](docs/3_writing_to_files.md)
|
|
88
|
+
- 🔗 [External dependencies](docs/4_external_dependencies.md)
|
|
89
|
+
- 🔧 [Miscellaneous](docs/5_miscellaneous.md)
|
|
90
|
+
- 🔄 [Migration guide](docs/6_migration_guide.md)
|
|
91
|
+
- 🚀 [Continuous delivery](docs/7_continuous_delivery.md)
|
|
92
|
+
- ⚔️ [Adding a sword](docs/specific_guides/adding_a_sword.md)
|
|
93
|
+
- More soon!
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## 🤝 Contribute
|
|
97
|
+
Want to help improve StewBeet? 🔍<br>
|
|
98
|
+
Here's how you can contribute:
|
|
99
|
+
- 🐛 **Report Bugs**: Found a bug? Open an issue on GitHub describing what happened and how to reproduce it.
|
|
100
|
+
- ✨ **Suggest Features**: Have an idea for a new feature? Share it in the issues section!
|
|
101
|
+
- 🔧 **Submit Pull Requests**: Feel free to fix bugs or add new features by submitting pull requests.
|
|
102
|
+
- 📚 **Improve Documentation**: Help make our docs better by fixing errors or adding examples.
|
|
103
|
+
- 💬 **Help Others**: Join our [Discord server](https://discord.gg/anxzu6rA9F) and help other users with their questions.
|
|
104
|
+
|
|
105
|
+
Every contribution matters, no matter how small! 🙌
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
## 📜 What projects use StewBeet?
|
|
109
|
+
To search for projects that use the framework, I search like [this.](https://github.com/search?q=%22%5C%22stewbeet.plugins.%22&type=code)<br>
|
|
110
|
+
Here is a list of projects that use it:<br>
|
|
111
|
+
- Actual projects:
|
|
112
|
+
- Your next project here!
|
|
113
|
+
- https://github.com/e-psi-lon/Armored-Elytra (Python Datapack: before Stewbeet was a thing)
|
|
114
|
+
- https://github.com/Stoupy51/SimplEnergy
|
|
115
|
+
- https://github.com/Stoupy51/ImagineYourCraftDatapack
|
|
116
|
+
- https://github.com/Stoupy51/LifeSteal
|
|
117
|
+
- https://github.com/Stoupy51/Survisland
|
|
118
|
+
- https://github.com/Stoupy51/SmithedSummit
|
|
119
|
+
- https://github.com/Stoupy51/SheepWars
|
|
120
|
+
- https://github.com/Stoupy51/MoreApples
|
|
121
|
+
- https://github.com/Stoupy51/CauldronConcretePowder
|
|
122
|
+
|
|
123
|
+
- Libraries or tools:
|
|
124
|
+
- https://github.com/Stoupy51/SmartOreGeneration
|
|
125
|
+
- https://github.com/Stoupy51/CommonSignals
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
## ⭐ Star History
|
|
129
|
+
|
|
130
|
+
<html>
|
|
131
|
+
<a href="https://star-history.com/#Stoupy51/StewBeet&Date">
|
|
132
|
+
<picture>
|
|
133
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date&theme=dark" />
|
|
134
|
+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date" />
|
|
135
|
+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date" />
|
|
136
|
+
</picture>
|
|
137
|
+
</a>
|
|
138
|
+
</html>
|
|
139
|
+
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
|
|
2
|
+
[build-system]
|
|
3
|
+
requires = ["hatchling"]
|
|
4
|
+
build-backend = "hatchling.build"
|
|
5
|
+
|
|
6
|
+
[project]
|
|
7
|
+
name = "stewbeet"
|
|
8
|
+
version = "2.2.31"
|
|
9
|
+
description = "Beet Framework made to help generating advanced Minecraft datapack contents"
|
|
10
|
+
readme = "README.md"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
requires-python = ">=3.12"
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Programming Language :: Python :: 3",
|
|
15
|
+
"License :: OSI Approved :: MIT License",
|
|
16
|
+
"Operating System :: OS Independent",
|
|
17
|
+
]
|
|
18
|
+
dependencies = [
|
|
19
|
+
"stouputils>=1.5.0",
|
|
20
|
+
"model_resolver>=1.12.0",
|
|
21
|
+
"beet>=0.112.0",
|
|
22
|
+
"bolt>=0.49.2",
|
|
23
|
+
"mecha>=0.99.0",
|
|
24
|
+
"smithed>=0.19.0",
|
|
25
|
+
"mutagen>=1.47.0",
|
|
26
|
+
"pyperclip>=1.8.0",
|
|
27
|
+
"pydantic<2.12.0",
|
|
28
|
+
]
|
|
29
|
+
[[project.authors]]
|
|
30
|
+
name = "Stoupy51"
|
|
31
|
+
email = "stoupy51@gmail.com"
|
|
32
|
+
|
|
33
|
+
[project.urls]
|
|
34
|
+
Homepage = "https://github.com/Stoupy51/stewbeet"
|
|
35
|
+
Issues = "https://github.com/Stoupy51/stewbeet/issues"
|
|
36
|
+
|
|
37
|
+
[project.scripts]
|
|
38
|
+
stewbeet = "stewbeet:main"
|
|
39
|
+
|
|
40
|
+
[tool.pyright]
|
|
41
|
+
typeCheckingMode = "strict"
|
|
42
|
+
|
|
43
|
+
[tool.setuptools]
|
|
44
|
+
license-files = ["LICENSE"]
|
|
45
|
+
|
|
46
|
+
[tool.ruff]
|
|
47
|
+
exclude = [
|
|
48
|
+
".git",
|
|
49
|
+
".ruff_cache",
|
|
50
|
+
".venv",
|
|
51
|
+
".vscode",
|
|
52
|
+
".cursor",
|
|
53
|
+
"build",
|
|
54
|
+
"dist",
|
|
55
|
+
]
|
|
56
|
+
line-length = 200
|
|
57
|
+
|
|
58
|
+
[tool.ruff.lint]
|
|
59
|
+
select = [
|
|
60
|
+
"E",
|
|
61
|
+
"W",
|
|
62
|
+
"F",
|
|
63
|
+
"I",
|
|
64
|
+
"N",
|
|
65
|
+
"UP",
|
|
66
|
+
"B",
|
|
67
|
+
"C4",
|
|
68
|
+
"T20",
|
|
69
|
+
"RUF",
|
|
70
|
+
]
|
|
71
|
+
ignore = [
|
|
72
|
+
"T201",
|
|
73
|
+
"W191",
|
|
74
|
+
"N803",
|
|
75
|
+
"N806",
|
|
76
|
+
"F403",
|
|
77
|
+
"F405",
|
|
78
|
+
]
|
|
79
|
+
|
|
80
|
+
[tool.hatch.build]
|
|
81
|
+
include = ["stewbeet"]
|
|
82
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
# type: ignore
|
|
3
|
+
# ruff: noqa: F401
|
|
4
|
+
# Imports
|
|
5
|
+
from beet import *
|
|
6
|
+
|
|
7
|
+
from .cli import main
|
|
8
|
+
from .core import *
|
|
9
|
+
from .plugins.initialize.source_lore_font import find_pack_png
|
|
10
|
+
from .plugins.resource_pack.item_models.object import AutoModel
|
|
11
|
+
from .plugins.resource_pack.sounds import add_sound
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def beet_default(ctx: Context):
|
|
15
|
+
""" Initializes the StewBeet package. """
|
|
16
|
+
ctx.require("stewbeet.plugins.initialize")
|
|
17
|
+
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
|
|
2
|
+
# Imports
|
|
3
|
+
from beet import Context
|
|
4
|
+
|
|
5
|
+
# Constants
|
|
6
|
+
GENERATION_PLUGINS = (
|
|
7
|
+
"stewbeet.plugins.verify_definitions",
|
|
8
|
+
"stewbeet.plugins.resource_pack.sounds",
|
|
9
|
+
"stewbeet.plugins.resource_pack.item_models",
|
|
10
|
+
"stewbeet.plugins.resource_pack.check_power_of_2",
|
|
11
|
+
"stewbeet.plugins.custom_recipes",
|
|
12
|
+
"stewbeet.plugins.custom_paintings",
|
|
13
|
+
"stewbeet.plugins.ingame_manual",
|
|
14
|
+
"stewbeet.plugins.datapack.loading",
|
|
15
|
+
"stewbeet.plugins.datapack.custom_blocks",
|
|
16
|
+
"stewbeet.plugins.datapack.loot_tables",
|
|
17
|
+
"stewbeet.plugins.datapack.sorters",
|
|
18
|
+
"stewbeet.plugins.compatibilities.simpledrawer",
|
|
19
|
+
"stewbeet.plugins.compatibilities.neo_enchant"
|
|
20
|
+
)
|
|
21
|
+
FINALYZE_PLUGINS = (
|
|
22
|
+
"stewbeet.plugins.finalyze.custom_blocks_ticking",
|
|
23
|
+
"stewbeet.plugins.finalyze.basic_datapack_structure",
|
|
24
|
+
"stewbeet.plugins.finalyze.dependencies",
|
|
25
|
+
"stewbeet.plugins.finalyze.check_unused_textures",
|
|
26
|
+
"stewbeet.plugins.finalyze.last_final",
|
|
27
|
+
"stewbeet.plugins.auto.lang_file",
|
|
28
|
+
"stewbeet.plugins.auto.headers",
|
|
29
|
+
"stewbeet.plugins.archive",
|
|
30
|
+
"stewbeet.plugins.merge_smithed_weld",
|
|
31
|
+
"stewbeet.plugins.copy_to_destination",
|
|
32
|
+
"stewbeet.plugins.compute_sha1"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
def beet_default(ctx: Context):
|
|
36
|
+
""" Run all plugins that should run after definitions are loaded.
|
|
37
|
+
This function will yield before finalizing the project (so users can run their own plugins in the middle of the pipeline).
|
|
38
|
+
|
|
39
|
+
Requires:
|
|
40
|
+
- StewBeet to be initialized (e.g. from stewbeet.plugins.initialize).
|
|
41
|
+
- Definitions to be loaded
|
|
42
|
+
"""
|
|
43
|
+
# Assertions
|
|
44
|
+
for x in GENERATION_PLUGINS:
|
|
45
|
+
ctx.require(x)
|
|
46
|
+
|
|
47
|
+
# Yield to allow user code to run
|
|
48
|
+
yield
|
|
49
|
+
|
|
50
|
+
# After user code, run the final plugins
|
|
51
|
+
for x in FINALYZE_PLUGINS:
|
|
52
|
+
ctx.require(x)
|
|
53
|
+
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
|
|
2
|
+
# Imports
|
|
3
|
+
import importlib
|
|
4
|
+
import os
|
|
5
|
+
import shutil
|
|
6
|
+
import subprocess
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
from beet import ProjectConfig
|
|
10
|
+
from stouputils.decorators import LogLevels, handle_error
|
|
11
|
+
from stouputils.print import GREEN, RED, info, show_version
|
|
12
|
+
|
|
13
|
+
from .utils import get_project_config
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@handle_error(message="Error while running 'stewbeet'")
|
|
17
|
+
def main():
|
|
18
|
+
second_arg: str = sys.argv[1].lower() if len(sys.argv) == 2 else ""
|
|
19
|
+
if second_arg == "" and len(sys.argv) == 1:
|
|
20
|
+
sys.argv.append("build")
|
|
21
|
+
|
|
22
|
+
# Print the version of stewbeet, beet, bolt, mecha, and stouputils
|
|
23
|
+
if second_arg in ("--version", "-v", "version"):
|
|
24
|
+
return show_version("stewbeet", primary_color=RED, secondary_color=GREEN)
|
|
25
|
+
|
|
26
|
+
# Try to find and load the beet configuration file
|
|
27
|
+
cfg: ProjectConfig = get_project_config()
|
|
28
|
+
|
|
29
|
+
# Check if the command is "clean" or "rebuild"
|
|
30
|
+
if second_arg in ["clean", "rebuild"]:
|
|
31
|
+
info("Cleaning project and caches...")
|
|
32
|
+
|
|
33
|
+
# Remove the beet cache directory
|
|
34
|
+
subprocess.run([sys.executable, "-m", "beet", "cache", "-c"], check=False, capture_output=True)
|
|
35
|
+
if os.path.exists(".beet_cache"):
|
|
36
|
+
shutil.rmtree(".beet_cache", ignore_errors=True)
|
|
37
|
+
|
|
38
|
+
# Remove the output directory specified in the config
|
|
39
|
+
shutil.rmtree(str(cfg.output), ignore_errors=True)
|
|
40
|
+
|
|
41
|
+
# Remove all __pycache__ folders
|
|
42
|
+
for root, dirs, _ in os.walk("."):
|
|
43
|
+
if "__pycache__" in dirs:
|
|
44
|
+
cache_dir: str = os.path.join(root, "__pycache__")
|
|
45
|
+
shutil.rmtree(cache_dir, ignore_errors=True)
|
|
46
|
+
|
|
47
|
+
# Remove manual cache directory if specified in metadata
|
|
48
|
+
cache_path: str = cfg.meta.get("stewbeet", {}).get("manual", {}).get("cache_path", "")
|
|
49
|
+
if cache_path and os.path.exists(cache_path):
|
|
50
|
+
shutil.rmtree(cache_path, ignore_errors=True)
|
|
51
|
+
|
|
52
|
+
# Remove debug definitions file if it exists
|
|
53
|
+
definitions_debug: str = cfg.meta.get("stewbeet", {}).get("definitions_debug", "")
|
|
54
|
+
if definitions_debug and os.path.exists(definitions_debug):
|
|
55
|
+
os.remove(definitions_debug)
|
|
56
|
+
info("Cleaning done!")
|
|
57
|
+
|
|
58
|
+
# Replace "rebuild" by "build" to continue the process
|
|
59
|
+
if second_arg == "rebuild":
|
|
60
|
+
sys.argv[1] = "build"
|
|
61
|
+
|
|
62
|
+
# Handle all other commands except "clean"
|
|
63
|
+
if second_arg != "clean":
|
|
64
|
+
# Add current directory to Python path
|
|
65
|
+
current_dir: str = os.getcwd()
|
|
66
|
+
if current_dir not in sys.path:
|
|
67
|
+
sys.path.insert(0, current_dir)
|
|
68
|
+
|
|
69
|
+
# Try to import all pipeline
|
|
70
|
+
for plugin in cfg.pipeline:
|
|
71
|
+
handle_error(importlib.import_module, error_log=LogLevels.ERROR_TRACEBACK)(plugin)
|
|
72
|
+
|
|
73
|
+
# Run beet with all remaining arguments
|
|
74
|
+
subprocess.run([sys.executable, "-m", "beet"] + [x for x in sys.argv[1:] if x != "rebuild"], check=False)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
if __name__ == "__main__":
|
|
78
|
+
main()
|
|
79
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
|
|
2
|
+
# Imports
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
from stouputils.continuous_delivery.cd_utils import load_credentials # type: ignore # noqa: F401
|
|
6
|
+
|
|
7
|
+
from ..core.constants import LATEST_MC_VERSION
|
|
8
|
+
from ..utils import ProjectConfig, get_project_config
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# Function that replace the "~" by the user's home directory
|
|
12
|
+
def replace_tilde(path: str) -> str:
|
|
13
|
+
return path.replace("~", os.path.expanduser("~"))
|
|
14
|
+
|
|
15
|
+
# Supported versions
|
|
16
|
+
def get_supported_versions(version: str | list[str] | None = None) -> list[str]:
|
|
17
|
+
""" Get the supported versions for a given version of Minecraft
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
version (str): Version of Minecraft
|
|
21
|
+
Returns:
|
|
22
|
+
list[str]: List of supported versions, ex: ["1.21.3", "1.21.2"]
|
|
23
|
+
"""
|
|
24
|
+
# If version is None, get it from the project config, otherwise use the default version
|
|
25
|
+
if version is None:
|
|
26
|
+
try:
|
|
27
|
+
config: ProjectConfig = get_project_config()
|
|
28
|
+
version = config.meta.get("mc_supports") or config.minecraft or LATEST_MC_VERSION
|
|
29
|
+
except AssertionError:
|
|
30
|
+
version = LATEST_MC_VERSION
|
|
31
|
+
if isinstance(version, list):
|
|
32
|
+
return [x for x in version if x != "infinite"]
|
|
33
|
+
version = str(version)
|
|
34
|
+
|
|
35
|
+
# Some versions are considered the same for compatibility purposes
|
|
36
|
+
sames: list[list[str]] = [
|
|
37
|
+
["1.21", "1.21", "1.21.1"],
|
|
38
|
+
["1.21.2", "1.21.3"],
|
|
39
|
+
["1.21.6", "1.21.7", "1.21.8"],
|
|
40
|
+
["1.21.9", "1.21.10"],
|
|
41
|
+
]
|
|
42
|
+
|
|
43
|
+
# Find the matching list of versions
|
|
44
|
+
for s in sames:
|
|
45
|
+
if version in s:
|
|
46
|
+
return s
|
|
47
|
+
|
|
48
|
+
# If no match, return the version itself in a list
|
|
49
|
+
return [version]
|
|
50
|
+
|