Note; this is just an example to fire small fireBalls... getting the target.pos can be achieved through multiple means
const $smallFireBall = Java.loadClass("net.minecraft.world.entity.projectile.SmallFireball")
ItemEvents.rightClicked('minecraft:stick', event => {
const {player, level} = event
let rayTrace = player.rayTrace(8)
if(rayTrace == null) return
let target = rayTrace.entity
if(target == null) return
let d = player.distanceToSqr(target)
let x = target.x - player.x
let y = target.y - player.y+1
let z = target.z - player.z
let h = JavaMath.sqrt(JavaMath.sqrt(d) * 0.5)
let smallFireBall = new $smallFireBall(player.level, player, player.getRandom().triangle(x, 2.297 * h), y, player.getRandom().triangle(z, 2.297 * h))
smallFireBall.setPos(player.x, player.y+1, player.z)
player.level.addFreshEntity(smallFireBall)
})```