8.0 KiB
Minecraft Server — Known Files, Directories & Change Locations
Purpose: Reference for file browser implementation. Defines what files users commonly access, edit, or upload across all supported Minecraft server variants.
Universal (All Variants)
These exist regardless of loader or server software.
| Path | Type | Notes |
|---|---|---|
server.properties |
Text / Key-Value | Most commonly edited file on any server. Gamemode, difficulty, max players, MOTD, ports, whitelist, PvP, view distance, seed. Requires restart to apply. |
server.jar |
Binary | The server executable. Never directly edited by users but occasionally replaced during upgrades. |
eula.txt |
Text | Must be accepted on first run. |
logs/latest.log |
Text | Current session log. Frequently downloaded for debugging. Read-only in most cases. |
logs/ |
Directory | Archived logs (.log.gz). Download only. |
world/ |
Directory | Overworld data. Never touched by file browser — excluded from safety scope. |
world_nether/ |
Directory | Nether dimension (Vanilla layout). Excluded. |
world_the_end/ |
Directory | End dimension (Vanilla layout). Excluded. |
banned-players.json |
JSON | Banned player list. Occasionally edited directly. |
banned-ips.json |
JSON | Banned IP list. Occasionally edited directly. |
whitelist.json |
JSON | Whitelist entries. Edited when allow-list=true. |
ops.json |
JSON | Operator list. Edited to grant/revoke op. |
usercache.json |
JSON | UUID to username cache. Read-only in practice. |
Vanilla
Minimal file surface. No mods, no plugins.
server.properties
eula.txt
server.jar
logs/
world/
world_nether/
world_the_end/
No mods/ or plugins/ directory. Config changes are limited to server.properties and the JSON admin files above.
Paper / Spigot / Purpur (Plugin-based)
Additional Config Files
| Path | Type | Notes |
|---|---|---|
bukkit.yml |
YAML | Core Bukkit settings (spawn limits, chunk GC, aliases). |
spigot.yml |
YAML | Spigot-specific tuning (mob spawn ranges, tick rates, bungeecord). |
config/paper-global.yml |
YAML | Paper global settings (added ~1.19+). |
config/paper-world-defaults.yml |
YAML | Paper world-level defaults. |
config/paper-world/ |
Directory | Per-world Paper overrides. |
purpur.yml |
YAML | Purpur-specific options (only on Purpur). |
help.yml |
YAML | Custom help command entries. |
commands.yml |
YAML | Command aliases and overrides. |
permissions.yml |
YAML | Basic permission definitions (rarely used with permission plugins). |
World Storage Layout (Paper differs from Vanilla)
Paper stores nether and end inside the main world folder:
world/
region/ ← Overworld chunks
DIM-1/ ← Nether
DIM1/ ← End
playerdata/
stats/
advancements/
data/
Vanilla stores them as siblings:
world/
world_nether/
world_the_end/
This matters for file browser display — do not assume a flat sibling layout.
Plugins Directory
plugins/
PluginName.jar ← Plugin binary
PluginName/
config.yml ← Primary plugin config
messages.yml ← Usually messages/lang
data.yml ← Persistent data (do not edit while running)
Common plugin configs users edit:
plugins/EssentialsX/config.ymlplugins/LuckPerms/config.ymlplugins/WorldGuard/config.ymlplugins/Vault/config.yml
Plugin configs are almost always .yml. Restart or /reload required to apply.
Forge / NeoForge (Mod-based)
Mods Directory
mods/
modname-1.0.0.jar ← Active mod
modname-1.0.0.jar.disabled ← Disabled mod (ZLH convention)
mods-removed/
modname-1.0.0.jar ← Soft deleted mod (ZLH convention)
Config Directory
Most mod configs live in config/. Two common formats:
| Format | Extension | Notes |
|---|---|---|
| TOML | .toml |
Standard for modern Forge/NeoForge mods |
| JSON | .json |
Less common, some older mods |
| Properties | .properties |
Rare, legacy mods |
config/
modname-common.toml ← Shared client+server config
modname-server.toml ← Server-only config
modname/
config.toml ← Some mods use a subfolder
Some mods also create a top-level directory:
modname/
config.toml
Additional Forge/NeoForge Files
| Path | Type | Notes |
|---|---|---|
user_jvm_args.txt |
Text | JVM arguments for the server. Edit with care. |
libraries/ |
Directory | Forge/NeoForge runtime libs. Never user-edited. |
kubejs/ |
Directory | KubeJS script mod directory. Heavily edited on modpack servers. |
kubejs/server_scripts/ |
Directory | Server-side KubeJS scripts (.js). Very commonly edited. |
kubejs/startup_scripts/ |
Directory | Startup scripts. |
defaultconfigs/ |
Directory | Default configs applied to new worlds. |
global_packs/ |
Directory | Global data/resource packs. |
packs/ |
Directory | Per-world data and resource packs. |
Fabric / Quilt (Mod-based)
Same mods/ and config/ structure as Forge/NeoForge. Config formats vary by mod but .json is more common in the Fabric ecosystem than .toml.
mods/
fabric-api-*.jar
modname.jar
config/
modname.json
modname/
config.json
Fabric-specific Files
| Path | Type | Notes |
|---|---|---|
fabric-server-launch.jar |
Binary | Fabric launch wrapper. Not user-edited. |
fabric_loader_libraries/ |
Directory | Internal. Not user-edited. |
Frequently Edited — Priority List for File Browser
These are the files users will navigate to most often, across all variants. The file browser should make these discoverable:
Tier 1 — Edited constantly
server.propertiesconfig/*.toml(Forge/NeoForge)plugins/PluginName/config.yml(Paper/Spigot)kubejs/server_scripts/(modpack servers)mods/(install, enable, disable, remove)
Tier 2 — Edited occasionally
bukkit.ymlspigot.ymlconfig/paper-global.ymlconfig/paper-world-defaults.ymlops.jsonwhitelist.jsonbanned-players.jsonpurpur.yml
Tier 3 — Downloaded, rarely edited
logs/latest.loglogs/*.log.gzusercache.json
Never expose in file browser
world/and dimension subdirectories (backup system handles this)libraries/(Forge/NeoForge runtime, read-only)fabric_loader_libraries/- Any
.lockfiles
Config File Formats by Loader
| Loader | Primary Format | Secondary |
|---|---|---|
| Vanilla | .properties |
.json |
| Paper / Spigot / Purpur | .yml |
.json |
| Forge | .toml |
.json, .properties |
| NeoForge | .toml |
.json |
| Fabric | .json |
.toml |
| Quilt | .json |
.toml |
Implication for in-browser editor: syntax highlighting or at minimum format-aware display should handle .toml, .yml, .json, and .properties.
ZLH-Specific Paths
These are ZLH conventions, not Minecraft defaults.
| Path | Notes |
|---|---|
mods/ |
Active mods (.jar and .jar.disabled) |
mods-removed/ |
Soft-deleted mods. Restore via file browser. |
.zlh_snapshots/ |
Deployment safety snapshots. Hidden, not shown in file browser. |
Notes for Implementation
- Paper world layout differs from Vanilla. Do not assume nether/end are sibling directories. Detect by loader type from agent metadata.
- Plugin configs are always inside
plugins/PluginName/— the plugin.jarand its config folder share the same name. - Mod configs can be in
config/or a top-level named directory — no single rule covers all mods. .tomlfiles need TOML-aware editing — malformed TOML will break mod config loading silently or with cryptic errors.- KubeJS is worth treating as a first-class surface. Modpack servers using KubeJS will have users editing scripts frequently.
server.propertiesshould have a structured editor (key-value form), not just raw text, for non-technical users.