跳到主要内容

宠物文件

每种宠物写在 plugins/CloudPet/pets/ 里的一个 .yml,改完执行 /cp admin reload(召唤中的宠物会马上换成新的设置)。

  • 可以有子文件夹、可以用中文文件名。
  • 文件名就是宠物编号(小狐狸.yml → 编号 小狐狸)。两个文件同名时,在其中一个写 id: 另一个编号。编号不能有空格、逗号、分号。
  • 一个文件也可以写好几只:顶层没有 entity / name / model / icon 时,每个顶层段落算一只(段落名称就是编号)。
  • 写错的地方开服和重载时在后台逐条说明,并先用默认值继续。

数值的三种写法​

标了「数值」的键,都可以用下面三种方式写:

写法例子说明
数字health: 20每一级都一样
算式health: '20 + level * 2'变量 level 是宠物目前的等级;记得加引号
每级一个值health: [20, 24, 28, 35]第 1 个是 1 级;超过清单长度用最后一个

算式支持 + - * / % ^、括号,以及 min、max、floor、ceil、round、sqrt、abs、log。例如 'min(40, level)'、'80 + 30 * (level - 1) ^ 1.3'、'floor(level / 10)'。

物品图示的写法​

icon、皮肤的 icon、signal-stick、foods.yml 的 item 都用同一种写法:

icon: BONE # 材质
icon: PAPER:10001 # 材质:custom_model_data
icon: ce:命名空间:编号 # CraftEngine 物品
icon: ia:命名空间:编号 # ItemsAdder 物品
icon: # 分段写
material: PAPER
model-data: 10001 # 也可以写 custom-model-data
item-model: 'myserver:fox_icon' # 1.21.4+ 的 item_model
name: '&6小狐狸'
lore:
- '&7说明'
glow: true
texture: 'eyJ0ZXh0dXJl...' # 玩家头颅材质(Base64),写了材质默认是 PLAYER_HEAD
item: 'ce:命名空间:编号' # 其他插件的物品

基本信息​

键默认说明
id文件名宠物编号
name编号显示名称(支持颜色)
description空菜单上的说明(清单)
category空放进哪个分类(categories.yml 的键),见 分类
sort0同一分类里的顺序,越小越前面
iconBONE菜单图示,写法见 上面
permissioncloudpet.pet.<编号>有这个权限就自动拥有(config.yml 的 pets.permission-unlock)。写 '' = 不靠权限取得
price0用金币购买的价格,0 = 不能买(需要 Vault + 经济插件)
buy-permission空购买需要的权限
hiddenfalsetrue = 还没拥有时不在菜单显示(进化后的形态、活动宠物)

身体 entity​

entity:
type: FOX # 原版生物
mythicmobs: '' # MythicMobs 怪物编号(写了就用它当身体,type 不使用)
mythicmobs-level: 1
baby: false
scale: 1.0
silent: true
invisible: false
glow: ''
looks:
fox-type: RED
键默认说明
typeWOLF原版生物名称,要用会动的生物(WOLF、FOX、PARROT、HORSE、CAT……);末影龙与凋灵不能当宠物
mythicmobs空MythicMobs 怪物编号(大小写要一样),见 模型与 MythicMobs 身体
mythicmobs-level1生成 MythicMobs 怪物的等级
babyfalse幼年(会长大的生物;年龄锁住,不会长大)
scale1.0身体大小(1.20.5+),会影响碰撞箱与骑乘高度
silenttrue不发出叫声
invisible不写true = 身体隐身(只想显示名牌或粒子时用);有模型时身体由模型插件自动隐藏,不用写
glow空写了任何值(例如 true)就会发光
looks空原版外型:颜色、品种……,见下面

原版外型 looks​

looks 的每个键会对应到那种生物的 set 方法:把键里的 - / _ 去掉、每段开头改大写、前面加 set。值会自动换成方法要的类型(数字、true / false、枚举名称或原版注册名)。

写法对应的方法适用
fox-type: SNOWsetFoxType狐狸
collar-color: LIGHT_BLUEsetCollarColor狼、猫
variant: BLUEsetVariant鹦鹉、美西螈等有 variant 的生物
color: WHITE / style: WHITE_DOTSsetColor / setStyle马
cat-type: BLACKsetCatType猫
color: REDsetColor羊

