Minecraft 1.12.2模组开发(二十一) 物品点击事件(发射火球、召唤生物)
生活随笔
收集整理的這篇文章主要介紹了
Minecraft 1.12.2模组开发(二十一) 物品点击事件(发射火球、召唤生物)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們今天對于物品右鍵點擊的事件進行專門設置
1. items 包中新建 Item類名(以 ItemGaisRiser作為演示)
對新建的 ItemGaisRiser.java 進行編輯
package com.Joy187.newmod.items;import com.Joy187.newmod.entity.EntityGaia;import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityLargeFireball; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumHand; import net.minecraft.util.math.Vec3d; import net.minecraft.world.World;public class ItemGaiaRiser extends ItemBase{public ItemGaiaRiser(String name,CreativeTabs tab) {super(name, tab);} }2.發射火球
在Minecraft中,火球、箭矢等物品其實是作為一個生物(Entity)實體被召喚出來的,所以我們要定義一個右鍵召喚火球生物的函數ActionResult<ItemStack> onItemRightClick(物品右鍵功能)
在ItemGaisRiser.java 中添加函數
@Overridepublic ActionResult<ItemStack> onItemRightClick(World worldIn,EntityPlayer playerIn, EnumHand handIn) {ItemStack item = playerIn.getHeldItem(handIn);Vec3d aim = playerIn.getLookVec();EntityGaia g = new EntityGaia(worldIn, playerIn, 1, 1, 1);g.setPosition(playerIn.posX+ aim.x *1.5D, playerIn.posY + aim.y *1.50, playerIn.posZ + aim.z*1.50);g.accelerationX = aim.x * 0.1; g.accelerationY = aim.y * 0.1;g.accelerationZ = aim.z * 0.1;worldIn.spawnEntity(g);item.damageItem(1, playerIn);return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, item);}保存設置,進入游戲
拿出我們的物品點擊右鍵,發現火球真正的被創造了出來
3.召喚生物
區別于可拋擲類(throwable)生物,一般生物的生成不需要加速度(當然你如果想要做生物發射器什么的也可以233),所以函數可以這樣寫
@Overridepublic ActionResult<ItemStack> onItemRightClick(World worldIn,EntityPlayer playerIn, EnumHand handIn) {ItemStack item = playerIn.getHeldItem(handIn);Vec3d aim = playerIn.getLookVec();EntityGaia g = new EntityGaia(worldIn, playerIn, 1, 1, 1);g.setPosition(playerIn.posX+ aim.x *1.5D, playerIn.posY + aim.y *1.50, playerIn.posZ + aim.z*1.50);worldIn.spawnEntity(g);item.damageItem(1, playerIn);return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, item);}4.在ModItems中對我們剛剛做好的物品進行聲明:
public class ModItems {public static final List<Item> ITEMS = new ArrayList<Item>();//聲明我們的物品,用的類是第一部中的物品類ItemGaiaRiserpublic static final Item GAIAB = new ItemGaiaRiser("gaiab", IdlFramework.ITEM_TAB);//你可以往下續寫其他功能物品public static final Item CIGAR = new ItemCigar("cigar", IdlFramework.ITEM_TAB);}保存文件 -> 運行游戲
蓋亞!!!
總結
以上是生活随笔為你收集整理的Minecraft 1.12.2模组开发(二十一) 物品点击事件(发射火球、召唤生物)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 周星驰vs韩寒vs宁浩…Python告诉
- 下一篇: 做php外包常用的框架