🔨 AdventureCraftings

高级自定义合成插件 — 全 GUI 编辑器、条件合成、合成时间、随机配方、物品交互命令

🔨 6种配方类型 🖥️ 全GUI编辑器 ⏳ 合成时间+BossBar 🎲 随机配方 🔗 NBT完全兼容 📦 Spigot/Paper 1.20.1~1.21.5

核心功能

🖥️
全 GUI 配方编辑
/acraft create 打开图形编辑器,拖放物品即可创建配方
📋
配方菜单系统
分类浏览、翻页、详情页、一键合成
合成时间
BossBar 进度 + GUI 进度面板 + 可取消
🎲
随机配方
权重随机结果、随机附魔等级、随机 Lore 池
🔒
条件系统
等级、金钱(Vault)、职业(SkillAPI)、PAPI变量
🔗
完全NBT兼容
药水、怪物蛋、彩色盔甲、头颅、盾牌、附魔书、烟花

📥 安装

环境要求

项目要求
服务端Spigot / Paper 1.20.1 ~ 1.21.5
JavaJava 17+
可选依赖Vault, PlaceholderAPI, SkillAPI/ProSkillAPI, MythicMobs, AdventureManage

安装步骤

  1. AdventureCraftings-1.1.0.jar 放入 plugins/
  2. 重启服务器,自动生成配置文件和 recipes/ 目录
  3. 编辑 config.yml 调整全局设置
  4. 使用 /acraft create <ID> 通过 GUI 创建配方
  5. 使用 /acraft menu 打开配方菜单

目录结构

plugins/AdventureCraftings/
├── config.yml           # 全局配置
├── messages.yml         # 消息配置
└── recipes/             # 配方文件夹
    ├── example.yml      # 示例配方
    └── *.yml            # 自定义配方文件
提示: 插件首次启动自动生成 example.yml 示例配方,包含有序、无序和随机配方三个完整示例。

📝 更新日志

v1.1.0 LATEST

  • NEW AdventureManage 绑定物品过滤 — 合成时自动检测并跳过 AdventureManage 绑定物品,防止绑定物品被用作合成材料消耗。通过反射调用 ItemBindManager,无编译依赖
  • CONFIG softdepend 更新 — plugin.yml 新增 AdventureManage 为可选依赖

v1.0.0

  • NEW 完整配方系统 — 支持有序(SHAPED)、无序(SHAPELESS)、熔炉(FURNACE)、烟熏炉(SMOKING)、高炉(BLASTING)、锻造台(SMITHING) 六种类型
  • NEW GUI 配方编辑器/acraft create/acraft edit,3×3 材料格 + 结果槽 + 可视化设置面板
  • NEW 配方分类菜单 — 分类浏览、翻页、详情页、一键合成
  • NEW 合成时间系统 — BossBar 进度 + GUI 进度面板 + 可取消
  • NEW 条件系统 — 等级、金钱(Vault)、职业(SkillAPI)、变量(PAPI)
  • NEW 随机配方 — 权重随机结果、随机附魔等级、随机 Lore 池
  • NEW 物品交互命令 — 右键物品执行命令系统(冷却/消耗/权限)
  • NEW 完全物品兼容 — NBT、药水、怪物蛋、彩色盔甲、头颅、盾牌、附魔书、烟花
  • NEW 原版配方注册 — 自动注册 Bukkit 配方,工作台即可合成
  • NEW 外部插件集成 — Vault 经济、PlaceholderAPI 变量、SkillAPI 职业

⌨️ 命令总表

基础命令

命令说明权限
/acraft help显示帮助信息
/acraft menu打开配方菜单adventurecraftings.menu
/acraft info插件信息(版本/配方数/Hook状态)
/acraft info <ID>查看指定配方详情
/acraft reload重载所有配置和配方adventurecraftings.reload

编辑器命令

命令说明权限
/acraft create <ID>打开 GUI 编辑器创建新配方adventurecraftings.create
/acraft edit <ID>打开 GUI 编辑器编辑已有配方adventurecraftings.edit

管理命令

命令说明权限
/acraft list [页码]列出所有配方(分页)adventurecraftings.list
/acraft delete <ID>删除指定配方adventurecraftings.delete
/acraft give <玩家> <ID> [数量]给予玩家配方结果物品adventurecraftings.give
别名: /acraft 可简写为 /ac/adventurecraftings

