MinecraftManagerPlugin/src/main/java/xyz/etztech/minecraftmanager/objects/OreAlert.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);
}
}