/** * @return the amount of charge in the bow */ public float getCharge() { return event.getCharge(); }
/** * ArrowLooseEvent handler. * <p> * Check, if a player tries to shoot an arrow. * Deny if: * - If the shooting happens in the colony * - player is neutral or hostile to colony * * @param event EntityItemPickupEvent */ @SubscribeEvent public void on(final ArrowLooseEvent event) { checkEventCancelation(Action.SHOOT_ARROW, event.getEntityPlayer(), event.getEntityPlayer().getEntityWorld(), event, event.getEntity().getPosition()); }
/** * @return the bow trying to fire */ public ItemStack getBow() { return event.getBow(); }
@SubscribeEvent public static void onArrowFire(ArrowLooseEvent event) World world = event.getEntityPlayer().getEntityWorld(); ItemStack stack = event.getBow(); EntityPlayer player = event.getEntityPlayer(); if (upgrade instanceof LivingArmourUpgradeArrowShot) int charge = event.getCharge(); float velocity = (float) charge / 20.0F; velocity = (velocity * velocity + velocity * 2.0F) / 3.0F; entityarrow.motionX += (event.getWorld().rand.nextDouble() - 0.5) * velocityModifier; entityarrow.motionY += (event.getWorld().rand.nextDouble() - 0.5) * velocityModifier; entityarrow.motionZ += (event.getWorld().rand.nextDouble() - 0.5) * velocityModifier;
@SubscribeEvent public void onPlayerUpdate(ArrowLooseEvent event) { ItemStack stackBow = event.getBow(); int level = this.getCurrentLevelTool(stackBow); if (level <= 0) { return; } EntityPlayer player = event.getEntityPlayer(); World worldIn = player.world; if (worldIn.isRemote == false) { float charge = ItemBow.getArrowVelocity(stackBow.getMaxItemUseDuration() - event.getCharge()); //use cross product to push arrows out to left and right Vec3d playerDirection = UtilEntity.lookVector(player.rotationYaw, player.rotationPitch); Vec3d left = playerDirection.crossProduct(new Vec3d(0, 1, 0)); Vec3d right = playerDirection.crossProduct(new Vec3d(0, -1, 0)); spawnArrow(worldIn, player, stackBow, charge, left.normalize()); spawnArrow(worldIn, player, stackBow, charge, right.normalize()); } }
ItemStack stack = QuiverArrowRegistry.getArrowContainer(event.getBow(), event.getEntityPlayer()); if(stack.getItem() instanceof IArrowContainer2){ IArrowContainer2 quiver = (IArrowContainer2) stack.getItem(); World world = event.getEntityPlayer().world; EntityArrow entityarrow = quiver.getArrowType(stack, world, event.getEntityPlayer(), f*3.0F); if(entityarrow!=null){ PlayerEventChild.QuiverArrowEvent.Firing arrowEvent = new PlayerEventChild.QuiverArrowEvent.Firing(event, stack, entityarrow); entityarrow.setIsCritical(true); if(arrowEvent.addEnchantments){ int k = EnchantmentHelper.getEnchantmentLevel(Enchantments.POWER, event.getBow()); if (k > 0){ entityarrow.setDamage(entityarrow.getDamage() + (double)k * 0.5D + 0.5D); int l = EnchantmentHelper.getEnchantmentLevel(Enchantments.PUNCH, event.getBow()); if (l > 0){ entityarrow.setKnockbackStrength(l); if (EnchantmentHelper.getEnchantmentLevel(Enchantments.FLAME, event.getBow()) > 0){ entityarrow.setFire(100); event.getBow().damageItem(arrowEvent.bowDamage, event.getEntityPlayer()); event.getEntityPlayer().addStat(StatList.getObjectUseStats(event.getBow().getItem())); if (!world.isRemote) world.spawnEntity(entityarrow); quiver.onArrowFired(world, arrowEvent.getPlayer(), stack, event.getBow(), entityarrow); event.setCanceled(true);
if (entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) entity; ArrowLooseEvent event = new ArrowLooseEvent(player, itemstack, world, timeUsed, ItemStackUtility.inventoryHasItem(player.inventory, MUSKET_CARTRIDGE)); MinecraftForge.EVENT_BUS.post(event); if (event.isCanceled()) { return; timeUsed = event.getCharge(); float timeUsedSecs = timeUsed / 20.0F; timeUsedSecs = (timeUsedSecs * timeUsedSecs + timeUsedSecs * 2.0F) / 3.0F;
world.spawnEntity(rocket); ArrowLooseEvent event = new ArrowLooseEvent(player, self, world, 1, ItemStackUtility.inventoryHasItem(player.inventory, (Item) irocket)); MinecraftForge.EVENT_BUS.post(event);
@SubscribeEvent (priority = EventPriority.HIGHEST) public void handleArrowLooseEvent(ArrowLooseEvent event) { if (!(event.getBow().getItem() == Items.BOW) && !(event.getBow().getItem() instanceof IToolBow)) { return; ItemStack bowStack = event.getBow(); IToolBow bow = null; EntityPlayer player = event.getEntityPlayer(); ItemStack arrowStack = findAmmo(player); World world = event.getWorld(); boolean customArrow = false; arrowStack = new ItemStack(Items.ARROW); float f = ItemBow.getArrowVelocity(event.getCharge()); float speedMod = 1.0F; event.setCanceled(true);