Advertisement
robin4002

ItemTestBow

Jan 19th, 2014
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.92 KB | None | 0 0
  1. package tutoriel.common;
  2.  
  3. import net.minecraft.client.renderer.texture.IconRegister;
  4. import net.minecraft.enchantment.Enchantment;
  5. import net.minecraft.enchantment.EnchantmentHelper;
  6. import net.minecraft.entity.player.EntityPlayer;
  7. import net.minecraft.entity.projectile.EntityArrow;
  8. import net.minecraft.item.EnumAction;
  9. import net.minecraft.item.Item;
  10. import net.minecraft.item.ItemBow;
  11. import net.minecraft.item.ItemStack;
  12. import net.minecraft.util.Icon;
  13. import net.minecraft.world.World;
  14. import net.minecraftforge.common.MinecraftForge;
  15. import net.minecraftforge.event.entity.player.ArrowLooseEvent;
  16. import net.minecraftforge.event.entity.player.ArrowNockEvent;
  17.  
  18. public class ItemTestBow extends ItemBow
  19. {
  20.     private Icon[] iconbuffer;
  21.     private static String[] bowpullname = new String[] {"testbow_pull1", "testbow_pull2", "testbow_pull3"};
  22.  
  23.     public ItemTestBow(int id)
  24.     {
  25.             super(id);
  26.             this.maxStackSize = 1;
  27.             this.setMaxDamage(1000);
  28.     }
  29.  
  30.     public void registerIcons(IconRegister iconregister)
  31.     {
  32.             iconbuffer = new Icon[bowpullname.length];
  33.             for(int i = 0; i < bowpullname.length; i++)
  34.             {
  35.                     iconbuffer[i] = iconregister.registerIcon("modtutoriel:" + bowpullname[i]);
  36.             }
  37.             itemIcon = iconregister.registerIcon("modtutoriel:testbow");
  38.     }
  39.  
  40.     public Icon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining)
  41.     {
  42.             if(usingItem != null && usingItem.getItem().itemID == ModTutoriel.testBow.itemID)
  43.             {
  44.                     int k = usingItem.getMaxItemUseDuration() - useRemaining;
  45.                     if(k >= 18)
  46.                             return iconbuffer[2];
  47.                     if(k > 13)
  48.                             return iconbuffer[1];
  49.                     if(k > 0)
  50.                             return iconbuffer[0];
  51.             }
  52.             return getIconIndex(stack);
  53.     }
  54.  
  55.     public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int itemInUseCount)
  56.     {
  57.             int charge = this.getMaxItemUseDuration(stack) - itemInUseCount;
  58.  
  59.             ArrowLooseEvent event = new ArrowLooseEvent(player, stack, charge);
  60.             MinecraftForge.EVENT_BUS.post(event);
  61.             if(event.isCanceled())
  62.             {
  63.                     return;
  64.             }
  65.             charge = event.charge;
  66.  
  67.             boolean creativeOrInfinity = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0;
  68.  
  69.             if(creativeOrInfinity || player.inventory.hasItem(ModTutoriel.ItemTutorial.itemID))
  70.             {
  71.                     float power = 1000000000000000000F;
  72.  
  73.                     if((double)power < 0.1D)
  74.                     {
  75.                             return;
  76.                     }
  77.  
  78.                     if(power > 1.0F)
  79.                     {
  80.                             power = 1.0F;
  81.                     }
  82.  
  83.                     EntityTestArrow arrow = new EntityTestArrow(world, player, power * 4.0F);
  84.  
  85.                     if(EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, stack) > 0)
  86.                     {
  87.                             arrow.setFire(100);
  88.                     }
  89.  
  90.                     stack.damageItem(1, player);
  91.                     world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + power * 0.5F);
  92.  
  93.                     if(creativeOrInfinity)
  94.                     {
  95.                             arrow.canBePickedUp = 2;
  96.                     }
  97.                     else
  98.                     {
  99.                             player.inventory.consumeInventoryItem(Item.arrow.itemID);
  100.                     }
  101.  
  102.                     if(!world.isRemote)
  103.                     {
  104.                             world.spawnEntityInWorld(arrow);
  105.                     }
  106.             }
  107.     }
  108.  
  109.     public ItemStack onFoodEaten(ItemStack stack, World world, EntityPlayer player)
  110.     {
  111.             return stack;
  112.     }
  113.  
  114.     public int getMaxItemUseDuration(ItemStack stack)
  115.     {
  116.             return 1000;
  117.     }
  118.  
  119.     public EnumAction getItemUseAction(ItemStack stack)
  120.     {
  121.             return EnumAction.bow;
  122.     }
  123.  
  124.     public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
  125.     {
  126.             ArrowNockEvent event = new ArrowNockEvent(player, stack);
  127.             MinecraftForge.EVENT_BUS.post(event);
  128.             if(event.isCanceled())
  129.             {
  130.                     return event.result;
  131.             }
  132.  
  133.             if(player.capabilities.isCreativeMode || player.inventory.hasItem(Item.arrow.itemID))
  134.             {
  135.                     player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
  136.             }
  137.             return stack;
  138.     }
  139.  
  140.     public int getItemEnchantability()
  141.     {
  142.             return 1;
  143.     }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement