我的世界对星辉魔法星能机制的相关研究
本文机制解析来自AS1.10.27(1.12.2)版本源码。
时间对星能的影响
星辉mod将MC一天的20分钟分为4部分:
从0刻开始,白天占一天的一半。日出日落各占七分之一,剩下的是夜晚。
星能时间参数在白天为0、夜晚为1,日出日落则呈线性涨落。平均值为0.357。
星辉mod的绝大多数星能装置在白天都会受到极大的削弱。
星能密度分布
星辉mod将MC世界分割为无数32*32大小的网格,将这些网格边界的十字交点作为生成星能场的锚点。这些锚点的星能密度都是随机的。随后星辉mod会基于这些锚点,利用余弦插值的方法生成两个星能场。将这两个星能场在某个坐标的星能密度相乘,便可得到该坐标的总星能密度。
注:星能场的基础星能密度取值范围为0到1之间,因此两个场的乘积范围也是0到1之间。
而法斯克共振器可以在夜间找到总星能密度大于0.4的区域,并以深蓝色的迷雾显示。如果是大于0.8的区域则会出现白色的光点。
星能密度的影响
聚能水晶:
星能密度对增幅水晶的效果一般不明显。增幅水晶会享受30%的星能密度加成。比如放在0.5密度区域的增幅水晶可以额外提供30%×0.5=15%星能。
聚能水晶提供的星能公式:
无多方块:星能=(0.2+0.8×时间系数 )×(0.2+0.8×星空系数 )×(1+0.3×密度系数 )×水晶尺寸 ×(抛光 ÷100%) ×(与最近的聚能水晶的距离[1] ÷16)×0.006
有多方块(强效):星能=(0.6+1.1×时间系数 )×(0.6+1.1×星座系数 )×(1+0.3×密度系数 )×水晶尺寸 ×(抛光 ÷100%) ×(与最近的聚能水晶的距离[1] ÷16)×0.006
星座系数:对于除时钟座和唤生座外的10个星座而言,星空系数会以8天为1周期,在0.5和1之间呈正弦曲线波动(每个星座连续出现5天,中间的那天系数是1;不出现的3天中中间那天系数是0.5)。唤生座的系数在望和朔月时为1;上弦、下弦时为0.5;其余时间为0.75。时钟座的系数在日食当天为1;其余时间为0.6。
例:假如密度系数是0,则满属性的强效天体水晶平均产出 (0.6+1.1×0.357)×(0.6+1.1×0.75)×900×0.006=7.64点星能,时钟座的强效天体水晶平均产出 (0.6+1.1×0.357)×(0.6+1.1×0.611)×900×0.006=6.82点星能。
合成祭坛:
星能密度对各等级的合成祭坛都有着显著的影响。合成祭坛可以享受66.7%的星能密度加成。
合成祭坛从天空接收的能量来自以下公式:
能量=(0.2+0.8×时间系数 )×(0.6+0.4×密度系数 )×高度系数 ×3200
高度系数:y=120时为1,y<120时每降1格减少100分之1;y>120时每升1格增加272分之1;y<40时为0。
(不同设备的高度系数机制有差别)
聚能水晶和光波增幅器可以提供额外的星能。每1点星能等于4000祭坛能量。
光波增幅器:
光波增幅器不享受任何星能密度加成。
增幅器额外星能=0.3×高度系数 ×(0.2+0.8×时间系数 )×(与最近的增幅器的距离[1]÷16)
效应放大器:
效应放大器享受50%的星能密度加成。
效应放大器被动接收星能=(0.2+0.8×时间系数 )×(0.2+0.8×星空系数 )×(1+0.5×密度系数 )×水晶尺寸 ×(抛光 ÷100%) ×0.006
(是的,在没有聚能水晶多方块结构的情况下,把水晶石放进效应放大器里产出的星能比做成聚能水晶产出的星能多)
关于效应放大器的具体工作机制见隔壁
聚星缸:
聚星缸可以享受120%的星能密度加成,但是由于聚星缸的流体产量是与星能的平方根成正比,所以实际对其生产效率的加成只有48.3%。
聚星缸每刻产出流体公式:
产量(mB)=产能系数 ×√((0.3+0.7×时间系数 )×(1+1.2×密度系数 )×高度系数 )
高度系数:y≥120时为1;y<120时每降1格减少120分之1。
产能系数:用来生产液体的物品自带的属性。见本mod的聚星缸页面。
烽火树:
烽火树没有接收自然星光的能力,所以星能密度对其没有影响。
[1] 该距离为直线的欧几里得距离,且最大值为16。
源码来自:
增幅水晶: hellfirepvp.astralsorcery.common.starlight.transmission.base.crystal.IndependentCrystalSource
hellfirepvp.astralsorcery.common.util.CrystalCalculations
合成祭坛: hellfirepvp.astralsorcery.common.tile.TileAltar
光波增幅器: hellfirepvp.astralsorcery.common.tile.TileAttunementRelay
效应放大器: hellfirepvp.astralsorcery.common.tile.TileRitualPedestal
聚星缸: hellfirepvp.astralsorcery.common.tile.TileWell
烽火树: hellfirepvp.astralsorcery.common.tile.TileTreeBeacon
时间机制: hellfirepvp.astralsorcery.common.constellation.distribution.ConstellationSkyHandler
星能密度: hellfirepvp.astralsorcery.util.SkyCollectionHelper