Alternative Chunkloading
停止1.7.10中的“幽灵区块”或“幽灵加载区块”。它利用每个ChunkProviderServer实例中未使用的原版开关,在请求方块或实体时阻止自动区块加载。只能显式加载。
Alternative Chunkloading
一个适用于 Minecraft 1.7.10 的 Forge 模组,用于阻止所谓的“幽灵加载(ghost loading)”或“级联加载(cascade loading)”区块。
技术背景
它利用每个 ChunkProviderServer 实例上的一个原版开关,在请求方块或实体时停止自动加载区块。这些区块只能被显式加载。
已添加两个实验性选项,用于按需加载区块。 这可用于防止模组(以及 Minecraft 核心本身)在请求某个方块时加载区块。这也意味着“幽灵加载”或“级联加载”区块。 不过,这对性能的帮助只是略微的。这在很大程度上取决于你使用了哪些其他模组以及你如何使用这些模组。
基本上,对于一个模组来说,如果它需要位置 XYZ 处的方块,它会调用 getBlock() 或 getTileEntity() 或 getEntity。默认情况下,这些方法会加载方块或实体所在的区块。这通常是不被预期的,并且在某些情况下可能导致卡顿。例如,AE2 或 Ender IO 的导管或任何其他多方块结构都可能是造成这种行为的原因。甚至 Minecraft 的草方块想要将其草蔓延到附近的泥土方块也是如此。
ChunkProviderServer 类中有一个名为 loadChunkOnProvideRequest 的配置字段,默认为 true。在 WorldEvent.Load 事件中,将每个实例上的此项设置为 false 后,区块就只会在通过例如 loadChunk(x, y, z) 显式加载时才会被加载。
配置
如果 disableChunkLoadingOnRequest 为 true(默认为 true),那么该模组会将原版开关(见上文)设置为 false。
考虑切换到我的 Chicken Chunks 分支。我添加了一个修复,用于在请求方块之前加载区块(这本来就应该是一般的做法)。
另外,如果你不知道你在做什么,请将 autoLoadChunksOnTicketCreation 设置为 true(默认为 true)!
这会延续区块加载 ticker 的功能。因此,每当一个模组创建区块加载票据时,区块也会被加载(Forge 本身不会自动这样做)。
兼容性
基本上所有模组都应该像以前一样工作。我已经使用这个模组一年多而没有不良副作用。整体性能略微更好,而在同时加载/卸载许多区块时(比如朝一个方向飞行时),TPS 可能会略微提高。
已修补的模组
已直接或通过 mixin 修补的模组。大多数修复即使不安装 Alternative Chunkloading 也有好处,因为它们现在使用通常更推荐的方式。
- Flood Lights https://github.com/GTNewHorizons/FloodLights/pull/8
- Minecraft (Mixin:在生成下界传送门之前加载区块)
已知有问题的模组
- Dimensional Doors (可以作为变通方法加入黑名单)
给依赖原版行为的模组的提示
请记住,这样一来,依赖“仅请求方块就自动加载区块”这一特性的模组或玩家用法将不再有效(例如允许你使用非常长的管道的科技模组)。你现在需要确保每个包含相关事物的区块都被区块加载。
区块加载器
像 FTB Utilities 或 Server Utilities 这样的模组应该像以前一样工作。但所有使用方块的区块加载器很可能需要在代码中进行修复。考虑使用我的 Chicken Chunks 分支。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。