血石
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | RandomThings:bloodStone |
| 类 | lumien.randomthings.Items.ItemBloodstone |
| 最大耐久 / 血量 | 400(MAX_CHARGES,ItemBloodstone.java:24) |
| 触发门槛 | 50 点血量(charges >= 50,:81) |
| 堆叠上限 | 1(ItemBloodstone.java:27) |
| 仪式图案 | ItemBloodstone.ritualPattern(BlockPattern,:25、:29) |
| 图案方块数 | 25 |
| 实体 | EntityBloodmoonCircle(ID 5) |
| 开关 | Items.Bloodstone(RTConfiguration.java:231) |
功能
血石是召唤血月的道具:耐久条代表累积的血量,在正确摆放的仪式阵中心使用即可强制触发血月。
充能
public static final float MAX_CHARGES = 400;
...
this.setMaxDamage((int) MAX_CHARGES);
(ItemBloodstone.java:24、:26)—— 耐久被当作血量槽使用,NBT 整型键为 charges(:78)。注意触发只需 50 点,即最大值的 12.5%。
仪式阵图案
ritualPattern 是一个 BlockPattern,偏移格式为 (x, y, z)(ItemBloodstone.java:36-67)。所有条目 x 恒为 0,因此图案是一张立在 YZ 平面上的 5×5 竖直薄板(y 与 z 各跨 −2…+2),共 25 块:
z=-2 z=-1 z=0 z=+1 z=+2
y=+2 石英 下界砖 红石块 下界砖 石英
y=+1 下界砖 黑曜石 黑曜石 黑曜石 下界砖
y= 0 红石块 黑曜石 ★黑曜石 黑曜石 红石块
y=-1 下界砖 黑曜石 黑曜石 黑曜石 下界砖
y=-2 石英 下界砖 红石块 下界砖 石英
★ 是玩家右键的中心格,其本身也是黑曜石。各类方块数量:黑曜石 9、红石块 4、石英块 4、下界砖 8,合计 25(grep -c 'ritualPattern.addBlock' ItemBloodstone.java = 25)。
触发条件
onItemUse 需同时满足 5 个条件(ItemBloodstone.java:70-82):
if (worldObj.getBlock(posX, posY, posZ) == Blocks.obsidian) {
if (!worldObj.isRemote && worldObj.getTotalWorldTime() > 15000
&& !ServerBloodmoonHandler.INSTANCE.isBloodmoonScheduled(worldObj.provider.dimensionId)) {
if (ritualPattern.matches(worldObj, posX, posY, posZ)) {
...
if (charges >= 50) {
| # | 条件 | 说明 |
|---|---|---|
| 1 | 点击的方块是黑曜石 | 中心格 |
| 2 | 服务端 | !worldObj.isRemote |
| 3 | 世界时间 > 15000 tick | 即开局约 12.5 分钟后 |
| 4 | 该维度当前没有已排定的血月 | !isBloodmoonScheduled |
| 5 | 图案完整匹配 | ritualPattern.matches |
| 6 | 血量 ≥ 50 | 从 NBT charges 读取 |
触发后在中心点 ±2 的 5×5×5 范围内查找已有的 EntityBloodmoonCircle(ItemBloodstone.java:82-90),据此决定是否已召唤。
数值
| 数值名 | 值 |
|---|---|
| 最大耐久 | 400 |
| 触发门槛 | 50 |
| 堆叠上限 | 1 |
| 图案尺寸 | 5×5(YZ 平面) |
| 图案方块总数 | 25(黑曜石 9 / 红石块 4 / 石英块 4 / 下界砖 8) |
| 世界时间下限 | 15000 tick |
| 检测半径 | 2 格(5×5×5) |
交互
| 触发 | 行为 |
|---|---|
| 击杀生物 | 累积 charges |
| 仪式阵中心右键黑曜石 | 满足全部条件时强制触发血月 |
/rt bloodmoon |
指令亦可强制触发,见 指令 |
合成配方
无合成配方。 Library/Recipes.java 中 ModItems.bloodStone 出现 0 次(grep -c 结果为 0)。本物品只能通过游玩累积血量取得。