Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Bows;
- import TheMod.Main;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.resources.model.ModelBakery;
- import net.minecraft.client.resources.model.ModelResourceLocation;
- import net.minecraft.enchantment.Enchantment;
- import net.minecraft.enchantment.EnchantmentHelper;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.item.EnumAction;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemBow;
- import net.minecraft.item.ItemStack;
- import net.minecraft.stats.StatList;
- import net.minecraft.world.World;
- import net.minecraftforge.fml.common.registry.GameRegistry;
- import net.minecraftforge.fml.relauncher.Side;
- import net.minecraftforge.fml.relauncher.SideOnly;
- public class TheModTitaniteBow extends ItemBow
- {
- public static final String[] bowPullIconNameArray = new String[] {"pulling_0", "pulling_1", "pulling_2"};
- public TheModTitaniteBow(String name) {
- super();
- this.setUnlocalizedName(name);
- this.setCreativeTab(Main.tabTheMod);
- this.setMaxDamage(300);
- GameRegistry.registerItem(this, name);
- }
- public void RegisterRenderer(String modelName)
- {
- System.out.println("REGISTERING ITEM RENDERER: " + modelName);
- Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(this, 0, new ModelResourceLocation(Main.MODID+":"+modelName, "inventory"));
- }
- @Override
- public ModelResourceLocation getModel(ItemStack stack, EntityPlayer player, int useRemaining) {
- ModelResourceLocation mrl = new ModelResourceLocation("tm:titanite_bow");
- if(player.getItemInUse() != null) {
- if(useRemaining >= 18) {
- mrl = new ModelResourceLocation("tm:titanite_bow_pull2", "inventory");
- } else if(useRemaining > 13) {
- mrl = new ModelResourceLocation("tm:titanite_bow_pull1", "inventory");
- } else if(useRemaining > 0) {
- mrl = new ModelResourceLocation("tm:titanite_bow_pull0", "inventory");
- }
- }
- return mrl;
- }
- @SideOnly(Side.CLIENT)
- public void initModel() {
- ModelResourceLocation titanitepull2 = new ModelResourceLocation("tm:titanite_bow_pull2", "inventory");
- ModelResourceLocation titanitepull1 = new ModelResourceLocation("tm:titanite_bow_pull1", "inventory");
- ModelResourceLocation titanitepull0 = new ModelResourceLocation("tm:titanite_bow_pull0", "inventory");
- ModelBakery.registerItemVariants(Main.Titanite_Bow, titanitepull2, titanitepull1, titanitepull0);
- }
- /**
- * Called when the player stops using an Item (stops holding the right mouse button).
- */
- public void onPlayerStoppedUsing(ItemStack stack, World worldIn, EntityPlayer playerIn, int timeLeft)
- {
- boolean flag = playerIn.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0;
- if (flag || playerIn.inventory.hasItem(Main.Titanite_Arrow))
- {
- int i = this.getMaxItemUseDuration(stack) - timeLeft;
- net.minecraftforge.event.entity.player.ArrowLooseEvent event = new net.minecraftforge.event.entity.player.ArrowLooseEvent(playerIn, stack, i);
- if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return;
- i = event.charge;
- float f = (float)i / 20.0F;
- f = (f * f + f * 2.0F) / 3.0F;
- if ((double)f < 0.1D)
- {
- return;
- }
- if (f > 1.0F)
- {
- f = 1.0F;
- }
- EntityTitaniteArrow entityTitaniteArrow = new EntityTitaniteArrow(worldIn, playerIn, f * 2.0F);
- if (f == 1.0F)
- {
- entityTitaniteArrow.setIsCritical(true);
- }
- int j = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, stack);
- if (j > 0)
- {
- entityTitaniteArrow.setDamage(entityTitaniteArrow.getDamage() + (double)j * 0.5D + 0.5D);
- }
- int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, stack);
- if (k > 0)
- {
- entityTitaniteArrow.setKnockbackStrength(k);
- }
- if (EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, stack) > 0)
- {
- entityTitaniteArrow.setFire(100);
- }
- stack.damageItem(1, playerIn);
- worldIn.playSoundAtEntity(playerIn, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
- if (flag)
- {
- entityTitaniteArrow.canBePickedUp = 2;
- }
- else
- {
- playerIn.inventory.consumeInventoryItem(Main.Titanite_Arrow);
- }
- playerIn.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(this)]);
- if (!worldIn.isRemote)
- {
- worldIn.spawnEntityInWorld(entityTitaniteArrow);
- }
- }
- }
- /**
- * Called when the player finishes using this Item (E.g. finishes eating.). Not called when the player stops using
- * the Item before the action is complete.
- */
- public ItemStack onItemUseFinish(ItemStack stack, World worldIn, EntityPlayer playerIn)
- {
- return stack;
- }
- /**
- * How long it takes to use or consume an item
- */
- public int getMaxItemUseDuration(ItemStack stack)
- {
- return 72000;
- }
- /**
- * returns the action that specifies what animation to play when the items is being used
- */
- public EnumAction getItemUseAction(ItemStack stack)
- {
- return EnumAction.BOW;
- }
- /**
- * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
- */
- public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn)
- {
- net.minecraftforge.event.entity.player.ArrowNockEvent event = new net.minecraftforge.event.entity.player.ArrowNockEvent(playerIn, itemStackIn);
- if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return event.result;
- if (playerIn.capabilities.isCreativeMode || playerIn.inventory.hasItem(Main.Titanite_Arrow))
- {
- playerIn.setItemInUse(itemStackIn, this.getMaxItemUseDuration(itemStackIn));
- }
- return itemStackIn;
- }
- /**
- * Return the enchantability factor of the item, most of the time is based on material.
- */
- public int getItemEnchantability()
- {
- return 1;
- }
- }
Add Comment
Please, Sign In to add comment