stewbeet 2.1.1__tar.gz → 2.1.2__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.1.1 → stewbeet-2.1.2}/PKG-INFO +1 -1
- {stewbeet-2.1.1 → stewbeet-2.1.2}/pyproject.toml +1 -1
- stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/__init__.py +31 -0
- stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/constants.py +63 -0
- stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/extend_datapack.py +19 -0
- stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/match.py +33 -0
- stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/quick_sort.py +102 -0
- stewbeet-2.1.2/stewbeet/plugins/datapack/sorters/selection_sort.py +124 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/initialize/__init__.py +3 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/.gitignore +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/LICENSE +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/README.md +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/__main__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/all.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/cli.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/continuous_delivery/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/continuous_delivery/cd_utils.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/continuous_delivery/github.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/continuous_delivery/modrinth.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/continuous_delivery/pmc.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/continuous_delivery/smithed.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/balancing.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/batteries.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/cables.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_d.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_de.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dn.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dne.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dns.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnse.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ds.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dse.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_e.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_n.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ne.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_new.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ns.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nse.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_s.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_se.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_u.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ud.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ude.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udn.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udne.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udns.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnse.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uds.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udse.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ue.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_un.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_une.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uns.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unse.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_us.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_use.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usew.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uw.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_w.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_lib_calls.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/gui.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/wrench.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/__memory__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/constants.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/completion.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/equipments.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/materials.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/records.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/simplenergy.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/smart_ore_generation.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/definitions_helper/text.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/ingredients.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/utils/io.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/core/utils/sounds.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/bookshelf.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/bookshelf_config.json +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Bitwise.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Block.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Color.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Dump.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Environment.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Generation.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Health.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Hitbox.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Id.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Interaction.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Link.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Log.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Math.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Move.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Position.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Random.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Raycast.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Schedule.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Sidebar.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Spline.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf String.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Time.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Tree.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Vector.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf View.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Bookshelf Xp.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Common Signals.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Furnace NBT Recipes.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/SmartOreGeneration.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Smithed Crafter.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/datapack/Smithed Custom Block.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/dependencies/resource_pack/Smithed Crafter.zip +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/archive/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/auto/headers/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/auto/headers/object.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/auto/lang_file/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/auto/lang_file/utils.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/compute_sha1/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/copy_to_destination/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/furnace.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/pulverizer.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/smithed.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/custom_recipes/vanilla.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/datapack/custom_blocks/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/datapack/loading/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/datapack/loot_tables/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/dependencies/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/finalyze/last_final/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/book_components.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/book_optimizer.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/craft_content.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/image_utils.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/iso_renders.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/main.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/other_utils.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/page_font.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/shared_import.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/showcase_image.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/.gitignore +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/_README.md +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/ingame_manual/text_components.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/initialize/source_lore_font.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/merge_smithed_weld/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/merge_smithed_weld/weld.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/resource_pack/item_models/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/resource_pack/item_models/object.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/resource_pack/sounds/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/plugins/verify_definitions/__init__.py +0 -0
- {stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: stewbeet
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.2
|
|
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
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
|
|
2
|
+
# Imports
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from beet import Context
|
|
6
|
+
from stouputils.decorators import measure_time
|
|
7
|
+
from stouputils.print import progress
|
|
8
|
+
|
|
9
|
+
from .constants import SorterFile
|
|
10
|
+
from .match import generate_sorter
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# Main entry point
|
|
14
|
+
@measure_time(progress, message="Execution time of 'stewbeet.plugins.datapack.sorters'")
|
|
15
|
+
def beet_default(ctx: Context):
|
|
16
|
+
""" Main entry point for the sorters plugin.
|
|
17
|
+
This plugin generates functions that sort lists in storage.
|
|
18
|
+
|
|
19
|
+
Args:
|
|
20
|
+
ctx (Context): The beet context.
|
|
21
|
+
"""
|
|
22
|
+
ctx.data.extend_namespace.append(SorterFile)
|
|
23
|
+
|
|
24
|
+
# Iterate through all sorter configurations
|
|
25
|
+
for file_instance in ctx.data[SorterFile].values():
|
|
26
|
+
sorter: dict[str, Any] = file_instance.data.dict()
|
|
27
|
+
generate_sorter(ctx, sorter)
|
|
28
|
+
|
|
29
|
+
# Clear the registry
|
|
30
|
+
ctx.data[SorterFile].clear()
|
|
31
|
+
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
|
|
2
|
+
# Imports
|
|
3
|
+
from typing import Any, ClassVar, Literal, TypeAlias
|
|
4
|
+
|
|
5
|
+
from beet import FileDeserialize, JsonFileBase, NamespaceFileScope
|
|
6
|
+
from pydantic.v1 import BaseModel
|
|
7
|
+
|
|
8
|
+
# Constants
|
|
9
|
+
MACRO: str = "storage sorter:temp args"
|
|
10
|
+
|
|
11
|
+
# Type aliases
|
|
12
|
+
SorterAlgorithm: TypeAlias = Literal[
|
|
13
|
+
"quick_sort",
|
|
14
|
+
"selection_sort"
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
# Classes
|
|
18
|
+
class Sorter(BaseModel):
|
|
19
|
+
""" Configuration model for sorting operations.
|
|
20
|
+
|
|
21
|
+
This class defines the parameters required to generate datapack functions
|
|
22
|
+
that can sort lists stored in storage using various algorithms.
|
|
23
|
+
|
|
24
|
+
Example:
|
|
25
|
+
```
|
|
26
|
+
{
|
|
27
|
+
"algorithm": "selection_sort",
|
|
28
|
+
"functions_location": "switch:stats/minigame/sort_leaderboard",
|
|
29
|
+
"to_sort": {
|
|
30
|
+
"storage": "switch:stats",
|
|
31
|
+
"target": "all.modes.sheepwars.played"
|
|
32
|
+
},
|
|
33
|
+
"key": "count",
|
|
34
|
+
"scale": 100
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
"""
|
|
38
|
+
algorithm: SorterAlgorithm = "selection_sort"
|
|
39
|
+
""" Algorithm used to sort the elements, defaults to `selection_sort`. """
|
|
40
|
+
functions_location: str
|
|
41
|
+
""" Namespaced id where the sorting functions are generated. """
|
|
42
|
+
to_sort: dict[str, str]
|
|
43
|
+
""" Location of the list to sort. """
|
|
44
|
+
key: str
|
|
45
|
+
""" The key to the number getting compared. """
|
|
46
|
+
scale: int = 1
|
|
47
|
+
""" (Option) By how many the number should be scaled before getting rounded. """
|
|
48
|
+
limit: int | None = None
|
|
49
|
+
""" (Option) Limit of how many elements to sort, if not specified all elements will be sorted.
|
|
50
|
+
(Only compatible with `selection_sort` algorithm.) """
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class SorterFile(JsonFileBase[Sorter]):
|
|
54
|
+
""" JSON file handler for sorter configurations.
|
|
55
|
+
|
|
56
|
+
This class handles the serialization and deserialization of sorter
|
|
57
|
+
configuration files within the datapack namespace.
|
|
58
|
+
"""
|
|
59
|
+
model: type[Any] = Sorter
|
|
60
|
+
scope: ClassVar[NamespaceFileScope] = ("sorter",)
|
|
61
|
+
extension: ClassVar[str] = ".json"
|
|
62
|
+
data: ClassVar[FileDeserialize[Sorter]] = FileDeserialize()
|
|
63
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
# Imports
|
|
3
|
+
from beet import Context
|
|
4
|
+
|
|
5
|
+
from .constants import SorterFile
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Main entry point
|
|
9
|
+
def beet_default(ctx: Context):
|
|
10
|
+
""" Extend the datapack namespace with the sorter resource type.
|
|
11
|
+
|
|
12
|
+
This function registers the SorterFile class with the datapack context,
|
|
13
|
+
allowing sorter configuration files to be recognized and processed.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
ctx (Context): The beet context.
|
|
17
|
+
"""
|
|
18
|
+
ctx.data.extend_namespace.append(SorterFile)
|
|
19
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
# Imports
|
|
3
|
+
from beet import Context
|
|
4
|
+
|
|
5
|
+
from .quick_sort import generate_quick_sort
|
|
6
|
+
from .selection_sort import generate_selection_sort
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Functions
|
|
10
|
+
def generate_sorter(ctx: Context, sorter: dict):
|
|
11
|
+
""" Generate sorting functions based on the specified algorithm.
|
|
12
|
+
|
|
13
|
+
Currently an abstraction layer in case more algorithms are added in the future.
|
|
14
|
+
Routes to the appropriate algorithm-specific generator function.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
ctx (Context): The beet context for generating functions.
|
|
18
|
+
sorter (dict): Configuration dictionary containing sorting parameters.
|
|
19
|
+
"""
|
|
20
|
+
# Assertions to validate sorter configuration
|
|
21
|
+
assert isinstance(sorter.get("functions_location"), str), "'functions_location' must be a string, e.g. 'switch:stats/minigame/sort_leaderboard'."
|
|
22
|
+
assert isinstance(sorter.get("key"), str), "'key' must be a string, e.g. 'count' if you list is looking like [{'id':'...', count:54}, ...]."
|
|
23
|
+
assert isinstance(sorter.get("to_sort"), dict), "'to_sort' must be a dictionary."
|
|
24
|
+
assert isinstance(sorter["to_sort"].get("storage"), str), "'to_sort.storage' must be a string, e.g. 'switch:stats'"
|
|
25
|
+
assert isinstance(sorter["to_sort"].get("target"), str), "'to_sort.target' must be a string, e.g. 'all.modes.sheepwars.played'."
|
|
26
|
+
|
|
27
|
+
# Switch case
|
|
28
|
+
match(sorter["algorithm"]):
|
|
29
|
+
case "selection_sort":
|
|
30
|
+
generate_selection_sort(ctx, sorter)
|
|
31
|
+
case "quick_sort":
|
|
32
|
+
generate_quick_sort(ctx, sorter)
|
|
33
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
""" Quick Sort Algorithm for Minecraft Storage Lists
|
|
2
|
+
|
|
3
|
+
This algorithm is less efficient than the Selection Sort algorithm for Minecraft due to the cost of macro calls.
|
|
4
|
+
It is recommended to use Selection Sort.
|
|
5
|
+
|
|
6
|
+
Author: Darukshock
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
# Imports
|
|
10
|
+
from beet import Context
|
|
11
|
+
|
|
12
|
+
from ....core import Mem, write_function
|
|
13
|
+
from .constants import MACRO
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# Functions
|
|
17
|
+
def generate_quick_sort(ctx: Context, sorter: dict) -> None:
|
|
18
|
+
""" Generate quick_sort algorithm functions for sorting storage lists.
|
|
19
|
+
|
|
20
|
+
This function creates a set of minecraft functions that implement the quick_sort
|
|
21
|
+
algorithm to sort lists stored in minecraft storage. The algorithm is implemented
|
|
22
|
+
using recursive function calls with macro parameters.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
ctx (Context): The beet context for generating functions.
|
|
26
|
+
sorter (dict): Configuration dictionary containing sorting parameters.
|
|
27
|
+
"""
|
|
28
|
+
old_ctx: Context = Mem.ctx
|
|
29
|
+
Mem.ctx = ctx # Set the current context to the one provided
|
|
30
|
+
|
|
31
|
+
# Extract configuration parameters
|
|
32
|
+
functions_location: str = sorter["functions_location"]
|
|
33
|
+
to_sort: str = f"storage {sorter['to_sort']['storage']} {sorter['to_sort']['target']}"
|
|
34
|
+
key: str = sorter["key"]
|
|
35
|
+
scale: int = sorter.get("scale", 1) # Default scale is 1
|
|
36
|
+
|
|
37
|
+
# Main sort entry point function
|
|
38
|
+
write_function(f"{functions_location}/sort", f"""
|
|
39
|
+
# Create a scoreboard objective and storage for temporary values
|
|
40
|
+
scoreboard objectives add sorter.val dummy
|
|
41
|
+
data modify storage sorter:temp inInt set value [0]
|
|
42
|
+
|
|
43
|
+
# Count the number of elements to sort and prepare the macro
|
|
44
|
+
execute store result score high sorter.val run data get {to_sort}
|
|
45
|
+
execute store result {MACRO}.high int 1 run scoreboard players remove high sorter.val 1
|
|
46
|
+
data modify {MACRO}.low set value 0
|
|
47
|
+
|
|
48
|
+
# Start the quick_sort process
|
|
49
|
+
function {functions_location}/quick_sort with {MACRO}
|
|
50
|
+
""")
|
|
51
|
+
|
|
52
|
+
# Quicksort recursive function
|
|
53
|
+
write_function(f"{functions_location}/quick_sort", f"""
|
|
54
|
+
$execute if predicate {{"condition": "value_check","range": {{"min": -8,"max": $(low)}},"value": $(high)}} run return 0
|
|
55
|
+
$execute store result score pi sorter.val run function {functions_location}/partition_main {{low:$(low),high:$(high)}}
|
|
56
|
+
data modify storage sorter:temp inInt append value 0
|
|
57
|
+
execute store result storage sorter:temp inInt[-1] int 1 store result {MACRO}.high int 1 run scoreboard players remove pi sorter.val 1
|
|
58
|
+
function {functions_location}/quick_sort with {MACRO}
|
|
59
|
+
execute store result score pi sorter.val run data get storage sorter:temp inInt[-1]
|
|
60
|
+
execute store result {MACRO}.low int 1 run scoreboard players add pi sorter.val 2
|
|
61
|
+
$data modify {MACRO}.high set value $(high)
|
|
62
|
+
function {functions_location}/quick_sort with {MACRO}
|
|
63
|
+
""")
|
|
64
|
+
|
|
65
|
+
# Partition function - finds pivot position
|
|
66
|
+
write_function(f"{functions_location}/partition_main", f"""
|
|
67
|
+
$execute store result score pivot sorter.val run data get {to_sort}[$(high)].{key} {scale}
|
|
68
|
+
$scoreboard players set i sorter.val $(low)
|
|
69
|
+
scoreboard players remove i sorter.val 1
|
|
70
|
+
$execute store result {MACRO}.j int 1 run scoreboard players set j sorter.val $(low)
|
|
71
|
+
$function {functions_location}/partition_loop {{high:$(high),low:$(low),j:$(low)}}
|
|
72
|
+
execute store result {MACRO}.i int 1 run scoreboard players add i sorter.val 1
|
|
73
|
+
$data modify {MACRO}.j set value $(high)
|
|
74
|
+
function {functions_location}/partition_swap with {MACRO}
|
|
75
|
+
return run scoreboard players get i sorter.val
|
|
76
|
+
""")
|
|
77
|
+
|
|
78
|
+
# Partition loop - iterates through elements to partition
|
|
79
|
+
write_function(f"{functions_location}/partition_loop", f"""
|
|
80
|
+
$execute if score j sorter.val matches $(high).. run return 0
|
|
81
|
+
$execute store result score test sorter.val run data get {to_sort}[$(j)].{key} {scale}
|
|
82
|
+
execute if score test sorter.val < pivot sorter.val run function {functions_location}/partition_loop_swap with {MACRO}
|
|
83
|
+
execute store result {MACRO}.j int 1 run scoreboard players add j sorter.val 1
|
|
84
|
+
function {functions_location}/partition_loop with {MACRO}
|
|
85
|
+
""")
|
|
86
|
+
|
|
87
|
+
# Partition swap - swaps elements during partitioning
|
|
88
|
+
write_function(f"{functions_location}/partition_swap", f"""
|
|
89
|
+
$data modify storage sorter:temp element set from {to_sort}[$(i)]
|
|
90
|
+
$data modify {to_sort}[$(i)] set from {to_sort}[$(j)]
|
|
91
|
+
$data modify {to_sort}[$(j)] set from storage sorter:temp element
|
|
92
|
+
""")
|
|
93
|
+
|
|
94
|
+
# Partition loop swap - continues partitioning after swap
|
|
95
|
+
write_function(f"{functions_location}/partition_loop_swap", f"""
|
|
96
|
+
execute store result {MACRO}.i int 1 run scoreboard players add i sorter.val 1
|
|
97
|
+
function {functions_location}/partition_swap with {MACRO}
|
|
98
|
+
""")
|
|
99
|
+
|
|
100
|
+
# Reset the context to the original one
|
|
101
|
+
Mem.ctx = old_ctx
|
|
102
|
+
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
|
|
2
|
+
# Imports
|
|
3
|
+
from beet import Context
|
|
4
|
+
|
|
5
|
+
from ....core import Mem, write_function
|
|
6
|
+
from .constants import MACRO
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Functions
|
|
10
|
+
def generate_selection_sort(ctx: Context, sorter: dict) -> None:
|
|
11
|
+
""" Generate selection sort algorithm functions for sorting storage lists.
|
|
12
|
+
|
|
13
|
+
This function creates a set of minecraft functions that implement the selection sort
|
|
14
|
+
algorithm to sort lists stored in minecraft storage. The algorithm finds the minimum
|
|
15
|
+
element and moves it to a new sorted array repeatedly.
|
|
16
|
+
|
|
17
|
+
Args:
|
|
18
|
+
ctx (Context): The beet context for generating functions.
|
|
19
|
+
sorter (dict): Configuration dictionary containing sorting parameters.
|
|
20
|
+
"""
|
|
21
|
+
old_ctx: Context = Mem.ctx
|
|
22
|
+
Mem.ctx = ctx # Set the current context to the one provided
|
|
23
|
+
|
|
24
|
+
# Extract configuration parameters
|
|
25
|
+
functions_location: str = sorter["functions_location"]
|
|
26
|
+
to_sort: str = f"storage {sorter['to_sort']['storage']} {sorter['to_sort']['target']}"
|
|
27
|
+
key: str = sorter["key"]
|
|
28
|
+
scale: int = sorter.get("scale", 1) # Default scale is 1
|
|
29
|
+
limit: int | None = sorter.get("limit") # Optional limit for sorting
|
|
30
|
+
|
|
31
|
+
# Main sort entry point function
|
|
32
|
+
sort_function_content = f"""
|
|
33
|
+
# Create a scoreboard objective and storage for temporary values
|
|
34
|
+
scoreboard objectives add sorter.val dummy
|
|
35
|
+
data modify storage sorter:temp original_array set from {to_sort}
|
|
36
|
+
data modify storage sorter:temp sorted_array set value []
|
|
37
|
+
"""
|
|
38
|
+
if limit is not None:
|
|
39
|
+
sort_function_content += """
|
|
40
|
+
scoreboard players set #sorted_count sorter.val 0
|
|
41
|
+
"""
|
|
42
|
+
sort_function_content += f"""
|
|
43
|
+
# Start the selection sort process
|
|
44
|
+
execute if data storage sorter:temp original_array[0] run function {functions_location}/selection_sort_loop
|
|
45
|
+
data modify {to_sort} set from storage sorter:temp sorted_array
|
|
46
|
+
|
|
47
|
+
# Cleanup temporary storage
|
|
48
|
+
data remove storage sorter:temp original_array
|
|
49
|
+
data remove storage sorter:temp copy_array
|
|
50
|
+
data remove storage sorter:temp sorted_array
|
|
51
|
+
"""
|
|
52
|
+
write_function(f"{functions_location}/sort", sort_function_content)
|
|
53
|
+
|
|
54
|
+
# Selection sort main loop
|
|
55
|
+
loop_function_content = f"""
|
|
56
|
+
# Reset variables for finding minimum
|
|
57
|
+
scoreboard players set #current_index sorter.val 0
|
|
58
|
+
scoreboard players set #min_value sorter.val 2147483647
|
|
59
|
+
scoreboard players set #min_index sorter.val 0
|
|
60
|
+
|
|
61
|
+
# Copy the original array to the working copy
|
|
62
|
+
data modify storage sorter:temp copy_array set from storage sorter:temp original_array
|
|
63
|
+
|
|
64
|
+
# Find the minimum element
|
|
65
|
+
execute if data storage sorter:temp copy_array[0] run function {functions_location}/find_min
|
|
66
|
+
|
|
67
|
+
# Move the minimum element to the sorted array
|
|
68
|
+
execute store result {MACRO}.min_index int 1 run scoreboard players get #min_index sorter.val
|
|
69
|
+
function {functions_location}/move_min_element with {MACRO}
|
|
70
|
+
"""
|
|
71
|
+
if limit is not None:
|
|
72
|
+
loop_function_content += f"""
|
|
73
|
+
# Increment sorted count
|
|
74
|
+
scoreboard players add #sorted_count sorter.val 1
|
|
75
|
+
|
|
76
|
+
# Continue if limit not reached and there are more elements to sort
|
|
77
|
+
execute if score #sorted_count sorter.val matches ..{limit-1} if data storage sorter:temp original_array[0] run return run function {functions_location}/selection_sort_loop
|
|
78
|
+
|
|
79
|
+
# If limit reached, append remaining elements without sorting
|
|
80
|
+
execute if score #sorted_count sorter.val matches {limit} run function {functions_location}/append_remaining
|
|
81
|
+
"""
|
|
82
|
+
else:
|
|
83
|
+
loop_function_content += f"""
|
|
84
|
+
# Continue if there are more elements to sort
|
|
85
|
+
execute if data storage sorter:temp original_array[0] run function {functions_location}/selection_sort_loop
|
|
86
|
+
"""
|
|
87
|
+
write_function(f"{functions_location}/selection_sort_loop", loop_function_content)
|
|
88
|
+
|
|
89
|
+
# Find minimum element in the array
|
|
90
|
+
write_function(f"{functions_location}/find_min", f"""
|
|
91
|
+
# Get the current element value
|
|
92
|
+
execute store result score #current_value sorter.val run data get storage sorter:temp copy_array[0].{key} {scale}
|
|
93
|
+
|
|
94
|
+
# Check if this is the new minimum
|
|
95
|
+
execute if score #current_value sorter.val < #min_value sorter.val run scoreboard players operation #min_index sorter.val = #current_index sorter.val
|
|
96
|
+
execute if score #current_value sorter.val < #min_value sorter.val run scoreboard players operation #min_value sorter.val = #current_value sorter.val
|
|
97
|
+
|
|
98
|
+
# Move to the next element
|
|
99
|
+
scoreboard players add #current_index sorter.val 1
|
|
100
|
+
data remove storage sorter:temp copy_array[0]
|
|
101
|
+
|
|
102
|
+
# Continue if there are more elements
|
|
103
|
+
execute if data storage sorter:temp copy_array[0] run function {functions_location}/find_min
|
|
104
|
+
""")
|
|
105
|
+
|
|
106
|
+
# Move the minimum element from original to sorted array
|
|
107
|
+
write_function(f"{functions_location}/move_min_element", """
|
|
108
|
+
# Add the minimum element to the sorted array
|
|
109
|
+
$data modify storage sorter:temp sorted_array append from storage sorter:temp original_array[$(min_index)]
|
|
110
|
+
|
|
111
|
+
# Remove the minimum element from the original array
|
|
112
|
+
$data remove storage sorter:temp original_array[$(min_index)]
|
|
113
|
+
""")
|
|
114
|
+
|
|
115
|
+
# Generate append_remaining function only if limit is specified
|
|
116
|
+
if limit is not None:
|
|
117
|
+
write_function(f"{functions_location}/append_remaining", """
|
|
118
|
+
# Append remaining unsorted elements to the sorted array
|
|
119
|
+
data modify storage sorter:temp sorted_array append from storage sorter:temp original_array[]
|
|
120
|
+
""")
|
|
121
|
+
|
|
122
|
+
# Reset the context to the original one
|
|
123
|
+
Mem.ctx = old_ctx
|
|
124
|
+
|
|
@@ -106,6 +106,9 @@ def beet_default(ctx: Context):
|
|
|
106
106
|
(1, 21, 8): 64,
|
|
107
107
|
})
|
|
108
108
|
|
|
109
|
+
# Extend the datapack namespace with sorter files
|
|
110
|
+
ctx.require("stewbeet.plugins.datapack.sorters.extend_datapack")
|
|
111
|
+
|
|
109
112
|
# Yield message to indicate successful build
|
|
110
113
|
yield
|
|
111
114
|
|
|
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
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_d.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_de.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dn.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dne.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dns.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnse.json
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ds.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dse.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_e.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_n.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ne.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_new.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ns.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nse.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_s.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_se.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_u.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ud.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ude.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udn.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udne.json
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udns.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uds.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udse.json
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ue.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_un.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_une.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uns.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unse.json
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_us.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_use.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usew.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uw.json
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/energy_cable_models/variant_w.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel
RENAMED
|
File without changes
|
{stewbeet-2.1.1 → stewbeet-2.1.2}/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|