|
1 | 1 | import { $schema } from './utils.ts' |
2 | 2 |
|
3 | 3 | type ParcelFormat = { |
4 | | - /** |
5 | | - * Parcel format ID |
6 | | - */ |
| 4 | + /** |
| 5 | + * Parcel format ID |
| 6 | + */ |
7 | 7 | id: string |
8 | | - /** |
9 | | - * Parcel format version |
10 | | - */ |
| 8 | + /** |
| 9 | + * Parcel format version |
| 10 | + */ |
11 | 11 | version: number |
12 | 12 | } |
13 | 13 |
|
14 | | -type ModDependency = { |
15 | | - id: string |
16 | | - /** Minimum version (SemVer) */ |
17 | | - min?: string |
18 | | - /** Maximum version (SemVer) */ |
19 | | - max?: string |
20 | | -} |
| 14 | +type ModDependency = |
| 15 | + | '*' |
| 16 | + | { |
| 17 | + /** |
| 18 | + * Minimum version (SemVer) |
| 19 | + */ |
| 20 | + min?: string |
| 21 | + /** |
| 22 | + * Maximum version (SemVer) |
| 23 | + */ |
| 24 | + max?: string |
| 25 | + } |
21 | 26 |
|
| 27 | +/** |
| 28 | + * The meta file of a Parcel |
| 29 | + * |
| 30 | + * This file should be in the root directory of a parcel |
| 31 | + */ |
22 | 32 | export type ParcelMeta = $schema & { |
23 | | - /** The format of parcel */ |
| 33 | + /** |
| 34 | + * The format of parcel |
| 35 | + */ |
24 | 36 | format: ParcelFormat |
25 | | - /** Minecraft data version */ |
| 37 | + /** |
| 38 | + * Minecraft data version |
| 39 | + * |
| 40 | + * Refer to [Minecraft WIKI - Data version: List of data versions](https://minecraft.wiki/w/Data_version#List_of_data_versions) |
| 41 | + */ |
26 | 42 | dataVersion: number |
27 | | - /** Size of parcel in X,Y,Z */ |
| 43 | + /** |
| 44 | + * Size of parcel in `X`, `Y`, `Z`. |
| 45 | + * |
| 46 | + * Must be positive integers. |
| 47 | + */ |
28 | 48 | size: [number, number, number] |
| 49 | + /** |
| 50 | + * Display name of the parcel |
| 51 | + * |
| 52 | + * It doesn't need to be unique. It's used for display purposes only. |
| 53 | + */ |
29 | 54 | name?: string |
| 55 | + /** |
| 56 | + * Description of the parcel |
| 57 | + */ |
30 | 58 | description?: string |
31 | | - /** Tags for searching */ |
| 59 | + /** |
| 60 | + * Tags for categorizing |
| 61 | + */ |
32 | 62 | tags?: string[] |
33 | 63 | /** |
34 | 64 | * List of mods that are allowed to be used in the parcel |
| 65 | + * |
| 66 | + * - Key is the mod ID, usually in lowercase with underscore separator. |
| 67 | + * - Value is the mod dependency, `"*"` means any version |
| 68 | + * |
| 69 | + * ### Example |
| 70 | + * |
| 71 | + * ```json |
| 72 | + * { |
| 73 | + * "mod_1": "*" |
| 74 | + * "mod_2": { "min": "1.0.0", "max": "2.0.0" }, |
| 75 | + * "mod_3": { "min": "1.0.0" }, |
| 76 | + * "mod_4": { "max": "1.0.0" } |
| 77 | + * } |
| 78 | + * ``` |
35 | 79 | */ |
36 | | - mods?: ModDependency[] |
| 80 | + mods?: Record<string, ModDependency> |
37 | 81 | /** |
38 | 82 | * Whether to include blocks |
39 | 83 | * |
40 | | - * @default true |
| 84 | + * Default is `true` |
| 85 | + * |
| 86 | + * If `false`, the parcel will not save or load blocks, and existing block data will be cleared when saving. |
41 | 87 | */ |
42 | 88 | includeBlock?: boolean |
43 | 89 | /** |
44 | 90 | * Whether to include entities |
45 | 91 | * |
46 | | - * @default false |
| 92 | + * Default is `true` |
| 93 | + * |
| 94 | + * If `false`, the parcel will not save or load entities, and existing entity data will be cleared when saving. |
47 | 95 | */ |
48 | 96 | includeEntity?: boolean |
49 | 97 | } |
0 commit comments