minecraft-datapack-language 17.0.10__py3-none-any.whl → 17.0.11__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.
Files changed (43) hide show
  1. minecraft_datapack_language/_embedded/docs/404.html +42 -0
  2. minecraft_datapack_language/_embedded/docs/Gemfile +26 -0
  3. minecraft_datapack_language/_embedded/docs/README.md +84 -0
  4. minecraft_datapack_language/_embedded/docs/_config.yml +74 -0
  5. minecraft_datapack_language/_embedded/docs/_data/version.yml +3 -0
  6. minecraft_datapack_language/_embedded/docs/_docs/cli-reference.md +458 -0
  7. minecraft_datapack_language/_embedded/docs/_docs/contributing.md +352 -0
  8. minecraft_datapack_language/_embedded/docs/_docs/docs-hub.md +266 -0
  9. minecraft_datapack_language/_embedded/docs/_docs/documentation.md +135 -0
  10. minecraft_datapack_language/_embedded/docs/_docs/examples.md +194 -0
  11. minecraft_datapack_language/_embedded/docs/_docs/getting-started.md +230 -0
  12. minecraft_datapack_language/_embedded/docs/_docs/language-reference.md +1637 -0
  13. minecraft_datapack_language/_embedded/docs/_docs/multi-file-projects.md +221 -0
  14. minecraft_datapack_language/_embedded/docs/_docs/python-bindings.md +446 -0
  15. minecraft_datapack_language/_embedded/docs/_docs/vscode-extension.md +381 -0
  16. minecraft_datapack_language/_embedded/docs/_includes/head-custom.html +983 -0
  17. minecraft_datapack_language/_embedded/docs/_includes/navigation.html +362 -0
  18. minecraft_datapack_language/_embedded/docs/_layouts/default.html +27 -0
  19. minecraft_datapack_language/_embedded/docs/_layouts/page.html +281 -0
  20. minecraft_datapack_language/_embedded/docs/_plugins/test_version.rb +13 -0
  21. minecraft_datapack_language/_embedded/docs/_plugins/version_reader.rb +37 -0
  22. minecraft_datapack_language/_embedded/docs/assets/css/style.css +211 -0
  23. minecraft_datapack_language/_embedded/docs/docs.md +134 -0
  24. minecraft_datapack_language/_embedded/docs/downloads.md +444 -0
  25. minecraft_datapack_language/_embedded/docs/icons/favicon-16.png +0 -0
  26. minecraft_datapack_language/_embedded/docs/icons/favicon-32.png +0 -0
  27. minecraft_datapack_language/_embedded/docs/icons/favicon-48.png +0 -0
  28. minecraft_datapack_language/_embedded/docs/icons/favicon-64.png +0 -0
  29. minecraft_datapack_language/_embedded/docs/icons/icon-1024.png +0 -0
  30. minecraft_datapack_language/_embedded/docs/icons/icon-128.png +0 -0
  31. minecraft_datapack_language/_embedded/docs/icons/icon-256.png +0 -0
  32. minecraft_datapack_language/_embedded/docs/icons/icon-512.png +0 -0
  33. minecraft_datapack_language/_embedded/docs/icons/icon-64.png +0 -0
  34. minecraft_datapack_language/_embedded/docs/index.md +378 -0
  35. minecraft_datapack_language/_version.py +2 -2
  36. minecraft_datapack_language/cli.py +5 -1
  37. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.11.dist-info}/METADATA +1 -1
  38. minecraft_datapack_language-17.0.11.dist-info/RECORD +56 -0
  39. minecraft_datapack_language-17.0.10.dist-info/RECORD +0 -22
  40. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.11.dist-info}/WHEEL +0 -0
  41. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.11.dist-info}/entry_points.txt +0 -0
  42. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.11.dist-info}/licenses/LICENSE +0 -0
  43. {minecraft_datapack_language-17.0.10.dist-info → minecraft_datapack_language-17.0.11.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,42 @@
1
+ ---
2
+ layout: default
3
+ title: Page Not Found
4
+ ---
5
+
6
+ <div class="page-content">
7
+ <div class="wrapper">
8
+ <div class="error-page">
9
+ <h1>404 - Page Not Found</h1>
10
+ <p>The page you're looking for doesn't exist.</p>
11
+ <p><a href="{{ '/' | relative_url }}">Return to the homepage</a></p>
12
+ </div>
13
+ </div>
14
+ </div>
15
+
16
+ <style>
17
+ .error-page {
18
+ text-align: center;
19
+ padding: 4rem 2rem;
20
+ }
21
+
22
+ .error-page h1 {
23
+ font-size: 3rem;
24
+ color: #24292e;
25
+ margin-bottom: 1rem;
26
+ }
27
+
28
+ .error-page p {
29
+ font-size: 1.2rem;
30
+ color: #586069;
31
+ margin-bottom: 2rem;
32
+ }
33
+
34
+ .error-page a {
35
+ color: #0366d6;
36
+ text-decoration: none;
37
+ }
38
+
39
+ .error-page a:hover {
40
+ text-decoration: underline;
41
+ }
42
+ </style>
@@ -0,0 +1,26 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "jekyll", "~> 4.3.0"
4
+ gem "jekyll-theme-cayman", "~> 0.2.0"
5
+ gem "jekyll-feed", "~> 0.17.0"
6
+ gem "jekyll-seo-tag", "~> 2.8.0"
7
+ gem "jekyll-sitemap", "~> 1.4.0"
8
+ gem "jekyll-github-metadata", "~> 2.16.0"
9
+
10
+ group :jekyll_plugins do
11
+ # Plugins are already specified above with version constraints
12
+ end
13
+
14
+ # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
15
+ # and associated library.
16
+ platforms :mingw, :x64_mingw, :mswin, :jruby do
17
+ gem "tzinfo", ">= 1", "< 3"
18
+ gem "tzinfo-data"
19
+ end
20
+
21
+ # Performance-booster for watching directories on Windows
22
+ gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
23
+
24
+ # Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
25
+ # do not have a Java counterpart.
26
+ gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
@@ -0,0 +1,84 @@
1
+ # MDL Documentation
2
+
3
+ This directory contains the documentation website for Minecraft Datapack Language (MDL).
4
+
5
+ ## Local Development
6
+
7
+ ### Prerequisites
8
+
9
+ - Ruby 3.0 or higher
10
+ - Bundler
11
+
12
+ ### Setup
13
+
14
+ 1. Install dependencies:
15
+ ```bash
16
+ bundle install
17
+ ```
18
+
19
+ 2. Start the development server:
20
+ ```bash
21
+ bundle exec jekyll serve
22
+ ```
23
+
24
+ 3. Open your browser to `http://localhost:4000`
25
+
26
+ ### Building for Production
27
+
28
+ ```bash
29
+ bundle exec jekyll build
30
+ ```
31
+
32
+ The built site will be in the `_site` directory.
33
+
34
+ ## Structure
35
+
36
+ - `_config.yml` - Jekyll configuration
37
+ - `_docs/` - Documentation pages
38
+ - `_layouts/` - Page layouts
39
+ - `_includes/` - Reusable components
40
+ - `index.md` - Homepage
41
+ - `404.html` - Error page
42
+
43
+ ## Adding Content
44
+
45
+ ### New Documentation Pages
46
+
47
+ 1. Create a new `.md` file in `_docs/`
48
+ 2. Add front matter with title and permalink
49
+ 3. Write your content in Markdown
50
+ 4. Add the page to navigation in `_config.yml`
51
+
52
+ ### Example
53
+
54
+ ```markdown
55
+ ---
56
+ layout: page
57
+ title: My New Page
58
+ permalink: /docs/my-new-page/
59
+ ---
60
+
61
+ # My New Page
62
+
63
+ Content goes here...
64
+ ```
65
+
66
+ ## Deployment
67
+
68
+ The site is automatically deployed to GitHub Pages when changes are pushed to the main branch. The deployment is handled by the GitHub Actions workflow in `.github/workflows/docs.yml`.
69
+
70
+ ## Customization
71
+
72
+ ### Styling
73
+
74
+ Custom styles are in `_includes/head-custom.html`. The site uses the Cayman theme with custom modifications.
75
+
76
+ ### Navigation
77
+
78
+ Navigation is configured in `_config.yml` under the `nav` section.
79
+
80
+ ### Layouts
81
+
82
+ Custom layouts are in `_layouts/`. The main layouts are:
83
+ - `default.html` - Base layout
84
+ - `page.html` - Documentation page layout
@@ -0,0 +1,74 @@
1
+ title: Minecraft Datapack Language (MDL) v12
2
+ description: A powerful compiler that lets you write Minecraft datapacks in a modern JavaScript-style language (.mdl) or via clean Python bindings
3
+ url: "https://www.mcmdl.com"
4
+ github_username: aaron777collins
5
+ github_repo: MinecraftDatapackLanguage
6
+
7
+ # Build settings
8
+ markdown: kramdown
9
+ highlighter: rouge
10
+ permalink: pretty
11
+
12
+ # Collections
13
+ collections:
14
+ docs:
15
+ output: true
16
+ permalink: /:collection/:name/
17
+
18
+ # Defaults
19
+ defaults:
20
+ - scope:
21
+ path: ""
22
+ type: "docs"
23
+ values:
24
+ layout: "page"
25
+ - scope:
26
+ path: ""
27
+ type: "posts"
28
+ values:
29
+ layout: "post"
30
+
31
+ # Plugins
32
+ plugins:
33
+ - jekyll-feed
34
+ - jekyll-seo-tag
35
+ - jekyll-sitemap
36
+ - jekyll-github-metadata
37
+
38
+ # GitHub metadata
39
+ github:
40
+ is_project_page: true
41
+ show_downloads: false
42
+
43
+ # Exclude from processing
44
+ exclude:
45
+ - Gemfile
46
+ - Gemfile.lock
47
+ - node_modules
48
+ - vendor/bundle/
49
+ - vendor/cache/
50
+ - vendor/gems/
51
+ - vendor/ruby/
52
+
53
+ # Theme settings
54
+ theme: jekyll-theme-cayman
55
+ show_downloads: false
56
+
57
+ # Navigation - Clean, organized structure
58
+ nav:
59
+ - title: Downloads
60
+ url: /downloads/
61
+ - title: Getting Started
62
+ url: /docs/getting-started/
63
+ - title: Examples
64
+ url: /docs/examples/
65
+ - title: Language Reference
66
+ url: /docs/language-reference/
67
+ - title: Multi-file Projects
68
+ url: /docs/multi-file-projects/
69
+ - title: CLI Reference
70
+ url: /docs/cli-reference/
71
+ - title: Python Bindings
72
+ url: /docs/python-api/
73
+ - title: VS Code Extension
74
+ url: /docs/vscode-extension/
@@ -0,0 +1,3 @@
1
+ current: "17.0.9"
2
+ tag: "v17.0.9"
3
+ updated_at: "2025-09-10T08:38:33Z"
@@ -0,0 +1,458 @@
1
+ ---
2
+ layout: page
3
+ title: CLI Reference
4
+ permalink: /docs/cli-reference/
5
+ ---
6
+
7
+ The MDL command-line interface provides tools for building and managing Minecraft datapacks.
8
+
9
+ ## Installation
10
+
11
+ Install MDL using pipx:
12
+
13
+ ```bash
14
+ pipx install minecraft-datapack-language
15
+ ```
16
+
17
+ ## Basic Commands
18
+
19
+ ### Build Command
20
+
21
+ Build MDL files into Minecraft datapacks. Defaults: `--mdl .` and `-o dist`.
22
+
23
+ ```bash
24
+ # Simplest
25
+ mdl build
26
+
27
+ # Explicit
28
+ mdl build --mdl <path> -o <output_dir>
29
+ # Zips by default -> creates <output_dir>.zip
30
+ # Use --no-zip to skip archive creation
31
+ ```
32
+
33
+ **Examples:**
34
+ ```bash
35
+ # Build single file (output defaults to dist)
36
+ mdl build --mdl hello.mdl
37
+
38
+ # Build entire directory (both default)
39
+ mdl build
40
+
41
+ # Build with custom output
42
+ mdl build --mdl myproject/ -o out
43
+ ```
44
+
45
+ **Options:**
46
+ - `--mdl <path>`: Path to a single `.mdl` file or a directory to build (default: `.`)
47
+ - `-o <output_dir>`: Output directory for compiled datapack (default: `dist`)
48
+ - `--verbose`: Show detailed build information
49
+ - `--wrapper <name>`: Custom wrapper name for the datapack
50
+
51
+ ### Check Command
52
+
53
+ Validate MDL files for syntax and semantic errors. If no paths are given, it scans the current directory for `**/*.mdl`.
54
+
55
+ ```bash
56
+ # Simplest
57
+ mdl check
58
+
59
+ # Explicit
60
+ mdl check <files_or_directories>
61
+ ```
62
+
63
+ **Examples:**
64
+ ```bash
65
+ # Check single file
66
+ mdl check hello.mdl
67
+
68
+ # Check current directory (implicit)
69
+ mdl check
70
+
71
+ # Check a specific directory
72
+ mdl check myproject/
73
+
74
+ # Check with warnings suppressed
75
+ mdl check myproject/ --ignore-warnings
76
+ ```
77
+
78
+ **Output and Error Reporting:**
79
+ The check command provides comprehensive error reporting with:
80
+ - Exact file location (line, column)
81
+ - Context lines showing the problematic code
82
+ - Helpful suggestions for fixing issues
83
+ - Multiple error collection (reports all errors, not just the first)
84
+
85
+ **Example Error Output:**
86
+ ```
87
+ Error 1: MDLSyntaxError in test.mdl:15:8
88
+ Missing closing brace for if statement
89
+ Context:
90
+ 13: if $score<@s>$ > 10 {
91
+ 14: say "High score!"
92
+ 15: score<@s> = 0
93
+ 16: }
94
+
95
+ Suggestion: Add closing brace '}' after line 15
96
+
97
+ Error 2: MDLLexerError in test.mdl:22:12
98
+ Unterminated string literal
99
+ Context:
100
+ 20: say "Hello world
101
+ 21: score<@s> = 10
102
+ 22: say "Goodbye
103
+
104
+ Suggestion: Add closing quote '"' at the end of line 20
105
+ ```
106
+
107
+ ### New Command
108
+
109
+ Create a new MDL project with template files:
110
+
111
+ ```bash
112
+ mdl new <project_name>
113
+ ```
114
+
115
+ **Examples:**
116
+ ```bash
117
+ # Create a new project in current directory
118
+ mdl new my_awesome_pack
119
+
120
+ # Create a project with specific name
121
+ mdl new adventure_map
122
+
123
+ # Create a project in a subdirectory
124
+ mdl new projects/survival_plus
125
+ ```
126
+
127
+ **What it creates:**
128
+ The new command generates a minimal project structure with:
129
+ - `README.md` - Quick start with build instructions
130
+ - `main.mdl` - Hello world (pack, namespace, simple function, on_load)
131
+
132
+ **Generated project structure:**
133
+ ```
134
+ my_awesome_pack/
135
+ ├── README.md
136
+ └── main.mdl
137
+ ```
138
+
139
+ **Template content includes:**
140
+ - Pack metadata (name, description, format)
141
+ - Namespace declaration
142
+ - One function that says hello
143
+ - on_load hook
144
+
145
+ ## Command Options
146
+
147
+ ### Build Options
148
+
149
+ | Option | Description | Example |
150
+ |--------|-------------|---------|
151
+ | `--mdl <path>` | .mdl file or directory to build (default: `.`) | `--mdl .` |
152
+ | `-o <dir>` | Output directory (default: `dist`) | `-o dist` |
153
+ | `--verbose` | Show detailed output | `--verbose` |
154
+ | `--wrapper <name>` | Custom wrapper name | `--wrapper mypack` |
155
+ | `--no-zip` | Skip creating zip archive (zip is default) | `--no-zip` |
156
+ | `--ignore-warnings` | Suppress warning messages | `--ignore-warnings` |
157
+
158
+ ### Check Options
159
+
160
+ | Option | Description | Example |
161
+ |--------|-------------|---------|
162
+ | `--verbose` | Show detailed validation information | `--verbose` |
163
+ | `--ignore-warnings` | Suppress warning messages | `--ignore-warnings` |
164
+
165
+ ### New Options
166
+
167
+ | Option | Description | Example |
168
+ |--------|-------------|---------|
169
+ | `<project_name>` | Name of the new project to create | `mdl new my_pack` |
170
+
171
+ ## Error Handling
172
+
173
+ MDL provides comprehensive error handling and reporting:
174
+
175
+ ### Error Types
176
+
177
+ - **MDLSyntaxError**: Basic syntax violations (missing semicolons, braces)
178
+ - **MDLLexerError**: Token recognition issues (unterminated strings, invalid characters)
179
+ - **MDLParserError**: Parsing and structure problems (malformed statements)
180
+ - **MDLValidationError**: Semantic validation failures (undefined variables, invalid references)
181
+ - **MDLFileError**: File access and I/O issues
182
+ - **MDLBuildError**: Build process failures
183
+ - **MDLCompilationError**: Compilation and linking issues
184
+ - **MDLConfigurationError**: CLI configuration and argument errors
185
+
186
+ ### Error Features
187
+
188
+ - **Exact Location**: Errors include precise line and column numbers
189
+ - **Context Lines**: Shows surrounding code for better debugging
190
+ - **Helpful Suggestions**: Provides specific fix recommendations
191
+ - **Multiple Error Collection**: Reports all errors, not just the first one
192
+ - **Error Summaries**: Shows total error and warning counts
193
+ - **Verbose Mode**: Detailed error information with additional context
194
+ - **Warning Suppression**: Use `--ignore-warnings` to hide warning messages and show only errors
195
+
196
+ ### Example Error Output
197
+
198
+ ```
199
+ 🔍 Checking test.mdl...
200
+
201
+ Error 1: MDLSyntaxError in test.mdl:15:8
202
+ Missing closing brace for if statement
203
+ Context:
204
+ 13: if "$score<@s>$ > 10" {
205
+ 14: say "High score!"
206
+ 15: score<@s> = 0
207
+ 16: }
208
+
209
+ Suggestion: Add closing brace '}' after line 15
210
+
211
+ Error 2: MDLLexerError in test.mdl:22:12
212
+ Unterminated string literal
213
+ Context:
214
+ 20: say "Hello world
215
+ 21: score<@s> = 10
216
+ 22: say "Goodbye
217
+
218
+ Suggestion: Add closing quote '"' at the end of line 20
219
+
220
+ Error 3: MDLValidationError in test.mdl:8:5
221
+ Undefined variable 'player_score'
222
+ Context:
223
+ 6: score<@s> = 10
224
+ 7: lives<@s> = 3
225
+ 8: player_score<@s> = 5
226
+ 9: say "Score: $score<@s>$"
227
+
228
+ Suggestion: Declare the variable first with 'variable player_score = 0'
229
+
230
+ Summary: 3 errors found
231
+ ```
232
+ | `--verbose` | Show detailed output | `--verbose` |
233
+
234
+ ## Examples
235
+
236
+ ### Basic Workflow
237
+
238
+ 1. **Create a new project:**
239
+ ```bash
240
+ mdl new hello_world
241
+ ```
242
+
243
+ 2. **Check the generated file:**
244
+ ```bash
245
+ mdl check hello_world/main.mdl
246
+ ```
247
+
248
+ 3. **Build the datapack:**
249
+ ```bash
250
+ mdl build --mdl hello_world/main.mdl
251
+ ```
252
+
253
+ 4. **Install in Minecraft:**
254
+ - Copy `dist/hello_world/` to your world's `datapacks/` folder
255
+ - Run `/reload` in-game
256
+
257
+ **Alternative: Manual file creation**
258
+ If you prefer to create files manually, you can start with:
259
+ ```mdl
260
+ // hello.mdl
261
+ pack "hello" "My first datapack" 82;
262
+ namespace "hello";
263
+
264
+ function hello:main {
265
+ say "Hello, Minecraft!";
266
+ }
267
+
268
+ on_load hello:main<@s>;
269
+ ```
270
+
271
+ 2. **Check the file:**
272
+ ```bash
273
+ mdl check hello.mdl
274
+ ```
275
+
276
+ 3. **Build the datapack:**
277
+ ```bash
278
+ mdl build --mdl hello.mdl
279
+ ```
280
+
281
+ 4. **Install in Minecraft:**
282
+ - Copy `dist/hello/` to your world's `datapacks/` folder
283
+ - Run `/reload` in-game
284
+
285
+ ### Multi-File Project
286
+
287
+ **Project structure:**
288
+ ```
289
+ my_project/
290
+ ├── main.mdl
291
+ ├── ui.mdl
292
+ └── game.mdl
293
+ ```
294
+
295
+ **Build command:**
296
+ ```bash
297
+ mdl build
298
+ ```
299
+
300
+ ### Explicit Scopes in Conditions
301
+
302
+ MDL supports explicit scope selectors in if/while conditions, allowing you to override declared variable scopes:
303
+
304
+ ```mdl
305
+ // Variables with different scopes
306
+ var num playerScore<@s> = 0; // Defaults to @s
307
+ var num globalCounter<@a> = 0; // Global scope
308
+ var num teamScore<@a[team=red]> = 0; // Team scope
309
+
310
+ function hello:main {
311
+ // Use explicit scope in conditions
312
+ if $playerScore<@s>$ > 10 {
313
+ say "Current player score is high!";
314
+ }
315
+
316
+ if $globalCounter<@a>$ > 100 {
317
+ say "Global counter reached milestone!";
318
+ }
319
+
320
+ if $teamScore<@a[team=red]>$ > 50 {
321
+ say "Red team is winning!";
322
+ }
323
+
324
+ // Check another player's score
325
+ if $playerScore<@p[name=Steve]>$ > 5 {
326
+ say "Steve has a good score!";
327
+ }
328
+ }
329
+ ```
330
+
331
+ **Benefits:**
332
+ - **Override declared scopes**: Use different scopes than what was declared
333
+ - **Check other entities**: Compare scores across different players/teams
334
+ - **Flexible conditions**: Mix and match scopes as needed
335
+ - **Clear intent**: Explicit scope makes code more readable
336
+
337
+ ### Verbose Build
338
+
339
+ Get detailed information about the build process:
340
+
341
+ ```bash
342
+ mdl build --mdl hello.mdl --verbose
343
+ ```
344
+
345
+ Output includes:
346
+ - Files being processed
347
+ - Functions being generated
348
+ - Variables being initialized
349
+ - Any warnings or errors
350
+ - Per-file status lines in the form `[OK] <file>` when a file is parsed successfully
351
+
352
+ ## Error Handling
353
+
354
+ ### Common Errors
355
+
356
+ **"No .mdl files found"**
357
+ ```bash
358
+ # Make sure you're in the right directory
359
+ ls *.mdl
360
+
361
+ # Use explicit file paths
362
+ mdl build --mdl ./myfile.mdl
363
+
364
+ # or build the directory itself
365
+ mdl build
366
+ ```
367
+
368
+ **"Failed to parse MDL files"**
369
+ ```bash
370
+ # Check syntax
371
+ mdl check myfile.mdl
372
+
373
+ # Look for missing semicolons, brackets, etc.
374
+ ```
375
+
376
+ **"Duplicate function name"**
377
+ ```bash
378
+ # Check for duplicate function names in the same namespace
379
+ mdl check myproject/
380
+ ```
381
+
382
+ ### Debugging
383
+
384
+ Use verbose mode to get more information:
385
+
386
+ ```bash
387
+ mdl build --mdl myfile.mdl --verbose
388
+ mdl check myfile.mdl --verbose
389
+ ```
390
+
391
+ ## Output Structure
392
+
393
+ The build command creates a datapack with this structure:
394
+
395
+ ```
396
+ dist/
397
+ └── pack_name/
398
+ ├── pack.mcmeta
399
+ └── data/
400
+ └── namespace/
401
+ ├── function/
402
+ │ ├── main.mcfunction
403
+ │ └── other.mcfunction
404
+ └── tags/
405
+ └── function/
406
+ ├── load.json
407
+ └── tick.json
408
+ ```
409
+
410
+ ## Integration
411
+
412
+ ### With Build Tools
413
+
414
+ **Makefile example:**
415
+ ```makefile
416
+ .PHONY: build clean
417
+
418
+ build:
419
+ mdl build
420
+
421
+ clean:
422
+ rm -rf dist/
423
+
424
+ check:
425
+ mdl check .
426
+ ```
427
+
428
+ **npm scripts example:**
429
+ ```json
430
+ {
431
+ "scripts": {
432
+ "build": "mdl build",
433
+ "check": "mdl check .",
434
+ "clean": "rm -rf dist/"
435
+ }
436
+ }
437
+ ```
438
+
439
+ ### With CI/CD
440
+
441
+ **GitHub Actions example:**
442
+ ```yaml
443
+ name: Build Datapack
444
+ on: [push, pull_request]
445
+
446
+ jobs:
447
+ build:
448
+ runs-on: ubuntu-latest
449
+ steps:
450
+ - uses: actions/checkout@v3
451
+ - uses: actions/setup-python@v4
452
+ with:
453
+ python-version: '3.9'
454
+ - run: pip install minecraft-datapack-language
455
+ - run: mdl check .
456
+ - run: mdl build
457
+ - run: mdl check .
458
+ ```