机械装置灯光(双向动态灯光)

机械装置灯光(双向动态灯光)

为你的Create机械装置和Sable子层级添加动态光源,让它们在你的建筑与世界之间双向流动。

装置之灯

随你的建筑移动的光芒。

将灯笼、萤石、蛙明灯或任何发光方块放置在机械动力(Create)装置或 Sable 子分层上,装置之灯便会使其光芒随装置一同行驶、飞行、旋转、倾斜或航行。告别漆黑一片的船舱和隧道。

它的功能不止于此。它连接了移动中的建筑与世界,让光线在两者之间双向流动:你的建筑照亮世界,世界照亮你的建筑,建筑之间也能互相照亮,包括搭载在另一个移动建筑之上的建筑。

它还附带修复功能,恢复了 Sable 子分层在 Iris 光影下的显示效果,使其不再渲染得平坦且过亮,而是能在地下重新变暗(无论是否使用光影包)。参见 Iris 修复。

它能照亮什么

  • 机械动力(Create)装置 - 矿车、龙门架、升降机、轴承:任何已组装并移动的物件,包括旋转部件。
  • 机械动力(Create)动力元件 - 由 Flywheel 渲染的旋转传动轴和齿轮。
  • 其他 Flywheel 渲染的内容 - 由非 Create 模组(如 Vanillin)通过 Flywheel 绘制的方块和实体(需要 Flywheel 1.0.6+,无需安装 Create)。
  • Sable 子分层 - 基于物理的移动结构,如船只和动态树木。

隐藏在机械动力(Create)伪装方块内的发光方块,或嵌入机械动力(Create)标牌中的发光方块或物品,同样有效:它们会投射其所容纳之物的光芒。

光线流动的方向

装置之灯处理四种方向。第一种默认开启;其余为可选开启,这样你只需为你使用的功能付费。

你的建筑照亮世界(默认开启)

移动中的装置或子分层会将其自身发光方块的光线投射到周围地形上,跟随轴承的每一次转动和船只的每一次摇晃。搭载在 Sable 子分层上的信标甚至能将其光束射向世界,沿着子分层的“上方”轴指向,并随其移动和倾斜而调整,如同一个可操控的探照灯。

世界照亮你的建筑(可选开启)

真实世界的光源会照射到经过的建筑上:手持火把、发光的生物和掉落的发光物品,以及放置的方块如火把、萤石和熔岩。定向和塑形的 LambDynamicLights 光源同样有效,因此来自其他模组的手电筒或信标光束可以照亮其扫过的建筑。适用于装置、子分层以及任何其他 Flywheel 渲染的内容:机械动力(Create)动力元件(传动轴、齿轮)和基于 Flywheel 的其他模组内容(如 Vanillin 的原版实体和方块实体),后者仅需安装 Flywheel 1.0.6+,无需安装 Create。开启“照亮结构”选项即可。

建筑之间互相照亮(可选开启)

两个距离相近的建筑会交换光线:一个发光的 Sable 子分层会照亮附近的装置或 Flywheel 渲染的内容(Create 动力元件,或其他 Flywheel 模组的内容),一个发光的装置会照亮附近的 Flywheel 渲染内容。这不是一个独立的设置。它是由上述两个方向自然推导出来的:开启一个“照亮结构”选项,使建筑能够接收光线;由于建筑默认已能发出自身的光线,附近的建筑就像世界一样被视作光源。因此,允许世界照亮装置的开关,同样也能让经过的船只照亮它。

搭载在其他建筑上的建筑

将一个机械动力(Create)装置或动力元件安装在 Sable 船上,例如一个由轴承驱动的螺旋桨,上面固定着一盏灯笼,在移动的船只上旋转。那盏灯笼会照亮船只自身的甲板、周围世界以及其他结构;作为回报,螺旋桨也会被所有这些光源照亮,其位置会平滑地跟踪到其在移动船只上的实际绘制位置。

渲染方式:选择一个后端

客户端光照有一个单一的 mode 设置,包含三个选项。选择与你的设置匹配的那个。还有一个独立的服务器端选项,完全不需要客户端模组。

LAMB(默认,最简单)

