13
0
geforkt von Mirrors/Paper

SPIGOT-3283: Add finite checking util methods to Location / Vectors

By: md_5 <git@md-5.net>
Dieser Commit ist enthalten in:
Bukkit/Spigot 2017-06-02 18:43:50 +10:00
Ursprung 2522c28ac9
Commit 12570e1e28
2 geänderte Dateien mit 44 neuen und 22 gelöschten Zeilen

Datei anzeigen

@ -6,7 +6,6 @@ import java.util.Map;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.bukkit.util.NumberConversions; import org.bukkit.util.NumberConversions;
import static org.bukkit.util.NumberConversions.checkFinite;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
/** /**
@ -555,6 +554,19 @@ public class Location implements Cloneable, ConfigurationSerializable {
} }
} }
/**
* Check if each component of this Location is finite.
*
* @throws IllegalArgumentException if any component is not finite
*/
public void checkFinite() throws IllegalArgumentException {
NumberConversions.checkFinite(x, "x not finite");
NumberConversions.checkFinite(y, "y not finite");
NumberConversions.checkFinite(z, "z not finite");
NumberConversions.checkFinite(pitch, "pitch not finite");
NumberConversions.checkFinite(yaw, "yaw not finite");
}
/** /**
* Safely converts a double (location coordinate) to an int (block * Safely converts a double (location coordinate) to an int (block
* coordinate) * coordinate)
@ -566,22 +578,22 @@ public class Location implements Cloneable, ConfigurationSerializable {
return NumberConversions.floor(loc); return NumberConversions.floor(loc);
} }
@Utility @Utility
public Map<String, Object> serialize() { public Map<String, Object> serialize() {
Map<String, Object> data = new HashMap<String, Object>(); Map<String, Object> data = new HashMap<String, Object>();
data.put("world", this.world.getName()); data.put("world", this.world.getName());
data.put("x", this.x); data.put("x", this.x);
data.put("y", this.y); data.put("y", this.y);
data.put("z", this.z); data.put("z", this.z);
data.put("yaw", this.yaw); data.put("yaw", this.yaw);
data.put("pitch", this.pitch); data.put("pitch", this.pitch);
return data; return data;
} }
/** /**
* Required method for deserialization * Required method for deserialization
* *
* @param args map to deserialize * @param args map to deserialize
@ -589,12 +601,12 @@ public class Location implements Cloneable, ConfigurationSerializable {
* @throws IllegalArgumentException if the world don't exists * @throws IllegalArgumentException if the world don't exists
* @see ConfigurationSerializable * @see ConfigurationSerializable
*/ */
public static Location deserialize(Map<String, Object> args) { public static Location deserialize(Map<String, Object> args) {
World world = Bukkit.getWorld((String) args.get("world")); World world = Bukkit.getWorld((String) args.get("world"));
if (world == null) { if (world == null) {
throw new IllegalArgumentException("unknown world"); throw new IllegalArgumentException("unknown world");
} }
return new Location(world, NumberConversions.toDouble(args.get("x")), NumberConversions.toDouble(args.get("y")), NumberConversions.toDouble(args.get("z")), NumberConversions.toFloat(args.get("yaw")), NumberConversions.toFloat(args.get("pitch"))); return new Location(world, NumberConversions.toDouble(args.get("x")), NumberConversions.toDouble(args.get("y")), NumberConversions.toDouble(args.get("z")), NumberConversions.toFloat(args.get("yaw")), NumberConversions.toFloat(args.get("pitch")));
} }
} }

Datei anzeigen

@ -7,7 +7,6 @@ import org.bukkit.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.configuration.serialization.ConfigurationSerializable;
import org.bukkit.configuration.serialization.SerializableAs; import org.bukkit.configuration.serialization.SerializableAs;
import static org.bukkit.util.NumberConversions.checkFinite;
/** /**
* Represents a mutable vector. Because the components of Vectors are mutable, * Represents a mutable vector. Because the components of Vectors are mutable,
@ -616,6 +615,17 @@ public class Vector implements Cloneable, ConfigurationSerializable {
return new BlockVector(x, y, z); return new BlockVector(x, y, z);
} }
/**
* Check if each component of this Vector is finite.
*
* @throws IllegalArgumentException if any component is not finite
*/
public void checkFinite() throws IllegalArgumentException {
NumberConversions.checkFinite(x, "x not finite");
NumberConversions.checkFinite(y, "y not finite");
NumberConversions.checkFinite(z, "z not finite");
}
/** /**
* Get the threshold used for equals(). * Get the threshold used for equals().
* *