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:
Ursprung
2522c28ac9
Commit
12570e1e28
@ -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")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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().
|
||||||
*
|
*
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren