Hoe248
Item类是物品类。

所有物品都是Item类的实例。(表的一行)

Item与方块的一个明显的区别,Item貌似不能摆放出来。只能丢出来。(目测这就是衣架MOD的难度)
要把一个物品Item变为一个Block方块


Item类里面有什么东西。(直观点,Item类里面有1500多行代码)
我们走起

第一步:构造方法。
构造方法会对一些属性进行初始化。(我觉得这些属性是比较重要的。)所以我们先看Item类的构造方法
~~~~~~
无语。
Item的构造方法为默认。里面什么都没有。。{:10_532:}
也就是说,Item类里面没有那个属性是必要的。由于是默认的,构造函数没有收到保护。可以直接调用。

第二步:set方法。
类中的属性一般会得到保护,只能通过公共方法来访问。
而set方法很多情况下是为了单独修改一个属性而出现的。
而这些属性,我觉的比较有价值。
一共有12个。而且有个古怪的地方。后面再说。
找出这些用set方法改变的属性。

第三部:判断这些属性的类型,不认识的类型不看

bFull3D : boolean
用来设置是否全部实体化。(这貌似与拿在手上有关。)
没有实体化的Item拿在手上时,是一张卡片而已?(可否这样理解??)
setFull3D()

古怪的地方来了。
Item类的SET方法,大多是有返回值的方法,而且返回的是自身。[目测是与调用Item类的方法有关。]

hasSubtypes : boolean
用于设置是否有子类。
染料,羊毛这些都是羊毛,但是有不同颜色。
只是说这个物品有子类而已,并不是说你填Ture就会自动生成子类。
setHasSubtypes(boolean)

maxDamage : int
设置物体的最大耐久???还没尝试
setMaxDamage(int)

maxStackSize : int
最大堆叠数量,一个格子可以放多少个这个物品。不知道为什么Block里面找不到这个属性。
用:setMaxStackSize(int)

canRepair : boolean
能否被修复  默认是可以的。
setNoRepair()
使物体不可修复。令canRepair的值为False

关于物体的可修复还没完
还有两个方法要涉及。

isDamageable() : boolean
这个方法判断物体是否易损坏的。
内部逻辑:如果maxDamage>0(有耐久上限)而且hasSubtypes=true(有子类)就是易损坏的了。
什么逻辑?????????

isRepairable() :boolean
这个方法判定物体是否可修理
内部逻辑:如果isDamageable=true(易损坏)并且canRepair=ture(可修理)。返回true,即可修理
这个逻辑我还能接受。

这两个方法相当于令到Item类拥有“是否易损坏”“是否可修理”两个新的属性。
而这两个属性是通过maxDamage_耐久上限hasSubtypes_是否有子类canRepair_是否能修理3个属性来控制的。



ZGA
这个学习日记也太高端了点吧.....
            ——你说,我是新手么?

白安西
没看懂一个字QAQ

Hoe248
本帖最后由 Hoe248 于 2014-8-28 12:29 编辑

//想法保留:控制物品的可修复次数应该要用到上述的属性和方法。


potionEffect : String
potionEffect_药剂效果

set:setPotionEffect(String):Item
get:  getPotionEffect(ItemStack):String

涉及方法:
isPotionIngredient(ItemStack) :boolean
isPotionIngredient_是否药剂要素
内部逻辑:如果potionEffect不等于null(什么都没有的意思)返回true

//Item中暂时没有发现其他关于药剂的。

//关键词:药剂
(lin212提供)索引: 藥水(物品):net.minecraft.item.ItemPotion
                                       藥水效果:net.minecraft.potion.Potion            



Hoe248
ZGA 发表于 2014-8-28 11:58
这个学习日记也太高端了点吧.....
            ——你说,我是新手么?

非常基础,不信你问版主,比我还新。。

日记嘛,自己看得。

ZGA
Hoe248 发表于 2014-8-28 12:17
非常基础,不信你问版主,比我还新。。

日记嘛,自己看得。

可是我根本看不懂→_→
            ——你说,我是新手么?

SilverMing
本帖最后由 lin212 于 2014-8-28 12:23 编辑
Hoe248 发表于 2014-8-28 12:15
//想法保留:控制物品的可修复次数应该要用到上述的属性和方法。

藥水(物品):net.minecraft.item.ItemPotion
藥水效果:net.minecraft.potion.Potion
補充。    public static final Potion digSlowdown = (new Potion(4, true, 4866583)).setPotionName("potion.digSlowDown").setIconIndex(3, 0);
當中的(new Potion(4, true, 4866583))的true是判定該效果是否負面

Hoe248
iconString : String
iconString_图标地址

set:
setTextureName(String):Item
get:getIconString():String

说明:iconString用于设置素材图片地址。

//Item类中没有涉及iconString的成员方法

//
set为设置这个属性的方法
get为获取这个属性内容的方法
//

Hoe248
unlocalizedName : String
未本地化名字
setUnlocalizedName(String) :Item

//这个属性Block也有,暂时还不清楚意义。

涉及方法
getIconString()
当iconString==null时,会返回unlocalizedName(即用此来代替iconString)

Hoe248
lin212 发表于 2014-8-28 12:20
藥水(物品):net.minecraft.item.ItemPotion
藥水效果:net.minecraft.potion.Potion
補充。    public stat ...

现在就是这个问题,一大串代码我看得懂什么意思,但是我完全不知道有什么用,只能一个一个去找

SilverMing
Hoe248 发表于 2014-8-28 12:34
现在就是这个问题,一大串代码我看得懂什么意思,但是我完全不知道有什么用,只能一个一个去找 ...

我在网上找到这个教程:
http://www.minecraftforge.net/wiki/Potion_Tutorial
雖然不是1.7的,但大部分應該沒有改动

第一页 上一页 下一页 最后一页