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.
- minecraft_datapack_language/_version.py +2 -2
- minecraft_datapack_language/mdl_compiler.py +38 -2
- {minecraft_datapack_language-16.0.8.dist-info → minecraft_datapack_language-16.0.10.dist-info}/METADATA +1 -1
- {minecraft_datapack_language-16.0.8.dist-info → minecraft_datapack_language-16.0.10.dist-info}/RECORD +8 -8
- {minecraft_datapack_language-16.0.8.dist-info → minecraft_datapack_language-16.0.10.dist-info}/WHEEL +0 -0
- {minecraft_datapack_language-16.0.8.dist-info → minecraft_datapack_language-16.0.10.dist-info}/entry_points.txt +0 -0
- {minecraft_datapack_language-16.0.8.dist-info → minecraft_datapack_language-16.0.10.dist-info}/licenses/LICENSE +0 -0
- {minecraft_datapack_language-16.0.8.dist-info → minecraft_datapack_language-16.0.10.dist-info}/top_level.txt +0 -0
@@ -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.
|
32
|
-
__version_tuple__ = version_tuple = (16, 0,
|
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
|
-
|
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.
|
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=
|
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=
|
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.
|
14
|
-
minecraft_datapack_language-16.0.
|
15
|
-
minecraft_datapack_language-16.0.
|
16
|
-
minecraft_datapack_language-16.0.
|
17
|
-
minecraft_datapack_language-16.0.
|
18
|
-
minecraft_datapack_language-16.0.
|
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,,
|
{minecraft_datapack_language-16.0.8.dist-info → minecraft_datapack_language-16.0.10.dist-info}/WHEEL
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|