1 您所在的位置:网站首页 我的世界制作武器模组 1

1

2024-07-06 05:04| 来源: 网络整理| 查看: 265

我们首先在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 repairIngredient; private MItemTier(int p_i48458_3_, int p_i48458_4_, float p_i48458_5_, float p_i48458_6_, int p_i48458_7_, Supplier 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 ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Utils.MODID); public static final RegistryObject grassIngot = ITEMS.register("grass_ingot", ItemGrassIngot::new); public static final RegistryObject grassSword = ITEMS.register("grass_sword", ItemGrassSword::new); }

        并且添加语言文件

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

        让我们进游戏看看

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有