package in.twizmwaz.cardinal.module.modules.appliedRegion.type;
import com.google.common.base.Optional;
import in.twizmwaz.cardinal.GameHandler;
import in.twizmwaz.cardinal.module.modules.appliedRegion.AppliedRegion;
import in.twizmwaz.cardinal.module.modules.filter.FilterModule;
import in.twizmwaz.cardinal.module.modules.filter.FilterState;
import in.twizmwaz.cardinal.module.modules.kit.KitNode;
import in.twizmwaz.cardinal.module.modules.observers.ObserverModule;
import in.twizmwaz.cardinal.module.modules.regions.RegionModule;
import in.twizmwaz.cardinal.module.modules.team.TeamModule;
import in.twizmwaz.cardinal.module.modules.titleRespawn.TitleRespawn;
import in.twizmwaz.cardinal.util.Teams;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
public class KitRegion extends AppliedRegion {
private final KitNode kit;
private boolean lend;
public KitRegion(RegionModule region, FilterModule filter, String message, KitNode kit, boolean lend) {
super(region, filter, message);
this.kit = kit;
this.lend = lend;
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerMove(PlayerMoveEvent event) {
if (ObserverModule.testObserverOrDead(event.getPlayer())) return;
if (region.contains(event.getTo().toVector()) && !region.contains(event.getFrom().toVector()) && filter.evaluate(event.getPlayer(), event.getTo(), event).equals(FilterState.ALLOW)) {
kit.apply(event.getPlayer(), null);
} else if (lend && region.contains(event.getFrom().toVector()) && !region.contains(event.getTo().toVector())) {
kit.remove(event.getPlayer());
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onPlayerMove(PlayerTeleportEvent event) {
if (ObserverModule.testObserverOrDead(event.getPlayer())) return;
if (region.contains(event.getTo().toVector()) && !region.contains(event.getFrom().toVector()) && filter.evaluate(event.getPlayer(), event.getTo(), event).equals(FilterState.ALLOW)) {
kit.apply(event.getPlayer(), null);
} else if (lend && region.contains(event.getFrom().toVector()) && !region.contains(event.getTo().toVector())) {
kit.remove(event.getPlayer());
}
}
}