这种生物没有那个方法(或值不对)时会略过;开启 debug: true 可以在后台看到是哪一项没生效。

模型 model​

model:
id: fox_model
engine: auto # auto / cloudmodel / modelengine
scale: 1.0
# 也可以只写一行:model: fox_model
键默认说明
model.id空云模型 CloudModel 或 ModelEngine 的模型编号;有写就把身体藏起来改显示模型
model.engineautoauto = 先找云模型、再找 ModelEngine;也可以指定 cloudmodel / modelengine
model.scale1.0模型大小

找不到模型时先用原版外型显示,后台会提示。见 模型与 MythicMobs 身体。

名牌 nametag​

键默认说明
nametag.enabledtrue显示名牌
nametag.text空 = 用 config.yml 的 pets.nametag可用 {name} 名字、{level} 等级、{level_name} 等级名称、{owner} 主人、{health}、{max_health}
nametag.height0在 config.yml 的 pets.nametag-height 之上再往上加几格(大模型调高)

移动 movement​

键默认说明
movement.speed1.2跟随速度(原版寻路速度的倍数)
movement.follow-distance3超过这个距离开始跟上(最小 1.5)
movement.teleport-distance24超过这个距离直接传送到主人身边(至少比 follow-distance 多 4);卡住 3 秒也会传送
movement.flyingfalsetrue = 在主人肩膀旁边飘(鹦鹉、蜜蜂、悦灵)
movement.fly-height1.6飞行宠物离主人脚下多高
movement.idle-sittrue主人站着不动一阵子就坐下(会坐的生物:狼、猫、狐狸……)

骑乘 mount​

键默认说明
mount.enabled写了 mount 段就是 true能不能骑
mount.typewalkwalk 地面 / fly 飞行
mount.speed0.32骑乘速度(数值)
mount.jump0.55地面坐骑的跳跃力
mount.permission空骑这只需要的额外权限
mount.autofalse召唤后自动骑上去
mount.despawn-on-dismountfalse下坐骑时顺便收回宠物
mount.controller空ModelEngine 模型的坐骑控制器(例如 walking、flying、walking_force),空 = 依 type

详细见 骑乘。

数值 stats​

全部是数值,可以随等级成长。

键默认说明
stats.health20最大血量
stats.damage3每次攻击的伤害
stats.attack-speed1每秒攻击几次
stats.attack-range2.6攻击距离(格)
stats.regen0.5每秒回复的血量
stats.defense0减伤百分比(0–95)
stats.power1威力:施放 MythicMobs 技能时的 power,也是 <cloudpet.power> 变量

等级 levels 与进化 evolutions​

键默认说明
levels.max30最高等级
levels.exp'100 + 40 * (level - 1) ^ 1.4'从这一级升到下一级要的经验(数值)
levels.names空每一级的名称(第 1 个 = 1 级),没写的等级显示 Lv.N
levels.messages空升到某一级的消息,title: / actionbar: / chat: 开头
levels.rewards空升到某一级执行的指令
evolutions空进化清单:to、level、keep-level、keep-name、money、items、auto、delay

详细见 等级与进化。

战斗 combat​

键默认说明
combat.enabledtrue会不会打架
combat.chase-range16目标离主人超过这个距离就不追
combat.skills空MythicMobs 技能:skill、trigger、cooldown、chance、target

详细见 战斗与技能。

给主人的加成 buffs​

buffs:
effects:
- 'SPEED:0' # 药水效果:等级(0 = I 级)
attributes:
- 'max_health:2' # 属性:数值
- 'movement_speed:10%' # 结尾 % = 百分比
- 'attack_damage:{level}*0.2' # 可以用 {level}
summon-commands:
- 'say {player} 召唤了 {pet}'
despawn-commands: []
键说明
buffs.effects宠物召唤中时给主人的药水效果,每 2 秒补一次,收回后最多 5 秒自然消失
buffs.attributes宠物召唤中时给主人的属性加成,收回就拿掉;升级时自动重算
buffs.summon-commands召唤时执行的指令
buffs.despawn-commands收回时执行的指令

