须知
Lithium 使用 Java properties format 来规范其配置文件。如果在游戏启动时配置文件不存在,将创建一个空白文件,并对该页进行注释。
这个配置文件定义了 Lithium 中选项的覆盖,因此,一个空白文件是非常正常的!它只是表示您想使用所有默认值。
下面的每个类别均包含一个可由用户更改的选项列表。 由于mod的性质,配置选项需要重新启动游戏才能生效。
修改规范
Lithium 中的所有配置选项都是简单的键值对。 换句话说,首先要指定选项的名称,然后指定所需的值,如下所示:
#后面的文本是注释,用于让您创建易于理解的文本。 因此,您不需要硬性添加它们,但是您可能想要附录关于为什么要修改默认值的注释。
配置选项
实体 AI
mixin.ai
(布尔值,默认值:true)
如果为 false,以下所有的AI优化将被禁用。
mixin.ai.goal
(布尔值,默认值:true)
如果为 true,将使用实体AI的目标选择器的更快实现。 通常,这几乎可以在几乎所有情况下大大改善服务器的报价速度,并且通常可以安全启用。
mixin.ai.nearby_entity_tracking
(布尔值,默认值:true)
如果为 true,将提供一个基于事件的系统来跟踪附近的实体。
mixin.ai.nearby_entity_tracking.goals
(布尔值,默认值:true)
如果为 true,那么在游戏世界中查询附近实体的AI目标将改变为使用基于事件的系统来跟踪附近的实体。换句话说,实体不会不断轮番询问是否有其他实体在附近,而是只会在此类实体进入它们的范围时偶尔通知它们。这将显著减少由这些目标所增加的CPU开销,并且应该可以安全启用。
mixin.ai.pathing
(布尔值,默认值:true)
如果为 true,则将使用更快的代码路径来确定与给定方块关联的寻路节点类型。 此外,在评估路径时,将使用更快的区块缓存来访问区块。
mixin.ai.poi
(布尔值,默认值:true)
如果为 false,则将禁用以下所有AI 位置优化。
mixin.ai.poi.fast_init
(布尔值,默认值:true)
如果为 true,则位置存储的初始化将使用更快的集合,并且将通过避免数据流代码来加快初始化速度。
mixin.ai.poi.fast_retrieval
(布尔值,默认值:true)
如果为 true,则将使用 辅助查找表 查找村民和其他复杂生物AI所使用的事件点。 当这些实体之一去查找附近的事件点时,它们将能够在一次操作中扫描区块中的所有点,而不需要单独扫描每个子区块。 这样可以大大减少这些任务所产生的性能开销。
mixin.ai.raid
(布尔值,默认值:true)
如果为 true,则将优化 RAID 逻辑,以规避性能损耗较大的逻辑和网络更新,这可能对某些 RAID 情境有所帮助。
mixin.ai.task
(布尔值,默认值:true)
如果为 true,村民和其他实体使用的复杂AI大脑系统将通过用更传统的迭代替换基于数据流的代码而得到优化。这可以减少大量的CPU和内存分配开销,当世界上存在使用该系统的实体时,加快游戏速度。
任务配发
mixin.alloc
(布尔值,默认值:true)
如果为 false,则将禁用以下所有分配优化。
mixin.alloc.chunk_random
(布尔值,默认值:true)
如果为 true,将优化区块随机获取的 tick 响应,使其不再使用区块位置分配,从而降低了对象分配速率。
mixin.alloc.chunk_ticking
(布尔值,默认值:true)
如果为 true,则区块标记将避免重复的 lambda 闭包分配和重用 Lists。
mixin.alloc.composter
(布尔值,默认值:true)
如果为 true,则堆肥桶将重复使用漏洞要求的可用栏位数组(arrays)。
mixin.alloc.entity_tracker
(布尔值,默认值:true)
如果为 true,则实体跟踪器将使用 fastutil 集来存储观察的玩家。
mixin.alloc.enum_values
(布尔值,默认值:true)
如果为 true,则将修补游戏代码中的多个位置,以避免在运行代码中调用 Enum#values()。 这些调用中的每个调用都将另类克隆到后备数组,以防止写入者进行插值,而写入者反过来会创建大量分配,从而减慢游戏速度。
mixin.alloc.explosion_behavior
(布尔值,默认值:true)
如果为 true,将避免在评估爆炸行为时重复进行 lambda 闭包分配。
mixin.alloc.world_ticking
(布尔值,默认值:true)
如果为 true,则在进行 tick 循环时将使用已优化过的映射迭代器(map iterator)以复用条目对象(Entry objects)。
方块
mixin.block
(布尔值,默认值:true)
如果为 false,则将禁用以下所有方块优化。
mixin.block.flatten.states
(布尔值,默认值:true)
如果为 true,则将方块状态扩展以存储其包含的流体,以加快许多流体检查操作。
mixin.block.moving_block_shapes
(布尔值,默认值:true)
如果为 true,则移动方块和缩回活塞时将避免通过重新使用以前创建的 VoxelShapes 来计算其 VoxelShapes。
mixin.cached_hashcode
(布尔值,默认值:true)
如果为 true,则在流体代码中使用的 BlockNeighborGroups 将缓存其哈希码。
区块
区块和区块数据容器的优化。
mixin.chunk
(布尔值,默认值:true)
如果为 false,则将禁用以下所有区块优化。
mixin.chunk.count_oversized_blocks
(布尔值,默认值:true)
如果为 true,则区块部分将跟踪超过其包含的1x1x1区域的方块数。 如果没有太大的方块区域被包含,mixin.entity.fast_suffocation_check和mixin.entity.collisions将使用此信息来扫描较小的方块区域。
mixin.chunk.entity_class_groups
(布尔值,默认值:true)
如果为 true,则对所有 Entity 类执行静态分析。mixin.entity.collisions将对有碰撞箱的实体(如船只和潜影贝)或碰撞行为(如船只和矿车)的实体的类组(Class groups)进行限制,以避免为了查找特殊的碰撞行为而扫描所有类的实体(Class Entity)。
mixin.chunk.no_locking
(布尔值,默认值:true)
如果启用,此选项将删除区块部分代码中的 调试debug 语句。
mixin.chunk.palette
(布尔值,默认值:true)
如果为 true,则将使用优化过后的变体替换原始的哈希着色板(该着色板将小范围的整数从区块数据映射到方块中)。
mixin.chunk.section_update_tracking
(布尔值,默认值:true)
如果为 true,则将要发送给玩家的区块更新集合替换为哈希集。 哈希集比数组集快得多,这可以减少执行大型填充命令时的延迟尖峰。
mixin.chunk.serialization
(布尔值,默认值:true)
如果为 true,将使用优化的方法来在序列化时压缩方块的着色板。 这大大加快了原版方块着色行为速度,该组件应该能被安全地使用,在服务器保存大量区块时提供了帮助。
集合类(Collections)
mixin.collections
(布尔值,默认值:true)
如果为 false,则将禁用以下所有集合类(Collections)优化。
mixin.collections.entity_filtering
(布尔值,默认值:true)
如果为 true,则仅当需要创建该类型的新列表时,才进行性能损耗较大的检查以查看 TypeFilterableList 是否可以由特定种类过滤。
实体与生物
实体 ticking 的优化。
mixin.entity
(布尔值,默认值:true)
如果为 false,则将禁用以下所有实体优化。
mixin.entity.collisions
(布尔值,默认值:true)
如果为 true,大量优化将被应用于实体碰撞冲突检测与实体解析方案中,以加快一些常见的操作。 这可以大大减少实体 ticking 在服务器中花费的时间。
mixin.entity.data_tracker
(布尔值,默认值:true)
如果为 false,则将禁用以下所有数据跟踪器优化。
mixin.entity.data_tracker.no_locks
(布尔值,默认值:true)
如果为 true,将从用于实体的数据跟踪器中删除不必要的锁定代码。 该代码曾经在较旧的游戏版本中具有作用,但此后就不再相关了。 如果安装了试图在错误线程上访问数据跟踪器的mod,这可能会引起问题,但是这种可能性不大。
mixin.entity.data_tracker.use_arrays
(布尔值,默认值:true)
如果为 true,则将使用优化的 Map 映射实现进行实体数据跟踪,从而避免使用简单数组(arrays)来进行 整型数据装箱 和 Map遍历查找。
mixin.entity.fast_suffocation_check
(布尔值,默认值:true)
如果为 true,则 窒息相关检测 将以更高效的顺序遍历方块。
mixin.entity.gravity_check_block_below
(布尔值,默认值:true)
如果为 true,如果下方方块已经阻止它们下落,则尝试向下移动的实体将跳过与附近所有方块的碰撞检查。
mixin.entity.inactive_navigations
(布尔值,默认值:true)
如果为 true,则方块更新将跳过通知生物路径索引,这些索引无论如何都不会对方块更新作出反应。
mixin.entity.replace_entitytype_predicates
(布尔值,默认值:true)
如果为 true,将查询一种类型的实体,而不是按该类型在所有实体中进行筛选。
mixin.entity.skip_fire_check
(布尔值,默认值:true)
如果为 true,则未着火的实体将跳过检查何时停止燃烧。
mixin.entity.stream_entity_collisions_lazily
(布尔值,默认值:true)
如果为 true,则在确定实体要与之碰撞的形状时,将首先扫描方块而不是实体。 这提供了一些性能上的提升,因为大多数实体几乎总是在另一个实体之前与一个方块发生碰撞,先检查方块而不检查实体可以跳过性能损耗较大的各个实体检查。
世界生成
针对世界生成和玩家数据的优化。
mixin.gen
(布尔值,默认值:true)
如果为 false,则将禁用所有下方世界生成的优化。
mixin.gen.biome_noise_cache
(布尔值,默认值:true)
如果为 true,则将使用优化的缓存来存储生物群系采样中使用的噪声类(Noise)数据。 这可以大大减少 生成或搜索生物群落 所花费的时间。
mixin.gen.cached_generator_settings
(布尔值,默认值:true)
如果为 true,则将缓存生成器的设置。
mixin.gen.chunk_region
(布尔值,默认值:true)
如果为 true,则优化将用于世界填充特征的区块缓存,从而避免了数组间接而又复杂的逻辑。
mixin.gen.fast_island_noise
(布尔值,默认值:true)
如果为 true,则将来更快的岛屿噪声类(Noise)数据生成,提高岛屿分布的生成效率。
mixin.gen.fast_layer_sampling
(布尔值,默认值:true)
如果为 true,除了十分必要的情境下,将优化生物群落覆盖层采样以避免对相邻位置或层进行采样。
mixin.gen.fast_multi_source_biomes
(布尔值,默认值:true)
如果为 true,将会有需要优化被应用到 生物群戏世界结构层采样 当中。 即便这涉及消除有关数据流繁重的代码,但可以显著优化多个世界(如下界)的生成速率。
mixin.gen.fast_noise_interpolation
(布尔值,默认值:true)
如果为 true,则将优化区块生成器,以避免采样噪声(Noise)级别在y坐标中的实现让值数据维持在固定的区间。 通过消除许多不必要和性能损耗大的样本,这可以大大加快 主世界(Overworld) 的生成速度。
mixin.gen.features
(布尔值,默认值:true)
如果为 true,不会发生什么,保留了生成的特性。
gen.perlin_noise
(布尔值,默认值:true)
如果为 true,则将使用 柏林噪声 进行生成演算。
mixin.gen.voronoi_biomes
(布尔值,默认值:true)
如果为 true,那么生物群落的 泰森多边形(voronoi)采样 将得到优化,以避免对象分配,并使用性能损耗更低的 bit-banging,而不是高能耗的 模数(modulo) 运算。这可以大大提高计算局部生物群落的速度。
数学运算上的优化
使用美妙的数学妆点您的游戏。
mixin.math
(布尔值,默认值:true)
如果为 false,则将禁用下方有关数学运算的原理优化。
mixin.math.fast_blockpos
(布尔值,默认值:true)
如果为 true,则将对方块位置进行更快的数学计算。
mixin.math.fast_util
(布尔值,默认值:true)
如果为 true,则将对一些数学实用程序类(math utility classes)进行各种优化修补,以减少操作中的常规性能开销,例如 切换/旋转 轴或移动方块位置。 这不会对三角函数或类似函数进行任何优化!
mixin.math.sine_lut
(布尔值,默认值:true)
如果为 true,带来三角函数优化
运算形状上的优化
mixin.shapes
(布尔值,默认值:true)
如果为 false,所有关于形状的优化将被禁用。
mixin.shapes.blockstate_cache
(布尔值,默认值:true)
如果为 true,则在全局中 完整多维数据集检测缓存(full cube test cache) 将使用更快的集合(collection)类型。
mixin.shapes.lazy_shape_context
(布尔值,默认值:true)
如果为 true,则形状仅在首次使用时初始化很少使用的字段。
mixin.shapes.optimized_matching
(布尔值,默认值:true)
如果为 true,将通过对长方体形状进行更快的测试来加快 VoxelShape 碰撞的检测速度。
mixin.shapes.precompute_shape_arrays
(布尔值,默认值:true)
如果为 true,则将缓存某些形状类型的顶点数组,以防止不必要的分配。
mixin.shapes.shape_merging
(布尔值,默认值:true)
如果为 true,则将使用优化算法来合并和比较方块形状。 这样可以大大加快游戏中的许多常规操作。
mixin.shapes.specialized_shapes
(布尔值,默认值:true)
如果为 true,则将在碰撞箱检测和解析方案中对某些类型的形状(例如实心块或空心块)使用专门的实现。 因为大多数方块交互将涉及简单的形状,故这可以大大减少检查实体时以针对世界上的方块进行碰撞检测所涉及的性能开销。
标签
mixin.tag
(布尔值,默认值:true)
如果为 true,则在元素很少的标签中使用线性阵列扫描(linear array scanning),从而加快了某些检查的速度。
世界
mixin.world
(布尔值,默认值:true)
如果设置为 false,将禁用下方优化。
mixin.world.block_entity_ticking
(布尔值,默认值:true)
如果为 true,方块实体ticking正常进行,不会影响任何事务。
mixin.world.chunk_access
(布尔值,默认值:true)
如果为 true,则应用补丁程序将被于服务器的区块管理器,以减少从世界中获取区块所需的时间。 无论区块是否在缓存中,这将极大地加快游戏中许多需要读取或修改区块的操作。
mixin.world.chunk_inline_block_access
(布尔值,默认值:true)
如果为 true,将优化通过区块访问方块方法以减少指令数。 当访问世界上的方块时,这可以提供适度的速度提升。
mixin.world.chunk_task_system
(布尔值,默认值:true)
如果为 true,则将使用优化的任务提交系统来安排与区块相关的作业。 当任务队列中有许多灯光更新或方块更新时,这可以大大提高速度。
mixin.world.chunk_tickets
(布尔值,默认值:true)
如果为 true,则将在世界 ticking 期间使用一种用于删除过时的区块序票(chunk tickets)的优化算法。
mixin.world.chunk_ticking
(布尔值,默认值:true)
如果为 true,则将通过删除繁重的代码优化在 怪物生成 期间搜索附近的玩家区块的程序。
mixin.world.explosions
(布尔值,默认值:true)
如果为 true,将优化 爆炸(包括TNT)以减少其对服务器 TPS 的影响。 此补丁做了很多事情来实现这些目标:
负责对接触的方块位置进行重复数据删除的集合 (HashSet <BlockPos>) 被替换为一个 长整数集(Long integer set)。 对方块位置使用整型(Integer)编码可以大大提高效率,并避免我们需要为沿着每条射线进行的每个步骤分配方块位置,从而基本上消除了此函数的所有内存分配。
沿着投射射线前进时,我们检查该行为是否仍在同一方块中,并重复使用上一步的结果来确定要施加多少阻力。
区块被本地缓存,并且方块和流体的检索步骤被组合到一起以减少数据检索带来的性能开销。
mixin.world.mob_spawning
(布尔值,默认值:true)
如果为 true,则将对生物生成列表使用优化过的收集类(Collections),以加快每个 tick 中频繁执行的比较操作。
mixin.world.player_chunk_tick
(布尔值,默认值:true)
如果为 true,玩家所加载的区块 tick 仍正常计算,不会带来任何改变。
mixin.world.tick_scheduler
(布尔值,默认值:true)
如果为 true,则 tick 计划程序将替换为优化过的变体,它可以通过许多提前计划好的 tick 来显着减少CPU使用率,并更快地检查进行中的 ticks。 在游戏中,这意味着在生成区块之后立即发生的 tick安排 将花费更少的时间,而红石 tick 响应会稍微快一些。 此外,计划后的 ticks 将存储在二级索引中,这将允许区块保存时能够更快地在区域内获取捕获到的ticks,而无需遍历世界上所有的已在计划的 ticks。