global.conf 文件

全局设定

Sponge 的全局配置储存在 global.conf 文件中。游戏会自动在 config/sponge 目录下创建该文件。许多配置同时可以通过特定世界或维度中对应的配置文件中的配置来覆盖。

下表给出了 global.conf 文件中所有可用的设定选项及对应的说明。注意:有些内容在缺省设定中不存在,需要在需要时自行加上。在表格的后面还提供了一份未经修改的 global.conf 以供参考。

Sponge 的全局属性

block-capturing

auto-populate
启用后,新出现的方块将会以默认值添加到配置文件中。
mods
基于每个 Mod 的方块 ID 的映射,用于控制对应的捕获行为
block-tick-capturing
启用后,将会执行对特定方块的 tick 调度的单独捕获。
enabled
禁用后,将忽略所有针对该 Mod 的特殊规则。
block-tick-capturing
启用后,将会执行对特定方块的 tick 调度的单独捕获。

block-tracking

block-blacklist
玩家放置方块追踪器的方块 ID 黑名单,在此黑名单中的方块不会被方块放置追踪器追踪。
enabled
启用方块位置变化的玩家追踪支持。注意:你应当只在你不需要知道哪个玩家导致了方块更新时禁用此功能。

bungeecord

ip-forwarding
启用后,BungeeCord 可转发 IP 地址、UUID、玩家档案到服务器。

cause-tracker

capture-async-spawning-entities
启用后,若有 Mod 或插件试图在非主线程上生成实体,Sponge 将捕获该操作,并将其转移到主线程上正确生成。这样做是因为有些 Mod 没有考虑非主线程上生成实体的后果,及潜在的竞争条件。禁用此选项后,Sponge 会忽略该操作,并生成一个警告。
generate-stacktrace-per-phase
启用后,Sponge 会在每一次切换 PhaseState 时,生成更为全面的 PhaseState 的调试信息及对应的栈帧,可在 PhaseState 出错时进行更为精细的调试。注意,这个功能的速度并不快,频繁生成栈帧可能会有潜在的性能开销。
maximum-printed-runaway-counts
若没有开启详细信息,被打印的逃逸的 PhaseState 数量将会限定在该选项设定的值以内,这通常是因为 PhaseState 没有完成。这个选项的意义在于防止某些罕见情况下 PhaseState 的逃逸反复出现并在终端中输出对应信息的情况,虽然这个情况不应该发生。若详细信息开启,这个选项将会被忽略。
verbose
设定为 true 后,Phase Tracker 会在进入过多 Phase 的时候打印相关信息,通常这意味着有潜在的反复进入 Phase,或者追踪的 Phase 没有完成的问题。若相关问题还未有人反馈,请反馈给 Sponge。若相关问题已有人反馈,可以直接禁用此选项。
verbose-errors
设定为 true 后,Phase 追踪器会在非 PhaseTracker 抛出异常时打印当前 Phase 的额外信息。此功能通常没有必要使用,因为异常本身通常就足以揭示问题所在。

commands

aliases
命令别名可用于在多个插件同时请求某一个命令时解决冲突,语法:<unqualified command>=<plugin name>,比如 “sethome=homeplugin”。
multi-world-patches
修正某些指令,使其只修改命令发送者当前所在的世界,而非所有世界的属性。
config-enabled
该选项在全局配置中没有效果。在每个维度/世界的配置中,这个选项可以控制当前配置是否覆盖其继承的配置中的对应选项。

debug

concurrent-entity-checks
探测并阻止对实体的并发操作。警告:可能会大幅影响服务器性能。仅用于调试已存在的问题。
dump-chunks-on-deadlock
在遇到死锁时导出区块数据。
dump-heap-on-deadlock
在遇到死锁时导出堆内存数据。
dump-threads-on-warn
在死锁警告时导出服务器当前线程信息。
thread-contention-monitoring
设定为 true 后,将启用关于 Java 的线程竞争(Thread Contention)的监视器。

entity

collision-warn-size
在同一个位置发生实体碰撞达到设定的上限值时触发警告。可以将其设为 0 来禁用。
count-warn-size
在同一个世界维度中出现的实体达到设定的上限值时触发警告,将其设为 0 来禁用。
entity-painting-respawn-delay
设定作为实体的画在更换的多少个 tick 后同步至客户端。
human-player-list-remove-delay
将虚拟玩家从 Tab 列表中移除的时间(范围:0 - 100 tick)。
item-despawn-rate
控制物品的消失时间,单位为 tick。
living-hard-despawn-range
保证实体不会消失的距离玩家的最大距离(译者注:参见 Minecraft 的刷怪机制)。
living-soft-despawn-minimum-life
在消失(译者注:见上一条)和潜在地消失(译者注:见下一条)范围之间的实体尝试消失的时间间隔(译者注:参见 Minecraft 的刷怪机制)。
living-soft-despawn-range
保证实体不会潜在地消失的距离玩家的最大距离(译者注:参见 Minecraft 的刷怪机制)。
max-bounding-box-size
在实体存活期间的碰撞箱的最大尺寸。可以将其设为 0 以禁用。
max-speed
实体存活期间的最大速度的平方。可以将其设为 0 以禁用。

