小默米
Part 0 前言
通俗
  • 本文中所有提及的“代码文字均为已经优化的值,默认值请参考服务端生成的文件。具体优化项目都有必要简练的注释文字。
常更
  • 本帖紧跟版本,不会考虑1.16以下服务器的优化,请不是开1.16和1.17服务器的服主不要问我类似于什么1.12能不能用的问题,我不会,我不懂,我是伞兵,谢谢。
全面
  • 参考本帖后,你无需再参考其他站内优化帖,本帖已一站式服务解决所有问题。
懒狗
  • 有时候不回复你们的消息只是因为我很懒。
  • 如果有更好的优化建议和思路请私信我。
字数统计:7167字(8/18)
▎Part 1 服务器系统和CPU的选择
...
Part 2 服务端核心的选择
Paper是毫无疑问使用最广泛的服务端,它拥有出色的性能和稳定性,高性能的反矿透,全新的地形生成引擎,并且修复原版核心的漏洞……想必无需我再多说。



Tuinity是Paper的一个分支,它的亮点在于彻底重写了Minecraft的光照。将玩家行为置于服务器运算的最顶端,使得在大量玩家在线的情况下,玩家能得到高TPS的体验感(挖方块不回弹)。
“喜报” 8/18 Tuinity开发者加入Paper团队



Airplane是Tuinity的fork,俗称飞机端,旨在增强服务端核心的性能,配置文件可以对生物AI进行大幅度的优化。



Purpur是Tuinity的一个分支,它旨在为你的服务端定制一些更加有趣的玩法(例如设置各种原版生物的属性,改变部分游戏机制),同时也吸取了Tuinity的部分优化。Your Minecraft, Your Way.
21/8/19 Purpur-1331重新引入Airplane patch


Airplane官方推出的NTR服务端全新服务端,并且会有同Airplane的长期维护支持!有人问purpur不是已经包含了airplane了吗,曾经有段时间是这样的,但是目前purpur已经分离了airplane!你仍然可以在早期purpur构建中找到airplane的影子

Purpur-1331重新引入Airplane patch后,Purplane计划维护者表示“我会继续维护Airplane-Purpur”

Yatopia是以上众多核心的fork!它的特色就是无限套娃它吸取了各个核心的优化,但也因此,我们需要谨慎对待这个核心。不过,经过一段时间的发展,Yatopia核心的稳定性已经有了保障。但是作者顶不住压力,现已弃坑。因为本服务端核心已经停止维护,所以在优化项目里面我不再提及Yatopia的任何配置,如有需要请自行研究

以上Logo仅用于介绍服务端核心
▎Part 3 JVM参数的选用和JAVA版本的选择
此JVM参数适用于高内存的服务器
如果你的内存很少(可用内存小于6GB),那么我建议你安于现状,去站内寻找其他JVM启动参数,选择一个适合低内存服务器的启动参数。
(√)因为本帖的目的是优化,所以无论何时,我都推荐你购买一个高内存的服务器,并使用下面的启动参数.
引用自Aikar的文章 原帖链接
java -Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar paperclip.jar nogui

如果你的可用内存大于12GB,那么可以再进一步优化:
    -XX:G1NewSizePercent=40
    -XX:G1MaxNewSizePercent=50
    -XX:G1HeapRegionSize=16M
    -XX:G1ReservePercent=15
    -XX:InitiatingHeapOccupancyPercent=20

(√)Aikar的启动参数是在多年实践中总结而来,会带来更加稳定的TPS,因此各位不必担心使用这个启动参数会造成什么不良影响。如果你想详细了解这个启动参数,站内有相关搬运帖和分析帖,所以在此我不多浪费各位的时间。
有人问java14与其他版本相比优化情况,但是我只能说,java14既不是LTS也不是最新版本,下一个LTS是java17而不是java14,完全没必要使用这个版本的java
  • Java的选用