通过 LambDynamicLights 实现客户端动态光。它基于原版的光照贴图,因此光线大致是原版颜色且不投射阴影,但每帧平滑、开销低、兼容光影,且无需服务器设置。该后端支持上述所有方向,包括建筑互相照亮和建筑搭载其他建筑。

  • 平滑且兼容光影
  • 仅客户端:每个想看到的玩家都需要安装此模组
  • 需要 LambDynamicLights

VEIL(实验性,彩色光照和阴影)

通过 Veil 延迟点光源实现客户端动态光。它渲染每个光源的彩色光(蛙明灯发出绿光,灵魂灯笼发出青色光,萤石发出暖光,而不是统一的白色)以及来自倾斜子分层自身方块的清晰棱角阴影,这两点 LAMB 都无法做到。

实验性,不适合正常游玩。 VEIL 并未跟上模组其他部分的发展。它只支持第一个方向(你的建筑照亮世界),外加一个更粗糙、更实验性的版本(世界照亮你的建筑)。较新的方向都无法实现:建筑之间不能互相照亮,建筑搭载其他建筑的情况无法处理,Flywheel 动力元件也无法被照亮。正常游玩请使用 LAMB,仅在特别需要彩色光或阴影且能接受其粗糙边缘时才考虑 VEIL。

  • 仅客户端,不修改世界
  • 需要 Veil(子分层需要 Sable)
  • 不支持光影:只要安装了 Iris,Veil 就会关闭其光照,因此 VEIL 模式会在光影下自动禁用并在日志中说明。使用光影时请用 LAMB。

服务器光源方块(所有玩家可见)

与客户端模式分开,服务器可以在建筑移动时在世界中放置真实的、不可见的光方块,并在其后清理。因为光是真实的,每个玩家无需安装客户端模组即可看到它,并且它兼容光影以及任何读取世界光照的内容。它更重,因此默认关闭,专为服务器管理员设计。在服务器配置中设置。

前置要求

每个依赖项都是可选的。安装一个光照后端、一个要照亮的对象,以及你想要的任何集成。

模组 用途
LambDynamicLights LAMB 模式(客户端)。
Veil VEIL 模式(客户端)。
Create(0.6+) 照亮装置和动力元件(以及伪装方块/标牌的光)。
Sable 照亮 Sable 子分层(任何模式)。

一些常见配置:

  • 流畅的装置照明: Create + LambDynamicLights,LAMB 模式。
  • 彩色光照和阴影(实验性): Veil + VEIL 模式(添加 Sable 以支持子分层)。
  • 无 Create,仅 Sable 结构: Sable + 一个后端(LambDynamicLights 或 Veil)。
  • 运行 Iris 光影:使用 LAMB 模式;VEIL 会在光影下自行禁用。
  • 整个服务器,无客户端模组: Create + 服务器光源方块选项。

配置

所有设置都有合理的默认值。客户端选项出现在游戏内配置界面(从模组列表进入)、配置文件和 Sodium 的视频设置中(如果你运行 Sodium 0.8.12+)。

客户端 - 常规

选项 默认值 功能
mode LAMB 渲染后端。LAMB 基于光照贴图且兼容光影;VEIL 是彩色的并带有子分层阴影;OFF 禁用客户端光照。如果某个模式对应的模组未安装,则该模式不会照亮任何东西并在屏幕上提示;设置会按你的选择保留,因此之后安装该模组即可生效。
luminanceMultiplier 1.0 整体亮度。1.0 为正常;更低则变暗,更高则变亮(最高 2.0)。
updateInterval 0 移动结构向世界投射光线(其自身携带的光)的最小更新间隔(毫秒)。0 表示每 tick 更新(最平滑);更高的值可降低成本。
worldUpdateInterval 0 世界光线投射回移动结构(反向方向,由“照亮结构”选项使用)的最小更新间隔(毫秒)。0 表示每 tick 更新;更高的值可降低成本。
showStatusOverlay 开 当有需要注意的事项时,在右下角显示简短消息:未安装光照后端、设置所需的后端未安装,或某项功能已自行禁用。该提示会出现在任何地方,包括主菜单;点击其 x 可提前关闭。相同的消息始终会记录到日志中。

客户端 - 来自结构的光(你的建筑照亮世界,默认开启)

选项 默认值 功能
enableContraptionDynamicLight 开 从移动中的机械动力(Create)装置所携带的方块投射光线。
enableSubLevelDynamicLight 开 从移动中的 Sable 子分层所携带的方块投射光线,包括将携带的信标光束沿子分层的上方轴投射到世界中。需要 Sable。

