首页/ 其他项目/mzycBuild
mzycBuild
建筑内透模组 · 只对持有者可见的灯光方块

做建筑内透用的灯光方块。它把光藏在建筑里面, 从外面看过去就是窗口透出来的内光 —— 像真楼里有人在住。 方块本身平时根本不显示,只有手里拿着它的玩家才看得见一格格的彩色线框; 到点它自己按你设的比例亮起来,天亮又慢慢熄掉。

Fabric 1.20.4 需要 Fabric API 建筑内透 只对持有者可见 可穿过 · 占位 设置随存档保存
它是什么

让建筑在夜里「透出内光」

内透就是站在楼外,能看到楼里亮着的灯。这个模组的灯光方块行为等价于「结构空位 + 灯光」: 不挡路、不显示、只有你知道它在哪,但能真的照亮周围 —— 所以窗口透出来的是光,而不是一个看得见的方块。

只对持有者可见

方块本身不进方块渲染,改由客户端逐玩家画成一格整方块的彩色线框。手里没拿灯光方块的人,世界里什么都看不到 —— 建筑成品清清爽爽。

可以直接穿过去

没有碰撞箱,走路的时候不会撞到它。铺在通道、楼梯口、天花板里都不影响通行。

占位,放不下别的东西

它把那一格「占住」了,所以没法在同一个位置再塞别的方块。活塞也推不动它 —— 位置锁得很稳。

只有拿着它才能拆

没拿灯光方块的人即使发出破坏请求也拆不掉它,防手滑误拆。想清掉时拿着同色方块一格一格点掉即可。

真的照亮周围

点亮时按你设的亮度发光(/light light X,0~15,和原版光源方块同一套语义),是能实际改变地面明暗的真光源。

彩色光要靠光影包

原版光照是白光。想让内透偏暖黄、或者让红灯从窗口投出红光,需要光影包支持彩色光效 —— 仓库里给了一份照着改的配置模板。

建筑内透

三步做出一栋「亮着灯」的楼

内透的要害不是灯本身,而是「光在里、窗在外」。这个模组的方块刚好满足这一点。

1

砌好外墙,窗户留透光

墙用你要的建筑材料,窗户用玻璃 / 玻璃板 / 栅栏 / 空气这类透光方块。窗开多大、多密,直接决定内透的观感。

2

灯光方块铺在窗后那一格

贴着玻璃内侧放。因为方块没有碰撞箱,铺在通道、夹层、天花板里都不影响行走;也不会把那一格占成实心墙。

3

设好比例,入夜自动亮

用 /light percent 决定「多少户亮着」,/light nightdelay 决定亮的快慢。之后整晚不用管,它自己按规律亮、自己慢慢熄。

为什么普通发光方块做不出内透?
萤石、海晶灯这类发光方块自己就是一格看得见的方块 —— 贴在窗后,从外面看到的是「一块发光的方块」,不是「楼里亮着灯」。

灯光方块本体不渲染,从外面只看得到窗口透出的光,方块本身完全隐形。这是内透能和建筑长在一起的关键。
常用调节方向
· 亮度 /light light X —— 内透的强弱(默认 12,想更亮调到 15);
· 比例 /light percent X —— 「亮灯率」,20% 像普通住宅,60%~80% 像写字楼、商场;
· 熄灭模式 /flex off time 60 percent 10 —— 默认就是它:整晚每 60 秒熄掉 10%,越到后半夜灯越少;
· 红灯 /hlight … —— 适合做塔顶航空障碍灯、机房、应急照明那类固定闪烁。
一点施工经验:先把灯光方块铺满整块内墙、把 /light percent 调到 100,站在楼外确认「每个窗口都能透出光」; 再往下调比例,就能看出「有人住 / 空置」的差别。方块只有拿着才看得见,所以调完直接走进去,建筑外观不会被一圈线框污染。
两种方块

黄灯管「随机」,红灯管「闪烁」

两种方块长得像、放的规则一样,区别全在发光方式上。都在物品栏的「建筑方块」分类里。黄灯做「随机内透」,红灯做「固定闪烁」。

黄色灯光方块

入夜每块独立掷骰,掷中的再过一段随机延迟才亮;之后按重分配规则慢慢变暗。天亮也不是一起灭,而是各自陆续熄掉。

