minecraft-datapack-language 16.0.8__py3-none-any.whl → 16.0.10__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 = '16.0.8'
32
- __version_tuple__ = version_tuple = (16, 0, 8)
31
+ __version__ = version = '16.0.10'
32
+ __version_tuple__ = version_tuple = (16, 0, 10)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -7,7 +7,7 @@ import os
7
7
  import json
8
8
  import shutil
9
9
  from pathlib import Path
10
- from typing import Dict, List, Any, Optional
10
+ from typing import Dict, List, Any, Optional, Set
11
11
  from .ast_nodes import (
12
12
  Program, PackDeclaration, NamespaceDeclaration, TagDeclaration,
13
13
  VariableDeclaration, VariableAssignment, VariableSubstitution, FunctionDeclaration,
@@ -29,6 +29,10 @@ class MDLCompiler:
29
29
  self.dir_map: Optional[DirMap] = None
30
30
  self.current_namespace = "mdl"
31
31
  self.variables: Dict[str, str] = {} # name -> objective mapping
32
+ # Preserve declared variables so we can initialize defaults in load.mcfunction
33
+ self.declared_variables: List[VariableDeclaration] = []
34
+ # Track any temporary scoreboard variables generated during compilation
35
+ self.temp_variables: Set[str] = set()
32
36
 
33
37
  def compile(self, ast: Program, source_dir: str = None) -> str:
34
38
  """Compile MDL AST into a complete Minecraft datapack."""
@@ -121,6 +125,7 @@ class MDLCompiler:
121
125
  for var in variables:
122
126
  objective_name = var.name
123
127
  self.variables[var.name] = objective_name
128
+ self.declared_variables.append(var)
124
129
  print(f"Variable: {var.name} -> scoreboard objective '{objective_name}'")
125
130
 
126
131
  def _compile_functions(self, functions: List[FunctionDeclaration], data_dir: Path):
@@ -299,6 +304,33 @@ class MDLCompiler:
299
304
  for var_name, objective in self.variables.items():
300
305
  lines.append(f"scoreboard objectives add {objective} dummy \"{var_name}\"")
301
306
 
307
+ # Initialize declared variables with explicit initial values
308
+ # Use @a for any @s-scoped variable since load runs without an executor
309
+ for decl in self.declared_variables:
310
+ if getattr(decl, 'initial_value', None) is None:
311
+ continue
312
+ objective = self.variables.get(decl.name, decl.name)
313
+ scope = decl.scope.strip("<>") if decl.scope else "@a"
314
+ if scope == "@s":
315
+ scope = "@a"
316
+ init = decl.initial_value
317
+ from .ast_nodes import LiteralExpression, VariableSubstitution
318
+ if isinstance(init, LiteralExpression):
319
+ # Normalize number to int if possible
320
+ val = init.value
321
+ try:
322
+ v = float(val)
323
+ val_str = str(int(v)) if v.is_integer() else str(v)
324
+ except Exception:
325
+ val_str = str(val)
326
+ lines.append(f"scoreboard players set {scope} {objective} {val_str}")
327
+ elif isinstance(init, VariableSubstitution):
328
+ src_obj = self.variables.get(init.name, init.name)
329
+ src_scope = init.scope.strip("<>") if init.scope else "@a"
330
+ if src_scope == "@s":
331
+ src_scope = "@a"
332
+ lines.append(f"scoreboard players operation {scope} {objective} = {src_scope} {src_obj}")
333
+
302
334
  lines.append("")
303
335
 
304
336
  # Add on_load hook calls
@@ -971,4 +1003,8 @@ class MDLCompiler:
971
1003
  if not hasattr(self, 'temp_counter'):
972
1004
  self.temp_counter = 0
973
1005
  self.temp_counter += 1
974
- return f"temp_{self.temp_counter}"
1006
+ name = f"temp_{self.temp_counter}"
1007
+ # Register temp variable so its objective is created and scores are initialized
1008
+ self.temp_variables.add(name)
1009
+ self.variables[name] = name
1010
+ return name
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minecraft-datapack-language
3
- Version: 16.0.8
3
+ Version: 16.0.10
4
4
  Summary: Compile MDL language with explicit scoping 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,18 +1,18 @@
1
1
  minecraft_datapack_language/__init__.py,sha256=0KVXBE4ScRaRUrf83aA2tVB-y8A_jplyaxVvtHH6Uw0,1199
2
- minecraft_datapack_language/_version.py,sha256=xZ4LrtvSAjJ0hq3rdocaKKpFH_WU-m895jE3FtcQ4lI,706
2
+ minecraft_datapack_language/_version.py,sha256=dZda77pKR25C-gzKOLtFrN3v3AWdh2iDLxfsjCp57hA,708
3
3
  minecraft_datapack_language/ast_nodes.py,sha256=L5izavSeXDr766vsfRvJrcnflXNJyXcy0WSfyJPq2ZA,4484
4
4
  minecraft_datapack_language/cli.py,sha256=R4QZYtox-Da9B8pr_kCg_9qc9aI-ORTah7kMkhsI5tw,10373
5
5
  minecraft_datapack_language/dir_map.py,sha256=HmxFkuvWGkzHF8o_GFb4BpuMCRc6QMw8UbmcAI8JVdY,1788
6
- minecraft_datapack_language/mdl_compiler.py,sha256=L9Q6LphnXe8K7OWSJHimUCKDx0acB1aj5byNa9JwZgw,48295
6
+ minecraft_datapack_language/mdl_compiler.py,sha256=_-Ieu3GKjVfubpg2YZYiqAriAEbNHTpBg8QFOf8j9_Q,50198
7
7
  minecraft_datapack_language/mdl_errors.py,sha256=r0Gu3KhoX1YLPAVW_iO7Q_fPgaf_Dv9tOGSOdKNSzmw,16114
8
8
  minecraft_datapack_language/mdl_lexer.py,sha256=rfsW2QNcZxa9HAHpU9HFReshQSmjOrrK6xY_r43mKFk,23485
9
9
  minecraft_datapack_language/mdl_linter.py,sha256=z85xoAglENurCh30bR7kEHZ_JeMxcYaLDcGNRAl-RAI,17253
10
10
  minecraft_datapack_language/mdl_parser.py,sha256=Krk7Y_E9OKNCcsDOCT7ATvQLbJII951AU2qzEY00GLE,26068
11
11
  minecraft_datapack_language/python_api.py,sha256=Iao1jbdeW6ekeA80BZG6gNqHVjxQJEheB3DbpVsuTZQ,12304
12
12
  minecraft_datapack_language/utils.py,sha256=Aq0HAGlXqj9BUTEjaEilpvzEW0EtZYYMMwOqG9db6dE,684
13
- minecraft_datapack_language-16.0.8.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
14
- minecraft_datapack_language-16.0.8.dist-info/METADATA,sha256=MtklB7R29qSpwkxwbKeQHEK8fq0z4BGoEid9ZSi0hSM,8343
15
- minecraft_datapack_language-16.0.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
16
- minecraft_datapack_language-16.0.8.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
17
- minecraft_datapack_language-16.0.8.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
18
- minecraft_datapack_language-16.0.8.dist-info/RECORD,,
13
+ minecraft_datapack_language-16.0.10.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
14
+ minecraft_datapack_language-16.0.10.dist-info/METADATA,sha256=pbOEaWKauZwcBrJkRDbNSbAKvJB3rsveGNxzhMsGmAE,8344
15
+ minecraft_datapack_language-16.0.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
16
+ minecraft_datapack_language-16.0.10.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
17
+ minecraft_datapack_language-16.0.10.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
18
+ minecraft_datapack_language-16.0.10.dist-info/RECORD,,