- 版权类型
- 原创
- 插件中文名称
- 决斗游戏
- 插件英文名称
- FFA
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- 语言支持
- 中文(简体)
- 前置组件
- PlaceholderAPI
- 适配版本(Java)
- 1.21
该小游戏已上线网易网络服,java/基岩版:搜索千阙云庭可体验
售后群 721033339我这边可直接发放成品端供你学习
FFA 插件说明
1. 房间模板: 快速创建不同决斗玩法与地图。
2. 排位匹配: 自动匹配实力相近的对手。
3. 段位系统: 通过对局积分提升竞技段位。
4. 赛季系统: 支持赛季重置、结算与奖励。
5. PAPI变量: 支持展示段位、战绩、积分等数据。
6. 回放系统: 可观看自己的历史对局记录。
7. 观战系统: 实时观看其他玩家正在进行的决斗。
8. 盔甲纹饰商店: 解锁并自由搭配个性纹饰。
9. AI决斗: 可与不同难度的AI进行对战练习。
10. 战绩系统: 记录胜负、胜率、连胜等对局数据。
从匹配、段位到赛季、回放与 AI 对战,一套插件即可打造完整的高版本决斗竞技体验。
插件内部经过深度性能优化,针对房间模板创建与地图加载进行专项优化,并支持每日定时重置地图,可稳定承载百名玩家同时游玩。
游戏内截图
回放系统
决斗系统 支持编辑自定义布局
统计系统 支持统计每个决斗单独数据
AI决斗
约战系统 支持与好友1v1发起约战单挑
观战系统
盔甲纹饰商店
看完是不是已经有点心动,想给自己的服务器也安排一个?完善的决斗游戏系统,超多玩法任你体验,持续更新,后续内容不断!
教程
- 在创建各种房间模板、区域之前,可使用
/ffa equipedit <战斗类型> 打开默认背包编辑器。
- 房间,区域和天坑有何不同? 房间是专门1v1独立单挑的;区域则是多人PVP混战的;天坑则是多人职业战争。
/ffa equipedit <战斗类型> 打开默认背包编辑器。如何创建一个房间模板?
- 在创建房间模板之前,先准备好创世神模板文件,方便创建房间复制粘贴。
- 先输入
/ffa create <房间名> <ai/player> <人数> 创建并自动进入虚空世界,然后用创世神粘贴出地图模板。
- 然后输入
/ffa createteam <队伍名> 创建一个队伍(最多创建2个队伍)
- 输入
/ffa setspawn <队伍名> <ID> 设置队伍出生点(注意朝向),会记录位置和朝向。
- 然后输入
/ffa save 保存当前房间模板并退出编辑
/ffa create <房间名> <ai/player> <人数> 创建并自动进入虚空世界,然后用创世神粘贴出地图模板。/ffa createteam <队伍名> 创建一个队伍(最多创建2个队伍)/ffa setspawn <队伍名> <ID> 设置队伍出生点(注意朝向),会记录位置和朝向。/ffa save 保存当前房间模板并退出编辑注意:player 为普通玩家房间,ai 为 AI 对战房间;bw、br、kb 分别为迷你起床战争、战桥和击退战争。每个房间必须创建 2 个队伍,每队人数可以按需要设置。
如何创建迷你起床战争?
以下示例创建一张名为“空岛遗迹”的 2v2 迷你起床战争地图:
- 输入
/ffa create 空岛遗迹 bw 2 创建模板并进入临时编辑世界。
- 建造或使用 FAWE 粘贴地图。
- 输入
/ffa createteam 红队 和 /ffa createteam 蓝队 创建两个队伍;房间最多只能创建 2 个队伍。
- 分别站在各队出生位置并设置出生点:
/ffa setspawn 红队 1
/ffa setspawn 红队 2
/ffa setspawn 蓝队 1
/ffa setspawn 蓝队 2
- 将准星对准红队的床,输入
/ffa setbed 红队;再对准蓝队的床,输入 /ffa setbed 蓝队。
- 使用选区工具框选需要复制的完整地图区域。
- 输入
/ffa save 保存模板并返回主城。
- 在
plugins/FFA/menus/battle_types.yml 创建或修改对应模式,并通过非空 maps 列表指定该地图:
/ffa create 空岛遗迹 bw 2 创建模板并进入临时编辑世界。/ffa createteam 红队 和 /ffa createteam 蓝队 创建两个队伍;房间最多只能创建 2 个队伍。/ffa setspawn 红队 1/ffa setspawn 红队 2/ffa setspawn 蓝队 1/ffa setspawn 蓝队 2
/ffa setbed 红队;再对准蓝队的床,输入 /ffa setbed 蓝队。/ffa save 保存模板并返回主城。plugins/FFA/menus/battle_types.yml 创建或修改对应模式,并通过非空 maps 列表指定该地图:
YAML:
modes:
bedwars:
slot: 19
material: RED_BED
name: "&e迷你起床战争"
battletype: bedwars
description: "&7摧毁敌方床并淘汰敌方队伍"
maps:
- "空岛遗迹"
rounds: 1 # 回合数。 奇数3局2胜;偶数4局2胜为平,3胜为胜
迷你起床战争中,床存在时死亡会在 4 秒后复活;床被摧毁后再次死亡才会被最终淘汰。如果玩家已经进入复活倒计时,此时床被摧毁,该玩家仍可完成最后一次复活。
如何创建战桥?
以下示例创建一张名为“峡谷战桥”的 1v1 战桥地图:
- 输入
/ffa create 峡谷战桥 br 1 创建模板并进入编辑世界。
- 建造或粘贴地图,然后输入
/ffa createteam 红队 和 /ffa createteam 蓝队。
- 设置两个队伍的出生点:
/ffa setspawn 红队 1、/ffa setspawn 蓝队 1。
- 用选区工具框选红队的得分区域,输入
/ffa setgoal 红队。
- 重新框选蓝队的得分区域,输入
/ffa setgoal 蓝队。
setgoal 会清除当前选区,因此需要再次用选区工具框选整张地图的完整复制区域。
- 输入
/ffa save 保存模板。
- 在
battle_types.yml 中添加战桥模式并指定地图:
/ffa create 峡谷战桥 br 1 创建模板并进入编辑世界。/ffa createteam 红队 和 /ffa createteam 蓝队。/ffa setspawn 红队 1、/ffa setspawn 蓝队 1。/ffa setgoal 红队。/ffa setgoal 蓝队。setgoal 会清除当前选区,因此需要再次用选区工具框选整张地图的完整复制区域。/ffa save 保存模板。battle_types.yml 中添加战桥模式并指定地图:
YAML:
modes:
bridge:
slot: 20
material: BLUE_CONCRETE
name: "&e战桥"
battletype: bridge
description: "&7进入敌方区域即可获胜"
maps:
- "峡谷战桥"
rounds: 1
/ffa setgoal <队伍> 设置的是该队伍一侧的区域;敌方玩家进入这个区域时,进入区域的玩家所属队伍获胜。战桥死亡后没有最终淘汰,会在本队出生点重新进入战斗。
如何创建击退战争?
以下示例创建一张名为“浮空擂台”的 3v3 击退战争地图:
- 输入
/ffa create 浮空擂台 kb 3 创建模板并进入编辑世界。
- 建造或粘贴地图,然后输入
/ffa createteam 红队 和 /ffa createteam 蓝队。
- 击退战争不使用队伍固定出生点。在地图不同位置依次输入以下指令,创建全场共用的随机出生点:
/ffa setspawn 1
/ffa setspawn 2
- 可继续使用更大的编号添加更多出生点。
- 如需删除错误的随机出生点,使用
/ffa removespawn <编号>。
- 使用选区工具框选完整地图区域,然后输入
/ffa save。
- 在
battle_types.yml 中添加击退战争模式并指定地图:
/ffa create 浮空擂台 kb 3 创建模板并进入编辑世界。/ffa createteam 红队 和 /ffa createteam 蓝队。/ffa setspawn 1/ffa setspawn 2- 可继续使用更大的编号添加更多出生点。
/ffa removespawn <编号>。/ffa save。battle_types.yml 中添加击退战争模式并指定地图:
YAML:
modes:
knockback:
slot: 21
material: STICK
name: "&e击退战争"
battletype: knockback
description: "&72 分钟内死亡数较少的队伍获胜"
maps:
- "浮空擂台"
rounds: 1 # 回合数
击退战争固定持续 2 分钟。玩家死亡后没有复活等待时间,并从已设置的出生点中随机选择一个位置复活;时间结束时死亡数较少的队伍获胜,死亡数相同则判定平局。ActionBar 会显示我方死亡数、敌方死亡数和剩余时间。
特殊模式地图绑定注意事项
maps 必须至少填写一张地图;特殊地图不会加入未指定地图的普通随机决斗。
maps 可填写 template.yml 中的 roomname,也兼容房间模板文件夹名。
- 同一模式可以填写多张地图,对局创建时会从允许的地图中随机选择。
battletype 指向 plugins/FFA/battletype/<名称>.yml,可先通过 /ffa equipedit <名称> 编辑默认 Kit。
- 完成配置后使用
/pvp reload 重载。
maps 必须至少填写一张地图;特殊地图不会加入未指定地图的普通随机决斗。maps 可填写 template.yml 中的 roomname,也兼容房间模板文件夹名。battletype 指向 plugins/FFA/battletype/<名称>.yml,可先通过 /ffa equipedit <名称> 编辑默认 Kit。/pvp reload 重载。
如何创建一个PVP区域?
- 在创建房间模板之前,先准备好创世神模板文件,方便复制粘贴。
- OP下进服会有给予的划分区域的
木锄,选择矩形对角线
- 然后输入
/pvp createpvp <区域名> 创建一个区域,即可。
- 最后设置传送点
/pvp settp <名称> [title] [lore...] 玩家才可以前往该区域出生点。
木锄,选择矩形对角线/pvp createpvp <区域名> 创建一个区域,即可。/pvp settp <名称> [title] [lore...] 玩家才可以前往该区域出生点。
如何创建一个天坑区域? (职业战争版的,可不要)
- OP下进服会有给予的划分区域的
木锄,选择矩形对角线
- 然后输入
/pvp createpit <区域名> 创建一个区域,即可。
木锄,选择矩形对角线/pvp createpit <区域名> 创建一个区域,即可。
背包模板如何应用到房间或者区域?
- 房间: 文件路径
/FFA/menus/battle_types.yml
/FFA/menus/battle_types.yml
YAML:
sword:
slot: 11
material: IRON_SWORD
name: "§b对刀"
battletype: sword # 设置指向 FFA/battletype/<名称>.yml,游戏开始会用这个背包模板
lore:
- "§7只搜索对刀或随机匹配玩家"
- "§e点击加入匹配"
# ... 你可以添加更多的对战类型,如重锤,盾斧等
- 区域: 文件路径
/FFA/region.yml
/FFA/region.yml
YAML:
pvp_arena:
world: world
type: pvp
battletype: sword # 指向 FFA/battletype/<名称>.yml, 进入区域用这个给予背包
point1:
x: 100.0
y: 64.0
z: 200.0
point2:
x: 150.0
y: 70.0
z: 250.0
# ... 可以创建更多区域,如重锤,盾斧等
- 天坑: 文件路径
/FFA/menus/jobs.yml
/FFA/menus/jobs.yml
YAML:
sword:
displayName: "轻装战士"
color: AQUA
iconMaterial: DIAMOND_SWORD
battletype: warrior # 指向 FFA/battletype/<名称>.yml,游戏开始会用这个背包模板
lore:
- ""
- "&e点击选择此职业"
指令
管理员指令(ffa.admin)
指令 用法 说明 /ffa create/ffa create <房间名> <ai/player> <人数>创建玩家或 AI 房间并进入编辑模式 /ffa edit/ffa edit <房间名>编辑已有房间模板 /ffa delete/ffa delete <房间名>删除房间模板 /ffa list/ffa list查看所有房间模板 /ffa createteam/ffa createteam <队伍名>在编辑房间中创建队伍 /ffa setspawn/ffa setspawn <队伍名> <ID>设置队伍出生点 /ffa removespawn/ffa removespawn <队伍名> <ID>删除队伍出生点 /ffa equipedit <战斗类型>/ffa equipedit bedwars打开默认背包编辑器并在菜单内保存 /ffa save/ffa save保存当前房间模板并退出编辑
| 指令 | 用法 | 说明 |
|---|---|---|
/ffa create | /ffa create <房间名> <ai/player> <人数> | 创建玩家或 AI 房间并进入编辑模式 |
/ffa edit | /ffa edit <房间名> | 编辑已有房间模板 |
/ffa delete | /ffa delete <房间名> | 删除房间模板 |
/ffa list | /ffa list | 查看所有房间模板 |
/ffa createteam | /ffa createteam <队伍名> | 在编辑房间中创建队伍 |
/ffa setspawn | /ffa setspawn <队伍名> <ID> | 设置队伍出生点 |
/ffa removespawn | /ffa removespawn <队伍名> <ID> | 删除队伍出生点 |
/ffa equipedit <战斗类型> | /ffa equipedit bedwars | 打开默认背包编辑器并在菜单内保存 |
/ffa save | /ffa save | 保存当前房间模板并退出编辑 |
指令 用法 说明 /pvp reload/pvp reload重载配置(消息、GUI、段位等) /pvp createpvp/pvp createpvp <区域名>创建 PVP 区域 /pvp listpvp/pvp listpvp列出 PVP 区域 /pvp deletepvp/pvp deletepvp <区域名>删除 PVP 区域 /pvp createpit/pvp createpit <区域名>创建天坑区域 /pvp listpit/pvp listpit列出天坑区域 /pvp deletepit/pvp deletepit <区域名>删除天坑区域 /pvp setspawn/pvp setspawn设置大厅出生点 /pvp settp/pvp settp <名称> [title] [lore...]创建/覆盖传送点 /pvp listtp/pvp listtp列出传送点 /pvp deletetp/pvp deletetp <名称>删除传送点 /pvp addexp/pvp addexp <数量> [玩家]增加经验 /pvp removeexp/pvp removeexp <数量> [玩家]减少经验 /pvp addlevel/pvp addlevel <数量> [玩家]增加等级 /pvp removelevel/pvp removelevel <数量> [玩家]减少等级 /pvp setlevel/pvp setlevel <等级> [玩家]设置等级 /pvp addproficiency/pvp addproficiency <数值> [玩家]增加积分 /pvp removeproficiency/pvp removeproficiency <数值> [玩家]减少积分 /pvp newseason/pvp newseason <赛季ID>开启新赛季(赛季ID支持中文)
| 指令 | 用法 | 说明 |
|---|---|---|
/pvp reload | /pvp reload | 重载配置(消息、GUI、段位等) |
/pvp createpvp | /pvp createpvp <区域名> | 创建 PVP 区域 |
/pvp listpvp | /pvp listpvp | 列出 PVP 区域 |
/pvp deletepvp | /pvp deletepvp <区域名> | 删除 PVP 区域 |
/pvp createpit | /pvp createpit <区域名> | 创建天坑区域 |
/pvp listpit | /pvp listpit | 列出天坑区域 |
/pvp deletepit | /pvp deletepit <区域名> | 删除天坑区域 |
/pvp setspawn | /pvp setspawn | 设置大厅出生点 |
/pvp settp | /pvp settp <名称> [title] [lore...] | 创建/覆盖传送点 |
/pvp listtp | /pvp listtp | 列出传送点 |
/pvp deletetp | /pvp deletetp <名称> | 删除传送点 |
/pvp addexp | /pvp addexp <数量> [玩家] | 增加经验 |
/pvp removeexp | /pvp removeexp <数量> [玩家] | 减少经验 |
/pvp addlevel | /pvp addlevel <数量> [玩家] | 增加等级 |
/pvp removelevel | /pvp removelevel <数量> [玩家] | 减少等级 |
/pvp setlevel | /pvp setlevel <等级> [玩家] | 设置等级 |
/pvp addproficiency | /pvp addproficiency <数值> [玩家] | 增加积分 |
/pvp removeproficiency | /pvp removeproficiency <数值> [玩家] | 减少积分 |
/pvp newseason | /pvp newseason <赛季ID> | 开启新赛季(赛季ID支持中文) |
玩家指令
指令 权限 说明 /jobsffa.command.jobs打开职业菜单 /rankffa.command.ranked打开排位匹配菜单 /rtpffa.command.rtp打开决斗地点菜单 /challenge accept <玩家>ffa.command.challenge接受约战 /challenge deny <玩家>ffa.command.challenge拒绝约战 /soloffa.command.ranked打开单挑菜单 /challengemenuffa.command.challenge打开约战菜单 /aipracticeffa.command.ai-practice打开AI练习菜单
| 指令 | 权限 | 说明 |
|---|---|---|
/jobs | ffa.command.jobs | 打开职业菜单 |
/rank | ffa.command.ranked | 打开排位匹配菜单 |
/rtp | ffa.command.rtp | 打开决斗地点菜单 |
/challenge accept <玩家> | ffa.command.challenge | 接受约战 |
/challenge deny <玩家> | ffa.command.challenge | 拒绝约战 |
/solo | ffa.command.ranked | 打开单挑菜单 |
/challengemenu | ffa.command.challenge | 打开约战菜单 |
/aipractice | ffa.command.ai-practice | 打开AI练习菜单 |
PAPI 变量
变量 说明 %ffa_uuid%玩家 UUID %ffa_name%玩家名 %ffa_current_class%当前职业内部名 %ffa_class_name%当前职业显示名 %ffa_level%等级 %ffa_experience%经验 %ffa_proficiency%积分 %ffa_rank%段位 %ffa_progress%升级进度百分比 %ffa_progress_bar%升级进度条 %ffa_required_exp%固定升级需求(当前实现为 500)
| 变量 | 说明 |
|---|---|
%ffa_uuid% | 玩家 UUID |
%ffa_name% | 玩家名 |
%ffa_current_class% | 当前职业内部名 |
%ffa_class_name% | 当前职业显示名 |
%ffa_level% | 等级 |
%ffa_experience% | 经验 |
%ffa_proficiency% | 积分 |
%ffa_rank% | 段位 |
%ffa_progress% | 升级进度百分比 |
%ffa_progress_bar% | 升级进度条 |
%ffa_required_exp% | 固定升级需求(当前实现为 500) |
全局统计变量
变量 说明 %ffa_pvp_total_kills%天坑区域 击杀 %ffa_pvp_total_damage%天坑区域 伤害 %ffa_pvp_total_deaths%天坑区域 死亡 %ffa_pvp_kd%天坑区域 KD %ffa_ffa_total_kills%房间内 击杀 %ffa_ffa_total_damage%房间内 伤害 %ffa_ffa_total_deaths%房间内 死亡 %ffa_ffa_win%房间内 胜场 %ffa_ffa_fail%房间内 败场 %ffa_ffa_game_played%房间内 场次 %ffa_ffa_kd%房间内 KD
| 变量 | 说明 |
|---|---|
%ffa_pvp_total_kills% | 天坑区域 击杀 |
%ffa_pvp_total_damage% | 天坑区域 伤害 |
%ffa_pvp_total_deaths% | 天坑区域 死亡 |
%ffa_pvp_kd% | 天坑区域 KD |
%ffa_ffa_total_kills% | 房间内 击杀 |
%ffa_ffa_total_damage% | 房间内 伤害 |
%ffa_ffa_total_deaths% | 房间内 死亡 |
%ffa_ffa_win% | 房间内 胜场 |
%ffa_ffa_fail% | 房间内 败场 |
%ffa_ffa_game_played% | 房间内 场次 |
%ffa_ffa_kd% | 房间内 KD |
赛季变量
变量 说明 %ffa_season_id%当前赛季 ID %ffa_season_total_kills%赛季击杀 %ffa_season_total_damage%赛季伤害 %ffa_season_total_deaths%赛季死亡 %ffa_season_win%赛季房间内 胜场 %ffa_season_fail%赛季房间内 败场 %ffa_season_game_played%赛季房间内 场次
| 变量 | 说明 |
|---|---|
%ffa_season_id% | 当前赛季 ID |
%ffa_season_total_kills% | 赛季击杀 |
%ffa_season_total_damage% | 赛季伤害 |
%ffa_season_total_deaths% | 赛季死亡 |
%ffa_season_win% | 赛季房间内 胜场 |
%ffa_season_fail% | 赛季房间内 败场 |
%ffa_season_game_played% | 赛季房间内 场次 |
PVP区域变量
变量 说明 %ffa_region_kills_<区域名>%PVP区域击杀 %ffa_region_deaths_<区域名>%PVP区域死亡 %ffa_region_kd_<区域名>%PVP区域 KD
| 变量 | 说明 |
|---|---|
%ffa_region_kills_<区域名>% | PVP区域击杀 |
%ffa_region_deaths_<区域名>% | PVP区域死亡 |
%ffa_region_kd_<区域名>% | PVP区域 KD |