stewbeet 2.0.9__tar.gz → 2.0.11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of stewbeet might be problematic. Click here for more details.
- {stewbeet-2.0.9 → stewbeet-2.0.11}/PKG-INFO +1 -1
- {stewbeet-2.0.9 → stewbeet-2.0.11}/pyproject.toml +1 -1
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/__init__.py +1 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/continuous_delivery/pmc.py +1 -1
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/auto/headers/object.py +63 -7
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/auto/lang_file/__init__.py +1 -1
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/custom_recipes/vanilla.py +3 -1
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/datapack/loot_tables/__init__.py +10 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/initialize/__init__.py +10 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/resource_pack/item_models/object.py +41 -9
- {stewbeet-2.0.9 → stewbeet-2.0.11}/.gitignore +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/LICENSE +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/README.md +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/__main__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/continuous_delivery/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/continuous_delivery/cd_utils.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/continuous_delivery/github.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/continuous_delivery/modrinth.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/continuous_delivery/smithed.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/__memory__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/constants.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/definitions_helper/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/definitions_helper/completion.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/definitions_helper/equipments.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/definitions_helper/materials.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/definitions_helper/records.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/definitions_helper/smart_ore_generation.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/definitions_helper/text.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/ingredients.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/utils/io.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/core/utils/sounds.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/bookshelf.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/bookshelf_config.json +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Bitwise.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Block.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Color.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Dump.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Environment.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Generation.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Health.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Hitbox.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Id.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Interaction.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Link.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Log.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Math.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Move.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Position.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Random.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Raycast.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Schedule.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Sidebar.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Spline.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf String.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Time.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Tree.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Vector.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf View.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Bookshelf Xp.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Common Signals.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Furnace NBT Recipes.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/ItemIO.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/SmartOreGeneration.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Smithed Crafter.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/datapack/Smithed Custom Block.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/dependencies/resource_pack/Smithed Crafter.zip +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/archive/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/auto/headers/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/auto/lang_file/utils.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/compatibilities/neo_enchant/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/compatibilities/simpledrawer/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/compute_sha1/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/copy_to_destination/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/custom_recipes/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/custom_recipes/furnace.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/custom_recipes/pulverizer.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/custom_recipes/smithed.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/datapack/custom_blocks/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/datapack/loading/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/finalyze/check_unused_textures/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/finalyze/dependencies/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/furnace.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/invisible_item.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/minecraft_font.ttf +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/none.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/none_release.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/pulverizing.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/shaped_2x2.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/shaped_3x3.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/wiki_information.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/wiki_ingredient_of_craft_template.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/book_components.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/book_optimizer.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/craft_content.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/image_utils.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/iso_renders.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/main.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/other_utils.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/page_font.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/shared_import.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/.gitignore +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/_README.md +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/furnace.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/invisible_item.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/invisible_item_release.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/none.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/none_release.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/pulverizing.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/shaped_2x2.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/shaped_3x3.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/simple_case_no_border.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/wiki_information.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/wiki_ingredient_of_craft_template.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/text_components.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/initialize/source_lore_font.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/merge_smithed_weld/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/merge_smithed_weld/weld.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/resource_pack/item_models/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/resource_pack/sounds/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/verify_definitions/__init__.py +0 -0
- {stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: stewbeet
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.11
|
|
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
|
|
@@ -53,7 +53,7 @@ def convert_markdown_to_bbcode(markdown: str, verbose: bool = True) -> str:
|
|
|
53
53
|
...
|
|
54
54
|
... **Full Changelog**: https://github.com/Stoupy51/LifeSteal/compare/v1.2.2...v1.2.3
|
|
55
55
|
... '''
|
|
56
|
-
>>> bbcode = convert_markdown_to_bbcode(markdown_text, verbose=
|
|
56
|
+
>>> bbcode = convert_markdown_to_bbcode(markdown_text, verbose=False)
|
|
57
57
|
>>> print(bbcode.strip())
|
|
58
58
|
[h2]Changelog[/h2][h4]Build System[/h4][list]
|
|
59
59
|
[*]🚀 Bump version to v1.2.3 ([url=https://github.com/Stoupy51/LifeSteal/commit/2111fd2f390b80a3aab77a4e7bcbb24b93845e5a]2111fd2[/url])[/*]
|
|
@@ -58,6 +58,33 @@ class Header:
|
|
|
58
58
|
['Some info']
|
|
59
59
|
>>> header.content
|
|
60
60
|
'say Hello'
|
|
61
|
+
|
|
62
|
+
>>> alt_launch_content = '''
|
|
63
|
+
... #> alt_launch
|
|
64
|
+
... #
|
|
65
|
+
... # @executed as the player & at current position
|
|
66
|
+
... #
|
|
67
|
+
... # @input macro target : string - target selector for position and rotation source
|
|
68
|
+
... # @input macro time : int - time in ticks
|
|
69
|
+
... # @input macro with : compound - additional arguments (optional)
|
|
70
|
+
... # - yaw : float - yaw rotation (will override target rotation)
|
|
71
|
+
... # - pitch : float - pitch rotation (will override target rotation)
|
|
72
|
+
... # - go_side : float - how far to go side (0 = don't go side)
|
|
73
|
+
... # - add_y : float - additional y position (default: 20.0)
|
|
74
|
+
... # - particle : int - particle effect (0 = none, 1 = glow)
|
|
75
|
+
... # - interpolation : int - teleport duration (default: 1)
|
|
76
|
+
... # - delay : int - delay in ticks before starting (default: 0)
|
|
77
|
+
... #
|
|
78
|
+
... # @description Launch a cinematic that moves the player to the position and rotation of a target entity
|
|
79
|
+
... #
|
|
80
|
+
... # @example /execute as @s positioned 0 69 0 rotated -55 10 run function switch:cinematic/alt_launch
|
|
81
|
+
... # {target:"@s",time:60,with:{go_side:1,add_y:20.0,particle:1,interpolation:1,delay:20}}
|
|
82
|
+
... #
|
|
83
|
+
...
|
|
84
|
+
... function content here'''
|
|
85
|
+
>>> alt_header = Header.from_content("alt_launch", alt_launch_content)
|
|
86
|
+
>>> len(alt_header.other) > 10 # Should capture all the @executed, @input, @description, @example lines
|
|
87
|
+
True
|
|
61
88
|
"""
|
|
62
89
|
# Initialize empty lists
|
|
63
90
|
within: list[str] = []
|
|
@@ -81,25 +108,27 @@ class Header:
|
|
|
81
108
|
within.append(func_name)
|
|
82
109
|
i += 1
|
|
83
110
|
|
|
84
|
-
# Skip empty lines
|
|
111
|
+
# Skip empty comment lines
|
|
85
112
|
while i < len(lines) and lines[i].strip() == "#":
|
|
86
113
|
i += 1
|
|
87
114
|
|
|
88
|
-
# Parse other information
|
|
89
|
-
while i < len(lines) and lines[i].strip().startswith("#
|
|
115
|
+
# Parse other information (without # prefix)
|
|
116
|
+
while i < len(lines) and lines[i].strip().startswith("#"):
|
|
90
117
|
other_line: str = lines[i].strip()
|
|
91
|
-
|
|
92
|
-
# Remove the # prefix and add to other
|
|
93
|
-
other.append(other_line[2:].strip())
|
|
118
|
+
other.append(other_line[2:])
|
|
94
119
|
i += 1
|
|
95
120
|
|
|
96
|
-
# Skip empty lines
|
|
121
|
+
# Skip any remaining empty comment lines
|
|
97
122
|
while i < len(lines) and lines[i].strip() == "#":
|
|
98
123
|
i += 1
|
|
99
124
|
|
|
100
125
|
# The remaining lines are the actual content
|
|
101
126
|
actual_content = "\n".join(lines[i:]).strip()
|
|
102
127
|
|
|
128
|
+
if other and other[-1] == "":
|
|
129
|
+
# Remove the last empty line if it exists
|
|
130
|
+
other.pop()
|
|
131
|
+
|
|
103
132
|
return cls(path, within, other, actual_content)
|
|
104
133
|
|
|
105
134
|
def to_str(self) -> str:
|
|
@@ -148,3 +177,30 @@ class Header:
|
|
|
148
177
|
header += "#\n"
|
|
149
178
|
return (header + "\n" + self.content.strip() + "\n\n").replace("\n\n\n", "\n\n")
|
|
150
179
|
|
|
180
|
+
if __name__ == "__main__":
|
|
181
|
+
# Example usage
|
|
182
|
+
example_content = """
|
|
183
|
+
#> alt_launch
|
|
184
|
+
#
|
|
185
|
+
# @executed as the player & at current position
|
|
186
|
+
#
|
|
187
|
+
# @input macro target : string - target selector for position and rotation source
|
|
188
|
+
# @input macro time : int - time in ticks
|
|
189
|
+
# @input macro with : compound - additional arguments (optional)
|
|
190
|
+
# - yaw : float - yaw rotation (will override target rotation)
|
|
191
|
+
# - pitch : float - pitch rotation (will override target rotation)
|
|
192
|
+
# - go_side : float - how far to go side (0 = don't go side)
|
|
193
|
+
# - add_y : float - additional y position (default: 20.0)
|
|
194
|
+
# - particle : int - particle effect (0 = none, 1 = glow)
|
|
195
|
+
# - interpolation : int - teleport duration (default: 1)
|
|
196
|
+
# - delay : int - delay in ticks before starting (default: 0)
|
|
197
|
+
#
|
|
198
|
+
# @description Launch a cinematic that moves the player to the position and rotation of a target entity
|
|
199
|
+
#
|
|
200
|
+
# @example /execute as @s positioned 0 69 0 rotated -55 10 run function switch:cinematic/alt_launch {target:"@s",time:60,with:{go_side:1,add_y:20.0,particle:1,interpolation:1,delay:20}}
|
|
201
|
+
#
|
|
202
|
+
|
|
203
|
+
# Fonction content here
|
|
204
|
+
"""
|
|
205
|
+
header = Header.from_content("alt_launch", example_content)
|
|
206
|
+
print(header.to_str())
|
|
@@ -32,6 +32,6 @@ def beet_default(ctx: Context):
|
|
|
32
32
|
|
|
33
33
|
# Update the lang file
|
|
34
34
|
lang.update(ctx.assets.languages.get("minecraft:en_us", Language()).data)
|
|
35
|
-
ctx.assets.languages["minecraft:en_us"] = Language(super_json_dump(lang))
|
|
35
|
+
ctx.assets.languages["minecraft:en_us"] = Language(super_json_dump(dict(sorted(lang.items()))))
|
|
36
36
|
pass
|
|
37
37
|
|
|
@@ -52,7 +52,9 @@ class VanillaRecipeHandler:
|
|
|
52
52
|
"criteria": {"requirement": {"trigger": "minecraft:inventory_changed"}},
|
|
53
53
|
"rewards": {"function": f"{Mem.ctx.project_id}:advancements/unlock_recipes"}
|
|
54
54
|
}
|
|
55
|
-
|
|
55
|
+
adv = Advancement(adv_json)
|
|
56
|
+
adv.encoder = lambda x: super_json_dump(x, max_level=-1)
|
|
57
|
+
Mem.ctx.data[adv_path] = adv
|
|
56
58
|
|
|
57
59
|
# Write the function that will unlock the recipes
|
|
58
60
|
content = f"""
|
|
@@ -28,6 +28,9 @@ def beet_default(ctx: Context):
|
|
|
28
28
|
assert ctx.project_id, "Project ID is not set. Please set it in the project configuration."
|
|
29
29
|
ns: str = ctx.project_id
|
|
30
30
|
|
|
31
|
+
# Creative loot table (sort of give all loot table)
|
|
32
|
+
creative_loot_table: JsonDict = {"pools": []}
|
|
33
|
+
|
|
31
34
|
# For each item in the definitions, create a loot table
|
|
32
35
|
for item, data in Mem.definitions.items():
|
|
33
36
|
loot_table: JsonDict = {
|
|
@@ -55,6 +58,9 @@ def beet_default(ctx: Context):
|
|
|
55
58
|
# Create loot table with beet
|
|
56
59
|
ctx.data[ns].loot_tables[f"i/{item}"] = LootTable(super_json_dump(loot_table, max_level = 10))
|
|
57
60
|
|
|
61
|
+
# Add the pool to the creative loot table
|
|
62
|
+
creative_loot_table["pools"].append({"rolls": 1, "entries":[{"type":"minecraft:loot_table","value":f"{ns}:i/{item}"}] })
|
|
63
|
+
|
|
58
64
|
# Same for external items
|
|
59
65
|
for item, data in Mem.external_definitions.items():
|
|
60
66
|
ext_ns, item_name = item.split(":")
|
|
@@ -119,6 +125,10 @@ def beet_default(ctx: Context):
|
|
|
119
125
|
}
|
|
120
126
|
ctx.data[ns].loot_tables[f"i/{ns}_manual"] = LootTable(super_json_dump(loot_table, max_level=10))
|
|
121
127
|
|
|
128
|
+
# Write the creative loot table
|
|
129
|
+
if creative_loot_table["pools"]:
|
|
130
|
+
ctx.data[ns].loot_tables["creative_loot_table"] = LootTable(super_json_dump(creative_loot_table, max_level=2))
|
|
131
|
+
|
|
122
132
|
# Make a give all command that gives chests with all the items
|
|
123
133
|
CHEST_SIZE: int = 27
|
|
124
134
|
total_chests: int = (len(Mem.definitions) + CHEST_SIZE - 1) // CHEST_SIZE
|
|
@@ -97,6 +97,16 @@ def beet_default(ctx: Context):
|
|
|
97
97
|
if pack_icon:
|
|
98
98
|
Mem.ctx.data.extra["pack.png"] = Mem.ctx.assets.extra["pack.png"] = PngFile(source_path=pack_icon)
|
|
99
99
|
|
|
100
|
+
# Add missing pack format registries if not present
|
|
101
|
+
ctx.data.pack_format_registry.update({
|
|
102
|
+
(1, 21, 5): 71,
|
|
103
|
+
(1, 21, 6): 80,
|
|
104
|
+
})
|
|
105
|
+
ctx.assets.pack_format_registry.update({
|
|
106
|
+
(1, 21, 5): 55,
|
|
107
|
+
(1, 21, 6): 63,
|
|
108
|
+
})
|
|
109
|
+
|
|
100
110
|
# Yield message to indicate successful build
|
|
101
111
|
yield
|
|
102
112
|
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
|
+
from collections.abc import Iterable
|
|
6
7
|
|
|
7
8
|
from beet import ItemModel, Model, Texture
|
|
8
9
|
from beet.core.utils import JsonDict
|
|
10
|
+
from stouputils.decorators import LogLevels, handle_error, simple_cache
|
|
9
11
|
from stouputils.io import super_json_dump, super_json_load
|
|
10
|
-
from stouputils.print import error
|
|
11
12
|
|
|
12
13
|
from ....core.__memory__ import Mem
|
|
13
14
|
from ....core.constants import CUSTOM_BLOCK_VANILLA, CUSTOM_ITEM_VANILLA, OVERRIDE_MODEL
|
|
@@ -65,6 +66,7 @@ class AutoModel:
|
|
|
65
66
|
"""
|
|
66
67
|
return cls(item_name, data, source_textures, ignore_textures)
|
|
67
68
|
|
|
69
|
+
@handle_error(exceptions=ValueError, error_log=LogLevels.ERROR_TRACEBACK)
|
|
68
70
|
def get_powered_texture(self, variants: list[str], side: str, on_off: str) -> str:
|
|
69
71
|
""" Get the powered texture for a given side.
|
|
70
72
|
|
|
@@ -84,7 +86,7 @@ class AutoModel:
|
|
|
84
86
|
if texture.endswith(side):
|
|
85
87
|
return texture
|
|
86
88
|
if not self.ignore_textures:
|
|
87
|
-
|
|
89
|
+
raise ValueError(f"Couldn't find texture for side '{side}' in '{variants}', consider adding missing texture or override the model")
|
|
88
90
|
return ""
|
|
89
91
|
|
|
90
92
|
def model_in_variants(self, models: list[str], variants: list[str]) -> bool:
|
|
@@ -99,12 +101,42 @@ class AutoModel:
|
|
|
99
101
|
"""
|
|
100
102
|
return all(any(model in x for x in variants) for model in models)
|
|
101
103
|
|
|
104
|
+
@simple_cache
|
|
105
|
+
def get_same_folder_variants(self, variants: Iterable[str]) -> list[str]:
|
|
106
|
+
""" Get variants that are in the same folder as the item.
|
|
107
|
+
|
|
108
|
+
Args:
|
|
109
|
+
variants (Iterable[str]): Iterable of variant names.
|
|
110
|
+
|
|
111
|
+
Returns:
|
|
112
|
+
list[str]: List of variants in the same folder.
|
|
113
|
+
"""
|
|
114
|
+
target_folder_depth: int = self.item_name.count('/')
|
|
115
|
+
same_folder_variants: list[str] = []
|
|
116
|
+
for variant in variants:
|
|
117
|
+
variant_folder_depth: int = variant.count('/')
|
|
118
|
+
if variant_folder_depth == target_folder_depth:
|
|
119
|
+
# Check if all folder parts before the filename are the same
|
|
120
|
+
if target_folder_depth == 0:
|
|
121
|
+
same_folder_variants.append(variant)
|
|
122
|
+
else:
|
|
123
|
+
target_folder: str = '/'.join(self.item_name.split('/')[:-1])
|
|
124
|
+
variant_folder: str = '/'.join(variant.split('/')[:-1])
|
|
125
|
+
if target_folder == variant_folder:
|
|
126
|
+
same_folder_variants.append(variant)
|
|
127
|
+
return same_folder_variants
|
|
128
|
+
|
|
129
|
+
@handle_error(exceptions=ValueError, error_log=LogLevels.ERROR_TRACEBACK)
|
|
102
130
|
def process(self) -> None:
|
|
103
131
|
""" Process the item model. """
|
|
104
132
|
# If no item model, return
|
|
105
133
|
if not self.data.get("item_model"):
|
|
106
134
|
return
|
|
107
135
|
|
|
136
|
+
# If item_model is already processed, return
|
|
137
|
+
if self.data["item_model"] in Mem.ctx.meta["stewbeet"]["rendered_item_models"]:
|
|
138
|
+
return
|
|
139
|
+
|
|
108
140
|
# Initialize variables
|
|
109
141
|
if (self.data.get("id") == CUSTOM_BLOCK_VANILLA or
|
|
110
142
|
any((isinstance(x, str) and "block" in x) for x in self.data.get(OVERRIDE_MODEL, {}).values())):
|
|
@@ -128,13 +160,13 @@ class AutoModel:
|
|
|
128
160
|
|
|
129
161
|
# Generate its model file(s)
|
|
130
162
|
for on_off in powered:
|
|
131
|
-
content: dict = {}
|
|
132
|
-
|
|
133
|
-
# Get all variants
|
|
134
|
-
variants: list[str] = [
|
|
163
|
+
content: dict = {} # Get all variants
|
|
164
|
+
all_variants: list[str] = [
|
|
135
165
|
x.replace(".png", "") for x in self.source_textures
|
|
136
|
-
if
|
|
166
|
+
if os.path.basename(x).startswith(self.item_name)
|
|
137
167
|
]
|
|
168
|
+
# Filter to only include variants in the same folder
|
|
169
|
+
variants: list[str] = self.get_same_folder_variants(all_variants)
|
|
138
170
|
|
|
139
171
|
if self.data.get(OVERRIDE_MODEL, None) != {}:
|
|
140
172
|
# If it's a block
|
|
@@ -188,7 +220,7 @@ class AutoModel:
|
|
|
188
220
|
"orientable": orientable,
|
|
189
221
|
"cube_column": cube_column
|
|
190
222
|
}, max_level=1)
|
|
191
|
-
|
|
223
|
+
raise ValueError(
|
|
192
224
|
f"Block '{self.item_name}' has invalid variants: {variants},\n"
|
|
193
225
|
"consider overriding the model or adding missing textures to match up one of the following patterns:"
|
|
194
226
|
f"\n{patterns}"
|
|
@@ -297,7 +329,7 @@ class AutoModel:
|
|
|
297
329
|
Mem.ctx.assets[texture] = Texture(source_path=self.source_textures[texture_name], mcmeta=mcmeta)
|
|
298
330
|
else:
|
|
299
331
|
if not self.ignore_textures:
|
|
300
|
-
|
|
332
|
+
raise ValueError(f"Texture '{texture_name}' not found in source textures")
|
|
301
333
|
|
|
302
334
|
# Add model to assets
|
|
303
335
|
if self.data.get(OVERRIDE_MODEL, None) != {}:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/compatibilities/simpledrawer/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/finalyze/basic_datapack_structure/__init__.py
RENAMED
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/finalyze/check_unused_textures/__init__.py
RENAMED
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/finalyze/custom_blocks_ticking/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/heavy_workbench.png
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/invisible_item_release.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/simple_case_no_border.png
RENAMED
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/wiki_information.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/assets/wiki_result_of_craft.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/heavy_workbench.png
RENAMED
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/invisible_item.png
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/minecraft_font.ttf
RENAMED
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/none_release.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/wiki_information.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/ingame_manual/templates/wiki_result_of_craft.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{stewbeet-2.0.9 → stewbeet-2.0.11}/stewbeet/plugins/resource_pack/check_power_of_2/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|