stewbeet 2.0.5__tar.gz → 2.0.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of stewbeet might be problematic. Click here for more details.

Files changed (138) hide show
  1. {stewbeet-2.0.5 → stewbeet-2.0.7}/PKG-INFO +2 -2
  2. {stewbeet-2.0.5 → stewbeet-2.0.7}/pyproject.toml +2 -2
  3. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/cli.py +5 -10
  4. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/constants.py +1 -1
  5. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/utils/sounds.py +5 -1
  6. stewbeet-2.0.7/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
  7. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/datapack/custom_blocks/__init__.py +6 -4
  8. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/__init__.py +1 -1
  9. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/main.py +8 -9
  10. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/initialize/__init__.py +4 -3
  11. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/resource_pack/item_models/object.py +1 -5
  12. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/resource_pack/sounds/__init__.py +6 -7
  13. stewbeet-2.0.7/stewbeet/utils.py +28 -0
  14. stewbeet-2.0.5/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
  15. {stewbeet-2.0.5 → stewbeet-2.0.7}/.gitignore +0 -0
  16. {stewbeet-2.0.5 → stewbeet-2.0.7}/LICENSE +0 -0
  17. {stewbeet-2.0.5 → stewbeet-2.0.7}/README.md +0 -0
  18. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/__init__.py +0 -0
  19. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/__main__.py +0 -0
  20. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/continuous_delivery/__init__.py +0 -0
  21. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/continuous_delivery/cd_utils.py +0 -0
  22. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/continuous_delivery/github.py +0 -0
  23. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/continuous_delivery/modrinth.py +0 -0
  24. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/continuous_delivery/pmc.py +0 -0
  25. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/continuous_delivery/smithed.py +0 -0
  26. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/__init__.py +0 -0
  27. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/__memory__.py +0 -0
  28. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/definitions_helper/__init__.py +0 -0
  29. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/definitions_helper/completion.py +0 -0
  30. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/definitions_helper/equipments.py +0 -0
  31. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/definitions_helper/materials.py +0 -0
  32. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/definitions_helper/records.py +0 -0
  33. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/definitions_helper/smart_ore_generation.py +0 -0
  34. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/definitions_helper/text.py +0 -0
  35. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/ingredients.py +0 -0
  36. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/core/utils/io.py +0 -0
  37. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/__init__.py +0 -0
  38. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/bookshelf.py +0 -0
  39. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/bookshelf_config.json +0 -0
  40. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Bitwise.zip +0 -0
  41. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Block.zip +0 -0
  42. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Color.zip +0 -0
  43. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Dump.zip +0 -0
  44. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Environment.zip +0 -0
  45. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Generation.zip +0 -0
  46. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Health.zip +0 -0
  47. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Hitbox.zip +0 -0
  48. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Id.zip +0 -0
  49. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Interaction.zip +0 -0
  50. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Link.zip +0 -0
  51. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Log.zip +0 -0
  52. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Math.zip +0 -0
  53. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Move.zip +0 -0
  54. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Position.zip +0 -0
  55. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Random.zip +0 -0
  56. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Raycast.zip +0 -0
  57. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Schedule.zip +0 -0
  58. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Sidebar.zip +0 -0
  59. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Spline.zip +0 -0
  60. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf String.zip +0 -0
  61. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Time.zip +0 -0
  62. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Tree.zip +0 -0
  63. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Vector.zip +0 -0
  64. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf View.zip +0 -0
  65. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Bookshelf Xp.zip +0 -0
  66. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Common Signals.zip +0 -0
  67. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Furnace NBT Recipes.zip +0 -0
  68. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/SmartOreGeneration.zip +0 -0
  69. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Smithed Crafter.zip +0 -0
  70. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/datapack/Smithed Custom Block.zip +0 -0
  71. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/dependencies/resource_pack/Smithed Crafter.zip +0 -0
  72. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/archive/__init__.py +0 -0
  73. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/auto/headers/__init__.py +0 -0
  74. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/auto/headers/object.py +0 -0
  75. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/auto/lang_file/__init__.py +0 -0
  76. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/auto/lang_file/utils.py +0 -0
  77. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +0 -0
  78. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +0 -0
  79. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/compute_sha1/__init__.py +0 -0
  80. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/copy_to_destination/__init__.py +0 -0
  81. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/custom_recipes/__init__.py +0 -0
  82. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/custom_recipes/furnace.py +0 -0
  83. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/custom_recipes/pulverizer.py +0 -0
  84. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/custom_recipes/smithed.py +0 -0
  85. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/custom_recipes/vanilla.py +0 -0
  86. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/datapack/loading/__init__.py +0 -0
  87. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/datapack/loot_tables/__init__.py +0 -0
  88. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +0 -0
  89. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +0 -0
  90. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +0 -0
  91. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/finalyze/dependencies/__init__.py +0 -0
  92. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
  93. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
  94. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
  95. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
  96. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
  97. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
  98. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
  99. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
  100. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
  101. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
  102. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
  103. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
  104. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
  105. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
  106. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
  107. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/book_components.py +0 -0
  108. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/book_optimizer.py +0 -0
  109. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/craft_content.py +0 -0
  110. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/image_utils.py +0 -0
  111. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/iso_renders.py +0 -0
  112. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/other_utils.py +0 -0
  113. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/page_font.py +0 -0
  114. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/shared_import.py +0 -0
  115. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/.gitignore +0 -0
  116. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/_README.md +0 -0
  117. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
  118. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
  119. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
  120. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
  121. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
  122. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
  123. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
  124. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
  125. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
  126. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
  127. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
  128. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
  129. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
  130. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
  131. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
  132. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/ingame_manual/text_components.py +0 -0
  133. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/initialize/source_lore_font.py +0 -0
  134. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/merge_smithed_weld/__init__.py +0 -0
  135. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/merge_smithed_weld/weld.py +0 -0
  136. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +0 -0
  137. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/resource_pack/item_models/__init__.py +0 -0
  138. {stewbeet-2.0.5 → stewbeet-2.0.7}/stewbeet/plugins/verify_definitions/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stewbeet