entity-activation-range

auto-populate
设定为 true 后,新出现的实体将添加到该配置的默认值。
defaults
生物的默认激活范围(被特殊指定的生物除外)。
mods
和具体模组有关,比如表示 Minecraft 游戏本体的默认模组(译者注:Sponge 本身将 Minecraft 本体看作是一个模组)。

entity-collisions

auto-populate
设定为 true 后,新出现的实体或方块将添加到该配置的默认值。
defaults
生物或方块的默认碰撞盒(被特殊指定的生物或方块除外)。
max-entities-within-aabb
某个方块或实体能碰撞的其他实体的最大数量。这个选项可用于改善诸如 1 格的刷怪点等情况下有多于 8 个实体互相碰撞的情况。设定为 0 以禁用。
mods
和具体模组有关,比如表示 Minecraft 游戏本体的默认模组(译者注:Sponge 本身将 Minecraft 本体看作是一个模组)。
defaults
生物或方块的默认碰撞盒(被特殊指定的生物或方块除外)。
enabled
设定为 false 后,将忽略所有针对该 Mod 的特殊规则。
defaults
生物或方块的默认碰撞盒(被特殊指定的生物或方块除外)。
enabled
设定为 false 后,将忽略所有针对该 Mod 的特殊规则。

exploits

prevent-creative-itemstack-name-exploit
阻止客户端发送名称长度超过字符串的最大限制的物品数据包。
prevent-sign-command-exploit
阻止客户端发送没有相应权限的玩家创建包含命令的内容的牌子数据包。

general

config-dir
Sponge 插件的配置文件所在目录,可相对于游戏本身目录,也可使用绝对路径。默认值 “${CANONICAL_GAME_DIR}/config” 代表使用游戏本身目录下的 “config” 文件夹。如果你希望插件配置文件夹位于主配置文件夹下面,可以使用类似 “${CANONICAL_CONFIG_DIR}/sponge/plugins” 的值。注意,这里不推荐将值直接设定为 “${CANONICAL_CONFIG_DIR}/sponge”,因为这样可能会与 Sponge 的核心配置文件产生冲突。
disable-warnings
阻止将警告消息发送到服务器管理员处的行为。
file-io-thread-sleep
设定为 true 后,将启用区块保存之间的休眠,请注意内存问题。
plugins-dir
额外的插件安装目录,Sponge 会同时在这个目录下搜索可加载的插件,路径可相对于游戏所在目录,也可使用绝对路径。默认值 “${CANONICAL_MODS_DIR}/plugins” 代表在游戏所在目录的 mods 文件夹下的 plugins 文件夹下搜索插件。如果你想让 plugins 文件夹在游戏根目录下,可将此设定为 “${CANONICAL_GAME_DIR}/plugins”。

logging

block-break
当方块被破坏时记录。
block-modify
当方块被改变时记录。
block-place
当方块被放置时记录。
block-populate
当方块在区块中填充时记录。
block-tracking
当方块被玩家放置和跟踪时记录。
chunk-gc-queue-unload
当区块进入区块垃圾回收器的卸载队列时记录。
chunk-load
当区块加载时记录。
chunk-unload
当区块卸载时记录。
entity-collision-checks
是否记录对于实体碰撞或计数的检查。
entity-death
当生物实体被破坏(死亡)时记录。
entity-despawn
当生物实体消失(Despawn)时记录。
entity-spawn
当生物实体在世界上生成(Spawn)时记录。
entity-speed-removal
是否记录由于实体移速过快而导致的移除。
exploit-itemstack-name-overflow
记录对客户端发送名称长度超过字符串的最大限制的物品数据包的阻止行为。
exploit-respawn-invisibility
记录玩家试图重生时对其他玩家不可见的行为。
exploit-sign-command-updates
记录对客户端发送没有相应权限的玩家创建包含命令的内容的牌子数据包的阻止行为。
log-stacktraces
将堆栈跟踪(Stacktrace)添加到 dev 日志记录中。
world-auto-save
当世界自动保存区块数据时记录。注意:根据自动保存间隔的设定不同,这个选项可能会导致日志刷屏。

metrics-collection

default-permission
决定新安装的插件默认是否能收集服务器的 metrics 信息。
plugin-permissions
针对每个插件的服务器 metrics 信息收集开关。

modules

movement-checks
启用原版移动及速度检查。
realtime
尽可能使用现实世界的时间,而非游戏刻。
tileentity-activation
控制 TileEntity 的方块范围和刷新率。使用时请小心,此功能可能会影响正常的游戏功能。

movement-checks

moved-wrongly
控制是否强制“player/entity moved wrongly!”检查
player-moved-too-quickly
控制是否强制“player moved too quickly!”检查
player-vehicle-moved-too-quickly
控制是否强制“vehicle of player moved too quickly!”检查