> 很多人关心选用哪个java会带来更多的性能提升,本节着重讲1.17和1.16两个版本比较受人关注的java
测试环境:CentOS 7    10850K 128G独立机    Purpurclip-1331    JVM参数选用aikar测试数据1:开服速度Oracle:26.906s  27.722s  26.936sZulu:   27.375s  30.181s  28.277s测试数据2:mspt(1人在服)测试时间3分钟Oracle:1.99-2.43Zulu:   2.08-2.45
小节:在本次实验1.17 java16的条件下,zulu在CPU性能上输给了oracle
本测试仅供参考,不代表在任何环境下的实验结果
如果你比较在意自己服务器用哪个java比较好,建议自己做数据测试,毕竟这东西比较玄学
鄙人更愿意相信自己实际测试的数据,根据自身条件选择适合的java,而不是盲目参考别人运行环境下的数据

  • 1.16   OracleVSDrangonWellJava11
  • 测试中...盲猜DragonWell获胜
  • 1.16   OracleVSTencentKona   (Java8)
▎Part 4 世界生成与加载
  • 服务端根目录文件优化
①Server.properties

代码:

  1. view-distance=3
view-distance是服务器的真实视距,同样的设置也存在于Spigot.yml中,设置为较低值可以有效减少卡顿
服务器加载区块计算公式:常加载区块数量+玩家加载区块数量
我们设view-distance=x 那么单个玩家加载区块数量=(2x+1)²
②Paper.yml

代码:

  1. no-tick-view-distance: 4
很多人都不知道paper新增的这个功能。举个简单的例子,如果我们设置了服务端view-distance=3,而设置了no-tick-view-distance=7,那么只有视距为3的世界会被计入tick(比如怪物移动),但是玩家能看到视距为7的世界(在这拓展的视距里怪物不会移动)

代码:

  1. keep-spawn-loaded: false
是否保持出生点常加载,如果玩家频繁进出出生点,可以设置适当的常加载区块,但是多数情况是完全没有必要的

代码:

  1. keep-spawn-loaded-range: 与视距一致
如果你觉得该项目对你有用,那么请设置此与视距保持一致,如果你关闭了出生点常加载,那么该项目会被忽略

代码:

  1. prevent-moving-into-unloaded-chunks: true
如果玩家进入未加载的区块会造成更多cpu资源的损耗,请设置为true以防止此类事件的发生

代码:

  1. delay-chunk-unloads-by: 20s
延迟区块卸载,如果你是生存服务器,例如玩家经常在自己家和主城、商店之间传送,可以适当增加此值以减少区块重新被加载所需要的CPU资源
anti-xray

代码:

  1. 默认值:enabled: false
  2.    engine-mode: 1
  3.    max-chunk-section-index: 3
  4.    update-radius: 2
  5. 推荐值:enabled: true
  6.    engine-mode: 2
  7.    max-chunk-section-index: 7
  8.    update-radius: 2
Engine-mode: 1代表藏矿模式(可以防御xray材质包)Engine-mode: 2代表假矿模式,可以防御一切的作弊挖矿(除非种子被破译)
  • 并在hidden-blocks: 增加
  • - ancient_debris
  • - nether_gold_ore
  • - nether_quartz_ore
  • - end_portal_frame
  • (1.17要加各种深层的矿物)
在replacement-blocks: 增加
  • - netherrack
  • (1.17要加深层的各种岩石)