📋 配方浏览菜单

菜单流程

  1. 分类选择页 — 显示所有有配方的分类,图标和配方数量
  2. 配方列表页 — 该分类下所有可见配方,支持翻页(每页28个)
  3. 配方详情页 — 3×3 材料排列、结果物品、合成信息,可直接点击合成

配方详情页布局

┌─────────────────────────────────┐
│  [材料] [材料] [材料]    [信息]  │
│  [材料] [材料] [材料]  → [结果]  │
│  [材料] [材料] [材料]    [条件]  │
│                                 │
│         [合成按钮]  [返回]       │
└─────────────────────────────────┘

满足所有条件时合成按钮显示为绿色;否则显示红色并附带失败原因。

🔧 配方编辑器

编辑器布局 (54格)

行1: [黑] [黑] [黑] [黑] [黑] [黑] [黑] [黑] [黑]
行2: [黑] [格1][格2][格3] [黑] [类型][权限][分类]
行3: [黑] [格4][格5][格6] [黑] [→]  [结果] [黑]
行4: [黑] [格7][格8][格9] [黑] [时间][概率][条件]
行5: [黑] [黑] [黑] [黑] [黑] [命令][1次] [无限]
行6: [保存][黑] [黑] [黑] [黑] [黑] [黑] [黑] [取消]

设置按钮

按钮材质功能
配方类型工作台切换 SHAPED / SHAPELESS / FURNACE / SMOKING / BLASTING / SMITHING
权限铁门设置合成所需权限节点(聊天输入)
分类设置所属分类 ID(聊天输入)
合成时间时钟设置合成耗时秒数(聊天输入)
成功概率经验瓶设置成功率 0-100(聊天输入)
额外条件红石比较器依次设置等级、金钱、职业(聊天输入)
完成命令命令方块添加合成完成后执行的命令(多行输入)
一次性配方染料点击切换开/关
无限材料染料点击切换开/关
保存绿色羊毛保存配方到文件
取消红色羊毛取消并关闭编辑器
聊天输入模式: 点击权限/分类/时间/概率/条件/命令按钮后,GUI 关闭进入聊天输入模式。输入完成后 GUI 自动重新打开。输入 cancel 可取消。

合成进度界面

当配方设置了合成时间 (craft-time > 0) 时,点击合成按钮后打开进度界面:

┌──────────────────────────────┐
│                              │
│  [红] [红] [红] [结果] [红] [红] [红]  │
│                              │
│           [取消]              │
└──────────────────────────────┘

进度条从红色逐渐变为绿色
同时显示 BossBar 进度条
  • 材料在开始合成时立即消耗
  • BossBar 显示剩余秒数,实时更新
  • 点击底部取消按钮可取消合成(材料已消耗不退还)
  • 关闭 GUI 或下线会自动取消合成
  • 合成完成后自动判定成功率,给予结果物品

📦 配方类型

类型说明原版注册
SHAPED有序合成 — 材料必须按指定位置排列(3×3 格)
SHAPELESS无序合成 — 材料放在任意位置即可
FURNACE熔炉 — 熔炼配方✘ (仅 GUI)
SMOKING烟熏炉 — 烟熏配方✘ (仅 GUI)
BLASTING高炉 — 高炉冶炼配方✘ (仅 GUI)
SMITHING锻造台 — 锻造配方 (1.20+)✘ (仅 GUI)
原版注册:settings.register-vanilla-recipes: true 时,SHAPED 和 SHAPELESS 的简单配方(无合成时间、无随机结果)会自动注册为 Bukkit 原版配方。

📁 配方配置格式

配方存储在 plugins/AdventureCraftings/recipes/ 目录下的 YAML 文件中。每个文件可包含多个配方。

有序合成 (SHAPED) 示例

recipes:
  diamond_hammer:
    enabled: true
    display-name: "&b&l钻石锤"
    category: "tool"
    type: SHAPED
    shape:
      - "DDD"
      - " S "
      - " S "
    ingredients:
      D: { material: DIAMOND }
      S: { material: STICK }
    result:
      material: DIAMOND_PICKAXE
      amount: 1
      name: "&b&l钻石锤"
      enchantments: { efficiency: 5, unbreaking: 3 }
    craft-time: 0
    success-chance: 100

