stewbeet 3.2.2__tar.gz → 3.2.4__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 (337) hide show
  1. {stewbeet-3.2.2 → stewbeet-3.2.4}/PKG-INFO +4 -2
  2. {stewbeet-3.2.2 → stewbeet-3.2.4}/pyproject.toml +4 -2
  3. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/all/__init__.py +1 -0
  4. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/constants.py +0 -23
  5. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/constants.pyi +0 -6
  6. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/smart_ore_generation.py +1 -1
  7. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/smart_ore_generation.pyi +1 -1
  8. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/io.py +21 -0
  9. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/__init__.py +2 -1
  10. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/__init__.pyi +1 -0
  11. stewbeet-3.2.4/stewbeet/dependencies/download_manager.py +248 -0
  12. stewbeet-3.2.4/stewbeet/dependencies/download_manager.pyi +43 -0
  13. stewbeet-3.2.4/stewbeet/dependencies/official_libs.py +72 -0
  14. stewbeet-3.2.4/stewbeet/dependencies/official_libs.pyi +5 -0
  15. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/copy_to_destination/__init__.py +69 -34
  16. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/smithed.py +1 -1
  17. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/custom_blocks/__init__.py +1 -2
  18. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/dependencies/__init__.py +11 -1
  19. stewbeet-3.2.4/stewbeet/plugins/finalyze/unload/__init__.py +253 -0
  20. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/main.py +1 -1
  21. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/merge_smithed_weld/weld.py +9 -16
  22. stewbeet-3.2.4/stewbeet/plugins/verify_definitions/silent.py +11 -0
  23. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Bitwise.zip +0 -0
  24. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Block.zip +0 -0
  25. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Color.zip +0 -0
  26. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Dump.zip +0 -0
  27. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Environment.zip +0 -0
  28. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Generation.zip +0 -0
  29. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Health.zip +0 -0
  30. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Hitbox.zip +0 -0
  31. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Id.zip +0 -0
  32. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Interaction.zip +0 -0
  33. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Link.zip +0 -0
  34. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Log.zip +0 -0
  35. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Math.zip +0 -0
  36. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Move.zip +0 -0
  37. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Position.zip +0 -0
  38. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Random.zip +0 -0
  39. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Raycast.zip +0 -0
  40. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Schedule.zip +0 -0
  41. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Sidebar.zip +0 -0
  42. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Spline.zip +0 -0
  43. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf String.zip +0 -0
  44. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Time.zip +0 -0
  45. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Tree.zip +0 -0
  46. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Vector.zip +0 -0
  47. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf View.zip +0 -0
  48. stewbeet-3.2.2/stewbeet/dependencies/datapack/Bookshelf Xp.zip +0 -0
  49. stewbeet-3.2.2/stewbeet/dependencies/datapack/Common Signals.zip +0 -0
  50. stewbeet-3.2.2/stewbeet/dependencies/datapack/Furnace NBT Recipes.zip +0 -0
  51. stewbeet-3.2.2/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
  52. stewbeet-3.2.2/stewbeet/dependencies/datapack/RealisticExplosion.zip +0 -0
  53. stewbeet-3.2.2/stewbeet/dependencies/datapack/SmartOreGeneration.zip +0 -0
  54. stewbeet-3.2.2/stewbeet/dependencies/datapack/Smithed Actionbar.zip +0 -0
  55. stewbeet-3.2.2/stewbeet/dependencies/datapack/Smithed Crafter.zip +0 -0
  56. stewbeet-3.2.2/stewbeet/dependencies/datapack/Smithed Custom Block.zip +0 -0
  57. stewbeet-3.2.2/stewbeet/dependencies/resource_pack/Smithed Crafter.zip +0 -0
  58. {stewbeet-3.2.2 → stewbeet-3.2.4}/LICENSE +0 -0
  59. {stewbeet-3.2.2 → stewbeet-3.2.4}/README.md +0 -0
  60. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/__init__.py +0 -0
  61. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/__init__.pyi +0 -0
  62. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/__main__.py +0 -0
  63. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/all/__init__.pyi +0 -0
  64. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/all/silent.py +0 -0
  65. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/all/silent.pyi +0 -0
  66. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/cli.py +0 -0
  67. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/cli.pyi +0 -0
  68. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/__init__.py +0 -0
  69. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/__init__.pyi +0 -0
  70. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/cd_utils.py +0 -0
  71. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/cd_utils.pyi +0 -0
  72. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/github.py +0 -0
  73. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/github.pyi +0 -0
  74. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/modrinth.py +0 -0
  75. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/modrinth.pyi +0 -0
  76. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/pmc.py +0 -0
  77. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/pmc.pyi +0 -0
  78. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/smithed.py +0 -0
  79. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/continuous_delivery/smithed.pyi +0 -0
  80. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/__init__.py +0 -0
  81. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/balancing.py +0 -0
  82. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/batteries.py +0 -0
  83. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/cables.py +0 -0
  84. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant.json +0 -0
  85. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_d.json +0 -0
  86. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_de.json +0 -0
  87. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dew.json +0 -0
  88. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dn.json +0 -0
  89. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dne.json +0 -0
  90. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnew.json +0 -0
  91. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dns.json +0 -0
  92. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnse.json +0 -0
  93. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsew.json +0 -0
  94. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnsw.json +0 -0
  95. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dnw.json +0 -0
  96. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ds.json +0 -0
  97. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dse.json +0 -0
  98. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsew.json +0 -0
  99. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dsw.json +0 -0
  100. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_dw.json +0 -0
  101. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_e.json +0 -0
  102. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ew.json +0 -0
  103. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_n.json +0 -0
  104. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ne.json +0 -0
  105. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_new.json +0 -0
  106. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ns.json +0 -0
  107. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nse.json +0 -0
  108. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsew.json +0 -0
  109. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nsw.json +0 -0
  110. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_nw.json +0 -0
  111. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_s.json +0 -0
  112. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_se.json +0 -0
  113. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sew.json +0 -0
  114. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_sw.json +0 -0
  115. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_u.json +0 -0
  116. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ud.json +0 -0
  117. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ude.json +0 -0
  118. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udew.json +0 -0
  119. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udn.json +0 -0
  120. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udne.json +0 -0
  121. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnew.json +0 -0
  122. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udns.json +0 -0
  123. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnse.json +0 -0
  124. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsew.json +0 -0
  125. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnsw.json +0 -0
  126. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udnw.json +0 -0
  127. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uds.json +0 -0
  128. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udse.json +0 -0
  129. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsew.json +0 -0
  130. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udsw.json +0 -0
  131. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_udw.json +0 -0
  132. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_ue.json +0 -0
  133. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uew.json +0 -0
  134. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_un.json +0 -0
  135. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_une.json +0 -0
  136. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unew.json +0 -0
  137. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uns.json +0 -0
  138. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unse.json +0 -0
  139. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsew.json +0 -0
  140. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unsw.json +0 -0
  141. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_unw.json +0 -0
  142. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_us.json +0 -0
  143. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_use.json +0 -0
  144. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usew.json +0 -0
  145. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_usw.json +0 -0
  146. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_uw.json +0 -0
  147. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_cable_models/variant_w.json +0 -0
  148. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/energy_lib_calls.py +0 -0
  149. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/gui.py +0 -0
  150. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/item_cable_models/cable.bbmodel +0 -0
  151. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/item_cable_models/cable_base.json +0 -0
  152. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/py.typed +0 -0
  153. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/base_block.json +0 -0
  154. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/base_item.json +0 -0
  155. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_block.json +0 -0
  156. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_connected.json +0 -0
  157. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/extract_item.json +0 -0
  158. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_block.json +0 -0
  159. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_connected.json +0 -0
  160. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/servo_mechanism_models/insert_item.json +0 -0
  161. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/contrib/simplenergy/wrench.py +0 -0
  162. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/__init__.py +0 -0
  163. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/__init__.pyi +0 -0
  164. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/__memory__.py +0 -0
  165. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/__memory__.pyi +0 -0
  166. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/_recipe_list.py +0 -0
  167. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/_utils.py +0 -0
  168. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/block.py +0 -0
  169. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/external_item.py +0 -0
  170. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/ingredients.py +0 -0
  171. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/item.py +0 -0
  172. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/painting.py +0 -0
  173. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/recipe.py +0 -0
  174. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/cls/wiki_button.py +0 -0
  175. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/__init__.py +0 -0
  176. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/__init__.pyi +0 -0
  177. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/completion.py +0 -0
  178. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/completion.pyi +0 -0
  179. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/equipments.py +0 -0
  180. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/equipments.pyi +0 -0
  181. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/materials.py +0 -0
  182. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/materials.pyi +0 -0
  183. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/records.py +0 -0
  184. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/records.pyi +0 -0
  185. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/simplenergy.py +0 -0
  186. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/simplenergy.pyi +0 -0
  187. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/text.py +0 -0
  188. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/definitions_helper/text.pyi +0 -0
  189. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/dump.py +0 -0
  190. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/dump.pyi +0 -0
  191. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/migrate.py +0 -0
  192. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/migrate.pyi +0 -0
  193. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/template.py +0 -0
  194. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/template.pyi +0 -0
  195. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/equation.py +0 -0
  196. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/loot_table.py +0 -0
  197. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/sounds.py +0 -0
  198. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/core/utils/text_component.py +0 -0
  199. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/bookshelf.py +0 -0
  200. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/bookshelf.pyi +0 -0
  201. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/dependencies/bookshelf_config.json +0 -0
  202. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/archive/__init__.py +0 -0
  203. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/archive/silent.py +0 -0
  204. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/__init__.py +0 -0
  205. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/context_analyzer.py +0 -0
  206. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/execution_parser.py +0 -0
  207. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/function_analyzer.py +0 -0
  208. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/macro_analyzer.py +0 -0
  209. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/macro_parser.py +0 -0
  210. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/object.py +0 -0
  211. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/silent.py +0 -0
  212. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/headers/type_inference.py +0 -0
  213. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/lang_file/__init__.py +0 -0
  214. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/lang_file/silent.py +0 -0
  215. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/lang_file/utils.py +0 -0
  216. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/scoreboard_constants/__init__.py +0 -0
  217. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/auto/scoreboard_constants/silent.py +0 -0
  218. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +0 -0
  219. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compatibilities/neo_enchant/silent.py +0 -0
  220. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +0 -0
  221. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compatibilities/simpledrawer/silent.py +0 -0
  222. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compute_sha1/__init__.py +0 -0
  223. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/compute_sha1/silent.py +0 -0
  224. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/copy_to_destination/silent.py +0 -0
  225. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_paintings/__init__.py +0 -0
  226. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_paintings/silent.py +0 -0
  227. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/__init__.py +0 -0
  228. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/awakened_forge.py +0 -0
  229. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/furnace.py +0 -0
  230. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/pulverizer.py +0 -0
  231. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/silent.py +0 -0
  232. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/custom_recipes/vanilla.py +0 -0
  233. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/custom_blocks/silent.py +0 -0
  234. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/loading/__init__.py +0 -0
  235. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/loading/silent.py +0 -0
  236. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/loot_tables/__init__.py +0 -0
  237. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/loot_tables/silent.py +0 -0
  238. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/__init__.py +0 -0
  239. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/constants.py +0 -0
  240. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/extend_datapack.py +0 -0
  241. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/match.py +0 -0
  242. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/mod.mcdoc +0 -0
  243. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/quick_sort.py +0 -0
  244. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/selection_sort.py +0 -0
  245. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/datapack/sorters/silent.py +0 -0
  246. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +0 -0
  247. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/basic_datapack_structure/silent.py +0 -0
  248. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +0 -0
  249. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/check_unused_textures/silent.py +0 -0
  250. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +0 -0
  251. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/custom_blocks_ticking/silent.py +0 -0
  252. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/dependencies/silent.py +0 -0
  253. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/last_final/__init__.py +0 -0
  254. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/finalyze/last_final/silent.py +0 -0
  255. {stewbeet-3.2.2/stewbeet/plugins/ingame_manual → stewbeet-3.2.4/stewbeet/plugins/finalyze/unload}/silent.py +0 -0
  256. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/__init__.py +0 -0
  257. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/awakened_forge_1.png +0 -0
  258. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/awakened_forge_2.png +0 -0
  259. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x3.png +0 -0
  260. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/awakened_forge_3x4.png +0 -0
  261. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/book.png +0 -0
  262. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
  263. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
  264. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
  265. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
  266. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
  267. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/mining.png +0 -0
  268. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
  269. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
  270. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
  271. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
  272. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
  273. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
  274. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/stonecutting.png +0 -0
  275. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
  276. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
  277. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
  278. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_mining_template.png +0 -0
  279. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
  280. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/book_components.py +0 -0
  281. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/book_optimizer.py +0 -0
  282. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/craft_content.py +0 -0
  283. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/dialog.py +0 -0
  284. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/image_utils.py +0 -0
  285. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/iso_renders.py +0 -0
  286. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/other_utils.py +0 -0
  287. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/page_font.py +0 -0
  288. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/shared_import.py +0 -0
  289. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/showcase_image.py +0 -0
  290. {stewbeet-3.2.2/stewbeet/plugins/merge_smithed_weld → stewbeet-3.2.4/stewbeet/plugins/ingame_manual}/silent.py +0 -0
  291. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/stardust_forge.py +0 -0
  292. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/.gitignore +0 -0
  293. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/1book.png +0 -0
  294. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/_README.md +0 -0
  295. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/awakened_forge_1.png +0 -0
  296. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/awakened_forge_2.png +0 -0
  297. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x3.png +0 -0
  298. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/awakened_forge_3x4.png +0 -0
  299. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/book.png +0 -0
  300. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/donut_holer.png +0 -0
  301. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
  302. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
  303. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
  304. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
  305. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
  306. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/mining.png +0 -0
  307. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
  308. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
  309. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
  310. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
  311. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
  312. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
  313. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/stonecutting.png +0 -0
  314. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
  315. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
  316. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
  317. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_mining_template.png +0 -0
  318. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
  319. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/ingame_manual/text_components.py +0 -0
  320. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/initialize/__init__.py +0 -0
  321. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/initialize/silent.py +0 -0
  322. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/initialize/source_lore_font.py +0 -0
  323. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/merge_smithed_weld/__init__.py +0 -0
  324. {stewbeet-3.2.2/stewbeet/plugins/resource_pack/check_power_of_2 → stewbeet-3.2.4/stewbeet/plugins/merge_smithed_weld}/silent.py +0 -0
  325. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +0 -0
  326. {stewbeet-3.2.2/stewbeet/plugins/resource_pack/item_models → stewbeet-3.2.4/stewbeet/plugins/resource_pack/check_power_of_2}/silent.py +0 -0
  327. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/resource_pack/item_models/__init__.py +0 -0
  328. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/resource_pack/item_models/object.py +0 -0
  329. {stewbeet-3.2.2/stewbeet/plugins/resource_pack/sounds → stewbeet-3.2.4/stewbeet/plugins/resource_pack/item_models}/silent.py +0 -0
  330. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/resource_pack/sounds/__init__.py +0 -0
  331. {stewbeet-3.2.2/stewbeet/plugins/verify_definitions → stewbeet-3.2.4/stewbeet/plugins/resource_pack/sounds}/silent.py +0 -0
  332. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/plugins/verify_definitions/__init__.py +0 -0
  333. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/py.typed +0 -0
  334. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/silent.py +0 -0
  335. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/silent.pyi +0 -0
  336. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/utils.py +0 -0
  337. {stewbeet-3.2.2 → stewbeet-3.2.4}/stewbeet/utils.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stewbeet
