【Forge】Minecraft 1.7.10 Mod开发研究 - 黑猫背包MOD 【04-铺垫三篇才进正题你说你有意思没意思】

Mod已经创建好了,现在该把内容添加进来了。

首先建一个类来统一管理Mod中所有的物品的实例和实例的初始化。

建包的事就不提了,看着建吧。

public class ModItems {
    public static ItemKuroNekoBag kuroNekoBag;

    public static void init() {
        kuroNekoBag = new ItemKuroNekoBag();
    }
}

直接在主类中的preInit方法里用起来。

@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
    ModItems.init();
}

然后把上面的ItemKuroNekoBag给创建出来,MC中的物品基类是net.minecraft.item.Item类,所以继承这个类。

MC的命名方式是Item×××、Block×××,可以敲个item看看自动提示,应该是所有物品都有,可以根据需要继承现成的物品。

建完类给一个无参构造方法,然后在构造方法里设置物品的各种属性,其中大部分是set×××。

setUnlocalizedName(NAME);
setCreativeTab(CreativeTabs.tabTools);
setMaxStackSize(1);
setTextureName(Constants.MOD_ID + ":" + NAME);

像这样

setCreativeTab决定了把这个道具放到创造模式的物品栏中的哪一个标签页里,CreativeTabs是个枚举类,还可以自己创建,不过暂时用不着。

setMaxStackSize决定了这个物品最大可以堆叠多少个,背包肯定不能堆叠,所以就给个1。

然后是两个比较麻烦的方法,先说setTextureName,这个方法用来设置物品的材质,接受的参数格式是主类中用注解设置的modID加上一个冒号再加上图片的名字,不包含后缀名。

第二篇里说了工程目录中除了放代码的java文件夹还有一个放资源文件的resources文件夹,里面一开始是空的,需要自己建路径。大部分文件都需要放到assets文件夹下,在assets文件夹下需要建立一个以modID命名的文件夹作标识,而材质文件又要放到其中的textures文件夹下,现在需要的物品材质还要放到更深一层的items文件夹下,这些文件夹自然是要自己来建的。

于是一顿创建之后就成了这样:assets/nekobags/textures/items/kuronekobag.png。

因为我材质的文件名和物品的名字弄成了一样的,所以就直接用了常量,如果图片名不一样话就照着改。

之后再说setUnlocalizedName这个方法。

和Android的处理方式差不多,为了多语言兼容,同一个名字的各种翻译是统一用配置文件来管理的,这个方法设置的顾名思义是一个统一的标志,我这里直接叫kuronekobag。

然后创建语言文件,同样在resources文件夹下,像这样:assets/nekobags/lang/

然后在这个文件夹下面创建各语种的语言文件,我这里只用中英两种,en_US.lang和zh_CN.lang,需要其他语言依此类推,看不懂文件名的话需要自行补语言代码知识。

里面是各种键值对,比如这样:

item.kuronekobag.name=黑猫背包

如果是方块的名称的话就把item改成tile。

这样一个物品就创建好了,然后需要把它注册到游戏里面。

在物品构造方法里加上一行代码:

GameRegistry.registerItem(this, NAME);

保存编译运行,这个黑猫背包就可以在创造模式物品栏里的工具那栏最下面找到了。

时间: 2024-11-10 11:37:39

【Forge】Minecraft 1.7.10 Mod开发研究 - 黑猫背包MOD 【04-铺垫三篇才进正题你说你有意思没意思】的相关文章

【Forge】Minecraft 1.7.10 Mod开发研究 - 黑猫背包MOD 【06-给你唱一首岁月的歌】

老实说我已经忘了这个mod是怎么写出来的了. 所以下面的代码不能运行是非常正常的. 上回书说到,我们处理了玩家拿着背包右键时触发的事件,发送了一条打开背包窗口的命令,但是背包窗口还没有写,这回就来解决这个问题. 这次因为嵌套关系太多,所以我按执行顺序反过来说. 那么先不管上次没有打开的那个GUI. MC中的每一个能放进物品的容器,不管是箱子.熔炉还是酿造台,各自都持有一个自己的内容空间(Inventory)实例,在这个内容空间中各自保存自己的内容物. 内容空间的基类是InventoryBasic

【Forge】Minecraft 1.7.10 Mod开发研究 - 黑猫背包MOD 【01-引言】

