minecraft-datapack-language 15.1.79__py3-none-any.whl → 15.1.80__py3-none-any.whl

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.
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '15.1.79'
32
- __version_tuple__ = version_tuple = (15, 1, 79)
31
+ __version__ = version = '15.1.80'
32
+ __version_tuple__ = version_tuple = (15, 1, 80)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -155,14 +155,16 @@ def _generate_scoreboard_objectives(ast: Dict[str, Any], output_dir: Path) -> Li
155
155
  """Generate scoreboard objectives for all variables."""
156
156
  scoreboard_commands = []
157
157
 
158
- # Collect all variable names
159
- variables = set()
158
+ # Collect all variable names in order of appearance
159
+ variables = []
160
+ seen_variables = set()
160
161
 
161
- # From variable declarations
162
+ # From variable declarations (preserve order)
162
163
  if 'variables' in ast:
163
164
  for var_decl in ast['variables']:
164
- if 'name' in var_decl:
165
- variables.add(var_decl['name'])
165
+ if 'name' in var_decl and var_decl['name'] not in seen_variables:
166
+ variables.append(var_decl['name'])
167
+ seen_variables.add(var_decl['name'])
166
168
 
167
169
  # From functions (scan for variable usage)
168
170
  if 'functions' in ast:
@@ -171,7 +173,9 @@ def _generate_scoreboard_objectives(ast: Dict[str, Any], output_dir: Path) -> Li
171
173
  for statement in func['body']:
172
174
  # Look for variable assignments and usage
173
175
  if statement['type'] == 'variable_assignment':
174
- variables.add(statement['name'])
176
+ if statement['name'] not in seen_variables:
177
+ variables.append(statement['name'])
178
+ seen_variables.add(statement['name'])
175
179
  elif statement['type'] == 'command':
176
180
  # Scan command for variable substitutions
177
181
  command = statement['command']
@@ -180,10 +184,12 @@ def _generate_scoreboard_objectives(ast: Dict[str, Any], output_dir: Path) -> Li
180
184
  for var_name in var_matches:
181
185
  # Extract base name from scoped variables
182
186
  base_name = _extract_base_variable_name(var_name)
183
- variables.add(base_name)
187
+ if base_name not in seen_variables:
188
+ variables.append(base_name)
189
+ seen_variables.add(base_name)
184
190
 
185
- # Create scoreboard objectives
186
- for var_name in sorted(variables):
191
+ # Create scoreboard objectives in the order they were found
192
+ for var_name in variables:
187
193
  scoreboard_commands.append(f"scoreboard objectives add {var_name} dummy")
188
194
 
189
195
  return scoreboard_commands
@@ -228,50 +234,8 @@ def _process_say_command_with_variables(content: str, selector: str) -> str:
228
234
  matches = re.findall(var_pattern, content)
229
235
 
230
236
  if not matches:
231
- # Check for common variable names that might have been processed
232
- # This handles the case where $counter$ was converted to just "counter"
233
- word_pattern = r'\b(counter|health|score|value|num|count|timer|level)\b'
234
- word_matches = re.findall(word_pattern, content)
235
-
236
- if word_matches:
237
- # Process the content by replacing each variable with a score component
238
- components = []
239
- processed_content = content
240
-
241
- # Sort variables by their position in the content to process them in order
242
- var_positions = []
243
- for var_name in set(word_matches): # Remove duplicates
244
- pos = processed_content.find(var_name)
245
- if pos >= 0:
246
- var_positions.append((pos, var_name))
247
-
248
- var_positions.sort() # Sort by position
249
-
250
- last_pos = 0
251
- for pos, var_name in var_positions:
252
- # Add text before this variable
253
- if pos > last_pos:
254
- text_before = processed_content[last_pos:pos]
255
- if text_before:
256
- components.append(f'{{"text":"{text_before}"}}')
257
-
258
- # Add score component for variable
259
- components.append(f'{{"score":{{"name":"@e[type=armor_stand,tag=mdl_server,limit=1]","objective":"{var_name}"}}}}')
260
-
261
- last_pos = pos + len(var_name)
262
-
263
- # Add remaining text after last variable
264
- if last_pos < len(processed_content):
265
- remaining_text = processed_content[last_pos:]
266
- if remaining_text:
267
- components.append(f'{{"text":"{remaining_text}"}}')
268
-
269
- # Combine all components
270
- components_str = ','.join(components)
271
- return f'tellraw @a [{components_str}]'
272
- else:
273
- # No variables, return simple tellraw
274
- return f'tellraw @a [{{"text":"{content}"}}]'
237
+ # No variables, return simple tellraw
238
+ return f'tellraw @a [{{"text":"{content}"}}]'
275
239
 
