1-5 Minecraft-Forge-1.16.5 Mod的开发(创建属于你的武器与工具)

我们首先在com.zunipe.item下创建一个名为MItemTier的枚举类

        让这个类实现IItemTier接口

package com.zunipe.items.tier;

import com.zunipe.items.ItemLoader;
import net.minecraft.item.IItemTier;
import net.minecraft.item.crafting.Ingredient;
import net.minecraft.util.LazyValue;

import java.util.function.Supplier;

public enum MItemTier implements IItemTier
{
    GRASS(0, 100, 1.6F, 0.0F, 15, () -> {
    return Ingredient.of(ItemLoader.grassIngot.get());
    });


    private final int level;
    private final int uses;
    private final float speed;
    private final float damage;
    private final int enchantmentValue;
    private final LazyValue<Ingredient> repairIngredient;

    private MItemTier(int p_i48458_3_, int p_i48458_4_, float p_i48458_5_, float p_i48458_6_, int p_i48458_7_, Supplier<Ingredient> p_i48458_8_)
    {
        this.level = p_i48458_3_;
        this.uses = p_i48458_4_;
        this.speed = p_i48458_5_;
        this.damage = p_i48458_6_;
        this.enchantmentValue = p_i48458_7_;
        this.repairIngredient = new LazyValue<>(p_i48458_8_);
    }


    @Override
    public int getUses() {
        return this.uses;
    }

    @Override
    public float getSpeed() {
        return this.speed;
    }

    @Override
    public float getAttackDamageBonus() {
        return this.damage;
    }

    @Override
    public int getLevel() {
        return this.level;
    }

    @Override
    public int getEnchantmentValue() {
        return this.enchantmentValue;
    }

    @Override
    public Ingredient getRepairIngredient() {
        return this.repairIngredient.get();
    }
}

         我们看到这一段代码

GRASS(0, 100, 1.6F, 0.0F, 15, () -> {
    return Ingredient.of(ItemLoader.grassIngot.get());
    });

        这里有6个参数,第一个是工具的等级,在原版中木头和金是0级,石头则是1,铁是2,钻石是3,下界合金是4。

        第二个参数则是工具的耐久,第三个是攻击的速度,第四个则是攻击伤害,第五个是有关附魔的能力值,能力值越高附魔得到的属性就越好,在原版中金的附魔属性最高,有22,这里我则设置为15和原版中木头的一样。

        第六个则是维修这个工具或武器所需要的材料。

       我们有了草锭,肯定少不了草剑,新建ItemGrassSword类

ItemGrassSword

package com.zunipe.items;

import com.zunipe.groups.GroupLoader;
import com.zunipe.items.tier.MItemTier;
import net.minecraft.item.Item;
import net.minecraft.item.SwordItem;

public class ItemGrassSword extends SwordItem
{
    public ItemGrassSword()
    {
        super(MItemTier.GRASS, 2, 1.0F, new Item.Properties().tab(GroupLoader.moreItemGroup));
    }
}

        构造函数中设置了武器的属性,攻击力,攻击速度以及创造物品栏。

        可以发现,关于这个攻击力我们在MItemTier里面也有设置,为什么会存在两个呢?

        我们进入继承的SwordItem里看看就会发现,武器真正的攻击力是二者的和。

this.attackDamage = (float)p_i48460_2_ + p_i48460_1_.getAttackDamageBonus();

        所以我们的草剑的攻击力则是0+2+1=3(这里的1为物品的基础攻击力)

        我们同样在ItemLoader里面注册我们的草剑。

public class ItemLoader
{
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Utils.MODID);

    public static final RegistryObject<Item> grassIngot = ITEMS.register("grass_ingot", ItemGrassIngot::new);
    public static final RegistryObject<Item> grassSword = ITEMS.register("grass_sword", ItemGrassSword::new);
}

        并且添加语言文件

{
  "item.moreitem.grass_ingot": "草锭",
  "itemGroup.moreItemGroup": "更多物品",
  "item.moreitem.grass_sword" : "草剑"
}

        让我们进游戏看看

        武器的材质可以自己添加。 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zunipe0907

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

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

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

打赏作者

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

抵扣说明:

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

余额充值