minecraft-datapack-language 15.4.37__py3-none-any.whl → 15.4.39__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 +34 -0
- {minecraft_datapack_language-15.4.37.dist-info → minecraft_datapack_language-15.4.39.dist-info}/METADATA +1 -1
- {minecraft_datapack_language-15.4.37.dist-info → minecraft_datapack_language-15.4.39.dist-info}/RECORD +8 -8
- {minecraft_datapack_language-15.4.37.dist-info → minecraft_datapack_language-15.4.39.dist-info}/WHEEL +0 -0
- {minecraft_datapack_language-15.4.37.dist-info → minecraft_datapack_language-15.4.39.dist-info}/entry_points.txt +0 -0
- {minecraft_datapack_language-15.4.37.dist-info → minecraft_datapack_language-15.4.39.dist-info}/licenses/LICENSE +0 -0
- {minecraft_datapack_language-15.4.37.dist-info → minecraft_datapack_language-15.4.39.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 = '15.4.
|
32
|
-
__version_tuple__ = version_tuple = (15, 4,
|
31
|
+
__version__ = version = '15.4.39'
|
32
|
+
__version_tuple__ = version_tuple = (15, 4, 39)
|
33
33
|
|
34
34
|
__commit_id__ = commit_id = None
|
@@ -240,6 +240,8 @@ class MDLCompiler:
|
|
240
240
|
functions_dir = namespace_dir / self.dir_map.function
|
241
241
|
else:
|
242
242
|
functions_dir = namespace_dir / "functions"
|
243
|
+
# Ensure functions dir exists
|
244
|
+
functions_dir.mkdir(parents=True, exist_ok=True)
|
243
245
|
|
244
246
|
# Always create load function to initialize objectives; add tag only if on_load hooks exist
|
245
247
|
has_on_load = any(h.hook_type == "on_load" for h in hooks)
|
@@ -313,6 +315,8 @@ class MDLCompiler:
|
|
313
315
|
"""Convert an AST statement to a Minecraft command."""
|
314
316
|
if isinstance(statement, VariableAssignment):
|
315
317
|
return self._variable_assignment_to_command(statement)
|
318
|
+
elif isinstance(statement, VariableDeclaration):
|
319
|
+
return self._variable_declaration_to_command(statement)
|
316
320
|
elif isinstance(statement, SayCommand):
|
317
321
|
return self._say_command_to_command(statement)
|
318
322
|
elif isinstance(statement, RawBlock):
|
@@ -328,6 +332,9 @@ class MDLCompiler:
|
|
328
332
|
|
329
333
|
def _variable_assignment_to_command(self, assignment: VariableAssignment) -> str:
|
330
334
|
"""Convert variable assignment to scoreboard command."""
|
335
|
+
# Auto-declare objective on first use
|
336
|
+
if assignment.name not in self.variables:
|
337
|
+
self.variables[assignment.name] = assignment.name
|
331
338
|
objective = self.variables.get(assignment.name, assignment.name)
|
332
339
|
scope = assignment.scope.strip("<>")
|
333
340
|
|
@@ -343,6 +350,24 @@ class MDLCompiler:
|
|
343
350
|
# Simple value - use direct assignment
|
344
351
|
value = self._expression_to_value(assignment.value)
|
345
352
|
return f"scoreboard players set {scope} {objective} {value}"
|
353
|
+
|
354
|
+
def _variable_declaration_to_command(self, decl: VariableDeclaration) -> str:
|
355
|
+
"""Handle var declarations appearing inside function bodies.
|
356
|
+
Ensure objective is registered and optionally set initial value.
|
357
|
+
"""
|
358
|
+
objective = self.variables.get(decl.name, decl.name)
|
359
|
+
# Register objective so load function adds it
|
360
|
+
self.variables[decl.name] = objective
|
361
|
+
# If there is an initial value, set it in current context
|
362
|
+
scope = decl.scope.strip("<>")
|
363
|
+
init = None
|
364
|
+
try:
|
365
|
+
init = self._expression_to_value(decl.initial_value)
|
366
|
+
except Exception:
|
367
|
+
init = None
|
368
|
+
if init is not None:
|
369
|
+
return f"scoreboard players set {scope} {objective} {init}"
|
370
|
+
return f"# var {decl.name} declared"
|
346
371
|
|
347
372
|
def _say_command_to_command(self, say: SayCommand) -> str:
|
348
373
|
"""Convert say command to tellraw command with JSON formatting."""
|
@@ -420,6 +445,9 @@ class MDLCompiler:
|
|
420
445
|
if isinstance(stmt, VariableAssignment):
|
421
446
|
cmd = self._variable_assignment_to_command(stmt)
|
422
447
|
if_body_lines.append(cmd)
|
448
|
+
elif isinstance(stmt, VariableDeclaration):
|
449
|
+
cmd = self._variable_declaration_to_command(stmt)
|
450
|
+
if_body_lines.append(cmd)
|
423
451
|
elif isinstance(stmt, SayCommand):
|
424
452
|
cmd = self._say_command_to_command(stmt)
|
425
453
|
if_body_lines.append(cmd)
|
@@ -468,6 +496,9 @@ class MDLCompiler:
|
|
468
496
|
if isinstance(stmt, VariableAssignment):
|
469
497
|
cmd = self._variable_assignment_to_command(stmt)
|
470
498
|
else_body_lines.append(cmd)
|
499
|
+
elif isinstance(stmt, VariableDeclaration):
|
500
|
+
cmd = self._variable_declaration_to_command(stmt)
|
501
|
+
else_body_lines.append(cmd)
|
471
502
|
elif isinstance(stmt, SayCommand):
|
472
503
|
cmd = self._say_command_to_command(stmt)
|
473
504
|
else_body_lines.append(cmd)
|
@@ -513,6 +544,9 @@ class MDLCompiler:
|
|
513
544
|
if isinstance(stmt, VariableAssignment):
|
514
545
|
cmd = self._variable_assignment_to_command(stmt)
|
515
546
|
loop_body_lines.append(cmd)
|
547
|
+
elif isinstance(stmt, VariableDeclaration):
|
548
|
+
cmd = self._variable_declaration_to_command(stmt)
|
549
|
+
loop_body_lines.append(cmd)
|
516
550
|
elif isinstance(stmt, SayCommand):
|
517
551
|
cmd = self._say_command_to_command(stmt)
|
518
552
|
loop_body_lines.append(cmd)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: minecraft-datapack-language
|
3
|
-
Version: 15.4.
|
3
|
+
Version: 15.4.39
|
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=9Ufx0gE3v3XMp3BFsd82w98Wj5WJy1_7_P36vYE2gnA,708
|
3
3
|
minecraft_datapack_language/ast_nodes.py,sha256=nbWrRz137MGMRpmnq8QkXNzrtlaCgyPEknytbkrS_M8,3899
|
4
4
|
minecraft_datapack_language/cli.py,sha256=Vk35mPYm8saMUbBNRDTeoqKiLq9_do_ZeRatFWN2EQs,9824
|
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=mV5qZzqriObutwsaLPmddRQdLIGJg4jiTNKg1A98Fyk,41055
|
7
7
|
minecraft_datapack_language/mdl_errors.py,sha256=r0Gu3KhoX1YLPAVW_iO7Q_fPgaf_Dv9tOGSOdKNSzmw,16114
|
8
8
|
minecraft_datapack_language/mdl_lexer.py,sha256=CjbEUpuuF4eU_ucA_WIhw6wSMcHGk2BchtQ0bLAGvwg,22033
|
9
9
|
minecraft_datapack_language/mdl_linter.py,sha256=z85xoAglENurCh30bR7kEHZ_JeMxcYaLDcGNRAl-RAI,17253
|
10
10
|
minecraft_datapack_language/mdl_parser.py,sha256=aQPKcmATM9BOMzO7vCXmMdxU1qjOJNLCSAKJopu5h3g,23429
|
11
11
|
minecraft_datapack_language/python_api.py,sha256=ImYULwBvJ0Qb0Tf6LFyXv-gTPGZ8njX7_La0HJKuk-o,8677
|
12
12
|
minecraft_datapack_language/utils.py,sha256=Aq0HAGlXqj9BUTEjaEilpvzEW0EtZYYMMwOqG9db6dE,684
|
13
|
-
minecraft_datapack_language-15.4.
|
14
|
-
minecraft_datapack_language-15.4.
|
15
|
-
minecraft_datapack_language-15.4.
|
16
|
-
minecraft_datapack_language-15.4.
|
17
|
-
minecraft_datapack_language-15.4.
|
18
|
-
minecraft_datapack_language-15.4.
|
13
|
+
minecraft_datapack_language-15.4.39.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
14
|
+
minecraft_datapack_language-15.4.39.dist-info/METADATA,sha256=5eHZsdPGNCYfRdfWqW0Vy465ScEkfMpMfRhACQ7b-CI,8360
|
15
|
+
minecraft_datapack_language-15.4.39.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
16
|
+
minecraft_datapack_language-15.4.39.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
|
17
|
+
minecraft_datapack_language-15.4.39.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
|
18
|
+
minecraft_datapack_language-15.4.39.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|