49 lines
1.5 KiB
Java
49 lines
1.5 KiB
Java
package world.bentobox.bentobox.database.json.adapters;
|
|
|
|
import java.io.IOException;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.World;
|
|
|
|
import com.google.gson.TypeAdapter;
|
|
import com.google.gson.stream.JsonReader;
|
|
import com.google.gson.stream.JsonToken;
|
|
import com.google.gson.stream.JsonWriter;
|
|
|
|
public class LocationTypeAdapter extends TypeAdapter<Location> {
|
|
|
|
@Override
|
|
public void write(JsonWriter out, Location location) throws IOException {
|
|
if (location == null || location.getWorld() == null) {
|
|
out.nullValue();
|
|
return;
|
|
}
|
|
out.beginArray();
|
|
out.value(location.getWorld().getName());
|
|
out.value(location.getX());
|
|
out.value(location.getY());
|
|
out.value(location.getZ());
|
|
// This is required for 1.19-1.19.2 compatibility.
|
|
out.value((double) location.getYaw());
|
|
out.value((double) location.getPitch());
|
|
out.endArray();
|
|
}
|
|
|
|
@Override
|
|
public Location read(JsonReader in) throws IOException {
|
|
if (in.peek() == JsonToken.NULL) {
|
|
in.nextNull();
|
|
return null;
|
|
}
|
|
in.beginArray();
|
|
World world = Bukkit.getServer().getWorld(in.nextString());
|
|
double x = in.nextDouble();
|
|
double y = in.nextDouble();
|
|
double z = in.nextDouble();
|
|
float yaw = (float)in.nextDouble();
|
|
float pitch = (float)in.nextDouble();
|
|
in.endArray();
|
|
return new Location(world, x, y, z, yaw, pitch);
|
|
}
|
|
} |