From 091c33d073721818aef40aa827b70fdbb2ceacf4 Mon Sep 17 00:00:00 2001 From: Alexander Medvedev Date: Sat, 5 Sep 2026 09:40:41 +0200 Subject: [PATCH] update config --- docs/.vitepress/en.ts | 13 +++++-- docs/de/config/basic.md | 59 ++++++++++++++++++++++++++---- docs/en/config/authentication.md | 42 +++++++++++++++------- docs/en/config/basic.md | 60 +++++++++++++++++++++++++++---- docs/en/config/bedrock.md | 50 ++++++++++++++++++++++++++ docs/en/config/chat.md | 39 ++++++++++++++++++++ docs/en/config/commands.md | 30 +++++++++++++--- docs/en/config/compression.md | 4 +-- docs/en/config/lan-broadcast.md | 6 +++- docs/en/config/logging.md | 20 +++++++---- docs/en/config/packet-limiter.md | 30 ++++++++++++++++ docs/en/config/player-data.md | 41 +++++++++++++++++++++ docs/en/config/plugins.md | 59 ++++++++++++++++++++++++++++++ docs/en/config/proxy.md | 8 +++-- docs/en/config/query.md | 6 ++-- docs/en/config/resource-pack.md | 21 +++++++++-- docs/en/config/server-links.md | 50 ++++++++++++++++++++++++++ docs/en/config/world.md | 41 +++++++++++++++++++++ docs/nl/config/basic.md | 59 ++++++++++++++++++++++++++---- docs/pt/config/basic.md | 59 ++++++++++++++++++++++++++---- docs/tr_TR/config/basic.md | 61 ++++++++++++++++++++++++++++---- docs/zh_cn/config/basic.md | 59 ++++++++++++++++++++++++++---- 22 files changed, 744 insertions(+), 73 deletions(-) create mode 100644 docs/en/config/bedrock.md create mode 100644 docs/en/config/chat.md create mode 100644 docs/en/config/packet-limiter.md create mode 100644 docs/en/config/player-data.md create mode 100644 docs/en/config/plugins.md create mode 100644 docs/en/config/server-links.md create mode 100644 docs/en/config/world.md diff --git a/docs/.vitepress/en.ts b/docs/.vitepress/en.ts index 99aadbf..8bd0359 100644 --- a/docs/.vitepress/en.ts +++ b/docs/.vitepress/en.ts @@ -35,15 +35,22 @@ export const en = defineConfig({ items: [ { text: "Introduction", link: "/config/introduction" }, { text: "Basic", link: "/config/basic" }, + { text: "World", link: "/config/world" }, + { text: "Chat & Anti-Spam", link: "/config/chat" }, + { text: "Commands", link: "/config/commands" }, + { text: "Bedrock & NetherNet", link: "/config/bedrock" }, { text: "Proxy", link: "/config/proxy" }, { text: "Authentication", link: "/config/authentication" }, + { text: "Packet Limiter", link: "/config/packet-limiter" }, { text: "Compression", link: "/config/compression" }, { text: "Resource Pack", link: "/config/resource-pack" }, - { text: "Commands", link: "/config/commands" }, - { text: "RCON", link: "/config/rcon" }, - { text: "PVP", link: "/config/pvp" }, + { text: "Plugins", link: "/config/plugins" }, + { text: "Server Links", link: "/config/server-links" }, + { text: "Player Data", link: "/config/player-data" }, { text: "Logging", link: "/config/logging" }, { text: "Query", link: "/config/query" }, + { text: "RCON", link: "/config/rcon" }, + { text: "PVP", link: "/config/pvp" }, { text: "LAN Broadcast", link: "/config/lan-broadcast" }, ], }, diff --git a/docs/de/config/basic.md b/docs/de/config/basic.md index b2d82ee..3e4708c 100644 --- a/docs/de/config/basic.md +++ b/docs/de/config/basic.md @@ -9,7 +9,7 @@ Die Adresse, an die der Server gebunden wird. :::code-group ```toml -seed = "1785537519969227430" +seed = "1790155153199293024" default_difficulty = "Normal" op_permission_level = 4 allow_nether = true @@ -27,9 +27,13 @@ enforce_whitelist = false [logging] enabled = true -threads = true +level = "info" +threads = false +thread_ids = false +target = false color = true timestamp = true +timestamp_format = "[hour]:[minute]:[second]" file = "latest.log" [resource_pack.java] @@ -46,7 +50,7 @@ packs = [] [world] lighting = "default" -autosave_ticks = 0 +autosave_ticks = 6000 [world.chunk] type = "anvil" @@ -57,7 +61,7 @@ algorithm = "LZ4" level = 6 [networking.query] -enabled = true +enabled = false address = "0.0.0.0:25565" [networking.rcon] @@ -81,6 +85,7 @@ secret = "" [networking.proxy.bungeecord] enabled = false +secret = "" [networking.lan_broadcast] enabled = false @@ -93,6 +98,7 @@ online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 +keep_alive_time = 15 motd = "A blazingly fast Pumpkin server!" [networking.java.compression] @@ -102,6 +108,9 @@ level = 4 [networking.java.authentication] enabled = true +fallbacks = [] +profile_by_name_fallbacks = [] +profile_by_uuid_fallbacks = [] connect_timeout = 5000 read_timeout = 5000 prevent_proxy_connections = false @@ -120,15 +129,22 @@ skin = true cape = true elytra = true +[networking.java.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [networking.bedrock] enabled = true -address = "0.0.0.0:19132" -encryption = true online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 motd = "A blazingly fast Pumpkin server!" +username_prefix = "" +replace_username_spaces = true +chunk_caching = true [networking.bedrock.compression] enabled = true @@ -140,6 +156,18 @@ enabled = true connect_timeout = 5000 read_timeout = 5000 +[networking.bedrock.nethernet] +enabled = true +address = "0.0.0.0:19132" +identity_key = "nethernet-key.der" +stun_servers = [] + +[networking.bedrock.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [commands] use_console = true use_tty = true @@ -147,9 +175,18 @@ log_console = true broadcast_console_to_ops = true default_op_level = 0 +[commands.overrides] + [chat] format = "<{DISPLAYNAME}> {MESSAGE}" +[chat.anti_spam] +enabled = true +spam_threshold = 200 +message_cost = 20 +decay_per_tick = 1 +ops_bypass = true + [pvp] enabled = true hurt_animation = true @@ -182,7 +219,17 @@ april_fools = true send_recipes = true [plugins] +enabled = true +hot_reload = false +ask_permission_confirmation = true +allow_unsigned = true +allowed_permissions = [] blocked_permissions = [] +inherit_env = false +loopback_only = false +verify_signatures = true + +[plugins.overrides] [advancement] save_advancements = true diff --git a/docs/en/config/authentication.md b/docs/en/config/authentication.md index aabb43f..a37c7d7 100644 --- a/docs/en/config/authentication.md +++ b/docs/en/config/authentication.md @@ -9,6 +9,9 @@ Pumpkin verifies accounts with Mojang's session servers to ensure players use le ```toml [pumpkin.toml] [networking.java.authentication] enabled = true +fallbacks = [] +profile_by_name_fallbacks = [] +profile_by_uuid_fallbacks = [] connect_timeout = 5000 read_timeout = 5000 prevent_proxy_connections = false @@ -32,24 +35,32 @@ elytra = true ### Configuration Options -- **`enabled`**: Enables online authentication for Java clients. -- **`connect_timeout`**: Connection timeout in milliseconds when contacting auth servers. -- **`read_timeout`**: Read timeout in milliseconds when contacting auth servers. -- **`prevent_proxy_connections`**: Block proxy/VPN connections during authentication. +- **`enabled`**: Enables online authentication for Java clients (default: `true`). +- **`url`**: (Optional) Custom authentication URL to verify join requests (e.g., custom auth servers like Drasl). Supports `{username}` and `{server_hash}` parameters. +- **`fallbacks`**: List of fallback authentication URLs contacted if the primary/official session server is unreachable. +- **`profile_by_name_url`**: (Optional) Custom URL template to fetch player profiles by username (`{username}`). +- **`profile_by_name_fallbacks`**: Fallback URLs for looking up player profiles by username. +- **`profile_by_uuid_url`**: (Optional) Custom URL template to fetch player profiles by UUID (`{uuid}`). +- **`profile_by_uuid_fallbacks`**: Fallback URLs for looking up player profiles by UUID. +- **`connect_timeout`**: Connection timeout in milliseconds when contacting authentication servers (default: `5000`). +- **`read_timeout`**: Read timeout in milliseconds when contacting authentication servers (default: `5000`). +- **`prevent_proxy_connections`**: Whether to block connections coming from proxies or VPNs during Mojang authentication (default: `false`). +- **`prevent_proxy_connection_auth_url`**: (Optional) Custom authentication endpoint used specifically when proxy prevention is enabled. +- **`services_url`**: (Optional) Public Minecraft services URL (used for player certificates and keys). ### Player Profile Settings -- **`allow_banned_players`**: Allow players flagged/banned by Mojang to connect. -- **`allowed_actions`**: Allowed actions when banned players connect (`"FORCED_NAME_CHANGE"`, `"USING_BANNED_SKIN"`). +- **`allow_banned_players`**: Whether to allow players flagged or banned by Mojang to connect (default: `false`). +- **`allowed_actions`**: Profile actions permitted when flagged players connect (e.g. `["FORCED_NAME_CHANGE", "USING_BANNED_SKIN"]`). ### Textures Settings -- **`enabled`**: Enables player texture validation (skins, capes, elytras). -- **`allowed_url_schemes`**: URL schemes permitted for texture downloads (`["http", "https"]`). -- **`allowed_url_domains`**: Domains permitted for texture downloads (`[".minecraft.net", ".mojang.com"]`). -- **`types.skin`**: Enable custom skins. -- **`types.cape`**: Enable capes. -- **`types.elytra`**: Enable elytra textures. +- **`enabled`**: Enables fetching and validating player skins, capes, and elytra textures (default: `true`). +- **`allowed_url_schemes`**: URL schemes permitted for texture downloads (default: `["http", "https"]`). +- **`allowed_url_domains`**: Domains permitted for texture downloads (default: `[".minecraft.net", ".mojang.com"]`). +- **`types.skin`**: Enable custom player skins (default: `true`). +- **`types.cape`**: Enable player capes (default: `true`). +- **`types.elytra`**: Enable player elytra textures (default: `true`). ## Bedrock Edition Authentication @@ -63,3 +74,10 @@ read_timeout = 5000 ``` ::: + +### Configuration Options + +- **`enabled`**: Whether Xbox Live authentication is required for Bedrock clients (default: `true`). +- **`url`**: (Optional) Custom authentication or discovery endpoint URL. +- **`connect_timeout`**: Connection timeout in milliseconds (default: `5000`). +- **`read_timeout`**: Read timeout in milliseconds (default: `5000`). diff --git a/docs/en/config/basic.md b/docs/en/config/basic.md index 8239e17..cd72cfc 100644 --- a/docs/en/config/basic.md +++ b/docs/en/config/basic.md @@ -5,7 +5,7 @@ Pumpkin uses a single `pumpkin.toml` file to configure all aspects of the server ## Complete Default `pumpkin.toml` ```toml -seed = "1785537519969227430" +seed = "1790155153199293024" default_difficulty = "Normal" op_permission_level = 4 allow_nether = true @@ -23,9 +23,13 @@ enforce_whitelist = false [logging] enabled = true -threads = true +level = "info" +threads = false +thread_ids = false +target = false color = true timestamp = true +timestamp_format = "[hour]:[minute]:[second]" file = "latest.log" [resource_pack.java] @@ -42,7 +46,7 @@ packs = [] [world] lighting = "default" -autosave_ticks = 0 +autosave_ticks = 6000 [world.chunk] type = "anvil" @@ -53,7 +57,7 @@ algorithm = "LZ4" level = 6 [networking.query] -enabled = true +enabled = false address = "0.0.0.0:25565" [networking.rcon] @@ -77,6 +81,7 @@ secret = "" [networking.proxy.bungeecord] enabled = false +secret = "" [networking.lan_broadcast] enabled = false @@ -89,6 +94,7 @@ online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 +keep_alive_time = 15 motd = "A blazingly fast Pumpkin server!" [networking.java.compression] @@ -98,6 +104,9 @@ level = 4 [networking.java.authentication] enabled = true +fallbacks = [] +profile_by_name_fallbacks = [] +profile_by_uuid_fallbacks = [] connect_timeout = 5000 read_timeout = 5000 prevent_proxy_connections = false @@ -116,15 +125,22 @@ skin = true cape = true elytra = true +[networking.java.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [networking.bedrock] enabled = true -address = "0.0.0.0:19132" -encryption = true online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 motd = "A blazingly fast Pumpkin server!" +username_prefix = "" +replace_username_spaces = true +chunk_caching = true [networking.bedrock.compression] enabled = true @@ -136,6 +152,18 @@ enabled = true connect_timeout = 5000 read_timeout = 5000 +[networking.bedrock.nethernet] +enabled = true +address = "0.0.0.0:19132" +identity_key = "nethernet-key.der" +stun_servers = [] + +[networking.bedrock.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [commands] use_console = true use_tty = true @@ -143,9 +171,18 @@ log_console = true broadcast_console_to_ops = true default_op_level = 0 +[commands.overrides] + [chat] format = "<{DISPLAYNAME}> {MESSAGE}" +[chat.anti_spam] +enabled = true +spam_threshold = 200 +message_cost = 20 +decay_per_tick = 1 +ops_bypass = true + [pvp] enabled = true hurt_animation = true @@ -178,7 +215,17 @@ april_fools = true send_recipes = true [plugins] +enabled = true +hot_reload = false +ask_permission_confirmation = true +allow_unsigned = true +allowed_permissions = [] blocked_permissions = [] +inherit_env = false +loopback_only = false +verify_signatures = true + +[plugins.overrides] [advancement] save_advancements = true @@ -199,6 +246,7 @@ save_advancements = true - **`force_gamemode`**: Force players to join in the default gamemode. - **`scrub_ips`**: Anonymize player IP addresses in logs. - **`use_favicon`**: Enable server icon (`icon.png`). +- **`favicon_path`**: Optional file path to a custom server favicon icon. - **`default_level_name`**: Name of the main world directory (default: `"world"`). - **`allow_chat_reports`**: Enable signed chat reporting. - **`white_list`**: Enable server whitelist. diff --git a/docs/en/config/bedrock.md b/docs/en/config/bedrock.md new file mode 100644 index 0000000..dfef52f --- /dev/null +++ b/docs/en/config/bedrock.md @@ -0,0 +1,50 @@ +# Bedrock & NetherNet + +Pumpkin includes native support for Minecraft Bedrock Edition clients, including NetherNet WebRTC/ICE transport and username customization. + +## Configuration + +:::code-group + +```toml [pumpkin.toml] +[networking.bedrock] +enabled = true +online_mode = true +max_players = 1000 +view_distance = 16 +simulation_distance = 10 +motd = "A blazingly fast Pumpkin server!" +username_prefix = "" +replace_username_spaces = true +chunk_caching = true + +[networking.bedrock.nethernet] +enabled = true +address = "0.0.0.0:19132" +identity_key = "nethernet-key.der" +stun_servers = [] +``` + +::: + +### Bedrock Options + +- **`enabled`**: Whether connections from Bedrock Edition clients are accepted (default: `true`). +- **`online_mode`**: Whether Xbox Live authentication is enforced for Bedrock players (default: `true`). +- **`max_players`**: Maximum number of concurrent Bedrock players (`0` disables the limit, default: `1000`). +- **`view_distance`**: Maximum chunk view distance sent to Bedrock clients (default: `16`). +- **`simulation_distance`**: Maximum tick simulation distance for Bedrock players (default: `10`). +- **`motd`**: Message of the Day displayed in the Bedrock server list. +- **`username_prefix`**: Optional prefix prepended to Bedrock player gamertags (e.g. `"."` or `"*"`), preventing name collisions with Java Edition accounts on cross-play servers (default: `""`). +- **`replace_username_spaces`**: Whether spaces in Bedrock gamertags are automatically replaced with underscores `_`, ensuring player names can be referenced in Minecraft slash commands (default: `true`). +- **`chunk_caching`**: Whether client-side chunk blob caching is enabled to conserve network bandwidth (default: `true`). + +### NetherNet Transport Settings + +NetherNet is Minecraft Bedrock's modern WebRTC/ICE networking transport: + +- **`enabled`**: Whether clients may connect using NetherNet (default: `true`). +- **`address`**: Network socket address for TCP signaling and UDP ICE multiplexing (default: `"0.0.0.0:19132"`). +- **`external_ip`**: Optional public IP address advertised when the server is hosted behind NAT. +- **`identity_key`**: File path to the PKCS#8 P-384 private identity key file retained across restarts for client Trust On First Use (TOFU) (default: `"nethernet-key.der"`). +- **`stun_servers`**: Optional list of STUN server URLs for ICE NAT traversal. diff --git a/docs/en/config/chat.md b/docs/en/config/chat.md new file mode 100644 index 0000000..0685603 --- /dev/null +++ b/docs/en/config/chat.md @@ -0,0 +1,39 @@ +# Chat & Anti-Spam + +Pumpkin provides customizable in-game chat formatting and built-in anti-spam protection under `[chat]` in `pumpkin.toml`. + +## Configuration + +:::code-group + +```toml [pumpkin.toml] +[chat] +format = "<{DISPLAYNAME}> {MESSAGE}" + +[chat.anti_spam] +enabled = true +spam_threshold = 200 +message_cost = 20 +decay_per_tick = 1 +ops_bypass = true +``` + +::: + +### Chat Settings + +- **`format`**: The chat message format string (default: `"<{DISPLAYNAME}> {MESSAGE}"`). + - `{DISPLAYNAME}`: Player display name. + - `{MESSAGE}`: Chat message text. + > [!NOTE] + > Custom chat formatting does not apply when secure chat reporting (`allow_chat_reports = true`) is enabled. + +### Anti-Spam Protection + +Pumpkin implements a leaky-bucket spam counter to protect the server from spamming players and bot floods: + +- **`enabled`**: Whether anti-spam protection is active (default: `true`). +- **`spam_threshold`**: The spam counter threshold in ticks at which a player will be kicked (default: `200` ticks). +- **`message_cost`**: The amount added to the player's spam counter for each chat message or command sent (default: `20` ticks). +- **`decay_per_tick`**: The amount decayed from the player's spam counter on each server tick (default: `1` tick). +- **`ops_bypass`**: Whether server operators bypass anti-spam checks (default: `true`). diff --git a/docs/en/config/commands.md b/docs/en/config/commands.md index ce10f68..26976e3 100644 --- a/docs/en/config/commands.md +++ b/docs/en/config/commands.md @@ -13,14 +13,36 @@ use_tty = true log_console = true broadcast_console_to_ops = true default_op_level = 0 + +# Optional per-command overrides +[commands.overrides.gamemode] +permission_level = 4 + +[commands.overrides.tp] +enabled = false ``` ::: ### Configuration Options -- **`use_console`**: Whether commands input via console are accepted. -- **`use_tty`**: Whether TTY support is enabled for the interactive console. +- **`use_console`**: Whether commands from the console are accepted. +- **`use_tty`**: Whether TTY support (rustyline) is enabled for interactive console input. - **`log_console`**: Whether commands executed by players are logged to the console. -- **`broadcast_console_to_ops`**: Broadcast console command outputs to server operators. -- **`default_op_level`**: Default OP level assigned (0 to 4). +- **`broadcast_console_to_ops`**: Whether console and RCON command output is broadcast to online operators (matches vanilla `broadcast-console-to-ops`). +- **`default_op_level`**: The OP permission level assigned to non-operators (0 to 4, default: `0`). + +## Command Overrides + +You can customize permissions or completely disable individual commands using `[commands.overrides.]`. The key is named after the command without the leading slash (e.g. `gamemode`, `tp`). + +### Override Options + +- **`enabled`**: Whether the command is enabled (default: `true`). When set to `false`, the command is completely hidden: it will not run, will not appear in `/help`, and will not show up in tab completion. Players attempting to run it will receive an unknown command message. +- **`permission_level`**: The minimum permission level required to run the command: + - `0`: Everyone can use it. + - `2`: Normal operators (typical cheat commands like `/gamemode`). + - `3`: Admins (moderation commands like `/kick`, `/ban`). + - `4`: Server owner (full server management like `/stop`, `/op`). + +Leave `permission_level` omitted to keep the command's default permission level. diff --git a/docs/en/config/compression.md b/docs/en/config/compression.md index 0fadde8..021caab 100644 --- a/docs/en/config/compression.md +++ b/docs/en/config/compression.md @@ -50,5 +50,5 @@ level = 6 ::: -- **`algorithm`**: Compression algorithm used for chunk data (e.g. `"LZ4"`). -- **`level`**: Compression level for chunk data. +- **`algorithm`**: Compression algorithm used for chunk data. Supported options are `"LZ4"`, `"ZLib"`, `"GZip"`, and `"Custom"` (default: `"LZ4"`). +- **`level`**: Compression level for chunk data (default: `6`). diff --git a/docs/en/config/lan-broadcast.md b/docs/en/config/lan-broadcast.md index d12a308..41e0a8f 100644 --- a/docs/en/config/lan-broadcast.md +++ b/docs/en/config/lan-broadcast.md @@ -9,10 +9,14 @@ Pumpkin can broadcast server announcements on the local network so LAN clients c ```toml [pumpkin.toml] [networking.lan_broadcast] enabled = false +# motd = "My Custom LAN Server" +# port = 25565 ``` ::: ### Configuration Options -- **`enabled`**: Enables or disables broadcasting to local network clients. +- **`enabled`**: Enables or disables broadcasting server presence on the local network (default: `false`). +- **`motd`**: (Optional) Custom one-line Message of the Day shown in LAN client discovery. If omitted, defaults to the server's Java MOTD with newlines removed. +- **`port`**: (Optional) Port advertised in the LAN broadcast. Useful for port forwarding or predictable ports in containerized environments like Docker. diff --git a/docs/en/config/logging.md b/docs/en/config/logging.md index 7b9e3bb..e706f48 100644 --- a/docs/en/config/logging.md +++ b/docs/en/config/logging.md @@ -9,9 +9,13 @@ Pumpkin provides customizable logging options in `pumpkin.toml`. ```toml [pumpkin.toml] [logging] enabled = true -threads = true +level = "info" +threads = false +thread_ids = false +target = false color = true timestamp = true +timestamp_format = "[hour]:[minute]:[second]" file = "latest.log" ``` @@ -19,8 +23,12 @@ file = "latest.log" ### Configuration Options -- **`enabled`**: Master switch to enable or disable logging. -- **`threads`**: Include thread names/IDs in log output. -- **`color`**: Enable ANSI color output in console logs. -- **`timestamp`**: Include timestamps in log entries. -- **`file`**: Path to the log file (e.g. `"latest.log"`). +- **`enabled`**: Master switch to enable or disable server logging (default: `true`). +- **`level`**: Minimum log level for console and file output. Available levels are `"trace"`, `"debug"`, `"info"`, `"warn"`, `"error"`, and `"off"` (default: `"info"`). Can also be overridden with the `RUST_LOG` environment variable. +- **`threads`**: Whether to include thread names in log messages (default: `false`). +- **`thread_ids`**: Whether to include numeric thread IDs in log messages (default: `false`). +- **`target`**: Whether to include module and component targets in log entries (default: `false`). +- **`color`**: Whether to enable ANSI colored log output in the console (default: `true`). +- **`timestamp`**: Whether to include timestamps in log entries (default: `true`). +- **`timestamp_format`**: Timestamp format string using `time` format description syntax (default: `"[hour]:[minute]:[second]"`). +- **`file`**: File path to write log output to (default: `"latest.log"`). diff --git a/docs/en/config/packet-limiter.md b/docs/en/config/packet-limiter.md new file mode 100644 index 0000000..4772978 --- /dev/null +++ b/docs/en/config/packet-limiter.md @@ -0,0 +1,30 @@ +# Packet Limiter + +Pumpkin features a built-in packet rate limiter to protect the server from packet flooding, spam attacks, and client-side exploits. Packet rate limits can be configured independently for Java Edition and Bedrock Edition clients. + +## Configuration + +:::code-group + +```toml [pumpkin.toml] +[networking.java.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + +[networking.bedrock.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" +``` + +::: + +### Configuration Options + +- **`enabled`**: Whether the packet rate limiter is enabled for this client edition (default: `true`). +- **`max_packet_rate`**: Maximum allowed incoming packets per second per client connection (default: `500.0`). Set to `<= 0.0` to disable the rate limit without disabling the limiter module. +- **`burst_capacity`**: Token bucket burst allowance capacity for brief spikes in client packets (default: `500.0`). +- **`kick_message`**: The disconnection message displayed to the player when their connection exceeds the packet limit (default: `"Kicked for spamming packets"`). diff --git a/docs/en/config/player-data.md b/docs/en/config/player-data.md new file mode 100644 index 0000000..cd62ad1 --- /dev/null +++ b/docs/en/config/player-data.md @@ -0,0 +1,41 @@ +# Player Data & Gameplay + +Settings for saving persistent player data, advancements, recipe synchronization, and fun seasonal features are configured in `pumpkin.toml`. + +## Configuration + +:::code-group + +```toml [pumpkin.toml] +[player_data] +save_player_data = true +save_player_cron_interval = 300 + +[advancement] +save_advancements = true + +[recipe] +send_recipes = true + +[fun] +april_fools = true +``` + +::: + +### Player Data + +- **`save_player_data`**: Whether persistent player data (inventory, location, health) is saved to disk (default: `true`). +- **`save_player_cron_interval`**: Time interval in seconds between automatic periodic saves of online player data (default: `300` seconds / 5 minutes). + +### Advancements + +- **`save_advancements`**: Whether player advancement progress is tracked and saved to disk (default: `true`). + +### Recipes + +- **`send_recipes`**: Whether crafting and smelting recipes are synchronized with connected clients, enabling the client-side recipe book (default: `true`). + +### Fun Features + +- **`april_fools`**: Whether fun and seasonal April Fools easter eggs and features are enabled (default: `true`). diff --git a/docs/en/config/plugins.md b/docs/en/config/plugins.md new file mode 100644 index 0000000..12e0cae --- /dev/null +++ b/docs/en/config/plugins.md @@ -0,0 +1,59 @@ +# Plugins + +Pumpkin provides a WebAssembly (WASM) plugin runtime with capability-based security. Plugin behavior, signature verification, and permissions are configured under `[plugins]` in `pumpkin.toml`. + +## Configuration + +:::code-group + +```toml [pumpkin.toml] +[plugins] +enabled = true +hot_reload = false +ask_permission_confirmation = true +allow_unsigned = true +allowed_permissions = [] +blocked_permissions = [] +inherit_env = false +loopback_only = false +verify_signatures = true + +# Optional per-plugin overrides +[plugins.overrides.my_plugin] +enabled = true +allow_unsigned = true +max_memory_mb = 128 +allowed_permissions = ["fs:read:data"] +blocked_permissions = ["network:outbound"] +loopback_only = true + +[plugins.overrides.my_plugin.environment] +API_KEY = "example_secret" +``` + +::: + +### Global Plugin Settings + +- **`enabled`**: Master switch to enable or disable the plugin runtime (default: `true`). +- **`hot_reload`**: Watch the `plugins/` directory and automatically reload modified plugins at runtime (default: `false`). +- **`ask_permission_confirmation`**: Prompt in the server console when a plugin requests unapproved capabilities/permissions (default: `true`). +- **`allow_unsigned`**: Allow loading unsigned WASM plugins (default: `true`). +- **`allowed_permissions`**: List of permissions globally pre-approved for all plugins, bypassing interactive console prompts (default: `[]`). +- **`blocked_permissions`**: List of permissions globally denied to all plugins (default: `[]`). +- **`inherit_env`**: Whether host environment variables are inherited into plugin WASI sandboxes by default (default: `false`). +- **`loopback_only`**: Whether outbound network connections from plugins are restricted to `127.0.0.1` / localhost (default: `false`). +- **`max_memory_mb`**: (Optional) Global maximum memory limit in megabytes (MB) per plugin instance. +- **`verify_signatures`**: Whether Pumpkin verifies cryptographic signatures on WASM plugins before loading (default: `true`). + +### Per-Plugin Overrides + +Fine-tune permissions and environment variables for specific plugins under `[plugins.overrides.]`: + +- **`enabled`**: Enable or disable this specific plugin (default: `true`). +- **`allow_unsigned`**: Override whether this specific plugin can run unsigned (`true`/`false`). +- **`max_memory_mb`**: Maximum memory limit in MB allocated specifically for this plugin. +- **`allowed_permissions`**: Pre-approved permissions for this plugin. +- **`blocked_permissions`**: Explicitly blocked permissions for this plugin. +- **`loopback_only`**: Override loopback network restriction for this plugin. +- **`environment`**: Table of custom environment variables passed directly into the plugin's WASI environment. diff --git a/docs/en/config/proxy.md b/docs/en/config/proxy.md index 6173b3c..205082b 100644 --- a/docs/en/config/proxy.md +++ b/docs/en/config/proxy.md @@ -16,6 +16,7 @@ secret = "" [networking.proxy.bungeecord] enabled = false +secret = "" ``` ::: @@ -23,6 +24,7 @@ enabled = false ### Configuration Options - **`[networking.proxy].enabled`**: Master switch to enable proxy support. -- **`[networking.proxy.velocity].enabled`**: Enables Velocity forwarding protocol. -- **`[networking.proxy.velocity].secret`**: Forwarding secret matching Velocity proxy configuration. -- **`[networking.proxy.bungeecord].enabled`**: Enables BungeeCord forwarding protocol. +- **`[networking.proxy.velocity].enabled`**: Enables Velocity modern forwarding protocol. +- **`[networking.proxy.velocity].secret`**: Forwarding secret matching the Velocity proxy configuration. +- **`[networking.proxy.bungeecord].enabled`**: Enables BungeeCord player info forwarding protocol. +- **`[networking.proxy.bungeecord].secret`**: Optional shared secret for authenticating connections from the BungeeCord proxy via BungeeGuard (`bungeeguard-token`). When set, incoming connections must provide this token, preventing players from bypassing the proxy to connect directly. diff --git a/docs/en/config/query.md b/docs/en/config/query.md index 113cd00..5df19be 100644 --- a/docs/en/config/query.md +++ b/docs/en/config/query.md @@ -8,7 +8,7 @@ The Query protocol allows external applications (such as server lists or monitor ```toml [pumpkin.toml] [networking.query] -enabled = true +enabled = false address = "0.0.0.0:25565" ``` @@ -16,5 +16,5 @@ address = "0.0.0.0:25565" ### Configuration Options -- **`enabled`**: Enables or disables the Query listener. -- **`address`**: Network address and port to bind the Query listener to. +- **`enabled`**: Enables or disables the GS4 Query listener (default: `false`). +- **`address`**: Network address and port to bind the Query listener to (default: `"0.0.0.0:25565"`). diff --git a/docs/en/config/resource-pack.md b/docs/en/config/resource-pack.md index dda8241..31af9fa 100644 --- a/docs/en/config/resource-pack.md +++ b/docs/en/config/resource-pack.md @@ -33,7 +33,9 @@ force = false [resource_pack.bedrock] enabled = false force = false -packs = [] +packs = [ + # { uuid = "00000000-0000-0000-0000-000000000000", version = "1.0.0", size = 1048576, download_url = "https://example.com/pack.mcpack" } +] ``` ::: @@ -41,5 +43,20 @@ packs = [] ### Options - **`enabled`**: Enable resource packs for Bedrock clients. -- **`force`**: Force Bedrock clients to download required packs. +- **`force`**: Force Bedrock clients to download required packs before joining. - **`packs`**: Array of Bedrock resource pack definitions. + +### Bedrock Pack Fields + +Each pack in the `packs` array accepts the following properties: + +- **`uuid`**: (Required) Unique identifier (UUID) for the Bedrock pack matching its `manifest.json`. +- **`version`**: (Required) Version string of the pack (e.g. `"1.0.0"`). +- **`size`**: (Required) File size of the pack archive in bytes. +- **`download_url`**: (Required) Direct download URL for the `.mcpack` or archive file. +- **`content_key`**: (Optional) Decryption key for encrypted marketplace/custom packs. +- **`sub_pack_name`**: (Optional) Sub-pack name within the pack to activate. +- **`content_id`**: (Optional) Content identifier string. +- **`has_scripts`**: (Optional) Whether the pack contains client scripts (`true`/`false`, default: `false`). +- **`addon_pack`**: (Optional) Whether the pack is marked as an addon pack (default: `false`). +- **`rtx_enabled`**: (Optional) Whether ray tracing / RTX features are enabled for the pack (default: `false`). diff --git a/docs/en/config/server-links.md b/docs/en/config/server-links.md new file mode 100644 index 0000000..bb640a9 --- /dev/null +++ b/docs/en/config/server-links.md @@ -0,0 +1,50 @@ +# Server Links + +Minecraft clients (since 1.21) can display clickable server links in the pause menu and game menus. Configure standard and custom server links under `[server_links]` in `pumpkin.toml`. + +## Configuration + +:::code-group + +```toml [pumpkin.toml] +[server_links] +enabled = true +bug_report = "https://github.com/Pumpkin-MC/Pumpkin/issues" +support = "" +status = "" +feedback = "" +community = "" +website = "" +forums = "" +news = "" +announcements = "" + +[server_links.custom] +# "Store" = "https://store.example.com" +# "Discord" = "https://discord.gg/example" +``` + +::: + +### Configuration Options + +- **`enabled`**: Master switch to enable broadcasting server links to connecting clients (default: `true`). +- **`bug_report`**: Link to server or project bug tracker (default: `"https://github.com/Pumpkin-MC/Pumpkin/issues"`). +- **`support`**: Link to technical support or help desk. +- **`status`**: Link to server uptime/status page. +- **`feedback`**: Link to player feedback or suggestion page. +- **`community`**: Link to community forums or group. +- **`website`**: Link to official website. +- **`forums`**: Link to discussion forums. +- **`news`**: Link to server blog or news page. +- **`announcements`**: Link to announcements page. + +### Custom Links + +Define arbitrary key-value links shown in client menus under `[server_links.custom]`: + +```toml +[server_links.custom] +"Store" = "https://store.example.com" +"Discord" = "https://discord.gg/example" +``` diff --git a/docs/en/config/world.md b/docs/en/config/world.md new file mode 100644 index 0000000..7b7c8dc --- /dev/null +++ b/docs/en/config/world.md @@ -0,0 +1,41 @@ +# World + +Pumpkin allows fine-tuning world storage formats, autosave intervals, and lighting modes under `[world]` in `pumpkin.toml`. + +## Configuration + +:::code-group + +```toml [pumpkin.toml] +[world] +lighting = "default" +autosave_ticks = 6000 + +[world.chunk] +type = "anvil" +write_in_place = false + +[world.chunk.compression] +algorithm = "LZ4" +level = 6 +``` + +::: + +### World Settings + +- **`lighting`**: Lighting engine propagation calculation mode. + - `"default"`: Standard Vanilla Minecraft light propagation. + - `"full"`: Full skylight everywhere without shadows. + - `"dark"`: Completely dark lighting everywhere (zero light). +- **`autosave_ticks`**: Number of server ticks between automatic world saves (default: `6000`, equivalent to 5 minutes at 20 TPS). Setting this to `0` disables world autosaving. + +### Chunk Storage Settings + +- **`type`**: The chunk storage format to use: + - `"anvil"`: Standard Minecraft Anvil region file format (`.mca`). + - `"linear"`: Linear region storage format using fast compression for a smaller disk footprint. + - `"pump"`: Pumpkin's native optimized world format. +- **`write_in_place`**: Whether chunks should be rewritten in place within existing region files rather than reallocating free chunks (default: `false`). +- **`compression.algorithm`**: Compression algorithm used for chunk data (`"LZ4"`, `"ZLib"`, `"GZip"`, `"Custom"`). +- **`compression.level`**: Compression level for chunk storage (default: `6`). diff --git a/docs/nl/config/basic.md b/docs/nl/config/basic.md index eae9b32..890700f 100644 --- a/docs/nl/config/basic.md +++ b/docs/nl/config/basic.md @@ -8,7 +8,7 @@ Het adres om de server aan te binden. :::code-group ```toml -seed = "1785537519969227430" +seed = "1790155153199293024" default_difficulty = "Normal" op_permission_level = 4 allow_nether = true @@ -26,9 +26,13 @@ enforce_whitelist = false [logging] enabled = true -threads = true +level = "info" +threads = false +thread_ids = false +target = false color = true timestamp = true +timestamp_format = "[hour]:[minute]:[second]" file = "latest.log" [resource_pack.java] @@ -45,7 +49,7 @@ packs = [] [world] lighting = "default" -autosave_ticks = 0 +autosave_ticks = 6000 [world.chunk] type = "anvil" @@ -56,7 +60,7 @@ algorithm = "LZ4" level = 6 [networking.query] -enabled = true +enabled = false address = "0.0.0.0:25565" [networking.rcon] @@ -80,6 +84,7 @@ secret = "" [networking.proxy.bungeecord] enabled = false +secret = "" [networking.lan_broadcast] enabled = false @@ -92,6 +97,7 @@ online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 +keep_alive_time = 15 motd = "A blazingly fast Pumpkin server!" [networking.java.compression] @@ -101,6 +107,9 @@ level = 4 [networking.java.authentication] enabled = true +fallbacks = [] +profile_by_name_fallbacks = [] +profile_by_uuid_fallbacks = [] connect_timeout = 5000 read_timeout = 5000 prevent_proxy_connections = false @@ -119,15 +128,22 @@ skin = true cape = true elytra = true +[networking.java.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [networking.bedrock] enabled = true -address = "0.0.0.0:19132" -encryption = true online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 motd = "A blazingly fast Pumpkin server!" +username_prefix = "" +replace_username_spaces = true +chunk_caching = true [networking.bedrock.compression] enabled = true @@ -139,6 +155,18 @@ enabled = true connect_timeout = 5000 read_timeout = 5000 +[networking.bedrock.nethernet] +enabled = true +address = "0.0.0.0:19132" +identity_key = "nethernet-key.der" +stun_servers = [] + +[networking.bedrock.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [commands] use_console = true use_tty = true @@ -146,9 +174,18 @@ log_console = true broadcast_console_to_ops = true default_op_level = 0 +[commands.overrides] + [chat] format = "<{DISPLAYNAME}> {MESSAGE}" +[chat.anti_spam] +enabled = true +spam_threshold = 200 +message_cost = 20 +decay_per_tick = 1 +ops_bypass = true + [pvp] enabled = true hurt_animation = true @@ -181,7 +218,17 @@ april_fools = true send_recipes = true [plugins] +enabled = true +hot_reload = false +ask_permission_confirmation = true +allow_unsigned = true +allowed_permissions = [] blocked_permissions = [] +inherit_env = false +loopback_only = false +verify_signatures = true + +[plugins.overrides] [advancement] save_advancements = true diff --git a/docs/pt/config/basic.md b/docs/pt/config/basic.md index 0604aea..fc31aad 100644 --- a/docs/pt/config/basic.md +++ b/docs/pt/config/basic.md @@ -9,7 +9,7 @@ O endereço para vincular o servidor. :::code-group ```toml -seed = "1785537519969227430" +seed = "1790155153199293024" default_difficulty = "Normal" op_permission_level = 4 allow_nether = true @@ -27,9 +27,13 @@ enforce_whitelist = false [logging] enabled = true -threads = true +level = "info" +threads = false +thread_ids = false +target = false color = true timestamp = true +timestamp_format = "[hour]:[minute]:[second]" file = "latest.log" [resource_pack.java] @@ -46,7 +50,7 @@ packs = [] [world] lighting = "default" -autosave_ticks = 0 +autosave_ticks = 6000 [world.chunk] type = "anvil" @@ -57,7 +61,7 @@ algorithm = "LZ4" level = 6 [networking.query] -enabled = true +enabled = false address = "0.0.0.0:25565" [networking.rcon] @@ -81,6 +85,7 @@ secret = "" [networking.proxy.bungeecord] enabled = false +secret = "" [networking.lan_broadcast] enabled = false @@ -93,6 +98,7 @@ online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 +keep_alive_time = 15 motd = "A blazingly fast Pumpkin server!" [networking.java.compression] @@ -102,6 +108,9 @@ level = 4 [networking.java.authentication] enabled = true +fallbacks = [] +profile_by_name_fallbacks = [] +profile_by_uuid_fallbacks = [] connect_timeout = 5000 read_timeout = 5000 prevent_proxy_connections = false @@ -120,15 +129,22 @@ skin = true cape = true elytra = true +[networking.java.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [networking.bedrock] enabled = true -address = "0.0.0.0:19132" -encryption = true online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 motd = "A blazingly fast Pumpkin server!" +username_prefix = "" +replace_username_spaces = true +chunk_caching = true [networking.bedrock.compression] enabled = true @@ -140,6 +156,18 @@ enabled = true connect_timeout = 5000 read_timeout = 5000 +[networking.bedrock.nethernet] +enabled = true +address = "0.0.0.0:19132" +identity_key = "nethernet-key.der" +stun_servers = [] + +[networking.bedrock.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [commands] use_console = true use_tty = true @@ -147,9 +175,18 @@ log_console = true broadcast_console_to_ops = true default_op_level = 0 +[commands.overrides] + [chat] format = "<{DISPLAYNAME}> {MESSAGE}" +[chat.anti_spam] +enabled = true +spam_threshold = 200 +message_cost = 20 +decay_per_tick = 1 +ops_bypass = true + [pvp] enabled = true hurt_animation = true @@ -182,7 +219,17 @@ april_fools = true send_recipes = true [plugins] +enabled = true +hot_reload = false +ask_permission_confirmation = true +allow_unsigned = true +allowed_permissions = [] blocked_permissions = [] +inherit_env = false +loopback_only = false +verify_signatures = true + +[plugins.overrides] [advancement] save_advancements = true diff --git a/docs/tr_TR/config/basic.md b/docs/tr_TR/config/basic.md index 6f108eb..503f6b6 100644 --- a/docs/tr_TR/config/basic.md +++ b/docs/tr_TR/config/basic.md @@ -1,4 +1,4 @@ -# Temel Yapılandırma +# Temel Yapılandırma `pumpkin.toml` dosyasını temsil eder @@ -9,7 +9,7 @@ Sunucunun bağlanacağı address. :::code-group ```toml -seed = "1785537519969227430" +seed = "1790155153199293024" default_difficulty = "Normal" op_permission_level = 4 allow_nether = true @@ -27,9 +27,13 @@ enforce_whitelist = false [logging] enabled = true -threads = true +level = "info" +threads = false +thread_ids = false +target = false color = true timestamp = true +timestamp_format = "[hour]:[minute]:[second]" file = "latest.log" [resource_pack.java] @@ -46,7 +50,7 @@ packs = [] [world] lighting = "default" -autosave_ticks = 0 +autosave_ticks = 6000 [world.chunk] type = "anvil" @@ -57,7 +61,7 @@ algorithm = "LZ4" level = 6 [networking.query] -enabled = true +enabled = false address = "0.0.0.0:25565" [networking.rcon] @@ -81,6 +85,7 @@ secret = "" [networking.proxy.bungeecord] enabled = false +secret = "" [networking.lan_broadcast] enabled = false @@ -93,6 +98,7 @@ online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 +keep_alive_time = 15 motd = "A blazingly fast Pumpkin server!" [networking.java.compression] @@ -102,6 +108,9 @@ level = 4 [networking.java.authentication] enabled = true +fallbacks = [] +profile_by_name_fallbacks = [] +profile_by_uuid_fallbacks = [] connect_timeout = 5000 read_timeout = 5000 prevent_proxy_connections = false @@ -120,15 +129,22 @@ skin = true cape = true elytra = true +[networking.java.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [networking.bedrock] enabled = true -address = "0.0.0.0:19132" -encryption = true online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 motd = "A blazingly fast Pumpkin server!" +username_prefix = "" +replace_username_spaces = true +chunk_caching = true [networking.bedrock.compression] enabled = true @@ -140,6 +156,18 @@ enabled = true connect_timeout = 5000 read_timeout = 5000 +[networking.bedrock.nethernet] +enabled = true +address = "0.0.0.0:19132" +identity_key = "nethernet-key.der" +stun_servers = [] + +[networking.bedrock.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [commands] use_console = true use_tty = true @@ -147,9 +175,18 @@ log_console = true broadcast_console_to_ops = true default_op_level = 0 +[commands.overrides] + [chat] format = "<{DISPLAYNAME}> {MESSAGE}" +[chat.anti_spam] +enabled = true +spam_threshold = 200 +message_cost = 20 +decay_per_tick = 1 +ops_bypass = true + [pvp] enabled = true hurt_animation = true @@ -182,7 +219,17 @@ april_fools = true send_recipes = true [plugins] +enabled = true +hot_reload = false +ask_permission_confirmation = true +allow_unsigned = true +allowed_permissions = [] blocked_permissions = [] +inherit_env = false +loopback_only = false +verify_signatures = true + +[plugins.overrides] [advancement] save_advancements = true diff --git a/docs/zh_cn/config/basic.md b/docs/zh_cn/config/basic.md index 64cc39b..bf6e05b 100644 --- a/docs/zh_cn/config/basic.md +++ b/docs/zh_cn/config/basic.md @@ -9,7 +9,7 @@ :::code-group ```toml -seed = "1785537519969227430" +seed = "1790155153199293024" default_difficulty = "Normal" op_permission_level = 4 allow_nether = true @@ -27,9 +27,13 @@ enforce_whitelist = false [logging] enabled = true -threads = true +level = "info" +threads = false +thread_ids = false +target = false color = true timestamp = true +timestamp_format = "[hour]:[minute]:[second]" file = "latest.log" [resource_pack.java] @@ -46,7 +50,7 @@ packs = [] [world] lighting = "default" -autosave_ticks = 0 +autosave_ticks = 6000 [world.chunk] type = "anvil" @@ -57,7 +61,7 @@ algorithm = "LZ4" level = 6 [networking.query] -enabled = true +enabled = false address = "0.0.0.0:25565" [networking.rcon] @@ -81,6 +85,7 @@ secret = "" [networking.proxy.bungeecord] enabled = false +secret = "" [networking.lan_broadcast] enabled = false @@ -93,6 +98,7 @@ online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 +keep_alive_time = 15 motd = "A blazingly fast Pumpkin server!" [networking.java.compression] @@ -102,6 +108,9 @@ level = 4 [networking.java.authentication] enabled = true +fallbacks = [] +profile_by_name_fallbacks = [] +profile_by_uuid_fallbacks = [] connect_timeout = 5000 read_timeout = 5000 prevent_proxy_connections = false @@ -120,15 +129,22 @@ skin = true cape = true elytra = true +[networking.java.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [networking.bedrock] enabled = true -address = "0.0.0.0:19132" -encryption = true online_mode = true max_players = 1000 view_distance = 16 simulation_distance = 10 motd = "A blazingly fast Pumpkin server!" +username_prefix = "" +replace_username_spaces = true +chunk_caching = true [networking.bedrock.compression] enabled = true @@ -140,6 +156,18 @@ enabled = true connect_timeout = 5000 read_timeout = 5000 +[networking.bedrock.nethernet] +enabled = true +address = "0.0.0.0:19132" +identity_key = "nethernet-key.der" +stun_servers = [] + +[networking.bedrock.packet_limiter] +enabled = true +max_packet_rate = 500.0 +burst_capacity = 500.0 +kick_message = "Kicked for spamming packets" + [commands] use_console = true use_tty = true @@ -147,9 +175,18 @@ log_console = true broadcast_console_to_ops = true default_op_level = 0 +[commands.overrides] + [chat] format = "<{DISPLAYNAME}> {MESSAGE}" +[chat.anti_spam] +enabled = true +spam_threshold = 200 +message_cost = 20 +decay_per_tick = 1 +ops_bypass = true + [pvp] enabled = true hurt_animation = true @@ -182,7 +219,17 @@ april_fools = true send_recipes = true [plugins] +enabled = true +hot_reload = false +ask_permission_confirmation = true +allow_unsigned = true +allowed_permissions = [] blocked_permissions = [] +inherit_env = false +loopback_only = false +verify_signatures = true + +[plugins.overrides] [advancement] save_advancements = true