# Remote

This section documents all Remote config fields, purposes, allowed values, defaults, and fallback behavior.

For `dc` format conventions, please read:
- [Getting Started](../Getting_Started)

## Location
- Directory: `DLC/remote/`
- Subdirectories are used as categories:
  - If a config is in `DLC/remote/<subdir>/`, downloaded files are placed under `DLC/<subdir>/`.
  - Example: `DLC/remote/mods/example.dc` -> `DLC/mods/<file_name>`.

## Complete Example
```dc
[download]
curseforge_projectid = "123456"
curseforge_fileid = "7890123"
modrinth_projectid = "project-slug-or-id"
modrinth_versionid = "version-id-or-number"
directUrl = [
  "https://example.com/mirror/modA.jar",
  "https://mirror.example.net/modA.jar"
]
priority = "curseforge,modrinth,directurl"

[basic]
identifier = "ExampleMod"
type = "mod"
file_name = "example-mod-1.0.0.jar"
appliedTarget = "mods"
RedirectUrl = "https://example.com/project-page"
isInList = true
isHidden = false
AllowEnableByAll = true
dependencies = ["HelperLib"]
conflicts = ["ConflictMod"]
alarm = false

[dependencies]
  HelperLib:
    [download]
    modrinth_projectid = "helperlib"
    modrinth_versionid = "helperlib-version"
    directUrl = ""
    priority = "modrinth"

    [basic]
    identifier = "HelperLib"
    type = "mod"
    file_name = "helperlib-1.0.0.jar"
    isInList = true
    isHidden = true
    AllowEnableByAll = true
    dependencies = ""
    conflicts = ""
    alarm = false

    [DisplayName]
    en_us = "Helper Library"
    zh_cn = "辅助库"

    [tip]

[DisplayName]
en_us = "Example Mod"
zh_cn = "示例模组"

[tip]
en_us = "Example tip"
zh_cn = "示例提示"
```

## Field Reference

#### `[download]`
- `curseforge_projectid`: CurseForge project ID or slug.
- `curseforge_fileid`: CurseForge file ID / version string / file name.
- `modrinth_projectid`: Modrinth project ID or slug.
- `modrinth_versionid`: Modrinth version ID or version string.
- `directUrl`: string or string array (multi-mirror).
- `priority`: comma-separated priority.
  - Supported: `curseforge`, `modrinth`, `directurl`.
  - If empty, starts with `curseforge`, then fills missing sources in default order.

#### `[basic].identifier`
- **Purpose**: Logical ID used by dependencies/conflicts/presets.
- **Fallback order**: identifier -> file_name -> config base name -> URL file name -> project IDs.

#### `[basic].file_name`
- **Purpose**: DLC file name (including extension).
- **Fallback**: URL-derived file name, then fallback name.

#### `[basic].type`
- **Allowed**: `mod`, `resourcepack`, `datapack`, `gunpack`, `others`.
- **Default**: `mod`.

#### `[basic].appliedTarget`
- **Purpose**: Override apply target path.
- **Allowed**: Relative or absolute path.
- Relative paths are resolved against modpack root.

#### `[basic].RedirectUrl`
- **Purpose**: URL opened when the DLC name is double-clicked in the DLC list.
- **Allowed**: String.

#### `[basic].isInList`
- **Purpose**: Whether this entry is shown in the DLC list.
- **Default**: `true`.

#### `[basic].isHidden`
- **Purpose**: Hide this entry while still allowing dependency management.
- **Default**: `false`.

#### `[basic].AllowEnableByAll`
- **Purpose**: Whether this entry is enabled by following “Enable All”.
- **Default**: `true`.

#### `[basic].conflicts`
- **Allowed**: string or array of identifiers.

#### `[basic].alarm`
- **Purpose**: Show alarm confirmation screen before enabling.
- **Allowed**: Boolean.

#### `[basic].dependencies`
- **Allowed**:
  - string (`"LibA,LibB"`)
  - array (`["LibA","LibB"]`)

#### `[dependencies]`
- **Purpose**: Define nested dependency nodes.
- **Syntax**:
  - `identifier:` or `[identifier]`

#### `[DisplayName]`
- Localized display name table, typically `en_us` and `zh_cn`.

#### `[tip]`
- Localized tooltip text table, typically `en_us` and `zh_cn`.

## Notes
- If `type = "others"` and `appliedTarget` is empty, the entry is forced out of list display.
- Display language fallback: client language -> `en_us` -> first available entry.
- Illegal filename characters are sanitized to `_`.
