跳转到主要内容

自定义物品(v1)

格式版本1(遗留)

警告

format_version: 1 不再接收更新。新功能仅会添加到格式版本2中。

JSON映射(v1)

  1. 启动服务器,你会看到一个名为 custom_mappings 的文件夹被创建。对于独立版,该文件夹与 Geyser.jar 文件在同一目录下;对于插件版,该文件夹位于你的Geyser数据文件夹内。
  2. 创建一个 .json 文件,文件名可以任意,你也可以创建多个文件,无需为每个物品单独创建一个文件。文件结构如下:
{
"format_version": 1,
"items": {

}
}
  1. items 条目下,你可以添加要扩展的Java版物品:
"minecraft:JAVA_ITEM": [

]
  1. 在这个Java版物品的数组中,添加你的所有自定义物品。
{
"name": "my_item"
}
  1. 然后,你需要设置一个或多个物品选项或注册信息,它们可以叠加使用,因此所有指定的类型都需要匹配。
    • 自定义模型数据:custom_model_data(整数)
    • 损坏谓词:damage_predicate(整数)这是损坏值与最大损坏值的比例,而非0到1之间的数值。
    • 不可破坏:unbreakable(布尔值)
  2. 你还可以设置一些额外的修饰符来进一步自定义物品。注意:以下修饰符并非必须设置。
    • display_name(字符串)默认值:物品名称
    • icon(字符串)默认值:物品名称
    • allow_offhand(布尔值)默认值:false
    • texture_size(整数)默认值:16
    • creative_category(整数)默认值:未设置。取值范围为1-5,定义物品在创造模式物品栏中所属的分类。注意:如果你希望输出该自定义物品的配方显示在配方书中,就需要将物品添加到创造模式分类中!但这并不意味着你可以从创造模式物品栏中获取该自定义物品。
    • creative_group(字符串)默认值:未设置。需要同时设置创造模式分类——允许你将自定义物品分组到子类别中。查看此处获取所有分类的列表。
    • render_offsets(对象)其工作方式如下。注意,所有子对象都是可选的,但x、y和z除外。例如,你可以只设置主手的位置,而不设置其他内容。默认值:无渲染偏移
    • tags(数组)默认值:无标签。允许定义可在Molang查询中使用的标签。示例值:["test:tag_one", "test:tag_two"]。
    "render_offsets": {
    "main_hand": {
    "first_person": {
    "position": {
    "x": 0,
    "y": 0,
    "z": 0
    },
    "rotation": {
    "x": 0,
    "y": 0,
    "z": 0
    },
    "scale": {
    "x": 0,
    "y": 0,
    "z": 0
    }
    },
    "third_person": {

    }
    },
    "off_hand": {

    }
    }

Geyser扩展(v1)

扩展原版物品(v1)

  1. 创建你的自定义物品选项或注册信息,你可以添加以下任意选项。它们可以叠加使用,因此所有指定的类型都需要匹配,但你不需要添加所有选项
CustomItemOptions itemOptions = CustomItemOptions.builder()
.customModelData(1)
.damagePredicate(1) //这是损坏值与最大损坏值的比例,而非0到1之间的数值。
.unbreakable(true)
.build();
  1. 创建你的自定义物品,并将其存储在某个地方:
CustomItemData data = CustomItemData.builder()
.name("my_item")
.customItemOptions(itemOptions)
.build();
  1. 你可以设置一些修饰符来进一步自定义物品。注意:以下修饰符并非必须设置。
.displayName("displayName"); //默认值:物品名称
.icon("my_icon"); //默认值:物品名称
.allowOffhand(false); //默认值:false
.textureSize(16); //默认值:16
.renderOffsets(new CustomRenderOffsets(...)); //默认值:无渲染偏移
  1. 然后,在你的预初始化事件中,注册你的物品:
@Subscribe
public void onGeyserPreInitializeEvent(GeyserDefineCustomItemsEvent event) {
event.registerCustomItem("minecraft:JAVA_ITEM", data);
}

使用Geyser扩展的非原版(模组)物品(例如用于Fabric)(v1)

  1. 创建你的物品数据:
NonVanillaCustomItemData data = NonVanillaCustomItemData.builder()
.name("my_item")
.identifier("my_mod:my_item")
.javaId(1)
  1. 你还可以设置许多其他选项来匹配你物品所需的行为。你可以在此处查看这些选项。
  2. 在GeyserDefineCustomItems事件中注册你的物品:
@Subscribe
public void onGeyserDefineCustomItemsEvent(GeyserDefineCustomItemsEvent event) {
event.register(data);
}