该行配置文件位于服务端
plugins/GermPlugin/item文件夹内详见此处 >>> 传送门
# 在游戏中按 F3+H 然后鼠标放在物品上,可以看真实的物品名和ID
# 索引名 无意义随便设置
default_javaEdition_item:
# 代表这是一个Java版的物品模型
type: "javaEdition"
#当type设置为 javaEdition 时路径格式
# 在材质包中时省略路径assets/germmod/models/item
# 在萌芽缓存中省略路径GermCache/models/item
path: 'default.json' #该模型已内置 所以手持钻石剑添加lore 测试武器 即可显示
############################################
# 匹配该模型的条件
matchCondition:
# 匹配该模型的材质要求
# 格式 物品名:子ID 或者 物品ID:子ID
# 某些物品会因为客户端的英文名字和服务端的不同报错,推荐填数字ID
type: 'DIAMOND_SWORD'
#匹配
# 当描述或者名字含有下方字符串时会替换到设置的模型
match: "测试武器"
# 当装备的名字等于该值的时候匹配模型
name: "测试武器"
# 当装备的名字存在该字符时会匹配
name2: "武器"
# 当装备的某行描述等于设定的值时匹配模型
# 格式为:行号<->值 (行号从0开始为第一行)
lore:
- "2<->&5&o测试武器"
- "7<->测试武器"
# 当装备的某个nbt等于设定的值时匹配
nbt:
- "nbtKey1<->测试武器"
- "parentNbt.childNbt<->测试武器" #当有多层NBT时用.隔开
# nbt1不等于测试武器时匹配成功
not_nbt:
- "nbt1<->测试武器"
# 脚本匹配 入参ItemStack 需要返回bool return true为该条件通过
script: |
var name = Utils.getItemName(ItemStack);
if(name.contains("+1")){
return true;
}
return false;
# 匹配时需要满足的表达式 更多表达式请看wiki https://wiki.germmc.com/gui/arithmetic.html
expressions:
- "%player_level% > -1"
# 匹配手持该物品的玩家是否正在钓鱼
- "str(%matchEntity_fishing%,true)"
# 匹配手持该物品的生物是否拥有权限 germ_item_1 (需要注意的是,如果是掉落在地面上的道具,默认的matchEntity是玩家自己,这个表达式会永久不通过)
- "str(%player_has_permission_germ_item_1:#matchEntity_name#%,true)"
# 匹配手持该物品的生物是否是自己 并且是第一人称 其他人称 FIRST_PERSON THIRD_PERSON THIRD_PERSON_REVERSE
- "str(%player_name%,%matchEntity_name%) && str(%client_person%,REAL_FIRST_PERSON)"
准备好我们需要使用的Java版模型
>>下载示例Java版模型文件
此为教学资源,请勿在您的正式服务器内使用!!
模型效果如下,如果您需要其他模型,可以自行制作
将Java版模型的json文件复制到您的客户端GermCache/models/item目录下(支持子文件夹)

现在打开json文件,注意下面圈出的地方,我们需要将纹理路径前的命名空间修改为germmod:

修改完之后,现在看着上图圈住的路径 他们分别指向了不同的文件,您需要把这些文件提取出来。
这些纹理文件的意义,以及Java版物品模型json的制作过程在这里不再赘述,请自行查找相关的教程
上面的路径被省略了一些 对应打包后的真实路径如下
assets/germmod/textures/item/lightsaber/trans_red
assets/germmod/textures/item/lightsaber/hilt
其中有的图片会伴有一个后缀为
.mcmeta的同名文件, 如果存在的话,需要将其与对应的图片放置在同一个文件夹下(该文件的意义在这里不再赘述,请自行查找相关的教程)
现在将该Java版模型的纹理文件放入上方json文件中指向的路径内

现在在服务端plugins/GermPlugin/item内新建yaml文件(文件名随意设置),写入以下内容,进入游戏后,输入指令/gp reload
#在游戏中按 F3=H 可以看真实的物品名
#索引名 随便设置
lightsaber:
type: "javaEdition"
path: 'lightsaber.json'
matchCondition:
type: 'DIAMOND_SWORD'
match: "光剑"
修改钻石剑的名字或者描述包含 光剑 两个字符,即可大功告成!
如果您是在游戏运行期间动态添加的Java版模型的纹理文件,您需要使用F3+T进行重载
