FancyCrafting

FancyCrafting - 自定义合成界面

自定义合成界面,自定义配方/网格,所有原版配方,……
Bukkit / Spigot 作者 Ancash 支持版本 1.14 - 1.20
服务器使用量
3
服务玩家数
1
下载量
13,978
插件详细介绍

FancyCrafting 是一个强大的自定义合成 API,允许开发者创建支持 NBT、材质、附魔等高级属性的有序/无序合成配方。对于服主而言,只需安装即可为依赖它的插件提供支持。

问题反馈

  • 请通过 Discord 提交错误、问题、疑问和建议。

服务器服主安装指南

  • 如果其他插件指引您来到此页面,说明需要安装 FancyCrafting。
  • 下载插件并将其放入服务器的 plugins 文件夹。
  • 重启服务器即可完成安装。

开发者使用指南

FancyCrafting 简单易用。首先,将其作为依赖项添加到您的项目中。

使用 Maven 导入

在 `pom.xml` 中添加以下依赖

<dependency>
    <groupId>de.ancash</groupId>
    <artifactId>fancycrafting</artifactId>
    <version>4.5.3</version>
</dependency>
  • 同时,请确保在您插件的 plugin.yml 中将其添加为依赖,以避免错误。

有序合成配方 (Shaped Recipe)

需要导入的类:

import de.ancash.fancycrafting.recipe.IShapedRecipe;
import de.ancash.fancycrafting.base.AbstractFancyCrafting;

创建示例:

ItemStack[] ingredientsArray = new ItemStack[] {
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK)
};
// 此数组的维度为 2x2
// 最大支持 8x6 的网格 (共 48 个材料位)
ItemStack result = new ItemStack(Material.DIAMOND_BLOCK);
IShapedRecipe shapedRecipe = new IShapedRecipe(ingredientsArray, 2, 2, result, "Shaped Tutorial", UUID.randomUUID());
AbstractFancyCrafting.registerRecipe(shapedRecipe);

无序合成配方 (Shapeless Recipe)

需要导入的类:

import de.ancash.fancycrafting.recipe.IShapelessRecipe;
import de.ancash.fancycrafting.base.AbstractFancyCrafting;

创建示例:

ItemStack[] ingredientsArray = new ItemStack[] {
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK)
};
// 数组维度无关紧要,但最大长度为 48,空值将被忽略。
// 也可以使用任何其他集合类型。
ItemStack result = new ItemStack(Material.DIAMOND_BLOCK);
IShapelessRecipe shapelessRecipe = new IShapelessRecipe(Arrays.asList(ingredientsArray), result, "Shapeless Tutorial", UUID.randomUUID());
AbstractFancyCrafting.registerRecipe(shapelessRecipe);

随机结果有序配方 (Random Shaped Recipe)

需要导入的类:

import de.ancash.fancycrafting.recipe.IRandomShapedRecipe;
import de.ancash.fancycrafting.base.AbstractFancyCrafting;

创建示例:

Map<ItemStack, Integer> probMap = new HashMap<>();
probMap.put(new ItemStack(Material.DIAMOND_BLOCK), 1);
probMap.put(new ItemStack(Material.COAL_BLOCK), 1);
// 物品出现的概率为其值除以所有值的总和

ItemStack[] ingredientsArray = new ItemStack[] {
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK)
};
ItemStack result = new ItemStack(Material.CHEST);
ItemMeta meta = result.getItemMeta();
meta.setDisplayName("Random Result");
meta.setLore(Arrays.asList("§7Diamond Block: §a50%", "§7Coal Block: §a50%"));
result.setItemMeta(meta);

IRandomShapedRecipe randomShapedRecipe = new IRandomShapedRecipe(ingredientsArray, 2, 2, result, "Random Shaped Recipe", UUID.randomUUID(), probMap);
AbstractFancyCrafting.registerRecipe(randomShapedRecipe);

随机结果无序配方 (Random Shapeless Recipe)

需要导入的类:

import de.ancash.fancycrafting.recipe.IRandomShapelessRecipe;
import de.ancash.fancycrafting.base.AbstractFancyCrafting;

创建示例:

