package tv.mineinthebox.essentials.events.customevents;
import java.util.ListIterator;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
import tv.mineinthebox.essentials.xEssentials;
public class CallEssentialsBroadcastEvent {
private ListIterator<String> it;
private BukkitTask task;
private final xEssentials pl;
public CallEssentialsBroadcastEvent(xEssentials pl) {
this.pl = pl;
}
/**
* @author xize
* @param starts the broadcast system
*/
public void start() {
this.it = pl.getConfiguration().getBroadcastConfig().getMessages().listIterator();
startBroadcast();
}
/**
* @author xize
* @param stops the broadcast system
*/
public void stop() {
task.cancel();
task = null;
}
/**
* @author xize
* @param returns true if the broadcast system is still running else false.
* @return Boolean
*/
public boolean isRunning() {
if(task instanceof BukkitTask) {
return true;
}
return false;
}
public String getPrefix() {
return pl.getConfiguration().getBroadcastConfig().getPrefix();
}
public String getSuffix() {
return pl.getConfiguration().getBroadcastConfig().getSuffix();
}
private void startBroadcast() {
task = Bukkit.getScheduler().runTaskTimer(pl, new Runnable() {
@Override
public void run() {
if(it.hasNext()) {
String message = it.next();
for(Player p : pl.getOnlinePlayers()) {
if(message.contains("%p")) {
p.sendMessage(getPrefix() + getSuffix() + message.replaceAll("%p",ChatColor.GREEN + pl.getConfiguration().getChatConfig().getHashTag() + p.getName() + getSuffix()));
p.getWorld().playSound(p.getPlayer().getLocation(), Sound.BLOCK_NOTE_HARP, 10, 100);
p.getWorld().playSound(p.getPlayer().getLocation(), Sound.BLOCK_NOTE_BASEDRUM, 10, 100);
p.getWorld().playSound(p.getPlayer().getLocation(), Sound.BLOCK_NOTE_SNARE, 10, 100);
Bukkit.getPluginManager().callEvent(new EssentialsBroadcastEvent(message, p.getName()));
} else {
p.sendMessage(getPrefix() + getSuffix() + message);
Bukkit.getPluginManager().callEvent(new EssentialsBroadcastEvent(message, null));
}
}
} else {
while(it.hasPrevious()) {it.previous();}
if(it.hasNext()) {
String message = it.next();
for(Player p : pl.getOnlinePlayers()) {
if(message.contains("%p")) {
p.sendMessage(getPrefix() + getSuffix() + message.replaceAll("%p",ChatColor.GREEN + p.getName() + getSuffix()));
p.getWorld().playSound(p.getPlayer().getLocation(), Sound.BLOCK_NOTE_HARP, 10, 100);
p.getWorld().playSound(p.getPlayer().getLocation(), Sound.BLOCK_NOTE_BASEDRUM, 10, 100);
p.getWorld().playSound(p.getPlayer().getLocation(), Sound.BLOCK_NOTE_SNARE, 10, 100);
Bukkit.getPluginManager().callEvent(new EssentialsBroadcastEvent(message, p.getName()));
} else {
p.sendMessage(getPrefix() + getSuffix() + message);
Bukkit.getPluginManager().callEvent(new EssentialsBroadcastEvent(message, null));
}
}
}
}
}
}, 0L, 800L);
}
}