mirror of
https://github.com/TotalFreedomMC/TF-WorldGuardExtraFlagsPlugin.git
synced 2024-06-03 10:21:19 +00:00
82 lines
2.6 KiB
Java
82 lines
2.6 KiB
Java
package net.goldtreeservers.worldguardextraflags.wg.handlers;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.Set;
|
|
|
|
import org.bukkit.Location;
|
|
import org.bukkit.entity.Player;
|
|
|
|
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 com.sk89q.worldguard.session.handler.Handler;
|
|
|
|
import net.goldtreeservers.worldguardextraflags.WorldGuardExtraFlagsPlugin;
|
|
import net.goldtreeservers.worldguardextraflags.flags.Flags;
|
|
import net.goldtreeservers.worldguardextraflags.wg.WorldGuardUtils;
|
|
|
|
public class ConsoleCommandOnExitFlagHandler extends Handler
|
|
{
|
|
public static final Factory FACTORY = new Factory();
|
|
public static class Factory extends Handler.Factory<ConsoleCommandOnExitFlagHandler>
|
|
{
|
|
@Override
|
|
public ConsoleCommandOnExitFlagHandler create(Session session)
|
|
{
|
|
return new ConsoleCommandOnExitFlagHandler(session);
|
|
}
|
|
}
|
|
|
|
private Collection<Set<String>> lastCommands;
|
|
|
|
protected ConsoleCommandOnExitFlagHandler(Session session)
|
|
{
|
|
super(session);
|
|
|
|
this.lastCommands = new ArrayList<>();
|
|
}
|
|
|
|
@Override
|
|
public void initialize(Player player, Location current, ApplicableRegionSet set)
|
|
{
|
|
this.lastCommands = WorldGuardUtils.queryAllValues(player, current.getWorld(), set.getRegions(), Flags.CONSOLE_COMMAND_ON_EXIT);
|
|
}
|
|
|
|
@Override
|
|
public boolean onCrossBoundary(Player player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType)
|
|
{
|
|
Collection<Set<String>> commands = new ArrayList<Set<String>>(WorldGuardUtils.queryAllValues(player, to.getWorld(), toSet.getRegions(), Flags.CONSOLE_COMMAND_ON_EXIT));
|
|
|
|
if (!commands.isEmpty())
|
|
{
|
|
for (ProtectedRegion region : toSet)
|
|
{
|
|
Set<String> commands_ = region.getFlag(Flags.CONSOLE_COMMAND_ON_EXIT);
|
|
if (commands_ != null)
|
|
{
|
|
commands.add(commands_);
|
|
}
|
|
}
|
|
}
|
|
|
|
for(Set<String> commands_ : this.lastCommands)
|
|
{
|
|
if (!commands.contains(commands_))
|
|
{
|
|
for(String command : commands_)
|
|
{
|
|
WorldGuardExtraFlagsPlugin.getPlugin().getServer().dispatchCommand(WorldGuardExtraFlagsPlugin.getPlugin().getServer().getConsoleSender(), command.substring(1).replace("%username%", player.getName())); //TODO: Make this better
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
this.lastCommands = commands;
|
|
|
|
return true;
|
|
}
|
|
}
|