本帖最后由 童鞋鞋 于 2020-5-16 21:38 编辑

iCraft
—— 自定义矩阵合成系统 ——


交流群:457600295



使用统计



. 视频



. 展示



. 前言
最初是为MoreExpansion(3D更多扩展)插件而打造的合成系统
后来萌生了自定义矩阵的合成系统



. 功能
  • 自定义矩阵:也就是自定义布局Gui装饰,不同合成面板有不同的矩阵
  • 丰富的API
  • 支持NBT物品,支持MOD物品,支持Lore
  • 可开关代替原版合成台(右击工作台时)
  • 通过游戏内可视化添加、编辑
  • 自定义语言文本
  • 无前置插件,即下即装即用
  • 兼容性的友好性:支持许多服务端和许多版本



. 兼容性
通过了Paper/Spigot-1.12-1.15,Mohist-1.12.2,CatServer-1.12.2的测试
通过了踢出正在合成的玩家,关服,均无吞物品情况
不支持1.8.8及以下
尚未测试1.9-1.11
  • Minecraft-1.12-1.15(没测过1.11及以下,应该支持)
  • Paper/Spigot
  • Mohist
  • CatServer
  • 支持NBT物品,支持MOD物品



. 下载
新版:




. 提醒
合成面板的意思是Gui合成界面,通过Panel.yml配置可以添加更多不同的合成面板,可以自定义矩阵



. 命令权限
  1. /iCraft help
  2.   描述:查看命令帮助
  3.   权限:icraft.help
  4. /iCraft openPanel <合成面板ID> [玩家]
  5.   描述:打开合成系统
  6.   权限:icraft.open
  7. /iCraft viewRecipe <合成面板ID> <配方ID> [玩家]
  8.   描述:查看配方公式
  9.   权限:icraft.admin
  10. /iCraft addRecipe <合成面板ID> <配方ID>
  11.   描述:添加合成配方
  12.   权限:icraft.admin
  13. /iCraft delRecipe <合成面板ID> <配方ID>
  14.   描述:删除合成配方
  15.   权限:icraft.admin
  16. /iCraft editRecipe <合成面板ID> <配方ID>
  17.   描述:编辑合成配方
  18.   权限:icraft.admin
复制代码



. 配置
config.yml
  1. # 语言 Language
  2. # 可选 Optional: lang_en lang_cn lang_ru
  3. language: "lang_en"

  4. # 设置
  5. # setting
  6. setting:
  7.   # 如果是new,右键工作台时打开自定义矩阵合成系统
  8.   # if new, open custom crafting system
  9.   # when right click crafting-table
  10.   # 如果是sel,右键工作台时打开原版合成系统-自定义矩阵合成系统选择界面
  11.   # if sel, open vanilla Gui-custom crafting system select Gui
  12.   # when right click crafting-table
  13.   # 如果是old,右键工作台时打开原版合成系统
  14.   # if old, open vanilla crafting-table
  15.   # when right click crafting-table
  16.   default: sel
  17.   # 如果打开新型合成系统
  18.   # 打开的GUI的合成面板ID
  19.   # if open custom crafting system
  20.   # open the gui id custom crafting system
  21.   gui: gui
  22. # 关于合成系统菜单
  23. # about custom crafting system
  24. inventory:
  25.   # 合成系统标题
  26.   # inventory title
  27.   #title: '&lcrafting system'
  28.   title: '&l合成系统'
  29.   # 点击合成按钮的名称
  30.   # click on the name of the composition button
  31.   #button: '&7&l[&acomposition&7&l]'
  32.   button: '&7&l[&a点击合成&7&l]'
  33.   # 关闭按钮的名称
  34.   # click on the name of the close button
  35.   #close: '&7&l[&cclose&7&l]'
  36.   close: '&7&l[&c关闭&7&l]'
  37. # 关于选择界面 About selection Gui
  38. selectGui:
  39.   #title: "&lPlease select Crafting System"
  40.   title: "&l请选择合成系统"
  41.   #vanillaGuiButton: "&7&l[&aVanilla Crafting Gui&7&l]"
  42.   vanillaGuiButton: "&7&l[&a原版合成系统&7&l]"
  43.   #newGuiButton: "&7&l[&aNew Crafting Gui&7&l]"
  44.   newGuiButton: "&7&l[&a新型合成系统&7&l]"
复制代码

. 自定义矩阵
Panel.yml
  1. # 合成面板ID
  2. gui:
  3. # 合成系统矩阵
  4.   # 放置所需合成物品的槽位
  5.   # 0是第一格,1是第二格,以此推类
  6.   matrix:
  7.     - 10
  8.     - 11
  9.     - 12
  10.     - 13
  11.     - 19
  12.     - 20
  13.     - 21
  14.     - 22
  15.     - 28
  16.     - 29
  17.     - 30
  18.     - 31
  19.     - 37
  20.     - 38
  21.     - 39
  22.     - 40
  23.   # 合成按钮的槽位
  24.   buttonSlots:
  25.     - 16
  26.   # 合成结果的槽位
  27.   resultSlots:
  28.     - 25
  29.   # 关闭按钮的槽位
  30.   closeSlots:
  31.     - 43
  32. # 合成面板ID
  33. xxx:
  34.   # ..同上
复制代码



. API
对开发者更加友好(hook后,别忘记添加Recipe.yml和Panel.yml,如果加入时)

  1. if (Bukkit.getPluginManager().isPluginEnabled("iCraft")) {
  2.   saveResource("Recipe.yml", false); //如果需要注册配方则加入
  3.   saveResource("Panel.yml", false); //如果需要面板配方则加入
  4.   IManager.hook(this);
  5. }
复制代码

也可以通过API添加配方
  1. List<ItemStack> itemMatrix = new ArrayList<>(); // 所需合成物品,空的请设置为Material.AIR
  2. List<ItemStack> results = Collections.singletonList(itemStack); // 合成结果
  3. Recipe recipe = new Recipe(配方ID, 合成面板ID", itemMatrix, results); // 实例化配方
  4. IManager.registerRecipe(recipe); // 注册配方
复制代码


可通过反编译查阅api包



感谢海豚的协助,部分代码是个人原创
序列化反序列化物品工具类来自:https://gitee.com/DeepinMC/BukkitUtils



[groupid=1511]Server CT[/groupid]