/light percent /light nightdelay /light daydelay /flex …

红色灯光方块

不掷骰,夜里固定闪烁:默认「亮 2 秒 / 灭 2 秒」循环,两端各带一段渐亮渐暗。默认每块按坐标错开,所以不会全世界齐刷刷一起闪。

/hlight time /hlight slow /hlight flex
// 夜间示意图

线框 = 方块位置(只有拿着方块时看得见);亮起的格子 = 当夜被点亮的灯。示意图,非游戏截图。

黄灯怎么亮

从入夜到天亮,一盏灯的完整一生

默认设置下,一盏黄灯一个晚上会经历下面这几步。每一步的数值都能单独调。

入夜(世界时间 13000 ~ 23000)

每块黄灯各自独立掷骰,骰中的才会亮。中签比例就是 /light percent X,默认 20%。

掷中之后再等一会儿

不会同一秒一起亮。每块灯在 0 ~ /light nightdelay Y 秒之间随机挑一个延迟,默认上限 60 秒。所以你会看到灯零零散散地亮起来。

亮起,亮度按你的设置

点亮时按 /light light X 发光,范围 0 ~ 15,默认 12。

夜里还会逐渐变少

默认开着「熄灭模式」:每 60 秒在还亮着的灯里灭掉 10%。只灭不亮,越到后半夜越暗,剩得不够一盏时一次全灭。

天亮,陆续熄灭

天亮那一刻还亮着的灯,各自在 0 ~ /light daydelay Y 秒内随机熄灭完,默认 60 秒内全黑。填 0 就是天一亮立刻全灭。

「每块独立掷骰」是什么意思?
就是同一片灯里,有的会亮、有的不会,而且不会整片一起亮。这正是做夜景常用灯串的效果来源。
改完马上生效
所有设置类指令都是「写完当场刷新全场已加载的灯」。所以 /light -f off 是立刻黄红全灭,连超出模拟距离、平时不运转的灯也会一起灭。
设置跟存档走
所有数值都存在存档文件夹内部,属于服务端数据、和客户端没关系。换个存档就是另一套设置,且只需要服务端(或单机房主)装模组。
红灯怎么闪

航空障碍灯那种节奏

红灯不掷骰、不延迟,从入夜就一直按你设的节奏闪。所有时间都可以精确到小数点后两位。

亮起 / 熄灭时间

/hlight time on X 和 /hlight time off X 分别设「亮多久」和「灭多久」,默认各 2.00 秒。

2 位小数

两端的渐亮渐暗

/hlight slow on X 和 /hlight slow off X 设「灭→亮」和「亮→灭」的过渡时长,默认各 0.50 秒。调 0 就是硬切。

渐变时长

错开,各闪各的

/hlight flex on|off [X]:默认开启,每块红灯按自己的坐标错开 1.00 秒起步。关掉就变成全世界同步闪。

默认开 · 1.00 秒

红灯总开关

/light h on|off 只管红灯,不影响黄灯。不带参数查询,只回一个 1 或 0。

只管红灯

不受比例影响

红灯不认识 /light percent 和随机延迟 —— 它不掷骰、不延迟,入夜就开始稳定循环。亮度仍跟随 /light light X。

不掷骰

和光影配合更好看

把红灯方块加进光影包的「红」光组,天空暗下来之后整片红光的观感会很不一样。仓库里附了配置模板说明。

彩色光效
夜间重分配

让灯一晚上慢慢变少(或一直变)

这套逻辑默认就是开着的。它管的是「点亮之后」的事:每隔一段时间,重新决定哪些灯还亮。

熄灭模式(出厂默认)

/flex off time Y percent X:每 Y 秒,在还亮着的灯里灭掉 X%。只灭不亮,越到后半夜越暗。默认 60 秒 / 10%。

只灭不亮默认

点亮模式

/flex on time Y percent X:每 Y 秒对全部黄灯按 /light percent 重新分配一次,有灭也有亮。适合想一直有动态变化的夜景。

有灭也有亮

彻底关掉

/flex all off:一整夜只掷一次骰,之后再怎么等都不会变。/flex all on 重新打开(沿用上次的方向)。

整夜不变

偏差:别一起变

/flex flex X 给每块灯 ±X 秒的固定偏差,避免所有灯在同一瞬间一起变,默认 2.00 秒。