276
240
  # Split content by variable references while preserving the structure
277
241
  parts = re.split(var_pattern, content)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minecraft-datapack-language
3
- Version: 15.1.79
3
+ Version: 15.1.80
4
4
  Summary: Compile JavaScript-style MDL language or Python API into a Minecraft datapack (1.21+ ready). Features variables, control flow, error handling, and VS Code extension.
5
5
  Project-URL: Homepage, https://www.mcmdl.com
6
6
  Project-URL: Documentation, https://www.mcmdl.com/docs
@@ -1,8 +1,8 @@
1
1
  minecraft_datapack_language/__init__.py,sha256=i-qCchbe5b2Fshgc6yCU9mddOLs2UBt9SAcLqfUIrT0,606
2
- minecraft_datapack_language/_version.py,sha256=7PWCRp2xvvtqOU9-v0sUo-hlqnk8pYpE35SXtmgBVfE,708
2
+ minecraft_datapack_language/_version.py,sha256=zydyibt80-c8u-7CiSB41xuk1Bv6Ma8Xg-DbjznOiHo,708
3
3
  minecraft_datapack_language/ast_nodes.py,sha256=pgjI2Nlap3ixFPgWqGSkqncG9zB91h5BKgRjtcJqMew,2118
4
4
  minecraft_datapack_language/cli.py,sha256=p5A_tEEXugN2NhQFbbgfwi4FxbWYD91RWeKR_A3Vuec,6263
5
- minecraft_datapack_language/cli_build.py,sha256=s90ZjY4jItiYYKtcpM7KrrHiJA7xurvqgCmrOcqsvl4,43188
5
+ minecraft_datapack_language/cli_build.py,sha256=wnkuk6LU0u3-G-RtKL84_Q4sOtwUI2YhMA6L2Qdz0rw,41695
6
6
  minecraft_datapack_language/cli_check.py,sha256=bPq9gHsxQ1CIiftkrAtRCifWkVAyjp5c8Oay2NNQ1qs,6277
7
7
  minecraft_datapack_language/cli_help.py,sha256=jUTHUQBONAZKVTdQK9tNPXq4c_6xpsafNOvHDjkEldg,12243
8
8
  minecraft_datapack_language/cli_new.py,sha256=uaKH0VBC43XBt_Hztc35-BfC9bYlsDdLbAfe_42rrtI,8235
@@ -16,9 +16,9 @@ minecraft_datapack_language/mdl_linter.py,sha256=z85xoAglENurCh30bR7kEHZ_JeMxcYa
16
16
  minecraft_datapack_language/mdl_parser_js.py,sha256=4VMWx6O7A10afTzjGnnwL_Sh52osIO84ObqHp8KoDZw,38677
17
17
  minecraft_datapack_language/pack.py,sha256=nYiXQ3jgJlDfc4m-65f7C2LFhDRioaUU_XVy6Na4SJI,34625
18
18
  minecraft_datapack_language/utils.py,sha256=Aq0HAGlXqj9BUTEjaEilpvzEW0EtZYYMMwOqG9db6dE,684
19
- minecraft_datapack_language-15.1.79.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
20
- minecraft_datapack_language-15.1.79.dist-info/METADATA,sha256=nVuBxWl4SqJwOqTwwpssvRpUICHDIOZukbPSt30RrwI,35230
21
- minecraft_datapack_language-15.1.79.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
22
- minecraft_datapack_language-15.1.79.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
23
- minecraft_datapack_language-15.1.79.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
24
- minecraft_datapack_language-15.1.79.dist-info/RECORD,,
19
+ minecraft_datapack_language-15.1.80.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
20
+ minecraft_datapack_language-15.1.80.dist-info/METADATA,sha256=JVO6FVc3KIh9k6J7LJIxS0fxj8bb9y2qwMpWKULWHF4,35230
21
+ minecraft_datapack_language-15.1.80.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
22
+ minecraft_datapack_language-15.1.80.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
23
+ minecraft_datapack_language-15.1.80.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
24
+ minecraft_datapack_language-15.1.80.dist-info/RECORD,,