Skip to content

yuchen1204/GregTech-Food-Option-tab

Repository files navigation

GregTech Food Option Mod

这是一个基于 Forge 1.20.1 的 Minecraft Mod,旨在为 GregTech 相关的玩法添加食物选项。

如何添加新物品

要向此 Mod 添加新物品,请遵循以下步骤:

1. 定义新物品

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)。

2. 添加物品到创造模式物品页

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 ...

3. 创建物品纹理 (.png)

为你的新物品创建纹理图片。纹理文件必须是 .png 格式,并放置在以下路径:

src/main/resources/assets/gregtechfoodoption/textures/item/your_new_item_id.png

确保 your_new_item_id.png 与你在 ExampleMod.java 中为物品定义的 ID 相匹配。

4. 创建物品模型文件 (.json)

为你的新物品创建一个模型文件,并放置在以下路径:

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)

5. 添加语言翻译键

为了让你的新物品在游戏中显示正确的名称,你需要为它添加一个翻译键。打开或创建以下文件:

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> 的格式添加你的物品的键。
  • 你的新物品名称: 替换为你希望在游戏中显示的物品名称。

6. 调整物品图标大小和比例 (针对 gregtech_food_option_icon)

如果你需要调整创造模式物品页图标(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 轴上的缩放比例。
  • 调整大小:同时增大或减小 xyz 的值可以改变图标的整体大小。
  • 调整比例(扁平化):要使图标看起来更扁平,可以减小 y 值,同时保持 xz 的值相对较大。例如,[1.0, 0.5, 1.0] 会比 [1.0, 1.0, 1.0] 看起来更扁平。

调整后保存文件。

7. 重新构建 Mod

完成上述所有更改后,你需要重新构建你的 Mod。在项目根目录下运行以下 Gradle 命令:

./gradlew build

成功构建后,将生成的 Mod 文件(位于 build/libs 目录下,通常是 gregtechfoodoption-<版本号>.jar)放入 Minecraft 的 mods 文件夹中,然后启动游戏以查看你的新物品。

通过 KubeJS 添加物品到创造模式物品页

如果你想通过 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 模组的自定义物品栏中。

3. 创建物品纹理 (.png)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published