默认 2.00 秒

递增:节奏越来越慢

/flex grow X 让每轮间隔依次增加 X 秒(第 k 轮 = Y + (k−1)·X)。可以填负数,那就越来越快。默认 0。

可负

纯随机乱闪

/flexable on|off:开启后只要天黑了,黄灯就脱离上面所有设定,每块按自己的随机节奏乱闪。默认关。只有 /lightall off 和 /light off 压得住它。

默认关
可视化界面

不想记指令就打开界面

输入 /mb help 打开设置界面。界面里的按钮和输入框就是那些指令,两条路走的是同一套设置。

1

一级:选分类

打开后先看到 4 个分类按钮:黄灯 / 通用、红灯、黄灯夜间重分配、总开关与杂项。下面还有一个「恢复出厂默认」。

2

二级:按钮 + 输入框

进去就是一行行设置,点按钮切换开关、填数字改数值。改错随时可以返回上一级。

3

退出时才报结果

界面里点按钮不会往聊天框刷一堆回执;退出界面时统一汇总成一条「UI执行成功」或「UI执行失败」。

三个入口写法都一样
/mb、/mb help、/MB help 都能打开设置界面 —— 大小写都认,抄笔记写错也不怕。
没装模组的客户端打不开
界面是客户端功能。如果某个客户端没装这个模组,打开界面的请求会失败并提示「指令执行失败」,但指令设置本身照常由服务端生效。
指令大全

全部指令

按功能分组列出。支持搜索,点右侧图标即可复制。

黄灯 / 通用(light …)

9 条
/light

不带参数 = 查询,只回一串数值:比例 亮度 天黑秒数 天亮秒数 黄开关 红开关 全灭(例如 20 12 60 60 1 1 0)。

查询
/light on | off

黄灯总开关,默认开。

只管黄灯
/light percent <0~100>

夜晚点亮比例(%),默认 20。

0~100默认 20
/light light <0~15>

灯光亮度,0~15,和原版光源方块同一套语义。默认 12。

0~15默认 12
/light nightdelay <0~600>

天黑后的随机点亮秒数上限(实际延迟在 0 ~ Y 秒之间随机)。默认 60。

0~600 秒默认 60
/light delay <0~600>

nightdelay 的旧名字,读写的是同一个值,照样能用。

旧名
/light daydelay <0~600>

天亮后的随机熄灭秒数上限:天亮那一刻还亮着的灯各自在 0 ~ Y 秒内熄掉。默认 60,填 0 就是立刻全灭。

0~600 秒默认 60
/light h on | off

红灯总开关,默认开。/light h(不带参数)= 查询,只回 1 / 0。

只管红灯可查询
/light define default

把上面所有设置一次性还原成出厂默认(比例 / 亮度 / 两个随机时长 / 红灯 / 重分配)。不会顺手解开「全灭」总闸。

一键还原

红灯(hlight …)

6 条
/hlight

查询,回六个数:开关 错开值 亮起值 熄灭值 渐变亮值 渐变灭值。

查询
/hlight time on | off <秒>

亮起时间 / 熄灭时间,支持 2 位小数,默认各 2.00 秒。/hlight time 不带参数 = 查询,回 2.00 2.00。

2 位小数默认 2.00 / 2.00
/hlight slow on | off <秒>

两端明暗渐变时长:on = 灭→亮、off = 亮→灭。默认各 0.50 秒。

2 位小数默认 0.50 / 0.50
/hlight flex on | off [<秒>]

是否按坐标错开每块红灯的闪烁起点。on 后面可以跟错开时长,默认开 / 1.00 秒;写成 off 就是全世界同步闪。

默认开 · 1.00 秒
/hlight flex

查询错开状态,回 1 1.00 这样的「开关 + 时长」。

查询

黄灯夜间重分配(flex …)

5 条
/flex

查询,回 开关 方向 间隔 熄灭比例 偏差 递增。出厂默认是 1 1 60.00 10 2.00 0.00(方向 1 = 熄灭、2 = 点亮)。

查询
/flex off [time <秒> [percent <%>]]

熄灭模式(出厂默认,并顺手打开这个功能):每 Y 秒在还亮着的灯里灭掉 X%,只灭不亮。默认 Y=60 秒、X=10%。

默认模式只灭不亮
/flex on [time <秒> [percent <%>]]

