- ◆ 支持核心
- Arclight
- ◆ 插件前置
- PlaceholderAPI[可选]
- ◆ 游戏版本
- 1.21.1
介绍
本插件是一款能够在插件内对Cobblemon的Npc进行创建的插件,支持Arclight,暂时不支持Youer。该插件支持高度自定义的配置,npc编辑,自定义任务,自定义npc交换精灵,还能编辑npc预设与npc的行为,已经支持对话框ui的自定义背景!数据包的npc如果你觉得太繁杂了,那不妨来试试这款插件注:npc精灵交换功能暂时有bug,暂时下了
指令列表
| /cbn reload | stazzasnpc.reload | 重载所有配置 |
| /cbn spawn <npc配置文件名> | stazzasnpc.adm | 在玩家当前位置生成指定 NPC(省略.json ) |
| /cbn remove <npc的uuid|npc的名字|npc资源名> | stazzasnpc.adm | 根据 NPC 的 UUID、名称或资源id移除已注册的 NPC |
| /cbn list | stazzasnpc.adm | 列出所有已注册的 NPC 信息 |
| /cbn dialogue <对话框资源名> [玩家名] | stazzasnpc.adm | 为指定玩家(未指定则为指令执行者)启动指定 资源名 的对话 |
| /cbn removefront | stazzasnpc.adm | 移除玩家视线前方 10 格内的 NPC |
| /cbn internal animate <npc的uuid> <动画名称> | stazzasnpc.adm | 触发指定 UUID 的 NPC 播放指定名称的动画 |
| /cbn quest <give|complete|abort|menu|setstatus> [参数] | stazzasnpc.adm | menu:打开任务菜单;give:给指定玩家发放指定 ID 任务;complete:完成指定玩家指定 ID 任务;abort:终止指定玩家指定 ID 任务;setstatus:设置指定玩家指定任务的状态(可选:ACCEPTED、CONDITIONS_MET、COMPLETED) |
| /cbn visibility <玩家名> <npc资源名> <show|hide> | stazzasnpc.adm | 为指定玩家显示 / 隐藏指定资源名的 NPC |
| /cbn trade <玩家名> <trade配置文件内部交换id> | 无(默认管理员权限) | 为指定玩家打开指定 ID 的宝可梦交换界面 |
占位符支持(PlaceholderAPI)
| %cbn_npc_name_<npc_id>% | 显示某 NPC 的显示名称 |
| %cbn_quest_name_<quest_id>% | 显示某任务的显示名称 |
| %cbn_quest_progress_<quest_id>% | 显示玩家当前进度 |
| %cbn_quest_target_<quest_id>% | 显示任务所需完成总量 |
| %cbn_quest_status_<quest_id>% | 显示任务原始状态 |
| %cbn_quest_status_display_<quest_id>% | 显示任务本地化状态 |
npc配置文件示例
JSON:
{
"type": "battle",
"resourceIdentifier": "stazzasnpc:example",
"names": [
"NPC示例"
],
"presets": [
"stazzasnpc:looks_around"
],
"behaviours": [],
"interaction": [
{
"name": "优先级最高,权重(priority)越高优先级越高",
"permission": "拥有了Permission内的权限就轮到下一个对话框",
"prepermission": "如果没有prePermission就继续显示默认对话框,有了prePermission的权限才会进行这个对话框,拥有它的Permission后又才会进入下一个对话框",
"priority": "3",
"dialogue": "stazzasnpc:对话框配置文件纯英文"
},
{
"name": "优先级第二",
"priority": "2",
"dialogue": "stazzasnpc:对话框配置文件纯英文"
},
{
"name": "优先级第三",
"priority": "1",
"dialogue": "stazzasnpc:对话框配置文件纯英文"
},{
"name": "默认对话框",
"priority": "0",
"dialogue": "stazzasnpc:对话框配置文件纯英文"
}
],
"party": [
"venusaur pokeball=master_ball uncatchable=true level=5 hp_iv=10 attack_iv=10 defence_iv=10 special_attack_iv=10 special_defence_iv=10 speed_iv=10",
"charizard pokeball=master_ball uncatchable=true level=5 hp_iv=10 attack_iv=10 defence_iv=10 special_attack_iv=10 special_defence_iv=10 speed_iv=10",
"blastoise pokeball=master_ball uncatchable=true level=5 hp_iv=10 attack_iv=10 defence_iv=10 special_attack_iv=10 special_defence_iv=10 speed_iv=10"
]
}
对话框配置文件示例
代码:
HEAD: name=NPC示例, face=cobblemon:example
--- start ---
NPC: 你好!想来玩个猜谜游戏吗?猜对了有奖励哦!
[CLIENT] q.face.play_animation('win');
* 来吧! -> question
* 不了 -> close
--- question ---
NPC: 听好了:什么东西早上四条腿,中午两条腿,晚上三条腿?(请输入中文答案)
--- input ---
type: text
action: q.dialogue.set_page('check_answer');
--- check_answer ---
NPC: {v.selected_option == '人' ? '太棒了!你答对了!' : '很遗憾,答案是“人”。'}
--- input ---
type: auto-continue
delay: 30
action: q.dialogue.close();
--- QUITTER ---
[QUITTER]滚
--- actions ---
declined: q.dialogue.close()
close: close
battle: q.dialogue.close() | v.battle = q.npc.start_battle(q.player)
任务配置文件示例
YAML:
#可选择open-dialogue: "guide:next_step" 完成任务后打开对话框
# start-dialogue: "hunter_briefing" 开始任务时打开对话框
# 1. 击杀怪物任务
kill_zombie_quest:
display-name: "§c僵尸清理行动"
lore:
- "§7村庄周围出现了大量僵尸"
- "§7请帮助我们清理它们"
- "§f目标: 击杀 10 只僵尸"
type: KILL_MOB
target: ZOMBIE
amount: 10
completion-mode: NPC
npc-id: "stazzasnpc:guard_captain"
special-dialogue: "guard_thank_you"
rewards:
- "give %player% iron_ingot 5"
- "msg %player% §a守卫队长: 感谢你的帮助!"
# 2. 上交物品任务
submit_wood_quest:
display-name: "§a伐木工的请求"
lore:
- "§7我们需要木材来修补房屋"
- "§f目标: 上交 32 个橡木原木"
type: SUBMIT_ITEM
target: OAK_LOG
amount: 32
completion-mode: NPC
npc-id: "stazzasnpc:lumberjack"
special-dialogue: "lumberjack_thanks"
rewards:
- "give %player% emerald 10"
- "xp add %player% 500 points"
# 3. 捕捉宝可梦任务
catch_pikachu_quest:
display-name: "§e寻找皮卡丘"
lore:
- "§7我一直想要一只皮卡丘作为伙伴"
- "§f目标: 捕捉 1 只皮卡丘"
type: CATCH_POKEMON
target: "pikachu"
amount: 1
completion-mode: DIRECT
rewards:
- "give %player% cobblemon:thunder_stone 1"
- "msg %player% §e任务完成!你获得了一块雷之石。"
# 4. 击败野生宝可梦任务
defeat_wild_quest:
display-name: "§4森林探险"
lore:
- "§7森林里的绿毛虫泛滥成灾了"
type: DEFEAT_POKEMON
target: "caterpie"
amount: 5
completion-mode: DIRECT
rewards:
- "give %player% cobblemon:poke_ball 5"
# 5. 击败 NPC 训练师任务
defeat_gym_leader:
display-name: "§b道馆挑战"
lore:
- "§7证明你的实力,击败道馆馆主"
- "§f目标: 击败 NPC 训练师 'Brock'"
type: DEFEAT_NPC
target: "Brock" # 这里填写 NPC 的名字
amount: 1
completion-mode: NPC
npc-id: "stazzasnpc:gym_guide"
special-dialogue: "badge_ceremony"
rewards:
- "give %player% diamond 1"
- "msg %player% §b恭喜你通过了道馆挑战!"
# 6. 放生宝可梦任务
release_pokemon_quest:
display-name: "§2回归自然"
lore:
- "§7有些宝可梦更适合生活在野外"
- "§f目标: 放生 3 只鲤鱼王"
type: RELEASE_POKEMON
target: "magikarp"
amount: 3
completion-mode: DIRECT
rewards:
- "give %player% heart_of_the_sea 1"
# 7. 进化宝可梦任务
evolve_eevee_quest:
display-name: "§d进化的奥秘"
lore:
- "§7伊布拥有无限的可能性"
- "§f目标: 进化 1 只伊布 (任意形态)"
type: EVOLVE_POKEMON
target: "eevee"
amount: 1
completion-mode: DIRECT
rewards:
- "give %player% cobblemon:rare_candy 2"
# 8. 获得球果任务
collect_apricorns_quest:
display-name: "§c球果采集者"
lore:
- "§7我们需要制作更多的精灵球"
- "§f目标: 获得 10 个红球果"
type: OBTAIN_APRICORN
target: "RED"
amount: 10
completion-mode: DIRECT
rewards:
- "give %player% cobblemon:poke_ball 10"
# 9. 对话任务
listen_story_quest:
display-name: "§b古老的传说"
lore:
- "§7村里的老人似乎知道一些秘密"
- "§f目标: 听老人讲故事"
type: DIALOGUE
target: "stazzasnpc:story_intro" # 目标对话ID
amount: 1
completion-mode: DIRECT # 实际上由对话中的指令触发完成
npc-id: "stazzasnpc:story_teller" # 关联的NPC,只有找这个NPC才能触发对话
rewards:
- "xp add %player% 200 points"
- "msg %player% §b你听完了故事,感到受益匪浅。"
# 10. 交换任务示例
trade_quest:
display-name: "§b交换大师"
lore:
- "§7完成一次特定的宝可梦交换"
- "§f目标: 完成 'pikachu_trade' 交换"
type: TRADE_POKEMON
target: "pikachu_trade"
amount: 1
completion-mode: NPC
npc-id: "stazzasnpc:trader_joe"
special-dialogue: "trade_complete_thanks"
rewards:
- "give %player% emerald 10"
# 11. 每日任务示例 (可重复接取)
daily_hunt_quest:
display-name: "§6每日狩猎"
lore:
- "§7每天都可以完成一次的任务"
- "§f目标: 击杀 20 只僵尸"
- "§e冷却时间: 1天"
- "§c限时: 1个Minecraft天"
type: KILL_MOB
target: ZOMBIE
amount: 20
completion-mode: DIRECT
repeatable: true
cooldown: "1d" # 冷却时间: 1天 (s=秒, m=分, h=时, d=天)
time-limit: "mc:1" # 限时: 1个Minecraft天 (mc:X 表示X个MC天, 也可以用普通时间单位)
retry-after-failure: true # 失败后是否允许重试 (如果false,失败后该任务将永久无法接取,除非重置)
rewards:
- "give %player% gold_ingot 5"
- "msg %player% §6完成每日任务!"
# 12. 多任务示例
multi_task_quest:
display-name: "§b多任务挑战"
lore:
- "§7完成多个目标"
- "§f目标: 捕获 1 只皮卡丘,击败 5 只僵尸,上交 10 个橡木原木"
type: MULTI
completion-mode: NPC
npc-id: "stazzasnpc:quest_giver"
special-dialogue: "multi_task_complete"
rewards:
- "give %player% diamond 5"
- "xp add %player% 1000 points"
conditions:
cond1:
type: CATCH_POKEMON
target: "pikachu"
amount: 1
description: "捕获 1 只皮卡丘"
cond2:
type: KILL_MOB
target: "ZOMBIE"
amount: 5
description: "击败 5 只僵尸"
cond3:
type: SUBMIT_ITEM
target: "OAK_LOG"
amount: 10
description: "上交 10 个橡木原木"
# 13. 坐标任务示例
explore_mountain:
display-name: "&6探索高山"
type: REACH_LOCATION
location:
world: "world"
x: 100.5
y: 80.0
z: -200.5
radius: 5.0
open-dialogue: "welcome" # 到达后打开对话
completion-mode: DIRECT
rewards:
- "give %player% diamond 1"
daily_hunt_quest:
display-name: "&e每日狩猎"
type: DEFEAT_POKEMON
target: "PIDGEY"
amount: 5
#接取任务时打开的对话ID
start-dialogue: "hunter_briefing"
# 完成任务时打开的对话ID
open-dialogue: "hunter_congrats"
completion-mode: DIRECT
rewards:
- "give %player% emerald 10"
- "xp add %player% 500 points"