匠魂3获取所有强化属性
本章主要涉及内容:JSONIO、LoadClass,本章所有代码部分都在server_scripts里
完整代码
获取部分
js
let file = new FileHelper("tconstructModifiers.json");
const $ModifierManager = Java.loadClass("slimeknights.tconstruct.library.modifiers.ModifierManager")
let list = []
$ModifierManager.INSTANCE.getAllLocations().forEach(value => {
list.push({
key:value.toString(),
name:Text.translatable(`modifier.${value.getNamespace()}.${value.getPath()}`).getString(),
flavor:Text.translatable(`modifier.${value.getNamespace()}.${value.getPath()}.flavor`).getString(),
description:Text.translatable(`modifier.${value.getNamespace()}.${value.getPath()}.description`).getString()
})
})
file.updateJson(list);文件处理部分
js
// priority: 10
function FileHelper(fileName,path){
if (path == undefined) path = "./meng";
path = path + "/" + fileName;
this.json = JsonIO.readJson(path);
this.getJson = () =>{
try {
return JSON.parse(this.json.asJsonObject.get("data"))
}catch(err){
console.warn(err);
return null
}
}
this.updateJson = (newJson) =>{
JsonIO.write(path,{data:newJson});
}
}注意事项
- 该项目只是作为示例,很多地方并不是最优解,可自行进行解决
- 代码可能存在的问题:如果路径存在未创建的文件夹则会出现无法创建文件的情况,所以提前创建好指定文件夹
- 项目中FileHelper可以被替代,孤梦懒得修改所以直接全部复制上来了,但是使用时,一定要将
// priority: 10加上,让其提前加载 - 如果对该项目代码部分不满可以将修改好的代码上传至