注释:Paper核心自带的反xray是非常有效的,比任何插件都来得高效(占用约为8-12%,这个占用无法准确估计,因为假矿对服务器的压力取决于你的服务器视距,并且在1.18地形中会造成更大的占用)。有些人可能问为什么要这么做?首先我先解释一下什么是max-chunk-section-index,这一项指anti-xray生效的高度,计算方法是(x+1)*16,例如默认值3,指高度64及以下启用anti-xray,我推荐设置为7,是考虑到地狱128层,根据wiki,地狱顶部同样会生成远古残骸,否则玩家可以轻松利用矿透材质包获取大量远古残骸。其次就是反种子破译和反透视,利用末地传送门框架可以有效阻止SeedCracker破译你的服务器地图种子,你也可以使用“刷怪笼”“苔石”“虫蛀的石砖”等来打乱Mod对种子的破译过程.有人说可以使用Antiseedcracker这个插件,但是我很负责任的告诉你,这个插件只能减慢破译的速度但是不能真正阻止玩家破译种子.
  • 如果你想节约这一点性能,那么可以使用更加轻量的 Moeka ,但是请时刻牢记,Moeka无法保护你地图的种子

②Tuinity.yml

代码:

  1. enable-frustum-priority: true
知道这个配置的人就更少了。设置该项为true会优先加载玩家面朝的区块,虽然玩家背后的区块不会被优先加载,牺牲了一点玩家的视觉体验,但是这确实是一种优化


  • 插件预生成世界
保证硬盘足够的情况下,使用 WorldBorderchunky(推荐) 预生成一定范围的世界,可以有效缓降玩家跑图时候造成的服务器卡顿
Tip:我需要多少硬盘空间?
按照我多次预加载资源服的经验,每1w*1w大约需要4G的硬盘(1.16)
▎Part 5 生物数量与AI
  • 服务端根目录文件优化
①Bukkit.yml

代码:

  1. spawn-limits:
  2. monsters: 16
  3. animals: 6
  4. water-animals: 1
  5. water-ambient: 1
  6. ambient: 1
很显然,生物总量上限越小,服务器承担的压力也越少。当然,这个值会随着玩家总量的增加而成倍提升。
monsters:怪物
animals:动物
water-animals:鱿鱼
water-ambient:各种鱼
ambient:蝙蝠

代码:

  1. ticks-per:
  2. animal-spawns: 400
  3. monster-spawns: 4
  4. water-spawns: 2
  5. water-ambient-spawns: 2
  6. ambient-spawns: 2
这是生物尝试生成的时间间隔,以tick为单位,尝试生成并不意味着生成
这需要参考复杂的生成机制,例如主世界某个方块上方怪物生成几率为1/(y+1)
但是宏观上来说,越大的值意味着生物生成的时间间隔将会更长,带来更好的服务器性能
②Spigot.yml

代码:

  1. nerf-spawner-mobs: true
如果你想禁用刷怪笼生成怪物的AI,那么可以设置该项目为true

代码:

  1. entity-activation-range:
  2. animals: 8
  3. monsters: 24
  4. raiders: 8
  5. misc: 2
  6. water: 4
  7. villagers: 4
  8. flying-monsters: 24
animals:动物
monsters:怪物
raiders:掠夺者
misc:掉落物、经验
water:鱼(不确定,有待考证)
villagers:村民
flying-monsters:幻翼
这控制着距离多少方块范围内的实体会被“激活”,在这范围之外的实体将会以“缓慢”的速度被计算以减少服务器卡顿

代码:

  1. mob-spawn-range
  2. 默认值:8
  3. 推荐值:通常设置比view-distance小1或一致
因为我们设置的怪物量已经非常稀少,所以为了保证玩家能够找到怪物,我们需要减少刷怪范围
刷怪半径=value * 16

代码:

  1. tick-inactive-villagers: false
设置为false会让村民补货需要玩家在其旁边挂机才能进行,建议设置该项为false,否则服务器会因为村民数量增加而越来越卡。
③Paper.yml

代码:

  1. per-player-mob-spawns: true
这样设置可以让bukkit.yml中的怪物量平均分配给每个玩家,从而避免了一个玩家抢走全服怪物的现象

代码:

  1. mob-spawner-tick-rate: 2
刷怪笼在可刷怪区域内尝试生成怪物的速度,该值越大,则刷出怪物的速度越慢


代码:

  1. spawner-nerfed-mobs-should-jump: true
