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_);}@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-2 Minecraft-Forge-1.16.5 Mod的开发(第一个物品的实现)
新建一个包 com.zunipe.items 在包里新建一个名为ItemLoader的类,该类将会用于MOD中物品的注册. 草锭的实现 再新建一个名为ItemGrassIngot的类,我们让他继承It ...
- Minecraft 1.16.5模组开发(四十七) 动画生物实体
1.18.2动画生物实体教程 今天我们尝试在1.16.5中添加一个能够做各种动作的生物实体,由于使用的是geckolib进行开发,所以代码方面和1.18.2没有太大差别. 1.首先,为了实现这些效果, ...
- Minecraft Forge编程入门一 “环境搭建”
什么是Forge Minecraft Forge is a Minecraft application programming interface (API) which allows almost ...
- Minecraft Forge:如何下载,安装和使用Forge
If you are reading this article you probably already know Minecraft. We use Forge to manipulate the ...
- Minecraft Forge API 类帮助文档(1.12.2)
前置文章: Minecraft 1.12.2MOD Forge开发帮助文档 (持续更新) 目录 Item类 Block类 ItemBlock类 AxisAlignedBB类 BlockRenderLa ...
- 我的世界服务器皮肤显示mod,【回归了】McMySkin Mod - Minecraft单机联机皮肤显示Mod...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 McMySkin (Minecraft单机&联机皮肤显示Mod) 目前已恢复正常,并且将官方网站改版完毕,Mod与以前一样支持所有版本! ---- ...
- C语言-apache mod(模块开发)-采用apxs开发实战(centos7.2 linux篇)
C语言-apache mod(模块开发)-采用apxs开发实战(centos7.2 linux篇) 名词解释:apxs apxs is a tool for building and installi ...
- 我的世界 minecraft forge mod开发获取连续的方块
大家在开发minecraft mod的时候可能会遇到一些需要获取连续的方块,所以我这里就给大家提供个思路,有建议或错误可以评论区指出 首先我们需要编写一个方法,用于获取一个方块连起来的方块. 思路:一 ...
- Minecraft 1.16.5模组开发(三十一) 自定义建筑生成(structure) (新)
如果你学习过我们之前在1.12.2的建筑生成教程,那么对本次的教程的理解可能会相对轻松. 往期回顾 Minecraft 1.12.2模组开发(十四) 建筑生成 (structure generatio ...
最新文章
- PHP str_word_count
- 浅谈Linux服务器究竟设置多大交换分区合适
- 初始Spring boot和一个入门SpringBoot工程
- jquery源码解析:代码结构分析
- mingw + msys 上编译 ffmpeg
- 关于比较器Comparator排序时间的问题
- 单链表实现一元多项式相加_python面试系列 01如何实现单链表的逆序
- office插件开发_Office神插件,打开新世界的大门
- PostgreSQL Excel包含中文字符的数据导入方法
- java面向对象程序设计实验指导答案,Java面向对象程序设计实验指导与习题解答...
- 空调基础知识培训课件
- 【51单片机开发板】可调周期、占空比pwm工程
- 开发者应该了解的移动互联网行业内幕
- java 实现macd算法_macd 的java版本实现 包含测试用例
- 我对“渗透性测试”的理解
- PHP房贷计算器代码,等额本息,等额本金
- 网络通信安全基础和OpenSSL
- 一键获取谷歌网盘(Google Drive)真实直链下载地址
- vue 移动端校验(是否移动设备,安卓/IOS,是否微信浏览器)
- 企业如何做新闻软文发布? 软文推广和新闻源发布有何不同之处?