(ArrowLooseEvent aEvent)
| 1542 | } |
| 1543 | |
| 1544 | @SubscribeEvent(priority = EventPriority.LOWEST) |
| 1545 | public void onArrowLooseEvent(ArrowLooseEvent aEvent) { |
| 1546 | ItemStack aArrow = ST.projectile(aEvent.entityPlayer, TD.Projectiles.ARROW); |
| 1547 | if (!aEvent.isCanceled() && ST.valid(aEvent.bow) && aArrow != null && aEvent.bow.getItem() instanceof ItemBow) { |
| 1548 | float tSpeed = aEvent.charge / 20.0F; |
| 1549 | tSpeed = (tSpeed * tSpeed + tSpeed * 2.0F) / 3.0F; |
| 1550 | |
| 1551 | if (tSpeed < 0.1) return; |
| 1552 | if (tSpeed > 1.0) tSpeed = 1.0F; |
| 1553 | |
| 1554 | EntityProjectile tArrowEntity = ((IItemProjectile)aArrow.getItem()).getProjectile(TD.Projectiles.ARROW, aArrow, aEvent.entityPlayer.worldObj, aEvent.entityPlayer, tSpeed * 2.0F); |
| 1555 | |
| 1556 | if (tSpeed >= 1.0F) tArrowEntity.setIsCritical(T); |
| 1557 | |
| 1558 | int |
| 1559 | tLevel = UT.NBT.getEnchantmentLevel(Enchantment.power, aEvent.bow); |
| 1560 | if (tLevel > 0) tArrowEntity.setDamage(tArrowEntity.getDamage() + tLevel * 0.5D + 0.5D); |
| 1561 | tLevel = UT.NBT.getEnchantmentLevel(Enchantment.punch, aEvent.bow); |
| 1562 | if (tLevel > 0) tArrowEntity.setKnockbackStrength(tLevel); |
| 1563 | tLevel = UT.NBT.getEnchantmentLevel(Enchantment.flame, aEvent.bow); |
| 1564 | if (tLevel > 0) tArrowEntity.setFire(tLevel * 100); |
| 1565 | |
| 1566 | aEvent.bow.damageItem(1, aEvent.entityPlayer); |
| 1567 | aEvent.bow.getItem(); |
| 1568 | aEvent.entityPlayer.worldObj.playSoundAtEntity(aEvent.entityPlayer, "random.bow", 1.0F, 1.0F / (RNGSUS.nextFloat() * 0.4F + 1.2F) + tSpeed * 0.5F); |
| 1569 | |
| 1570 | tArrowEntity.canBePickedUp = 1; |
| 1571 | |
| 1572 | if (!UT.Entities.hasInfiniteItems(aEvent.entityPlayer)) aArrow.stackSize--; |
| 1573 | if (aArrow.stackSize == 0) ST.denull(aEvent.entityPlayer); |
| 1574 | |
| 1575 | if (!aEvent.entityPlayer.worldObj.isRemote) aEvent.entityPlayer.worldObj.spawnEntityInWorld(tArrowEntity); |
| 1576 | |
| 1577 | aEvent.setCanceled(T); |
| 1578 | } |
| 1579 | } |
| 1580 | |
| 1581 | @Override |
| 1582 | public int getBurnTime(ItemStack aFuel) { |
nothing calls this directly
no test coverage detected