食物

在这一节中我们将会在Minecraft世界中添加一个新的食物:黑曜石苹果,吃了这个苹果以后你可以回复饥饿,但是会中毒。和很多人想象的不一样,食物并不是单独的一个东西,对于Minecraft来说,食物只是一种特殊的物品而已。

同样的我们先来创建一个类,让这个类继承Item

public class ObsidianApple extends Item {
    private static final Food food = (new Food.Builder())
            .saturation(10)
            .hunger(20)
            .effect(() -> new EffectInstance(Effects.POISON, 3 * 20, 1), 1)
            .build();

    public ObsidianApple() {
        super(new Properties().food(food).group(ItemGroup.FOOD));
    }
}

我们一行一行的解释。

我们创建了一个Food类型的变量,这个变量规定了这个这个食物的一些属性,比如:saturation方法设置了饱食度,hunger设置了回复的饥饿度,effect方法设置了吃食物时可能会有的药水效果,这里我们设置的效果是「中毒」,持续时间是60个Tick,药水等级一级。其中第二个参数代表触发效果的可能性(想想原版的生鸡肉),这里我们设置成1代表100%触发。

接下去就是构造方法,想必大家已经很熟悉了,唯一新的一点就是.food(food),这个方法表明了物品是一个食物,最后我们把这个物品放在了「食物」创造模式物品栏里。

然后我们注册我们的食物,注册名是obsidian_apple:

public class ItemRegistry {
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Utils.MOD_ID);
    public static final RegistryObject<Item> obsidianApple = ITEMS.register("obsidian_apple", ObsidianApple::new);
}

然后添加模型obsdian_ingot.json:

{
  "parent": "item/generated",
  "textures": {
    "layer0": "boson:item/obsidian_apple"
  }
}

然后是材质obsidian_apple.png

obsidian_apple

拿出你的苹果试着吃吃看吧。

image-20200427165949417

源代码