3
- Version: 2.0.5
3
+ Version: 2.0.7
4
4
  Summary: Beet Framework made to help generating advanced Minecraft datapack contents
5
5
  Project-URL: Homepage, https://github.com/Stoupy51/stewbeet
6
6
  Project-URL: Issues, https://github.com/Stoupy51/stewbeet/issues
@@ -18,7 +18,7 @@ Requires-Dist: model-resolver>=1.8.0
18
18
  Requires-Dist: mutagen>=1.47.0
19
19
  Requires-Dist: pyperclip>=1.8.0
20
20
  Requires-Dist: smithed>=0.19.0
21
- Requires-Dist: stouputils>=1.3.13
21
+ Requires-Dist: stouputils>=1.3.16
22
22
  Description-Content-Type: text/markdown
23
23
 
24
24
 
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
 
6
6
  [project]
7
7
  name = "stewbeet"
8
- version = "2.0.5"
8
+ version = "2.0.7"
9
9
  description = "Beet Framework made to help generating advanced Minecraft datapack contents"
10
10
  readme = "README.md"
11
11
  license = "MIT"
@@ -16,7 +16,7 @@ classifiers = [
16
16
  "Operating System :: OS Independent",
17
17
  ]
18
18
  dependencies = [
19
- "stouputils>=1.3.13",
19
+ "stouputils>=1.3.16",
20
20
  "model_resolver>=1.8.0",
21
21
  "beet>=0.110.1",
22
22
  "bolt>=0.49.1",
@@ -6,11 +6,12 @@ import shutil
6
6
  import subprocess
7
7
  import sys
8
8
 
9
- from beet import ProjectConfig, load_config, locate_config
9
+ from beet import ProjectConfig
10
10
  from box import Box
11
11
  from stouputils.decorators import LogLevels, handle_error
12
- from stouputils.io import clean_path
13
- from stouputils.print import error, info
12
+ from stouputils.print import info
13
+
14
+ from .utils import get_project_config
14
15
 
15
16
 
16
17
  @handle_error(message="Error while running 'stewbeet'")
@@ -18,13 +19,7 @@ def main():
18
19
  second_arg: str = sys.argv[1] if len(sys.argv) == 2 else ""
19
20
 
20
21
  # Try to find and load the beet configuration file
21
- cfg: ProjectConfig | None = None
22
- if config_path := locate_config(os.getcwd(), parents=True):
23
- cfg = load_config(filename=config_path)
24
- if cfg:
25
- os.chdir(config_path.parent)
26
- if not cfg:
27
- error(f"No beet config file found in the current directory '{clean_path(os.getcwd())}'")
22
+ cfg: ProjectConfig | None = get_project_config()
28
23
 
29
24
  # Check if the command is "clean" or "rebuild"
30
25
  if second_arg in ["clean", "rebuild"]:
@@ -94,7 +94,7 @@ OFFICIAL_LIBS: dict[str, dict] = {
94
94
  "smithed.crafter": {"version":[0, 7, 0], "name":"Smithed Crafter", "url":"https://wiki.smithed.dev/libraries/crafter/", "is_used": False},
95
95
  "furnace_nbt_recipes": {"version":[1, 9, 0], "name":"Furnace NBT Recipes", "url":"https://github.com/Stoupy51/FurnaceNbtRecipes", "is_used": False},
96
96
  "smart_ore_generation": {"version":[1, 7, 1], "name":"SmartOreGeneration", "url":"https://github.com/Stoupy51/SmartOreGeneration", "is_used": False},
97
- "itemio": {"version":[1, 3, 3], "name":"ItemIO", "url":"https://github.com/edayot/ItemIO", "is_used": False},
97
+ "itemio": {"version":[1, 4, 0], "name":"ItemIO", "url":"https://github.com/edayot/ItemIO", "is_used": False},
98
98
  **BOOKSHELF_MODULES,
99
99
  }
100
100
 
@@ -33,8 +33,12 @@ def add_sound(ctx: Context, sounds: Sound | dict[str, Sound], name: str, ns: str
33
33
  ctx.assets[ns].sounds[path] = sound
34
34
 
35
35
  # Create a new sound config
36
+ # Use subtitle from the first sound if available, otherwise use the sound name
37
+ first_sound = next(iter(sounds.values()))
38
+ subtitle = first_sound.subtitle if first_sound.subtitle else name.split("/")[-1]
39
+
36
40
  new_config: JsonDict = {name: {
37
- "subtitle": name.split("/")[-1],
41
+ "subtitle": subtitle,
38
42
  "sounds": [
39
43
  {
40
44
  "name": f"{ns}:{path}",
@@ -407,10 +407,12 @@ execute as @e[tag={ns}.custom_block,dx=0,dy=0,dz=0] at @s run function {ns}:cust
407
407
  # Make search function
408
408
  content = "# Search where the head has been placed\n"
409
409
  mid_x, mid_y, mid_z = [x // 2 for x in CUSTOM_BLOCK_HEAD_CUBE_RADIUS]
410
- for x in range(-mid_x, mid_x + 1):
411
- for y in range(-mid_y, mid_y + 1):
412
- for z in range(-mid_z, mid_z + 1):
413
- content += f"execute positioned ~{x} ~{y} ~{z} if data block ~ ~ ~ components.\"minecraft:custom_data\".{ns}.{item} run function {ns}:custom_blocks/{item}/place_main\n"
410
+ content += f"""
411
+ for x in range({-mid_x}, {mid_x + 1}):
412
+ for y in range({-mid_y}, {mid_y + 1}):
413
+ for z in range({-mid_z}, {mid_z + 1}):
414
+ execute positioned ~x ~y ~z if data block ~ ~ ~ components.\"minecraft:custom_data\".{ns}.{item} run function {ns}:custom_blocks/{item}/place_main
415
+ """
414
416
  content += f"\n# Advancement\nadvancement revoke @s only {ns}:custom_block_head/{item}\n\n"
415
417
  write_function(f"{ns}:custom_blocks/_player_head/search_{item}", content)
416
418
 
@@ -6,7 +6,7 @@ from stouputils.decorators import measure_time
6
6
  from stouputils.print import progress, warning
7
7
 
8
8
  from ...core.__memory__ import Mem
9
- from .main import main as manual_main
9
+ from .main import manual_main
10
10
  from .shared_import import SharedMemory
11
11
 
12
12
 
@@ -84,8 +84,7 @@ from .shared_import import (
84
84
  def deepcopy(x):
85
85
  return json.loads(json.dumps(x))
86
86
 
87
- @measure_time(info, "Added manual to the definitions")
88
- def main():
87
+ def manual_main():
89
88
  # Copy everything in the manual assets folder to the templates folder
90
89
  os.makedirs(TEMPLATES_PATH, exist_ok = True)
91
90
  shutil.copytree(MANUAL_ASSETS_PATH + "assets", TEMPLATES_PATH, dirs_exist_ok = True)
@@ -102,7 +101,7 @@ def main():
102
101
 
103
102
  def routine():
104
103
  manual_config: JsonDict = Mem.ctx.meta.get("stewbeet",{}).get("manual", {})
105
- manual_debug: str = manual_config.get("manual_debug", "")
104
+ json_dump_path: str = manual_config.get("json_dump_path", "")
106
105
  manual_name: str = manual_config.get("name", "")
107
106
  if not manual_name:
108
107
  manual_name = f"{Mem.ctx.project_name} Manual"
@@ -162,8 +161,8 @@ def routine():
162
161
 
163
162
  # If the manual cache is enabled and we have a cache file, load it
164
163
  cache_pages: bool = manual_config.get("cache_pages", False)
165
- if cache_pages and manual_debug and os.path.exists(manual_debug) and os.path.exists(f"{SharedMemory.cache_path}/font/manual.json"):
166
- with super_open(manual_debug, "r") as f:
164
+ if cache_pages and json_dump_path and os.path.exists(json_dump_path) and os.path.exists(f"{SharedMemory.cache_path}/font/manual.json"):
165
+ with super_open(json_dump_path, "r") as f:
167
166
  book_content = json.load(f)
168
167
 
169
168
  # Else, generate all
@@ -630,11 +629,11 @@ def routine():
630
629
  f.write(super_json_dump(fonts))
631
630
 
632
631
  # Debug book_content
633
- manual_debug: str = manual_config.get("json_dump_path", "")
634
- if manual_debug:
635
- with super_open(manual_debug, "w") as f:
632
+ json_dump_path: str = manual_config.get("json_dump_path", "")
633
+ if json_dump_path:
634
+ with super_open(json_dump_path, "w") as f:
636
635
  f.write(super_json_dump(book_content))
637
- debug(f"Debug book_content at '{relative_path(manual_debug)}'")
636
+ debug(f"Debug book_content at '{relative_path(json_dump_path)}'")
638
637
 
639
638
 
640
639
  # Copy the font provider and the generated textures to the resource pack
@@ -9,14 +9,14 @@ from box import Box
9
9
  from stouputils import relative_path
10
10
  from stouputils.decorators import measure_time
11
11
  from stouputils.io import super_json_dump
12
- from stouputils.print import progress, warning
12
+ from stouputils.print import warning
13
13
 
14
14
  from ...core import Mem
15
15
  from .source_lore_font import make_source_lore_font
16
16
 
17
17
 
18
18
  # Main entry point
19
- @measure_time(progress, message="Execution time of 'stewbeet.plugins.initialize'")
19
+ @measure_time(message="Total execution time", is_generator=True)
20
20
  def beet_default(ctx: Context):
21
21
 
22
22
  # Assertions
@@ -92,5 +92,6 @@ def beet_default(ctx: Context):
92
92
  os.rename(old_path, new_path)
93
93
  warning(f"Renamed texture {file} to {new_name}")
94
94
 
95
- pass
95
+ # Yield message to indicate successful build
96
+ yield
96
97
 
@@ -114,11 +114,9 @@ class AutoModel:
114
114
 
115
115
  # Get powered states (if any)
116
116
  powered = [""]
117
- on_textures = []
118
117
  for texture_name in self.source_textures:
119
118
  if texture_name.startswith(self.item_name) and texture_name.endswith("_on.png"):
120
119
  powered = ["", "_on"]
121
- on_textures.append(texture_name)
122
120
 
123
121
  # Debug
124
122
  if False:
@@ -127,7 +125,6 @@ class AutoModel:
127
125
  print(f"Block or item: {self.block_or_item}")
128
126
  print(f"Overrides: {overrides}")
129
127
  print(f"Powered states: {powered}")
130
- print(f"On textures: {on_textures}")
131
128
 
132
129
  # Generate its model file(s)
133
130
  for on_off in powered:
@@ -144,7 +141,6 @@ class AutoModel:
144
141
  if self.block_or_item == "block":
145
142
  # Get parent
146
143
  content = {"parent": "block/cube_all", "textures": {}}
147
-
148
144
  # Check in which variants state we are
149
145
  variants_without_on = [x for x in variants if "_on" not in x]
150
146
  if len(variants_without_on) == 1:
@@ -269,7 +265,7 @@ class AutoModel:
269
265
 
270
266
  # Add overrides
271
267
  for key, value in overrides.items():
272
- content[key] = value
268
+ content[key] = value.copy() if isinstance(value, dict) else value
273
269
 
274
270
  # If powered, check if the on state is in the variants and add it
275
271
  if on_off == "_on":
@@ -45,9 +45,8 @@ def beet_default(ctx: Context):
45
45
  sounds_names: list[str] = [sound for sound in all_files if sound.endswith(".ogg")]
46
46
  if not sounds_names:
47
47
  return
48
-
49
48
  # Dictionary to group sound variants
50
- sound_groups: dict[str, list[str]] = defaultdict(list)
49
+ sound_groups: dict[str, list[tuple[str, str]]] = defaultdict(list)
51
50
 
52
51
  def handle_sound(sound: str) -> None:
53
52
  """ Process a single sound file.
@@ -78,14 +77,14 @@ def beet_default(ctx: Context):
78
77
  sounds: dict[str, Sound] = {}
79
78
 
80
79
  # Process each variant
81
- for variant in sorted(variants):
80
+ for variant_rel_sound in sorted(variants):
82
81
  # Get variant name without extension
83
- variant_name: str = os.path.splitext(variant)[0]
82
+ variant_name: str = os.path.splitext(variant_rel_sound)[0]
84
83
 
85
84
  # Create Sound object for this variant
86
- sounds[variant_name] = Sound(
87
- source_path=clean_path(f"{sounds_folder}/{variant}"),
88
- subtitle=base_name.split("/")[-1]
85
+ sounds[variant_name.lower().replace(" ","_")] = Sound(
86
+ source_path=clean_path(f"{sounds_folder}/{variant_rel_sound}"),
87
+ subtitle=variant_name
89
88
  )
90
89
 
91
90
  # Add all variants to the sound system
@@ -0,0 +1,28 @@
1
+
2
+
3
+ # Imports
4
+ import os
5
+
6
+ from beet import ProjectConfig, load_config, locate_config
7
+ from stouputils.io import clean_path
8
+ from stouputils.print import error
9
+
10
+
11
+ # Try to find and load the beet configuration file
12
+ def get_project_config(directory: str = os.getcwd()) -> ProjectConfig | None:
13
+ """ Get the project configuration from the current directory.
14
+
15
+ If no configuration file is found, it returns None and prints an error message.
16
+
17
+ Args:
18
+ directory (str): The directory to search for the configuration file. Defaults to the current working directory.
19
+ """
20
+ cfg: ProjectConfig | None = None
21
+ if config_path := locate_config(directory, parents=True):
22
+ cfg = load_config(filename=config_path)
23
+ if cfg:
24
+ os.chdir(config_path.parent)
25
+ if not cfg:
26
+ error(f"No beet config file found in the current directory '{clean_path(directory)}'")
27
+ return cfg
28
+
File without changes
File without changes
File without changes
File without changes
File without changes