3
- Version: 3.2.2
3
+ Version: 3.2.4
4
4
  Summary: Beet Framework made to help generating advanced Minecraft datapack contents
5
5
  Author: Stoupy51
6
6
  Author-email: Stoupy51 <stoupy51@gmail.com>
@@ -10,13 +10,15 @@ Classifier: Programming Language :: Python :: 3
10
10
  Classifier: Programming Language :: Python :: 3.14
11
11
  Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Operating System :: OS Independent
13
- Requires-Dist: stouputils>=1.24.9
13
+ Requires-Dist: stouputils>=1.24.11
14
14
  Requires-Dist: model-resolver>=1.15.2
15
15
  Requires-Dist: beet>=0.115.0
16
16
  Requires-Dist: bolt>=0.50.1
17
17
  Requires-Dist: mecha>=0.103.0
18
18
  Requires-Dist: mutagen>=1.47.0
19
19
  Requires-Dist: pyperclip>=1.8.0
20
+ Requires-Dist: fsspec>=2026.3.0
21
+ Requires-Dist: paramiko>=4.0.0
20
22
  Requires-Dist: smithed
21
23
  Requires-Python: >=3.14
22
24
  Project-URL: Homepage, https://github.com/Stoupy51/stewbeet
@@ -8,7 +8,7 @@ module-root = ""
8
8
 
