minecraft-datapack-language 17.0.19__py3-none-any.whl → 17.0.21__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.
@@ -1,3 +1,3 @@
1
- current: "17.0.17"
2
- tag: "v17.0.17"
3
- updated_at: "2025-09-11T00:46:17Z"
1
+ current: "17.0.19"
2
+ tag: "v17.0.19"
3
+ updated_at: "2025-09-11T00:53:51Z"
@@ -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 = '17.0.19'
32
- __version_tuple__ = version_tuple = (17, 0, 19)
31
+ __version__ = version = '17.0.21'
32
+ __version_tuple__ = version_tuple = (17, 0, 21)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -1251,18 +1251,18 @@ class MDLCompiler:
1251
1251
  if isinstance(expression.right, BinaryExpression):
1252
1252
  self._store_temp_command(f"scoreboard players operation @s {temp_var} *= @s {right_temp}")
1253
1253
  else:
1254
- # For literal values, keep explicit multiply command for compatibility
1254
+ # Normalize and use operation with a temp constant to maximize compatibility
1255
1255
  if isinstance(expression.right, LiteralExpression):
1256
- # Normalize number formatting (e.g., 2.0 -> 2)
1257
1256
  literal_str = self._normalize_integer_literal_string(self._expression_to_value(expression.right), ctx="multiply literal")
1258
1257
  if literal_str == "0":
1259
1258
  self._store_temp_command(f"scoreboard players set @s {temp_var} 0")
1260
1259
  elif literal_str == "1":
1261
1260
  pass
1262
1261
  else:
1263
- self._store_temp_command(f"scoreboard players multiply @s {temp_var} {literal_str}")
1262
+ const_var = self._generate_temp_variable_name()
1263
+ self._store_temp_command(f"scoreboard players set @s {const_var} {literal_str}")
1264
+ self._store_temp_command(f"scoreboard players operation @s {temp_var} *= @s {const_var}")
1264
1265
  else:
1265
- # If right_value is a score reference string, strip the leading 'score '
1266
1266
  if isinstance(right_value, str) and right_value.startswith("score "):
1267
1267
  parts = right_value.split()
1268
1268
  if len(parts) >= 3:
@@ -1272,7 +1272,6 @@ class MDLCompiler:
1272
1272
  else:
1273
1273
  self._store_temp_command(f"scoreboard players operation @s {temp_var} *= {right_value}")
1274
1274
  else:
1275
- # If RHS is a numeric literal string (incl. negatives), use multiply
1276
1275
  if self._is_numeric_literal_string(right_value):
1277
1276
  lit = self._normalize_integer_literal_string(str(right_value), ctx="multiply literal string")
1278
1277
  if lit == "0":
@@ -1280,7 +1279,9 @@ class MDLCompiler:
1280
1279
  elif lit == "1":
1281
1280
  pass
1282
1281
  else:
1283
- self._store_temp_command(f"scoreboard players multiply @s {temp_var} {lit}")
1282
+ const_var = self._generate_temp_variable_name()
1283
+ self._store_temp_command(f"scoreboard players set @s {const_var} {lit}")
1284
+ self._store_temp_command(f"scoreboard players operation @s {temp_var} *= @s {const_var}")
1284
1285
  else:
1285
1286
  self._store_temp_command(f"scoreboard players operation @s {temp_var} *= {right_value}")
1286
1287
 
@@ -1299,9 +1300,8 @@ class MDLCompiler:
1299
1300
  if isinstance(expression.right, BinaryExpression):
1300
1301
  self._store_temp_command(f"scoreboard players operation @s {temp_var} /= @s {right_temp}")
1301
1302
  else:
1302
- # For literal values, keep explicit divide command for compatibility
1303
+ # Normalize and use operation with a temp constant to maximize compatibility
1303
1304
  if isinstance(expression.right, LiteralExpression):
1304
- # Normalize number formatting (e.g., 2.0 -> 2)
1305
1305
  lit = self._normalize_integer_literal_string(self._expression_to_value(expression.right), ctx="divide literal")
1306
1306
  if lit == "0":
1307
1307
  raise MDLCompilerError("Division by zero literal is not allowed", "Use a non-zero integer literal")
@@ -1309,12 +1309,17 @@ class MDLCompiler:
1309
1309
  pass
1310
1310
  elif lit.startswith("-"):
1311
1311
  abs_lit = lit[1:]
