血月设置
基本信息
| 属性 | 值 |
|---|---|
| 分类 | Settings(全部键同分类,无独立 BloodMoon 分类) |
| 配置项数 | 12 |
| 处理类 | lumien.randomthings.Handler.Bloodmoon.ServerBloodmoonHandler |
| 客户端类 | ClientBloodmoonHandler(仅视觉效果) |
| 实体 | EntityBloodmoonCircle(ID 5) |
功能
血月是本 mod 最大的独立玩法系统,由 12 个配置项控制触发、生成、行为与视觉表现。
触发判定
ServerBloodmoonHandler 以夜晚开始为触发点(Handler/Bloodmoon/ServerBloodmoonHandler.java:64-69):
boolean isNight = angle >= 0.215F && angle <= 0.785F;
boolean wasNight = nightMap.getOrDefault(dim, isNight);
nightMap.put(dim, isNight);
boolean duskJustStarted = isNight && !wasNight;
boolean dawnJustStarted = !isNight && wasNight;
夜晚定义:angle ∈ [0.215, 0.785],按维度分别记录状态。
实际触发条件(:95-96):
if (forced || (date >= Settings.BLOODMOON_INITIAL_PAUSE
&& (isBloodMoonCycle(date) || Math.random() < Settings.BLOODMOON_CHANCE))) {
即满足以下之一即可:强制触发、到达初始暂停天数且(周期命中 或 概率命中)。
周期判定(:201-203):
if (Settings.BLOODMOON_CYCLE > 0 && day > 0) {
return day % Settings.BLOODMOON_CYCLE == 0;
}
BLOODMOON_CYCLE 为 0 时周期机制关闭,完全退回概率判定。
维度白名单
:57-59 先做维度过滤:
if (Settings.BLOODMOON_DIM_WHITELIST.length != 0
&& !ArrayUtils.contains(Settings.BLOODMOON_DIM_WHITELIST, dim)) {
空列表 = 允许所有维度;非空时只有列出的维度有效。默认 {0}(仅主世界),来源见 RTConfiguration.java:163-167。
这也意味着血月传感器 在白名单外的维度恒输出 0(其判定带 dimensionId 参数)。
12 个配置项
触发
| 配置项 | 默认 | 类型 | 说明 | 行 |
|---|---|---|---|---|
BloodMoonChance |
0.05 |
double | 每晚触发概率(0 = 从不,1 = 每晚) | :131-135 |
BloodMoonCycle |
0 |
int | 每 X 天循环一次,0 = 关闭周期 | :136-140 |
BloodMoonInitialPause |
5 |
int | 世界创建后前 X 天不触发(setMinValue(0)) |
:141-145 |
生物生成
| 配置项 | 默认 | 类型 | 说明 | 行 |
|---|---|---|---|---|
BloodMoonSpawnSpeed |
3 |
int | 敌人生成速度倍率(0 = 原版) | :119-120 |
BloodMoonSpawnLimitMult |
3 |
int | 实体数量上限倍率 | :121-125 |
BloodMoonSpawnRange |
3 |
int | 敌人生成距玩家的最近距离(原版 = 24) | :126-130 |
生成循环为 for (int i = 0; i < Settings.BLOODMOON_SPAWNSPEED; i++)(:79),因此 SpawnSpeed 越大生成越多。
游戏规则判定(:78):if (!Settings.BLOODMOON_RESPECT_GAMERULE || (spawnHostiles && doMobSpawning)) —— 即 doMobSpawning 游戏规则与 spawnHostiles 共同决定是否生成。
行为
| 配置项 | 默认 | 类型 | 说明 | 行 |
|---|---|---|---|---|
BloodMoonNoSleep |
true |
boolean | 血月期间禁止玩家睡觉 | :146-150 |
BloodmoonVanish |
false |
boolean | 血月生成的怪物在黎明时消失 | :151-152 |
BloodmoonRespectGamerule |
true |
boolean | 是否遵守 doMobSpawning 游戏规则 |
:153-157 |
BloodmoonMessage |
true |
boolean | 主世界玩家是否收到血月提示 | :158-162 |
BloodMoonDimensionWhitelist |
{0} |
int[] | 允许血月的维度;空 = 全部 | :163-167 |
视觉(4 项独立开关)
| 配置项 | 默认 | 说明 | 行 |
|---|---|---|---|
BloodMoonRedMoon |
true |
血月期间月亮变红 | :168-169 |
BloodMoonRedLight |
true |
血月期间光照染红 | :170-171 |
BloodMoonBlackFog |
true |
雾变黑以配合红色天空 | :172-176 |
BloodMoonRedSky |
true |
天空变红 | :177-178 |
这 4 项对应 ClientBloodmoonHandler 的纯客户端渲染处理,互不依赖,可单独关闭。
数值
| 数值名 | 值 |
|---|---|
| 配置项数 | 12 |
| 夜晚角度区间 | [0.215, 0.785] |
| 默认触发概率 | 0.05(5%) |
| 默认周期 | 0(关闭) |
| 默认初始暂停 | 5 天 |
| 默认白名单 | {0}(仅主世界) |
| 默认生成速度 | 3× |
| 默认生成距离 | 3 格(原版 24) |
| 提示语言键 | text.bloodmoon.command / .notify / .nosleep(zh_CN.lang:169-171) |
交互
| 触发 | 行为 |
|---|---|
| 夜晚开始 | 按概率 / 周期判定是否触发 |
/rt bloodmoon [dimID] |
强制触发(见 指令) |
| 血石 仪式 | 强制触发(需 50 点血量) |
BloodmoonMessage 开启 |
主世界玩家收到「血月升起…」 |