32a020c572
Added Essentials, Voxy Serverside plugin, LoginTo, squaremap, imageframe, luckperms Changed from url download to modrinth for better reliability.
176 lines
10 KiB
YAML
176 lines
10 KiB
YAML
# LOD Server Support — Paper/Folia server defaults.
|
||
# Edit this file, then run /vsslod reload. Settings marked [restart] wait for restart.
|
||
# Reload changes policy for new work; existing jobs/reads drain and cache trimming can lag.
|
||
# Distances are radii. 1 chunk = 16 blocks; 1 MiB = 1,048,576 bytes.
|
||
config_version: 1 # Local settings schema version, independent of the network protocol.
|
||
|
||
# Serves distant terrain to compatible clients beyond vanilla's view distance.
|
||
# This does not increase the server's simulation distance or keep distant chunks ticking.
|
||
service:
|
||
enabled: true # [restart] Enable the server's LOD service.
|
||
require_permission: false # Require both lss.use and vss.use; nodes default to allowed.
|
||
|
||
# Larger radii reveal more terrain, but cover more columns and can increase
|
||
# generation, transfer, cache and disk work. Doubling a radius covers roughly four
|
||
# times the area; a large configured radius does not mean it fills instantly.
|
||
lod:
|
||
distance:
|
||
default_chunks: 512 # Fallback for dimensions not listed below; range 1–2048.
|
||
by_dimension: # These are fresh-install defaults; migration preserves existing limits.
|
||
"minecraft:overworld": 512 # Overworld radius in chunks.
|
||
"minecraft:the_nether": 64 # Nether radius in chunks.
|
||
"minecraft:the_end": 512 # End radius in chunks.
|
||
by_world: {} # Paper world-name overrides; take priority over dimension entries.
|
||
|
||
# Lets LOD requests create terrain that does not yet exist in the world.
|
||
# This costs world-generation CPU time and grows the normal world files, independently
|
||
# of the LOD store. With generation off, existing terrain can still be served.
|
||
# Higher concurrency can fill missing terrain sooner, but competes with gameplay.
|
||
generation:
|
||
enabled: true # Generate missing terrain; disabling stops new jobs, existing jobs finish.
|
||
concurrency:
|
||
global: 40 # Maximum concurrent generations across the server; range 1–512.
|
||
per_player: 40 # Maximum per player; cannot exceed the global limit.
|
||
timeout_ticks: 1200 # New jobs only; 60 seconds at 20 TPS, longer under lag; range 20–12000.
|
||
|
||
# Limits and schedules LOD traffic so it shares resources with normal gameplay.
|
||
# Bandwidth limits count uncompressed payload work, so they also limit client decode
|
||
# work; compressed network traffic can be much smaller. Lower limits slow terrain fill.
|
||
network:
|
||
bandwidth:
|
||
per_player_mib_per_second: 5 # Raw MiB/s before compression; 0 clamps to 1 KiB/s, not unlimited.
|
||
global_mib_per_second: 50 # Shared raw MiB/s budget; 0 clamps to 1 KiB/s, not unlimited.
|
||
send_queue_limit_per_player: 1024 # Admission ceiling; lowering it lets existing work drain.
|
||
ping_backstop: true # Reduce LOD traffic when player latency indicates congestion.
|
||
send_pacing: true # Spread LOD sends across ticks to reduce bursts.
|
||
yield_to_vanilla: true # Let normal game traffic take transport priority; applies next flush.
|
||
|
||
# Keeps previously downloaded terrain up to date when the world changes.
|
||
# Shorter dirty-broadcast intervals show edits sooner but can send updates more often.
|
||
# Region summaries let returning clients validate cached areas without downloading
|
||
# every column again; they describe freshness, not the terrain itself.
|
||
updates:
|
||
# Tick-driven: 200 ticks = 10 seconds at 20 TPS, longer under lag.
|
||
dirty_broadcast_interval_ticks: 200 # 0 disables pushes, not invalidation; otherwise 20–6000.
|
||
region_summaries: true # Accept new region-validation requests; accepted requests can finish.
|
||
|
||
storage:
|
||
# Reader threads and concurrent reads control pressure on world-file access.
|
||
# More parallel reads can improve throughput, but can also compete with gameplay
|
||
# for disk and CPU. Automatic sizing accounts for the active read path and store.
|
||
disk:
|
||
reader_threads: 0 # [restart] 0 = automatic; explicit range 1–64.
|
||
max_concurrent_reads: 0 # 0 = automatic, based on the active reader pool and store.
|
||
background_priority: true # [restart] Use background-priority reads where supported.
|
||
split_background_reads: true # [restart] Separate background read work where supported.
|
||
# This RAM cache holds column freshness timestamps, not complete terrain.
|
||
# More capacity can avoid repeated timestamp lookups, at the cost of server memory.
|
||
# Reducing capacity trims gradually; it does not clear the entire cache on reload.
|
||
timestamp_cache_mib_per_dimension: 0 # 0 = automatic from the largest active LOD radius.
|
||
# Briefly remembering missing columns avoids repeatedly checking unavailable terrain.
|
||
# A longer lifetime can delay another lookup for newly available data on a memo hit.
|
||
miss_memo_ttl_seconds: 30 # 0 disables; maximum 60. Changing this clears old miss memos.
|
||
# Persistent cache of prepared LOD columns, reused across players and restarts.
|
||
# Cache hits reduce repeated world-file parsing, serialization and, when the
|
||
# client's format supports reuse, compression. Store reads still use disk I/O.
|
||
# Tradeoff: extra disk space and writes as terrain is cached or updated. A fully
|
||
# warmed store can be comparable in size to the region files; actual use depends
|
||
# on the world and how much terrain has been cached. This is rebuildable data.
|
||
# Off still allows normal LOD serving, but loses this reuse. Disabling the store
|
||
# does not delete its existing files or reclaim their disk space.
|
||
lod_store:
|
||
enabled: true # [restart] Fresh installs enable this; migration preserves old behavior.
|
||
# Smaller limits retain less prepared terrain, so evicted columns may need
|
||
# processing again. This bounds live database data, not total filesystem use:
|
||
# SQLite journal files and space awaiting reclamation can add overhead.
|
||
# Lowering the cap evicts gradually; reload does not instantly free filesystem space.
|
||
max_size_mib: 0 # 0 = unlimited; positive range 64–1,048,576 MiB.
|
||
# Periodically recheck saved-world freshness to catch edits without a Bukkit event.
|
||
# Shorter intervals find these saved edits sooner but perform more checks.
|
||
# Unsaved changes still have to reach the world files before this path can see them.
|
||
resweep_interval_seconds: 300 # 0 disables future periodic sweeps; an active sweep can finish.
|
||
|
||
# Optimized processing paths for turning world terrain into transmitted columns.
|
||
# Compression reduces network bytes but costs CPU when a reusable frame is unavailable.
|
||
# These are expert troubleshooting switches; their effects depend on the active path.
|
||
serialization:
|
||
selective_nbt_parse: true # Inactive on Paper's already-parsed NBT path; retained for portability.
|
||
nbt_transcode: true # New reads: use the optimized terrain serialization path.
|
||
compressed_columns: true # [restart] Compress columns for clients that support it.
|
||
|
||
# Allows older LOD protocol versions; these numbers are not Minecraft versions.
|
||
# Disabling a fallback restricts which clients can connect to the LOD service.
|
||
# It does not translate arbitrary modded blocks or replace a version-translation mod.
|
||
compatibility:
|
||
protocols:
|
||
v16: true # [restart] Accept protocol-16 clients.
|
||
v18: true # [restart] Accept protocol-18 clients.
|
||
v19: true # [restart] Accept protocol-19 clients.
|
||
via_mismatch_guard: true # [restart] Guard incompatible translated-protocol sessions.
|
||
|
||
# Prevents distant terrain data from revealing blocks hidden by anti-xray policy.
|
||
# Auto follows supported detected policy; forcing off can expose hidden terrain.
|
||
# The block list and height below are fallbacks, not overrides for an adopted engine policy.
|
||
privacy:
|
||
xray:
|
||
mode: "auto" # [restart] "auto", "on" or "off"; auto follows detected anti-xray policy.
|
||
max_y_blocks: 64 # [restart] Fallback mask applies below this world Y coordinate.
|
||
hidden_blocks: # [restart] Fallback list when engine policy is unavailable; [] hides none.
|
||
- "minecraft:copper_ore"
|
||
- "minecraft:deepslate_copper_ore"
|
||
- "minecraft:raw_copper_block"
|
||
- "minecraft:gold_ore"
|
||
- "minecraft:deepslate_gold_ore"
|
||
- "minecraft:iron_ore"
|
||
- "minecraft:deepslate_iron_ore"
|
||
- "minecraft:raw_iron_block"
|
||
- "minecraft:coal_ore"
|
||
- "minecraft:deepslate_coal_ore"
|
||
- "minecraft:lapis_ore"
|
||
- "minecraft:deepslate_lapis_ore"
|
||
- "minecraft:mossy_cobblestone"
|
||
- "minecraft:obsidian"
|
||
- "minecraft:chest"
|
||
- "minecraft:diamond_ore"
|
||
- "minecraft:deepslate_diamond_ore"
|
||
- "minecraft:redstone_ore"
|
||
- "minecraft:deepslate_redstone_ore"
|
||
- "minecraft:clay"
|
||
- "minecraft:emerald_ore"
|
||
- "minecraft:deepslate_emerald_ore"
|
||
- "minecraft:ender_chest"
|
||
|
||
# Sends lightweight distant-player snapshots beyond normal entity tracking range.
|
||
# This does not keep distant entities ticking. Larger ranges and more frequent
|
||
# updates can increase server work, traffic and client rendering work.
|
||
# "opt_in" shares only targets whose clients explicitly allow sharing; "on" can
|
||
# also include vanilla players. Exclusions, visibility rules and opt-outs still apply.
|
||
far_players:
|
||
mode: "on" # "off", "opt_in" or "on"; all modes honor exclusions and sharing opt-outs.
|
||
update_interval_ticks: 10 # 10 ticks = two updates/second at 20 TPS; range 2–100.
|
||
distance:
|
||
min_blocks: 0 # 0 = no additional inner ring; cannot exceed max_blocks.
|
||
max_blocks: 2048 # Server visibility ceiling; range 128–16384 blocks.
|
||
send_spectators: false # Include spectator targets if other privacy checks allow them.
|
||
excluded_players: [] # Player names or UUIDs never shared; kept out of diagnostic exports.
|
||
|
||
# Bukkit event hooks invalidate cached LODs after world edits. Adding frequent
|
||
# events can improve coverage but increase work; edits without a matching event
|
||
# may remain stale until saved terrain is checked by the store's periodic resweep.
|
||
paper:
|
||
update_events: # [restart] Bukkit events used to detect changed terrain.
|
||
- "org.bukkit.event.block.BlockPlaceEvent"
|
||
- "org.bukkit.event.block.BlockBreakEvent"
|
||
- "org.bukkit.event.block.BlockExplodeEvent"
|
||
- "org.bukkit.event.entity.EntityExplodeEvent"
|
||
- "org.bukkit.event.block.BlockBurnEvent"
|
||
- "org.bukkit.event.block.BlockFadeEvent"
|
||
- "org.bukkit.event.block.BlockFormEvent"
|
||
- "org.bukkit.event.block.BlockGrowEvent"
|
||
- "org.bukkit.event.block.BlockSpreadEvent"
|
||
- "org.bukkit.event.block.LeavesDecayEvent"
|
||
- "org.bukkit.event.block.BlockPistonExtendEvent"
|
||
- "org.bukkit.event.block.BlockPistonRetractEvent"
|
||
- "org.bukkit.event.entity.EntityChangeBlockEvent"
|
||
- "org.bukkit.event.world.StructureGrowEvent"
|