Kaf Modding Docs

Configuration

Configure pack resolution, Java, memory, synchronization, and runtime behavior.

Pastel keeps each server's settings in server.pastel. A generated file starts with the settings most server owners need:

pack = "modrinth:aristea"
memory = "4G"
sync_on_run = true
auto_restart = true
With server.pastel in /srv/minecraft, pack packs/example.mrpack resolves inside its packs directory and server_dir server resolves inside its server directory.With server.pastel in /srv/minecraft, pack packs/example.mrpack resolves inside its packs directory and server_dir server resolves inside its server directory.
Relative pack and server paths start at the directory containing server.pastel.

Settings

KeyDefaultPurpose
packRequiredModrinth pin, .mrpack URL or path, unpacked pack directory, or Maven coordinate.
memory"4G"Maximum Java heap, with or without the -Xmx prefix.
sync_on_runtrueRefresh pack files before starting the server.
auto_restarttrueRestart a ready background server after an unexpected crash.
repositoriesNoneOrdered Maven repository bases for resolving coordinates.
javaAutomaticJava executable override.
server_dirConfiguration directoryServer directory relative to server.pastel, or an absolute path.
extra_java_argsNoneAdditional arguments placed before the Minecraft launch target.
noguitrueRequest launch without the Minecraft server GUI; see the limitation below.

Relative pack paths and server_dir are resolved from the directory containing server.pastel. Use an absolute path for java: it is passed to the process launcher without being resolved relative to the configuration.

Server commands search the current directory and its parents for server.pastel, or accept an explicit path after the command:

./pastel status -config /srv/minecraft/server.pastel

install instead creates a configuration in the current directory or its -dir target. When loading an older configuration without auto_restart, Pastel writes auto_restart = true into the file.

In Pastel 0.1.7, nogui = false does not remove nogui from the normal loader-generated launch command. Keep the default for a dedicated server.

A versionless Modrinth reference, such as the example above, tracks the latest release whenever the pack is resolved. Use modrinth:aristea:0.1.4 to pin an exact version and choose future changes with pastel update.

Maven packs

Maven coordinates require one or more explicit repositories:

pack = "com.example.modpacks:example-pack:1.2.0"
repositories = [
  "https://maven.example.com",
]
memory = "6G"

Repositories are tried in order. The first repository containing the artifact wins. Pastel does not provide a default Maven repository.

Choose Java explicitly

Leave java unset to let Pastel select a suitable system runtime or install a managed Temurin JRE. To prefer an existing executable:

java = "/opt/jdk-25/bin/java"
extra_java_args = ["-XX:+UseG1GC"]

If the configured executable is missing, unusable, or too old, Pastel falls back to a managed runtime. The override is a preference, not a strict requirement. Forge and NeoForge installer runs select Java separately and do not use the java setting.

Pastel uses these Java version floors:

Minecraft versionMinimum Java
26.1 and newerJava 25
1.20.5 through 1.21.xJava 21
1.17 through 1.20.4Java 17
Older releasesJava 8

An empty or unrecognized Minecraft version normally falls back to Java 25. These are Pastel's selection rules; individual packs can have stricter requirements. For Forge and NeoForge, also check user_jvm_args.txt for conflicting memory or JVM options.

Preserve local pack changes

Set sync_on_run = false while debugging a local mod or configuration change:

sync_on_run = false

pastel run will keep current pack files in place, although it still resolves the pack and prepares its launcher. This can require network access. Run pastel refresh explicitly when you are ready to restore the declared pack state.

Use pastel refresh -no-prune for a one-time refresh that leaves additional jars under mods/ and skips stale root-launcher pruning. This does not protect files that the pack directly replaces. run and update also accept -no-prune; repeat it on later commands if you want to keep the extra jars.

On this page