基于配置好的开发环境,详情参考上几篇文章。
下面制作一个有特殊能力的剑,如击中目标凋零效果、生命恢复效果,概率暴击等。
一、创建物品,配字配图
1、配字zh_cn.lang、en_us.lang
item.cool_sword.name=Cool Sword
item.cool_sword.desc=Lifesteal
item.cool_sword.name=倚天剑
item.cool_sword.desc=攻击时吸血,附加凋零效果,并有概率暴击
2、创建json模型
一键生成json文件,找到GenBlockJson.lua文件
添加代码:
GenItem("weapon", "cool_sword");
运行bat
下面完成贴图
可在MC百科找到原版贴图,将贴图改名存进textures文件内,找到对应的分类;
图片材质尽量为16×16或32×32
3、新建ItemCoolSword类
在item对应文件下新建java类
添加代码
将DIY的剑继承剑
package com.ZhangXiuyu.first.item.weapon;
import com.ZhangXiuyu.first.item.ItemSwordBase;
public class ItemCoolSword extends ItemSwordBase {
public ItemCoolSword(String name, ToolMaterial material) {
super(name, material);
}
}
4、加到物品列表
item文件下找到ModItems类
添加代码
public static final Item COOL_SWORD = new ItemCoolSword("cool_sword",Item.ToolMaterial.DIAMOND);
至此,完成了生成一个继承于剑类的特殊剑,效果跟普通钻石剑一样。
二、制作吸血效果
ItemCoolSword类增加
构造方法内增加
CommonFunctions.addToEventBus(this);
新建onAttack方法
后面将剑造成的效果写到方法的if里面
@SubscribeEvent
public void onAttack(LivingHurtEvent event){
World world = event.getEntity().world;
if(!world.isRemote){
EntityLivingBase hurtOne = event.getEntityLiving();
EntityLivingBase attacker = (EntityLivingBase) event.getSource().getTrueSource();
if(attacker!=null&&attacker.getHeldItemMainhand().getItem()==this){
}
}
}
接下来制作吸血效果
治疗:attacker.heal(数量) 1 = 半颗心
onAttack方法内if添加
attacker.heal(1);
三、制作凋零效果
施加buff、debuff:
EntityUtil.ApplyBuff(hurtOne,效果,等级-1,秒数);
例:攻击对敌方增加凋零,对自己增加生命恢复buff。
其他更多buff可Ctrl+鼠标左键点击MobEffects类,查看效果列表。
EntityUtil.ApplyBuff(hurtOne, MobEffects.WITHER,0,10f);
EntityUtil.ApplyBuff(attacker,MobEffects.REGENERATION,0,10f);
攻击小白后成功有了生命回复和凋零效果。
四、制作暴击效果
1、概率
if(attacker.getRNG.nextFloat()<概率)
2、获取伤害值
event.getAmount()
3、设置新伤害值
event.setAmount(新伤害值)
翻倍:event.setAmount(event.getAmount()*2);
例:攻击有二分之十概率伤害翻倍
if(attacker.getRNG().nextFloat()<0.5f){
event.setAmount(event.getAmount()*2f);
}