optimizations

async-lighting
异步进行光照更新。
enabled
启用后,光照将异步更新。
num-threads
用于进行异步光照更新的线程数量。(默认:2)
cache-tameable-owners
缓存可驯服动物的主人,以避免反复使用 Data Watcher 进行查找。若有 Mod 因此出现问题,请先尝试禁用此功能。
drops-pre-merge
启用后,方块的掉落将会先预处理,避免在掉落物实体生成后再进行合并操作。通常,Sponge 的判断机制足以判断何时应尝试预先合并物品,何时不应尝试;但仍有一部分 Mod 的行为依赖于掉落物不合并,此时物品应会不经处理直接掉出。
enchantment-helper-leak-fix
设定为 true 后,将试图(若安装有 SpongeForge)在不影响 Forge 的情况下修复 Minecraft 的 EnchantmentHelper 代码中可能泄漏世界的的引用的问题。Forge 本身有类似的修复,但 Sponge 的修复更为激进一些;同时原版本身暂未修复此问题,所以在运行 SpongeVanilla 时建议启用此选项。参阅 https://bugs.mojang.com/browse/MC-128547 获得更多信息。
panda-redstone
启用后,将启用 Panda4494 的红石算法实现以提高性能。参阅 https://bugs.mojang.com/browse/MC-11193 获得详细信息。注意:该优化有若干问题,相关解释可在上文提到的链接中找到。
structure-saving
处理保存到磁盘中的结构。大型地图中的某些结构可能会占用大量磁盘空间,这些数据也只需要在生成的时候才需要。禁用此选项可节约磁盘空间,对于已经生成的地图来说这样也可以加快保存速度。警告:禁用结构保存会导致原版 locate 命令不可用。
auto-populate
设定为 true 后,新出现的结构将添加到该配置的默认值。
mods
和具体模组有关,比如表示 Minecraft 游戏本体的默认模组(译者注:Sponge 本身将 Minecraft 本体看作是一个模组)。
enabled
设定为 false 后,该 Mod 的结构将不会保存。
spawner
用于控制玩家周围的生物刷新。注意:半径的选择是取生物的生成半径和服务器视距的较小值。

spawner

spawn-limit-ambient
刷怪箱可在玩家周围生成的环境生物数量。
spawn-limit-animal
刷怪箱可在玩家周围生成的动物数量。
spawn-limit-aquatic
刷怪箱可在玩家周围生成的水生动物数量。
spawn-limit-monster
刷怪箱可在玩家周围生成的怪物数量。
tick-rate-ambient
环境生物刷新率。默认:400
tick-rate-animal
动物刷新率。默认:400
tick-rate-aquatic
水生动物刷新率。默认:400
tick-rate-monster
怪物刷新率。默认:400
sql
与 SQL 服务相关的配置选项,包括连接、别名等。

sql

aliases
SQL 连接的别名。格式:jdbc:protocol://[username[:password]@]host/database
teleport-helper
安全传送机制使用的方块黑名单。

teleport-helper

force-blacklist
设定为 true 后,此黑名单将会永久有效;否则插件可以自行决定是否使用此黑名单。
unsafe-body-block-ids
在这里列出的方块不会被 Sponge 的安全传送机制认为是安全的传送目的地。你应该仅将没有正确选择的方块列入此表;会阻止移动的固态方块默认已经自动排除。
unsafe-floor-block-ids
在这个列表中出现的方块将不会被 Sponge 的安全传送机制选中为安全的地板方块。

tileentity-activation

auto-populate
设定为 true 后,新出现的 TileEntity 将添加到该配置的默认值。
default-block-range
TileEntity 使用的默认方块激活范围(被特殊指定的 TileEntity 除外)。
default-tick-rate
TileEntity 使用的默认刷新频率(被特殊指定的 TileEntity 除外)。
mods
和具体模组有关,比如表示 Minecraft 游戏本体的默认模组(译者注:Sponge 本身将 Minecraft 本体看作是一个模组)。

timings

world

