stewbeet 2.2.31__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. stewbeet-2.2.31/.gitignore +11 -0
  2. stewbeet-2.2.31/LICENSE +21 -0
  3. stewbeet-2.2.31/PKG-INFO +163 -0
  4. stewbeet-2.2.31/README.md +139 -0
  5. stewbeet-2.2.31/pyproject.toml +82 -0
  6. stewbeet-2.2.31/stewbeet/__init__.py +17 -0
  7. stewbeet-2.2.31/stewbeet/__main__.py +7 -0
  8. stewbeet-2.2.31/stewbeet/all.py +53 -0
  9. stewbeet-2.2.31/stewbeet/cli.py +79 -0
  10. stewbeet-2.2.31/stewbeet/continuous_delivery/__init__.py +8 -0
  11. stewbeet-2.2.31/stewbeet/continuous_delivery/cd_utils.py +50 -0
  12. stewbeet-2.2.31/stewbeet/continuous_delivery/github.py +3 -0
  13. stewbeet-2.2.31/stewbeet/continuous_delivery/modrinth.py +572 -0
  14. stewbeet-2.2.31/stewbeet/continuous_delivery/pmc.py +160 -0
  15. stewbeet-2.2.31/stewbeet/continuous_delivery/smithed.py +119 -0
  16. stewbeet-2.2.31/stewbeet/contrib/simplenergy/__init__.py +11 -0
  17. stewbeet-2.2.31/stewbeet/contrib/simplenergy/balancing.py +94 -0
  18. stewbeet-2.2.31/stewbeet/contrib/simplenergy/batteries.py +101 -0
  19. stewbeet-2.2.31/stewbeet/contrib/simplenergy/cables.py +329 -0
  20. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant.json +16 -0
  21. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_d.json +29 -0
  22. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_de.json +37 -0
  23. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dew.json +48 -0
  24. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dn.json +37 -0
  25. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dne.json +48 -0
  26. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnew.json +58 -0
  27. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dns.json +48 -0
  28. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnse.json +58 -0
  29. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsew.json +68 -0
  30. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsw.json +71 -0
  31. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnw.json +48 -0
  32. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ds.json +37 -0
  33. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dse.json +48 -0
  34. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsew.json +58 -0
  35. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsw.json +48 -0
  36. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_dw.json +37 -0
  37. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_e.json +16 -0
  38. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ew.json +17 -0
  39. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_n.json +29 -0
  40. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ne.json +37 -0
  41. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_new.json +48 -0
  42. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ns.json +17 -0
  43. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_nse.json +61 -0
  44. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsew.json +110 -0
  45. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsw.json +48 -0
  46. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_nw.json +50 -0
  47. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_s.json +27 -0
  48. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_se.json +37 -0
  49. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_sew.json +48 -0
  50. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_sw.json +37 -0
  51. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_u.json +29 -0
  52. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ud.json +17 -0
  53. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ude.json +48 -0
  54. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udew.json +58 -0
  55. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udn.json +48 -0
  56. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udne.json +58 -0
  57. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnew.json +68 -0
  58. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udns.json +58 -0
  59. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnse.json +68 -0
  60. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsew.json +50 -0
  61. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsw.json +68 -0
  62. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnw.json +57 -0
  63. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_uds.json +48 -0
  64. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udse.json +58 -0
  65. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsew.json +68 -0
  66. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsw.json +58 -0
  67. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_udw.json +48 -0
  68. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_ue.json +37 -0
  69. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_uew.json +48 -0
  70. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_un.json +37 -0
  71. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_une.json +48 -0
  72. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unew.json +58 -0
  73. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_uns.json +48 -0
  74. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unse.json +58 -0
  75. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsew.json +68 -0
  76. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsw.json +58 -0
  77. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_unw.json +48 -0
  78. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_us.json +37 -0
  79. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_use.json +48 -0
  80. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_usew.json +58 -0
  81. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_usw.json +48 -0
  82. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_uw.json +37 -0
  83. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_cable_models/variant_w.json +29 -0
  84. stewbeet-2.2.31/stewbeet/contrib/simplenergy/energy_lib_calls.py +57 -0
  85. stewbeet-2.2.31/stewbeet/contrib/simplenergy/gui.py +103 -0
  86. stewbeet-2.2.31/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel +1 -0
  87. stewbeet-2.2.31/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json +755 -0
  88. stewbeet-2.2.31/stewbeet/contrib/simplenergy/py.typed +1 -0
  89. stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/base_block.json +17 -0
  90. stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/base_item.json +27 -0
  91. stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_block.json +13 -0
  92. stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_connected.json +13 -0
  93. stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_item.json +6 -0
  94. stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_block.json +13 -0
  95. stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_connected.json +13 -0
  96. stewbeet-2.2.31/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_item.json +6 -0
  97. stewbeet-2.2.31/stewbeet/contrib/simplenergy/wrench.py +45 -0
  98. stewbeet-2.2.31/stewbeet/core/__init__.py +9 -0
  99. stewbeet-2.2.31/stewbeet/core/__memory__.py +20 -0
  100. stewbeet-2.2.31/stewbeet/core/constants.py +159 -0
  101. stewbeet-2.2.31/stewbeet/core/definitions_helper/__init__.py +12 -0
  102. stewbeet-2.2.31/stewbeet/core/definitions_helper/completion.py +126 -0
  103. stewbeet-2.2.31/stewbeet/core/definitions_helper/equipments.py +196 -0
  104. stewbeet-2.2.31/stewbeet/core/definitions_helper/materials.py +348 -0
  105. stewbeet-2.2.31/stewbeet/core/definitions_helper/records.py +106 -0
  106. stewbeet-2.2.31/stewbeet/core/definitions_helper/simplenergy.py +62 -0
  107. stewbeet-2.2.31/stewbeet/core/definitions_helper/smart_ore_generation.py +214 -0
  108. stewbeet-2.2.31/stewbeet/core/definitions_helper/text.py +123 -0
  109. stewbeet-2.2.31/stewbeet/core/ingredients.py +327 -0
  110. stewbeet-2.2.31/stewbeet/core/utils/io.py +192 -0
  111. stewbeet-2.2.31/stewbeet/core/utils/sounds.py +86 -0
  112. stewbeet-2.2.31/stewbeet/dependencies/__init__.py +9 -0
  113. stewbeet-2.2.31/stewbeet/dependencies/bookshelf.py +35 -0
  114. stewbeet-2.2.31/stewbeet/dependencies/bookshelf_config.json +3 -0
  115. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Bitwise.zip +0 -0
  116. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Block.zip +0 -0
  117. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Color.zip +0 -0
  118. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Dump.zip +0 -0
  119. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Environment.zip +0 -0
  120. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Generation.zip +0 -0
  121. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Health.zip +0 -0
  122. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Hitbox.zip +0 -0
  123. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Id.zip +0 -0
  124. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Interaction.zip +0 -0
  125. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Link.zip +0 -0
  126. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Log.zip +0 -0
  127. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Math.zip +0 -0
  128. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Move.zip +0 -0
  129. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Position.zip +0 -0
  130. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Random.zip +0 -0
  131. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Raycast.zip +0 -0
  132. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Schedule.zip +0 -0
  133. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Sidebar.zip +0 -0
  134. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Spline.zip +0 -0
  135. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf String.zip +0 -0
  136. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Time.zip +0 -0
  137. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Tree.zip +0 -0
  138. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Vector.zip +0 -0
  139. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf View.zip +0 -0
  140. stewbeet-2.2.31/stewbeet/dependencies/datapack/Bookshelf Xp.zip +0 -0
  141. stewbeet-2.2.31/stewbeet/dependencies/datapack/Common Signals.zip +0 -0
  142. stewbeet-2.2.31/stewbeet/dependencies/datapack/Furnace NBT Recipes.zip +0 -0
  143. stewbeet-2.2.31/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
  144. stewbeet-2.2.31/stewbeet/dependencies/datapack/SmartOreGeneration.zip +0 -0
  145. stewbeet-2.2.31/stewbeet/dependencies/datapack/Smithed Crafter.zip +0 -0
  146. stewbeet-2.2.31/stewbeet/dependencies/datapack/Smithed Custom Block.zip +0 -0
  147. stewbeet-2.2.31/stewbeet/dependencies/resource_pack/Smithed Crafter.zip +0 -0
  148. stewbeet-2.2.31/stewbeet/plugins/archive/__init__.py +113 -0
  149. stewbeet-2.2.31/stewbeet/plugins/auto/headers/__init__.py +48 -0
  150. stewbeet-2.2.31/stewbeet/plugins/auto/headers/context_analyzer.py +104 -0
  151. stewbeet-2.2.31/stewbeet/plugins/auto/headers/execution_parser.py +214 -0
  152. stewbeet-2.2.31/stewbeet/plugins/auto/headers/function_analyzer.py +108 -0
  153. stewbeet-2.2.31/stewbeet/plugins/auto/headers/macro_analyzer.py +130 -0
  154. stewbeet-2.2.31/stewbeet/plugins/auto/headers/macro_parser.py +109 -0
  155. stewbeet-2.2.31/stewbeet/plugins/auto/headers/object.py +351 -0
  156. stewbeet-2.2.31/stewbeet/plugins/auto/headers/type_inference.py +310 -0
  157. stewbeet-2.2.31/stewbeet/plugins/auto/lang_file/__init__.py +37 -0
  158. stewbeet-2.2.31/stewbeet/plugins/auto/lang_file/utils.py +101 -0
  159. stewbeet-2.2.31/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +31 -0
  160. stewbeet-2.2.31/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +157 -0
  161. stewbeet-2.2.31/stewbeet/plugins/compute_sha1/__init__.py +39 -0
  162. stewbeet-2.2.31/stewbeet/plugins/copy_to_destination/__init__.py +179 -0
  163. stewbeet-2.2.31/stewbeet/plugins/custom_paintings/__init__.py +88 -0
  164. stewbeet-2.2.31/stewbeet/plugins/custom_recipes/__init__.py +35 -0
  165. stewbeet-2.2.31/stewbeet/plugins/custom_recipes/awakened_forge.py +174 -0
  166. stewbeet-2.2.31/stewbeet/plugins/custom_recipes/furnace.py +171 -0
  167. stewbeet-2.2.31/stewbeet/plugins/custom_recipes/pulverizer.py +68 -0
  168. stewbeet-2.2.31/stewbeet/plugins/custom_recipes/smithed.py +190 -0
  169. stewbeet-2.2.31/stewbeet/plugins/custom_recipes/vanilla.py +339 -0
  170. stewbeet-2.2.31/stewbeet/plugins/datapack/custom_blocks/__init__.py +827 -0
  171. stewbeet-2.2.31/stewbeet/plugins/datapack/loading/__init__.py +105 -0
  172. stewbeet-2.2.31/stewbeet/plugins/datapack/loot_tables/__init__.py +163 -0
  173. stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/__init__.py +30 -0
  174. stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/constants.py +63 -0
  175. stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/extend_datapack.py +19 -0
  176. stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/match.py +37 -0
  177. stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/mod.mcdoc +30 -0
  178. stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/quick_sort.py +103 -0
  179. stewbeet-2.2.31/stewbeet/plugins/datapack/sorters/selection_sort.py +125 -0
  180. stewbeet-2.2.31/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +93 -0
  181. stewbeet-2.2.31/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +61 -0
  182. stewbeet-2.2.31/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +67 -0
  183. stewbeet-2.2.31/stewbeet/plugins/finalyze/dependencies/__init__.py +247 -0
  184. stewbeet-2.2.31/stewbeet/plugins/finalyze/last_final/__init__.py +32 -0
  185. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/__init__.py +54 -0
  186. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/awakened_forge_1.png +0 -0
  187. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/awakened_forge_2.png +0 -0
  188. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x3.png +0 -0
  189. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x4.png +0 -0
  190. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/book.png +0 -0
  191. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
  192. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
  193. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
  194. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
  195. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
  196. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/mining.png +0 -0
  197. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
  198. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
  199. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
  200. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
  201. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
  202. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
  203. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/stonecutting.png +0 -0
  204. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
  205. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
  206. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
  207. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_mining_template.png +0 -0
  208. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
  209. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/book_components.py +134 -0
  210. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/book_optimizer.py +126 -0
  211. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/craft_content.py +441 -0
  212. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/dialog.py +160 -0
  213. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/image_utils.py +149 -0
  214. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/iso_renders.py +134 -0
  215. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/main.py +971 -0
  216. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/other_utils.py +156 -0
  217. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/page_font.py +228 -0
  218. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/shared_import.py +91 -0
  219. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/showcase_image.py +131 -0
  220. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/stardust_forge.py +32 -0
  221. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/.gitignore +1 -0
  222. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/1book.png +0 -0
  223. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/_README.md +5 -0
  224. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/awakened_forge_1.png +0 -0
  225. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/awakened_forge_2.png +0 -0
  226. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x3.png +0 -0
  227. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x4.png +0 -0
  228. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/book.png +0 -0
  229. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/donut_holer.png +0 -0
  230. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
  231. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
  232. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
  233. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
  234. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
  235. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/mining.png +0 -0
  236. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
  237. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
  238. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
  239. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
  240. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
  241. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
  242. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/stonecutting.png +0 -0
  243. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
  244. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
  245. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
  246. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_mining_template.png +0 -0
  247. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
  248. stewbeet-2.2.31/stewbeet/plugins/ingame_manual/text_components.py +47 -0
  249. stewbeet-2.2.31/stewbeet/plugins/initialize/__init__.py +178 -0
  250. stewbeet-2.2.31/stewbeet/plugins/initialize/source_lore_font.py +74 -0
  251. stewbeet-2.2.31/stewbeet/plugins/merge_smithed_weld/__init__.py +44 -0
  252. stewbeet-2.2.31/stewbeet/plugins/merge_smithed_weld/weld.py +169 -0
  253. stewbeet-2.2.31/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +39 -0
  254. stewbeet-2.2.31/stewbeet/plugins/resource_pack/item_models/__init__.py +129 -0
  255. stewbeet-2.2.31/stewbeet/plugins/resource_pack/item_models/object.py +464 -0
  256. stewbeet-2.2.31/stewbeet/plugins/resource_pack/sounds/__init__.py +95 -0
  257. stewbeet-2.2.31/stewbeet/plugins/verify_definitions/__init__.py +344 -0
  258. stewbeet-2.2.31/stewbeet/py.typed +1 -0
  259. stewbeet-2.2.31/stewbeet/utils.py +31 -0