1312
- self._store_temp_command(f"scoreboard players divide @s {temp_var} {abs_lit}")
1313
- self._store_temp_command(f"scoreboard players multiply @s {temp_var} -1")
1312
+ const_div = self._generate_temp_variable_name()
1313
+ self._store_temp_command(f"scoreboard players set @s {const_div} {abs_lit}")
1314
+ self._store_temp_command(f"scoreboard players operation @s {temp_var} /= @s {const_div}")
1315
+ const_neg = self._generate_temp_variable_name()
1316
+ self._store_temp_command(f"scoreboard players set @s {const_neg} -1")
1317
+ self._store_temp_command(f"scoreboard players operation @s {temp_var} *= @s {const_neg}")
1314
1318
  else:
1315
- self._store_temp_command(f"scoreboard players divide @s {temp_var} {lit}")
1319
+ const_div = self._generate_temp_variable_name()
1320
+ self._store_temp_command(f"scoreboard players set @s {const_div} {lit}")
1321
+ self._store_temp_command(f"scoreboard players operation @s {temp_var} /= @s {const_div}")
1316
1322
  else:
1317
- # If right_value is a score reference string, strip the leading 'score '
1318
1323
  if isinstance(right_value, str) and right_value.startswith("score "):
1319
1324
  parts = right_value.split()
1320
1325
  if len(parts) >= 3:
@@ -1324,7 +1329,6 @@ class MDLCompiler:
1324
1329
  else:
1325
1330
  self._store_temp_command(f"scoreboard players operation @s {temp_var} /= {right_value}")
1326
1331
  else:
1327
- # If RHS is a numeric literal string (incl. negatives), use divide
1328
1332
  if self._is_numeric_literal_string(right_value):
1329
1333
  lit = self._normalize_integer_literal_string(str(right_value), ctx="divide literal string")
1330
1334
  if lit == "0":
@@ -1333,10 +1337,16 @@ class MDLCompiler:
1333
1337
  pass
1334
1338
  elif lit.startswith("-"):
1335
1339
  abs_lit = lit[1:]
1336
- self._store_temp_command(f"scoreboard players divide @s {temp_var} {abs_lit}")
1337
- self._store_temp_command(f"scoreboard players multiply @s {temp_var} -1")
1340
+ const_div = self._generate_temp_variable_name()
1341
+ self._store_temp_command(f"scoreboard players set @s {const_div} {abs_lit}")
1342
+ self._store_temp_command(f"scoreboard players operation @s {temp_var} /= @s {const_div}")
1343
+ const_neg = self._generate_temp_variable_name()
1344
+ self._store_temp_command(f"scoreboard players set @s {const_neg} -1")
1345
+ self._store_temp_command(f"scoreboard players operation @s {temp_var} *= @s {const_neg}")
1338
1346
  else:
1339
- self._store_temp_command(f"scoreboard players divide @s {temp_var} {lit}")
1347
+ const_div = self._generate_temp_variable_name()
1348
+ self._store_temp_command(f"scoreboard players set @s {const_div} {lit}")
1349
+ self._store_temp_command(f"scoreboard players operation @s {temp_var} /= @s {const_div}")
1340
1350
  else:
1341
1351
  self._store_temp_command(f"scoreboard players operation @s {temp_var} /= {right_value}")
1342
1352
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minecraft-datapack-language
3
- Version: 17.0.19
3
+ Version: 17.0.21
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,9 +1,9 @@
1
1
  minecraft_datapack_language/__init__.py,sha256=0KVXBE4ScRaRUrf83aA2tVB-y8A_jplyaxVvtHH6Uw0,1199
2
- minecraft_datapack_language/_version.py,sha256=Gua8b2JeyO4z8omwdoLMdGROUlZevbXl66stvCu_xq4,708
2
+ minecraft_datapack_language/_version.py,sha256=Sv8BjyavqL9RJaEQMkrE6C_lTTFTg_o_gpVhlRHb0Cs,708
3
3
  minecraft_datapack_language/ast_nodes.py,sha256=L5izavSeXDr766vsfRvJrcnflXNJyXcy0WSfyJPq2ZA,4484
4
4
  minecraft_datapack_language/cli.py,sha256=XQ1MgPnP2gKQeYe29Z9w-AAcaRDHX-lTV9SiKp-rmzg,23800
5
5
  minecraft_datapack_language/dir_map.py,sha256=HmxFkuvWGkzHF8o_GFb4BpuMCRc6QMw8UbmcAI8JVdY,1788
