Configuration
Directorylogs all logs for the server
- latest.log the most recent log
- … old logs are compressed into .gz files
Directoryconfig
Directory<world>
- paper-world.yml stores configuration values that apply only to this world
- banned-ips.json stores IP addresses banned from the server
- banned-players.json stores information about players banned from the server
- bukkit.yml
- commands.yml
- eula.txt stores the EULA consent status
- help.yml stores configuration for the
/helpcommand - ops.json stores information about players with operator status
- permissions.yml stores permission configuration
- server.properties
- spigot.yml
- usercache.json caches players’ Mojang API data, e.g. their head textures
- whitelist.json stores whitelist configuration
Per-world configuration
One of the most powerful yet least understood features of the Paper configuration is setting
configuration options per world. While you can not override every config option per world,
everything stored within paper-world-defaults.yml can be.
Default values
Paper sets no per-world overrides out of the box, storing all default values in
config/paper-world-defaults.yml. Everything in this file can be overridden per world but isn’t by
default. Changing something in paper-world-defaults.yml will change the value for all worlds where
you have not manually overridden it.
Per-world values
To set a value for a specific world, edit paper-world.yml within the world folder. For example, if
you wanted to enable lootables.auto-replenish for a world named resource, you would edit
paper-world.yml within the resource folder like so:
_version: 28
# highlight-startlootables: auto-replenish: true# highlight-endNothing but _version is set in paper-world.yml configuration files by default. In order to
override the default for an option, you must manually add it by copying from
paper-world-defaults.yml.
Inheritance
All configuration not explicitly defined for a world is inherited from paper-world-defaults.yml.
This means that there is no need to repeat yourself between the paper-world-defaults.yml and each
individual paper-world.yml. You do not need to and should not copy the entire
paper-world-default.yml file into each paper-world.yml file you want to modify. Only copy the
exact value you want to change.
For a more complex real-world example: setting both different spawn-limits and auto-replenish
in two worlds.
lootables: auto-replenish: trueentities: spawning: spawn-limits: ambient: 70 axolotls: 10 creature: 15 monster: 5 underground_water_creature: 5 water_ambient: 5 water_creature: 20entities: spawning: spawn-limits: monster: 90lootables: auto-replenish: falseentities: spawning: spawn-limits: axolotls: 8 creature: 15 monster: 2This example demonstrates the concept of inheritance. For each world, this is the effective configuration which will be applied:
| Configuration Key | world | world_nether | world_the_end | resource_world |
|---|---|---|---|---|
lootables.auto-replenish | true | true | true | false |
entities.spawning.spawn-limits.ambient | 15 | 15 | 15 | 15 |
entities.spawning.spawn-limits.axolotls | 5 | 5 | 5 | 8 |
entities.spawning.spawn-limits.creature | 10 | 10 | 10 | 15 |
entities.spawning.spawn-limits.monster | 70 | 90 | 70 | 2 |
entities.spawning.spawn-limits.underground_water_creature | 5 | 5 | 5 | 5 |
entities.spawning.spawn-limits.water_ambient | 20 | 20 | 20 | 20 |
entities.spawning.spawn-limits.water_creature | 5 | 5 | 5 | 5 |
Notice that world_the_end/paper-world.yml was never modified. Because of this, it inherits all the
configuration options from config/paper-world-defaults.yml. Additionally, auto-replenish was
only disabled in resource_world/paper-world.yml because in config/paper-world-defaults.yml,
auto-replenish is set to true.