- 版权类型
- 二次开发
- 插件中文名称
- 鹿之锻造
- 插件英文名称
- ForgePlus
- 支持的核心(服务端)
- Spigot
- 语言支持
- 中文(简体)
- 前置组件
- ProtocolLib
- 适配版本(Java)
- 1.12

2025/1/16
- 添加了对 QFSoulBag 插件的支持。
- 批量锻造(加入强度石)逻辑。
- 普通锻造加入对灵魂背包的兼容。
- 修复了 getrandomitem 参数的部分逻辑不正确的问题。
- 添加了 getrandomitems 命令参数 目前 getrandomitem 用于获取满强度物品 getrandomitems 用于获取随机强度物品。
- ecrftitem 配置文件新增 op/console/玩家 角色命令。
- 合成功能重大更新,支持多配置文件(多UI界面),在gui_type文件夹内部可自行拓展多个配置文件,来进行配置。
- 添加不同权限对应不同的队列大小。
- 添加缩短队列制作时间的道具。
- 修复每个合成界面错误的标题显示。
- 修复玩家离线时不能正确处理数据库保存逻辑。
- 优化队列领取逻辑(小bug)点击后不会立即清除此队列中的物品。
- 每个配方列表对应的默认大小都是独立的。
- 一键获取配方所需材料。
- 修复预览界面无法返回到主界面的问题。
- 修复原初等级不匹配不返还材料的问题。
- 修复可以无限制的批量锻造(最多64个)。
- 修复部分客户无法正确加载插件的问题。
- 优化 创建图纸 创建步骤。
- 优化 修改图纸 步骤。
- 修复SpaceRingPlus2灵魂空间只能识别第一页材料的情况。
- 特殊性更新(版本号 9.89Bata ),更新内容如下:
- 增加区块物品监控系统,防止单区块内物品堆积
- 每个区块最多同时掉落64个物品
- 每个玩家最多同时掉落32个物品
- 系统会自动每10秒重置计数
2. 优化物品掉落机制
- 背包满时物品将分批掉落,每批8个物品
- 批次之间有0.5秒间隔,避免瞬间大量掉落
- 添加物品掉落提示,更清晰地展示锻造过程
3. 批量锻造限制
- 单次最多可锻造32个物品
- 超出限制会有友好提示
- 可以分多次进行大批量锻造
4. 安全性提升
- 添加并发处理保护
- 定期清理过期数据
- 不影响其他插件的正常运作
5. 提示信息优化
- 增加锻造过程的详细提示
- 当需要分批处理时会提前通知玩家
- 物品掉落时会提示具体原因
注意:此次更新主要针对批量锻造时可能出现的卡顿问题进行优化,提升了系统稳定性和用户体验。
2025/1/21
- 合成现在,以后都不会兼容灵魂背包,新增队列取消合成选项(返还扣除的材料,不返还金币&点券)
- 优化了一些逻辑
- 添加锻造日志,方便查找玩家数据(mysql)。
- 再次优化灵魂背包逻辑。
- 添加随机生成武器词条功能。
- 优化原初配置,可以自定义格式。
- 修复了 原初合成 单数数量合成逻辑代码错误。
- 修复了 强度石逻辑lore判断错误的问题。
- 修复了 强度石无法正确使用的问题。
- 新增了 锻造物品 重铸功能(测试版-强度,品质都会随机生成)。
1.依赖
非必要 (PlayerSync,SpaceRingPlus2-1.3XXX(清守灵魂背包),QFSoulBag(清风灵魂背包),Vault,PlayerPoints,PlaceholderAPI)
2.运行环境
Mysql,Jdk8,Spigot1.12.
Mysql使用的表 (均可以自动创建)
3.命令部分
- forge_queue (队列功能表)
- forge_draw (图纸数据表)
- forge_player (锻造玩家数据表)
- playerforgedata (锻造保底数据表)
- forge_logs (正常锻造玩家日志)
- batch_forge_logs(批量锻造玩家日志)
- `/fadmin drawlist` - 打开图纸列表界面
- `/fadmin create <名称>` - 创建新的锻造图纸
- `/fadmin changegui <名称>` - 修改已有图纸
- `/fadmin del <名称>` - 删除指定图纸
- `/fadmin see <名称>` - 查看图纸详细信息
- `/fadmin search <关键词>` - 搜索图纸
- `/fadmin editgui <名称>` - 打开图纸编辑界面
# 数据管理命令
- `/fadmin reloadconfig` - 重新加载配置文件
- `/fadmin loadconfig` - 重新加载settings文件
- `/fadmin loaddraw` - 从数据库读取图纸信息到游戏
- `/fadmin savedraw` - 保存游戏内图纸信息到数据库
# 物品获取命令
- `/fadmin give <名称>` - 获取指定图纸
- `/fadmin gem <ID> <等级>` - 获取指定等级的锻造宝石
- `/fadmin getitem <玩家> <图纸> <品质>` - 给予玩家指定品质的锻造物品
- `/fadmin getrandomitem <玩家> <图纸>` - 给予玩家随机品质物品(满强度)
- `/fadmin getrandomitems <玩家> <图纸>` - 给予玩家随机品质物品(随机强度)
- `/fadmin groupforge <玩家> <组名> [0/1] - §c§l使用指定概率组进行随机锻造 (0=随机强度 1=满强度)
# 玩家管理命令
- `/fadmin level <玩家> <等级>` - 设置玩家的锻造等级
- `/fadmin addexp <玩家> <经验>` - 增加玩家的锻造经验
- `/fadmin testexp` - 查看等级经验对照表
# 合成相关命令
- `/dzec reload` - 重载配方配置文件
- `/dzforge` - 打开配方界面
- `/dzqueue` - 打开配方队列4.配置文件
settings.yml
- #MYSQL配置
MySQL_IP: 127.0.0.1
MySQL_port: 3306
MySQL_database: newrpg3
MySQL_user: root
MySQL_password: newrpg
DrawData_Table: forge_draw
PlayerData_Table: forge_player
#矿石掉落宝石的几率(最大几率1000 = 100%)
Ore_Chance:
56:
- 388
- 500
#矿石掉落宝石的世界列表
Ore_Worlds:
- "kqsj"
- "dp2"
#宝石的LORE设置
Gem_Lore:
388: # 原初之石的物品ID
- "§6[§5原初之石§6]" # 显示名称
- "§c锻造类宝石" # 类型标识
- "<level>" # 等级占位符
- "§7这是一个神奇的宝石" # 其他描述
#图纸的物品ID
Draw_Item_ID: 340
#代表宝石等级的字符(必须是一位字符)
Gem_Level_Text: "✪"
#宝石等级的颜色
Gem_Level_Color: "§b§l纯度:§a"
#宝石合成成功的几率(最大为1000)
Gem_Level_Up_Chance: 450
#宝石产生的等级几率
Gem_Level_Chance:
1: 700
2: 100
3: 150
4: 40
5: 5
6: 4
7: 1
#评价标记对应的评价内容
Attrib_Level_Text:
"level-1": "§a品质:§8§l粗糙§A§0"
"level-2": "§a品质:§f§l普通§A§0"
"level-3": "§a品质:§a§l优良§A§0"
"level-4": "§a品质:§b§l精良§A§0"
"level-5": "§a品质:§9§l稀有§A§0"
"level-6": "§a品质:§d§l史诗§A§0"
"level-7": "§a品质:§6§l传说§A§0"
"level-8": "§a品质:§4§l逆天§A§0"
"level-9": "§a品质:§e§l辉煌§A§0"
"level-10": "§a品质:§e§l究极§A§0"
"level-11": "§a品质:§7§l诅咒§A§0"
"level-12": "§a品质:§d§l锻造共鸣§A§0"
"level-13": "§a品质:§d§l千§c§l幻§A§0"
"level-14": "§a品质:§e§l人造神§6§l明§A§0"
"level-15": §a品质:§e§l至臻§d§l典藏§A§0"
Attrib_Level_Text_Command: #新增功能,锻造出指定等级触发命令组
level-5: #锻造出来了 Attrib_Level_Text节点下的 level5
- "" #命令1
- "" #命令2
Item_Up_Attrib_Level_Text: #新版本保底
test01:
name: "普通增幅石1" # 精准匹配物品名
upAttribLevelText: "level-2" # 保底从品质几锻造
canDraw:
- "null" # null 代表无限制,任意锻造书都可以使用。
test02:
name: "普通增幅石2"
upAttribLevelText: "level-8"
canDraw:
- "§a锻造师之剑"
- "§a锻造师之甲"
- "§a锻造师之裤"
- "§a锻造师之靴"
Old_Item_Up_Attrib_Level_Text: #旧版本保底
test01:
name: "普通增幅石1" # 精准匹配物品名
upAttribLevelText: "level-2" # 随机保底锻造如果随机的品质低于 upAttribLevelText 指定的品质则 品质为 level-2
canDraw:
- "null" # null 代表无限制,任意锻造书都可以使用。
test02:
name: "普通增幅石2"
upAttribLevelText: "level-8"
canDraw:
- "§a锻造师之剑"
- "§a锻造师之甲"
- "§a锻造师之裤"
- "§a锻造师之靴"
#锻造属性的波动范围(左边的为评价字符 右边的为波动范围 -30 => 15代表从-30%到-15%之间波动)(评价字符必须和下面的配置对应!)
Forge_Attrib:
"level-1": "-1 => 15"
"level-2": "15 => 20"
"level-3": "20 => 40"
"level-4": "25 => 60"
"level-5": "35 => 85"
"level-6": "43 => 100"
"level-7": "60 => 125"
"level-8": "85 => 145"
"level-9": "120 => 200"
"level-10": "140 => 240"
"level-11": "165 => 288"
"level-12": "195 => 300"
"level-13": "220 => 320"
"level-14": "270 => 360"
"level-15": "300 => 450"
#锻造数学百分比显示前缀
Attrib_Perce_Text: "§A§0§r§a强度:"
#锻造属性的几率(左边对应上面配置的评价标记,右边为几率1000=100%)
Forge_Chance:
"level-1": 150
"level-2": 235
"level-3": 220
"level-4": 130
"level-5": 113
"level-6": 70
"level-7": 20
"level-8": 15
"level-9": 15
"level-10": 15
"level-11": 10
"level-12": 10
"level-13": 8
"level-14": 8
"level-15": 1
#每一个图纸所需的宝石等级对应的给予玩家的经验
Forge_Exp:
1: 30
2: 45
3: 60
4: 75
5: 110
6: 125
7: 150
8: 180
9: 250
10: 280
11: 350
12: 400
13: 420
14: 500
15: 500
16: 550
17: 590
18: 650
19: 690
20: 750
21: 850
22: 1000
23: 1000
24: 1000
25: 1000
#锻造称号 锻造等级:"称号"
Forge_Perfix:
1: "§7[§a初级锻造师§7]"
2: "§7[§a晋升锻造师§7]"
3: "§7[§a普通锻造师§7]"
4: "§7[§6高级锻造师§7]"
20: "§7[§9巅峰锻造师§7]"
# 每级提升锻造强度的值 值越高每次出高强度几率越大
Forge_level_change: 0.0
#经验的正负浮动百分比范围 30= 原始经验+/-30%*原始经验
Forge_Exp_Float: 20
#玩家的锻造最大等级
Max_Player_Forge_Level: 20
#锻造者的信息
ForgeOwner: "§A§0§7锻造者§6[§a§l<player>§6]"
# 新增锻造时间格式配置
ForgeDateFormat: "§A§0§7锻造时间§6[§a§l<date>§6]"
#玩家每级经验所需的等级公式 公式为(((level - <1.0>)^ <3>) * (level / <10>) + <70.0>) / <5.0> + ((level -<1.0>) * <400.0> + <96.0>) = 当前升级所需的经验 ,level 为当前等级
#所有尖括号内的数字需要按顺序设置在下面.
Exp_Text: "1,3,10,70,5,1,400,96"
#提升属性几率的物品lore
Attrib_Up_Item_Lore: "§a纯度:§e§l<chance>"
#需要额外权限学习图纸的锻造书
Permission_Books:
test_01: #配置节点
books:
- "§c魔剑莱瓦汀三阶设计图" # 启用需要权限判断的锻造书
need_permission: "mj.xl" # 需要的权限
#保底,锻造书保底锻造数量和保底的锻造等级,保底功能需要开启数据库存储
BaoDi_Books:
test_01: #配置节点
books:
- "§c魔剑莱瓦汀三阶设计图" #启用保底的锻造书
max_make: 5 # 保底锻造数量
forge_level: level-1 # 到达保底数量后下次保底锻造的物品等级
#随机生成武器词条
Random_Weapon_Lore:
test_01: #配置节点
insert_itemlore_rows: 1 # 插入的行数,在指定的行数插入随机词条
books:
- "§c魔剑莱瓦汀三阶设计图" #启用 生成随机生成武器词条的图纸
Top_Fixed_builds_lore: #String_Lore 的 开头固定行
- "§c§m-----------------"
String_Lore:
list01: #第一组随机词条
lore_list: #词条列表
- "§c暴击伤害 +10%#20"
- "§e攻击速度 +15%#20"
- "§f生命值 +100#20"
- "§g防御力 +50#20"
generate_number: 2 #从第一组中随机生成2条
list02: #第二组随机词条
lore_list: #词条列表
- "§c移动速度 +5%#20"
- "§e跳跃提升 +10%#20"
- "§f经验加成 +20%#20"
- "§g金币加成 +25%#20"
generate_number: 1 #从第二组中随机生成1条
Bottom_Fixed_builds_lore: #String_Lore 的 结尾固定行
- "§c§m-----------------"
# 自定义锻造概率组
Custom_Forge_Groups:
test_group_01:
books:
- "§c魔剑莱瓦汀三阶设计图"
chances:
level-1: 400 # 40%
level-2: 400 # 40%
level-3: 200 # 20%
qualityCommand:
level-1: "give <player> diamond 1"
level-2: "effect <player> SPEED 30 1"
level-3: "broadcast &a恭喜玩家 <player> 锻造出稀有装备!"
test_group_02:
books:
- "§c其他图纸"
chances:
level-1: 300 # 30%
level-2: 300 # 30%
level-4: 400 # 40%
qualityCommand:
level-1: "give <player> diamond 1"
level-2: "effect <player> SPEED 30 1"
level-3: "broadcast &a恭喜玩家 <player> 锻造出稀有装备!"
- Config.yml
- cdk: ""
user_qq: ""
database:
url: jdbc:mysql://localhost:3306/arliya #数据库名字
username: arliya #数据库用户名
password: arliya #数据库密码
DrawData_Table: forge_draw
Forge_Settings:
测试锻造图纸:
needGemLevel: 1 #需要的宝石等级一定要和gem的星数匹配,比如下面gem 有 两颗星就代表两级。
needPlayerLevel: 1 #需要的玩家锻造等级
gem:
id: 388
Name: "§6[§5原初之石§6]"
Lore:
- "§c锻造类宝石"
- "§b§l纯度:§a✪" #一级原初
number: 1 #需要的数量
formula:
Material_01: #需要的第1种材料的节点
id: 388
Name: "轻轻手套"
Lore:
- "§6[§5原初之石§6]"
- "§8[§c锻造类宝石§8] §8[§e锻造材料§8]"
number: 2 #需要的数量
Material_02: #需要的第2种材料的节点
id: 388
Name: "花萼石头"
Lore:
- "§6[§5原初之石§6]"
- "§8[§c锻造类宝石§8] §8[§e锻造材料§8]"
number: 5 #需要的数量
result:
id: 278
Name: "resultItem"
Lore:
- "§6[§5原初之石§6]"
- "§8[§c锻造类宝石§8] §8[§e锻造材料§8]"
number: 1 #只能填1,这个是返回的锻造物品!
detail: #这个是锻造书的描述
Lore:
- "详细描述1"
- "详细描述2"
attrib: #这个是锻造的属性,和平时一样写就行,()代表浮动的属性
Lore:
- "属性描述1"
- "属性描述2"
- gui_type/ecftitem.yml
- Maximum_Queue: 5 #玩家初始合成队列(新增)
title: "§a[§5武器制作§a]"
gui_id: "ecrftitem"
Settings:
配方04:
needPlayerLevel: 1 #需要的玩家锻造等级
formula:
Material_01: #需要的第1种材料的节点
id: 388
Name: "轻轻手套"
Lore:
- "§6[§5原初之石§6]"
- "§8[§c锻造类宝石§8] §8[§e锻造材料§8]"
number: 2 #需要的数量
Material_02: #需要的第2种材料的节点
id: 388
Name: "花萼石头"
Lore:
- "§6[§5原初之石§6]"
- "§8[§c锻造类宝石§8] §8[§e锻造材料§8]"
number: 5 #需要的数量
result: #显示的合成的物品
id: 388
Name: "§4朱雀红宝石1234"
Lore:
- "§6[§5宝石§6]"
- "§8合成证明"
number: 1 #需要的数量
#新增功能
synthesis_chance: 30 #合成几率(必须参数)
synthesis_chance_list:
- 'vip.hc:35'
- 'vip.hc:40'
- 'vip.hc:45'
permission: hc_02 #需要的权限(可有可无的节点功能,添加后只有当玩家拥有这个权限才会显示到配方列表里)
money: 100000 #需要的金币(可有可无的节点功能)
point: 0 #需要的点券(可有可无的节点功能)
command_list: #合成完毕执行的命令(可有可无的节点功能)
- 'op:fadmin getrandomitems %player_name% &4朱雀红锻造'
no_synthesis_command_list: #合成失败后执行的命令(可有可无的节点功能)
- 'op:eco give %player_name% 100'
time_craft: 10 #制作时间(单位秒) (新增)
- gui_type/hc.yml
title: "§a[§5宝石制作§a]"
gui_id: "hc"
Settings:
配方01:
needPlayerLevel: 1 #需要的玩家锻造等级
formula:
Material_01: #需要的第1种材料的节点
id: 388
Name: "轻轻手套"
Lore:
- "§6[§5原初之石§6]"
- "§8[§c锻造类宝石§8] §8[§e锻造材料§8]"
number: 2 #需要的数量
Material_02: #需要的第2种材料的节点
id: 388
Name: "花萼石头"
Lore:
- "§6[§5原初之石§6]"
- "§8[§c锻造类宝石§8] §8[§e锻造材料§8]"
number: 5 #需要的数量
result: #显示的合成的物品
id: 388
Name: "§4朱雀红宝石"
Lore:
- "§6[§5宝石§6]"
- "§8合成证明"
number: 1 #需要的数量
#新增功能
synthesis_chance: 30 #合成几率(必须参数)
synthesis_chance_list:
- 'vip.hc:35'
- 'vip.hc:40'
- 'vip.hc:45'
permission: hc_02 #需要的权限(可有可无的节点功能,添加后只有当玩家拥有这个权限才会显示到配方列表里)
money: 100000 #需要的金币(可有可无的节点功能)
point: 0 #需要的点券(可有可无的节点功能)
command_list: #合成完毕执行的命令(可有可无的节点功能)
- 'op:fadmin getrandomitems %player_name% &4朱雀红锻造'
no_synthesis_command_list: #合成失败后执行的命令(可有可无的节点功能)
- 'op:eco give %player_name% 100'
time_craft: 10 #制作时间(单位秒) (新增)