minecraft-datapack-language 15.3.2__py3-none-any.whl → 15.3.4__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.3.2'
32
- __version_tuple__ = version_tuple = (15, 3, 2)
31
+ __version__ = version = '15.3.4'
32
+ __version_tuple__ = version_tuple = (15, 3, 4)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -423,8 +423,22 @@ def _process_statement(statement: Any, namespace: str, function_name: str, state
423
423
 
424
424
  elif statement['type'] == 'function_call':
425
425
  func_name = statement['name']
426
- # Simple function call
427
- commands.append(f"function {namespace}:{func_name}")
426
+ scope = statement.get('scope')
427
+
428
+ if scope:
429
+ # Handle scoped function call
430
+ if scope == 'global':
431
+ # Global scope uses the server armor stand
432
+ selector = "@e[type=armor_stand,tag=mdl_server,limit=1]"
433
+ else:
434
+ # Use the specified scope selector
435
+ selector = scope
436
+
437
+ # Generate execute as command
438
+ commands.append(f"execute as {selector} run function {namespace}:{func_name}")
439
+ else:
440
+ # Simple function call without scope
441
+ commands.append(f"function {namespace}:{func_name}")
428
442
 
429
443
  elif statement['type'] == 'raw_text':
430
444
  # Raw Minecraft commands
@@ -748,7 +762,23 @@ def _ast_to_pack(ast: Dict[str, Any], mdl_files: List[Path]) -> Pack:
748
762
  if statement.get('type') == 'command':
749
763
  function.commands.append(statement['command'])
750
764
  elif statement.get('type') == 'function_call':
751
- function.commands.append(f"function {statement['name']}")
765
+ func_name = statement['name']
766
+ scope = statement.get('scope')
767
+
768
+ if scope:
769
+ # Handle scoped function call
770
+ if scope == 'global':
771
+ # Global scope uses the server armor stand
772
+ selector = "@e[type=armor_stand,tag=mdl_server,limit=1]"
773
+ else:
774
+ # Use the specified scope selector
775
+ selector = scope
776
+
777
+ # Generate execute as command
778
+ function.commands.append(f"execute as {selector} run function {namespace_name}:{func_name}")
779
+ else:
780
+ # Simple function call without scope
781
+ function.commands.append(f"function {namespace_name}:{func_name}")
752
782
  elif statement.get('type') == 'variable_assignment':
753
783
  # Handle variable assignments
754
784
  var_name = statement['name']
@@ -589,9 +589,30 @@ class MDLParser:
589
589
  name_token = self._match(TokenType.STRING)
590
590
  name = name_token.value.strip('"').strip("'")
591
591
 
592
+ # Check for scope selector after function name
593
+ scope = None
594
+ if '<' in name and name.endswith('>'):
595
+ # Extract scope selector from function name
596
+ parts = name.split('<', 1)
597
+ if len(parts) == 2:
598
+ function_name = parts[0]
599
+ scope_selector = parts[1][:-1] # Remove closing >
600
+ scope = scope_selector
601
+ name = function_name
602
+ else:
603
+ # Malformed scope selector
604
+ raise create_parser_error(
605
+ message="Malformed scope selector in function call",
606
+ file_path=self.source_file,
607
+ line=self._peek().line,
608
+ column=self._peek().column,
609
+ line_content=name,
610
+ suggestion="Use format: function \"namespace:function_name<@selector>\""
611
+ )
612
+
592
613
  self._match(TokenType.SEMICOLON)
593
614
 
594
- return {"type": "function_call", "name": name}
615
+ return {"type": "function_call", "name": name, "scope": scope}
595
616
 
596
617
  def _parse_execute_statement(self) -> ExecuteStatement:
597
618
  """Parse execute statement."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minecraft-datapack-language
3
- Version: 15.3.2
3
+ Version: 15.3.4
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=x8iWYOsRZqfyaAvpHao2IXox2J65zqu3inxFaIrh_og,706
2
+ minecraft_datapack_language/_version.py,sha256=VBgspE8SeVlI_5KjUnpoKLbxrMSzz1rysOdbcXXNdwg,706
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=VfFkfDCDPEd2KC8L70NXXNPXEf9tMe5Lc6UWX1n6V9I,42139
5
+ minecraft_datapack_language/cli_build.py,sha256=curfcVYXZczDPRE-eiBPokwU10_Z-xdvnCHVcoXFfuk,43667
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
@@ -13,12 +13,12 @@ minecraft_datapack_language/linter.py,sha256=7UqbygC5JPCGg-BSOq65NB2xEJBu_OUOYII
13
13
  minecraft_datapack_language/mdl_errors.py,sha256=a_-683gjF3gfGRpDMbRgCXmXD9_aYYBmLodNH6fe29A,11596
14
14
  minecraft_datapack_language/mdl_lexer_js.py,sha256=F8I6A2CjV1sGn8a7OgG66nRKm-0jKxQpOq3fkUgkYlA,26201
15
15
  minecraft_datapack_language/mdl_linter.py,sha256=z85xoAglENurCh30bR7kEHZ_JeMxcYaLDcGNRAl-RAI,17253
16
- minecraft_datapack_language/mdl_parser_js.py,sha256=DghfDnBxMSs3Bfo1IgxkmeY6Er-3ceeQkKwEn12u6w8,38776
16
+ minecraft_datapack_language/mdl_parser_js.py,sha256=JAwjsC6hdTrZYtNelpt03vOMqphAEbTwK68ejXwJsqQ,39702
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.3.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
20
- minecraft_datapack_language-15.3.2.dist-info/METADATA,sha256=kuQSXJt6ENB_PH_hwiF7vYPu0CA_hPDCnZVDNgMtaqk,35229
21
- minecraft_datapack_language-15.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
22
- minecraft_datapack_language-15.3.2.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
23
- minecraft_datapack_language-15.3.2.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
24
- minecraft_datapack_language-15.3.2.dist-info/RECORD,,
19
+ minecraft_datapack_language-15.3.4.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
20
+ minecraft_datapack_language-15.3.4.dist-info/METADATA,sha256=W90GO33CEecqTWLBbxpxeNHcDb_n2K34zv5pagEDLAw,35229
21
+ minecraft_datapack_language-15.3.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
22
+ minecraft_datapack_language-15.3.4.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
23
+ minecraft_datapack_language-15.3.4.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
24
+ minecraft_datapack_language-15.3.4.dist-info/RECORD,,