zlh-grind/docs/reference/minecraft-file-reference.md

230 lines
8.1 KiB
Markdown

# Minecraft Server — Known File & Directory Reference
**Purpose:** Reference for file browser implementation. Covers all supported ZLH variants.
**Scope:** Files and directories users most commonly need to view, edit, upload, or delete.
---
## Universal (All Variants)
These exist on every Minecraft server regardless of loader.
### Root-Level Files
| File | Format | Why Users Touch It |
|------|--------|-------------------|
| `server.properties` | Key=value | Primary server config — gamemode, difficulty, max players, view distance, PvP, whitelist, MOTD, port, online-mode, seed |
| `ops.json` | JSON | Operator (admin) list |
| `whitelist.json` | JSON | Allowlisted players |
| `banned-players.json` | JSON | Banned player list |
| `banned-ips.json` | JSON | Banned IP list |
| `usercache.json` | JSON | UUID ↔ username cache (rarely edited manually) |
| `eula.txt` | Plain text | Must be accepted on first run |
### Root-Level Directories
| Directory | Why Users Touch It |
|-----------|-------------------|
| `world/` | Primary world — **never touched by file browser automation** |
| `world_nether/` | Nether dimension (Vanilla layout) |
| `world_the_end/` | End dimension (Vanilla layout) |
| `logs/` | Server logs — users download for debugging |
| `crash-reports/` | Crash dumps — users download when server won't start |
---
## Mod Loaders (Forge / NeoForge / Fabric / Quilt)
### Directories
| Directory | Format | Why Users Touch It |
|-----------|--------|-------------------|
| `mods/` | `.jar` files | Add, remove, enable, disable mods — primary user action |
| `mods-removed/` | `.jar` files | ZLH soft-delete location — restore from here |
| `config/` | `.toml`, `.json`, `.cfg`, `.yml` | Per-mod configuration — most commonly edited after mods dir |
| `defaultconfigs/` | Various | Default configs applied on new world creation (Forge/NeoForge) |
| `kubejs/` | `.js` files | KubeJS scripting (popular modpack customization tool) |
| `scripts/` | Various | CraftTweaker and similar scripting mods |
| `resourcepacks/` | `.zip` files | Server-side resource packs |
| `datapacks/` | `.zip` or folder | Data-driven game modifications |
### Config File Formats (inside `config/`)
| Format | Extension | Notes |
|--------|-----------|-------|
| TOML | `.toml` | Most common for NeoForge/Forge 1.18+ mods |
| JSON | `.json` | Common for Fabric mods and some Forge mods |
| CFG | `.cfg` | Older Forge mod format (1.12 era, still seen) |
| YAML | `.yml` | Less common, some mods use it |
| Plain text | `.txt`, `.conf` | Rare, older mods |
### NeoForge / Forge Specific
| File/Dir | Why Users Touch It |
|----------|--------------------|
| `config/forge-server.toml` | Forge server settings |
| `config/neoforge-server.toml` | NeoForge server settings |
| `config/fml.toml` | FML (Forge Mod Loader) settings |
| `libraries/` | Loader libraries — do not touch |
| `mods/dev/` | ZLH dev-promoted mods channel |
| `mods/curated/` | ZLH Modrinth-installed mods channel |
### Fabric / Quilt Specific
| File/Dir | Why Users Touch It |
|----------|--------------------|
| `fabric-server-launch.jar` | Loader binary — do not touch |
| `fabric-server.properties` | Fabric-specific settings (rare) |
| `config/fabric/` | Fabric mod configs |
---
## Plugin Servers (Paper / Purpur / Spigot / Bukkit)
### Directories
| Directory | Format | Why Users Touch It |
|-----------|--------|-------------------|
| `plugins/` | `.jar` files | Add, remove plugins — equivalent of mods/ for this stack |
| `plugins/<PluginName>/` | Various | Per-plugin config folder, created on first run |
| `plugins/<PluginName>/config.yml` | YAML | Primary config for most plugins |
### Paper-Specific Config Files
| File | Why Users Touch It |
|------|--------------------|
| `bukkit.yml` | Bukkit base config — spawn limits, chunk GC, aliases |
| `spigot.yml` | Spigot config — mob spawning, merge radius, tick limiters |
| `config/paper-global.yml` | Paper global settings (1.19+) |
| `config/paper-world-defaults.yml` | Paper per-world defaults |
| `config/paper-world/` | Per-world Paper overrides |
| `pufferfish.yml` | Pufferfish-specific optimizations |
| `purpur.yml` | Purpur-specific gameplay customizations |
### Common Plugin Config Files (by plugin name)
These are the most widely deployed plugins — their configs are commonly edited:
| Plugin | Config Location |
|--------|----------------|
| EssentialsX | `plugins/Essentials/config.yml` |
| LuckPerms | `plugins/LuckPerms/config.yml` |
| Vault | `plugins/Vault/config.yml` |
| WorldEdit | `plugins/WorldEdit/config.yml` |
| WorldGuard | `plugins/WorldGuard/config.yml` |
| CoreProtect | `plugins/CoreProtect/config.yml` |
| Dynmap | `plugins/dynmap/configuration.txt` |
| Multiverse-Core | `plugins/Multiverse-Core/config.yml` |
---
## World Directory Structure
> **ZLH Note:** World data is excluded from all automation. Never touched by the agent, mod deployment safety, or file browser delete operations.
### Vanilla / Forge / Fabric Layout
```
world/
level.dat ← World metadata, seed, game rules
level.dat_old ← Backup of level.dat
session.lock ← Prevents concurrent access
playerdata/ ← Per-player .dat files
stats/ ← Player statistics JSON
advancements/ ← Player advancement data
data/ ← Scoreboard, structure data, maps
region/ ← Overworld chunk data (.mca files)
entities/ ← Entity chunk data (1.17+)
poi/ ← Point-of-interest data
world_nether/
DIM-1/
region/
world_the_end/
DIM1/
region/
```
### Paper Layout (different from Vanilla)
```
world/
region/ ← Overworld chunks
world/DIM-1/
region/ ← Nether chunks (stored inside world/)
world/DIM1/
region/ ← End chunks (stored inside world/)
```
> This layout difference is why migrating between Paper and Vanilla requires manual steps.
---
## Logs & Diagnostics
| File/Dir | Contents | User Action |
|----------|----------|-------------|
| `logs/latest.log` | Current session log | Download for support |
| `logs/<date>-N.log.gz` | Archived logs | Download for debugging |
| `crash-reports/<timestamp>.txt` | JVM crash report | Download when server won't start |
| `debug/` | Verbose debug output (Paper) | Rarely needed |
| `lifecycle.log` | ZLH agent lifecycle/probe log | ZLH-specific diagnostic |
---
## File Types Summary (for browser rendering decisions)
| Extension | Editable in Browser | Notes |
|-----------|--------------------|----|
| `.properties` | ✅ Yes | `server.properties` |
| `.yml` / `.yaml` | ✅ Yes | Plugin configs |
| `.toml` | ✅ Yes | NeoForge/Forge mod configs |
| `.json` | ✅ Yes | Ops, whitelist, some mod configs |
| `.cfg` | ✅ Yes | Older Forge configs |
| `.txt` | ✅ Yes | EULA, some configs |
| `.js` | ✅ Yes | KubeJS scripts |
| `.log` | ✅ Read-only | Logs |
| `.jar` | ❌ No — download only | Mods, plugins |
| `.gz` | ❌ No — download only | Archived logs |
| `.mca` | ❌ No — download only | Chunk data |
| `.dat` | ❌ No — download only | Binary world data |
| `.zip` | ❌ No — download only | Resource/datapacks |
---
## Priority Surfaces for File Browser (by user need)
**High — most users will need these:**
1. `server.properties` — edit directly
2. `mods/` — view, enable/disable, delete, upload
3. `mods-removed/` — restore deleted mods
4. `config/` — edit mod configs
5. `logs/latest.log` — download for support
6. `crash-reports/` — download when broken
**Medium — modpack/advanced users:**
7. `plugins/` (plugin servers)
8. `plugins/<Name>/config.yml`
9. `bukkit.yml`, `spigot.yml`, `paper-global.yml`
10. `kubejs/`, `scripts/` (heavily modded servers)
**Low — rarely needed:**
11. `ops.json`, `whitelist.json`, `banned-*.json`
12. `defaultconfigs/`
13. `resourcepacks/`, `datapacks/`
---
## ZLH-Specific Paths
| Path | Purpose |
|------|---------|
| `mods/curated/` | Modrinth-installed mods |
| `mods/dev/` | Dev-container promoted mods |
| `mods-removed/` | Soft-deleted mods (restore via file browser) |
| `.zlh_snapshots/` | Deployment safety snapshots — do not expose in browser |
| `lifecycle.log` | Agent probe/lifecycle diagnostics |