Minecraft 1.12.2模组开发(十) 食物制作

这篇博客介绍了如何在Minecraft中创建自定义食物MOD,包括基础食物类`FoodBase`的实现,设置食物属性如恢复量和饱和度,并在物品栏中的位置。此外,还展示了如何为食物添加模型、材质和本地化名称,以及如何通过`EffectFoodBase`类制作具有效果的食物,例如给予玩家药水效果。最后,详细说明了从新建类到在游戏中实际应用的完整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们本次来制作一款食物(food)

1.在items包下 新建 food 包

cr1.png

在food 包中新建 FoodBase 类:

cr2.png

public FoodBase(String name(食物名称), int amount(恢复量), float saturation(饱和度), boolean iswolfFood(狼是否可以吃),CreativeTabs tab(放在物品栏的位置))
在 FoodBase.java 中进行编写:
package com.Joy187.newmod.items.food;

import com.Joy187.newmod.Main;
import com.Joy187.newmod.init.ModItems;
import com.Joy187.newmod.util.IHasModel;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemFood;

public class FoodBase extends ItemFood implements IHasModel{
	public FoodBase(String name, int amount, float saturation, boolean iswolfFood,CreativeTabs tab) {
		super( amount, saturation, iswolfFood );
		setUnlocalizedName(name);
		setRegistryName(name);
		setCreativeTab(tab);
		
		ModItems.ITEMS.add(this);
	}
	
	@Override
	public void registerModels() {
		Main.proxy.registerItemRenderer(this, 0, "inventory");
	}
}
在ModItems中注册我们的食物:
	public static final ItemFood XIAOHANBAO = new FoodBase("secret_tiny_burger", 18, 2.5f, false, CreativeTabs.FOOD);

2.在 models.item 下新建.json文件 -> 编写物品的信息

{
	"parent": "item/generated",
	"textures": {
		"layer0": "joymod:items/secret_tiny_burger"
	}
}

3.将食物材质拖入 textures.items 包中:

cr3.png

4.在en_us.lang 文件中添加食物游戏中的名称

cr4.png

5.保存所有文件 -> 运行游戏

游戏中成功出现食物

cr5.png

食物吃下去后恢复5点饱食度,与最初设定完美符合!

cr6.png

如果要制作具有效果的食物,我们可以在food包中新建一个 EffectFoodBase 类

在EffectFoodBase.java 中编写:
package com.Joy187.newmod.items.food;

import com.Joy187.newmod.util.IHasModel;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;

public class EffectFoodBase extends FoodBase implements IHasModel{
	
	PotionEffect effect;
	public EffectFoodBase(String name, int amount, float saturation, boolean iswolfFood,CreativeTabs tab, PotionEffect effect) {
		super(name, amount, saturation, iswolfFood, tab);
		//setAlwaysEdible();
		this.effect=effect;
	}
	
	@Override
	protected void onFoodEaten(ItemStack stack,World worldIn, EntityPlayer player) {
		if (!worldIn.isRemote)
		{
			player.addPotionEffect(new PotionEffect(effect.getPotion(), effect.getDuration(), effect.getAmplifier(), effect.getIsAmbient(), effect.doesShowParticles()));
		}
	}
	
	@SideOnly(Side.CLIENT)
	public boolean hasEffect( ItemStack stack)
	{
		return true;
	}
}
之后在ModItem中添加食物,重复之前的步骤即可。

cr8.png

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jay_fearless

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值