我的世界星辉魔法的部分NBT修改
-=– Warning –=- ,-=– 多图预警 –=-
首先我们要确定一个主要的方向:修改是为了乐趣与某些特殊场合下的实用。
首先从我们正常情况下最先接触到的水晶石开始吧。
如图所示,这是一块共鸣非攻座的水晶石,三维(纯度,切割,尺寸)都是原版默认极品,他的一切数据都直接存储在NBT里。
我们当然可以直接修改数字,但是一个一个试当然不会是最优秀的选择,那么接下来我们试着对应一下每条NBT所对应的表意。
{ Astralsorcery:{} } 这条是几乎所有星辉物品共有的NBT,可以看作一个开始标志:“我要开始了!后面的几个娃娃是我家的!”
ConstellationName 这条是“共鸣星座名称”,对应了星辉所有星座的名字,这里所对应的是非攻座。
crystalProperties:{} crystal意思是水晶,Properties一般在游戏内更倾向翻译为“属性”这种意思,这一条里面就是水晶的三维数据了。
下面首先看到的就是collectiveCapability:100 collective一般意思为收集,capabilities一般意思为能力和效率,但是因为作者没玩过星辉,所以不知道是什么意思,只能遗憾skip。
size:400,size一般意思为尺寸,这里意思为这块水晶石的尺寸为400,我们可以通过修改,达到上限2147483647,下限-2147483648的数值。当超过2147483647或低于-2147483648时,尺寸将恢复到0,当尺寸为负数并且投入使用时,也许会有好玩的效果,这些就等待各位大佬们测试啦!
fract:0,fracture是匠魂2中骨头手柄材料词条“碎裂”的注册名,由此可得这条属性决定水晶石的磨损。
水晶石的磨损不可小于0,不可大于21e(21e特指2147483647,-21e特指-2137384648下文不再赘述全名),如果小于0或者大于21e时,NBT会自动隐藏磨损。
purity:100,purity代表水晶石的纯度,纯度同样不可小于-21e和大于21e,纯度高于100时字体颜色会变为亮蓝色,颜色代码为B
sizeOverride:-1,size表尺寸,override一般可以表覆盖,由于作者没玩过星辉,所以等待各位大佬补充,修改此NBT对面板无可视化反馈。
最后一条是collectortype:0,collect一般意思为收集,or后缀有时可表做某事的器械或人,type是类型,这一条数据可以是0和1,这条决定水晶石的颜色和类型,0是白色(共鸣水晶石),1是蓝色(天体水晶石)。
如果collectortype这一条NBT被去掉,那么它就会变成普通的水晶石,材质也不再是偏向3D化的模型材质。
接下来就是我们会在星辉生成结构中遇到的卷轴。卷轴的NBT也是使用{Astralsorcery:{}}作为开头,里面有一串ConstellationName:作为标注,比如记载着非攻座的卷轴NBT如图
接下来是小小的复习课题qwq:我们从创造模式的卷轴可以获得其他星座在NBT内的名字,比如一个我不知道叫什么的ulteria,把他缝合到一个共鸣水晶石上面去:
接下来,只要到达那个地方,只要能到达那个地方.gif
但是,不出意外的,“唰”的一下,游戏崩溃啦!
星辉:布响丸勒
然后根据启动器给出的提示,初步判定问题出于星辉。接下来找进crash-config,我们可以看到更加详细的报错:
java是游戏的本体,lang一般是语言文件和语言,out可以是在…之外,class可以是班级,也可以是小队或者编组,初步可以认为天体水晶并没有给这个星座进行设置,所以导致了直接崩溃(剩下的交给大佬们来看,我看的这些结论99%是有错的)
好啦,接下来是一个小小道具的修改:秩序之杖!
首先来看一下他的NBT构成:{ astralsorcery: {storedStates: [{registryName:”minecraft:stone” ,properties:[{property:”variant”,value:”stone”}] }] } }
{Astralsorcery:{}}为通用前缀,stored一般表意为存储,state可以表“状态”,register和其变种更多表示“注册”的疑似,properties可以表示种类。
我们给minecraft:stone换成minecraft:log之后,它毫不意外的变成了原木!(不上图了)
然后在加装了暮色森林模组之后,我们给minecraft:stone改成twilightforest:stronghold_shield,他就变成暮色的要塞盾啦!
接下来还有一个问题:方块有Meta值和特殊值怎么办!在这里我们选取一个直立的云杉木,然后看看此时权杖的NBT:这次注册名是minecraft:log,但是不小心挡住了qwq,然后接下来的两个properties才是重头戏,axis代表朝向,xyz为一个正方体空间的三维长宽高,这里y是朝上,x和z自然就是另外的左右朝向。(树干有两个面,所以xyz够用)
接下来是正菜之一的工具部分,从剑开始:
由于各项NBT所对应,上述的水晶石部分已经全部说完,这里就简单提一下,cutting对应的NBT是collect,collect越大,伤害越高,最大生效为21e。
接下来的部分,就是万众瞩目的星辉宝石!首先观察一下随机生成了属性的一颗宝石:
首先,宝石的Meta决定他是什么宝石,也就是说,三个宝石同出一源,他们最大的不同之处就是彼此的Meta值。
当meta为0时为奥瑞尔宝石,meta为1时为伊利姆宝石,meta为2时为芙荙姆宝石。
然后NBT的开头是万年不变的{ Astralsorcery:{} },但是括号里面的就开始说明他的独特性了。
modifiers:[{mode:1,baseValue:1.00f,mId:1L,idMost:2L,type:”astralsorcery.armor”,idLeast:1L}]
modifier一般可以是强化,也可以是属性。回归NBT,mode决定他如何增加数值,mode为0时增加整数属性,为1时按照百分比增加属性,为2时按照千分比增加属性。
basevalue:1,base意思是基础,value是数值,这里决定提供的属性数值。mId作用未知,idMost和idLeast可以尽情改成1或2,这个代表属性的uuid值,很占用NBT。
type:””代表星辉宝石所加成的属性类型,他能且只能加成注册过的属性。
盔甲 | 盔甲韧性 | 最大生命 | 生命回复 | 近战伤害 | 弹射物伤害 | 元素抗性 | 闪避机率 |
armor | armortoughness | maxhealth | liferecovery | meleeattackdamage | projectileattackdamage | allres | dodge |
暴击概率 | 暴击伤害 | 攻击速度 | 技能经验获取 | 触及距离 | 移动速度 | 挖掘速度 | (附属mod提供)符文护盾加成 |
critchance | critmulti | attackspeed | expgain | reach | movespeed | harverstspeed | compat.thaumcraft.runicshield |
示例,我要加成1点盔甲韧性和4%的攻击伤害,NBT应该如下
{astralsorcery:{modifiers:[
{mode:0,baseValue:1.00f,mId:1L,idMost:2L,type:”astralsorcery.armor”,idLeast:1L}
,{mode:1,baseValue:0.04f,mId:1L,idMost:2L,type:”astralsorcery.meleeattackdamage”,idLeast:1L}
]}}
可以根据我这条示例,在mode:1的那条NBT后面复制黏贴他自己,然后改动属性名称和属性加成类型。
另外,属性加成的显示上限是2147483647%,但是可用上限,是1.0E308,理论上在java里最接近无穷大的数值。
附图:
如果生命加成到达1.0E308的百分比时,尽管显示是21亿,但是实际血量会是340282346638528860000000000000000000000,浮点数的极限,此时血条显示为 。
使用第二客户端观看血条为此时,任何纯粹的数值伤害都将失去它的意义,在你脚下化为一团飞灰。世界也要匍匐在你的王座之下,静静看着你睥睨四方群雄,没一个能打的 但是可别和那些秒杀类比啊,对比秒杀类会单独有教程
这也可以是NBT修改的意义,做到一些看起来就很好玩的效果,达到意料之外的强度什么的……
下一个部分是法斯科共振器。通过查看一个创造模式拿出来的共振器的NBT:
enhanced为1b时才会变成这种材质,然后upgrades代表可以切换的三个模式,0,1,2代表三个状态。
在shift+右键(使用键)后,会切换模式,并且多出来一条NBT:selected_upgrade,代表此时所选用的模式。
接下来的部分,是璀璨棱镜:
依旧是简单快乐的NBT拆解:
{astralsorcery:{
amuletEnchantments:
[{ench:”minecraft:punch”,
level:1,type:1}]
,amuletColor:-11665544
}}
{Astralsorcery:{}}这个老朋友就不再赘述,下面是amuletEnchantments: amulet一般指护身符,enchantment意思为附魔,附魔概念并非MC独有。
ench:”minecraft:punch” 代表原版的冲击附魔,如果单独拿掉他,还有他后面的逗号,就会变成空属性。
而全属性和空属性的差别,在于后面的type,type为0时只增幅给出的指定附魔,type为1时增幅所有存在的特定附魔,type为2时增幅全附魔,level代表等级,最高有效32767,增幅后高于32767级,附魔等级会变为负数。
amuletcolor代表这一个护身符选用的特殊颜色。颜色代码采用8位数字颜色代码。