Foton English PRÉ-ALPHA
RÉGLAGES

Configuration

Modifiez les fichiers dans config/, puis redémarrez Foton.

config.toml

Serveur, réseau, journalisation et performances.

worlds.toml

Mondes, graines et difficulté.

groups.toml

Groupes et permissions.

Cette référence est générée depuis les schémas validés par le serveur. Les descriptions techniques restent en anglais pour ne pas diverger de ces schémas.

config.toml

Configuration schema for Foton Minecraft server.

[server]

Server configuration

CléTypeDéfautLimitesRôle
server_port requisinteger255651–65000Server port
max_players requisinteger201–2147483647Maximum number of players allowed on the server
allow_extended_view_distancebooleanfalseAllow view_distance above vanilla's 32-chunk cap, up to Foton's 128-chunk cap
view_distance requisinteger101–128Maximum view distance in chunks. Normally 1-32; 1-128 when allow_extended_view_distance is true.
simulation_distance requisinteger101–128Maximum simulation distance in chunks
max_chained_neighbor_updatesinteger1000000Maximum queued neighbor-update tasks in one chained run. Negative values disable the limit.
online_mode requisbooleantrueWhether to use Mojang's authentication service
auth_serverstringuriOptional authentication endpoint for online-mode hasJoined checks. Omit to use Mojang's session server.
allow_insecure_auth_serverbooleanfalseAllow a non-loopback HTTP authentication endpoint. HTTPS remains the default.
profile_serverstringuriOptional endpoint for online-mode player name-to-profile lookups. Omit to use Mojang's profile service.
services_serverstringuriOptional endpoint for Mojang-compatible service public keys. Omit to use Mojang's services endpoint.
encryption requisbooleantrueWhether to enable encryption for client-server communication. Required in online mode.
allow_flightbooleanfalseWhether the server allows unauthorized client flight
tab_list_statsbooleantrueWhether the server shows its TPS and MSPT statistics in the player list header and footer. A plugin's own header or footer for a player always takes precedence
motd requisstring"A Foton Server"Message of the day displayed in server lists
use_favicon requisbooleantrueWhether to use a custom favicon for the server
favicon requisstring"config/favicon.png"Path to the favicon file (PNG format, 64x64 pixels)
enforce_secure_chatbooleanfalseWhether to enforce secure chat
chat_spam_threshold_secondsinteger10Vanilla chat spam threshold window in seconds; values <= 0 disable throttling
command_spam_threshold_secondsinteger10Vanilla command spam threshold window in seconds; values <= 0 disable throttling

[server.compression]

Compression settings

CléTypeDéfautLimitesRôle
threshold requisinteger256256–2147483647Compression threshold in bytes
level requisinteger41–9Compression level (1 = fastest, 9 = best compression)

[server.server_links]

Server links configuration

CléTypeDéfautLimitesRôle
enablebooleanfalseEnable the server links feature
linksarray of table[]List of server links to display in the server menu

[server.rcon]

Remote administration over the Source Rcon protocol

CléTypeDéfautLimitesRôle
enablebooleanfalseWhether the rcon port is opened at all
bindstring"127.0.0.1"IP address rcon listens on. Keep loopback unless remote administration is required
portinteger255751–65535Port rcon listens on
max_connectionsinteger81–65535Maximum simultaneous rcon connections
passwordstring""Password every rcon client must send before it may run a command

[server.bedrock]

Letting Bedrock Edition players in, through a Geyser this server runs

CléTypeDéfautLimitesRôle
enablebooleanfalseWhether Geyser is started and the Bedrock port opened at all
portinteger00–65535UDP port Bedrock clients connect to; 0 shares server_port. Trade-off: Bedrock's Add Server dialog pre-fills 19132, so sharing the Java port means typing the port in by hand -- set this to 19132 explicitly for that automatic experience instead
motdstring""What Bedrock clients see in the server list; empty reuses the server MOTD
username_prefixstring"."Prepended to a Bedrock player's gamertag so it cannot collide with a Java player's name
trusted_proxiesarray of string["127.0.0.1", "::1"]Addresses a Floodgate identity handshake is accepted from
java_homestring""A JDK or JRE for Geyser; empty means JAVA_HOME, then java on the path
jar_pathstring""An operator-supplied Geyser jar; empty means fetch the pinned build

[server.threads]

Optional worker counts for server thread pools. 0 or omitted uses each pool's automatic default.

CléTypeDéfautLimitesRôle
main_runtimeinteger0≥ 0Worker threads for the primary Tokio runtime
chunk_runtimeinteger0≥ 0Worker threads for the chunk Tokio runtime
packet_workersinteger0≥ 0Persistent workers for inter-tick gameplay packet processing
chunk_generationinteger0≥ 0Worker threads for the Rayon chunk generation pool
chunk_encodinginteger0≥ 0Worker threads for the Rayon chunk encoding pool

[server.bug_reports]

Where player-filed bug reports are sent, on top of the local file

CléTypeDéfautLimitesRôle
webhook_urlstringEndpoint each filed report is posted to; unset keeps reports local
webhook_tokenstringOptional bearer token sent with each post

[server.resource_pack]

