From 9ce011cf3b9fb860b56ffe7849949a3c0d5052f1 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Tue, 19 Dec 2023 19:11:12 +1100 Subject: [PATCH] #949: Add Vector#fromJOML() overloads for read-only vector types By: Parker Hawke --- .../src/main/java/org/bukkit/util/Vector.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/paper-api/src/main/java/org/bukkit/util/Vector.java b/paper-api/src/main/java/org/bukkit/util/Vector.java index b98568f1a9..4607b15f3c 100644 --- a/paper-api/src/main/java/org/bukkit/util/Vector.java +++ b/paper-api/src/main/java/org/bukkit/util/Vector.java @@ -12,8 +12,11 @@ import org.bukkit.configuration.serialization.SerializableAs; import org.jetbrains.annotations.NotNull; import org.joml.RoundingMode; import org.joml.Vector3d; +import org.joml.Vector3dc; import org.joml.Vector3f; +import org.joml.Vector3fc; import org.joml.Vector3i; +import org.joml.Vector3ic; /** * Represents a mutable vector. Because the components of Vectors are mutable, @@ -948,6 +951,39 @@ public class Vector implements Cloneable, ConfigurationSerializable { return new Vector(vector.x(), vector.y(), vector.z()); } + /** + * Gets a vector with components that match the provided JOML {@link Vector3fc}. + * + * @param vector the vector to match + * @return the new vector + */ + @NotNull + public static Vector fromJOML(@NotNull Vector3fc vector) { + return new Vector(vector.x(), vector.y(), vector.z()); + } + + /** + * Gets a vector with components that match the provided JOML {@link Vector3dc}. + * + * @param vector the vector to match + * @return the new vector + */ + @NotNull + public static Vector fromJOML(@NotNull Vector3dc vector) { + return new Vector(vector.x(), vector.y(), vector.z()); + } + + /** + * Gets a vector with components that match the provided JOML {@link Vector3ic}. + * + * @param vector the vector to match + * @return the new vector + */ + @NotNull + public static Vector fromJOML(@NotNull Vector3ic vector) { + return new Vector(vector.x(), vector.y(), vector.z()); + } + @Override @NotNull public Map serialize() {