auto-player-save-interval
全局玩家数据自动保存间隔,单位为 tick(默认值:900)。注:20 tick 等价于一秒。设定为 0 时将禁用此选项。
auto-save-interval
指定世界中所有已加载区块数据的自动保存间隔,单位为 tick(默认值:900)。注:20 tick 等价于一秒。设定为 0 时将禁用此选项。
chunk-gc-load-threshold
触发强制清理前允许的新加载区块数。注:触发后,区块加载阈值会重制并开始增加。默认禁用。
chunk-gc-tick-interval
清理指定世界中泄漏的不活跃区块的时间间隔,单位为 tick(默认值:600)。设定为 0 时将禁用此选项,并启用对应的原版机制。
chunk-unload-delay
区块被标记为不活跃时的卸载推迟时间,单位为秒(默认值:15)。注:区块重新活跃时推迟时间会重制。
deny-chunk-requests
设定为 true 后,所有对未加载区块的操作都会被拒绝(除了世界生成和玩家移动等特殊情况)。注意:此功能虽然有助于性能提升,但其仍处于实验阶段,如果遇到问题,我们建议禁用此功能。
flowing-lava-decay
设定为 true 后,没有源头的原版熔岩和原版水的行为一致。
gameprofile-lookup-batch-size
单次对 Mojang 验证服务器发送的 GameProfile 请求所包含的任务数量(默认值:1)。注:Mojang 每 10 分钟只接受来自单一 IP 地址的 600 次请求。如果你在单一 IP 地址上运行有多个服务器,建议提高 gameprofile-task-interval 的值以平衡请求数量。设定为 0 或负值将默认使用默认值。更多信息可参考 http://wiki.vg/Mojang_API
gameprofile-lookup-task-interval
GameProfileQueryTask 处理队列中的 GameProfile 请求的等待时间,单位为秒(默认值:4)。注:如果遇到下列错误,应将此设定为更大的值:”The client has sent too many requests within a certain amount of time”。设定为 0 或负值时,将直接使用默认值。
generate-spawn-on-load
设定为 true 后,世界会在加载后生成 spawn。
infinite-water-source
原版水方块的行为是无限水。
invalid-lookup-uuids
在该列表中的 UUID 永远不会提交到 Mojang 的验证服务器进行查询。注意:如果你在使用 SpongeForge,请确保你使用的 Mod 用到的 FakePlayer 的 UUID 都在此列表中。
item-merge-radius
定义了物品实体的合并半径,即当两个物品实体之间的距离不超过此设定值时,将尝试合并到一起。通常,原版使用的默认值为 0.5,但一般来说为了性能可将其设定为 2.5。注:继续增加这个值可能会对性能有负面影响,因为这样会引发更多的物品合并。不支持设定为负值!
keep-spawn-loaded
启用后,该世界的出生点区块(spawn 区块)会在没有玩家存在时保持加载。
leaf-decay
启用后,树叶会自然凋谢。
load-on-startup
启用后,该世界将会在服务器启动时加载。
max-chunk-unloads-per-tick
单个 tick 中在区块卸载等待队列中的区块数量最大值。注:启用区块 GC 后,该设定仅在 GC 运行的 tick 中有效(由 chunk-gc-tick-interval 控制);若该最大值过低,残留在世界中未卸载的区块数会增加,进而坑会导致 TPS 下降。(默认值:100)
mob-spawn-range
指定生成生物的半径(以区块为单位)。此数值受 server.properties 中的当前视野范围限制。
portal-agents
一个在这个世界上的所有用于传送门代理的传送门列表。如果想要覆盖它,请把目标世界名称换成任何其他的可用的世界。注意:如果设置的目标世界不存在,配置将仍使用默认值。
pvp-enabled
启用后,该世界将允许 PVP。
view-distance
每个世界或维度的视距设定。其值必须大于等于 3,并且小于等于 32。若设定为 -1,将使用全局视距。
weather-ice-and-snow
启用后,在指定生物群系中允许自然形成冰和雪。
weather-thunder
启用后,雷暴将会在允许雷暴的生物群系中出现。
world-enabled
启用后,该世界将会被注册。

该配置在 SpongeForge build 3442(基于 Forge 2705)及 SpongeAPI 版本 7.1.0 的环境下生成:

# 1.0
#
# # If you need help with the configuration or have any questions related to Sponge,
# # join us at the IRC or drop by our forums and leave a post.
#
# # IRC: #sponge @ irc.esper.net ( https://webchat.esper.net/?channel=sponge )
# # Forums: https://forums.spongepowered.org/
#

