太阳井

太阳井

可制作的动态太阳井灯笼可在地下投射真实的天空光线。支持作物、动态树木、雨水、降雪及风暴!可将任意方块标记为生长灯或完整太阳井,适用于整合包。

魔法

☀️ Sunwell

一款可以悬挂在天花板上的便携天窗。在地下也能享受真实的天空光照——一切由你掌控。

Sunwell 添加了可合成的 太阳井灯笼,能够将真正的 Minecraft 天空光照 投射到封闭空间中。农作物可以生长,动态树木得以存活,日光传感器会响应,雨水和雪花会飘落而下,闪电也会在暴风雨中劈穿光柱。

就像露天环境一样——只不过你可以将它挂在天花板上。整合包作者可以获得一个 基于标签的引擎:无需编写 Java 代码,即可将任何方块注册为简单的生长灯或功能完整的天气感知太阳井。


✨ 为什么不用火把?

💡 太阳井灯笼 🔥 火把 / 萤石
光照类型 天空光照 —— 植物实际检测的光照 仅方块光照
促进动态树木生长 ✅ 是(需要 ≥ 12 级天空光照) ❌ 否
激活日光传感器 ✅ 是,暴露于“白天”时 ❌ 否
光照覆盖地面 ✅ 逐渐扩大的光锥 —— 灯笼挂得越高,光照范围越广 ❌ 随距离衰减
天气与时间 ⚙️ 可选(标签 + 配置) 始终开启
生物生成 🚫 在光照区域内被抑制 常规规则

🏮 太阳井灯笼

  • 🪝 与原版灯笼放置方式一致 —— 可放置于地面或悬挂在天花板上。
  • 🔦 以向下扩大的光锥投射天空光照 —— 挂得越高,照亮的地面范围越广。宛如一个小太阳。
  • 🌗 球体实时映射其所代表的天空 —— 太阳、月亮、云层或雷暴云(见下文)。
  • 🧪 合成配方: 石英 ×3 · 铁栏杆 ×4 · 萤石 · 玻璃。

⚠️ 从 2.0.x 升级 —— 灵魂井灯笼已被移除(现在一个灯笼即可呈现所有天空状态)。已放置的灵魂井灯笼将无法通过升级保留,任何引用 sunwell:soulwell_lantern 的内容都需要更新。


🌤️ 球体是一扇窗户

看向灯笼内部,你会看到它所代表的天空。它会随着天空的变化而同步变化。

天空状态 球体呈现
☀️ 晴天 温暖的太阳,带有缓慢旋转的光芒射线
🌙 夜晚 苍白清冷的月亮 —— 更暗,无射线
🌧️ 雨天 平坦的灰色阴天云层
⛈️ 雷暴 黑暗的雷暴云,每次闪电都会闪现白光

⛅ 光锥内的天气

为灯笼添加完整天气标签(或使用默认的太阳井灯笼),天空便会随之降临:

  • 🌧️ 雨水 会穿过整个被照亮区域,并在落地处溅起水花 —— 下雨时是细雨绵绵,暴雨时则是倾盆大雨。
  • ❄️ 寒冷生物群系中的降雪会缓缓飘落,并在地面上逐渐堆积成雪层,随着时间推移使光照区域变得银装素裹。
  • ⚡ 雷暴天气中,闪电会劈穿光柱。闪电会随机落在光池中的某个位置,但倾向于击中区域内最高的目标 —— 无论是树木、生物还是玩家。光池中任意位置的避雷针都能无害地接住闪电,并为其红石电路提供能量。避雷针附近的闪电概率会显著提高。

🏷️ 基于标签的行为机制

每个太阳井方块都需要 #sunwell:sunwell_source 标签。仅需此标签即可成为静态生长灯 —— 始终开启的虚拟天空,无天气效果,无降雨。通过添加额外标签可解锁更多功能:

标签 效果
sunwell:sunwell_source 必需。 为农作物和树木填充虚拟天空光照
sunwell:dynamic_exposure 光照跟随昼夜、地表天空和天气变化
sunwell:undead_burning 白天时,亡灵生物在光照区域内会被阳光灼烧
sunwell:rain_through 雨水、降雪和闪电可以穿透 —— 积雪还会堆积成层

