Advertisement
Guest User

Untitled

a guest
Sep 13th, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.62 KB | None | 0 0
  1. /**
  2. * This work is made available under the terms of the Creative Commons Attribution License:
  3. * http://creativecommons.org/licenses/by-nc-sa/4.0/deed.en
  4. *
  5. * Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution:
  6. * http://creativecommons.org/licenses/by-nc-sa/4.0/deed.fr
  7. */
  8. package com.mod.drakania.items;
  9.  
  10. import com.mod.drakania.init.ItemMod;
  11.  
  12. import net.minecraft.client.renderer.texture.IIconRegister;
  13. import net.minecraft.enchantment.Enchantment;
  14. import net.minecraft.enchantment.EnchantmentHelper;
  15. import net.minecraft.entity.player.EntityPlayer;
  16. import net.minecraft.entity.projectile.EntityArrow;
  17. import net.minecraft.init.Items;
  18. import net.minecraft.item.EnumAction;
  19. import net.minecraft.item.ItemBow;
  20. import net.minecraft.item.ItemStack;
  21. import net.minecraft.util.IIcon;
  22. import net.minecraft.world.World;
  23. import net.minecraftforge.common.MinecraftForge;
  24. import net.minecraftforge.event.entity.player.ArrowLooseEvent;
  25. import net.minecraftforge.event.entity.player.ArrowNockEvent;
  26.  
  27. public class DrakaBow extends ItemBow
  28. {
  29. private IIcon[] iconbuffer;
  30. private static String[] bowpullname = new String[] {"_pull0", "_pull1", "_pull2", "_pull3"};
  31.  
  32. public DrakaBow()
  33. {
  34. super();
  35. this.maxStackSize = 1;
  36. this.setMaxDamage(500);
  37. }
  38.  
  39. @Override
  40. public void registerIcons(IIconRegister iconregister)
  41. {
  42. iconbuffer = new IIcon[bowpullname.length];
  43. itemIcon = iconregister.registerIcon(this.getIconString());
  44. for(int i = 0; i < bowpullname.length; i++)
  45. {
  46. iconbuffer[i] = iconregister.registerIcon(this.getIconString() + bowpullname[i]);
  47. }
  48. }
  49.  
  50. @Override
  51. public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining)
  52. {
  53. if(usingItem != null && usingItem.getItem().equals(ItemMod.drakabow))
  54. {
  55. int k = usingItem.getMaxItemUseDuration() - useRemaining;
  56. if(k >= 18)
  57. return iconbuffer[2];
  58. if(k > 13)
  59. return iconbuffer[1];
  60. if(k > 0)
  61. return iconbuffer[0];
  62. }
  63. return getIconIndex(stack);
  64. }
  65.  
  66. @Override
  67. public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int itemInUseCount)
  68. {
  69. int charge = this.getMaxItemUseDuration(stack) - itemInUseCount;
  70.  
  71. ArrowLooseEvent event = new ArrowLooseEvent(player, stack, charge);
  72. MinecraftForge.EVENT_BUS.post(event);
  73. if(event.isCanceled())
  74. {
  75. return;
  76. }
  77. charge = event.charge;
  78.  
  79. boolean creativeOrInfinity = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0;
  80.  
  81. if(creativeOrInfinity || player.inventory.hasItem(Items.arrow))
  82. {
  83. float power = 10F;
  84.  
  85. if((double)power < 0.1D)
  86. {
  87. return;
  88. }
  89.  
  90. if(power > 1.0F)
  91. {
  92. power = 1.0F;
  93. }
  94.  
  95. EntityArrow arrow = new EntityArrow(world, player, power * 2.0F);
  96.  
  97. if(power == 1.0F)
  98. {
  99. arrow.setIsCritical(true);
  100. }
  101.  
  102. int var9 = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, stack);
  103.  
  104. if(var9 > 0)
  105. {
  106. arrow.setDamage(arrow.getDamage() + (double)var9 * 0.5D + 0.5D);
  107. }
  108.  
  109. int var10 = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, stack);
  110.  
  111. if(var10 > 0)
  112. {
  113. arrow.setKnockbackStrength(var10);
  114. }
  115.  
  116. if(EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, stack) > 0)
  117. {
  118. arrow.setFire(100);
  119. }
  120.  
  121. stack.damageItem(1, player);
  122. world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + power * 0.5F);
  123.  
  124. if(creativeOrInfinity)
  125. {
  126. arrow.canBePickedUp = 2;
  127. }
  128. else
  129. {
  130. player.inventory.consumeInventoryItem(Items.arrow);
  131. }
  132.  
  133. if(!world.isRemote)
  134. {
  135. world.spawnEntityInWorld(arrow);
  136. }
  137. }
  138. }
  139.  
  140. @Override
  141. public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player)
  142. {
  143. return stack;
  144. }
  145.  
  146. @Override
  147. public int getMaxItemUseDuration(ItemStack stack)
  148. {
  149. return 1000;
  150. }
  151.  
  152. @Override
  153. public EnumAction getItemUseAction(ItemStack stack)
  154. {
  155. return EnumAction.bow;
  156. }
  157.  
  158. @Override
  159. public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
  160. {
  161. ArrowNockEvent event = new ArrowNockEvent(player, stack);
  162. MinecraftForge.EVENT_BUS.post(event);
  163. if(event.isCanceled())
  164. {
  165. return event.result;
  166. }
  167.  
  168. if(player.capabilities.isCreativeMode || player.inventory.hasItem(Items.arrow))
  169. {
  170. player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
  171. }
  172. return stack;
  173. }
  174.  
  175. @Override
  176. public int getItemEnchantability()
  177. {
  178. return 1;
  179. }
  180. public boolean getIsRepairable(ItemStack input, ItemStack repair)
  181.  
  182. {
  183.  
  184. if(repair.getItem() == ItemMod.drakanium_ingot)
  185.  
  186. {
  187.  
  188. return true;
  189.  
  190. }
  191.  
  192. return false;
  193.  
  194. }
  195.  
  196.  
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement