10935336

明星成鸟
2020-08-07
306
195
思考时间
9 天 3 小时 10 分钟
48
Mars
写着写着突然就不知道到底为什么要写这篇文章了,就酱吧。

在本文中:模拟距离(1.18+)= 视距(1.17-)
Paper 的 no-tick-view distance 基本等于 1.18 的模拟距离。



你有没有想过各种怪物农场中的 128 格最佳挂机点是从哪来的?
  • Minecraft Wiki 中说到“和最近的玩家的直线距离大于 128 格的怪物(以及一些其他的)将会被立即清除”这叫做“硬消失距离”和模拟距离无关。
  • 为什么是 128?因为原版默认模拟距离为 10,这样第 9 个就是边界区块,而第 8 个区块的尽头就是 128 格。
要是我的模拟距离小于 10 呢?
  • 怪物硬消失距离依然是 128,即使你看不到。(仅本地原版单人游戏测试)
  • 但即便如此,也不代表你能做一个 128 格的农场,因为模拟距离外的一切都不会激活。
  • 因此如果模拟距离小于 10,你的农场不应该超过 (模拟距离-1)x16 个方块。




好吧,Wiki 中几乎所有数据都是按模拟视距 10 来的,但在服务器中模拟距离往往并不是 10。
而 Spigot/Paper 系服务端甚至允许你改变这些值。

默认(纯原版)情况下,这些值是:
  • 模拟距离:10(区块)[simulation-distance/server.properties]
  • 怪物生成范围:8(区块)[mob-spawn-range/spigot.yml]
  • 软消失距离:32(方块)[despawn-ranges/paper.yml]
  • 硬消失距离:128(方块)[despawn-ranges/paper.yml]
  • 实体激活距离:32(方块)[entity-activation-range/spigot.yml]

这些值会导致:
  • 怪物生成检查范围是半径为 128 方块,高为当前世界最高方块到最低方块的圆柱体(1.17 及以下为 256、1.18 及以上为 384)。
  • 怪物实际生成区为玩家周围的半径 24 到 128 方块之间的球体
  • 玩家周围的半径 24 方块的球体内不会有怪物生成。
  • 玩家周围的半径 32 方块的球体中的任何实体将按正常速率激活(tick)。(实体激活距离)
  • 玩家周围的半径 32 至 128 方块的空心球体中的任何实体以较低的速率激活(tick)。(实体激活距离到硬消失距离)
  • 玩家直线距离 128 方块外的实体会立即消失。(硬消失距离)
如果你想调整这些值:
  • 模拟距离:最低不超过 5。
  • 怪物生成范围:最低不应低于 3,最高不应超过 模拟距离-1
  • 软消失距离:我不知道。
  • 硬消失距离:(模拟距离-1)X16,且应该等于怪物生成范围。
  • 实体激活距离:最好不要改。





那刷怪上限呢?

满足此公式:生物上限 = 生物类型所对应的常数 × 符合生成生物条件的区块数量 ÷ 289
为什么是 289?
因为 17x17=289,生物会自然生成在以玩家为中心 15×15 区块的区块内,为了计算上限,生成区域在每个方向上拓展一个区块即 17x17 区块。

默认(纯原版)情况下,这些常数是:
  • 怪物:70
  • 动物:10
  • 环境类(蝙蝠):15
  • 美西螈:5
  • 地下水生动物:5
  • 水生动物(鱿鱼和海豚):5
  • 水生环境类(鱼):20
  • 其他:-1
你可以在 bukkit.yml 的 spawn-limits 部分修改这些值。

即单人游戏怪物上限为 70,多人游戏上限则取决于区块是否重叠。

Paper 服务端提供了 2 个指令来查看当前的生物数量
  • /paper mobcaps (未开启 per-player-mob-spawn)
  • /paper playermobcaps(开启 per-player-mob-spawn)
可以快速查看是否已达到上限。




参考/更多:
 
最后编辑:
  • 1❤️
反馈: BuKeaton