指令可用 {player}、{uuid}、{pet}、{level}、{type};[player] 开头 = 玩家自己执行,其他(含 [console] 开头)= 后台执行。

其他​

键默认说明
respawn-cooldown-1昏倒后多久能再召唤(秒),-1 = 用 config.yml 的 respawn.cooldown
revoke-cooldown0玩家自己收回后多久才能再召唤(秒)
despawn-delay0收回时先放 despawn 技能,等这么多 tick 再移除(给消失动画时间)
backpack0背包列数(数值,0 = 没有背包,最多 6),见 宠物背包
foods空只能吃这些食物(foods.yml 的键);不写 = foods.yml 里没限制宠物的都能吃
skins空皮肤,见 皮肤
signals空信号(指令),见下面
signal-stickBLAZE_ROD指挥棒的样子(物品写法)
sounds.summonentity.experience_orb.pickup召唤时的音效
particles.summonHEART召唤时的粒子

信号 signals​

给玩家几个「指令按钮」:在宠物菜单点,或用指挥棒(左键切换、右键下指令),或 /cp signal <编号>。每个信号可以送 MythicMobs 信号给宠物(宠物身体是 MythicMobs 怪物时才收得到),也可以执行指令。

signals:
- id: sit
name: '&e坐下'
icon: OAK_SIGN
signal: SIT # 送给 MythicMobs 怪物的信号(~onSignal:SIT)
commands: [] # 同时执行的指令(变量同上)
- id: dance
name: '&d跳舞'
signal: DANCE
signal-stick:
material: BLAZE_ROD
name: '&b小狐狸的指挥棒'

写了 signals 的宠物,菜单里会多一个「取得指挥棒」按钮;管理员也可以用 /cp admin stick <玩家> <宠物> 发。指挥棒只对主人自己召唤中的那种宠物有效。

分类 categories.yml​

plugins/CloudPet/categories.yml
陆地:
name: '&a陆地伙伴'
icon: GRASS_BLOCK
sort: 1
description:
- '&7会走路、会跟着你跑的宠物'

宠物文件写 category: 陆地 就会放进去;sort 越小越前面。宠物写了 categories.yml 里没有的分类时,会自动建一个同名分类。

完整范例​

下面是 pets/示例/小狐狸.yml(写了全部常用选项):

plugins/CloudPet/pets/示例/小狐狸.yml
name: '&6小狐狸'
description:
- '&7机灵的小狐狸,会帮你咬敌人'
category: 陆地
sort: 1
icon: SWEET_BERRIES
permission: cloudpet.pet.小狐狸
price: 0

entity:
type: FOX
baby: true
scale: 1.0
silent: true
looks:
fox-type: RED

nametag:
enabled: true
text: '{name} &7Lv.{level}'
height: 0

movement:
speed: 1.25
follow-distance: 3
teleport-distance: 24
flying: false
idle-sit: true

mount:
enabled: false

stats:
health: '16 + level * 2'
damage: '2 + level * 0.3'
attack-speed: 1.2
attack-range: 2.4
regen: 0.5
defense: 'min(40, level)'

levels:
max: 30
exp: '80 + 30 * (level - 1) ^ 1.3'
names: ['&7幼狐', '&7幼狐', '&7幼狐', '&7幼狐', '&7幼狐', '&a少年狐', '&a少年狐', '&a少年狐', '&a少年狐', '&a少年狐', '&b成年狐']
messages:
10: 'title:&6{pet} 长大了!\n&e等级 {level}'
rewards:
10:
- 'give {player} sweet_berries 16'

evolutions:
- to: 雪狐
level: 15
keep-level: true
keep-name: true
money: 0
items: []
auto: false

combat:
enabled: true
chase-range: 16
skills: []

buffs:
effects:
- 'SPEED:0'
attributes: []
summon-commands: []
despawn-commands: []

respawn-cooldown: -1
backpack: 0
foods: []

skins:
白狐:
name: '&f白狐'
icon: SNOWBALL
price: 500
entity:
looks:
fox-type: SNOW

sounds:
summon: entity.fox.ambient
particles:
summon: HEART