9
9
  [project]
10
10
  name = "stewbeet"
11
- version = "3.2.2"
11
+ version = "3.2.4"
12
12
  description = "Beet Framework made to help generating advanced Minecraft datapack contents"
13
13
  readme = "README.md"
14
14
  license = "MIT"
@@ -24,13 +24,15 @@ authors = [
24
24
  { name = "Stoupy51", email = "stoupy51@gmail.com" },
25
25
  ]
26
26
  dependencies = [
27
- "stouputils>=1.24.9",
27
+ "stouputils>=1.24.11",
28
28
  "model_resolver>=1.15.2",
29
29
  "beet>=0.115.0",
30
30
  "bolt>=0.50.1",
31
31
  "mecha>=0.103.0",
32
32
  "mutagen>=1.47.0",
33
33
  "pyperclip>=1.8.0",
34
+ "fsspec>=2026.3.0",
35
+ "paramiko>=4.0.0",
34
36
  "smithed",
35
37
  ]
36
38
 
@@ -23,6 +23,7 @@ FINALYZE_PLUGINS = (
23
23
  "stewbeet.plugins.finalyze.custom_blocks_ticking",
24
24
  "stewbeet.plugins.finalyze.basic_datapack_structure",
25
25
  "stewbeet.plugins.finalyze.dependencies",
26
+ "stewbeet.plugins.finalyze.unload",
26
27
  "stewbeet.plugins.finalyze.check_unused_textures",
27
28
  "stewbeet.plugins.finalyze.last_final",
28
29
  "stewbeet.plugins.auto.scoreboard_constants",
@@ -3,9 +3,6 @@
3
3
  # Imports
4
4
  from beet.library import base
5
5
  from beet.toolchain.config import FormatSpecifier
6
- from stouputils.typing import JsonDict
7
-
8
- from ..dependencies.bookshelf import BOOKSHELF_MODULES
9
6
 
10
7
  # Minecraft version specific constants
11
8
  MORE_DATA_PACK_FORMATS: dict[tuple[int, ...], FormatSpecifier] = {
@@ -195,23 +192,3 @@ class Conventions:
195
192
  AVOID_BLOCK_TAGS_NO_KILL: str = BLOCK_TAGS_NO_KILL.avoid
196
193
  """ Deprecated (use Conventions.BLOCK_TAGS_NO_KILL.avoid instead): String of tags to avoid when executing a block command. Example of use: execute as @e[{Conventions.AVOID_BLOCK_TAGS_NO_KILL}] run function your_namespace:kill_entity """
197
194
 
198
-
199
-
200
- # Automatically handled dependencies for supported libs with additional key "is_used" that is True when the lib is found to be used.
201
- def official_lib_used(lib: str) -> bool:
202
- is_used: bool = OFFICIAL_LIBS[lib]["is_used"]
203
- OFFICIAL_LIBS[lib]["is_used"] = True
204
- return is_used
205
-
206
- OFFICIAL_LIBS: dict[str, JsonDict] = {
207
- "common_signals": {"version":[0, 2, 0], "name":"Common Signals", "url":"https://github.com/Stoupy51/CommonSignals", "is_used": False},
208
- "smithed.custom_block": {"version":[0, 7, 1], "name":"Smithed Custom Block", "url":"https://wiki.smithed.dev/libraries/custom-block/", "is_used": False},
209
- "smithed.crafter": {"version":[0, 7, 1], "name":"Smithed Crafter", "url":"https://wiki.smithed.dev/libraries/crafter/", "is_used": False},
210
- "smithed.actionbar": {"version":[0, 6, 6], "name":"Smithed Actionbar", "url":"https://wiki.smithed.dev/libraries/actionbar/", "is_used": False},
211
- "furnace_nbt_recipes": {"version":[1, 10, 1], "name":"Furnace NBT Recipes", "url":"https://github.com/Stoupy51/FurnaceNbtRecipes", "is_used": False},
212
- "smart_ore_generation": {"version":[1, 7, 2], "name":"SmartOreGeneration", "url":"https://github.com/Stoupy51/SmartOreGeneration", "is_used": False},
213
- "realistic_explosion": {"version":[1, 2, 0], "name":"RealisticExplosion", "url":"https://github.com/Stoupy51/RealisticExplosionLibrary", "is_used": False},
214
- "itemio": {"version":[1, 4, 1], "name":"ItemIO", "url":"https://github.com/edayot/ItemIO", "is_used": False},
215
- **BOOKSHELF_MODULES,
216
- }
217
-
@@ -1,7 +1,5 @@
1
- from ..dependencies.bookshelf import BOOKSHELF_MODULES as BOOKSHELF_MODULES
2
1
  from _typeshed import Incomplete
3
2
  from beet.toolchain.config import FormatSpecifier as FormatSpecifier
4
- from stouputils.typing import JsonDict as JsonDict
5
3
 
6
4
  MORE_DATA_PACK_FORMATS: dict[tuple[int, ...], FormatSpecifier]
7
5
  MORE_ASSETS_PACK_FORMATS: dict[tuple[int, ...], FormatSpecifier]
@@ -51,7 +49,3 @@ class Conventions:
51
49
  AVOID_BLOCK_TAGS: str
52
50
  AVOID_ENTITY_TAGS_NO_KILL: str
53
51
  AVOID_BLOCK_TAGS_NO_KILL: str
54
-
55
- def official_lib_used(lib: str) -> bool: ...
56
-
57
- OFFICIAL_LIBS: dict[str, JsonDict]
@@ -7,8 +7,8 @@ import stouputils as stp
7
7
  from beet import BlockTag
8
8
  from stouputils.typing import JsonDict
9
9
 
10
+ from ...dependencies import official_lib_used
10
11
  from ..__memory__ import Mem
11
- from ..constants import official_lib_used
12
12
  from ..utils.io import set_json_encoder, write_function
13
13
 
14
14
 
@@ -1,5 +1,5 @@
1
+ from ...dependencies import official_lib_used as official_lib_used
1
2
  from ..__memory__ import Mem as Mem
2
- from ..constants import official_lib_used as official_lib_used
3
3
  from ..utils.io import set_json_encoder as set_json_encoder, write_function as write_function
4
4
  from stouputils.typing import JsonDict as JsonDict
5
5
 
@@ -210,6 +210,27 @@ def write_load_file(
210
210
  return write_versioned_function("load/confirm_load", content, overwrite, prepend, tags, condition)
211
211
 
212
212
 
213
+ def write_unload_file(
214
+ content: str,
215
+ overwrite: bool = False,
216
+ prepend: bool = False,
217
+ tags: list[str] | None = None,
218
+ condition: Callable[[str], bool] | None = lambda existing_content: True, # pyright: ignore[reportUnknownLambdaType]
219
+ ) -> Function | None:
220
+ """ Write the content to the unload file
221
+
222
+ Args:
223
+ content (str): The content to write
224
+ overwrite (bool): If the file should be overwritten (default: Append the content)
225
+ prepend (bool): If the content should be prepended instead of appended (not used if overwrite is True)
226
+ tags (list[str] | None): The function tags to add to the function (ex: ["namespace:something"] for 'data/namespace/tags/function/something.json')
227
+ condition (Callable[[str], bool]): A function that takes the existing content and returns whether the new content should be written (default: always write)
228
+ """
229
+ unload_tag = f"{Mem.ctx.project_id}:unload"
230
+ tags = (tags or []) + [unload_tag]
231
+ return write_versioned_function("unload", content, overwrite, prepend, tags, condition)
232
+
233
+
213
234
  def write_tick_file(
214
235
  content: str,
215
236
  overwrite: bool = False,
@@ -3,7 +3,8 @@
3
3
  import stouputils as stp
4
4
 
5
5
  from .bookshelf import *
6
+ from .official_libs import *
6
7
 
7
- # This folder path
8
+ # This folder path (kept for backward compatibility with on_bookshelf_release.py)
8
9
  OFFICIAL_LIBS_PATH: str = stp.get_root_path(__file__)
9
10
 
@@ -1,3 +1,4 @@
1
1
  from .bookshelf import *
2
+ from .official_libs import *
2
3
 
3
4
  OFFICIAL_LIBS_PATH: str
@@ -0,0 +1,248 @@
1
+ """Dynamic dependency download manager for StewBeet.
2
+
3
+ Downloads official libraries on first use via beet's content-addressed cache
4
+ (``ctx.cache["stewbeet"]``). Three providers are supported:
5
+
6
+ 1. **Smithed API** — ``bs.*`` and ``smithed.*`` libs
7
+ 2. **Modrinth API** — ``itemio`` (and future Modrinth libs)
8
+ 3. **Static URLs** — ``common_signals``, ``furnace_nbt_recipes``, etc.
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import json
14
+ from dataclasses import dataclass
15
+ from pathlib import Path
16
+ from typing import Any
17
+
18
+ import stouputils as stp
19
+ from beet import Context
20
+ from stouputils.typing import JsonDict
21
+
22
+ from ..core.constants import LATEST_MC_VERSION
23
+ from .official_libs import OFFICIAL_LIBS
24
+
25
+ SMITHED_API_BASE: str = "https://api.smithed.dev/v2/packs"
26
+ MODRINTH_API_BASE: str = "https://api.modrinth.com/v2"
27
+ HEADERS: dict[str, str] = {"User-Agent": "StewBeet"}
28
+ BUILD_CACHE: dict[str, list[DownloadedLib]] = {} # cache-dir → results
29
+
30
+
31
+ @dataclass
32
+ class DownloadedLib:
33
+ lib_ns: str
34
+ name: str
35
+ version: tuple[int, ...]
36
+ datapack_path: str | None
37
+ resource_pack_path: str | None
38
+
39
+
40
+ # ---------------------------------------------------------------------------
41
+ # Helpers
42
+ # ---------------------------------------------------------------------------
43
+
44
+ def mc_tuple(ctx: Context) -> tuple[int, ...]:
45
+ return tuple(int(x) for x in (ctx.minecraft_version or LATEST_MC_VERSION).split(".") if x.isdigit())
46
+
47
+
48
+ def mc_str(ctx: Context) -> str:
49
+ return ctx.minecraft_version or LATEST_MC_VERSION
50
+
51
+
52
+ def lookup_static(lib_data: JsonDict, mc_tup: tuple[int, ...]) -> tuple[tuple[int, ...], str] | None:
53
+ """Return ``(dep_ver, url)`` for the highest MC key ``<= mc_tup``, or ``None``."""
54
+ best: tuple[tuple[int, ...], tuple[int, ...], str] | None = None
55
+ for (mc_key, dep_ver), url in lib_data.get("static_urls", {}).items():
56
+ if mc_key <= mc_tup and (best is None or mc_key > best[0]):
57
+ best = (mc_key, dep_ver, url)
58
+ return (best[1], best[2]) if best else None
59
+
60
+
61
+ def cached_json(ctx: Context, url: str) -> Any | None:
62
+ try:
63
+ path: Path = ctx.cache["stewbeet"].download(url, headers=HEADERS)
64
+ return json.loads(path.read_text(encoding="utf-8"))
65
+ except Exception as exc:
66
+ stp.warning(f"Failed to fetch '{url}': {exc}")
67
+ return None
68
+
69
+
70
+ def cached_zip(ctx: Context, url: str) -> Path | None:
71
+ """Download *url* via beet cache, ensuring the file has a ``.zip`` suffix."""
72
+ if not url or url == "can't find":
73
+ return None
74
+ try:
75
+ cache = ctx.cache["stewbeet"]
76
+ path = cache.get_path(url)
77
+ if not path.suffix:
78
+ path = path.with_suffix(".zip")
79
+ return cache.download(url, path, headers=HEADERS)
80
+ except Exception as exc:
81
+ stp.warning(f"Failed to download '{url}': {exc}")
82
+ return None
83
+
84
+
85
+ def version_str(ver: list[int] | tuple[int, ...]) -> str:
86
+ return ".".join(str(x) for x in ver)
87
+
88
+
89
+ def parse_version(s: str) -> tuple[int, ...]:
90
+ return tuple(int(x) for x in s.strip("v").split(".") if x.isdigit())
91
+
92
+
93
+ def mc_compatible(versions: list[JsonDict], mc_tup: tuple[int, ...]) -> list[JsonDict]:
94
+ """Return versions whose supports list includes mc_tup (exact), falling back to max(supports) <= mc_tup."""
95
+ def sup_tuples(v: JsonDict) -> list[tuple[int, ...]]:
96
+ return [parse_version(s) for s in v.get("supports", [])]
97
+ exact = [v for v in versions if mc_tup in sup_tuples(v)]
98
+ if exact:
99
+ return exact
100
+ return [v for v in versions if sup_tuples(v) and max(sup_tuples(v)) <= mc_tup]
101
+
102
+
103
+ # ---------------------------------------------------------------------------
104
+ # Providers
105
+ # ---------------------------------------------------------------------------
106
+
107
+ def resolve_smithed_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_tup: tuple[int, ...]) -> DownloadedLib | None:
108
+ smithed_id = lib_data.get("smithed_id") or ("bookshelf-" + lib_ns[3:])
109
+ target: str | None = version_str(lib_data["version"]) if "version" in lib_data else None
110
+
111
+ data = cached_json(ctx, f"{SMITHED_API_BASE}/{smithed_id}")
112
+ if not data or "versions" not in data:
113
+ stp.warning(f"Smithed API returned no data for '{smithed_id}'. Skipping.")
114
+ return None
115
+
116
+ versions: list[JsonDict] = data["versions"]
117
+ if target:
118
+ # Pinned version: find exact match, fall back to latest compatible
119
+ match = next((v for v in versions if v.get("name") == target), None)
120
+ if match is None:
121
+ compat = mc_compatible(versions, mc_tup)
122
+ match = max(compat or versions, key=lambda v: parse_version(v.get("name", "0.0.0")), default=None)
123
+ if match:
124
+ stp.warning(f"Smithed '{smithed_id}' v{target} not found; using v{match['name']} instead.")
125
+ else:
126
+ # No pinned version: pick latest compatible with user's MC
127
+ compat = mc_compatible(versions, mc_tup)
128
+ match = max(compat or versions, key=lambda v: parse_version(v.get("name", "0.0.0")), default=None)
129
+
130
+ if match is None:
131
+ stp.warning(f"Smithed '{smithed_id}': no versions available. Skipping.")
132
+ return None
133
+
134
+ downloads: JsonDict = match.get("downloads", {})
135
+ dp = cached_zip(ctx, downloads.get("datapack", ""))
136
+ rp = cached_zip(ctx, downloads.get("resourcepack", ""))
137
+ if dp is None:
138
+ stp.warning(f"No datapack download for Smithed '{smithed_id}'. Skipping.")
139
+ return None
140
+
141
+ ver = parse_version(match["name"])
142
+ lib_data["version"] = list(ver)
143
+ return DownloadedLib(lib_ns, lib_data["name"], ver, str(dp), str(rp) if rp else None)
144
+
145
+
146
+ def resolve_modrinth_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_ver: str) -> DownloadedLib | None:
147
+ slug = lib_data["modrinth_slug"]
148
+ base = f"{MODRINTH_API_BASE}/project/{slug}/version"
149
+
150
+ versions = cached_json(ctx, f"{base}?game_versions=[%22{mc_ver}%22]&loaders=[%22datapack%22]")
151
+ if not versions:
152
+ versions = cached_json(ctx, f"{base}?loaders=[%22datapack%22]")
153
+ if not versions:
154
+ stp.warning(f"No Modrinth release for '{slug}' (MC {mc_ver}). Skipping.")
155
+ return None
156
+
157
+ releases = [v for v in versions if v.get("version_type") == "release"]
158
+ vd: JsonDict = (releases or versions)[0]
159
+ ver = parse_version(vd.get("version_number", "0.0.0"))
160
+
161
+ files: list[JsonDict] = vd.get("files", [])
162
+ primary = next((f for f in files if f.get("primary")), files[0] if files else None)
163
+ if not primary:
164
+ stp.warning(f"No download file for Modrinth '{slug}'.")
165
+ return None
166
+
167
+ lib_data["version"] = list(ver)
168
+ dp = cached_zip(ctx, primary["url"])
169
+ if dp is None:
170
+ return None
171
+ non_primary = [f for f in files if not f.get("primary")]
172
+ rp = cached_zip(ctx, non_primary[0]["url"]) if non_primary else None
173
+
174
+ return DownloadedLib(lib_ns, lib_data["name"], ver, str(dp), str(rp) if rp else None)
175
+
176
+
177
+ def resolve_static_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_tup: tuple[int, ...], mc_ver: str) -> DownloadedLib | None:
178
+ entry = lookup_static(lib_data, mc_tup)
179
+ if entry is None:
180
+ stp.warning(f"No static URL for '{lib_ns}' (MC {mc_ver}). Skipping.")
181
+ return None
182
+ dep_ver, url = entry
183
+ if url == "can't find":
184
+ stp.warning(f"Download URL for '{lib_ns}' (MC {mc_ver}) not yet configured. Skipping.")
185
+ return None
186
+
187
+ lib_data["version"] = list(dep_ver)
188
+ dp = cached_zip(ctx, url)
189
+ if dp is None:
190
+ return None
191
+ return DownloadedLib(lib_ns, lib_data["name"], dep_ver, str(dp), None)
192
+
193
+
194
+ # ---------------------------------------------------------------------------
195
+ # Public entry point
196
+ # ---------------------------------------------------------------------------
197
+
198
+ @stp.handle_error
199
+ def get_lib_paths(ctx: Context) -> list[DownloadedLib]:
200
+ """ Download all ``is_used`` official libs and return their cached paths.
201
+
202
+ Results are memoised per build so weld.py and copy_to_destination can
203
+ both call this without redundant work.
204
+ """
205
+ cache_key = str(ctx.cache["stewbeet"].directory)
206
+ if cache_key in BUILD_CACHE:
207
+ return BUILD_CACHE[cache_key]
208
+
209
+ ctx.cache["stewbeet"].timeout(days=30)
210
+ mc_t = mc_tuple(ctx)
211
+ mc_v = mc_str(ctx)
212
+ results: list[DownloadedLib] = []
213
+
214
+ for lib_ns, lib_data in OFFICIAL_LIBS.items():
215
+ if not lib_data.get("is_used", False):
216
+ continue
217
+ source = lib_data.get("source", "")
218
+ if source == "smithed":
219
+ r = resolve_smithed_lib(ctx, lib_ns, lib_data, mc_t)
220
+ elif source == "modrinth":
221
+ r = resolve_modrinth_lib(ctx, lib_ns, lib_data, mc_v)
222
+ elif source == "static":
223
+ r = resolve_static_lib(ctx, lib_ns, lib_data, mc_t, mc_v)
224
+ else:
225
+ continue
226
+ if r:
227
+ results.append(r)
228
+
229
+ # Also process custom load_dependencies entries that specify a source
230
+ load_deps: JsonDict = ctx.meta.get("stewbeet", {}).get("load_dependencies", {})
231
+ for lib_ns, lib_data in load_deps.items():
232
+ source = lib_data.get("source", "")
233
+ if not source:
234
+ continue # old-format entry with explicit version — nothing to download
235
+ if source == "smithed":
236
+ r = resolve_smithed_lib(ctx, lib_ns, lib_data, mc_t)
237
+ elif source == "modrinth":
238
+ r = resolve_modrinth_lib(ctx, lib_ns, lib_data, mc_v)
239
+ elif source == "static":
240
+ r = resolve_static_lib(ctx, lib_ns, lib_data, mc_t, mc_v)
241
+ else:
242
+ stp.warning(f"Unknown source '{source}' for load_dependency '{lib_ns}'. Skipping download.")
243
+ continue
244
+ if r:
245
+ results.append(r)
246
+
247
+ BUILD_CACHE[cache_key] = results
248
+ return results
@@ -0,0 +1,43 @@
1
+ import stouputils as stp
2
+ from ..core.constants import LATEST_MC_VERSION as LATEST_MC_VERSION
3
+ from .official_libs import OFFICIAL_LIBS as OFFICIAL_LIBS
4
+ from beet import Context as Context
5
+ from dataclasses import dataclass
6
+ from pathlib import Path
7
+ from stouputils.typing import JsonDict as JsonDict
8
+ from typing import Any
9
+
10
+ SMITHED_API_BASE: str
11
+ MODRINTH_API_BASE: str
12
+ HEADERS: dict[str, str]
13
+ BUILD_CACHE: dict[str, list[DownloadedLib]]
14
+
15
+ @dataclass
16
+ class DownloadedLib:
17
+ lib_ns: str
18
+ name: str
19
+ version: tuple[int, ...]
20
+ datapack_path: str | None
21
+ resource_pack_path: str | None
22
+
23
+ def mc_tuple(ctx: Context) -> tuple[int, ...]: ...
24
+ def mc_str(ctx: Context) -> str: ...
25
+ def lookup_static(lib_data: JsonDict, mc_tup: tuple[int, ...]) -> tuple[tuple[int, ...], str] | None:
26
+ """Return ``(dep_ver, url)`` for the highest MC key ``<= mc_tup``, or ``None``."""
27
+ def cached_json(ctx: Context, url: str) -> Any | None: ...
28
+ def cached_zip(ctx: Context, url: str) -> Path | None:
29
+ """Download *url* via beet cache, ensuring the file has a ``.zip`` suffix."""
30
+ def version_str(ver: list[int] | tuple[int, ...]) -> str: ...
31
+ def parse_version(s: str) -> tuple[int, ...]: ...
32
+ def mc_compatible(versions: list[JsonDict], mc_tup: tuple[int, ...]) -> list[JsonDict]:
33
+ """Return versions whose supports list includes mc_tup (exact), falling back to max(supports) <= mc_tup."""
34
+ def resolve_smithed_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_tup: tuple[int, ...]) -> DownloadedLib | None: ...
35
+ def resolve_modrinth_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_ver: str) -> DownloadedLib | None: ...
36
+ def resolve_static_lib(ctx: Context, lib_ns: str, lib_data: JsonDict, mc_tup: tuple[int, ...], mc_ver: str) -> DownloadedLib | None: ...
37
+ @stp.handle_error
38
+ def get_lib_paths(ctx: Context) -> list[DownloadedLib]:
39
+ """ Download all ``is_used`` official libs and return their cached paths.
40
+
41
+ \tResults are memoised per build so weld.py and copy_to_destination can
42
+ \tboth call this without redundant work.
43
+ \t"""
@@ -0,0 +1,72 @@
1
+
2
+ # ruff: noqa: E501, I001
3
+ # Imports
4
+ from stouputils.typing import JsonDict
5
+
6
+ def official_lib_used(lib: str) -> bool:
7
+ is_used: bool = OFFICIAL_LIBS[lib]["is_used"]
8
+ OFFICIAL_LIBS[lib]["is_used"] = True
9
+ return is_used
10
+
11
+ # Each entry has: name, url, is_used, source ("smithed"|"modrinth"|"static")
12
+ # Smithed entries can have: version, smithed_id, has_resource_pack
13
+ # Modrinth entries can have: modrinth_slug
14
+ # Static entries have: static_urls {(mc_ver_tuple, dep_ver_tuple): url}
15
+ # Bookshelf modules are merged with source="smithed" (smithed_id derived from bs.X → bookshelf-X)
16
+ OFFICIAL_LIBS: dict[str, JsonDict] = {
17
+
18
+ # Smithed API libs
19
+ "smithed.custom_block": {"name":"Smithed Custom Block", "url":"https://wiki.smithed.dev/libraries/custom-block/", "is_used": False, "source":"smithed", "smithed_id":"custom-block"},
20
+ "smithed.crafter": {"name":"Smithed Crafter", "url":"https://wiki.smithed.dev/libraries/crafter/", "is_used": False, "source":"smithed", "smithed_id":"crafter", "has_resource_pack": True},
21
+ "smithed.actionbar": {"name":"Smithed Actionbar", "url":"https://wiki.smithed.dev/libraries/actionbar/", "is_used": False, "source":"smithed", "smithed_id":"actionbar"},
22
+
23
+ # Modrinth API libs
24
+ "itemio": {"name":"ItemIO", "url":"https://github.com/edayot/ItemIO", "is_used": False, "source":"modrinth", "modrinth_slug":"itemio"},
25
+
26
+ # Static URL libs (version resolved from static_urls at download time)
27
+ "common_signals": {"name":"Common Signals", "url":"https://github.com/Stoupy51/CommonSignals", "is_used": False, "source":"static", "static_urls": {
28
+ ((1, 21, 7), (0, 2, 0)): "https://github.com/Stoupy51/CommonSignals/releases/download/v0.2.0/CommonSignals_datapack.zip",
29
+ }
30
+ },
31
+ "furnace_nbt_recipes": {"name":"Furnace NBT Recipes", "url":"https://github.com/Stoupy51/FurnaceNbtRecipes", "is_used": False, "source":"static", "static_urls": {
32
+ ((1, 21, 8), (1, 10, 1)): "https://github.com/Stoupy51/FurnaceNbtRecipes/releases/download/v1.10.1/FurnaceNbtRecipes_datapack.zip",
33
+ }
34
+ },
35
+ "smart_ore_generation": {"name":"SmartOreGeneration", "url":"https://github.com/Stoupy51/SmartOreGeneration", "is_used": False, "source":"static", "static_urls": {
36
+ ((1, 21, 7), (1, 7, 2)): "https://github.com/Stoupy51/SmartOreGeneration/releases/download/v1.7.2/SmartOreGeneration_datapack.zip",
37
+ }
38
+ },
39
+ "realistic_explosion": {"name":"RealisticExplosion", "url":"https://github.com/Stoupy51/RealisticExplosionLibrary", "is_used": False, "source":"static", "static_urls": {
40
+ ((1, 21, 11), (1, 2, 0)): "https://github.com/Stoupy51/RealisticExplosionLibrary/releases/download/v1.2.0/RealisticExplosion_datapack.zip",
41
+ }
42
+ },
43
+
44
+ # Bookshelf modules (resolved via Smithed API with smithed_id)
45
+ "bs.bitwise": {"name": "Bookshelf Bitwise", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-bitwise"},
46
+ "bs.block": {"name": "Bookshelf Block", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-block"},
47
+ "bs.color": {"name": "Bookshelf Color", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-color"},
48
+ "bs.dump": {"name": "Bookshelf Dump", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-dump"},
49
+ "bs.environment": {"name": "Bookshelf Environment", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-environment"},
50
+ "bs.generation": {"name": "Bookshelf Generation", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-generation"},
51
+ "bs.health": {"name": "Bookshelf Health", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-health"},
52
+ "bs.hitbox": {"name": "Bookshelf Hitbox", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-hitbox"},
53
+ "bs.id": {"name": "Bookshelf Id", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-id"},
54
+ "bs.interaction": {"name": "Bookshelf Interaction", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-interaction"},
55
+ "bs.link": {"name": "Bookshelf Link", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-link"},
56
+ "bs.log": {"name": "Bookshelf Log", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-log"},
57
+ "bs.math": {"name": "Bookshelf Math", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-math"},
58
+ "bs.move": {"name": "Bookshelf Move", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-move"},
59
+ "bs.position": {"name": "Bookshelf Position", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-position"},
60
+ "bs.random": {"name": "Bookshelf Random", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-random"},
61
+ "bs.raycast": {"name": "Bookshelf Raycast", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-raycast"},
62
+ "bs.schedule": {"name": "Bookshelf Schedule", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-schedule"},
63
+ "bs.sidebar": {"name": "Bookshelf Sidebar", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-sidebar"},
64
+ "bs.spline": {"name": "Bookshelf Spline", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-spline"},
65
+ "bs.string": {"name": "Bookshelf String", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-string"},
66
+ "bs.time": {"name": "Bookshelf Time", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-time"},
67
+ "bs.tree": {"name": "Bookshelf Tree", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-tree"},
68
+ "bs.vector": {"name": "Bookshelf Vector", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-vector"},
69
+ "bs.view": {"name": "Bookshelf View", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-view"},
70
+ "bs.xp": {"name": "Bookshelf Xp", "url": "https://github.com/mcbookshelf/bookshelf/releases", "is_used": False, "source": "smithed", "smithed_id": "bookshelf-xp"}
71
+ }
72
+
@@ -0,0 +1,5 @@
1
+ from stouputils.typing import JsonDict as JsonDict
2
+
3
+ def official_lib_used(lib: str) -> bool: ...
4
+
5
+ OFFICIAL_LIBS: dict[str, JsonDict]