@@ -0,0 +1,11 @@
1
+
2
+ env
3
+ venv
4
+ .env
5
+ .venv
6
+ __pycache__
7
+ extensive_template/continuous_delivery/
8
+ upload.py
9
+ perf.html
10
+ .beet_cache
11
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Alexandre Collignon
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.4
2
+ Name: stewbeet
3
+ Version: 2.2.31
4
+ Summary: Beet Framework made to help generating advanced Minecraft datapack contents
5
+ Project-URL: Homepage, https://github.com/Stoupy51/stewbeet
6
+ Project-URL: Issues, https://github.com/Stoupy51/stewbeet/issues
7
+ Author-email: Stoupy51 <stoupy51@gmail.com>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Requires-Python: >=3.12
14
+ Requires-Dist: beet>=0.112.0
15
+ Requires-Dist: bolt>=0.49.2
16
+ Requires-Dist: mecha>=0.99.0
17
+ Requires-Dist: model-resolver>=1.12.0
18
+ Requires-Dist: mutagen>=1.47.0
19
+ Requires-Dist: pydantic<2.12.0
20
+ Requires-Dist: pyperclip>=1.8.0
21
+ Requires-Dist: smithed>=0.19.0
22
+ Requires-Dist: stouputils>=1.5.0
23
+ Description-Content-Type: text/markdown
24
+
25
+
26
+ [![YouTube](https://img.shields.io/youtube/views/zkcQn23DRaw?style=flat&logo=youtube&logoColor=red&label=YouTube)](https://www.youtube.com/watch?v=zkcQn23DRaw)
27
+ [![GitHub](https://img.shields.io/github/v/release/Stoupy51/stewbeet?logo=github&label=GitHub)](https://github.com/Stoupy51/stewbeet/releases/latest)
28
+ [![PMC](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fwww.planetminecraft.com%2Fdata-pack%2Fpython-datapack%2Fstatsv2&query=%24.downloads&logo=data%3Aimage%2Fvnd.microsoft.icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJdNAUBLJgD%2FSyYA%2FxkoD%2F8vKAn%2Fl00BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FwAAAP8AAAD%2FmVgI%2F0tcHf8CXjP%2FL10l%2FwAAAP8AAAD%2FAAAA%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F5VOAf%2BVTQH%2FfVkP%2FyZ%2BOv8BgET%2FAYBE%2FwGARP9LZyP%2FlU0B%2F5ZNAf8AAAD%2FAAAAAAAAAAAAAAAAAAAAAJVOAf%2FYeRL%2F64wl%2F7eZOP8Bo1f%2FAaNW%2FwGjVv88nkv%2F2oEb%2F9N0Df%2FTdA3%2FlU0B%2F5dNAUAAAAAAAAAAAAAAAACkVQH%2F3pAq%2F6CcOv92pUf%2FLLli%2F12zW%2F%2FBqEv%2Fy59B%2F%2B2OJ%2F%2Figxz%2F03QN%2F5VNAf%2BEUARAAAAAAAAAAAAAAAD%2FjoMq%2Fzi2XP96r1T%2F3ahG%2F%2BCvUP%2F9qkr%2F%2F6hL%2F%2F2kRP%2F2mTT%2F7Y4n%2F%2BCBGv93aRf%2FAAAA%2FwAAAAAAAAAAp1gB%2FxHEb%2F%2BlslX%2F36xL%2F9StTP%2F%2Fp0f%2F%2F6VE%2F%2F%2BqTv%2F%2Fqk7%2F%2FaVH%2F%2FecOf%2Ftjif%2FMIQ3%2FwNhMP8AAAAAAAAAAI9bA%2F8SxXD%2FHr5o%2Fzm8ZP%2Fvo0D%2F%2F6I9%2F%2F%2BiPf%2F%2Fq1D%2F%2F6tQ%2F%2F%2BrUP%2F7pEb%2F7Y4n%2FwGCQf8BYDD%2FAAAAAAAAAAB8Wgz%2FFMdy%2FxDDbv8Qw27%2Fh7Zd%2F%2F%2BnSP%2F%2Foj3%2F%2F6xS%2F%2F%2BsUv%2F%2Fp0j%2F%2B504%2F%2B2OJ%2F%2BUfyH%2FAWIw%2FwAAAAAAAAAAelsL%2Fwa2Y%2F8TxnH%2FieK4%2F9fu2P%2F%2F2rH%2F%2F6pN%2F%2F%2BlQv%2F%2FpUL%2F%2F6NA%2F%2F2fOv%2F1li%2F%2FlH8h%2FwJhMP8AAAAAqVcBQIFaCkABczz%2FFMdy%2F7Hs0P%2F%2F%2F%2F%2F%2F6O7W%2F9SyV%2F%2F%2Foj3%2F%2F6RC%2F%2FidOv%2Fxkyz%2FxJEw%2F01fGf8hWR1wAVQqQAAAAAAAAAAAAV4y%2Fw2%2Fa%2F%2Bs16b%2F1OfK%2F7%2Fdr%2F%2F%2BrFH%2F%2F6RB%2F%2F%2BmRv%2F2mzn%2F2Y4p%2F2qOOP8BVCr%2FJDorQAAAAAAAAAAAAAAAAAFeMv8BsF7%2FLbpl%2F0DAaP%2Bmtlz%2Fo7Vc%2F%2F%2BoS%2F%2F%2FqEv%2F9ps6%2FyeOQf8BjUb%2FAlQq%2FwFUKkAAAAAAAAAAAAAAAAAAAAAAAl0z%2FxheKf8PdTL%2FeqxN%2FyvDaf%2F8rVL%2Fz6dF%2F7R6H%2F8BXS7%2FAlQq%2FwdRKwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGUCICeF4GQGNfDP9sXwj%2FqFgB%2F4hbB%2F9DWiKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpXAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FB8AAOAHAADAAwAAwAMAAMADAACAAQAAgAEAAIABAACAAQAAgAEAAMADAADAAwAAwAMAAOAHAAD8H%2F%2F%2F%2F%2F%2F%2F%2Fw%3D%3D&label=PMC&color=6ec310)](https://www.planetminecraft.com/data-pack/python-datapack/)
29
+ [![Discord](https://img.shields.io/discord/1216400498488377467?label=Discord&logo=discord)](https://discord.gg/anxzu6rA9F)
30
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/stewbeet?logo=python&label=PyPI%20downloads)](https://pypi.org/project/stewbeet/)
31
+
32
+
33
+ ## ❓ What is `StewBeet`
34
+ `StewBeet` is a [Beet](https://github.com/mcbeet/beet) framework and library 📦 aiming to provide huge automation for creating Minecraft datapacks.<br>
35
+ It is designed to be very simple to use and very convenient for developers.
36
+
37
+ `Example of the in-game manual generated by StewBeet:`<br>
38
+ ![In-game Manual Example](https://i.imgur.com/dtuAG99.gif)
39
+
40
+
41
+ Here is a list of features that the package provides (the template is using all of them with clear comments):
42
+
43
+ - 🔄 Automatic resource pack files generation (models, textures, sounds, music discs) with the ability to override them with help of the `assets` folder.
44
+ - ⏳ Versioned load, and clock functions such as `tick`, `second`, `minute`.
45
+ - 🗃️ Loot tables for every item in the `definitions` along with a proper `_give_all` function that gives named chests.
46
+ - 📖 Automatic generation of a really [advanced and interactive items `manual`](./assets/in_game_manual_example.png).
47
+ - 📝 Automatic generation of a `en-us.json` lang file in the resource pack if configuration is set.
48
+ - 🖼️ Automatic headers for every function in `function` folders.
49
+ - 📦 Minecraft like vanilla recipes unlocking.
50
+ - 📚 Official libraries integrations:
51
+ - 🧪 Automatic support for NBT Recipes with [`Smithed Crafter`](https://wiki.smithed.dev/libraries/crafter/) and [`Furnace NBT Recipes`](https://github.com/Stoupy51/FurnaceNbtRecipes/)
52
+ - 🛠️ Placement and destruction for every custom block in the `definitions` with support for blockstates, ore drops (fortune, silk touch), with [`Smithed Custom Blocks`](https://wiki.smithed.dev/libraries/custom-block/).
53
+ - 📚 Each module from [`Bookshelf`](https://github.com/mcbookshelf/bookshelf) is automatically added if you are using it, ex: `function #bs.math:...` will add the `bs.math` module to the datapack.
54
+ - ⛏️ Custom ore generation with [`Smart Ore Generation`](https://github.com/Stoupy51/SmartOreGeneration).
55
+ - 📦 Item transportation / container declaration with [`ItemIO`](https://github.com/edayot/ItemIO) when making custom containers.
56
+ - 🔔 Events such as new items detection with [`Common Signals`](https://github.com/Stoupy51/CommonSignals).
57
+ - 🌐 External datapack libraries support, see configuration for more information.
58
+ - 🔗 Merging datapacks and resource packs with libraries using [Smithed Weld](https://weld.smithed.dev/).
59
+ - 🧩 Automatic recognition of custom blocks patterns depending on the texture names in the `assets/textures` folder. For instance, if you have a top, side, and bottom texture, the block will be automatically recognized as a cube with the top, side, and bottom textures.
60
+ - 📏 Follow the datapack conventions such as [LanternLoad](https://github.com/LanternMC/load), [CustomModelData prefix](https://mcdatapack.vercel.app/), [tag specification](https://wiki.smithed.dev/conventions/tag-specification/), and [namespacing](https://wiki.smithed.dev/conventions/namespacing/).
61
+ - 🧰 Ability to merge a model with the autogenerated one or override it.
62
+ - 🔀 `merge` folder providing a way to merge custom files with the autogenerated ones or add custom files to the datapack.
63
+ - ⚙️ Automatic special compatibilities with datapacks such as [`SimpleDrawer's compacted drawer`](https://edayot.github.io/SimpleDrawer/material.html), [`SimplEnergy's pulverizer`](./build/datapack/data/your_namespace/function/calls/simplenergy/pulverizer_recipes.mcfunction).
64
+ - 📂 Automatic copy of generated zip files to configured folders.
65
+
66
+
67
+ ## 📦 How to use (beginner friendly)
68
+ In order to use `StewBeet`, you need to have at least [Python 3.12](https://www.python.org/downloads/) 🐍 or higher installed on your computer with pip!<br>
69
+ Then, you can open a terminal 💻 and run the following command to install the python package:
70
+
71
+ ```bash
72
+ # This will install the latest version of the framework
73
+ # (including beet, bolt, mecha, and other dependencies)
74
+ pip install stewbeet
75
+ ```
76
+
77
+ Next, there are a few templates available in the [`./templates`](./templates/) folder 📁,<br>
78
+ There are 3 templates available, feel free to choose the one you prefer (but I highly recommend the basic template):
79
+ - 🔹 [`minimal template`](./templates/minimal_template.zip): A very minimal template using only one `stewbeet` plugin.
80
+ - ⭐ [`basic template`](./templates/basic_template.zip): A template with complete configuration but no coded features.
81
+ - 🌟 [`extensive template`](./templates/extensive_template.zip): A template with all the features of the framework, including all the plugins.
82
+
83
+ The clickable links are zip files 📦, but you can check the content of the templates in the [`./templates`](./templates/) folder.<br>
84
+
85
+ Once you have a template, you can modify the `beet.yml` configuration file ⚙️ to suit your needs.<br>
86
+ Finally, you can run the following command to build the project 🔨:
87
+
88
+ ```bash
89
+ # You can also run 'beet' instead of 'stewbeet' but with less functionality
90
+ # (Make sure you are in the project folder)
91
+ stewbeet
92
+ ```
93
+ The command will generate a datapack and a resource pack in your `build` folder 🏗️.<br>
94
+ And that's it! 🎉 That is this easy use the package.<br>
95
+ Since this template is using all the features of the package, you can remove the parts you don't need! 🧹
96
+
97
+ ## 🌱 How to use (Beet users)
98
+ If you are already familiar with the [Beet](https://github.com/mcbeet/beet) development kit, `StewBeet` is developped as a bunch of plugins for it.<br>
99
+ Install `StewBeet` with `pip install stewbeet` and check the [StewBeet plugins documentation](./docs/plugins/README.md) to learn about them.
100
+
101
+
102
+ ## 📚 Documentation
103
+ There are a lot of features in the package, you could check the [extensive template](./templates/extensive/) to see how to use them.<br>
104
+ Alternatively, you could join the [Discord server](https://discord.gg/anxzu6rA9F) to ask questions and get help from the community!<br>
105
+ Or, you could check the **highly detailed** [documentation folder](docs/)<br>
106
+ Here a list of all the currently available guides:
107
+ - 📖 [Getting started](docs/0_getting_started/README.md)
108
+ - 🌱 [Beet Plugins](docs/plugins/README.md)
109
+ - 📁 [Project structure](docs/1_project_structure.md)
110
+ - 🗄️ [Database setup](docs/2_definitions_setup.md)
111
+ - ✍️ [Writing to files](docs/3_writing_to_files.md)
112
+ - 🔗 [External dependencies](docs/4_external_dependencies.md)
113
+ - 🔧 [Miscellaneous](docs/5_miscellaneous.md)
114
+ - 🔄 [Migration guide](docs/6_migration_guide.md)
115
+ - 🚀 [Continuous delivery](docs/7_continuous_delivery.md)
116
+ - ⚔️ [Adding a sword](docs/specific_guides/adding_a_sword.md)
117
+ - More soon!
118
+
119
+
120
+ ## 🤝 Contribute
121
+ Want to help improve StewBeet? 🔍<br>
122
+ Here's how you can contribute:
123
+ - 🐛 **Report Bugs**: Found a bug? Open an issue on GitHub describing what happened and how to reproduce it.
124
+ - ✨ **Suggest Features**: Have an idea for a new feature? Share it in the issues section!
125
+ - 🔧 **Submit Pull Requests**: Feel free to fix bugs or add new features by submitting pull requests.
126
+ - 📚 **Improve Documentation**: Help make our docs better by fixing errors or adding examples.
127
+ - 💬 **Help Others**: Join our [Discord server](https://discord.gg/anxzu6rA9F) and help other users with their questions.
128
+
129
+ Every contribution matters, no matter how small! 🙌
130
+
131
+
132
+ ## 📜 What projects use StewBeet?
133
+ To search for projects that use the framework, I search like [this.](https://github.com/search?q=%22%5C%22stewbeet.plugins.%22&type=code)<br>
134
+ Here is a list of projects that use it:<br>
135
+ - Actual projects:
136
+ - Your next project here!
137
+ - https://github.com/e-psi-lon/Armored-Elytra (Python Datapack: before Stewbeet was a thing)
138
+ - https://github.com/Stoupy51/SimplEnergy
139
+ - https://github.com/Stoupy51/ImagineYourCraftDatapack
140
+ - https://github.com/Stoupy51/LifeSteal
141
+ - https://github.com/Stoupy51/Survisland
142
+ - https://github.com/Stoupy51/SmithedSummit
143
+ - https://github.com/Stoupy51/SheepWars
144
+ - https://github.com/Stoupy51/MoreApples
145
+ - https://github.com/Stoupy51/CauldronConcretePowder
146
+
147
+ - Libraries or tools:
148
+ - https://github.com/Stoupy51/SmartOreGeneration
149
+ - https://github.com/Stoupy51/CommonSignals
150
+
151
+
152
+ ## ⭐ Star History
153
+
154
+ <html>
155
+ <a href="https://star-history.com/#Stoupy51/StewBeet&Date">
156
+ <picture>
157
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date&theme=dark" />
158
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date" />
159
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date" />
160
+ </picture>
161
+ </a>
162
+ </html>
163
+
@@ -0,0 +1,139 @@
1
+
2
+ [![YouTube](https://img.shields.io/youtube/views/zkcQn23DRaw?style=flat&logo=youtube&logoColor=red&label=YouTube)](https://www.youtube.com/watch?v=zkcQn23DRaw)
3
+ [![GitHub](https://img.shields.io/github/v/release/Stoupy51/stewbeet?logo=github&label=GitHub)](https://github.com/Stoupy51/stewbeet/releases/latest)
4
+ [![PMC](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fwww.planetminecraft.com%2Fdata-pack%2Fpython-datapack%2Fstatsv2&query=%24.downloads&logo=data%3Aimage%2Fvnd.microsoft.icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJdNAUBLJgD%2FSyYA%2FxkoD%2F8vKAn%2Fl00BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FwAAAP8AAAD%2FmVgI%2F0tcHf8CXjP%2FL10l%2FwAAAP8AAAD%2FAAAA%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F5VOAf%2BVTQH%2FfVkP%2FyZ%2BOv8BgET%2FAYBE%2FwGARP9LZyP%2FlU0B%2F5ZNAf8AAAD%2FAAAAAAAAAAAAAAAAAAAAAJVOAf%2FYeRL%2F64wl%2F7eZOP8Bo1f%2FAaNW%2FwGjVv88nkv%2F2oEb%2F9N0Df%2FTdA3%2FlU0B%2F5dNAUAAAAAAAAAAAAAAAACkVQH%2F3pAq%2F6CcOv92pUf%2FLLli%2F12zW%2F%2FBqEv%2Fy59B%2F%2B2OJ%2F%2Figxz%2F03QN%2F5VNAf%2BEUARAAAAAAAAAAAAAAAD%2FjoMq%2Fzi2XP96r1T%2F3ahG%2F%2BCvUP%2F9qkr%2F%2F6hL%2F%2F2kRP%2F2mTT%2F7Y4n%2F%2BCBGv93aRf%2FAAAA%2FwAAAAAAAAAAp1gB%2FxHEb%2F%2BlslX%2F36xL%2F9StTP%2F%2Fp0f%2F%2F6VE%2F%2F%2BqTv%2F%2Fqk7%2F%2FaVH%2F%2FecOf%2Ftjif%2FMIQ3%2FwNhMP8AAAAAAAAAAI9bA%2F8SxXD%2FHr5o%2Fzm8ZP%2Fvo0D%2F%2F6I9%2F%2F%2BiPf%2F%2Fq1D%2F%2F6tQ%2F%2F%2BrUP%2F7pEb%2F7Y4n%2FwGCQf8BYDD%2FAAAAAAAAAAB8Wgz%2FFMdy%2FxDDbv8Qw27%2Fh7Zd%2F%2F%2BnSP%2F%2Foj3%2F%2F6xS%2F%2F%2BsUv%2F%2Fp0j%2F%2B504%2F%2B2OJ%2F%2BUfyH%2FAWIw%2FwAAAAAAAAAAelsL%2Fwa2Y%2F8TxnH%2FieK4%2F9fu2P%2F%2F2rH%2F%2F6pN%2F%2F%2BlQv%2F%2FpUL%2F%2F6NA%2F%2F2fOv%2F1li%2F%2FlH8h%2FwJhMP8AAAAAqVcBQIFaCkABczz%2FFMdy%2F7Hs0P%2F%2F%2F%2F%2F%2F6O7W%2F9SyV%2F%2F%2Foj3%2F%2F6RC%2F%2FidOv%2Fxkyz%2FxJEw%2F01fGf8hWR1wAVQqQAAAAAAAAAAAAV4y%2Fw2%2Fa%2F%2Bs16b%2F1OfK%2F7%2Fdr%2F%2F%2BrFH%2F%2F6RB%2F%2F%2BmRv%2F2mzn%2F2Y4p%2F2qOOP8BVCr%2FJDorQAAAAAAAAAAAAAAAAAFeMv8BsF7%2FLbpl%2F0DAaP%2Bmtlz%2Fo7Vc%2F%2F%2BoS%2F%2F%2FqEv%2F9ps6%2FyeOQf8BjUb%2FAlQq%2FwFUKkAAAAAAAAAAAAAAAAAAAAAAAl0z%2FxheKf8PdTL%2FeqxN%2FyvDaf%2F8rVL%2Fz6dF%2F7R6H%2F8BXS7%2FAlQq%2FwdRKwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGUCICeF4GQGNfDP9sXwj%2FqFgB%2F4hbB%2F9DWiKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpXAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FB8AAOAHAADAAwAAwAMAAMADAACAAQAAgAEAAIABAACAAQAAgAEAAMADAADAAwAAwAMAAOAHAAD8H%2F%2F%2F%2F%2F%2F%2F%2Fw%3D%3D&label=PMC&color=6ec310)](https://www.planetminecraft.com/data-pack/python-datapack/)
5
+ [![Discord](https://img.shields.io/discord/1216400498488377467?label=Discord&logo=discord)](https://discord.gg/anxzu6rA9F)
6
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/stewbeet?logo=python&label=PyPI%20downloads)](https://pypi.org/project/stewbeet/)
7
+
8
+
9
+ ## ❓ What is `StewBeet`
10
+ `StewBeet` is a [Beet](https://github.com/mcbeet/beet) framework and library 📦 aiming to provide huge automation for creating Minecraft datapacks.<br>
11
+ It is designed to be very simple to use and very convenient for developers.
12
+
13
+ `Example of the in-game manual generated by StewBeet:`<br>
14
+ ![In-game Manual Example](https://i.imgur.com/dtuAG99.gif)
15
+
16
+
17
+ Here is a list of features that the package provides (the template is using all of them with clear comments):
18
+
19
+ - 🔄 Automatic resource pack files generation (models, textures, sounds, music discs) with the ability to override them with help of the `assets` folder.
20
+ - ⏳ Versioned load, and clock functions such as `tick`, `second`, `minute`.
21
+ - 🗃️ Loot tables for every item in the `definitions` along with a proper `_give_all` function that gives named chests.
22
+ - 📖 Automatic generation of a really [advanced and interactive items `manual`](./assets/in_game_manual_example.png).
23
+ - 📝 Automatic generation of a `en-us.json` lang file in the resource pack if configuration is set.
24
+ - 🖼️ Automatic headers for every function in `function` folders.
25
+ - 📦 Minecraft like vanilla recipes unlocking.
26
+ - 📚 Official libraries integrations:
27
+ - 🧪 Automatic support for NBT Recipes with [`Smithed Crafter`](https://wiki.smithed.dev/libraries/crafter/) and [`Furnace NBT Recipes`](https://github.com/Stoupy51/FurnaceNbtRecipes/)
28
+ - 🛠️ Placement and destruction for every custom block in the `definitions` with support for blockstates, ore drops (fortune, silk touch), with [`Smithed Custom Blocks`](https://wiki.smithed.dev/libraries/custom-block/).
29
+ - 📚 Each module from [`Bookshelf`](https://github.com/mcbookshelf/bookshelf) is automatically added if you are using it, ex: `function #bs.math:...` will add the `bs.math` module to the datapack.
30
+ - ⛏️ Custom ore generation with [`Smart Ore Generation`](https://github.com/Stoupy51/SmartOreGeneration).
31
+ - 📦 Item transportation / container declaration with [`ItemIO`](https://github.com/edayot/ItemIO) when making custom containers.
32
+ - 🔔 Events such as new items detection with [`Common Signals`](https://github.com/Stoupy51/CommonSignals).
33
+ - 🌐 External datapack libraries support, see configuration for more information.
34
+ - 🔗 Merging datapacks and resource packs with libraries using [Smithed Weld](https://weld.smithed.dev/).
35
+ - 🧩 Automatic recognition of custom blocks patterns depending on the texture names in the `assets/textures` folder. For instance, if you have a top, side, and bottom texture, the block will be automatically recognized as a cube with the top, side, and bottom textures.
36
+ - 📏 Follow the datapack conventions such as [LanternLoad](https://github.com/LanternMC/load), [CustomModelData prefix](https://mcdatapack.vercel.app/), [tag specification](https://wiki.smithed.dev/conventions/tag-specification/), and [namespacing](https://wiki.smithed.dev/conventions/namespacing/).
37
+ - 🧰 Ability to merge a model with the autogenerated one or override it.
38
+ - 🔀 `merge` folder providing a way to merge custom files with the autogenerated ones or add custom files to the datapack.
39
+ - ⚙️ Automatic special compatibilities with datapacks such as [`SimpleDrawer's compacted drawer`](https://edayot.github.io/SimpleDrawer/material.html), [`SimplEnergy's pulverizer`](./build/datapack/data/your_namespace/function/calls/simplenergy/pulverizer_recipes.mcfunction).
40
+ - 📂 Automatic copy of generated zip files to configured folders.
41
+
42
+
43
+ ## 📦 How to use (beginner friendly)
44
+ In order to use `StewBeet`, you need to have at least [Python 3.12](https://www.python.org/downloads/) 🐍 or higher installed on your computer with pip!<br>
45
+ Then, you can open a terminal 💻 and run the following command to install the python package:
46
+
47
+ ```bash
48
+ # This will install the latest version of the framework
49
+ # (including beet, bolt, mecha, and other dependencies)
50
+ pip install stewbeet
51
+ ```
52
+
53
+ Next, there are a few templates available in the [`./templates`](./templates/) folder 📁,<br>
54
+ There are 3 templates available, feel free to choose the one you prefer (but I highly recommend the basic template):
55
+ - 🔹 [`minimal template`](./templates/minimal_template.zip): A very minimal template using only one `stewbeet` plugin.
56
+ - ⭐ [`basic template`](./templates/basic_template.zip): A template with complete configuration but no coded features.
57
+ - 🌟 [`extensive template`](./templates/extensive_template.zip): A template with all the features of the framework, including all the plugins.
58
+
59
+ The clickable links are zip files 📦, but you can check the content of the templates in the [`./templates`](./templates/) folder.<br>
60
+
61
+ Once you have a template, you can modify the `beet.yml` configuration file ⚙️ to suit your needs.<br>
62
+ Finally, you can run the following command to build the project 🔨:
63
+
64
+ ```bash
65
+ # You can also run 'beet' instead of 'stewbeet' but with less functionality
66
+ # (Make sure you are in the project folder)
67
+ stewbeet
68
+ ```
69
+ The command will generate a datapack and a resource pack in your `build` folder 🏗️.<br>
70
+ And that's it! 🎉 That is this easy use the package.<br>
71
+ Since this template is using all the features of the package, you can remove the parts you don't need! 🧹
72
+
73
+ ## 🌱 How to use (Beet users)
74
+ If you are already familiar with the [Beet](https://github.com/mcbeet/beet) development kit, `StewBeet` is developped as a bunch of plugins for it.<br>
75
+ Install `StewBeet` with `pip install stewbeet` and check the [StewBeet plugins documentation](./docs/plugins/README.md) to learn about them.
76
+
77
+
78
+ ## 📚 Documentation
79
+ There are a lot of features in the package, you could check the [extensive template](./templates/extensive/) to see how to use them.<br>
80
+ Alternatively, you could join the [Discord server](https://discord.gg/anxzu6rA9F) to ask questions and get help from the community!<br>
81
+ Or, you could check the **highly detailed** [documentation folder](docs/)<br>
82
+ Here a list of all the currently available guides:
83
+ - 📖 [Getting started](docs/0_getting_started/README.md)
84
+ - 🌱 [Beet Plugins](docs/plugins/README.md)
85
+ - 📁 [Project structure](docs/1_project_structure.md)
86
+ - 🗄️ [Database setup](docs/2_definitions_setup.md)
87
+ - ✍️ [Writing to files](docs/3_writing_to_files.md)
88
+ - 🔗 [External dependencies](docs/4_external_dependencies.md)
89
+ - 🔧 [Miscellaneous](docs/5_miscellaneous.md)
90
+ - 🔄 [Migration guide](docs/6_migration_guide.md)
91
+ - 🚀 [Continuous delivery](docs/7_continuous_delivery.md)
92
+ - ⚔️ [Adding a sword](docs/specific_guides/adding_a_sword.md)
93
+ - More soon!
94
+
95
+
96
+ ## 🤝 Contribute
97
+ Want to help improve StewBeet? 🔍<br>
98
+ Here's how you can contribute:
99
+ - 🐛 **Report Bugs**: Found a bug? Open an issue on GitHub describing what happened and how to reproduce it.
100
+ - ✨ **Suggest Features**: Have an idea for a new feature? Share it in the issues section!
101
+ - 🔧 **Submit Pull Requests**: Feel free to fix bugs or add new features by submitting pull requests.
102
+ - 📚 **Improve Documentation**: Help make our docs better by fixing errors or adding examples.
103
+ - 💬 **Help Others**: Join our [Discord server](https://discord.gg/anxzu6rA9F) and help other users with their questions.
104
+
105
+ Every contribution matters, no matter how small! 🙌
106
+
107
+
108
+ ## 📜 What projects use StewBeet?
109
+ To search for projects that use the framework, I search like [this.](https://github.com/search?q=%22%5C%22stewbeet.plugins.%22&type=code)<br>
110
+ Here is a list of projects that use it:<br>
111
+ - Actual projects:
112
+ - Your next project here!
113
+ - https://github.com/e-psi-lon/Armored-Elytra (Python Datapack: before Stewbeet was a thing)
114
+ - https://github.com/Stoupy51/SimplEnergy
115
+ - https://github.com/Stoupy51/ImagineYourCraftDatapack
116
+ - https://github.com/Stoupy51/LifeSteal
117
+ - https://github.com/Stoupy51/Survisland
118
+ - https://github.com/Stoupy51/SmithedSummit
119
+ - https://github.com/Stoupy51/SheepWars
120
+ - https://github.com/Stoupy51/MoreApples
121
+ - https://github.com/Stoupy51/CauldronConcretePowder
122
+
123
+ - Libraries or tools:
124
+ - https://github.com/Stoupy51/SmartOreGeneration
125
+ - https://github.com/Stoupy51/CommonSignals
126
+
127
+
128
+ ## ⭐ Star History
129
+
130
+ <html>
131
+ <a href="https://star-history.com/#Stoupy51/StewBeet&Date">
132
+ <picture>
133
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date&theme=dark" />
134
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date" />
135
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Stoupy51/StewBeet&type=Date" />
136
+ </picture>
137
+ </a>
138
+ </html>
139
+
@@ -0,0 +1,82 @@
1
+
2
+ [build-system]
3
+ requires = ["hatchling"]
4
+ build-backend = "hatchling.build"
5
+
6
+ [project]
7
+ name = "stewbeet"
8
+ version = "2.2.31"
9
+ description = "Beet Framework made to help generating advanced Minecraft datapack contents"
10
+ readme = "README.md"
11
+ license = "MIT"
12
+ requires-python = ">=3.12"
13
+ classifiers = [
14
+ "Programming Language :: Python :: 3",
15
+ "License :: OSI Approved :: MIT License",
16
+ "Operating System :: OS Independent",
17
+ ]
18
+ dependencies = [
19
+ "stouputils>=1.5.0",
20
+ "model_resolver>=1.12.0",
21
+ "beet>=0.112.0",
22
+ "bolt>=0.49.2",
23
+ "mecha>=0.99.0",
24
+ "smithed>=0.19.0",
25
+ "mutagen>=1.47.0",
26
+ "pyperclip>=1.8.0",
27
+ "pydantic<2.12.0",
28
+ ]
29
+ [[project.authors]]
30
+ name = "Stoupy51"
31
+ email = "stoupy51@gmail.com"
32
+
33
+ [project.urls]
34
+ Homepage = "https://github.com/Stoupy51/stewbeet"
35
+ Issues = "https://github.com/Stoupy51/stewbeet/issues"
36
+
37
+ [project.scripts]
38
+ stewbeet = "stewbeet:main"
39
+
40
+ [tool.pyright]
41
+ typeCheckingMode = "strict"
42
+
43
+ [tool.setuptools]
44
+ license-files = ["LICENSE"]
45
+
46
+ [tool.ruff]
47
+ exclude = [
48
+ ".git",
49
+ ".ruff_cache",
50
+ ".venv",
51
+ ".vscode",
52
+ ".cursor",
53
+ "build",
54
+ "dist",
55
+ ]
56
+ line-length = 200
57
+
58
+ [tool.ruff.lint]
59
+ select = [
60
+ "E",
61
+ "W",
62
+ "F",
63
+ "I",
64
+ "N",
65
+ "UP",
66
+ "B",
67
+ "C4",
68
+ "T20",
69
+ "RUF",
70
+ ]
71
+ ignore = [
72
+ "T201",
73
+ "W191",
74
+ "N803",
75
+ "N806",
76
+ "F403",
77
+ "F405",
78
+ ]
79
+
80
+ [tool.hatch.build]
81
+ include = ["stewbeet"]
82
+
@@ -0,0 +1,17 @@
1
+
2
+ # type: ignore
3
+ # ruff: noqa: F401
4
+ # Imports
5
+ from beet import *
6
+
7
+ from .cli import main
8
+ from .core import *
9
+ from .plugins.initialize.source_lore_font import find_pack_png
10
+ from .plugins.resource_pack.item_models.object import AutoModel
11
+ from .plugins.resource_pack.sounds import add_sound
12
+
13
+
14
+ def beet_default(ctx: Context):
15
+ """ Initializes the StewBeet package. """
16
+ ctx.require("stewbeet.plugins.initialize")
17
+
@@ -0,0 +1,7 @@
1
+
2
+ # Imports
3
+ from .cli import main
4
+
5
+ if __name__ == "__main__":
6
+ main()
7
+
@@ -0,0 +1,53 @@
1
+
2
+ # Imports
3
+ from beet import Context
4
+
5
+ # Constants
6
+ GENERATION_PLUGINS = (
7
+ "stewbeet.plugins.verify_definitions",
8
+ "stewbeet.plugins.resource_pack.sounds",
9
+ "stewbeet.plugins.resource_pack.item_models",
10
+ "stewbeet.plugins.resource_pack.check_power_of_2",
11
+ "stewbeet.plugins.custom_recipes",
12
+ "stewbeet.plugins.custom_paintings",
13
+ "stewbeet.plugins.ingame_manual",
14
+ "stewbeet.plugins.datapack.loading",
15
+ "stewbeet.plugins.datapack.custom_blocks",
16
+ "stewbeet.plugins.datapack.loot_tables",
17
+ "stewbeet.plugins.datapack.sorters",
18
+ "stewbeet.plugins.compatibilities.simpledrawer",
19
+ "stewbeet.plugins.compatibilities.neo_enchant"
20
+ )
21
+ FINALYZE_PLUGINS = (
22
+ "stewbeet.plugins.finalyze.custom_blocks_ticking",
23
+ "stewbeet.plugins.finalyze.basic_datapack_structure",
24
+ "stewbeet.plugins.finalyze.dependencies",
25
+ "stewbeet.plugins.finalyze.check_unused_textures",
26
+ "stewbeet.plugins.finalyze.last_final",
27
+ "stewbeet.plugins.auto.lang_file",
28
+ "stewbeet.plugins.auto.headers",
29
+ "stewbeet.plugins.archive",
30
+ "stewbeet.plugins.merge_smithed_weld",
31
+ "stewbeet.plugins.copy_to_destination",
32
+ "stewbeet.plugins.compute_sha1"
33
+ )
34
+
35
+ def beet_default(ctx: Context):
36
+ """ Run all plugins that should run after definitions are loaded.
37
+ This function will yield before finalizing the project (so users can run their own plugins in the middle of the pipeline).
38
+
39
+ Requires:
40
+ - StewBeet to be initialized (e.g. from stewbeet.plugins.initialize).
41
+ - Definitions to be loaded
42
+ """
43
+ # Assertions
44
+ for x in GENERATION_PLUGINS:
45
+ ctx.require(x)
46
+
47
+ # Yield to allow user code to run
48
+ yield
49
+
50
+ # After user code, run the final plugins
51
+ for x in FINALYZE_PLUGINS:
52
+ ctx.require(x)
53
+
@@ -0,0 +1,79 @@
1
+
2
+ # Imports
3
+ import importlib
4
+ import os
5
+ import shutil
6
+ import subprocess
7
+ import sys
8
+
9
+ from beet import ProjectConfig
10
+ from stouputils.decorators import LogLevels, handle_error
11
+ from stouputils.print import GREEN, RED, info, show_version
12
+
13
+ from .utils import get_project_config
14
+
15
+
16
+ @handle_error(message="Error while running 'stewbeet'")
17
+ def main():
18
+ second_arg: str = sys.argv[1].lower() if len(sys.argv) == 2 else ""
19
+ if second_arg == "" and len(sys.argv) == 1:
20
+ sys.argv.append("build")
21
+
22
+ # Print the version of stewbeet, beet, bolt, mecha, and stouputils
23
+ if second_arg in ("--version", "-v", "version"):
24
+ return show_version("stewbeet", primary_color=RED, secondary_color=GREEN)
25
+
26
+ # Try to find and load the beet configuration file
27
+ cfg: ProjectConfig = get_project_config()
28
+
29
+ # Check if the command is "clean" or "rebuild"
30
+ if second_arg in ["clean", "rebuild"]:
31
+ info("Cleaning project and caches...")
32
+
33
+ # Remove the beet cache directory
34
+ subprocess.run([sys.executable, "-m", "beet", "cache", "-c"], check=False, capture_output=True)
35
+ if os.path.exists(".beet_cache"):
36
+ shutil.rmtree(".beet_cache", ignore_errors=True)
37
+
38
+ # Remove the output directory specified in the config
39
+ shutil.rmtree(str(cfg.output), ignore_errors=True)
40
+
41
+ # Remove all __pycache__ folders
42
+ for root, dirs, _ in os.walk("."):
43
+ if "__pycache__" in dirs:
44
+ cache_dir: str = os.path.join(root, "__pycache__")
45
+ shutil.rmtree(cache_dir, ignore_errors=True)
46
+
47
+ # Remove manual cache directory if specified in metadata
48
+ cache_path: str = cfg.meta.get("stewbeet", {}).get("manual", {}).get("cache_path", "")
49
+ if cache_path and os.path.exists(cache_path):
50
+ shutil.rmtree(cache_path, ignore_errors=True)
51
+
52
+ # Remove debug definitions file if it exists
53
+ definitions_debug: str = cfg.meta.get("stewbeet", {}).get("definitions_debug", "")
54
+ if definitions_debug and os.path.exists(definitions_debug):
55
+ os.remove(definitions_debug)
56
+ info("Cleaning done!")
57
+
58
+ # Replace "rebuild" by "build" to continue the process
59
+ if second_arg == "rebuild":
60
+ sys.argv[1] = "build"
61
+
62
+ # Handle all other commands except "clean"
63
+ if second_arg != "clean":
64
+ # Add current directory to Python path
65
+ current_dir: str = os.getcwd()
66
+ if current_dir not in sys.path:
67
+ sys.path.insert(0, current_dir)
68
+
69
+ # Try to import all pipeline
70
+ for plugin in cfg.pipeline:
71
+ handle_error(importlib.import_module, error_log=LogLevels.ERROR_TRACEBACK)(plugin)
72
+
73
+ # Run beet with all remaining arguments
74
+ subprocess.run([sys.executable, "-m", "beet"] + [x for x in sys.argv[1:] if x != "rebuild"], check=False)
75
+
76
+
77
+ if __name__ == "__main__":
78
+ main()
79
+
@@ -0,0 +1,8 @@
1
+
2
+ # Imports
3
+ from .cd_utils import *
4
+ from .github import *
5
+ from .modrinth import *
6
+ from .pmc import *
7
+ from .smithed import *
8
+
@@ -0,0 +1,50 @@
1
+
2
+ # Imports
3
+ import os
4
+
5
+ from stouputils.continuous_delivery.cd_utils import load_credentials # type: ignore # noqa: F401
6
+
7
+ from ..core.constants import LATEST_MC_VERSION
8
+ from ..utils import ProjectConfig, get_project_config
9
+
10
+
11
+ # Function that replace the "~" by the user's home directory
12
+ def replace_tilde(path: str) -> str:
13
+ return path.replace("~", os.path.expanduser("~"))
14
+
15
+ # Supported versions
16
+ def get_supported_versions(version: str | list[str] | None = None) -> list[str]:
17
+ """ Get the supported versions for a given version of Minecraft
18
+
19
+ Args:
20
+ version (str): Version of Minecraft
21
+ Returns:
22
+ list[str]: List of supported versions, ex: ["1.21.3", "1.21.2"]
23
+ """
24
+ # If version is None, get it from the project config, otherwise use the default version
25
+ if version is None:
26
+ try:
27
+ config: ProjectConfig = get_project_config()
28
+ version = config.meta.get("mc_supports") or config.minecraft or LATEST_MC_VERSION
29
+ except AssertionError:
30
+ version = LATEST_MC_VERSION
31
+ if isinstance(version, list):
32
+ return [x for x in version if x != "infinite"]
33
+ version = str(version)
34
+
35
+ # Some versions are considered the same for compatibility purposes
36
+ sames: list[list[str]] = [
37
+ ["1.21", "1.21", "1.21.1"],
38
+ ["1.21.2", "1.21.3"],
39
+ ["1.21.6", "1.21.7", "1.21.8"],
40
+ ["1.21.9", "1.21.10"],
41
+ ]
42
+
43
+ # Find the matching list of versions
44
+ for s in sames:
45
+ if version in s:
46
+ return s
47
+
48
+ # If no match, return the version itself in a list
49
+ return [version]
50
+
@@ -0,0 +1,3 @@
1
+
2
+ from stouputils.continuous_delivery.github import * # type: ignore
3
+