rezzy01

Untitled

Aug 28th, 2023 (edited)
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.13 KB | None | 0 0
  1. import org.bukkit.Bukkit;
  2. import org.bukkit.configuration.ConfigurationSection;
  3. import org.bukkit.configuration.file.FileConfiguration;
  4. import org.bukkit.configuration.file.YamlConfiguration;
  5. import org.bukkit.entity.Player;
  6. import org.bukkit.event.EventHandler;
  7. import org.bukkit.event.Listener;
  8. import org.bukkit.event.entity.PlayerDeathEvent;
  9. import org.bukkit.plugin.java.JavaPlugin;
  10.  
  11. import java.io.File;
  12. import java.io.IOException;
  13. import java.text.SimpleDateFormat;
  14. import java.util.*;
  15. import java.util.concurrent.TimeUnit;
  16.  
  17. public class KillCountPlugin extends JavaPlugin implements Listener {
  18.  
  19. private File dataFile;
  20. private FileConfiguration dataConfig;
  21. private Map<UUID, Integer> playerKills = new HashMap<>();
  22. private int cleanupHour = 22; // Время когда бдшка чистится
  23.  
  24. @Override
  25. public void onEnable() {
  26. // Регистр события для загрузки данных
  27. Bukkit.getPluginManager().registerEvents(this, this);
  28. dataFile = new File(getDataFolder(), "data.yml");
  29. dataConfig = YamlConfiguration.loadConfiguration(dataFile);
  30.  
  31. loadKillsFromConfig();
  32. scheduleDataCleanup();
  33. }
  34.  
  35. @EventHandler
  36. public void onPlayerDeath(PlayerDeathEvent event) {
  37. Player victim = event.getEntity();
  38. Player killer = victim.getKiller();
  39.  
  40. if (killer != null) {
  41. addKill(killer);
  42. }
  43. }
  44.  
  45. private void addKill(Player player) {
  46. UUID playerUUID = player.getUniqueId();
  47. int kills = playerKills.getOrDefault(playerUUID, 0) + 1;
  48. playerKills.put(playerUUID, kills);
  49.  
  50. // Save kills to data.yml
  51. dataConfig.set("kills." + playerUUID.toString(), kills);
  52. saveDataConfig();
  53. }
  54.  
  55. private void loadKillsFromConfig() {
  56. ConfigurationSection killsSection = dataConfig.getConfigurationSection("kills");
  57. if (killsSection != null) {
  58. for (String uuidString : killsSection.getKeys(false)) {
  59. UUID playerUUID = UUID.fromString(uuidString);
  60. int kills = killsSection.getInt(uuidString);
  61. playerKills.put(playerUUID, kills);
  62. }
  63. }
  64. }
  65.  
  66. private void saveDataConfig() {
  67. try {
  68. dataConfig.save(dataFile);
  69. } catch (IOException e) {
  70. e.printStackTrace();
  71. }
  72. }
  73.  
  74. private void scheduleDataCleanup() {
  75. Bukkit.getScheduler().runTaskTimerAsynchronously(this, this::cleanupOldData, 0L, TimeUnit.MINUTES.toTicks(15));
  76. }
  77.  
  78. private void cleanupOldData() {
  79. Calendar now = Calendar.getInstance(TimeZone.getTimeZone("Europe/Moscow"));
  80. if (now.get(Calendar.HOUR_OF_DAY) >= cleanupHour) {
  81. dataConfig.set("kills", null);
  82. playerKills.clear();
  83. saveDataConfig();
  84. }
  85. }
  86.  
  87. // При необходимости можно создать метод для получения колва убийств для конкретного игрока
  88. // Поменять время можно в <cleanupHour> на нужное
  89. }
Advertisement
Add Comment
Please, Sign In to add comment