太阳井灯笼 默认集齐全部四种标签。完整的天气呈现效果(天空映射球体、雨/雪、积雪堆积、闪电)需要同时具备 dynamic_exposure 和 rain_through 两种标签。


📦 注册你自己的方块(数据包 & KubeJS)

展开查看

数据包 —— data/sunwell/tags/blocks/sunwell_source.json(在 1.21+ 版本中文件夹为单数形式 tags/block):

{
  "replace": false,
  "values": [
    "yourmod:ceiling_lamp"
  ]
}

KubeJS —— 静态生长灯,或完整的天气感知功能:

ServerEvents.tags('block', event => {
  // 静态生长灯
  event.add('sunwell:sunwell_source', 'yourmod:ceiling_lamp')

  // 完整功能
  const block = 'yourmod:solar_panel'
  event.add('sunwell:sunwell_source',   block)
  event.add('sunwell:dynamic_exposure', block)
  event.add('sunwell:undead_burning',   block)
  event.add('sunwell:rain_through',     block)
})

标签赋予能力;下方的配置开关则作为整合包级别的总开关,控制这些标签。


🎛️ 配置

所有选项均位于 config/sunwell-server.toml 文件中。

⚙️ 完整配置参考

展开查看

区域与光照

选项 默认值 描述
maxRadius 12 每个光源的水平扩散范围(格)
maxDepth 40 光源下方的最大深度(格)
coneSpread 1 每下降一格额外获得的半径。0 = 垂直光柱
skyLevel 14 虚拟天空亮度。14 可促进所有植物生长;15 会触发原版 canSeeSky 判定
attenuateByDepth false 光照随距离光源的远近而衰减

行为 —— 天气、灼烧、生成、闪电、积雪

选项 默认值 描述
followDayNightCycle true 夜间调暗具有 dynamic_exposure 标签的光源
respondToWeather true 降雨和暴风雨会使 dynamic_exposure 光源变暗
respondToSurfaceLight true 将光照强度与光柱上方真实的室外天空亮度关联
lanternFlux true 为 dynamic_exposure 光源添加微妙的闪烁效果
allowRainThrough true 控制 rain_through 标签的雨/雪穿透总开关
weatherShaftParticles true 客户端的雨/雪光柱粒子效果(仅限完整灯笼配置)
snowAccumulation true 下雪时在地面上堆积雪层
snowAccumulateOdds 12 下雪光锥内增加雪层的 1/N 概率。数值越高 = 堆积越慢
snowMaxLayers 8 积雪的最大深度(1–8 层;8 = 完整方块)
lightningThroughOdds 80000 完整光柱内闪电发生的 1/N 概率。0 = 关闭
lightningRodBoost 40 4 格范围内有避雷针时,闪电概率提高至此倍数。1 = 无加成
lightningVisualOnly false true = 仅闪光和音效。默认 false:真实闪电会造成火焰/伤害,但避雷针总能无害地接住
enableUndeadBurning true 控制 undead_burning 标签的亡灵灼烧总开关
blockHostileSpawns true 阻止敌对生物在任何光照区域内生成

性能 —— nodeBudgetPerTick(80000,每 tick 的洪泛填充单元数)和 chunkBudgetPerTick(24,每 tick 重建的区块数)。如果你运行大量高天花板灯具且 coneSpread 值较大,可同时调高这两项。


📦 支持版本

Minecraft 加载器 Java
1.20.1 Forge 47.4+ 17
1.21.1 NeoForge 21.1+ 21

两个版本功能完整 —— 包括灯笼、视觉效果、标签系统以及 Amendments 墙壁/手持灯笼兼容性。在 1.21.1 版本中,数据包文件夹名为单数形式(tags/block、recipe、loot_table)。


📜 致谢与许可

Sunwell 是 SdataG 的原创模组 —— 所有代码、模型、纹理和视觉效果均为本项目原创;未移植任何素材。天花板天窗的创意在模组界并不陌生(例如 Ferreus Veritas 的 Skylight Lanterns);Sunwell 是一个独立的重新实现。