这决定了刷怪笼生成的怪物是否尝试在水中(float)跳跃,如果你禁用了刷怪笼生成怪物的AI,那么设置该项目为true可以让怪物“显得”更加正常


代码:

  1. enable-zombie-pigmen-portal-spawns: false
如果你想彻底禁止主世界僵尸猪灵的生成,那么可以在spigot.yml中设置该项目为false


代码:

  1. nerf-pigmen-from-nether-portals: true
如果你想剥削主世界地狱门生成的僵尸猪灵AI,那么可以在paper.yml中设置该项目为true


代码:

  1. zombies-target-turtle-eggs: false
如果你想禁止海龟蛋式僵尸猪灵塔,那么可以在paper.yml中设置该项目为false
这会禁用僵尸和僵尸猪灵对海龟蛋的搜索


代码:

  1.     despawn-ranges:
  2.    soft: 32
  3.    hard: 64
怪物消失的距离,soft为随机消失,hard为直接消失,通常该值的设定与你的视距紧密相关
④Tuinity.yml

代码:

  1. world-settings:
  2.     world_the_end:
  3.     spawn-limits:
  4.    monsters: 20
  5.    animals: 0
  6.    water-ambient: 0
  7.    water-animals: 0
  8.    ambient: 0
你可以在此单独设置某个世界的刷怪量上限,与Bukkit.yml同理,例如你想要限制末地刷新小黑的数量,那么可以采用上方的配置。当然,你可以根据服务器实情,做出个性化的限制
⑤Airplane.air(Airplane.yml)

代码:

  1. activation-dist-mod = 7
该值默认为8,设置为更小值可以让远处的生物AI弱化,设置为更大值可以恢复较大范围的生物AI
我们称这个生物AI优化为“DEAR”,这也是绝大多数人不知道的优化项目
下面是activation-dist-mod = 8时,生物AI的弱化效果



图片引用自Paul的Blog
与玩家的距离
tick频率
16-
1
22
1/2
27
1/3
32
1/4
45
1/8
64
1/16
71+
1/20
设玩家距离为x,该项目值为y   tick频率计算公式(x^2)/(2^y)以上数据来自于Paul原文链接

代码:

  1. start-distance = 12
“DEAR”开始生效的距离,设置为较小值,那么远处的生物AI就越容易被弱化

代码:

  1. [behavior-activation]
  2. villager = true
  3. piglin = true
  4. hoglin = true
这是“DEAR”生效的生物,你可以添加更多怪物,从而获得突飞猛进的优化。当然,这需要你自己整理,如果本帖的评分量超过20人,那么我会附上优化值并放置于帖内供大家使用。


  • 插件限制生物数量
众所周知,部分生物生成,例如地狱门生成僵尸猪灵无视上限、人工繁殖动物……都具有难以把控的性质,所以我们需要用插件来限制生物总量,能够实现这种功能的插件很多:


作者原话↓

  • ……

  • 插件优化/禁止生物AI
村民寻路AI优化:Villager Optimiser(原理是设定村民寻路的时间间隔,但是效果有限)
同样该插件在1.15+的服务器并不是很需要
生物AI禁用:DisableAI


▎Part 6 掉落物与其他实体
  • 服务端根目录文件优化
①Spigot.yml

代码:

  1. merge-radius:
  2. exp: 5
  3. item: 4
这决定了经验球、物品合并的范围,如果设置过大可能会出现一些不必要的问题,例如物品在合并过程中经过了岩浆

代码:

  1. trident-despawn-rate: 20
溺尸扔出的三叉戟在命中后消失的时间(tick),在这里的20tick=1s,下方同理

代码:

  1. arrow-despawn-rate: 20
骷髅射出的弓箭在命中后消失的时间(tick)

代码:

  1. item-despawn-rate: 3000
掉落物消失的时间(tick)如果你不想破坏原版机制请不要修改

代码:

  1. max-entity-collisions: 1
