我们首先在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_);}@Overridepublic int getUses() {return this.uses;}@Overridepublic float getSpeed() {return this.speed;}@Overridepublic float getAttackDamageBonus() {return this.damage;}@Overridepublic int getLevel() {return this.level;}@Overridepublic int getEnchantmentValue() {return this.enchantmentValue;}@Overridepublic 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-5 Minecraft-Forge-1.16.5 Mod的开发(创建属于你的武器与工具)相关推荐

  1. 1-2 Minecraft-Forge-1.16.5 Mod的开发(第一个物品的实现)

    新建一个包 com.zunipe.items 在包里新建一个名为ItemLoader的类,该类将会用于MOD中物品的注册. 草锭的实现 再新建一个名为ItemGrassIngot的类,我们让他继承It ...

  2. Minecraft 1.16.5模组开发(四十七) 动画生物实体

    1.18.2动画生物实体教程 今天我们尝试在1.16.5中添加一个能够做各种动作的生物实体,由于使用的是geckolib进行开发,所以代码方面和1.18.2没有太大差别. 1.首先,为了实现这些效果, ...

  3. Minecraft Forge编程入门一 “环境搭建”

    什么是Forge Minecraft Forge is a Minecraft application programming interface (API) which allows almost ...

  4. Minecraft Forge:如何下载,安装和使用Forge

    If you are reading this article you probably already know Minecraft. We use Forge to manipulate the ...

  5. Minecraft Forge API 类帮助文档(1.12.2)

    前置文章: Minecraft 1.12.2MOD Forge开发帮助文档 (持续更新) 目录 Item类 Block类 ItemBlock类 AxisAlignedBB类 BlockRenderLa ...

  6. 我的世界服务器皮肤显示mod,【回归了】McMySkin Mod - Minecraft单机联机皮肤显示Mod...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 McMySkin (Minecraft单机&联机皮肤显示Mod) 目前已恢复正常,并且将官方网站改版完毕,Mod与以前一样支持所有版本! ---- ...

  7. C语言-apache mod(模块开发)-采用apxs开发实战(centos7.2 linux篇)

    C语言-apache mod(模块开发)-采用apxs开发实战(centos7.2 linux篇) 名词解释:apxs apxs is a tool for building and installi ...

  8. 我的世界 minecraft forge mod开发获取连续的方块

    大家在开发minecraft mod的时候可能会遇到一些需要获取连续的方块,所以我这里就给大家提供个思路,有建议或错误可以评论区指出 首先我们需要编写一个方法,用于获取一个方块连起来的方块. 思路:一 ...

  9. Minecraft 1.16.5模组开发(三十一) 自定义建筑生成(structure) (新)

    如果你学习过我们之前在1.12.2的建筑生成教程,那么对本次的教程的理解可能会相对轻松. 往期回顾 Minecraft 1.12.2模组开发(十四) 建筑生成 (structure generatio ...

最新文章

  1. PHP str_word_count
  2. 浅谈Linux服务器究竟设置多大交换分区合适
  3. 初始Spring boot和一个入门SpringBoot工程
  4. jquery源码解析:代码结构分析
  5. mingw + msys 上编译 ffmpeg
  6. 关于比较器Comparator排序时间的问题
  7. 单链表实现一元多项式相加_python面试系列 01如何实现单链表的逆序
  8. office插件开发_Office神插件,打开新世界的大门
  9. PostgreSQL Excel包含中文字符的数据导入方法
  10. java面向对象程序设计实验指导答案,Java面向对象程序设计实验指导与习题解答...
  11. 空调基础知识培训课件
  12. 【51单片机开发板】可调周期、占空比pwm工程
  13. 开发者应该了解的移动互联网行业内幕
  14. java 实现macd算法_macd 的java版本实现 包含测试用例
  15. 我对“渗透性测试”的理解
  16. PHP房贷计算器代码,等额本息,等额本金
  17. 网络通信安全基础和OpenSSL
  18. 一键获取谷歌网盘(Google Drive)真实直链下载地址
  19. vue 移动端校验(是否移动设备,安卓/IOS,是否微信浏览器)
  20. 企业如何做新闻软文发布? 软文推广和新闻源发布有何不同之处?

热门文章

  1. 访问学者博士后面签后的几种情况?
  2. 怎样利用博客推广自己的网店?
  3. 【虚拟机】无法连接虚拟设备 sata0:0,因为主机上没有相应的设备。 您要在每次开启此虚拟机时都尝试连接此虚拟设备吗?
  4. 计算机电缆能代替控制电缆吗,如何区分:计算机电缆与控制电缆!
  5. 游戏类型常见英文缩写和释义
  6. Python爬取美桌网美女图片
  7. 吾日三省吾身:三种光
  8. 声表面波传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  9. 【听】《斯坦福极简经济学》,国家调控
  10. 如何判断一个 js 变量是数组类型