Wow_Play 发表于 2025-2-14 15:31:27

[转载]光照修复器 —— 只需一个指令!

本帖最后由 Wow_Play 于 2025-2-14 15:33 编辑

需要 BKCommonLib 作为前置Light cleaner是一个简单的插件,可以完成一项非常强大的任务:重新生成照明。它在专用线程上运行,使用自己的优化方法来最大限度地减少服务器的性能损失。通过对原始数据进行作,它可以轻松地每秒处理 200 个块!从 1.12-v2 开始,现在还可以让插件自动清理新生成的块的光照。这样,当玩家探索世界的新区域时,就无需使用这些命令。游戏机制 永远困扰着 Minecraft的一个错误是生成块时到处都是臭名昭著的暗光。您会在洞穴、峡谷壁、下界甚至地下找到它们!所有这些看起来有问题的灯都破坏了使 Minecraft 自然美丽的美感。更糟糕的是,这种照明的不断客户端修复会拖累客户端性能,尤其是在下界或极端生物群落中。
只需一个简单的命令,这个插件就会急切地啃食数百万个方块,完全从头开始重新计算它们的光照水平。为此,它使用原版 Minecraft 块信息,这意味着它看起来像预期的那样。另一个用途是在插件以 “快速” 方式更改块后修复光照级别,例如 WorldEdit。如果在执行慢速服务器光照再生功能时更改了块,则更改块需要很长时间。这个插件提供了两全其美,允许在事后进行维修。通过利用强大的算法与智能缓存相结合,它能够更快、更准确地重新生成这种照明。可以修复视图中的所有数据块或世界的所有数据块的光照。在执行这些计算时,主服务器线程不会停止。命令
此插件提供以下命令:
代码 (文本):
/cleanlight - 重新生成您能看到
的所有块的光照 /cleanlight 12 - 重新生成您
周围 25x25 个块的光照 /cleanlight world - 在当前世界中
重新生成光照 /cleanlight world world1 - 重新生成 world1 的光照
/cleanlight abort - 取消任何正在进行的光照作
/cleanlight status - 检查修复
状态/cleanlight 位于 (世界) - 远程重新生成光照(命令方块)
权限
代码 (文本):
允许玩家在玩家视图半径
内重新生成光照 lightcleaner.clean.view
允许玩家在任何半径处进行清洁,甚至超出视图半径
lightcleaner.clean.any
允许玩家为整个世界重新生成(这是很多块!
lightcleaner.clean.world
允许玩家仅清理特定半径或更小的区域。
例如,半径 5 允许命令 /cleanlight 5 和 /cleanlight 4,但不允许命令 /cleanlight 6。
lightcleaner.clean.radius 中。[半径]
lightcleaner.clean.radius.5
允许玩家中止所有光照作
lightcleaner.abort
允许玩家检查 lightcleaner.status 状态
配置
要打开新生成的块的自动清理,请在 config.yml中设置以下内容:
代码 (文本):
autoCleanEnabled:真
要在玩家执行 WorldEdit/FastAsyncWorldEdit作后启用自动清理,请在config.yml中设置以下内容:
代码 (文本):
autoCleanWorldEditEnabled:真
当服务器上的剩余可用内存(以 MB 为单位)下降得太低时,Light Cleaner 将暂停并保存世界以减少内存,直到它可以继续。如果遇到内存不足问题,请提高此值。如果您觉得它停滞时间过长,请降低它。
代码 (文本):
最小可用内存:400
在处理时,插件必须尽快加载大面积的 chunk。在高并发性的情况下,它将同时将大量 chunk 排队进行加载,而在低并发性下,它可能会等待更长的时间。如果您发现插件对服务器性能的影响太大,请降低此值。
代码 (文本):
asyncLoadConcurrency:50
如果您的世界没有永久保存到磁盘,则可能需要禁用这些世界的保存。这还会阻止插件在服务器重新启动时继续照明作。
代码 (文本):
unsavedWorldNames:
- worldname1
FAWE
FastAsyncWorldEdit 在对世界进行更改后遇到了一些光照故障问题。在config.yml中使用 FAWE 执行更改后,您可以打开自动清洗。如果您这样做,请确保同时禁用 FAWE config.yml 中的内置清洁功能(模式:0)!
代码 (文本):
lighting:
# 如果数据包发送延迟到重新点亮完成
delay-packet-sending: true
async: true
# 要使用的重新点亮模式:
# - 0 = 无(不重新点亮)
# - 1 = 最佳(重新点亮更改的光源和更改的方块)
# - 2 = 全部(慢慢重新点亮每个方块)
mode: 0
# 如果在重新点亮
之前移除现有的照明 remove-first: false
注意:
此插件需要安装 BKCommonLib
这个插件是 “NoLagg Lighting” 的延续,这个组件由于导致主插件无法发布的问题而受到阻碍。
注意不要将任何块信息写入 chunk。这是为了防止世界数据的灾难性丢失。仅更新光照级别。
修复世界确实会导致在从磁盘加载和保存区块时,可能会降低区块的节拍率。通过限制一次加载的 chunk 数量,可以最大限度地减少这种 tick rate 下降。
如果您的服务器是 Minecraft 1.14 或更高版本,请不要启用自动清理功能。它不仅不再需要,而且会导致生成无尽的块,远远超过你的世界边界。这是因为服务器在后台为每个加载的 chunk 生成 3 个深的相邻 chunk。

YanRan233 发表于 2025-2-15 14:17:46

感谢楼主转载[哔哩_打call]
页: [1]
查看完整版本: [转载]光照修复器 —— 只需一个指令!