截图
介绍
Chunk Schedudeler
高效且可控的区块加载(对服务器友好)。
区块加载方块(“Schedudeler”)

Schedudeler 是此模组添加的唯一方块。它能够加载周围区域内的区块,但会随时间缓慢消耗充能。

放置 Schedudeler 后,它最初没有充能,但可以通过右键点击为其充能。只要有玩家在附近(距离在 24 格内),或其所有者在线(稍后会详细介绍),它也会自动充能。Schedudeler 的默认容量为 576000 刻(8 小时)。
默认情况下,Schedudeler 不属于任何人(即公共),区块半径为 0,也就是说它只会加载自身所在的区块。
只有在主动加载区块时,Schedudeler 才会消耗充能。

Schedudeler 中央的染色玻璃方块会在其已充能/处于激活状态时点亮边角,并缓慢闪烁。

尝试为已充满的 Schedudeler 手动充能时,它会发出粒子效果。

对 Schedudeler 使用铁升级(手持 Iron Ingot 右键点击)即可升级。升级后,Schedudeler 的最大充能量将提升至 1728000 刻(24 小时)。
不同升级可以分别应用,互不影响。

金升级(手持 Gold Ingot 右键点击)会将 Schedudeler 的区块半径提升至 1(覆盖 3×3 区块区域)。
最大半径仅为
1,这是为了鼓励玩家使用更多小型区块加载器,而不是单个大型区块加载器。这样有助于调度算法在多名玩家之间公平分配区块加载器(详见区块调度部分)。铁升级和金升级提供的效果均可配置。

玩家可以应用末影升级(手持 Ender Eye 右键点击),将 Schedudeler 设为自己的所有物。这样有以下好处:
- 无论距离多远,只要所有者在线,Schedudeler 就会充能。
- 调度区块加载器时,算法会考虑每位玩家拥有的区块加载器数量,并将其与其他玩家及公共区块加载器(不属于任何玩家的加载器)进行比较。详情请参阅区块调度部分。

锁链升级(手持 Chain 右键点击)会锁定 Schedudeler,防止玩家误操作并应用其他升级。

玩家可以手持 Redstone Torch 右键点击任意 Schedudeler,预览其加载区域(区块边界)。预览仅对该玩家可见,并会在短时间后消失。Redstone Torch 不会被消耗。

破坏 Schedudeler 时,先前应用的所有升级也会一并掉落。
区块调度
此模组的核心功能之一是调度算法。这意味着每个维度中,同一时间最多只会有可配置数量的区块加载器处于激活状态(默认值为 8)。为此,区块加载器会排入队列,每 8 个区块加载器为一组,并在短时间内激活(默认持续 80 刻)。
此外,算法还会考虑每位所有者拥有的区块加载器数量(以及公共区块加载器的数量),确保各方获得相同的区块加载器激活时间。
举个例子:为简单起见,假设始终只有 2 个区块加载器可以同时处于激活状态。如果玩家 Red 放置了一个区块加载器,而玩家 Blue 放置了 100 个区块加载器,那么每个调度周期都会激活玩家 Red 的这一个区块加载器,以及玩家 Blue 的下一个区块加载器。总共需要 100 个调度周期(8000 刻),才能让玩家 Blue 的每个区块加载器都恰好激活一次。同时,玩家 Red 的区块加载器会被激活 100 次。
以下动画展示了该算法的运行过程(示例稍复杂,但更紧凑)。有关此主题的更多信息,请参阅 这个代码仓库。

配置
可用的配置选项及其默认值:
| 名称 | 描述 | 默认值 |
| —————————– | ——————————————————————————————————————————————————————————————————————- | ——— |
| maxActiveChunkLoaders | 定义可同时处于激活状态的区块加载器的最大数量。 | 8 |
| maxChunkLoaderCharge | 定义区块加载器总共可以处于激活状态的最大刻数。 | 576000 |
| ticksOfActiveChunkLoading | 定义每组排队中的区块加载器保持激活状态的刻数。注意:如果此值过低,某些(方块)实体更新可能会被跳过(例如,“日光传感器”每 20 个世界刻更新一次)。 | 80 |
| rechargeFactorRightClick | 定义每次右键点击时区块加载器的充能百分比。 | 0.1 |
| rechargeFactorPlayersNearby | 定义玩家在附近时,区块加载器每刻的充能百分比。 | 0.05 |
| rechargeFactorOwnerOnline | 定义所有者在线时,区块加载器每个激活周期的充能百分比。 | 0.1 |
| rechargeRadiusPlayersNearby | 定义区块加载器扫描附近玩家、以判断是否应充能的范围半径。 | 24 |
| ironUpgradeBonusCharge | 定义铁质升级为区块加载器额外增加的最大充能量。 | 1152000 |
| ironUpgradeBonusRadius | 定义铁质升级为区块加载器额外增加的区块半径。 | 0 |
| goldUpgradeBonusCharge | 定义带有金质升级的区块加载器额外增加的区块半径。 | 0 |
| goldUpgradeBonusRadius | 定义带有金质升级的区块加载器额外增加的区块半径。 | 1 |
| logChunkStateChange | 启用后,区块「强制加载」状态的任何更改都会记录到日志中。 | false |
| logChunkLoaderUpdates | 启用后,区块加载器方块实体的更新会记录到日志中。 | false |
| logChunkLoaderRegistration | 启用后,区块加载器的注册和注销都会记录到日志中。 | false |
命令
所有命令都需要至少 1 级权限:
chunkschedudeler get <blockPos> [charge|radius|owner|locked]:获取给定位置的 Schedudeler 信息。
常见问题
区块加载器有玩家数量限制吗?
没有。
如果区块加载器数量不受限制,性能会怎么样?
始终相同,因为同时处于活动状态的区块加载器不会超过配置的数量(默认为 8)。
区块加载器会不会永远无法激活?
不会。只要它们有电,最终就会轮到它们。
玩家能否通过在同一区域放置许多区块加载器来「作弊」?
不能。因为玩家有动机认领这些区块加载器,所以其拥有的区块加载器总数会增加,导致该玩家拥有的每个区块加载器激活频率都降低(详情请参阅 区块调度)。
免责声明
我在测试中发现,紧邻区块加载器强制加载区块的区块也会被加载。我还发现,其他模组的区块加载器也有这种行为。由此可见,半径为 0 的区块加载器(即 1×1 区块区域)实际上会加载 3×3 的区域;半径为 1 的区块加载器(即 3×3 区块区域)会加载 5×5 的区块区域,以此类推。由于我无法完全确定额外区块是否能稳定加载,因此将其视为开销而不予考虑。
常见问题
Chunk Schedudeler 支持哪些 Minecraft 版本?
Chunk Schedudeler 支持 Minecraft Java 版 1.18.2–1.20.4,共 5 个版本,可用的加载器:Fabric / Forge。下载时注意选择和你游戏版本一致的文件。
Chunk Schedudeler 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。
hd42 的其他作品
查看全部 →Radical Cobblemon Trainers API
Cobblemon 的训练师管理与对战前置库。
Radical Cobblemon Trainers
超过1500个独特且富有挑战性的训练家,来自宝可梦ROM改版Radical Red(v3.02)和Unbound(v2.0.3.2),以及正作晶灿钻石/明亮珍珠,他们会自然生成在你的世界中。
RCT Badges – Cobblemon Pokemon Badges
Radical Cobblemon Trainers 的首领会掉落 Cobblemon Pokemon Badges 模组中的徽章。
Epic Tweaks
Epic Fight 模组的一个小型附属。

评论
登录后评论和评分