客户端 - 照亮结构(世界及其他建筑照亮你的建筑;默认关闭)

选项 默认值 功能
enableWorldToContraptionLambLight 关 用附近的动态世界光源(手持火把、发光的生物、掉落的发光物品)照亮机械动力(Create)装置,以及定向或塑形的 LambDynamicLights 光(手电筒、信标光束)。需要 Create 的 Flywheel 后端。
enableWorldToSubLevelLambLight 关 用附近的世界光线(包括动态光源和静态方块:火把、萤石、熔岩)照亮 Sable 子分层,以及定向或塑形的 LambDynamicLights 光(手电筒、信标光束)。需要 Sable。
enableWorldToFlywheelLight 关 用附近的动态世界光源照亮 Flywheel 渲染的方块和实体(Create 动力元件,以及来自其他基于 Flywheel 的模组的内容),以及定向或塑形的 LambDynamicLights 光(手电筒、信标光束)。需要 Flywheel 1.0.6+;可在无 Create 的情况下工作。
enableWorldToStructureVeilLight 关 用附近的世界光源照亮装置和子分层。

客户端 - Iris 修复(Sable 子分层在 Iris 下的显示效果,默认开启)

这些修复恢复了 Sable 子分层在 Iris 下的光照效果。它们由一个随装置之灯内置的“装置之灯修复”模组应用,该模组在模组列表中显示为独立条目。

选项 默认值 功能
fixSubLevelShading 开 恢复 Sable 子分层在 Iris 下的定向面着色,否则它们看起来平坦且过亮。着色会随建筑倾斜而调整(无论是否使用光影包)。
fixSubLevelSkyLight 开 在 Iris 下,将 Sable 子分层的光照缩放至其位置的世界光照,使建筑在洞穴或地下变暗,而不是保持在开阔天空下的亮度(无论是否使用光影包)。

服务器 - 光源方块

选项 默认值 功能
enableContraptionLightBlock 关 当机械动力(Create)装置移动时,放置真实的光方块,让每个玩家都能看到光线。
enableSubLevelLightBlock 关 当 Sable 子分层移动时,放置真实的光方块,让每个玩家都能看到光线。需要 Sable。
minLightBlockEmission 1 仅为至少达到此亮度的光源放置光方块,以减少放置数量。

常见问题解答

我应该使用哪种模式? 正常游玩请用 LAMB:它简单、流畅,并支持所有方向。VEIL 是实验性的且有限制(彩色光和子分层阴影,仅适用于你的建筑照亮世界);只在需要这些特定效果且不使用光影时才考虑它。

其他玩家也需要安装此模组吗? 对于客户端模式(LAMB 和 VEIL),是的,每个玩家都需要安装。对于服务器光源方块选项,只有服务器需要安装,所有玩家都能看到光线。

它兼容光影吗? LAMB 兼容。VEIL 不兼容:Iris 会关闭 Veil 的光照,因此运行光影时请使用 LAMB。服务器光源方块选项也兼容光影。

我的 Sable 子分层在 Iris 下看起来平坦、过亮或在地下保持明亮。 内置的“装置之灯修复”模组会恢复它们在 Iris 下的面着色和光照,默认开启。它需要同时安装 Sable、Iris 和 Veil。如果建筑看起来仍不正常,请检查这三个模组是否都已安装,以及 fixSubLevelShading 和 fixSubLevelSkyLight 是否开启;更改任一设置都会立即生效。

蛙明灯和灯笼在 LAMB 下是白色的,但在 VEIL 下是彩色的。为什么? LAMB 使用原版光照贴图,没有每个光源的颜色。VEIL 渲染真实的彩色光,因此每个光源都保持自己的色调。

什么都没有亮起来。怎么办? 从主菜单开始注意右下角:如果设置有问题(未安装后端、所选模式的后端未安装、依赖版本过旧),模组会在此处提示。否则,请检查后端模组是否已安装(LAMB 对应 LambDynamicLights,VEIL 对应 Veil,子分层对应 Sable),建筑是否确实携带了发光方块,以及相应的选项是否已开启。“照亮结构”和服务器选项默认是关闭的。若使用 Iris 光影,请用 LAMB。

致谢

  • 标志由 arthursimon900 制作。

许可协议

保留所有权利。你可以将本模组包含在整合包中。