sponge {
    # Stopgap measures for dealing with broken mods
    broken-mods {
        # A list of mod ids that have broken network handlers (they interact with the game from a Netty handler thread).
        # All network handlers from a forcibly scheduled to run on the main thread.
        # Note that this setting should be considered a last resort, and should only be used as a stopgap measure while waiting for a mod to properly fix the issue.
        broken-network-handler-mods=[]
    }
    bungeecord {
        # If 'true', allows BungeeCord to forward IP address, UUID, and Game Profile to this server.
        ip-forwarding=false
    }
    cause-tracker {
        # If set to 'true', when a mod or plugin attempts to spawn an entity
        # off the main server thread, Sponge will automatically
        # capture said entity to spawn it properly on the main
        # server thread. The catch to this is that some mods are
        # not considering the consequences of spawning an entity
        # off the server thread, and are unaware of potential race
        # conditions they may cause. If this is set to false,
        # Sponge will politely ignore the entity being spawned,
        # and emit a warning about said spawn anyways.
        capture-async-spawning-entities=true
        # If 'true', more thorough debugging for PhaseStates
        # such that a StackTrace is created every time a PhaseState
        # switches, allowing for more fine grained troubleshooting
        # in the cases of runaway phase states. Note that this is
        # not extremely performant and may have some associated costs
        # with generating the stack traces constantly.
        generate-stacktrace-per-phase=false
        # The maximum number of times to recursively process transactions in a single phase.
        # Some mods may interact badly with Sponge's block capturing system, causing Sponge to
        # end up capturing block transactions every time it tries to process an existing batch.
        # Due to the recursive nature of the depth-first processing that Sponge uses to handle block transactions,
        # this can result in a stack overflow, which causes us to lose all infomration about the original cause of the issue.
        # To prevent a stack overflow, Sponge tracks the current processing depth, and aborts processing when it exceeds
        # this threshold.
        # The default value should almost always work properly -  it's unlikely you'll ever have to change it.
        max-block-processing-depth=100
        # If verbose is not enabled, this restricts the amount of
        # runaway phase state printouts, usually happens on a server
        # where a PhaseState is not completing. Although rare, it should
        # never happen, but when it does, sometimes it can continuously print
        # more and more. This attempts to placate that while a fix can be worked on
        # to resolve the runaway. If verbose is enabled, they will always print.
        maximum-printed-runaway-counts=3
        # If 'true', the phase tracker will print out when there are too many phases
        # being entered, usually considered as an issue of phase re-entrance and
        # indicates an unexpected issue of tracking phases not to complete.
        # If this is not reported yet, please report to Sponge. If it has been
        # reported, you may disable this.
        verbose=true
        # If 'true', the phase tracker will dump extra information about the current phases
        # when certain non-PhaseTracker related exceptions occur. This is usually not necessary, as the information
        # in the exception itself can normally be used to determine the cause of the issue
        verbose-errors=false
    }
    commands {
        # Command aliases will resolve conflicts when multiple plugins request a specific command,
        # Correct syntax is <unqualified command>=<plugin name> e.g. "sethome=homeplugin"
        aliases {}
        # Patches the specified commands to respect the world of the sender instead of applying the
        # changes on the all worlds.
        multi-world-patches {}
    }
    debug {
        # Detect and prevent parts of PlayerChunkMap being called off the main thread.
        # This may decrease sever preformance, so you should only enable it when debugging a specific issue.
        concurrent-chunk-map-checks=false
        # Detect and prevent certain attempts to use entities concurrently.
        # WARNING: May drastically decrease server performance. Only set this to 'true' to debug a pre-existing issue.
        concurrent-entity-checks=false
        # Dump chunks in the event of a deadlock
        dump-chunks-on-deadlock=false
        # Dump the heap in the event of a deadlock
        dump-heap-on-deadlock=false
        # Dump the server thread on deadlock warning
        dump-threads-on-warn=false
        # If 'true', Java's thread contention monitoring for thread dumps is enabled.
        thread-contention-monitoring=false
    }
    entity {
        # Number of colliding entities in one spot before logging a warning. Set to 0 to disable
        collision-warn-size=200
        # Number of entities in one dimension before logging a warning. Set to 0 to disable
        count-warn-size=0
        # Number of ticks before a painting is respawned on clients when their art is changed
        entity-painting-respawn-delay=2
        # Number of ticks before the fake player entry of a human is removed from the tab list (range of 0 to 100 ticks).
        human-player-list-remove-delay=10
        # Controls the time in ticks for when an item despawns.
        item-despawn-rate=6000
        # The upper bounded range where living entities farther from a player will likely despawn
        living-hard-despawn-range=128
        # The amount of seconds before a living entity between the soft and hard despawn ranges from a player to be considered for despawning
        living-soft-despawn-minimum-life=30
        # The lower bounded range where living entities near a player may potentially despawn
        living-soft-despawn-range=32
        # Maximum size of an entity's bounding box before removing it. Set to 0 to disable
        max-bounding-box-size=1000
        # Square of the maximum speed of an entity before removing it. Set to 0 to disable
        max-speed=100
    }
    entity-activation-range {
        # If 'true', newly discovered entities will be added to this config with a default value.
        auto-populate=false
        # Default activation ranges used for all entities unless overridden.
        defaults {
            ambient=32
            aquatic=32
            creature=32
            misc=16
            monster=32
        }
        # Per-mod overrides. Refer to the minecraft default mod for example.
        mods {}
    }
    entity-collisions {
        # If 'true', newly discovered entities/blocks will be added to this config with a default value.
        auto-populate=false
        # Default maximum collisions used for all entities/blocks unless overridden.
        defaults {
            blocks=8
            entities=8
        }
        # Maximum amount of entities any given entity or block can collide with. This improves
        # performance when there are more than 8 entities on top of each other such as a 1x1
        # spawn pen. Set to 0 to disable.
        max-entities-within-aabb=8
        # Per-mod overrides. Refer to the minecraft default mod for example.
        mods {
            botania {
                blocks {}
                # Default maximum collisions used for all entities/blocks unless overridden.
                defaults {}
                # If 'false', entity collision rules for this mod will be ignored.
                enabled=true
                entities {
                    botaniacorporeaspark=-1
                    botaniaspark=-1
                }
            }
            minecraft {
                blocks {
                    "detector_rail"=1
                    "heavy_weighted_pressure_plate"=150
                    "light_weighted_pressure_plate"=15
                    "mob_spawner"=-1
                    "stone_pressure_plate"=1
                    "wooden_button"=1
                    "wooden_pressure_plate"=1
                }
                # Default maximum collisions used for all entities/blocks unless overridden.
                defaults {}
                # If 'false', entity collision rules for this mod will be ignored.
                enabled=true
                entities {
                    thrownpotion=-1
                }
            }
        }
    }
    exploits {
        # Prevents an exploit in which the client sends a packet with the
        # itemstack name exceeding the string limit.
        prevent-creative-itemstack-name-exploit=true
        # Prevents an exploit in which the client sends a packet to update a sign containing
        # commands from a player without permission.
        prevent-sign-command-exploit=true
    }
    general {
        # The directory for Sponge plugin configurations, relative to the
        # execution root or specified as an absolute path.
        # Note that the default: "${CANONICAL_GAME_DIR}/config"
        # is going to use the "plugins" directory in the root game directory.
        # If you wish for plugin configs to reside within a child of the configuration
        # directory, change the value to, for example, "${CANONICAL_CONFIG_DIR}/sponge/plugins".
        # Note: It is not recommended to set this to "${CANONICAL_CONFIG_DIR}/sponge", as there is
        # a possibility that plugin configurations can conflict the Sponge core configurations.
        #
        config-dir="${CANONICAL_GAME_DIR}/config"
        # Disable warning messages to server admins
        disable-warnings=false
        # If 'true', sleeping between chunk saves will be enabled, beware of memory issues.
        file-io-thread-sleep=false
        # Additional directory to search for plugins, relative to the
        # execution root or specified as an absolute path.
        # Note that the default: "${CANONICAL_MODS_DIR}/plugins"
        # is going to search for a plugins folder in the mods directory.
        # If you wish for the plugins folder to reside in the root game
        # directory, change the value to "${CANONICAL_GAME_DIR}/plugins".
        plugins-dir="${CANONICAL_MODS_DIR}/plugins"
    }
    ip-sets {}
    logging {
        # Log when blocks are broken
        block-break=false
        # Log when blocks are modified
        block-modify=false
        # Log when blocks are placed
        block-place=false
        # Log when blocks are populated in a chunk
        block-populate=false
        # Log when blocks are placed by players and tracked
        block-tracking=false
        # Log when chunks are queued to be unloaded by the chunk garbage collector.
        chunk-gc-queue-unload=false
        # Log when chunks are loaded
        chunk-load=false
        # Log when chunks are unloaded
        chunk-unload=false
        # Whether to log entity collision/count checks
        entity-collision-checks=false
        # Log when living entities are destroyed
        entity-death=false
        # Log when living entities are despawned
        entity-despawn=false
        # Log when living entities are spawned
        entity-spawn=false
        # Whether to log entity removals due to speed
        entity-speed-removal=false
        # Log when server receives exploited packet with itemstack name exceeding string limit.
        exploit-itemstack-name-overflow=false
        # Log when player attempts to respawn invisible to surrounding players.
        exploit-respawn-invisibility=false
        # Log when server receives exploited packet to update a sign containing commands from player with no permission.
        exploit-sign-command-updates=false
        # Add stack traces to dev logging
        log-stacktraces=false
        # Log when a world auto-saves its chunk data. Note: This may be spammy depending on the auto-save-interval configured for world.
        world-auto-save=false
    }
    metrics {
        # Determines whether plugins that are newly added are allowed to perform
        # data/metric collection by default. Plugins detected by Sponge will be added to the "plugin-permissions" section with this value.
        #
        # Set to true to enable metric gathering by default, false otherwise.
        default-permission=false
        # Provides (or revokes) permission for metric gathering on a per plugin basis.
        # Entries should be in the format "plugin-id=<true|false>".
        #
        # Deleting an entry from this list will reset it to the default specified in
        # "default-permission"
        plugin-permissions {
            test-gradle-plugin=false
        }
    }
    modules {
        # Enables experimental fixes for broken mods
        broken-mod=false
        bungeecord=false
        entity-activation-range=true
        entity-collisions=true
        exploits=true
        # Allows configuring Vanilla movement and speed checks
        movement-checks=false
        optimizations=true
        # Use real (wall) time instead of ticks as much as possible
        realtime=false
        # Controls block range and tick rate of tileentities.
        # Use with caution as this can break intended functionality.
        tileentity-activation=false
        timings=true
        tracking=true
    }
    movement-checks {
        # Controls whether the 'player/entity moved wrongly!' check will be enforced
        moved-wrongly=true
        # Controls whether the 'player moved too quickly!' check will be enforced
        player-moved-too-quickly=true
        # Controls whether the 'vehicle of player moved too quickly!' check will be enforced
        player-vehicle-moved-too-quickly=true
    }
    optimizations {
        # Runs lighting updates asynchronously.
        async-lighting {
            # If 'true', lighting updates are run asynchronously.
            enabled=true
            # The amount of threads to dedicate for asynchronous lighting updates. (Default: 2)
            num-threads=2
        }
        # Caches tameable entities owners to avoid constant lookups against data watchers. If mods
        # cause issues, disable this.
        cache-tameable-owners=true
        # If 'true', block item drops are pre-processed to avoid
        # having to spawn extra entities that will be merged post spawning.
        # Usually, Sponge is smart enough to determine when to attempt an item pre-merge
        # and when not to, however, in certain cases, some mods rely on items not being
        # pre-merged and actually spawned, in which case, the items will flow right through
        # without being merged.
        drops-pre-merge=false
        # If 'true', provides a fix for possible leaks through
        # Minecraft's enchantment helper code that can leak
        # entity and world references without much interaction
        # Forge native (so when running SpongeForge implementation)
        # has a similar patch, but Sponge's patch works a little harder
        # at it, but Vanilla (SpongeVanilla implementation) does NOT
        # have any of the patch, leading to the recommendation that this
        # patch is enabled "for sure" when using SpongeVanilla implementation.
        # See https://bugs.mojang.com/browse/MC-128547 for more information.
        #
        enchantment-helper-leak-fix=true
        # If 'true', allows for Sponge to make better assumptinos on single threaded
        # operations with relation to various checks for server threaded operations.
        # This is default to true due to Sponge being able to precisely inject when
        # the server thread is available. This should make an already fast operation
        # much faster for better thread checks to ensure stability of sponge's systems.
        faster-thread-checks=true
        # If 'true', re-writes the incredibly inefficient Vanilla Map code.
        # This yields enormous performance enhancements when using many maps, but has a tiny chance of breaking mods that invasively modify Vanilla.It is strongly reccomended to keep this on, unless explicitly advised otherwise by a Sponge developer
        map-optimization=true
        # If 'true', uses Panda4494's redstone implementation which improves performance.
        # See https://bugs.mojang.com/browse/MC-11193 for more information.
        # Note: This optimization has a few issues which are explained in the bug report.
        panda-redstone=false
        # Handles structures that are saved to disk. Certain structures can take up large amounts
        # of disk space for very large maps and the data for these structures is only needed while the
        # world around them is generating. Disabling saving of these structures can save disk space and
        # time during saves if your world is already fully generated.
        # Warning: disabling structure saving will break the vanilla locate command.
        structure-saving {
            # If 'true', newly discovered structures will be added to this config with a default value.
            auto-populate=false
            enabled=false
            # Per-mod overrides. Refer to the minecraft default mod for example.
            mods {
                minecraft {
                    # If 'false', this mod will never save its structures.
                    enabled=true
                    structures {
                        mineshaft=false
                    }
                }
            }
        }
    }
    player-block-tracker {
        # Block IDs that will be blacklisted for player block placement tracking.
        block-blacklist=[]
        # If 'true', adds player tracking support for block positions.
        # Note: This should only be disabled if you do not care who caused a block to change.
        enabled=true
    }
    # Used to control spawn limits around players.
    # Note: The radius uses the lower value of mob spawn range and server's view distance.
    spawner {
        # The number of ambients the spawner can potentially spawn around a player.
        spawn-limit-ambient=15
        # The number of animals the spawner can potentially spawn around a player.
        spawn-limit-animal=15
        # The number of aquatics the spawner can potentially spawn around a player.
        spawn-limit-aquatic=5
        # The number of monsters the spawner can potentially spawn around a player.
        spawn-limit-monster=70
        # The ambient spawning tick rate. Default: 400
        tick-rate-ambient=400
        # The animal spawning tick rate. Default: 400
        tick-rate-animal=400
        # The aquatic spawning tick rate. Default: 400
        tick-rate-aquatic=400
        # The monster spawning tick rate. Default: 1
        tick-rate-monster=1
    }
    # Configuration options related to the Sql service, including connection aliases etc
    sql {
        # Aliases for SQL connections, in the format jdbc:protocol://[username[:password]@]host/database
        aliases {}
    }
    # Blocks to blacklist for safe teleportation.
    teleport-helper {
        # If 'true', this blacklist will always be respected, otherwise, plugins can choose whether
        # or not to respect it.
        force-blacklist=false
        # Block IDs that are listed here will not be selected by Sponge's safe teleport routine as
        # a safe block for players to warp into.
        # You should only list blocks here that are incorrectly selected, solid blocks that prevent
        # movement are automatically excluded.
        unsafe-body-block-ids=[]
        # Block IDs that are listed here will not be selected by Sponge's safe
        # teleport routine as a safe floor block.
        unsafe-floor-block-ids=[]
    }
    tileentity-activation {
        # If 'true', newly discovered tileentities will be added to this config with default settings.
        auto-populate=false
        # Default activation block range used for all tileentities unless overridden.
        default-block-range=64
        # Default tick rate used for all tileentities unless overridden.
        default-tick-rate=1
        # Per-mod overrides. Refer to the minecraft default mod for example.
        mods {}
    }
    timings {
        enabled=true
        hidden-config-entries=[
            "sponge.sql"
        ]
        history-interval=300
        history-length=3600
        server-name-privacy=false
        verbose=false
    }
    world {
        # The auto-save tick interval used when saving global player data. (Default: 900)
        # Note: 20 ticks is equivalent to 1 second. Set to 0 to disable.
        auto-player-save-interval=900
        # The auto-save tick interval used to save all loaded chunks in a world.
        # Set to 0 to disable. (Default: 900)
        # Note: 20 ticks is equivalent to 1 second.
        auto-save-interval=900
        # The number of newly loaded chunks before triggering a forced cleanup.
        # Note: When triggered, the loaded chunk threshold will reset and start incrementing.
        # Disabled by default.
        chunk-gc-load-threshold=0
        # The tick interval used to cleanup all inactive chunks that have leaked in a world.
        # Set to 0 to disable which restores vanilla handling. (Default: 600)
        chunk-gc-tick-interval=600
        # The number of seconds to delay a chunk unload once marked inactive. (Default: 15)
        # Note: This gets reset if the chunk becomes active again.
        chunk-unload-delay=15
        # If 'true', any request for a chunk not currently loaded will be denied (exceptions apply
        # for things like world gen and player movement).
        # Warning: As this is an experimental setting for performance gain, if you encounter any issues
        # then we recommend disabling it.
        deny-chunk-requests=false
        # Lava behaves like vanilla water when source block is removed
        flowing-lava-decay=false
        # The amount of GameProfile requests to make against Mojang's session server. (Default: 1)
        # Note: Mojang accepts a maximum of 600 requests every 10 minutes from a single IP address.
        # If you are running multiple servers behind the same IP, it is recommended to raise the 'gameprofile-task-interval' setting
        # in order to compensate for the amount requests being sent.
        # Finally, if set to 0 or less, the default batch size will be used.
        # For more information visit http://wiki.vg/Mojang_API
        gameprofile-lookup-batch-size=1
        # The interval, in seconds, used by the GameProfileQueryTask to process queued GameProfile requests. (Default: 4)
        # Note: This setting should be raised if you experience the following error:
        # "The client has sent too many requests within a certain amount of time".
        # Finally, if set to 0 or less, the default interval will be used.
        gameprofile-lookup-task-interval=4
        # If 'true', this world will generate its spawn the moment its loaded.
        generate-spawn-on-load=false
        # Vanilla water source behavior - is infinite
        infinite-water-source=false
        # The list of uuid's that should never perform a lookup against Mojang's session server.
        # Note: If you are using SpongeForge, make sure to enter any mod fake player's UUID to this list.
        invalid-lookup-uuids=[
            "00000000-0000-0000-0000-000000000000",
            "0d0c4ca0-4ff1-11e4-916c-0800200c9a66",
            "41c82c87-7afb-4024-ba57-13d2c99cae77"
        ]
        # The defined merge radius for Item entities such that when two items are
        # within the defined radius of each other, they will attempt to merge. Usually,
        # the default radius is set to 0.5 in Vanilla, however, for performance reasons
        # 2.5 is generally acceptable.
        # Note: Increasing the radius higher will likely cause performance degradation
        # with larger amount of items as they attempt to merge and search nearby
        # areas for more items. Setting to a negative value is not supported!
        item-merge-radius=2.5
        # If 'true', this worlds spawn will remain loaded with no players.
        keep-spawn-loaded=true
        # If 'true', natural leaf decay is allowed.
        leaf-decay=true
        # If 'true', this world will load on startup.
        load-on-startup=true
        # The maximum number of queued unloaded chunks that will be unloaded in a single tick.
        # Note: With the chunk gc enabled, this setting only applies to the ticks
        # where the gc runs (controlled by 'chunk-gc-tick-interval')
        # Note: If the maximum unloads is too low, too many chunks may remain
        # loaded on the world and increases the chance for a drop in tps. (Default: 100)
        max-chunk-unloads-per-tick=100
        # Specifies the radius (in chunks) of where creatures will spawn.
        # This value is capped to the current view distance setting in server.properties
        mob-spawn-range=4
        # A list of all detected portal agents used in this world.
        # In order to override, change the target world name to any other valid world.
        # Note: If world is not found, it will fallback to default.
        portal-agents {
            "minecraft:default_the_end"=DIM1
            "minecraft:default_the_nether"=DIM-1
        }
        # If 'true', this world will allow PVP combat.
        pvp-enabled=true
        # Override world distance per world/dimension
        # The value must be greater than or equal to 3 and less than or equal to 32
        # The server-wide view distance will be used when the value is -1.
        view-distance=-1
        # If 'true', natural formation of ice and snow in supported biomes will be allowed.
        weather-ice-and-snow=true
        # If 'true', thunderstorms will be initiated in supported biomes.
        weather-thunder=true
        # If 'true', this world will be registered.
        world-enabled=true
    }
}