配方字段详解

字段类型说明
enabledboolean是否启用此配方
display-namestring配方显示名称(支持 & 颜色代码)
categorystring所属分类 ID
typeenumSHAPED / SHAPELESS / FURNACE / SMOKING / BLASTING / SMITHING
permissionstring合成所需权限(空=无限制)
shapelist有序合成 3 行排列模式
ingredientssection有序合成材料映射(字符→物品)
ingredients-listlist无序合成材料列表
resultsection合成结果物品
conditionssection额外合成条件
craft-timeint合成时间(秒),0=即时
success-chancedouble成功概率 0-100
commandslist合成成功后执行命令列表
one-timeboolean一次性配方(每人只能合成一次)
hiddenboolean隐藏配方(不满足条件时不显示)
infinite-materialsboolean无限材料模式

物品格式

字段说明
material材质名称 (如 DIAMOND_SWORD)
amount数量(默认1)
name自定义显示名称
lore自定义 Lore 列表
enchantments附魔表(附魔ID: 等级)
custom-model-data自定义模型数据
skull-owner头颅拥有者
leather-color皮革颜色 (#RRGGBB)
potion-effects药水效果列表
stored-enchantments附魔书存储附魔
patterns旗帜/盾牌图案列表
firework-power烟花飞行高度
firework-effects烟花效果列表
GUI 创建的配方: 通过 GUI 编辑器创建的配方自动保存原生 ItemStack 数据(_native 字段),确保 100% 保留所有 NBT 信息。

🔒 合成条件

条件配置说明
权限permission: "node"需要指定权限节点
等级conditions.level: 10经验等级需达到指定值
金钱conditions.money: 500.0Vault 余额需达到(合成时扣除)
职业conditions.class: "warrior"SkillAPI 职业需匹配
变量conditions.variablesPlaceholderAPI 占位符条件

PAPI 变量条件

conditions:
  variables:
    "%player_level%": ">=30"
    "%vault_eco_balance%": ">=1000"
    "%player_world%": "==world"

支持的运算符

运算符说明
>=大于等于
<=小于等于
>大于
<小于
==等于(字符串)
!=不等于

🎲 随机配方

权重随机结果

random-results:
  - weight: 50
    material: DIAMOND
    amount: 5
    name: "&b钻石奖励"
  - weight: 30
    material: NETHERITE_INGOT
    amount: 1
    name: "&4下界合金"
  - weight: 20
    material: ENCHANTED_GOLDEN_APPLE
    amount: 3
    name: "&6&l终极奖励"
注意: 设置了 random-results 的配方不会注册为原版 Bukkit 配方,只能通过 GUI 菜单合成。

随机附魔等级

random-enchant-levels:
  sharpness: "3-5"     # 锋利 3-5 级随机
  unbreaking: "1-3"    # 耐久 1-3 级随机
  fire_aspect: "1-2"   # 火焰附加 1-2 级随机

随机 Lore 池

random-lore-pool:
  - ["&7普通品质", "&7攻击力 +10"]
  - ["&a优秀品质", "&a攻击力 +20"]
  - ["&6&l传说品质", "&6攻击力 +50", "&e暴击率 +15%"]

高级特性

一次性配方

设置 one-time: true 后,每个玩家只能合成该配方一次。记录在内存中,服务器重启后重置。

无限材料模式

设置 infinite-materials: true 后,合成不消耗材料。适用于展示、测试或特殊活动。

隐藏配方

设置 hidden: true 后,不满足条件的玩家在菜单中看不到该配方。全局设置 settings.hide-no-permission: true 会隐藏无权限的所有配方。

合成命令

commands:
  - "effect give %player% regeneration 30 2"
  - "broadcast &e%player% &6合成了一个传说物品!"
  - "title %player% title {\"text\":\"合成成功!\",\"color\":\"gold\"}"

支持 %player% 占位符,命令以控制台身份执行。

⚙️ config.yml

settings 全局设置

配置项默认值说明
settings.prefix&8[&6ACraft&8] &r消息前缀
settings.default-categorygeneral默认分类
settings.register-vanilla-recipestrue注册原版 Bukkit 配方
settings.hide-no-permissiontrue隐藏无权限配方
settings.hide-no-conditionsfalse隐藏不满足条件的配方
settings.debugfalse调试模式

crafting-gui 合成 GUI

配置项默认值说明
crafting-gui.title&8&l自定义合成合成界面标题
crafting-gui.progress.use-bossbartrue使用 BossBar 进度
crafting-gui.progress.bossbar-colorGREENBossBar 颜色
crafting-gui.progress.bossbar-styleSEGMENTED_10BossBar 样式

menu 配方菜单

配置项默认值说明
menu.title&0&l配方菜单配方列表标题
menu.items-per-page28每页显示数量
menu.category-title&0&l配方分类分类选择页标题
menu.detail-title&0&l%name%详情页标题

💬 messages.yml

所有消息支持 & 颜色代码和 %placeholder% 占位符。

分组说明
general.*通用消息(重载、无权限、未知命令、找不到配方)
recipe.*合成相关(成功、失败、开始、取消、材料不足等)
editor.*编辑器消息(创建、保存、删除、输入提示等)
admin.*管理命令(give 成功/失败)

占位符变量

变量说明
%id%配方 ID
%item%物品名称
%count%配方数量
%chance%成功概率
%time%合成时间
%player%玩家名
%level% / %money% / %class%条件值

🏷️ 分类配置

config.ymlcategories 节点定义配方分类:

categories:
  general:
    display-name: "&f通用"
    icon: CRAFTING_TABLE
    description: ["&7通用配方分类"]
    priority: 0
  weapon:
    display-name: "&c武器"
    icon: DIAMOND_SWORD
    description: ["&7武器类配方"]
    priority: 1
  tool:
    display-name: "&a工具"
    icon: DIAMOND_PICKAXE
    description: ["&7工具类配方"]
    priority: 3
字段说明
display-name分类显示名称(支持颜色代码)
icon分类图标材质名
description分类描述(图标 Lore)
priority排序优先级(数字越小越靠前)

🖱️ 交互命令配置

config.ymlinteract-commands 节点配置物品交互命令:

interact-commands:
  enabled: true
  items:
    magic_wand:
      material: BLAZE_ROD
      name: "&d&l魔法棒"
      lore: ["&7右键使用"]
      commands:
        - "effect give %player% speed 30 1"
      cooldown: 60
      consume: false
      permission: "adventurecraftings.interact.magic_wand"
字段说明
material物品材质
name物品名称(必须匹配)
lore物品 Lore(需包含)
commands命令列表(player: 前缀=玩家身份执行)
cooldown冷却时间(秒),0=无冷却
consume使用后是否消耗物品
permission使用权限(空=无限制)

🔗 物品与插件兼容

完全兼容的物品类型

物品类型说明
NBT 标签所有自定义 NBT 数据
药水自定义药水效果、颜色
怪物蛋所有版本的生物类型
彩色盔甲自定义 RGB 颜色
玩家头颅指定玩家/自定义皮肤
盾牌自定义旗帜图案
附魔书存储的附魔数据
烟花飞行高度、爆炸效果
自定义模型CustomModelData

外部插件集成

插件用途说明
Vault经济系统合成条件金钱检查和扣费
PlaceholderAPI变量条件支持所有 PAPI 占位符
SkillAPI / ProSkillAPI职业条件反射调用,无硬依赖
MythicMobsBoss 物品完全兼容自定义物品(通过 NBT 保存)
AdventureManage绑定物品过滤合成时自动跳过AM绑定物品,反射调用无编译依赖 v1.1
所有外部插件都是软依赖,不安装时对应功能自动跳过,不影响插件运行。

🔐 权限节点

权限说明默认
adventurecraftings.admin完整管理权限(包含所有子权限)op
adventurecraftings.menu打开配方菜单true
adventurecraftings.craft使用自定义合成true
adventurecraftings.create通过 GUI 创建配方op
adventurecraftings.edit通过 GUI 编辑配方op
adventurecraftings.delete删除配方op
adventurecraftings.reload重载插件op
adventurecraftings.give给予玩家配方结果op
adventurecraftings.list列出所有配方op
配方权限: 每个配方可通过 permission 字段设置独立的合成权限节点。