Compare commits

...

2 Commits

Author SHA1 Message Date
Илья Глазунов
5998e35be2 bump version to 1.0.3-alpha in build.gradle.kts 2025-12-23 23:30:22 +03:00
Илья Глазунов
d8ef58d25b fixed CuffListener and CuffManager to handle player join/quit events and manage cuff data persistence
All checks were successful
Build and Release / build (push) Successful in 1m47s
2025-12-23 23:17:13 +03:00
3 changed files with 73 additions and 7 deletions

View File

@ -5,7 +5,7 @@ plugins {
} }
group = "com.rpserver" group = "com.rpserver"
version = "1.0.2-alpha" version = "1.0.3-alpha"
java { java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21)) toolchain.languageVersion.set(JavaLanguageVersion.of(21))

View File

@ -7,6 +7,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.inventory.InventoryOpenEvent; 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 @EventHandler
public void onPlayerQuit(PlayerQuitEvent event) { public void onPlayerQuit(PlayerQuitEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
// Снимаем наручники при выходе // Разрываем связь конвоирования (но наручники остаются)
if (plugin.getCuffManager().isCuffed(player)) {
plugin.getCuffManager().uncuff(player);
}
// Разрываем связь конвоирования
plugin.getLeadManager().unlead(player); plugin.getLeadManager().unlead(player);
plugin.getLeadManager().unleadByLeader(player); plugin.getLeadManager().unleadByLeader(player);
} }

View File

@ -1,22 +1,31 @@
package com.rpserver.jailplugin.managers; package com.rpserver.jailplugin.managers;
import com.rpserver.jailplugin.JailPlugin; 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.entity.Player;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import java.io.File;
import java.io.IOException;
import java.util.HashSet; import java.util.HashSet;
import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.stream.Collectors;
public class CuffManager { public class CuffManager {
private final JailPlugin plugin; private final JailPlugin plugin;
private final Set<UUID> cuffedPlayers; private final Set<UUID> cuffedPlayers;
private File dataFile;
private FileConfiguration dataConfig;
public CuffManager(JailPlugin plugin) { public CuffManager(JailPlugin plugin) {
this.plugin = plugin; this.plugin = plugin;
this.cuffedPlayers = new HashSet<>(); this.cuffedPlayers = new HashSet<>();
loadData();
} }
public boolean isCuffed(Player player) { public boolean isCuffed(Player player) {
@ -30,11 +39,13 @@ public class CuffManager {
public void cuff(Player player) { public void cuff(Player player) {
cuffedPlayers.add(player.getUniqueId()); cuffedPlayers.add(player.getUniqueId());
applySlowEffect(player); applySlowEffect(player);
saveData();
} }
public void uncuff(Player player) { public void uncuff(Player player) {
cuffedPlayers.remove(player.getUniqueId()); cuffedPlayers.remove(player.getUniqueId());
removeSlowEffect(player); removeSlowEffect(player);
saveData();
plugin.getLeadManager().unlead(player); plugin.getLeadManager().unlead(player);
} }
@ -78,4 +89,51 @@ public class CuffManager {
public Set<UUID> getCuffedPlayers() { public Set<UUID> getCuffedPlayers() {
return new HashSet<>(cuffedPlayers); 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<String> 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<String> uuidStrings = cuffedPlayers.stream()
.map(UUID::toString)
.collect(Collectors.toList());
dataConfig.set("cuffed-players", uuidStrings);
try {
dataConfig.save(dataFile);
} catch (IOException e) {
e.printStackTrace();
}
}
} }