minecraft-datapack-language 15.4.21__py3-none-any.whl → 15.4.22__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.4.21'
32
- __version_tuple__ = version_tuple = (15, 4, 21)
31
+ __version__ = version = '15.4.22'
32
+ __version_tuple__ = version_tuple = (15, 4, 22)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -142,6 +142,32 @@ def show_build_help():
142
142
  print(f"5. Build multiple files in a directory:")
143
143
  print(f" {color.code('mdl build --mdl examples/ -o output --verbose')}")
144
144
  print()
145
+
146
+ # Advanced Features
147
+ print_section("Advanced Features")
148
+ print()
149
+ print(color.info("MDL supports advanced features including explicit scopes in conditions:"))
150
+ print()
151
+ print(f" {color.code('// Variables with different scopes')}")
152
+ print(f" {color.code('var num playerScore = 0; // Defaults to @s')}")
153
+ print(f" {color.code('var num globalCounter scope<global> = 0; // Global scope')}")
154
+ print(f" {color.code('var num teamScore scope<@a[team=red]> = 0; // Team scope')}")
155
+ print()
156
+ print(f" {color.code('// Use explicit scopes in conditions')}")
157
+ print(f" {color.code('if \"$playerScore<@s>$ > 10\" {{')}")
158
+ print(f" {color.code(' say \"Current player score is high!\";')}")
159
+ print(f" {color.code('}')}")
160
+ print()
161
+ print(f" {color.code('if \"$globalCounter<global>$ > 100\" {{')}")
162
+ print(f" {color.code(' say \"Global counter reached milestone!\";')}")
163
+ print(f" {color.code('}')}")
164
+ print()
165
+ print(f" {color.code('if \"$teamScore<@a[team=red]>$ > 50\" {{')}")
166
+ print(f" {color.code(' say \"Red team is winning!\";')}")
167
+ print(f" {color.code('}')}")
168
+ print()
169
+ print(color.info("This allows you to check variables across different scopes without changing their declared scope."))
170
+ print()
145
171
 
146
172
  # Output Structure
147
173
  print_section("Output Structure")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minecraft-datapack-language
3
- Version: 15.4.21
3
+ Version: 15.4.22
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
@@ -477,6 +477,90 @@ This will create a datapack with:
477
477
 
478
478
  ---
479
479
 
480
+ ## 🎯 **Explicit Scope System**
481
+
482
+ MDL features a powerful **explicit scope system** that makes variable access clear and unambiguous. Each variable access must specify its scope, eliminating hidden state and making code more readable.
483
+
484
+ ### **Variable Declaration Scopes**
485
+
486
+ ```mdl
487
+ // Player-specific variable (defaults to @s in execution context)
488
+ var num playerScore = 0;
489
+
490
+ // Server-wide variable (stored on server armor stand)
491
+ var num globalCounter scope<global> = 0;
492
+
493
+ // Team-specific variable
494
+ var num teamScore scope<@a[team=red]> = 0;
495
+
496
+ // Custom entity variable
497
+ var num entityData scope<@e[type=armor_stand,tag=special,limit=1]> = 0;
498
+ ```
499
+
500
+ ### **Variable Access with Explicit Scopes**
501
+
502
+ ```mdl
503
+ // Each variable access must specify the scope
504
+ playerScore<@s> = 42; // Player scope
505
+ globalCounter<global> = 100; // Global scope
506
+ teamScore<@a[team=red]> = 5; // Team scope
507
+ entityData<@e[type=armor_stand,tag=special,limit=1]> = 10; // Custom entity
508
+ ```
509
+
510
+ ### **Explicit Scopes in Conditions**
511
+
512
+ **NEW!** MDL now supports explicit scope selectors in if/while conditions, allowing you to override declared variable scopes:
513
+
514
+ ```mdl
515
+ function "check_scores" {
516
+ // Check current player's score
517
+ if "$playerScore<@s>$ > 10" {
518
+ say "Your score is high!";
519
+ }
520
+
521
+ // Check global counter
522
+ if "$globalCounter<global>$ > 100" {
523
+ say "Global milestone reached!";
524
+ }
525
+
526
+ // Check another player's score
527
+ if "$playerScore<@p[name=Steve]>$ > 20" {
528
+ say "Steve has a good score!";
529
+ }
530
+
531
+ // Check team score
532
+ if "$teamScore<@a[team=red]>$ > 50" {
533
+ say "Red team is winning!";
534
+ }
535
+
536
+ // Use explicit scopes in while loops too
537
+ while "$globalCounter<global>$ < 10" {
538
+ globalCounter<global> = globalCounter<global> + 1;
539
+ say "Counter: $globalCounter$";
540
+ }
541
+ }
542
+ ```
543
+
544
+ **Benefits:**
545
+ - **Override declared scopes**: Use different scopes than what was declared
546
+ - **Check other entities**: Compare scores across different players/teams
547
+ - **Flexible conditions**: Mix and match scopes as needed
548
+ - **Clear intent**: Explicit scope makes code more readable and debuggable
549
+
550
+ ### **Scope Mapping**
551
+
552
+ MDL maps scopes to Minecraft selectors:
553
+
554
+ | MDL Scope | Minecraft Selector | Description |
555
+ |-----------|-------------------|-------------|
556
+ | `scope<global>` | `@e[type=armor_stand,tag=mdl_server,limit=1]` | Server-wide storage |
557
+ | `scope<@s>` | `@s` | Current player |
558
+ | `scope<@a>` | `@a` | All players |
559
+ | `scope<@a[team=red]>` | `@a[team=red]` | Red team players |
560
+ | `scope<@e[type=armor_stand,tag=something,limit=1]>` | `@e[type=armor_stand,tag=something,limit=1]` | Custom entity |
561
+
562
+ ---
563
+
480
564
  ## 🎯 **Advanced Multi-File Examples with Namespaces**
