血石

基本信息

属性 值
注册名 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)。本物品只能通过游玩累积血量取得。

相关条目