Yeah, man its hard because passing the x, y, z separately is probably so much more efficient, plus it eliminates the confusing of if the caller should clone the vector or the callee. I feel if helper functions like CallWithVector3 (or maybe just fnc.apply(null, vec.toArray(), Block.AIR), or would that not even work?) exist then you can have the convenience when you want it, but still have the speed when you need it.