限制单个实体每tick最多与多少个实体发生碰撞,减小此值可以缓解高密度牧场和聚怪型刷怪塔造成的CPU负担.

代码:

  1. max-tnt-per-tick: 10
每tick最多有几个TNT实体被计算,设置为较小值可以防止较多TNT爆炸造成的卡顿

代码:

  1.     max-tick-time:
  2.    tile: 1000
  3.    entity: 1000
如果你想详细了解为什么这么设置请看 这里
②Paper.yml

代码:

  1. enable-player-collisions: false
关闭玩家之间的碰撞,如果不想关闭请不要修改


代码:

  1. only-players-collide: true
只有玩家间存在碰撞,如果不想这样请不要修改


代码:

  1. max-entity-collisions: 1
服务器将不处理超过数量1的碰撞


代码:

  1. armor-stands-do-collision-entity-lookups: false
关闭盔甲架的实体碰撞检测


代码:

  1. armor-stands-tick: false
让盔甲架不再被计入tick,可以有效缓降有大量盔甲架的服务器卡顿


代码:

  1. non-player-arrow-despawn-rate: 20
非玩家实体射出的弓箭消失时间(tick),这比spigot.yml中适用实体更加广泛


代码:

  1. creative-arrow-despawn-rate: 20
创造模式玩家射出的弓箭消失时间(tick)


代码:

  1.     entity-per-chunk-save-limit:
  2.    experience_orb: 8
  3.    snowball: 8
  4.    ender_pearl: 4
  5.    arrow: 16
限制每个已保存或加载中的区块中,经验球/扔出的雪球/扔出的末影珍珠/箭矢的数量(在极端情况下[掉落物过多],还具有间接优化网络的作用)


代码:

  1. alt-item-despawn-rate
  2.    enabled: true
  3.    items:
  4.   COBBLESTONE: 300
  5.   NETHERRACK: 300
  6.   TOTEM_OF_UNDYING: 300
  7.   IRON_AXE: 200
  8.   GOLDEN_SWORD: 200
  9.   ROTTEN_FLESH: 300
  10.   ENDER_PEARL: 200
  11.   STRING: 200
  12.   WHEAT_SEEDS: 200
  13.   BONE: 200
  14.   SPIDER_EYE: 200
  15.   GUNPOWDER: 200
Paper提供了自定义物品的消失时间(tick),有时候这个比扫地大妈来得更加轻量且不会让玩家产生焦虑感。当然,你也可以使用扫地大妈,不过扫地大妈在清理掉落物的一瞬间会造成服务器短时间的卡顿。


▎Part 7 红石与其他优化
  • 服务端根目录文件优化
①Paper.yml

代码:

  1. use-faster-eigencraft-redstone: true
使用优化的红石机制,大幅度降低红石造成的卡顿


代码:

  1. timings:
  2. enabled: false
什么?你不知道一开服是默认开启timings吗,速度把它关闭!关闭此项并不会影响timings使用,只是禁止在开服后自动启动timings


代码:

  1.     container-update-tick-rate: 3
改变此项会影响部分游戏机制,因为更新频率会影响到所有容器,对红石玩家打击很大,可以优化但效果也不是很显著


②Spigot.yml

代码:

  1.     ticks-per:
  2.    hopper-transfer: 24
  3.    hopper-check: 3

代码:

  1. hopper-amount: 3
提高漏斗单次的运输量和运输时间间隔,可以减少漏斗计算的压力。但是治本之策是限制漏斗数量(鼓励玩家使用优化的方案)


  • 使用插件限制红石'运行时间'和'最高频率'
高频红石和大规模低频红石的卡服能力是相当的,高频卡服,低频也同样可以卡服,在paper.yml中启用红石优化后,一般红石并不会卡到服,如果真的有需要优化的那一天,再考虑优化红石。


▎Part 8 网络优化
  • 服务端根目录文件优化
①Server.properties与BungeeCord的config.yml


代码:

  1. network-compression-threshold = 512 / -1 / 128