6
- minecraft_datapack_language/mdl_compiler.py,sha256=Cs3fXtIAG4_Johp7h3BeYOs9RNUogkvYsR8Dvt7Ek1E,70720
6
+ minecraft_datapack_language/mdl_compiler.py,sha256=kWKZapywjQDBhLtSSM7CHNcviCLKiLId17qder2wFKc,71758
7
7
  minecraft_datapack_language/mdl_errors.py,sha256=r0Gu3KhoX1YLPAVW_iO7Q_fPgaf_Dv9tOGSOdKNSzmw,16114
8
8
  minecraft_datapack_language/mdl_lexer.py,sha256=YuRflOkoMOcjECPAZzoAkJciMks5amWMtGbcTIVKmAs,24166
9
9
  minecraft_datapack_language/mdl_linter.py,sha256=z85xoAglENurCh30bR7kEHZ_JeMxcYaLDcGNRAl-RAI,17253
@@ -17,7 +17,7 @@ minecraft_datapack_language/_embedded/docs/_config.yml,sha256=wx1F7KonP5t0fvF8ow
17
17
  minecraft_datapack_language/_embedded/docs/docs.md,sha256=odOG-EryTrvQFaAEbcqEbtqmPVR1xzQQf5Yc0S0zwFY,4042
18
18
  minecraft_datapack_language/_embedded/docs/downloads.md,sha256=Lp4ShcqCuDoGypswm5sGYORCOYVwGDmVLEz-5NyKndQ,10250
19
19
  minecraft_datapack_language/_embedded/docs/index.md,sha256=lyUqzvaeQhTZdir_6lpEMExWBUFlLcti7KoJVzQ_57Q,9855
20
- minecraft_datapack_language/_embedded/docs/_data/version.yml,sha256=pFJQH25-nh4lW5lzg4ae8G65ZjsfErZdiq1Z0s9-HZE,70
20
+ minecraft_datapack_language/_embedded/docs/_data/version.yml,sha256=YYsE1AqAPUrrXoZqNfUw2-zs2FLIzOaFO69Uqfn4TsQ,70
21
21
  minecraft_datapack_language/_embedded/docs/_docs/cli-reference.md,sha256=S10YRQcYicRGq4LL_x4VTsxrd4fp9fNy_HcEKKy6bjM,12302
22
22
  minecraft_datapack_language/_embedded/docs/_docs/contributing.md,sha256=Qs-AHky6G9P4L0siMg3l9dAO8I8AzSGW-htEaM_C-Gg,9434
23
23
  minecraft_datapack_language/_embedded/docs/_docs/docs-hub.md,sha256=b0oyaoYkEeKOjG2bRWm4MUnrd03tznKPcECIkhS1sUw,7464
@@ -48,9 +48,9 @@ minecraft_datapack_language/completions/mdl.bash,sha256=WNGcSaVJo092o5ScR6h0sRZ4
48
48
  minecraft_datapack_language/completions/mdl.fish,sha256=wPBywK1qTJmkB_06UltkuzjwfNz_SDoZamvwLQCXxBI,2689
49
49
  minecraft_datapack_language/completions/mdl.ps1,sha256=fSsNNps9-4h-RS-M--iBySbyLG0Dv52kTBGb4k1qNkQ,1864
50
50
  minecraft_datapack_language/completions/mdl.zsh,sha256=xiuNPasD-Thi9rc5T2j_GqHQOYOVG36LE_jI74IQuoQ,1252
51
- minecraft_datapack_language-17.0.19.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
- minecraft_datapack_language-17.0.19.dist-info/METADATA,sha256=qT6F37C5fjHWJ5nIy-FTtv873zyrx95x1OZ8KNBLImk,8418
53
- minecraft_datapack_language-17.0.19.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
54
- minecraft_datapack_language-17.0.19.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
55
- minecraft_datapack_language-17.0.19.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
56
- minecraft_datapack_language-17.0.19.dist-info/RECORD,,
51
+ minecraft_datapack_language-17.0.21.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
52
+ minecraft_datapack_language-17.0.21.dist-info/METADATA,sha256=SQE65AnJgQH6DV_UeTTk66uCs-QjYRJzNMXytN1k8EM,8418
53
+ minecraft_datapack_language-17.0.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
54
+ minecraft_datapack_language-17.0.21.dist-info/entry_points.txt,sha256=c6vjBeCiyQflvPHBRyBk2nJCSfYt3Oc7Sc9V87ySi_U,108
55
+ minecraft_datapack_language-17.0.21.dist-info/top_level.txt,sha256=ADtFI476tbKLLxEAA-aJQAfg53MA3k_DOb0KTFiggfw,28
56
+ minecraft_datapack_language-17.0.21.dist-info/RECORD,,