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 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) { // has found 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 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); } }