自定义物品 (v1)
格式版本 1 (legacy)
注意
format_version: 1 不再接收更新。新功能将仅添加到格式版本 2。
JSON 映射 (v1)
- 启动你的服务器,你应该有一个名为
custom_mappings的文件夹被创建。对于独立版,该文件夹位于Geyser.jar文件所在的文件夹中;对于插件版,它位于 Geyser 数据文件夹内。 - 创建一个
.json文件,文件名可以随意,数量也不限。你不需要为每个物品创建一个文件。以下是文件的结构:
{
"format_version": 1,
"items": {
}
}
- 在
items条目中,你可以添加要扩展的 Java 物品:
"minecraft:JAVA_ITEM": [
]
- 在这个 Java 物品内,是一个包含所有自定义物品的数组。
{
"name": "my_item"
}
- 然后,你需要设置一个或多个物品选项或注册,它们可以堆叠,这样所有指定的类型都需要匹配。
- 自定义模型数据:
custom_model_data(int) - 伤害谓词:
damage_predicate(int) 这是 damage/max damage 的分数值,而不是 0 到 1 之间的数字。 - 不可破坏:
unbreakable(boolean)
- 自定义模型数据:
- 你还有一些额外的修饰符可以设置来进一步自定义你的物品。请注意,以下修饰符不是必需的。
display_name(string) 默认值: 物品名称icon(string) 默认值: 物品名称allow_offhand(boolean) 默认值: falsetexture_size(int) 默认值: 16creative_category(int) 默认值: 未设置。这可以接受 1-5 之间的值,并定义物品出现的创意模式类别。注意:如果你希望输出此自定义物品的配方显示在配方书中,需要将你的物品添加到创意模式类别!但是,包含它并不意味着你可以从创意模式物品栏中获取自定义物品。creative_group(string) 默认值: 未设置。需要同时设置创意模式类别 - 允许你在子组中对自定义物品进行分组。请参阅此处获取所有类别。render_offsets(object) 工作原理如下。请注意,除了 x、y 和 z 之外,所 有子对象都是可选的。例如,你可以只有主手的 position,没有其他内容。默认值: 无渲染偏移tags(array) 默认值: 无标签。允许定义可用于 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)
- 创建你的自定义物品选项或注册,你可以添加以下任何内容。它们可以堆叠,这样所有指定的类型都需要匹配,但你不需要所有这些。
CustomItemOptions itemOptions = CustomItemOptions.builder()
.customModelData(1)
.damagePredicate(1) //This is a fractional value of damage/max damage and not a number between 0 and 1.
.unbreakable(true)
.build();
- 创建你的自定义物品,并将其存储在某处:
CustomItemData data = CustomItemData.builder()
.name("my_item")
.customItemOptions(itemOptions)
.build();
- 你有一些修饰符可以设置来进一步自定义你的物品。请注意,以下修饰符不是必需的。
.displayName("displayName"); //Default: item name
.icon("my_icon"); //Default: item name
.allowOffhand(false); //Default: false
.textureSize(16); //Default: 16
.renderOffsets(new CustomRenderOffsets(...)); //Default: no render offset
- 然后,在你的预初始化事件中,你可以注册你的物品:
@Subscribe
public void onGeyserPreInitializeEvent(GeyserDefineCustomItemsEvent event) {
event.registerCustomItem("minecraft:JAVA_ITEM", data);
}
使用 Geyser 扩展的非原版(模组)物品(例如 与 Fabric 一起使用)(v1)
- 创建你的物品数据:
NonVanillaCustomItemData data = NonVanillaCustomItemData.builder()
.name("my_item")
.identifier("my_mod:my_item")
.javaId(1)
- 还有许多其他选项你可以设置以匹配你的物品所需的行为。你可以在此处看到它们
- 在 GeyserDefineCustomItems 事件中注册你的物品:
@Subscribe
public void onGeyserDefineCustomItemsEvent(GeyserDefineCustomItemsEvent event) {
event.register(data);
}