Map<ItemStack, Integer> probMap = new HashMap<>();
probMap.put(new ItemStack(Material.DIAMOND_BLOCK), 1);
probMap.put(new ItemStack(Material.COAL_BLOCK), 1);
// 物品出现的概率为其值除以所有值的总和

ItemStack[] ingredientsArray = new ItemStack[] {
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK),
    new ItemStack(Material.COAL_BLOCK)
};
ItemStack result = new ItemStack(Material.CHEST);
ItemMeta meta = result.getItemMeta();
meta.setDisplayName("Random Result");
meta.setLore(Arrays.asList("§7Diamond Block: §a50%", "§7Coal Block: §a50%"));
result.setItemMeta(meta);

IRandomShapelessRecipe randomShapelessRecipe = new IRandomShapelessRecipe(Arrays.asList(ingredientsArray), result, "Random Shaped Recipe", UUID.randomUUID(), probMap);
AbstractFancyCrafting.registerRecipe(randomShapelessRecipe);

主要功能

  • 自定义合成配方:支持 NBT、材质、元数据、附魔等。
  • 自定义合成网格:支持多种尺寸的合成界面。
  • 原版工作台:兼容 3x3 和 2x2 合成。
  • 随机配方结果:合成可产出随机结果的物品。
  • 配方黑名单:禁止特定配方。
  • 自动合成器:提供自动合成功能。

命令

主命令为 `/fc`,包含以下子命令

open

  • 无参数:为自己打开默认合成界面。
  • 权限:fancycrafting.open
  • <1-8> <1-6>:为自己打开指定宽度和高度的合成界面。
  • 权限:fancycrafting.open.<1-8>x<1-6>
  • <玩家名>:为指定玩家打开默认合成界面。
  • 权限:fancycrafting.open.other
  • <玩家名> <1-8> <1-6>:为指定玩家打开指定尺寸的合成界面。
  • 权限:fancycrafting.open.other.<1-8>x<1-6>

reload

  • 无参数:重载所有原版/自定义配方及配置文件。
  • 权限:fancycrafting.admin.reload

create

  • 无参数:打开 GUI 以创建新的自定义配方。
  • 权限:fancycrafting.admin.create

edit

  • <配方名>:编辑一个或多个同名的自定义配方。配方名中的空格需替换为 -。若有多个同名配方,可通过点击箭头按钮切换。
  • 权限:fancycrafting.admin.edit

view

  • 无参数:查看所有自定义配方。
  • 权限:fancycrafting.admin.view
  • <配方名>:查看所有指定名称的配方(名称中的空格替换为 -)。也可查看大多数原版配方。
  • 权限:fancycrafting.view.<配方名>

合成与权限说明

所有玩家默认没有以下权限,即使是 OP 也需要显式设置。

合成权限

  • 当配置项 perms-for-custom-recipes 设为 true 时,合成自定义配方需要权限:fancycrafting.craft.<配方名>(空格替换为 -)。
  • 当配置项 perms-for-vanilla-recipes 设为 true 时,合成原版配方需要权限:fancycrafting.craft.<配方名>(配方名为产出物品的名称,空格替换为 -)。

管理员权限列表

  • 创建配方:fancycrafting.admin.create
  • 编辑配方:fancycrafting.admin.edit
  • 查看所有配方:fancycrafting.admin.view
  • 快速合成:fancycrafting.qc
  • 打开默认 GUI:fancycrafting.open
  • 重载插件:fancycrafting.admin.reload

与 Deluxe Menus 集成

若要从 Deluxe Menus 的 GUI 中打开 FancyCrafting 合成界面,请在 Deluxe Menus 的命令列表中添加:

- '[close]'
- '[player] fc open <delay=2>'

前置插件

  • ILibrary:https://www.spigotmc.org/resources/ilibrary.89796/
  • NBTNexus:https://www.spigotmc.org/resources/nbtnexus.111041/
测试支持版本
1.14 1.15 1.16 1.17 1.18 1.19 1.20
版本分布
基本信息
插件名称 FancyCrafting
作者 Ancash
平台 Bukkit / Spigot
支持版本 1.14 - 1.20
点赞数 2
最近版本
4.11.0 2
4.6.2 1