刚学没多久,网上也没多少MOD开发的教程,只能自己一个接口一个接口地看过去. 所以叫开发研究. 重点是研究. 意思是要是写到一半发现写不下去了我就弃坑. 比我靠谱的人: http://www.hakugyokurou.net/wordpress/?page_id=126 http://www.261day.com/minecraft-forge%E6%95%99%E7%A8%8B/ http://www.orangetutorial.com/tutorial-list/#sthash.dIcQE

【Forge】Minecraft 1.7.10 Mod开发研究 - 黑猫背包MOD 【05-一个周不更新根本说明不了什么我的字典里就没有太监这两个字不是字典大小的问题你不要说那些没用的】

然后该给背包添加功能了,背包的功能说起来很简单,无非就是右键打开一个和箱子长得差不多的窗口,然后把东西放进去保存起来. 然后还有一些附加事项,比如不能把自己放进自己里面,最好也不允许把同类放进自己里面,那样容量就以次方倍的速度增加,一个背包里就能放无限个道具了. 于是首先处理背包的右键事件. Item类自带一个方法,名字一看就懂,重写掉: @Override public ItemStack onItemRightClick(ItemStack itemStack, World world, E

【Forge】Minecraft 1.7.10 Mod开发研究 - 黑猫背包MOD 【02-创建】

开发环境部署不提. 记得备好VPN. 一把辛酸泪. 工程目录下有两个文件夹,src/main/java和src/main/resources,前者用于放代码,后者用于放各种资源文件. 首先MOD需要一个主类,建包建好. 于我若是: mlxy.nekobags.NekoBags public class NekoBags { } 然后用注解的方式说明这个类就是我的MOD的主类. @Mod(modid="nekobags", name="Neko Bags", vers

【Forge】Minecraft 1.7.10 Mod开发研究 - 黑猫背包MOD 【03-小刘老不干正事你们做家长的好好管管他不然这孩子就废了】

经过上一篇的配置,Mod已经显示在列表里了,但是下面还有两行小字,表示没Mod信息,打你Mod作者一顿让他把mcmod.info给填上. 于是来把Mod信息填上. src/main/resources文件夹在配置的时候应该已经自动生成了一个mcmod.info文件,没有的话自己建一个也无妨. 里面的内容是一个json列表,每一个列表项是一个Mod的信息,看不懂格式的话需要自己去补json知识. json大法好,退X保平安. 人在做,天在看,闭合标签留隐患. 解析失败天地灭,早换json保平安.

【Win 10应用开发】如何知道当前APP在哪个平台设备上运行

[Win 10应用开发]如何知道当前APP在哪个平台设备上运行 在做Win10开发的时候,我们可能经常会需要获得当前程序在在哪个平台设备上运行,用于UI和相关API的调用,那么可以通过什么方式知道当前APP运行的平台呢? 今天这里提供两个方法给大家做参考: 方法一:DeviceFamily 通过Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily,来获取当前的平台设备,目前只可以得到两个值Windows.Mobile或Wind

高德地图JavaScript API开发研究

原文:高德地图JavaScript API开发研究 高德地图JavaScript API是一套用JavaScript 语言编写的应用程序接口,可以通过各种API接口向地图添加内容,创建功能丰富.交互性强的地图应用.高德地图JavaScript API 提供了大量的实用工具和富有特色的插件功能,并提供了搜索和路线规划等服务. 1.首先 2.然后 3.最后就是看官方文档开发 高德地图API使用介绍:http://lbs.amap.com/api/javascript-api/guide-2/map_

GPS北斗双模技术应用开发研究—数据结构扩展

GPS北斗双模技术应用开发研究-数据结构扩展 还是从gps.h头文件入手,首先 GpsSvStatus结构体需要改造,GpsSvStatus当时设计的时候是考虑存储gps卫星信息的,但是我们现在是要存储双模的数据,因此我们需要扩展这个数据结构,那怎么扩展呢? 当然要代价小一点,不能完全推倒重来的,笔者想到的就是增加一个北斗卫星数量的变量,以及北斗的epemeris.almanac.还有一个定位的mask,以前数据结构里面的成员全部用着gps存储,这样就相互独立了,但是sv_list笔者就偷懒共用

物理小球开发研究委员会小组介绍

Section 1. 小组成员 张  慧(2016012019) ←组长 顾思宇(2016011993) 郑春雨(2016012011) 师浩然(2016012031) 郑  栋(2016012059) 范彦澜(2016012097) 小组名称 物理小球开发研究委员会 项目描述 寓教于乐,轻松学习,让孩子爱上学物理 队员档案 张慧 风格:时而精益求精,时而放弃治疗 技术:html.css.js.jq,美工 编程的兴趣:做网页 希望的软工角色:美工和前端 一句话宣言:I love study,st