点亮模式:每 Y 秒对全部黄灯按 /light percent 重新分配一次,有灭也有亮。

有灭也有亮
/flex all on | off

重分配功能的总开关。off = 整夜只掷一次骰,之后不再变;on = 重新打开(沿用上次的方向)。/flex all = 查询。

总开关可查询
/flex flex <秒>

每块灯的固定偏差(秒),避免所有灯同一瞬间一起变。默认 2.00。

默认 2.00 秒
/flex grow <秒,可负>

每轮间隔的递增量:第 k 轮间隔 = Y + (k−1)·X。可以填负数让节奏越来越快。默认 0。

可负默认 0

全灭总闸与乱闪

5 条
/lightall on | off

全灭总闸:off 一按下去,黄灯红灯当场全灭,无视白天黑夜、无视其它任何设置(连纯随机乱闪也压得住),只认 on 恢复。/lightall = 查询。

最高优先级
/alllight on | off

和 /lightall 完全等价的另一种写法(只是词序不同)。两个名字都注册了,写错哪半边都照样管用。

防手滑别名
/light -f on | off

也是全灭总闸的写法之一(和 /lightall 同一份状态)。/light -f = 查询。

同一份状态
/light all on | off

同样是全灭总闸的写法之一。/light all = 查询。

同一份状态
/flexable on | off

黄灯「纯随机乱闪」:开启后只要天黑,黄灯就脱离比例 / 延迟 / 重分配那套设定,每块独立乱闪。默认关。只有全灭总闸和黄灯总开关压得住它。/flexable = 查询。

默认关

设置界面

1 条
/mb [help] · /MB help

打开设置界面(分级菜单)。/mb、/mb help、/MB help 三种写法都能打开。界面里点按钮不刷聊天框,退出时汇总一条「UI执行成功 / UI执行失败」。

大小写都认分级菜单

没有找到匹配的指令,换个关键词试试。

指令反馈很简短:设置类指令只回「指令执行成功」或「指令执行失败」;不带参数的查询只回数值,不会冒出长句。所以别把「只回成功/失败」当成没生效 —— 想看当前值就用不带参数的写法。
出厂默认

第一次给存档装上模组时就是这样

下面这套数值就是「首次安装即生效」的默认。随时可以用 /light define default 一键还原。

设置指令默认值
夜晚点亮比例/light percent20%
灯光亮度/light light12
天黑随机点亮秒数/light nightdelay60 秒
天亮随机熄灭秒数/light daydelay60 秒
黄灯总开关/light on|off开
红灯总开关/light h on|off开
全灭总闸/lightall on|off关
红灯亮起时间/hlight time on2.00 秒
红灯熄灭时间/hlight time off2.00 秒
灭→亮渐变/hlight slow on0.50 秒
亮→灭渐变/hlight slow off0.50 秒
红灯错开/hlight flex开 · 1.00 秒
重分配功能/flex all开
重分配模式/flex off / /flex on熄灭模式
重分配间隔/flex off time60.00 秒
重分配熄灭比例/flex off … percent10%
重分配偏差/flex flex2.00 秒
重分配递增/flex grow0.00
纯随机乱闪/flexable关
想让光有颜色

彩色光交给光影包

原版光照只有白色。要让黄灯投暖光、红灯投红光,需要光影包支持彩色光效,并且认识这两个方块 ID。

仓库里有一份配置模板
项目里带了一个 block.properties 片段,把两个方块 ID 加到光影包对应颜色组就行。

mzycbuild:light_block → 建议放「黄 / 暖白」组
mzycbuild:red_light_block → 建议放「红」组
三条硬规矩(照做就不会出错)
1. 同一个方块 ID 在整份配置里只能出现一次,重复会让光影报错;
2. 不能新建颜色组,只能把 ID 追加进光影包里已经有的组;
3. 光影包本身必须支持彩色光照 / Floodfill,否则加了也没效果。

改完在游戏里按 F3 + T 重载光影(或重进一次)即可看到效果。

给你的建筑装一排灯

需要 Fabric Loader ≥ 0.15.1 与 Fabric API。下载后丢进 mods 文件夹即可。

设置数据存在存档内部:<存档>/data/mzycbuild_light.dat CurseForge 页面还没上架,点击按钮会提示「暂未上架」