网络封包压缩的阀值,当你的服务器带宽充裕时,可以适当提高此值以减少cpu的负担,但是这也会加重客户端下行带宽的压力;如果你的服务器是BungeeCord下的某个子服,请设置为-1避免不必要的性能损失。如果你的带宽不充裕,为了保证在线玩家的体验和高在线量,请设置为128或更小值。就拿我自己来说,我的BC的config.yml中设置为128,子服server.properties中的设置都为-1(不压缩)
②Spigot.yml

代码:

  1.     entity-tracking-range:
  2.    players: 48   玩家
  3.    animals: 48   动物
  4.    monsters: 48   怪物
  5.    misc: 32   掉落物
  6.    other: 64    其他
以上为默认值,适当调小可以略微减少带宽的支出,但是效果微乎其微,在你带宽仍然充裕时没有必要考虑优化此项目


③Purpur.yml

代码:

  1. use-alternate-keepalive = true
服务器每秒发送给玩家一个数据包来确认玩家还在线,可以防止网络较差的玩家掉线


代码:

  1. dont-send-useless-entity-packets = true
防止服务器发送过多无意义的实体数据包.
▎Part 9 使用数据库存储数据
  • 无论是什么时候,我都会避免纯文本存储(yml json)。因为纯文本存储效率低下,速度最慢。部分插件会使用sqlite来存储数据,相对纯文本有改善。但是无论何时我都会推荐大家使用MySQL、MariaDb、MongoDb等来存储插件数据,他们拥有非凡的性能。我的朋友的白名单服务器曾经因为yml存储方式,每次新增/减少白名单成员,都会造成服务器的严重卡顿,此后我们修改白名单插件为Mysql存储后便不再出现卡顿问题。无论是什么插件,你都应该争取使用数据库存储,如果插件不提供该存储方式,请联系作者尽力提供。刚开服期间你可能感受不到数据库存储带来的优势,但是当你的服务器发展一段时间后,数据量变大时,数据库的高效依然如同刚开服期间,而纯文本存储可能带来很多卡顿。
  • 什么?你不会装数据库?请上 某sdn论坛 自行研究!无论是你是小白还是大佬,win还是linux都能找到教程。
  • 代码:

    1. storage:
    2. # storage method, can be MySQL or sqlite
    3. # ATTENTION! DON'T USE SAME DATABASE TABLES FOR MORE THEN ONE SERVER, YOU WILL HAVE UNEXPECTED ISSUES. EACH SERVER SHOULD HAVE ITS OWN DATABASE TABLE SETUP
    4. method: MySQL
    5. mysql:
    6. # Requires Mysql.
    7. username: 用户名
    8. password: '密码'
    9. hostname: localhost:3306
    10. database: minecraft(数据库名)
    11. # Valid characters are a-z 0-9 and _
    12. tablePrefix: CMI_(表名前缀)
    13. # If you have no clue what these values do, then keep it at default values
    14. autoReconnect: true
    15. useSSL: true(加密)
    16. verifyServerCertificate: false
    我们拿CMI插件来举例,开启cmi插件的数据库存储在dataBaseInfo.yml中(大多数插件是在config.yml中)
  • 设置相应的数据库信息,一般来说插件会自动建表,几乎傻瓜式的操作。有些插件会提供数据导出和导入功能,比如CMI,Luckperms、MysqlPlayerDataBridge等主流插件,所以你不必但心部分插件会因为存储模式改变而造成数据丢失。
▎Part 10 跨服同步与多端均衡
  • 我为什么要开多个服
终于走到这一步了吗?无论你优化做得有多么好,单端的承载能力是有极限的。可能你绞尽脑汁参考了各个优化帖,拼命对单端进行优化,最终又能多带几个人呢?单端无法承载的压力就需要多端分布承载。使用Mysql存储数据、开设资源服(而不是资源世界)镜像服。只要你的CPU核心足够,多开一个子服理论能多带100%的玩家。如果你是单端服主,想要突破人数上限,不可避免的就是走上跨服同步数据的道路。


  • 我需要什么插件
