Tips:请在
GermPlugin/misc/文件夹内创建配置
如果有索引名为 default_special_item 的特殊武器会作为默认特殊武器 可以用来修改默认动作
# 特殊物品
# 用来控制玩家使用该武器的动作和攻击范围等
# 如果有索引名为default_special_item的特殊物品会作为默认特殊物品 可以用来修改默认动作
SpecialItem:
type: specialItem
# 是否关闭原版动作 默认为false
disableSwing: false
# 道具是否可以连续触发handler
# 例如Left匹配器,一直按着左键可以接着触发下一个就填true
continuous: false
# 手持时该物品时是否启用万象跑
# 默认为客户端的万象跑启用设置
turnSteering: false
# 手持该武器点击左键是否使玩家朝向镜头方向
# 开启萌芽第三人称控制和万象跑才有效
autoTurn: false
# 手持该武器是否锁定头部和玩家身体为同一个方向
lockBody: false
# 手持该物品时是否禁止点击破坏方块 默认true
clickBlock: true
# 手持该物品是否禁用所有原版事件和伤害 默认为true
callBukkitEvent: true
# 手持该物品时替换掉玩家的默认动画
# 支持替换的动作
# idle,elytra,riding,climbing,swimming,flying,jump,sprint,walk,backward_walk,rightward_walk,leftward_walk,
# sneak,guard,eat,bow,swing_mining,swing_axe,axe,attack,attack_ready,
# punch,punch_ready,lower_jump,lower_sneak,lower_sprint,lower_walk
# 当播放自定义动作时(bend文件夹内,需要设置动作同步腿部),玩家再到站立,移动等状态,会自动切换播放 lower_sneak,lower_walk,lower_sprint,lower_jump (redirect这些动作时注意只需要做下半身动作即可)
redirectAnim:
#要替换的动画名 支持 变量 %hand% 右手持时等于main 左手持时等于off ,例如指向special_idle_%hand% 客户端要预存special_idle_main和special_idle_off,左右手都持有带有重定向动画的特殊武器时以右手为准
idle:
- "special_idle,50%" #格式:替换成什么动作(在bend文件夹设置的yamlBend或者基岩动作都可以),概率(当有多个可替换的动作时,随机到的权重)
- "special_idle2,20%"
#替换掉 播放自定义动作时的下半身动作
lower_idle:
- "special_lower_idle,50%"
- "special_lower_idle2,20%"
# 需要注意 如果将史蒂夫更改为了自定义模型 这里每个动画仅支持重定向一个名字 例如下
# idle: special_idle
#匹配的条件
matchCondition:
#匹配该模型的材质要求
#格式 物品名:子ID 或者 物品ID:子ID
type: '336'
#匹配
# 当描述或者武器名字含有下方字符串时会替换到设置的模型
match: "测试Logo图标"
# 匹配道具来源 可以是 main 或 off 或 all 防止主手、副手都放特殊武器 同时触发
hand: "main"
# 当装备的名字等于该值的时候匹配模型
name: "测试Logo图标"
# 当装备的某行描述等于设定的值时匹配模型
# 格式为:行号<->值 (行号从0开始为第一行)
lore:
- "3<->测试Logo图标"
# 当装备的某个nbt等于设定的值时匹配
nbt:
- "nbtKey1<->测试Logo图标"
- "parentNbt.childNbt<->测试Logo图标" #当有多层NBT时用.隔开
# 表达式
expressions:
- "str(%player_has_permission_germ_gui%,true)"
# 触发处理器列表
triggerHandlers:
# 处理器索引名
attack1:
# 处理器类型
# FIRST 首个处理器 玩家达成触发条件时将从所有符合条件的触发器里面随机选择一个开始执行
# COMBINE 衔接处理器 用于衔接各种动作
type: FIRST
# match 设置 LEFT 为鼠标左键时可匹配的触发处理器
# match 设置 RIGHT 为鼠标右键时可匹配的触发处理器
# match 设置 KEYDOWN@R 为按下R键时可匹配的触发处理器 R可以换为任意键
# match 设置 KEYUP@R 为松开R键时可匹配的触发处理器 R可以换为任意键
#
# 灵活运用各个参数可以做到以下功能
# √ 连续左键鼠标三次 和 连续左边鼠标两次然后右键鼠标释放的动作不同
# √ 每次左键触发的动作都有概率不相同(例如在nextHandlers填写了两个handle1一个handle2,那么大概率触发的是handle1喽)
#
# 多个条件用,隔开
match: LEFT
# 当攻击动作结束后多少毫秒后打断衔接
# 可以理解为攻击动作结束后多少毫秒内再次点击鼠标可以衔接到下一个处理器
interrupt: 200
# 激活该处理器时 是否锁定头部和玩家身体为同一个方向
lockBody: false
# 该处理器会持续多少毫秒才能触发下一个
# 不填默认为播放完玩家的动画
# 当填百分率的时候会自动根据动画时长计算 例如 90% = 0.9*动画时长
# 该参数会使动作衔接更顺畅 建议95%
duration: 300
# 锁定玩家移动 单位毫秒 默认0
# 当填百分率的时候会自动根据动画时长计算 例如 90% = 0.9*动画时长
lockMove: 300
# 锁定玩家相机 单位毫秒 默认0
# 当填百分率的时候会自动根据动画时长计算 例如 90% = 0.9*动画时长
lockCamera: 300
# 锁定人称视角 单位毫秒 默认0
# 当填百分率的时候会自动根据动画时长计算 例如 90% = 0.9*动画时长
lockView: 300
# 锁定到人称几 取值为1,2,3,4 4为当前人称
lockViewType: 2
# 锁定快捷栏的时间 单位毫秒 默认为0
# 当填百分率的时候会自动根据动画时长计算 例如 90% = 0.9*动画时长
lockQuickbar: 300
# 禁用疾跑 单位毫秒 默认为0
# 当填百分率的时候会自动根据动画时长计算 例如 90% = 0.9*动画时长
disableSprint: 300
# 在当前处理器的动作播放完成 后及时操作然后执行的下一个处理器 将从下列列表中随机选择一个符合条件的处理器
# 多个条件用,隔开
# 如果需要上个处理器命中才能触发下个处理器 可以在条件加上hit
nextHandlers:
- "left<->attack2"
- "right,keyDown@W<->attack2"
- "hit,keyDown@U<->attack2"
# 道具触发动画 播放下列中的随机一个动画 默认为空
# 当你想同时触发多个动画的时候用,隔开
# 默认为触发主手道具的动画
# 当你想触发其他部位道具的动画时可以写 槽位id:动画名
# 支持germplugin_开头的所有拓展槽位,当然这个槽位内要有基岩装备
# 设置播放速度的格式为 动画名字;速度倍率 例如 attack1;1.5,germplugin_armor_chestplate:bianxing2;2
# 提示:速度倍率,可以使用变量来用兼容属性的攻击速度
itemAnimations:
- "attack1"
- "attack1,germplugin_armor_chestplate:bianxing2,germplugin_off_hand:bianxing3"
# 玩家触发动画 播放下列中的随机一个动画 不准为空
# 在设置动画名字前 你应该在 bend 文件夹先给玩家添加上动画
# 如果是基岩动画可以设置播放速度 格式为 动画名字;速度倍率 或 name=动画名字;speed=速度倍率 例如 name=attack1;speed=1.5 支持变量可以使用攻速属性变量 例如 name=attack1;speed=%attr_attack_speed%
playerAnimations:
- "attack1"
# 刚开始执行时执行指令
handleCommands:
- "servercmd<->class %player_name% cast attack1"
# 执行dos,注意dos在客户端运行
# 支持以下特殊变量
handleDos:
- "message<->触发器%handler_name%播放了动画%anim_name%,动画需要延迟%anim_delay%ms动画时长为%anim_time%ms"
# 触发时是否按照实际情况触发Bukkit提供的事件 默认为true
# 包括 PlayerInteractEvent, PlayerInteractEntityEvent, PlayerInteractAtEntityEvent
callBukkitEvent: true
# 是否直接使用原版的伤害机制
# 对着哪个实体哪个实体受伤
# 使用该机制 也不影响玩家动画中的伤害帧
# 前提是开启了 callBukkitEvent
originDamage: false
# 如何设置触发动作时触发伤害?
# 使用bb打开动作文件,找到需要添加伤害的时间点 添加一个动画效果
# 然后添加一个指令的关键帧 写入 damage{range=2;shape=cycle}
# 他代表在动作运行至此关键帧处 伤害周围两格内的实体
# damage命令 支持的参数有 range范围支持小数,shape形状,目前仅圆型cycle和point,max最大伤害的数量
# cycle 代表以玩家本体为圆心的一圈 其中可以使用 sectionH=-180,180 来表示整个圆周 -90,90则表示前方 其他类比
# point 仅代表鼠标指向的实体
# 目前仅有damage命令
# 处理器索引名
attack2:
type: COMBINE
# 当是最后一个处理时 interrupt 将作为下次可以触发第一个处理器需要的时间
interrupt: 200
# 设置下一个处理为空 说明这个是结束处理器了
nextHandlers: [ ]
# 玩家触发动画 播放下列中的随机一个动画 不准为空
# 在设置动画名字前 你应该在 bend 文件夹先给玩家添加上动画
# 当你想同时触发多个动画的时候用,隔开
playerAnimations:
- "sj"
#匹配该处理器的条件
matchCondition:
#格式 物品名:子ID 或者 物品ID:子ID
type: '336'
#道具是否正在冷却 不写 冷不冷却都匹配 true 只匹配冷却中的 false 只匹配冷却完毕的
cooldown: false
#匹配
# 当描述或者武器名字含有下方字符串时会替换到设置的模型
match: "测试Logo图标"
# 当装备的名字等于该值的时候匹配模型
name: "测试Logo图标"
# 当装备的某行描述等于设定的值时匹配模型
# 格式为:行号<->值 (行号从0开始为第一行)
lore:
- "3<->测试Logo图标"
# 当装备的某个nbt等于设定的值时匹配
nbt:
- "nbtKey1<->测试Logo图标"
- "parentNbt.childNbt<->测试Logo图标" #当有多层NBT时用.隔开
# 表达式
expressions:
- "str(%player_has_permission_germ_gui%,true)"