diff --git a/src/main/java/com/rpserver/jailplugin/listeners/CuffListener.java b/src/main/java/com/rpserver/jailplugin/listeners/CuffListener.java index 59a151c..57189ee 100644 --- a/src/main/java/com/rpserver/jailplugin/listeners/CuffListener.java +++ b/src/main/java/com/rpserver/jailplugin/listeners/CuffListener.java @@ -7,6 +7,7 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.inventory.InventoryOpenEvent; @@ -32,16 +33,23 @@ public class CuffListener implements Listener { } } + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Player player = event.getPlayer(); + + // Восстанавливаем эффект наручников при входе + plugin.getCuffManager().applyEffectOnJoin(player); + + if (plugin.getCuffManager().isCuffed(player)) { + plugin.getMessageManager().send(player, "cuff-target"); + } + } + @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); - // Снимаем наручники при выходе - if (plugin.getCuffManager().isCuffed(player)) { - plugin.getCuffManager().uncuff(player); - } - - // Разрываем связь конвоирования + // Разрываем связь конвоирования (но наручники остаются) plugin.getLeadManager().unlead(player); plugin.getLeadManager().unleadByLeader(player); } diff --git a/src/main/java/com/rpserver/jailplugin/managers/CuffManager.java b/src/main/java/com/rpserver/jailplugin/managers/CuffManager.java index cd7152a..a1f3605 100644 --- a/src/main/java/com/rpserver/jailplugin/managers/CuffManager.java +++ b/src/main/java/com/rpserver/jailplugin/managers/CuffManager.java @@ -1,22 +1,31 @@ package com.rpserver.jailplugin.managers; import com.rpserver.jailplugin.JailPlugin; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import java.io.File; +import java.io.IOException; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.UUID; +import java.util.stream.Collectors; public class CuffManager { private final JailPlugin plugin; private final Set cuffedPlayers; + private File dataFile; + private FileConfiguration dataConfig; public CuffManager(JailPlugin plugin) { this.plugin = plugin; this.cuffedPlayers = new HashSet<>(); + loadData(); } public boolean isCuffed(Player player) { @@ -30,11 +39,13 @@ public class CuffManager { public void cuff(Player player) { cuffedPlayers.add(player.getUniqueId()); applySlowEffect(player); + saveData(); } public void uncuff(Player player) { cuffedPlayers.remove(player.getUniqueId()); removeSlowEffect(player); + saveData(); plugin.getLeadManager().unlead(player); } @@ -78,4 +89,51 @@ public class CuffManager { public Set getCuffedPlayers() { return new HashSet<>(cuffedPlayers); } + + public void applyEffectOnJoin(Player player) { + if (isCuffed(player)) { + applySlowEffect(player); + } + } + + private void loadData() { + dataFile = new File(plugin.getDataFolder(), "cuffed.yml"); + + if (!dataFile.exists()) { + try { + plugin.getDataFolder().mkdirs(); + dataFile.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + dataConfig = YamlConfiguration.loadConfiguration(dataFile); + + if (dataConfig.contains("cuffed-players")) { + List uuidStrings = dataConfig.getStringList("cuffed-players"); + for (String uuidString : uuidStrings) { + try { + UUID uuid = UUID.fromString(uuidString); + cuffedPlayers.add(uuid); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + public void saveData() { + List uuidStrings = cuffedPlayers.stream() + .map(UUID::toString) + .collect(Collectors.toList()); + + dataConfig.set("cuffed-players", uuidStrings); + + try { + dataConfig.save(dataFile); + } catch (IOException e) { + e.printStackTrace(); + } + } }