首先你需要确保你重要的插件都支持数据库存储(非sqlite),例如mcMMO的数据。将各个插件都尽可能使用数据库存储后,创建一个新的服务器,并使用相同的数据库设置,那么当你在两个服之间传送时,共有着同样的数据。


  • 我该怎么同步玩家的背包
你可以使用 MysqlPlayerDataBridge(国外付费插件,更新及时,比bbs站内插件都迅速,1.17.1都已经支持),也可以使用站内一些支持跨服数据同步的插件,搜“跨服”关键词应该会有。当然我最推荐大家使用MysqlPlayerDataBridge,因为他有指令一键导出数据的功能,适合开到一半的服主一个指令解决所有数据迁移的烦恼。
▎后记
  • 我没有提及的优化
有的人看完全文后会说“哎呀,你这个点,其他帖子提及了,你没提及诶”


比如:

代码:

  1. disable-chest-cat-detection
检测箱子上有猫时不能开启箱子
说实话,你真觉得它有什么优化效果吗(笑)


又比如:

代码:

  1. grass-spread-tick-rate: 1
有帖子建议改大为4,但是实际优化效果几乎为0,而且会让玩家因为草地扩散慢而十分恼火,有次我兴致大发,去某服和他们服主考查服务器社区建设,一不小心搞坏了几个草径,我就拿泥土填,当时又想上厕所,就说,我先把泥土放这,看看多久变成草方块。最后这几个泥土实际上花了30分钟才全部变成草方块。
  • 其他“无”优化效果的其他优化
①Paper.yml

代码:

  1. log-named-entity-deaths: false
此项目为近期Paper构建新增项,具体是多少号构建我不清楚了(如果有知道的可以告诉我)
关闭此项可以不在后台记录命名生物的死亡,让后台更加干净

代码:

  1. book-size:
  2.     page-max: 2560
  3.     total-multiplier: 0.98
page-max是每页书中文字的最大字节数
如何理解 total-multiplier?比如第一页最大字节数为2560,那么第二页最大字节数为2560*0.98,第三页为2560*0.98*0.98……以此类推,你可以适当减少其中任意值或二者皆减小,来防止玩家干那种行为(bbtt行为)
②Spigot.yml

代码:

  1. log-villager-deaths: false
记录村民的死亡
关闭此项可以不在后台记录村民的死亡,理由同上

代码:

  1.     wither-spawn-sound-radius: 32
凋零生成时的音效范围,设置为较小值可以防止音波干扰其他玩家体验


  • 优化的误区——你需要避免安装这些“优化插件”
    本来就没有跟踪那么多实体,为什么还需要取消跟踪呢?


    多余的检测只会增加服务器的Lag.(包括同类插件)


    • 扫地大妈类的插件
    检测这些垃圾的一瞬间,其实突然增加了服务器的lag,你可以减少掉落物消失的时间来代替此功能,来获得更加稳定的TPS.


    这些漏洞(TNT复制,无头活塞等……)已经被Paper修复了,没必要增加这些多余的检测. 我依稀记得以前有个服主给我发timings,我发现他在使用Paper的情况下安装了这种修复Spigot漏洞的插件,不仅没有“立功”反而造成了服务器lag

> 参考资料:

> 你都看到这里了,还不考虑给我一个免费的人气吗 ;w;






Shayuyuw
启动参数有点不懂 那个-XX是写服务端文件吗?

比奇堡厨师
Shayuyuw 发表于 2021-7-10 04:05
启动参数有点不懂 那个-XX是写服务端文件吗?

写在服务端启动器里。

大薯宽片
我记得Purpur不是已经集成了AirPlane吗,PurPlane还有必要扔进来吗)

823202450
Yatopia的介绍笑死我


感谢   了解到了不少近年来的~~玄学~~