package com.github.jamesnorris.ablockalypse.threading.inherent;
import org.bukkit.entity.Player;
import com.github.jamesnorris.ablockalypse.aspect.Barrier;
import com.github.jamesnorris.ablockalypse.aspect.Game;
import com.github.jamesnorris.ablockalypse.aspect.MobSpawner;
import com.github.jamesnorris.ablockalypse.enumerated.ZAEffect;
import com.github.jamesnorris.ablockalypse.threading.DelayedTask;
import com.github.jamesnorris.ablockalypse.utility.SpawnUtility;
public class MobSpawningTask extends DelayedTask {
private Game game;
public MobSpawningTask(Game game, int delay, boolean autorun) {
super(delay, autorun);
this.game = game;
}
@Override public void run() {
if (game.getRemainingPlayers().size() >= 1 && !game.isPaused()) {
Player p = game.getRandomLivingPlayer();
if (!game.getObjectsOfType(MobSpawner.class).isEmpty()) {
boolean noneActive = true;
for (MobSpawner check : game.getObjectsOfType(MobSpawner.class)) {
if (check.isActive()) {
noneActive = false;
break;
}
}
MobSpawner spawner = SpawnUtility.getClosestSpawner(game, p, !noneActive);
if (spawner.isActive() || noneActive) {
SpawnUtility.spawn(game, spawner.getBukkitLocation().clone().add(0, 2, 0), true, game.getWolfPercentage());
spawner.playEffect(ZAEffect.FLAMES);
return;
}
}
if (!game.getObjectsOfType(Barrier.class).isEmpty()) {
SpawnUtility.spawn(game, SpawnUtility.getClosestBarrier(game, p).getSpawnLocation(), true, game.getWolfPercentage());
return;
}
SpawnUtility.spawn(game, p.getLocation(), false, game.getWolfPercentage());
}
}
}