TF-WorldGuardExtraFlagsPlugin/WG/src/main/java/net/goldtreeservers/worldguardextraflags/wg/handlers/TeleportOnExitFlagHandler.java
isokissa3 7d12cdb0e1 Moved WG handlers to WG module
This fixes the error given when using unsupported version of WG and gives message saying that you are using unsupported version of WG instead
2018-12-09 23:08:39 +02:00

65 lines
1.9 KiB
Java

package net.goldtreeservers.worldguardextraflags.wg.handlers;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.Plugin;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session;
import net.goldtreeservers.worldguardextraflags.flags.Flags;
import net.goldtreeservers.worldguardextraflags.we.WorldEditUtils;
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
import net.goldtreeservers.worldguardextraflags.wg.wrappers.HandlerWrapper;
public class TeleportOnExitFlagHandler extends HandlerWrapper
{
public static final Factory FACTORY(Plugin plugin)
{
return new Factory(plugin);
}
public static class Factory extends HandlerWrapper.Factory<TeleportOnExitFlagHandler>
{
public Factory(Plugin plugin)
{
super(plugin);
}
@Override
public TeleportOnExitFlagHandler create(Session session)
{
return new TeleportOnExitFlagHandler(this.getPlugin(), session);
}
}
protected TeleportOnExitFlagHandler(Plugin plugin, Session session)
{
super(plugin, session);
}
@Override
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
{
if (!player.hasMetadata(WorldGuardUtils.PREVENT_TELEPORT_LOOP_META))
{
Object location = WorldGuardUtils.queryValueUnchecked(player, to.getWorld(), exited, Flags.TELEPORT_ON_EXIT);
if (location != null)
{
player.setMetadata(WorldGuardUtils.PREVENT_TELEPORT_LOOP_META, new FixedMetadataValue(this.getPlugin(), true));
player.teleport(WorldEditUtils.toLocation(location));
return false;
}
}
return true;
}
}