PlotSquared/src/main/java/com/plotsquared/sponge/util/SpongeUtil.java

110 lines
4.0 KiB
Java
Raw Normal View History

2015-07-30 16:25:16 +02:00
package com.plotsquared.sponge.util;
import org.spongepowered.api.entity.Entity;
2015-09-06 03:53:56 +02:00
import org.spongepowered.api.entity.player.Player;
2015-07-30 16:25:16 +02:00
import org.spongepowered.api.world.World;
import org.spongepowered.api.world.extent.Extent;
import com.flowpowered.math.vector.Vector3d;
import com.flowpowered.math.vector.Vector3i;
import com.google.common.base.Optional;
import com.intellectualcrafters.plot.object.Location;
import com.intellectualcrafters.plot.object.PlotPlayer;
import com.intellectualcrafters.plot.util.MathMan;
import com.intellectualcrafters.plot.util.UUIDHandler;
import com.plotsquared.sponge.SpongeMain;
2015-07-30 19:24:01 +02:00
import com.plotsquared.sponge.object.SpongePlayer;
2015-07-30 16:25:16 +02:00
2015-09-11 12:09:22 +02:00
public class SpongeUtil
{
2015-07-30 16:25:16 +02:00
2015-09-11 12:09:22 +02:00
public static Location getLocation(final Entity player)
{
final String world = player.getWorld().getName();
final org.spongepowered.api.world.Location loc = player.getLocation();
final Vector3i pos = loc.getBlockPosition();
2015-07-30 16:25:16 +02:00
return new Location(world, pos.getX(), pos.getY(), pos.getZ());
}
2015-09-11 12:09:22 +02:00
public static Location getLocation(final org.spongepowered.api.world.Location block)
{
final Extent extent = block.getExtent();
if (extent instanceof World) { return getLocation(((World) extent).getName(), block); }
2015-07-30 16:25:16 +02:00
return null;
}
2015-09-11 12:09:22 +02:00
public static Location getLocationFull(final Entity player)
{
final String world = player.getWorld().getName();
final Vector3d rot = player.getRotation();
final float[] pitchYaw = MathMan.getPitchAndYaw((float) rot.getX(), (float) rot.getY(), (float) rot.getZ());
final org.spongepowered.api.world.Location loc = player.getLocation();
final Vector3i pos = loc.getBlockPosition();
2015-07-30 16:25:16 +02:00
return new Location(world, pos.getX(), pos.getY(), pos.getZ(), pitchYaw[1], pitchYaw[0]);
}
private static Player lastPlayer = null;
private static PlotPlayer lastPlotPlayer = null;
2015-09-11 12:09:22 +02:00
public static PlotPlayer getPlayer(final Player player)
{
if (player == lastPlayer) { return lastPlotPlayer; }
final String name = player.getName();
final PlotPlayer pp = UUIDHandler.getPlayers().get(name);
if (pp != null) { return pp; }
2015-07-30 16:25:16 +02:00
lastPlotPlayer = new SpongePlayer(player);
UUIDHandler.getPlayers().put(name, lastPlotPlayer);
lastPlayer = player;
return lastPlotPlayer;
}
2015-09-11 12:09:22 +02:00
public static Player getPlayer(final PlotPlayer player)
{
if (player instanceof SpongePlayer) { return ((SpongePlayer) player).player; }
2015-07-30 16:25:16 +02:00
return null;
}
2015-09-11 12:09:22 +02:00
2015-08-03 20:20:04 +02:00
private static World lastWorld;
private static String last;
2015-07-30 16:25:16 +02:00
2015-09-11 12:09:22 +02:00
public static World getWorld(final String world)
{
if (world == last) { return lastWorld; }
final Optional<World> optional = SpongeMain.THIS.getServer().getWorld(world);
if (!optional.isPresent()) { return null; }
2015-07-30 16:25:16 +02:00
return optional.get();
}
2015-09-11 12:09:22 +02:00
public static void removePlayer(final String player)
{
2015-07-30 16:25:16 +02:00
lastPlayer = null;
lastPlotPlayer = null;
UUIDHandler.getPlayers().remove(player);
}
2015-09-11 12:09:22 +02:00
public static Location getLocation(final String world, final org.spongepowered.api.world.Location spawn)
{
2015-07-30 16:25:16 +02:00
return new Location(world, spawn.getBlockX(), spawn.getBlockY(), spawn.getBlockZ());
}
2015-09-11 12:09:22 +02:00
public static String getWorldName(final org.spongepowered.api.world.Location origin)
{
final Extent extent = origin.getExtent();
if (extent == lastWorld) { return last; }
if (extent instanceof World)
{
lastWorld = (World) extent;
last = ((World) extent).getName();
return last;
}
return null;
}
2015-08-14 00:52:31 +02:00
2015-09-11 12:09:22 +02:00
public static org.spongepowered.api.world.Location getLocation(final Location loc)
{
final Optional<World> world = SpongeMain.THIS.getServer().getWorld(loc.getWorld());
if (!world.isPresent()) { return null; }
2015-08-14 00:52:31 +02:00
return new org.spongepowered.api.world.Location(world.get(), loc.getX(), loc.getY(), loc.getZ());
}
2015-07-30 16:25:16 +02:00
}