stewbeet 2.2.1__tar.gz → 2.2.3__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.
Potentially problematic release.
This version of stewbeet might be problematic. Click here for more details.
- {stewbeet-2.2.1 → stewbeet-2.2.3}/PKG-INFO +1 -1
- {stewbeet-2.2.1 → stewbeet-2.2.3}/pyproject.toml +1 -1
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/all.py +1 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/cli.py +1 -1
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/constants.py +2 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/definitions_helper/completion.py +11 -6
- stewbeet-2.2.3/stewbeet/plugins/custom_paintings/__init__.py +83 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/image_utils.py +8 -5
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/iso_renders.py +15 -2
- stewbeet-2.2.3/stewbeet/plugins/ingame_manual/templates/_README.md +5 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/initialize/__init__.py +4 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/verify_definitions/__init__.py +22 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/.gitignore +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/LICENSE +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/README.md +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/__main__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/continuous_delivery/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/continuous_delivery/cd_utils.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/continuous_delivery/github.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/continuous_delivery/modrinth.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/continuous_delivery/pmc.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/continuous_delivery/smithed.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/balancing.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/batteries.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/cables.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_d.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_de.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dn.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dne.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dns.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnse.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ds.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dse.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_e.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_n.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ne.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_new.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ns.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nse.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_s.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_se.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_u.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ud.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ude.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udn.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udne.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udns.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnse.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uds.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udse.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ue.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_un.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_une.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uns.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unse.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_us.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_use.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usew.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uw.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_w.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_lib_calls.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/gui.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/py.typed +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/servo_mechanism_models/base_block.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/servo_mechanism_models/base_item.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_block.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_connected.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_item.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_block.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_connected.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_item.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/wrench.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/__memory__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/definitions_helper/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/definitions_helper/equipments.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/definitions_helper/materials.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/definitions_helper/records.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/definitions_helper/simplenergy.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/definitions_helper/smart_ore_generation.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/definitions_helper/text.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/ingredients.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/utils/io.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/core/utils/sounds.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/bookshelf.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/bookshelf_config.json +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Bitwise.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Block.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Color.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Dump.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Environment.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Generation.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Health.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Hitbox.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Id.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Interaction.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Link.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Log.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Math.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Move.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Position.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Random.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Raycast.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Schedule.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Sidebar.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Spline.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf String.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Time.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Tree.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Vector.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf View.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Bookshelf Xp.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Common Signals.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Furnace NBT Recipes.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/SmartOreGeneration.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Smithed Crafter.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/datapack/Smithed Custom Block.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/dependencies/resource_pack/Smithed Crafter.zip +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/archive/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/auto/headers/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/auto/headers/context_analyzer.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/auto/headers/execution_parser.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/auto/headers/function_analyzer.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/auto/headers/object.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/auto/lang_file/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/auto/lang_file/utils.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/compute_sha1/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/copy_to_destination/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/custom_recipes/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/custom_recipes/furnace.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/custom_recipes/pulverizer.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/custom_recipes/smithed.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/custom_recipes/vanilla.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/custom_blocks/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/loading/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/loot_tables/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/sorters/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/sorters/constants.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/sorters/extend_datapack.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/sorters/match.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/sorters/mod.mcdoc +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/sorters/quick_sort.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/datapack/sorters/selection_sort.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/finalyze/dependencies/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/finalyze/last_final/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/mining.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/stonecutting.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/wiki_mining_template.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/book_components.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/book_optimizer.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/craft_content.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/main.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/other_utils.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/page_font.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/shared_import.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/showcase_image.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/.gitignore +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/mining.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/stonecutting.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/wiki_mining_template.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/ingame_manual/text_components.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/initialize/source_lore_font.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/merge_smithed_weld/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/merge_smithed_weld/weld.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/resource_pack/item_models/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/resource_pack/item_models/object.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/plugins/resource_pack/sounds/__init__.py +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/py.typed +0 -0
- {stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: stewbeet
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
4
4
|
Summary: Beet Framework made to help generating advanced Minecraft datapack contents
|
|
5
5
|
Project-URL: Homepage, https://github.com/Stoupy51/stewbeet
|
|
6
6
|
Project-URL: Issues, https://github.com/Stoupy51/stewbeet/issues
|
|
@@ -9,6 +9,7 @@ GENERATION_PLUGINS = (
|
|
|
9
9
|
"stewbeet.plugins.resource_pack.item_models",
|
|
10
10
|
"stewbeet.plugins.resource_pack.check_power_of_2",
|
|
11
11
|
"stewbeet.plugins.custom_recipes",
|
|
12
|
+
"stewbeet.plugins.custom_paintings",
|
|
12
13
|
"stewbeet.plugins.ingame_manual",
|
|
13
14
|
"stewbeet.plugins.datapack.loading",
|
|
14
15
|
"stewbeet.plugins.datapack.custom_blocks",
|
|
@@ -15,7 +15,7 @@ from .utils import get_project_config
|
|
|
15
15
|
|
|
16
16
|
@handle_error(message="Error while running 'stewbeet'")
|
|
17
17
|
def main():
|
|
18
|
-
second_arg: str = sys.argv[1] if len(sys.argv) == 2 else ""
|
|
18
|
+
second_arg: str = sys.argv[1] if len(sys.argv) == 2 else "build"
|
|
19
19
|
|
|
20
20
|
# Try to find and load the beet configuration file
|
|
21
21
|
cfg: ProjectConfig = get_project_config()
|
|
@@ -64,6 +64,7 @@ VANILLA_BLOCK_FOR_ORES: JsonDict = {"id":"minecraft:polished_deepslate", "apply_
|
|
|
64
64
|
OVERRIDE_MODEL: str = "override_model" # Key to a dictionnary that will be used to override the whole model
|
|
65
65
|
PULVERIZING: str = "simplenergy_pulverizing" # Value of a recipe type, used to generate dusts from ores (used by SimplEnergy)
|
|
66
66
|
SMITHED_CRAFTER_COMMAND: str = "smithed_crafter_command" # Key to a command that will be used in a recipe in the Smithed Crafter library. If not present, the command will be defaulted to a loot table. Ex: {"result":...,SMITHED_CRAFTER_COMMAND: "function your_namespace:calls/smithed_crafter/do_something_else"}
|
|
67
|
+
PAINTING_DATA: str = "painting_data" # Key to a dict that contains the painting data, like {"author":"","title":"","width":1,"height":1} where author and title defaults to beet config values if not given
|
|
67
68
|
GROWING_SEED: str = "staged_seed" # Key to a seed that has multiple growth stages, value needs to be a dict like {"texture_basename":"wheat","stages":8,"seconds":600,"planted_on":"stone","loots":[{"id":"minecraft:wheat_seeds","min_count":1,"max_count":3}]} where loots can be either this format or a loot table path "namespace:blocks/loot_table_name"
|
|
68
69
|
WIKI_COMPONENT: str = "wiki_components" # Key to a text component that will be used to generate the wiki button in the manual
|
|
69
70
|
RESULT_OF_CRAFTING: str = "result_of_crafting" # Key to a list of recipes to craft the item, ex: "adamantium": {RESULT_OF_CRAFTING: [...]}
|
|
@@ -78,6 +79,7 @@ NOT_COMPONENTS: list[str] = [ # Keys that should not be considered as comp
|
|
|
78
79
|
NO_SILK_TOUCH_DROP,
|
|
79
80
|
OVERRIDE_MODEL,
|
|
80
81
|
SMITHED_CRAFTER_COMMAND,
|
|
82
|
+
PAINTING_DATA,
|
|
81
83
|
GROWING_SEED,
|
|
82
84
|
]
|
|
83
85
|
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
# Imports
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
+
from typing import cast
|
|
7
|
+
|
|
6
8
|
from beet.core.utils import JsonDict, TextComponent
|
|
7
9
|
from box import Box
|
|
8
10
|
|
|
@@ -10,17 +12,20 @@ from ..__memory__ import Mem
|
|
|
10
12
|
|
|
11
13
|
|
|
12
14
|
# Add item model component
|
|
13
|
-
def add_item_model_component(black_list: list[str] | None = None) -> None:
|
|
15
|
+
def add_item_model_component(black_list: list[str] | None = None, ignore_paintings: bool = True) -> None:
|
|
14
16
|
""" Add an item model component to all items in the definitions.
|
|
15
17
|
|
|
16
18
|
Args:
|
|
17
|
-
black_list
|
|
19
|
+
black_list (list[str]): The list of items to ignore.
|
|
20
|
+
ignore_paintings (bool): Whether to ignore items that are paintings (have PAINTING_DATA).
|
|
18
21
|
"""
|
|
19
22
|
if black_list is None:
|
|
20
23
|
black_list = []
|
|
21
24
|
for item, data in Mem.definitions.items():
|
|
22
25
|
if item in black_list or data.get("item_model", None) is not None:
|
|
23
26
|
continue
|
|
27
|
+
if ignore_paintings and data.get("painting_data", None) is not None:
|
|
28
|
+
continue
|
|
24
29
|
data["item_model"] = f"{Mem.ctx.project_id}:{item}"
|
|
25
30
|
return
|
|
26
31
|
|
|
@@ -52,7 +57,7 @@ def add_item_name_and_lore_if_missing(is_external: bool = False, black_list: lis
|
|
|
52
57
|
|
|
53
58
|
# Apply namespaced lore if none
|
|
54
59
|
if not data.get("lore"):
|
|
55
|
-
data["lore"] = []
|
|
60
|
+
data["lore"] = cast(list[TextComponent], [])
|
|
56
61
|
|
|
57
62
|
# If item is not external,
|
|
58
63
|
if not is_external:
|
|
@@ -83,7 +88,7 @@ def add_private_custom_data_for_namespace(is_external: bool = False) -> None:
|
|
|
83
88
|
"""
|
|
84
89
|
for item, data in Mem.definitions.items():
|
|
85
90
|
if not data.get("custom_data"):
|
|
86
|
-
data["custom_data"] = {}
|
|
91
|
+
data["custom_data"] = cast(JsonDict, {})
|
|
87
92
|
if is_external and ":" in item:
|
|
88
93
|
ns, id = item.split(":")
|
|
89
94
|
else:
|
|
@@ -101,6 +106,6 @@ def add_smithed_ignore_vanilla_behaviours_convention() -> None:
|
|
|
101
106
|
"""
|
|
102
107
|
for data in Mem.definitions.values():
|
|
103
108
|
data["custom_data"] = Box(data.get("custom_data", {}), default_box=True, default_box_attr={}, default_box_create_on_get=True)
|
|
104
|
-
data["custom_data"].smithed.ignore.functionality = True
|
|
105
|
-
data["custom_data"].smithed.ignore.crafting = True
|
|
109
|
+
data["custom_data"].smithed.ignore.functionality = True # pyright: ignore[reportUnknownMemberType]
|
|
110
|
+
data["custom_data"].smithed.ignore.crafting = True # pyright: ignore[reportUnknownMemberType]
|
|
106
111
|
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
|
|
2
|
+
# Imports
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
from beet import Context, PaintingVariant, PaintingVariantTag, Texture
|
|
6
|
+
from beet.core.utils import JsonDict
|
|
7
|
+
from stouputils.decorators import measure_time
|
|
8
|
+
from stouputils.io import relative_path, super_json_load
|
|
9
|
+
from stouputils.print import error, progress, warning
|
|
10
|
+
|
|
11
|
+
from ...core.__memory__ import Mem
|
|
12
|
+
from ...core.constants import PAINTING_DATA
|
|
13
|
+
from ...core.utils.io import set_json_encoder
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# Main entry point
|
|
17
|
+
@measure_time(progress, message="Execution time of 'stewbeet.plugins.custom_paintings'")
|
|
18
|
+
def beet_default(ctx: Context) -> None:
|
|
19
|
+
""" Main entry point for the custom paintings plugin.
|
|
20
|
+
This plugin handles the generation of custom paintings for the datapack and resource pack.
|
|
21
|
+
|
|
22
|
+
Requires a valid definitions in Mem.definitions in order to function properly using constant 'PAINTING_DATA'.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
ctx (Context): The beet context.
|
|
26
|
+
"""
|
|
27
|
+
if Mem.ctx is None: # pyright: ignore[reportUnnecessaryComparison]
|
|
28
|
+
Mem.ctx = ctx
|
|
29
|
+
ns: str = ctx.project_id
|
|
30
|
+
textures_folder: str = Mem.ctx.meta.get("stewbeet", {}).get("textures_folder", "")
|
|
31
|
+
placeable_values: list[str] = []
|
|
32
|
+
|
|
33
|
+
# Assertions
|
|
34
|
+
assert textures_folder, "The 'textures_folder' key is missing in the 'stewbeet' section of the beet.yml file."
|
|
35
|
+
|
|
36
|
+
# For each item definition that has painting data,
|
|
37
|
+
for item, data in Mem.definitions.items():
|
|
38
|
+
painting_data: JsonDict = data.get(PAINTING_DATA, {})
|
|
39
|
+
if painting_data:
|
|
40
|
+
|
|
41
|
+
## Datapack
|
|
42
|
+
# Add the item id to the list of painting variants values
|
|
43
|
+
if not painting_data.get("not_placeable", False):
|
|
44
|
+
placeable_values.append(f"{ns}:{item}")
|
|
45
|
+
|
|
46
|
+
# Set default author and title if not provided
|
|
47
|
+
if "author" not in painting_data:
|
|
48
|
+
painting_data["author"] = {"text": Mem.ctx.project_author or "Unknown"}
|
|
49
|
+
if "title" not in painting_data:
|
|
50
|
+
painting_data["title"] = data.get("item_name") or {"text": item.replace("_", " ").title()}
|
|
51
|
+
|
|
52
|
+
# Create ordered painting data with asset_id first
|
|
53
|
+
ordered_painting_data = {"asset_id": f"{ns}:{item}"}
|
|
54
|
+
ordered_painting_data.update(painting_data)
|
|
55
|
+
ordered_painting_data.pop("not_placeable", None)
|
|
56
|
+
|
|
57
|
+
# Create the painting definition
|
|
58
|
+
Mem.ctx.data[ns].painting_variants[item] = set_json_encoder(PaintingVariant(ordered_painting_data))
|
|
59
|
+
|
|
60
|
+
## Resource pack
|
|
61
|
+
# Get the texture path
|
|
62
|
+
matching_textures: list[str] = [
|
|
63
|
+
relative_path(f"{root}/{file}")
|
|
64
|
+
for root, _, files in os.walk(textures_folder)
|
|
65
|
+
for file in files if file == f"{item}.png"
|
|
66
|
+
]
|
|
67
|
+
if not matching_textures:
|
|
68
|
+
error(f"No texture found for painting '{item}' in the textures folder '{textures_folder}'. Expected a file named '{item}.png'.")
|
|
69
|
+
continue
|
|
70
|
+
elif len(matching_textures) > 1:
|
|
71
|
+
warning(f"Multiple textures found for painting '{item}' in the textures folder '{textures_folder}'. Using the first one found: '{matching_textures[0]}'.")
|
|
72
|
+
src: str = matching_textures[0]
|
|
73
|
+
dst: str = f"painting/{item}"
|
|
74
|
+
|
|
75
|
+
# Check if the texture is not already registered
|
|
76
|
+
if not Mem.ctx.assets[ns].textures.get(dst):
|
|
77
|
+
mcmeta: JsonDict | None = None if not os.path.exists(src + ".mcmeta") else super_json_load(f"{src}.mcmeta")
|
|
78
|
+
Mem.ctx.assets[ns].textures[dst] = Texture(source_path=src, mcmeta=mcmeta)
|
|
79
|
+
|
|
80
|
+
# Add the painting variant tag to the context data
|
|
81
|
+
if placeable_values:
|
|
82
|
+
Mem.ctx.data["minecraft"].painting_variant_tags["placeable"] = set_json_encoder(PaintingVariantTag({"values": placeable_values}))
|
|
83
|
+
|
|
@@ -81,16 +81,19 @@ def image_count(count: int | str) -> Image.Image:
|
|
|
81
81
|
img = Image.new("RGBA", (32, 32), (0, 0, 0, 0))
|
|
82
82
|
draw = ImageDraw.Draw(img)
|
|
83
83
|
|
|
84
|
-
# Reduce font size if count is too long
|
|
85
|
-
|
|
86
|
-
font_size = sizes.get(len(count), 16)
|
|
84
|
+
# Reduce font size if count is too long
|
|
85
|
+
font_size: int = 16 if len(count) < 3 else 8
|
|
87
86
|
font = ImageFont.truetype(f"{TEMPLATES_PATH}/minecraft_font.ttf", size = font_size)
|
|
88
87
|
|
|
89
88
|
# Calculate text size and positions of the two texts
|
|
90
89
|
text_width = draw.textlength(count, font = font)
|
|
91
90
|
text_height = font_size + 4
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
|
|
92
|
+
# Adjust shadow offset for smaller fonts
|
|
93
|
+
shadow_offset: int = 0 if font_size == 16 else 1
|
|
94
|
+
height_offset: int = 0 if font_size == 16 else 3
|
|
95
|
+
pos_1 = (34-text_width-shadow_offset), (32-text_height-shadow_offset+height_offset)
|
|
96
|
+
pos_2 = (32-text_width), (30-text_height+height_offset)
|
|
94
97
|
|
|
95
98
|
# Draw the count
|
|
96
99
|
draw.text(pos_1, count, (50, 50, 50), font = font)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
# Imports
|
|
3
3
|
import os
|
|
4
|
+
import shutil
|
|
4
5
|
from typing import cast
|
|
5
6
|
|
|
6
7
|
import requests
|
|
@@ -92,8 +93,9 @@ def generate_all_iso_renders():
|
|
|
92
93
|
pass
|
|
93
94
|
|
|
94
95
|
# Download all the vanilla textures from the wiki
|
|
95
|
-
def download_item(item: str):
|
|
96
|
-
|
|
96
|
+
def download_item(item: str, destination: str = ""):
|
|
97
|
+
if not destination:
|
|
98
|
+
destination = f"{path}/minecraft/{item}.png"
|
|
97
99
|
if not (os.path.exists(destination) and cache_assets): # If not downloaded yet or not using cache
|
|
98
100
|
link: str = f"{DOWNLOAD_VANILLA_ASSETS_RAW}/item/{item}.png"
|
|
99
101
|
response = requests.get(link)
|
|
@@ -113,3 +115,14 @@ def generate_all_iso_renders():
|
|
|
113
115
|
# Multithread the download
|
|
114
116
|
multithreading(download_item, used_vanilla_items, max_workers=min(32, len(used_vanilla_items)))
|
|
115
117
|
|
|
118
|
+
# Download painting texture for custom paintings
|
|
119
|
+
last_painting_path: str = ""
|
|
120
|
+
for item, data in Mem.definitions.items():
|
|
121
|
+
if data["id"] == "minecraft:painting" and not data.get("item_model"):
|
|
122
|
+
if not last_painting_path:
|
|
123
|
+
last_painting_path = f"{path}/{ns}/{item}.png"
|
|
124
|
+
download_item("painting", last_painting_path)
|
|
125
|
+
else:
|
|
126
|
+
# Just copy the last painting downloaded
|
|
127
|
+
shutil.copy(last_painting_path, f"{path}/{ns}/{item}.png")
|
|
128
|
+
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
## Manual overrides folder
|
|
3
|
+
This folder is used to override the manual assets. Every file in this folder will replace the [original ones](https://github.com/Stoupy51/StewBeet/tree/main/python_package/stewbeet/plugins/ingame_manual/assets) as long as the file name is the same.<br>
|
|
4
|
+
For instance, if you want to replace the `shaped_3x3.png` file, you need to create a `shaped_3x3.png` file in this folder.<br>
|
|
5
|
+
|
|
@@ -56,6 +56,10 @@ def beet_default(ctx: Context):
|
|
|
56
56
|
ctx.data.pack_format_registry.update(MORE_DATA_PACK_FORMATS)
|
|
57
57
|
ctx.assets.pack_format_registry.update(MORE_ASSETS_PACK_FORMATS)
|
|
58
58
|
ctx.meta["data_version"] = MORE_DATA_VERSIONS
|
|
59
|
+
if ctx.minecraft_version:
|
|
60
|
+
tuple_version: tuple[int, ...] = tuple(int(x) for x in ctx.minecraft_version.split(".") if x.isdigit())
|
|
61
|
+
ctx.data.pack_format = ctx.data.pack_format_registry.get(tuple_version, ctx.data.pack_format)
|
|
62
|
+
ctx.assets.pack_format = ctx.assets.pack_format_registry.get(tuple_version, ctx.assets.pack_format)
|
|
59
63
|
|
|
60
64
|
# Helper function to setup pack.mcmeta
|
|
61
65
|
def setup_pack_mcmeta(pack: Pack[Any], pack_format: int):
|
|
@@ -16,6 +16,7 @@ from ...core.constants import (
|
|
|
16
16
|
CUSTOM_BLOCK_ALTERNATIVE,
|
|
17
17
|
CUSTOM_BLOCK_VANILLA,
|
|
18
18
|
NO_SILK_TOUCH_DROP,
|
|
19
|
+
PAINTING_DATA,
|
|
19
20
|
RESULT_OF_CRAFTING,
|
|
20
21
|
USED_FOR_CRAFTING,
|
|
21
22
|
VANILLA_BLOCK,
|
|
@@ -241,6 +242,27 @@ def beet_default(ctx: Context) -> None:
|
|
|
241
242
|
if (not recipe.get("result_count") or not isinstance(recipe["result_count"], int)) and (recipe.get("type") not in ("smithing_trim",)):
|
|
242
243
|
errors.append(f"Recipe #{i} in RESULT_OF_CRAFTING should have an int 'result_count' key for '{item}'")
|
|
243
244
|
|
|
245
|
+
# Check the PAINTING_DATA key
|
|
246
|
+
if data.get(PAINTING_DATA):
|
|
247
|
+
if data["id"] != "minecraft:painting":
|
|
248
|
+
errors.append(f"PAINTING_DATA key should only be used with 'id' equal to 'minecraft:painting' for '{item}', found '{data['id']}' instead")
|
|
249
|
+
elif not isinstance(data[PAINTING_DATA], dict):
|
|
250
|
+
errors.append(f"PAINTING_DATA key should be a dictionary for '{item}'")
|
|
251
|
+
else:
|
|
252
|
+
painting_data = cast(JsonDict, data[PAINTING_DATA])
|
|
253
|
+
if painting_data.get("author") and not isinstance(painting_data["author"], dict | list | str):
|
|
254
|
+
errors.append(f"PAINTING_DATA 'author' key should be a Text Component for '{item}', got '{painting_data['author']}'")
|
|
255
|
+
if painting_data.get("title") and not isinstance(painting_data["title"], dict | list | str):
|
|
256
|
+
errors.append(f"PAINTING_DATA 'title' key should be a Text Component for '{item}', got '{painting_data['title']}'")
|
|
257
|
+
if not painting_data.get("width") or not isinstance(painting_data["width"], int) or painting_data["width"] < 1 or painting_data["width"] > 16:
|
|
258
|
+
errors.append(f"PAINTING_DATA should have an integer 'width' key between 1 and 16 for '{item}'")
|
|
259
|
+
if not painting_data.get("height") or not isinstance(painting_data["height"], int) or painting_data["height"] < 1 or painting_data["height"] > 16:
|
|
260
|
+
errors.append(f"PAINTING_DATA should have an integer 'height' key between 1 and 16 for '{item}'")
|
|
261
|
+
|
|
262
|
+
# Add missing data if needed
|
|
263
|
+
if "painting/variant" not in data:
|
|
264
|
+
data["painting/variant"] = f"{ctx.project_id}:{item}"
|
|
265
|
+
|
|
244
266
|
# Log errors if any
|
|
245
267
|
if errors:
|
|
246
268
|
error("Errors found in the definitions during verification:\n- " + "\n- ".join(errors))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_d.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_de.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dn.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dne.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dns.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnse.json
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ds.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dse.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_e.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_n.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ne.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_new.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ns.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nse.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_s.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_se.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_u.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ud.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ude.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udn.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udne.json
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udns.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uds.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udse.json
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ue.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_un.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_une.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uns.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unse.json
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_us.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_use.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usew.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uw.json
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/energy_cable_models/variant_w.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel
RENAMED
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.2.1 → stewbeet-2.2.3}/stewbeet/contrib/simplenergy/servo_mechanism_models/base_item.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|