Minecraft 服务器优化指南
注意:对于使用原版、Fabric 或 Spigot(或低于 Paper)的用户,请进入你的 server.properties
文件并将 sync-chunk-writes
更改为 false
。在 Paper 及其分支上,此选项会被强制设置为 false,但在其他服务器实现上你需要手动将其设置为 false。这样可以让服务器在主线程之外保存区块,减轻主循环的负载。
适用于 1.20 版本的指南。部分内容可能仍适用于 1.15 - 1.19。
基于此指南和其他来源(所有相关链接在指南中均有提及)。
使用位于上方(在 README.md
旁边)的目录可以轻松导航本指南。
简介
永远不会有一个指南能给你完美的结果。每个服务器都有自己的需求和限制,取决于你愿意或能够牺牲多少。调整选项以微调它们以满足你的服务器需求是关键。本指南旨在帮助你理解哪些选项对性能有影响以及它们具体改变了什么。如果你认为本指南中有不准确的信息,可以自由地提出问题或设置拉取请求进行更正。
准备工作
服务器 JAR
你选择的服务器软件可以在性能和 API 可能性上产生巨大差异。目前有多种流行的服务器 JAR 可供选择,但也有一些由于各种原因应避免使用。
推荐的首选:
- Paper - 最流行的服务器软件,旨在提高性能,同时修复游戏和机制不一致的问题。
- Pufferfish - Paper 的分支,旨在进一步提高服务器性能。
- Purpur - Pufferfish 的分支,专注于功能和自定义自由度。
应避免使用:
- 任何声称异步处理的付费服务器 JAR - 99.99% 是骗局。
- Bukkit/CraftBukkit/Spigot - 性能上与其他可用服务器软件相比极其过时。
- 任何在运行时启用/禁用/重载插件的软件。请参阅本节了解原因。
- 许多进一步下游的 Pufferfish 或 Purpur 分支会遇到不稳定和其他问题。如果你寻求更多的性能提升,请优化你的服务器或投资个人私有分支。
地图预生成
由于多年来对区块生成所做的各种优化,地图预生成现在仅在 CPU 性能糟糕、单线程或受限的服务器上有用。不过,预生成通常用于生成如 Pl3xMap 或 Dynmap 等世界地图插件的区块。
如果你仍然想预生成世界,可以使用如 Chunky 这样的插件来实现。确保设置世界边界,以防止玩家生成新区块!请注意,根据你在预生成插件中设置的半径,预生成有时可能需要数小时。请记住,使用 Paper 及以上版本时,tps 不会受到区块加载的影响,但当服务器的 CPU 过载时,加载区块的速度会显著下降。
关键是要记住,主世界、地狱和末地有各自的世界边界,需要为每个世界分别设置。地狱维度比主世界小 8 倍(如果没有用数据包修改),所以如果设置错误,玩家可能会在世界边界之外!
确保设置一个原版世界边界(/worldborder set [diameter]
),因为它限制了某些功能,如宝藏地图的查找范围,可能会导致卡顿。
配置
网络
[server.properties]
network-compression-threshold
推荐初始值:256
此选项允许你设置数据包在服务器尝试压缩之前的大小上限。设置得更高可以节省一些 CPU 资源,但会增加带宽消耗,设置为 -1 则禁用压缩。设置得更高也可能会影响网络连接较慢的客户端。如果你的服务器在一个代理网络内或在同一台机器上(延迟小于 2 毫秒),禁用此选项(-1)将是有益的,因为内部网络速度通常可以处理额外的未压缩流量。
[purpur.yml]
use-alternate-keepalive
推荐初始值:true
你可以启用 Purpur 的备用保持连接系统,以便连接不良的玩家不会经常超时。已知与 TCPShield 不兼容。
启用此选项会每秒向玩家发送一个保持连接数据包,并且只有在 30 秒内没有响应任何一个数据包时才会超时。响应任何一个数据包将保持玩家连接。换句话说,它不会因为某个数据包在传输过程中丢失而踢出玩家。
~ https://purpurmc.org/docs/Configuration/#use-alternate-keepalive
区块
[server.properties]
simulation-distance
推荐初始值:4
模拟距离是指服务器将在玩家周围以区块为单位进行处理的距离。基本上是指从玩家开始发生事情的距离。这包括熔炉冶炼、作物和树苗生长等。你需要将此选项故意设置得较低,大约在 3
或 4
之间,因为存在 view-distance
。这允许加载更多的区块而不进行处理。这样有效地允许玩家看得更远,而不会有同样的性能影响。
view-distance
推荐初始值:7
这是将发送给玩家的区块距离,类似于 Paper 的 no-tick-view-distance。
总视距将等于 simulation-distance
和 view-distance
之间的最大值。例如,如果模拟距离设置为 4,而视距设置为 12,则发送给客户端的总距离将是 12 个区块。
[spigot.yml]
view-distance
推荐初始值:默认
如果未设置为 default
,此值将覆盖 server.properties 中的值。你应该保持默认,以便更轻松地管理模拟距离和视距。
[paper-world configuration]
delay-chunk-unloads-by
推荐初始值:10s
此选项允许你配置玩家离开后区块保持加载的时间。这有助于避免玩家来回移动时不断加载和卸载相同的区块。设置得太高会导致一次加载太多区块。在频繁传送和加载的区域,考虑保持该区域永久加载。这比不断加载和卸载区块对服务器的负担更轻。
max-auto-save-chunks-per-tick
推荐初始值:8
允许你通过在更长时间内分散任务来减缓增量世界保存,以获得更好的平均性能。如果有 20-30 名以上玩家,你可能希望将此值设置得高于 8
。如果增量保存不能及时完成,那么 Bukkit 将一次性保存剩余的区块并重新开始过程。
prevent-moving-into-unloaded-chunks
推荐初始值:true
启用后,防止玩家移动到未加载的区块,导致同步加载,从而拖慢主线程并引起卡顿。玩家进入未加载区块的概率与视距成反比。
entity-per-chunk-save-limit
推荐初始值:
area_effect_cloud: 8
arrow: 16
dragon_fireball: 3
egg: 8
ender_pearl: 8
experience_bottle: 3
experience_orb: 16
eye_of_ender: 8
fireball: 8
firework_rocket: 8
llama_spit: 3
potion: 8
shulker_bullet: 8
small_fireball: 8
snowball: 8
spectral_arrow: 16
trident: 16
wither_skull: 4
通过此条目,你可以设置指定类型实体的保存数量限制。你应该至少为每种投射物提供一个限制,以避免大量投射物被保存并在加载时导致服务器崩溃。你可以在这里放置任何实体 ID,请参阅 Minecraft 维基找到实体的 ID。请根据需要调整限制。建议所有投射物的值大约为 10
。你也可以将其他实体类型添加到该列表中。此配置选项的设计并非为了防止玩家制作大型刷怪场。
[pufferfish.yml]
max-loads-per-projectile
推荐初始值:8
指定投射物在其生命周期内可以加载的最大区块数量。减少此值将减少实体投射物引起的区块加载,但可能会导致三叉戟、末影珍珠等出现问题。
生物
[bukkit.yml]
spawn-limits
推荐初始值:
monsters: 20
animals: 5
water-animals: 2
water-ambient: 2
water-underground-creature: 3
axolotls: 3
ambient: 1
限制生物数量的数学公式是 [playercount] * [limit]
,其中 "playercount" 是服务器上的当前玩家数量。逻辑上,数字越小,看到的生物就越少。per-player-mob-spawn
施加了一个额外的限制,确保生物在玩家之间均匀分布。减少此值是一把双刃剑;是的,服务器的工作量减少了,但在某些游戏模式中,自然生成的生物是游戏玩法的重要组成部分。如果你正确调整 mob-spawn-range
,可以将此值降低到 20 或更少。如果你使用 Paper,可以在 [paper-world configuration] 中为每个世界设置生物限制。
ticks-per
推荐初始值:
monster-spawns: 10
animal-spawns: 400
water-spawns: 400
water-ambient-spawns: 400
water-underground-creature-spawns: 400
axolotl-spawns: 400
ambient-spawns: 400
此选项设置服务器尝试生成某些生物的时间间隔(以刻为单位)。水生/环境生物不需要每刻生成一次,因为它们通常不会很快被杀死。至于怪物:稍微增加生成之间的时间间隔不应影响刷怪场的生成率。在大多数情况下,此选项下的所有值应高于 1
。设置得更高还可以让服务器更好地应对禁用生物生成的区域。
[spigot.yml]
mob-spawn-range
推荐初始值:3
允许你减少在玩家周围生成生物的范围(以区块为单位)。根据你服务器的游戏模式和玩家数量,你可能希望减少此值以及 [bukkit.yml] 中的 spawn-limits
。设置得更低会让玩家感觉周围有更多的生物。此值应低于或等于你的模拟距离,并且永远不应大于你的硬性消失范围 / 16。
entity-activation-range
推荐初始值:
animals: 16
monsters: 24
raiders: 48
misc: 8
water: 8
villagers: 16
flying-monsters: 48
你可以设置实体应在玩家多远的距离内进行处理(做事情)。减少这些值有助于提高性能,但可能导致生物在玩家靠近之前无反应。将此值设置得太低可能会破坏某些刷怪场;铁农场是最常见的受害者。
entity-tracking-range
推荐初始值:
players: 48
animals: 48
monsters: 48
misc: 32
other: 64
这是实体可见的距离(以格为单位)。它们只是不会被发送给玩家。如果设置得太低,可能会导致生物在玩家附近突然出现。在大多数情况下,此值应高于你的 entity-activation-range
。
tick-inactive-villagers
推荐初始值:false
此选项允许你控制是否在激活范围之外处理村民。这样村民将正常进行,忽略激活范围。禁用此选项有助于提高性能,但在某些情况下可能会让玩家感到困惑。这可能会导致铁农场和交易补货出现问题。
nerf-spawner-mobs
推荐初始值:true
你可以使由刷怪笼生成的生物没有 AI。削弱后的生物将什么都不做。你可以通过在 [paper-world configuration] 中将 spawner-nerfed-mobs-should-jump
设置为 true
来使它们在水中跳跃。
[paper-world configuration]
despawn-ranges
推荐初始值:
ambient:
hard: 72
soft: 30
axolotls:
hard: 72
soft: 30
creature:
hard: 72
soft: 30
misc:
hard: 72
soft: 30
monster:
hard: 72
soft: 30
underground_water_creature:
hard: 72
soft: 30
water_ambient:
hard: 72
soft: 30
water_creature:
hard: 72
soft: 30
允许你调整实体消失范围(以格为单位)。降低这些值以更快地清除远离玩家的生物。你应该将软范围保持在 30
左右,并将硬范围调整为略大于实际的模拟距离,以便生物不会在玩家刚刚超出区块加载点时立即消失(这与 [paper-world configuration] 中的 delay-chunk-unloads-by
一起效果良好)。当生物超出硬范围时,它们将立即消失。当在软范围和硬范围之间时,它们将有随机消失的几率。你的硬范围应大于软范围。你应该根据视距使用 (simulation-distance * 16) + 8
进行调整。这部分考虑了玩家访问后尚未卸载的区块。
per-player-mob-spawns
推荐初始值:true
此选项决定生物生成是否应考虑目标玩家周围已有的生物数量。你可以绕过许多由于玩家创建占用整个生物生成上限的农场而导致的生物生成不一致问题。这将启用更类似单人游戏的生成体验,允许你设置较低的 spawn-limits
。启用此选项确实会稍微影响性能,但其影响被 spawn-limits
改进所掩盖。
max-entity-collisions
推荐初始值:2
覆盖 [spigot.yml] 中具有相同名称的选项。它允许你决定一个实体一次可以处理多少次碰撞。值为 0
将导致无法推动其他实体,包括玩家。值为 2
在大多数情况下应该足够。值得注意的是,如果此配置选项的值高于 maxEntityCramming 游戏规则的值,将使其无效。
update-pathfinding-on-block-update
推荐初始值:false
禁用此选项将减少路径查找的次数,提高性能。在某些情况下,这将导致生物显得更卡顿;它们每 5 个刻(0.25 秒)被动更新路径。
fix-climbing-bypassing-cramming-rule
推荐初始值:true
启用此选项将修复实体在攀爬时不受挤压影响的问题。这将防止即使在攀爬时也有大量生物堆积在小空间内(蜘蛛)。
armor-st和s.tick
推荐初始值:false
在大多数情况下,你可以安全地将此选项设置为 false
。如果你正在使用盔甲架或任何修改其行为的插件并遇到问题,请重新启用此选项。这将防止盔甲架被水推动或受到重力影响。
armor-st和s.do-collision-entity-lookups
推荐初始值:false
在这里你可以禁用盔甲架的碰撞。如果你有很多盔甲架并且不需要它们与任何东西碰撞,这将有所帮助。
tick-rates
推荐初始值:
behavior:
villager:
validatenearbypoi: 60
acquirepoi: 120
sensor:
villager:
secondarypoisensor: 80
nearestbedsensor: 80
villagerbabiessensor: 40
playersensor: 40
nearestlivingentitysensor: 40
在启用 Pufferfish 的 DAB 时,不建议更改这些值!
此选项决定指定的行为和传感器以刻为单位的触发频率。村民的 acquirepoi
似乎是最重的行为,因此大大增加了时间间隔。如果村民在找到路径时遇到问题,请减少此值。
[pufferfish.yml]
dab.enabled
推荐初始值:true
DAB(大脑动态激活)减少了远离玩家的实体的处理次数。DAB 以渐变方式工作,而不是像 EAR 那样的硬性截止。DAB 将根据 dab.activation-dist-mod 的计算结果减少实体的处理次数。
dab.max-tick-freq
推荐初始值:20
定义最远离玩家的实体处理的最慢频率。增加此值可能会提高远离视野的实体的性能,但可能会破坏一些行为,例如村民可能不会及时找到工作站或床位。建议将此值保持在20左右。
dab.activation-dist-mod
推荐初始值:7
控制生物被触发的距离梯度。减少此值会使 DAB 更靠近玩家触发,从而提升 DAB 的性能增益,但会影响实体与其周围环境的交互,并可能破坏生物农场。如果启用 DAB 后破坏了生物农场,请尝试增加此值。
enable-async-mob-spawning
推荐初始值:true
是否应启用异步生物生成。要使此功能生效,必须启用 Paper 的 per-player-mob-spawns 设置。此选项实际上并不会异步生成生物,但会将生成新生物的大部分计算工作卸载到另一个线程上。启用此选项在原版游戏中不应有明显的影响。
enable-suffocation-optimization
推荐初始值:true
此选项通过将窒息检查(检查生物是否在方块内以及它们是否应该受到窒息伤害)的频率限制为伤害超时来优化窒息检查。除非你是一个极其技术性的玩家,使用精确的刻时来通过窒息在恰当的时间杀死实体,否则这种优化应该是不可察觉的。
inactive-goal-selector-throttle
推荐初始值:true
在实体不活跃的刻内节流 AI 目标选择器,使不活跃的实体每 20 刻更新一次其目标选择器,而不是每刻更新一次。可以提高几个百分点的性能,并对游戏玩法有轻微影响。
[purpur.yml]
zombie.aggressive-towards-villager-when-lagging
推荐初始值:false
启用此选项将导致僵尸在服务器低于 [purpur.yml] 中设置的 tps 阈值时停止攻击村民。
entities-can-use-portals
推荐初始值:false
此选项可以禁用除玩家外所有实体的传送门使用。这可以防止实体通过改变世界来加载区块,因为这在主线程上处理。副作用是实体无法通过传送门。
villager.lobotomize.enabled
推荐初始值:true
只有在村民引起卡顿时才应启用此选项!否则,路径寻找检查可能会降低性能。
被“脑残化”的村民会被剥夺 AI,并且只会偶尔补货其商品。启用此选项将使无法找到路径到达目的地的村民被“脑残化”。释放它们应该会取消“脑残化”。
villager.search-radius
推荐初始值:
acquire-poi: 16
nearest-bed-sensor: 16
村民寻找工作站方块和床的半径。这显著提升了大量村民的性能,但会防止他们检测到超出设定值范围的工作站方块或床。
杂项
[spigot.yml]
merge-radius
推荐初始值:
item: 3.5
exp: 4.0
决定物品和经验球合并的距离,减少地面上物品的刻更新数量。设置过高会导致物品或经验球消失的错觉,因为它们会合并在一起。设置过高会破坏一些农场,并允许物品穿过方块传送。除非启用 Paper 的 fix-items-merging-through-walls
设置,否则不会进行检查以防止物品通过墙壁合并。经验球仅在创建时合并。
hopper-transfer
推荐初始值:8
漏斗移动物品所需的刻数。增加此值可以在服务器上有大量漏斗时提高性能,但设置过高会破坏基于漏斗的时钟和可能的物品分类系统。
hopper-check
推荐初始值:8
漏斗检查上方物品或上方库存的刻数。增加此值可以在服务器上有大量漏斗时提高性能,但设置过高会破坏基于漏斗的时钟和依赖水流的物品分类系统。
[paper-world configuration]
alt-item-despawn-rate
推荐初始值:
enabled: true
items:
cobblestone: 300
netherrack: 300
sand: 300
red_sand: 300
gravel: 300
dirt: 300
short_grass: 300
pumpkin: 300
melon_slice: 300
kelp: 300
bamboo: 300
sugar_cane: 300
twisting_vines: 300
weeping_vines: 300
oak_leaves: 300
spruce_leaves: 300
birch_leaves: 300
jungle_leaves: 300
acacia_leaves: 300
dark_oak_leaves: 300
mangrove_leaves: 300
cherry_leaves: 300
cactus: 300
diorite: 300
granite: 300
andesite: 300
scaffolding: 600
此列表允许你设置某些类型掉落物品的替代消失时间(以刻为单位),比默认值快或慢。此选项可以与 merge-radius
一起使用,以提高性能,而无需使用物品清除插件。
redstone-implementation
推荐初始值:ALTERNATE_CURRENT
用更快的替代版本替换红石系统,减少冗余方块更新,降低服务器需要计算的逻辑量。使用非原版实现可能会引入非常技术性的红石小问题,但性能增益远远超过可能的利基问题。非原版实现选项还可能修复 CraftBukkit 引起的其他红石不一致问题。
ALTERNATE_CURRENT
实现基于 Alternate Current 模组。有关此算法的更多信息可以在他们的资源页面找到。
hopper.disable-move-event
推荐初始值:false
InventoryMoveItemEvent
事件不会触发,除非有插件主动监听此事件。这意味着只有在你有这样的插件并且不在意它们不能对此事件采取行动时才应将此值设置为 true。如果你想使用监听此事件的插件(例如保护插件),请勿设置为 true!
hopper.ignore-occluding-blocks
推荐初始值:true
决定漏斗是否忽略容器内的完整方块,例如沙子或沙砾块内的漏斗矿车。保持启用会破坏依赖此行为的一些装置。
tick-rates.mob-spawner
推荐初始值:2
此选项允许你配置刷怪笼的刻更新频率。值越高,如果你有很多刷怪笼,卡顿越少,但如果设置过高(相对于刷怪笼的延迟),生物生成率会降低。
optimize-explosions
推荐初始值:true
将此设置为 true
会用更快的算法替换原版爆炸算法,代价是计算爆炸伤害时略微不准确。这通常不明显。
treasure-maps.enabled
推荐初始值:false
生成藏宝图非常昂贵,如果它试图定位的结构在未生成的区块中,可能会导致服务器挂起。只有在你预生成了世界并设置了原版世界边界时才安全启用此选项。
treasure-maps.find-already-discovered
推荐初始值:
loot-tables: true
villager-trade: true
此选项的默认值强制新生成的地图寻找未探索的结构,通常位于未生成的区块中。设置为 true 使地图可以指向先前发现的结构。如果不将其更改为 true
,生成新藏宝图时可能会导致服务器挂起或崩溃。villager-trade
是指村民交易的地图,loot-tables 是指任何动态生成战利品的东西,如宝箱、地牢箱等。
tick-rates.grass-spread
推荐初始值:4
服务器尝试扩散草或菌丝的刻数。这会使大面积的泥土变成草或菌丝的时间稍长一些。如果你想减少扩散时间而不明显降低扩散速度,设置为 4
左右应该效果不错。
tick-rates.container-update
推荐初始值:1
容器更新的刻数。增加此值可能有助于容器更新引起的问题(这很少发生),但会使玩家在与库存交互时更容易体验到不同步(幽灵物品)。
non-player-arrow-despawn-rate
推荐初始值:20
生物射出的箭在击中目标后消失的刻数。玩家无法捡起这些箭,所以你可以将其设置为 20
(1 秒)。
creative-arrow-despawn-rate
推荐初始值:20
玩家在创造模式中射出的箭在击中目标后消失的刻数。玩家无法捡起这些箭,所以你可以将其设置为 20
(1 秒)。
[pufferfish.yml]
disable-method-profiler
推荐初始值:true
此选项将禁用游戏进行的一些额外分析。这些分析在生产环境中不必要,并且可能导致额外的卡顿。
[purpur.yml]
dolphin.disable-treasure-searching
推荐初始值:true
防止海豚执行类似于藏宝图的结构搜索。
teleport-if-outside-border
推荐初始值:true
如果玩家在世界边界外,可以将其传送到世界出生点。这很有帮助,因为原版世界边界是可以绕过的,并且它对玩家造成的伤害可以被减轻。
帮助工具
[paper-world configuration]
anti-xray.enabled
推荐初始值:true
启用此选项可以隐藏矿石,防止透视作弊玩家发现。有关此功能的详细配置,请查看配置反透视。启用此选项实际上会降低性能,但它比任何反透视插件都更高效。在大多数情况下,性能影响可以忽略不计。
nether-ceiling-void-damage-height
推荐初始值:127
如果此选项大于 0
,则在设置的 y 轴高度以上的玩家将受到虚空伤害。这样可以防止玩家利用地狱顶层。原版地狱高度为 128 格,所以你应该将此值设置为 127
。如果你以任何方式修改了地狱的高度,则应将此值设置为 [你的地狱高度] - 1
。
Java 启动参数
原版 Minecraft 和 Minecraft 服务器软件在 1.20.5+ 版本中需要 Java 21 或更高版本。Oracle 改变了他们的许可协议,现在没有理由非要从他们那里获取 Java。推荐的供应商是 Adoptium 和 Amazon Corretto。虽然 OpenJ9 或 GraalVM 等替代 JVM 实现也可以使用,但它们不受 Paper 支持,并且已知会导致问题,因此目前不建议使用。
你可以配置垃圾回收器以减少大规模垃圾回收任务引起的卡顿。你可以在这里找到适用于 Minecraft 服务器的启动参数 [SOG
]。请记住,这些推荐参数不适用于替代 JVM 实现。 建议使用 flags.sh 启动参数生成器来获取适合你服务器的启动参数。
此外,在启动参数中在 -jar
之前添加测试标志 --add-modules=jdk.incubator.vector
可以提高性能。此标志使 Pufferfish 能够在你的 CPU 上使用 SIMD 指令,使一些数学运算更快。目前,它仅用于使游戏插件地图(如 imageonmaps)的渲染速度提高最多 8 倍。
好得令人难以置信
的插件
扫地插件
完全没有必要,因为它们可以被 merge-radius 和 alt-item-despawn-rate 取代,坦率地说,它们的可配置性不如基本的服务器配置。这些插件扫描和移除物品所花费的资源比不移除物品还多。
生物堆叠插件
很难证明使用此类插件的合理性。堆叠自然生成的实体比不堆叠它们引起更多的卡顿,因为服务器会不断尝试生成更多的生物。唯一“可接受”的用例是用于大量刷怪笼的服务器。
启用/禁用其他插件的插件
任何在运行时启用或禁用插件的行为都是极其危险的。加载此类插件可能会导致跟踪数据的致命错误,禁用插件可能会因为移除依赖项而导致错误。/reload
命令也存在相同的问题,你可以在me4502 的博客文章中了解更多。
什么在卡顿? - 测量性能
mspt
Paper 提供了一个 /mspt
命令,它会告诉你服务器计算最近刻所花费的时间。如果你看到的第一个和第二个值低于 50,那么恭喜你!你的服务器没有卡顿!如果第三个值超过 50,则表示至少有一个刻花费的时间较长。这是完全正常的,偶尔会发生,所以不要惊慌。
Spark
Spark 是一个允许你分析服务器 CPU 和内存使用情况的插件。你可以在其维基上了解如何使用它。还有一个关于如何找到卡顿原因的指南,参见这里。
Timings
查看服务器卡顿时可能发生了什么的方式之一是 Timings。Timings 是一个工具,它让你看到哪些任务花费的时间最长。这是最基本的故障排除工具,如果你请求有关卡顿的帮助,你很可能会被要求提供 Timings。已知 Timings 对服务器有严重的性能影响,建议使用 Spark 插件而不是 Timings,并使用 Purpur 或 Pufferfish 完全禁用 Timings。
要获取服务器的 Timings,只需执行 /timings paste
命令并点击提供的链接。你可以与他人分享此链接以便他们帮助你。如果你不知道自己在做什么,这也很容易被误读。Aikar 有一个详细的视频教程,教你如何阅读它们。
Minecraft 漏洞及其修复方法
要了解如何修复可能导致卡顿或崩溃的 Minecraft 服务器漏洞,请参见这里。