Paper Configuration
Paper configuration files
Many of our files have been comprehensively documented. If this is the case, they will offer a link to their page. If this is not the case, they offer a brief explanation to what they are.
logsⓘDescription:
This folder contains all the logs for the server. It compresses old logs into .gz files, but holds the most recent log as a latest.log file.<world>└─paper-world.ymlⓘDescription:
Every world folder will have this file. The values here only apply to this world.banned-ips.jsonⓘDescription:
This file stores all the banned IP addresses on the server.banned-players.jsonⓘDescription:
This file stores all the banned player information for the server.eula.txtⓘDescription:
This file is in place to allow you to accept the Minecraft EULA. This is required to start the server.help.ymlⓘDescription:
This file provides you with a wide variety of ways to configure the /help system in your Paper Server.ops.jsonⓘDescription:
This file stores a list of all players with operator status.permissions.ymlⓘDescription:
The permissions.yml file allows creating of permission nodes so that server admins can easily distribute permissions.usercache.jsonⓘDescription:
This file acts as a cache of user information that has been requested from Mojang's servers when they join the server or their texture is used as a Head.whitelist.jsonⓘDescription:
This is is a server configuration file that stores the usernames of players who have been whitelisted on a server.
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 disable spawn.keep-spawn-loaded
for a world named resource
, you would edit
paper-world.yml
within the resource
folder like so:
_version: 28
spawn:
keep-spawn-loaded: false
Nothing 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 keep-spawn-loaded
in two worlds.
entities:
spawning:
spawn-limits:
ambient: 70
axolotls: 10
creature: 15
monster: 5
underground_water_creature: 5
water_ambient: 5
water_creature: 20
spawn:
keep-spawn-loaded: true
entities:
spawning:
spawn-limits:
monster: 90
entities:
spawning:
spawn-limits:
axolotls: 8
creature: 15
monster: 2
spawn:
keep-spawn-loaded: false
This 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 |
---|---|---|---|---|
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 |
spawn.keep-spawn-loaded | true | true | true | false |
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, keep-spawn-loaded
was
only disabled in resource_world/paper-world.yml
because in config/paper-world-defaults.yml
,
keep-spawn-loaded
is set to true
.