Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.bukkit.Bukkit;
- import org.bukkit.configuration.ConfigurationSection;
- import org.bukkit.configuration.file.FileConfiguration;
- import org.bukkit.configuration.file.YamlConfiguration;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.entity.PlayerDeathEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import java.io.File;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.concurrent.TimeUnit;
- public class KillCountPlugin extends JavaPlugin implements Listener {
- private File dataFile;
- private FileConfiguration dataConfig;
- private Map<UUID, Integer> playerKills = new HashMap<>();
- private int cleanupHour = 22; // Время когда бдшка чистится
- @Override
- public void onEnable() {
- // Регистр события для загрузки данных
- Bukkit.getPluginManager().registerEvents(this, this);
- dataFile = new File(getDataFolder(), "data.yml");
- dataConfig = YamlConfiguration.loadConfiguration(dataFile);
- loadKillsFromConfig();
- scheduleDataCleanup();
- }
- @EventHandler
- public void onPlayerDeath(PlayerDeathEvent event) {
- Player victim = event.getEntity();
- Player killer = victim.getKiller();
- if (killer != null) {
- addKill(killer);
- }
- }
- private void addKill(Player player) {
- UUID playerUUID = player.getUniqueId();
- int kills = playerKills.getOrDefault(playerUUID, 0) + 1;
- playerKills.put(playerUUID, kills);
- // Save kills to data.yml
- dataConfig.set("kills." + playerUUID.toString(), kills);
- saveDataConfig();
- }
- private void loadKillsFromConfig() {
- ConfigurationSection killsSection = dataConfig.getConfigurationSection("kills");
- if (killsSection != null) {
- for (String uuidString : killsSection.getKeys(false)) {
- UUID playerUUID = UUID.fromString(uuidString);
- int kills = killsSection.getInt(uuidString);
- playerKills.put(playerUUID, kills);
- }
- }
- }
- private void saveDataConfig() {
- try {
- dataConfig.save(dataFile);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- private void scheduleDataCleanup() {
- Bukkit.getScheduler().runTaskTimerAsynchronously(this, this::cleanupOldData, 0L, TimeUnit.MINUTES.toTicks(15));
- }
- private void cleanupOldData() {
- Calendar now = Calendar.getInstance(TimeZone.getTimeZone("Europe/Moscow"));
- if (now.get(Calendar.HOUR_OF_DAY) >= cleanupHour) {
- dataConfig.set("kills", null);
- playerKills.clear();
- saveDataConfig();
- }
- }
- // При необходимости можно создать метод для получения колва убийств для конкретного игрока
- // Поменять время можно в <cleanupHour> на нужное
- }
Advertisement
Add Comment
Please, Sign In to add comment