481
565
 
482
566
  ### **Modern Namespace System**
@@ -1,11 +1,11 @@
1
1
  minecraft_datapack_language/__init__.py,sha256=i-qCchbe5b2Fshgc6yCU9mddOLs2UBt9SAcLqfUIrT0,606
2
- minecraft_datapack_language/_version.py,sha256=UOCaFCMuBKEzZuLZKqrQpMf_Fgz3oXnIRu-he6qYSek,708
2
+ minecraft_datapack_language/_version.py,sha256=I5Cwge3f4scENDCmJvK0lfCv7rpZtkezUcsloKsVRQo,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
5
  minecraft_datapack_language/cli_build.py,sha256=u0XIOH_zTARPC6dvWf-411OqrF7RjT7Z9Hkp6hTeZsI,47990
6
6
  minecraft_datapack_language/cli_check.py,sha256=bPq9gHsxQ1CIiftkrAtRCifWkVAyjp5c8Oay2NNQ1qs,6277
7
7
  minecraft_datapack_language/cli_colors.py,sha256=Hr8awY966bGSnVdXL3WnmRhSP1wH56vTQKGt5z-kIQM,7878
8
- minecraft_datapack_language/cli_help.py,sha256=170MePwG9dV9IowG02SwiRT04fbrEo8FBuREZNwDhXY,20051
8
+ minecraft_datapack_language/cli_help.py,sha256=Rc-v9E2kctsdN_lMunqdKuZ8EZ8rcZIjBCOPrXLBQeE,21363
9
9
  minecraft_datapack_language/cli_new.py,sha256=_pj5EeXESAG00C80_os9jONIXAMcsu2eoR8xVJWDw6g,9347
10
10
  minecraft_datapack_language/cli_utils.py,sha256=qzba7BRHFK9AliSgSLGtxA0p2_Y-Rm20ysDzLLz_KD4,10632
11
11
  minecraft_datapack_language/dir_map.py,sha256=HmxFkuvWGkzHF8o_GFb4BpuMCRc6QMw8UbmcAI8JVdY,1788
@@ -17,9 +17,9 @@ minecraft_datapack_language/mdl_linter.py,sha256=z85xoAglENurCh30bR7kEHZ_JeMxcYa
17
17
  minecraft_datapack_language/mdl_parser_js.py,sha256=SQzc67pKls3NVnQaT0xIILGqpZYAmcZn78TQ0KIM4TE,40216
18
18
  minecraft_datapack_language/pack.py,sha256=nYiXQ3jgJlDfc4m-65f7C2LFhDRioaUU_XVy6Na4SJI,34625
19
19
  minecraft_datapack_language/utils.py,sha256=Aq0HAGlXqj9BUTEjaEilpvzEW0EtZYYMMwOqG9db6dE,684
20
- minecraft_datapack_language-15.4.21.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
21
- minecraft_datapack_language-15.4.21.dist-info/METADATA,sha256=mgbuo3_xIVmGi54rRh0IGeS1Oh4aLfbAjtM2b87KUEI,35230
22
- minecraft_datapack_language-15.4.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
23
- minecraft_datapack_language-15.4.21.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
24
- minecraft_datapack_language-15.4.21.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
25
- minecraft_datapack_language-15.4.21.dist-info/RECORD,,
20
+ minecraft_datapack_language-15.4.22.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
21
+ minecraft_datapack_language-15.4.22.dist-info/METADATA,sha256=elLshh43YF1-sNZck0fCVtlNNckjMrLWalSD4X4etYE,37917
22
+ minecraft_datapack_language-15.4.22.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
23
+ minecraft_datapack_language-15.4.22.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
24
+ minecraft_datapack_language-15.4.22.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
25
+ minecraft_datapack_language-15.4.22.dist-info/RECORD,,