Skip to main content

Paper Configuration


Paper configuration files

info

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.
plugins
Description:
You can place your plugin JARs here.
<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.

paper-world-defaults.yml
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
world_nether/paper-world.yml
entities:
spawning:
spawn-limits:
monster: 90
resource_world/paper-world.yml
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 Keyworldworld_netherworld_the_endresource_world
entities.spawning.spawn-limits.ambient15151515
entities.spawning.spawn-limits.axolotls5558
entities.spawning.spawn-limits.creature10101015
entities.spawning.spawn-limits.monster7090702
entities.spawning.spawn-limits.underground_water_creature5555
entities.spawning.spawn-limits.water_ambient20202020
entities.spawning.spawn-limits.water_creature5555
spawn.keep-spawn-loadedtruetruetruefalse

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.