The resource pack every client is asked to load while it joins. Replaces the resource-pack* and require-resource-pack entries of vanilla's server.properties

CléTypeDéfautLimitesRôle
urlstring""Where clients download the pack from (resource-pack). Empty sends no pack
idstring""The pack's UUID (resource-pack-id). Empty derives one from the URL, as vanilla does
sha1string""The pack file's SHA-1 in hex, at most 40 characters (resource-pack-sha1). Clients cache the pack by it; without one they only refresh it when the URL changes
promptstring""Text on the confirmation screen, as vanilla text component JSON (resource-pack-prompt)
requiredbooleanfalseWhether a client that declines the pack is disconnected (require-resource-pack)

[log]

Logging configuration

CléTypeDéfautLimitesRôle
log_pathstring"./.logs"Path where store the log files and history
log_levelerror | warn | info | debug | trace"info"The level of information the logger will show
timenone | date | uptime"uptime"Time format: none, date (HH:MM:SS:mmm), or uptime (seconds since start)
module_pathbooleanfalseWhether the module_path of the log should be displayed
extrabooleanfalseWhether the extra data of the log should be displayed
log_filebooleantrueWhether the log should be written into a file
rotation_timenone | hourly | daily | weekly | monthly"daily"Time between log file rotations
max_historyinteger50≥ 1Amount of console commands saved

worlds.toml

World and domain configuration schema for Foton.

CléTypeDéfautLimitesRôle
save_pathstring"saves"Root directory for saves
seedstring""Root seed default; empty means random
default_gamemodegamemode"survival"
difficultydifficulty"normal"
storagestorage
player_storageplayer_storage
domains requistableDomain declarations keyed by domain name

Structures

storage

CléTypeDéfautLimitesRôle
type requisfoton:disk | foton:ram
configtableStorage-specific config. foton:disk supports optional relative path; foton:ram accepts no keys.

player_storage

CléTypeDéfautLimitesRôle
type requisfoton:file

domain

CléTypeDéfautLimitesRôle
defaultbooleanfalse
seedstring
default_gamemodegamemode"survival"
difficultydifficulty"normal"
storagestorage
worlds requisarray of world≥ 1 item(s)

world

CléTypeDéfautLimitesRôle
name requisworld_name
generator requisidentifier
defaultbooleanfalse
seedstring
default_gamemodegamemode"survival"
difficultydifficulty"normal"
storagestorage
nether_portal_targetworld_name
end_portal_targetworld_name
configtableGenerator-specific config validated by the selected generator

Types de valeur

NomOptionsRôle
identifierstring ^[a-z0-9_.-]+:[a-z0-9_.-]+(/[a-z0-9_.-]+)*$
world_namestring ^[a-z0-9_.-]+$
gamemodesurvival | creative | adventure | spectator
difficultypeaceful | easy | normal | hard

groups.toml

Permission group configuration schema for Foton.

CléTypeDéfautLimitesRôle
default_groups requisarray of group_name["default"]uniqueGroups applied to every player
groups requistablePermission groups keyed by group name

Structures

group

CléTypeDéfautLimitesRôle
priorityinteger0Conflict priority for equally specific group rules. Higher wins.
inheritsarray of group_name[]uniqueParent groups inherited by this group
allowarray of permission_rule_expression[]uniquePermission expressions explicitly allowed by this group
denyarray of permission_rule_expression[]uniquePermission expressions explicitly denied by this group
metadataarray of metadata_rule[]Ordered typed metadata rules

metadata_rule

CléTypeDéfautLimitesRôle
key requispermission_metadata_expressionNamespaced metadata key with an optional context selector, such as plugin:max_homes{domain=survival}.
value requispermission_metadata_valueTyped permission metadata value

Types de valeur

NomOptionsRôle
group_namestring ^[a-z0-9_-]+$
permission_rule_expressionstring ^(\*|[a-z0-9_-]+(\.[a-z0-9_-]+)*(\.\*)?)(\{([a-z0-9_-]+|[a-z0-9_-]+(\.[a-z0-9_-]+)*:[a-z0-9_-]+([./][a-z0-9_-]+)*)=[^\s{},=]+(,([a-z0-9_-]+|[a-z0-9_-]+(\.[a-z0-9_-]+)*:[a-z0-9_-]+([./][a-z0-9_-]+)*)=[^\s{},=]+)*\})?$Permission key with an optional context selector, such as foton.fly{domain=lobby}.
permission_metadata_expressionstring ^[a-z0-9_-]+(\.[a-z0-9_-]+)*:[a-z0-9_-]+([./][a-z0-9_-]+)*(\{([a-z0-9_-]+|[a-z0-9_-]+(\.[a-z0-9_-]+)*:[a-z0-9_-]+([./][a-z0-9_-]+)*)=[^\s{},=]+(,([a-z0-9_-]+|[a-z0-9_-]+(\.[a-z0-9_-]+)*:[a-z0-9_-]+([./][a-z0-9_-]+)*)=[^\s{},=]+)*\})?$Namespaced metadata key with an optional context selector, such as plugin:max_homes{domain=survival}.
permission_metadata_valueboolean or integer or stringTyped permission metadata value