70 lines
2.2 KiB
Java
70 lines
2.2 KiB
Java
package xyz.etztech.minecraftmanager.objects;
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.Block;
|
|
import org.bukkit.entity.Player;
|
|
import xyz.etztech.core.web.CoreWeb;
|
|
import xyz.etztech.minecraftmanager.MinecraftManager;
|
|
|
|
import java.util.*;
|
|
|
|
public class OreAlert {
|
|
private Map<UUID, PlayerOreStrikeList> players = new HashMap<>();
|
|
|
|
private MinecraftManager plugin;
|
|
|
|
public OreAlert(MinecraftManager plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
public void addStrike(UUID uuid, Material material) {
|
|
PlayerOreStrikeList playerStrikes = players.getOrDefault(uuid, new PlayerOreStrikeList());
|
|
|
|
playerStrikes.addStrike(material);
|
|
|
|
players.put(uuid, playerStrikes);
|
|
}
|
|
|
|
public int getStrikes(UUID uuid, Material material) {
|
|
return players.getOrDefault(uuid, new PlayerOreStrikeList()).strikeCount(material);
|
|
}
|
|
|
|
public void alert(String username, Material material, int strikes, boolean ping) {
|
|
// <username> has found <strikes> diamond ore veins.
|
|
String message = username + " has found " + strikes + " " + material.name() + " veins.";
|
|
|
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
|
if (player.hasPermission("minecraftmanager.orealert")) {
|
|
player.sendMessage(ChatColor.AQUA + message);
|
|
}
|
|
}
|
|
|
|
// Webhook
|
|
String webhook = plugin.getConfig().getString("orealert.notify.webhook", "");
|
|
if (StringUtils.isNotEmpty(webhook)) {
|
|
String content = message;
|
|
if (ping) {
|
|
content = "@here " + message;
|
|
}
|
|
Map<String, String> data = new HashMap<>();
|
|
data.put("username", "OreAlert");
|
|
data.put("content", content);
|
|
CoreWeb.asyncPost(plugin, webhook, data);
|
|
}
|
|
}
|
|
|
|
public void purge(UUID uuid, int purge) {
|
|
Date cutoff = new Date();
|
|
// Cutoff to minutes, subtract purge, back to milliseconds
|
|
cutoff.setTime(((cutoff.getTime()/1000/60) - purge)*60*1000);
|
|
PlayerOreStrikeList strikeList = players.getOrDefault(uuid, new PlayerOreStrikeList());
|
|
strikeList.purge(cutoff);
|
|
}
|
|
|
|
|
|
|
|
}
|