这是一个基于 Forge 1.20.1 的 Minecraft Mod,旨在为 GregTech 相关的玩法添加食物选项。
要向此 Mod 添加新物品,请遵循以下步骤:
在 src/main/java/com/yc/gregtechfoodoption/ExampleMod.java
文件中,你可以定义你的新物品。找到 ITEMS
DeferredRegister,并按照现有 EXAMPLE_ITEM
的模式添加你的新物品。
示例代码 (ExampleMod.java):
// ... existing code ...
public static final RegistryObject<Item> YOUR_NEW_ITEM = ITEMS.register("your_new_item_id", () -> new Item(new Item.Properties()));
// 如果是食物,可以添加食物属性
// public static final RegistryObject<Item> YOUR_NEW_FOOD_ITEM = ITEMS.register("your_new_food_item_id", () -> new Item(new Item.Properties().food(new FoodProperties.Builder().nutrition(4).saturationMod(0.3f).build())));
// ... existing code ...
your_new_item_id
: 为你的物品指定一个唯一的、小写的 ID。new Item.Properties()
: 用于设置物品的属性,例如最大堆叠数、耐久度、是否可附魔等。FoodProperties.Builder()
: 如果是食物,可以配置营养值 (nutrition
) 和饱和度 (saturationMod
)。
在 ExampleMod.java
文件的 GREGTECH_FOOD_OPTION_TAB
定义中,你需要将新物品添加到 displayItems
方法中,以便它显示在 Mod 的创造模式物品页。
示例代码 (ExampleMod.java):
// ... existing code ...
public static final RegistryObject<CreativeModeTab> GREGTECH_FOOD_OPTION_TAB = CREATIVE_MODE_TABS.register("gregtech_food_option_tab", () -> CreativeModeTab.builder()
.withTabsBefore(CreativeModeTabs.COMBAT)
.icon(() -> GREGTECH_FOOD_OPTION_ICON.get().getDefaultInstance())
.title(Component.translatable("itemGroup.gregtechfoodoption_tab"))
.displayItems((parameters, output) -> {
output.accept(EXAMPLE_ITEM.get());
output.accept(YOUR_NEW_ITEM.get()); // 添加你的新物品
// output.accept(EXAMPLE_BLOCK_ITEM.get()); // 如果需要,也可以添加方块物品
}).build());
// ... existing code ...
为你的新物品创建纹理图片。纹理文件必须是 .png
格式,并放置在以下路径:
src/main/resources/assets/gregtechfoodoption/textures/item/your_new_item_id.png
确保 your_new_item_id.png
与你在 ExampleMod.java
中为物品定义的 ID 相匹配。
为你的新物品创建一个模型文件,并放置在以下路径:
src/main/resources/assets/gregtechfoodoption/models/item/your_new_item_id.json
模型文件内容应如下所示:
{
"parent": "item/generated",
"textures": {
"layer0": "gregtechfoodoption:item/your_new_item_id"
}
}
layer0
的值应该指向你刚刚创建的纹理文件,格式是 modid:item/纹理文件名(不带.png)
。
为了让你的新物品在游戏中显示正确的名称,你需要为它添加一个翻译键。打开或创建以下文件:
src/main/resources/assets/gregtechfoodoption/lang/zh_cn.json
并添加你的物品的翻译键。
示例代码 (zh_cn.json):
{
"itemGroup.gregtechfoodoption_tab": "GregTech Food Option",
"item.gregtechfoodoption.your_new_item_id": "你的新物品名称"
}
item.gregtechfoodoption.your_new_item_id
: 按照item.<modid>.<物品ID>
的格式添加你的物品的键。你的新物品名称
: 替换为你希望在游戏中显示的物品名称。
如果你需要调整创造模式物品页图标(gregtech_food_option_icon
)的大小或比例,你需要修改其模型文件:
src/main/resources/assets/gregtechfoodoption/models/item/gregtech_food_option_icon.json
在其中添加或修改 "display"
块,特别是 "gui"
部分的 "scale"
属性。
示例代码 (gregtech_food_option_icon.json):
{
"parent": "item/generated",
"textures": {
"layer0": "gregtechfoodoption:item/gregtechfoodo"
},
"display": {
"gui": {
"scale": [ 1.0, 0.75, 1.0 ] // [x缩放, y缩放, z缩放]
}
}
}
scale
属性是一个三维数组[x, y, z]
,分别控制物品在 X、Y、Z 轴上的缩放比例。- 调整大小:同时增大或减小
x
、y
、z
的值可以改变图标的整体大小。 - 调整比例(扁平化):要使图标看起来更扁平,可以减小
y
值,同时保持x
和z
的值相对较大。例如,[1.0, 0.5, 1.0]
会比[1.0, 1.0, 1.0]
看起来更扁平。
调整后保存文件。
完成上述所有更改后,你需要重新构建你的 Mod。在项目根目录下运行以下 Gradle 命令:
./gradlew build
成功构建后,将生成的 Mod 文件(位于 build/libs
目录下,通常是 gregtechfoodoption-<版本号>.jar
)放入 Minecraft 的 mods
文件夹中,然后启动游戏以查看你的新物品。
如果你想通过 KubeJS 将物品添加到此 Mod 的自定义物品页,你需要编写 KubeJS 脚本。此 Mod 提供了一个名为 gregtechfoodoption:gregtech_food_option_tab
的自定义物品栏。
1. 定义 KubeJS 物品
在 kubejs/startup_scripts/
文件夹下创建一个新的 KubeJS 脚本文件(例如 my_kubejs_items.js
),并在此文件中定义你的 KubeJS 物品。
示例代码 (my_kubejs_items.js):
// kubejs/startup_scripts/my_kubejs_items.js
onEvent('item.registry', event => {
// 创建一个名为 'my_kubejs_item' 的物品,显示名称是 '我的 KubeJS 物品'
event.create('my_kubejs_item').displayName('我的 KubeJS 物品');
// 你可以根据需要创建更多物品
// event.create('another_kubejs_item').displayName('另一个 KubeJS 物品');
});
2. 将 KubeJS 物品添加到自定义物品栏
在 kubejs/startup_scripts/
文件夹下找到或创建一个 KubeJS 脚本文件(例如 custom_tab_integration.js
),并添加以下代码。确保将 event.add()
中的物品 ID 替换为你实际定义的 KubeJS 物品的 ID。
示例代码 (custom_tab_integration.js):
// priority: 99
// This script assumes you have a KubeJS item defined, for example 'kubejs:my_kubejs_item'
onEvent('creative_tabs.register', event => {
// 找到 GregTech Food Option 模组的自定义物品栏
event.get('gregtechfoodoption:gregtech_food_option_tab').add(event => {
// 添加你的 KubeJS 物品到这个物品栏
event.add('kubejs:my_kubejs_item');
// 如果你定义了多个 KubeJS 物品,可以继续添加
// event.add('kubejs:another_kubejs_item');
});
});
重要提示:
- 确保你的 Minecraft 实例中已经安装了 KubeJS 模组。
event.add()
中的物品 ID ('kubejs:my_kubejs_item'
) 必须与你在 KubeJS 中定义的物品的实际 ID 匹配。- 完成脚本修改后,重新启动 Minecraft 游戏,你的 KubeJS 物品应该就会出现在 GregTech Food Option 模组的自定义物品栏中。