-=-- Warning --=- ,-=-- 多图预警 --=-

首先我们要确定一个主要的方向:修改是为了乐趣与某些特殊场合下的实用。

首先从我们正常情况下最先接触到的水晶石开始吧。

星辉魔法的部分NBT修改-第1张图片如图所示,这是一块共鸣非攻座的水晶石,三维(纯度,切割,尺寸)都是原版默认极品,他的一切数据都直接存储在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

星辉魔法的部分NBT修改-第2张图片

星辉魔法的部分NBT修改-第3张图片

星辉魔法的部分NBT修改-第4张图片

sizeOverride:-1,size表尺寸,override一般可以表覆盖,由于作者没玩过星辉,所以等待各位大佬补充,修改此NBT对面板无可视化反馈。


最后一条是collectortype:0,collect一般意思为收集,or后缀有时可表做某事的器械或人,type是类型,这一条数据可以是0和1,这条决定水晶石的颜色和类型,0是白色(共鸣水晶石),1是蓝色(天体水晶石)。

如果collectortype这一条NBT被去掉,那么它就会变成普通的水晶石,材质也不再是偏向3D化的模型材质。


接下来就是我们会在星辉生成结构中遇到的卷轴。卷轴的NBT也是使用{Astralsorcery:{}}作为开头,里面有一串ConstellationName:作为标注,比如记载着非攻座的卷轴NBT如图星辉魔法的部分NBT修改-第5张图片

接下来是小小的复习课题qwq:我们从创造模式的卷轴可以获得其他星座在NBT内的名字,比如一个我不知道叫什么的ulteria,把他缝合到一个共鸣水晶石上面去:星辉魔法的部分NBT修改-第6张图片

接下来,只要到达那个地方,只要能到达那个地方.gif

但是,不出意外的,“唰”的一下,游戏崩溃啦!星辉魔法的部分NBT修改-第7张图片

星辉:布响丸勒

然后根据启动器给出的提示,初步判定问题出于星辉。接下来找进crash-config,我们可以看到更加详细的报错:

java是游戏的本体,lang一般是语言文件和语言,out可以是在...之外,class可以是班级,也可以是小队或者编组,初步可以认为天体水晶并没有给这个星座进行设置,所以导致了直接崩溃(剩下的交给大佬们来看,我看的这些结论99%是有错的)


好啦,接下来是一个小小道具的修改:秩序之杖!

首先来看一下他的NBT构成:星辉魔法的部分NBT修改-第8张图片{  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:星辉魔法的部分NBT修改-第9张图片这次注册名是minecraft:log,但是不小心挡住了qwq,然后接下来的两个properties才是重头戏,axis代表朝向,xyz为一个正方体空间的三维长宽高,这里y是朝上,x和z自然就是另外的左右朝向。(树干有两个面,所以xyz够用)


接下来是正菜之一的工具部分,从剑开始:星辉魔法的部分NBT修改-第10张图片

由于各项NBT所对应,上述的水晶石部分已经全部说完,这里就简单提一下,cutting对应的NBT是collect,collect越大,伤害越高,最大生效为21e。


接下来的部分,就是万众瞩目的星辉宝石!首先观察一下随机生成了属性的一颗宝石:

星辉魔法的部分NBT修改-第11张图片

星辉魔法的部分NBT修改-第12张图片首先,宝石的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:""代表星辉宝石所加成的属性类型,他能且只能加成注册过的属性。

盔甲盔甲韧性最大生命生命回复近战伤害弹射物伤害元素抗性闪避机率
armorarmortoughnessmaxhealthliferecoverymeleeattackdamageprojectileattackdamageallresdodge
暴击概率暴击伤害攻击速度技能经验获取触及距离移动速度挖掘速度(附属mod提供)符文护盾加成
critchancecritmultiattackspeedexpgainreachmovespeedharverstspeedcompat.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里最接近无穷大的数值。

附图:星辉魔法的部分NBT修改-第13张图片

如果生命加成到达1.0E308的百分比时,尽管显示是21亿,但是实际血量会是340282346638528860000000000000000000000,浮点数的极限,此时血条显示为

使用第二客户端观看血条为星辉魔法的部分NBT修改-第14张图片此时,任何纯粹的数值伤害都将失去它的意义,在你脚下化为一团飞灰。世界也要匍匐在你的王座之下,静静看着你睥睨四方群雄,没一个能打的  但是可别和那些秒杀类比啊,对比秒杀类会单独有教程

这也可以是NBT修改的意义,做到一些看起来就很好玩的效果,达到意料之外的强度什么的......


下一个部分是法斯科共振器。通过查看一个创造模式拿出来的共振器的NBT:星辉魔法的部分NBT修改-第15张图片

enhanced为1b时才会变成这种材质,然后upgrades代表可以切换的三个模式,0,1,2代表三个状态。

在shift+右键(使用键)后,会切换模式,并且多出来一条NBT:selected_upgrade,代表此时所选用的模式。


接下来的部分,是璀璨棱镜:

星辉魔法的部分NBT修改-第16张图片

星辉魔法的部分NBT修改-第17张图片

依旧是简单快乐的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位数字颜色代码。