src/main/java/de/viper/survivalplus/commands/FriendCommand.java aktualisiert
This commit is contained in:
@@ -1,343 +1,423 @@
|
|||||||
package de.viper.survivalplus.commands;
|
package de.viper.survivalplus.commands;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import net.md_5.bungee.api.chat.ClickEvent;
|
||||||
import org.bukkit.ChatColor;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import java.io.File;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
import java.io.File;
|
||||||
import java.util.List;
|
import java.io.IOException;
|
||||||
import java.util.UUID;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.logging.Logger;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
public class FriendCommand implements CommandExecutor {
|
import java.util.List;
|
||||||
private final JavaPlugin plugin;
|
import java.util.UUID;
|
||||||
private final FileConfiguration friendsConfig;
|
import java.util.logging.Logger;
|
||||||
private final FileConfiguration langConfig;
|
|
||||||
private final Logger logger;
|
public class FriendCommand implements CommandExecutor {
|
||||||
|
private final JavaPlugin plugin;
|
||||||
public FriendCommand(JavaPlugin plugin, FileConfiguration friendsConfig, FileConfiguration langConfig, Logger logger) {
|
private final FileConfiguration friendsConfig;
|
||||||
this.plugin = plugin;
|
private final FileConfiguration langConfig;
|
||||||
this.friendsConfig = friendsConfig;
|
private final Logger logger;
|
||||||
this.langConfig = langConfig;
|
|
||||||
this.logger = logger;
|
public FriendCommand(JavaPlugin plugin, FileConfiguration friendsConfig, FileConfiguration langConfig, Logger logger) {
|
||||||
}
|
this.plugin = plugin;
|
||||||
|
this.friendsConfig = friendsConfig;
|
||||||
@Override
|
this.langConfig = langConfig;
|
||||||
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
this.logger = logger;
|
||||||
if (!(sender instanceof Player)) {
|
}
|
||||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-only", "&cDieser Befehl ist nur für Spieler!")));
|
|
||||||
return true;
|
@Override
|
||||||
}
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
||||||
|
if (!(sender instanceof Player)) {
|
||||||
Player player = (Player) sender;
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-only", "&cDieser Befehl ist nur für Spieler!")));
|
||||||
UUID playerUUID = player.getUniqueId();
|
return true;
|
||||||
|
}
|
||||||
if (args.length == 0) {
|
|
||||||
sendHelpMessage(player);
|
Player player = (Player) sender;
|
||||||
return true;
|
UUID playerUUID = player.getUniqueId();
|
||||||
}
|
|
||||||
|
if (args.length == 0) {
|
||||||
String subCommand = args[0].toLowerCase();
|
sendHelpMessage(player);
|
||||||
|
return true;
|
||||||
switch (subCommand) {
|
}
|
||||||
case "add":
|
|
||||||
if (args.length != 2) {
|
String subCommand = args[0].toLowerCase();
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.add-usage", "&cVerwendung: /friend add <Spielername>")));
|
|
||||||
return true;
|
switch (subCommand) {
|
||||||
}
|
case "add":
|
||||||
handleFriendAdd(player, args[1]);
|
if (args.length != 2) {
|
||||||
break;
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.add-usage", "&cVerwendung: /friend add <Spielername>")));
|
||||||
|
return true;
|
||||||
case "accept":
|
}
|
||||||
if (args.length != 2) {
|
handleFriendAdd(player, args[1]);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.accept-usage", "&cVerwendung: /friend accept <Spielername>")));
|
break;
|
||||||
return true;
|
|
||||||
}
|
case "accept":
|
||||||
handleFriendAccept(player, args[1]);
|
if (args.length != 2) {
|
||||||
break;
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.accept-usage", "&cVerwendung: /friend accept <Spielername>")));
|
||||||
|
return true;
|
||||||
case "deny":
|
}
|
||||||
if (args.length != 2) {
|
handleFriendAccept(player, args[1]);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.deny-usage", "&cVerwendung: /friend deny <Spielername>")));
|
break;
|
||||||
return true;
|
|
||||||
}
|
case "deny":
|
||||||
handleFriendDeny(player, args[1]);
|
if (args.length != 2) {
|
||||||
break;
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.deny-usage", "&cVerwendung: /friend deny <Spielername>")));
|
||||||
|
return true;
|
||||||
case "list":
|
}
|
||||||
if (args.length != 1) {
|
handleFriendDeny(player, args[1]);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.list-usage", "&cVerwendung: /friend list")));
|
break;
|
||||||
return true;
|
|
||||||
}
|
case "list":
|
||||||
handleFriendList(player);
|
if (args.length != 1) {
|
||||||
break;
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.list-usage", "&cVerwendung: /friend list")));
|
||||||
|
return true;
|
||||||
case "del":
|
}
|
||||||
if (args.length != 2) {
|
handleFriendList(player);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.del-usage", "&cVerwendung: /friend del <Spielername>")));
|
break;
|
||||||
return true;
|
|
||||||
}
|
case "del":
|
||||||
handleFriendDelete(player, args[1]);
|
if (args.length != 2) {
|
||||||
break;
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.del-usage", "&cVerwendung: /friend del <Spielername>")));
|
||||||
|
return true;
|
||||||
case "tp":
|
}
|
||||||
if (args.length != 2) {
|
handleFriendDelete(player, args[1]);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.tp-usage", "&cVerwendung: /friend tp <Spielername>")));
|
break;
|
||||||
return true;
|
|
||||||
}
|
case "confirm":
|
||||||
handleFriendTeleport(player, args[1]);
|
if (args.length != 2) {
|
||||||
break;
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.confirm-usage", "&cVerwendung: /friend confirm <Spielername>")));
|
||||||
|
return true;
|
||||||
default:
|
}
|
||||||
sendHelpMessage(player);
|
handleFriendConfirmDelete(player, args[1]);
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
case "tp":
|
||||||
return true;
|
if (args.length != 2) {
|
||||||
}
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.tp-usage", "&cVerwendung: /friend tp <Spielername>")));
|
||||||
|
return true;
|
||||||
private void sendHelpMessage(Player player) {
|
}
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.header", "&6=== Freundesliste Hilfe ===")));
|
handleFriendTeleport(player, args[1]);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.add", "&e/friend add <Spielername> &7- Freundschaftsanfrage senden")));
|
break;
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.accept", "&e/friend accept <Spielername> &7- Freundschaftsanfrage akzeptieren")));
|
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.deny", "&e/friend deny <Spielername> &7- Freundschaftsanfrage ablehnen")));
|
default:
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.list", "&e/friend list &7- Liste deiner Freunde anzeigen")));
|
sendHelpMessage(player);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.del", "&e/friend del <Spielername> &7- Freund aus der Liste entfernen")));
|
break;
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.tp", "&e/friend tp <Spielername> &7- Zu einem Freund teleportieren")));
|
}
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.footer", "&6=====================")));
|
|
||||||
}
|
return true;
|
||||||
|
}
|
||||||
private void handleFriendAdd(Player player, String targetName) {
|
|
||||||
Player target = Bukkit.getPlayerExact(targetName);
|
private void sendHelpMessage(Player player) {
|
||||||
if (target == null) {
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.header", "&6=== Freundesliste Hilfe ===")));
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", targetName)));
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.add", "&e/friend add <Spielername> &7- Freundschaftsanfrage senden")));
|
||||||
return;
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.accept", "&e/friend accept <Spielername> &7- Freundschaftsanfrage akzeptieren")));
|
||||||
}
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.deny", "&e/friend deny <Spielername> &7- Freundschaftsanfrage ablehnen")));
|
||||||
if (target.getUniqueId().equals(player.getUniqueId())) {
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.list", "&e/friend list &7- Liste deiner Freunde anzeigen")));
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.self", "&cDu kannst dich nicht selbst hinzufügen!")));
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.del", "&e/friend del <Spielername> &7- Freund aus der Liste entfernen")));
|
||||||
return;
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.tp", "&e/friend tp <Spielername> &7- Zu einem Freund teleportieren")));
|
||||||
}
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.help.footer", "&6=====================")));
|
||||||
|
}
|
||||||
UUID playerUUID = player.getUniqueId();
|
|
||||||
UUID targetUUID = target.getUniqueId();
|
private void handleFriendAdd(Player player, String targetName) {
|
||||||
List<String> playerFriends = friendsConfig.getStringList(playerUUID + ".friends");
|
Player target = Bukkit.getPlayerExact(targetName);
|
||||||
List<String> pendingRequests = friendsConfig.getStringList(targetUUID + ".pending_requests");
|
if (target == null) {
|
||||||
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", targetName)));
|
||||||
if (playerFriends.contains(targetUUID.toString())) {
|
return;
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.already-friends", "&cDu bist bereits mit %s befreundet!").replace("%s", targetName)));
|
}
|
||||||
return;
|
if (target.getUniqueId().equals(player.getUniqueId())) {
|
||||||
}
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.self", "&cDu kannst dich nicht selbst hinzufügen!")));
|
||||||
|
return;
|
||||||
if (pendingRequests.contains(playerUUID.toString())) {
|
}
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.request-pending", "&cDu hast bereits eine Anfrage an %s gesendet!").replace("%s", targetName)));
|
|
||||||
return;
|
UUID playerUUID = player.getUniqueId();
|
||||||
}
|
UUID targetUUID = target.getUniqueId();
|
||||||
|
List<String> playerFriends = friendsConfig.getStringList(playerUUID + ".friends");
|
||||||
pendingRequests.add(playerUUID.toString());
|
List<String> pendingRequests = friendsConfig.getStringList(targetUUID + ".pending_requests");
|
||||||
friendsConfig.set(targetUUID + ".pending_requests", pendingRequests);
|
|
||||||
friendsConfig.set(targetUUID + ".name", targetName); // Speichere den Namen für Offline-Lookups
|
if (playerFriends.contains(targetUUID.toString())) {
|
||||||
saveFriendsConfig();
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.already-friends", "&cDu bist bereits mit %s befreundet!").replace("%s", targetName)));
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.add.sent", "&aFreundschaftsanfrage an %s gesendet!").replace("%s", targetName)));
|
return;
|
||||||
target.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.add.received", "&aDu hast eine Freundschaftsanfrage von %s erhalten! Verwende /friend accept %s oder /friend deny %s.").replace("%s", player.getName())));
|
}
|
||||||
logger.info("Freundschaftsanfrage von " + player.getName() + " an " + targetName + " gesendet.");
|
|
||||||
}
|
if (pendingRequests.contains(playerUUID.toString())) {
|
||||||
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.request-pending", "&cDu hast bereits eine Anfrage an %s gesendet!").replace("%s", targetName)));
|
||||||
private void handleFriendAccept(Player player, String requesterName) {
|
return;
|
||||||
Player requester = Bukkit.getPlayerExact(requesterName);
|
}
|
||||||
if (requester == null) {
|
|
||||||
UUID requesterUUID = getUUIDFromName(requesterName);
|
pendingRequests.add(playerUUID.toString());
|
||||||
if (requesterUUID == null) {
|
friendsConfig.set(targetUUID + ".pending_requests", pendingRequests);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", requesterName)));
|
friendsConfig.set(targetUUID + ".name", targetName);
|
||||||
return;
|
saveFriendsConfig();
|
||||||
}
|
|
||||||
acceptFriendRequest(player, requesterUUID, requesterName);
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.add.sent", "&aFreundschaftsanfrage an %s gesendet!").replace("%s", targetName)));
|
||||||
} else {
|
|
||||||
acceptFriendRequest(player, requester.getUniqueId(), requesterName);
|
TextComponent message = new TextComponent(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.add.received", "&aDu hast eine Freundschaftsanfrage von %s erhalten! ").replace("%s", player.getName())));
|
||||||
}
|
TextComponent accept = new TextComponent(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.add.accept-button", "&a[Accept]")));
|
||||||
}
|
accept.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/friend accept " + player.getName()));
|
||||||
|
TextComponent deny = new TextComponent(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.add.deny-button", "&c [Deny]")));
|
||||||
private void acceptFriendRequest(Player player, UUID requesterUUID, String requesterName) {
|
deny.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/friend deny " + player.getName()));
|
||||||
UUID playerUUID = player.getUniqueId();
|
message.addExtra(accept);
|
||||||
List<String> pendingRequests = friendsConfig.getStringList(playerUUID + ".pending_requests");
|
message.addExtra(deny);
|
||||||
|
target.spigot().sendMessage(message);
|
||||||
if (!pendingRequests.contains(requesterUUID.toString())) {
|
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.no-request", "&cKeine Anfrage von %s gefunden!").replace("%s", requesterName)));
|
logger.info("Freundschaftsanfrage von " + player.getName() + " an " + targetName + " gesendet.");
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
private void handleFriendAccept(Player player, String requesterName) {
|
||||||
pendingRequests.remove(requesterUUID.toString());
|
Player requester = Bukkit.getPlayerExact(requesterName);
|
||||||
friendsConfig.set(playerUUID + ".pending_requests", pendingRequests);
|
if (requester == null) {
|
||||||
|
UUID requesterUUID = getUUIDFromName(requesterName);
|
||||||
List<String> playerFriends = friendsConfig.getStringList(playerUUID + ".friends");
|
if (requesterUUID == null) {
|
||||||
List<String> requesterFriends = friendsConfig.getStringList(requesterUUID + ".friends");
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", requesterName)));
|
||||||
|
return;
|
||||||
playerFriends.add(requesterUUID.toString());
|
}
|
||||||
requesterFriends.add(playerUUID.toString());
|
acceptFriendRequest(player, requesterUUID, requesterName);
|
||||||
|
} else {
|
||||||
friendsConfig.set(playerUUID + ".friends", playerFriends);
|
acceptFriendRequest(player, requester.getUniqueId(), requesterName);
|
||||||
friendsConfig.set(playerUUID + ".name", player.getName()); // Speichere den Namen für Offline-Lookups
|
}
|
||||||
friendsConfig.set(requesterUUID + ".friends", requesterFriends);
|
}
|
||||||
friendsConfig.set(requesterUUID + ".name", requesterName); // Speichere den Namen für Offline-Lookups
|
|
||||||
|
private void acceptFriendRequest(Player player, UUID requesterUUID, String requesterName) {
|
||||||
saveFriendsConfig();
|
UUID playerUUID = player.getUniqueId();
|
||||||
|
List<String> pendingRequests = friendsConfig.getStringList(playerUUID + ".pending_requests");
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.accept.success", "&aDu bist jetzt mit %s befreundet!").replace("%s", requesterName)));
|
|
||||||
Player requester = Bukkit.getPlayer(requesterUUID);
|
if (!pendingRequests.contains(requesterUUID.toString())) {
|
||||||
if (requester != null) {
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.no-request", "&cKeine Anfrage von %s gefunden!").replace("%s", requesterName)));
|
||||||
requester.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.accept.notify", "&a%s hat deine Freundschaftsanfrage akzeptiert!").replace("%s", player.getName())));
|
return;
|
||||||
}
|
}
|
||||||
logger.info(player.getName() + " hat die Freundschaftsanfrage von " + requesterName + " akzeptiert.");
|
|
||||||
}
|
pendingRequests.remove(requesterUUID.toString());
|
||||||
|
friendsConfig.set(playerUUID + ".pending_requests", pendingRequests);
|
||||||
private void handleFriendDeny(Player player, String requesterName) {
|
|
||||||
UUID requesterUUID = getUUIDFromName(requesterName);
|
List<String> playerFriends = friendsConfig.getStringList(playerUUID + ".friends");
|
||||||
if (requesterUUID == null) {
|
List<String> requesterFriends = friendsConfig.getStringList(requesterUUID + ".friends");
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", requesterName)));
|
|
||||||
return;
|
playerFriends.add(requesterUUID.toString());
|
||||||
}
|
requesterFriends.add(playerUUID.toString());
|
||||||
|
|
||||||
UUID playerUUID = player.getUniqueId();
|
friendsConfig.set(playerUUID + ".friends", playerFriends);
|
||||||
List<String> pendingRequests = friendsConfig.getStringList(playerUUID + ".pending_requests");
|
friendsConfig.set(playerUUID + ".name", player.getName());
|
||||||
|
friendsConfig.set(requesterUUID + ".friends", requesterFriends);
|
||||||
if (!pendingRequests.contains(requesterUUID.toString())) {
|
friendsConfig.set(requesterUUID + ".name", requesterName);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.no-request", "&cKeine Anfrage von %s gefunden!").replace("%s", requesterName)));
|
|
||||||
return;
|
saveFriendsConfig();
|
||||||
}
|
|
||||||
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.accept.success", "&aDu bist jetzt mit %s befreundet!").replace("%s", requesterName)));
|
||||||
pendingRequests.remove(requesterUUID.toString());
|
Player requester = Bukkit.getPlayer(requesterUUID);
|
||||||
friendsConfig.set(playerUUID + ".pending_requests", pendingRequests);
|
if (requester != null) {
|
||||||
saveFriendsConfig();
|
requester.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.accept.notify", "&a%s hat deine Freundschaftsanfrage akzeptiert!").replace("%s", player.getName())));
|
||||||
|
}
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.deny.success", "&aFreundschaftsanfrage von %s abgelehnt.").replace("%s", requesterName)));
|
logger.info(player.getName() + " hat die Freundschaftsanfrage von " + requesterName + " akzeptiert.");
|
||||||
Player requester = Bukkit.getPlayer(requesterUUID);
|
}
|
||||||
if (requester != null) {
|
|
||||||
requester.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.deny.notify", "&c%s hat deine Freundschaftsanfrage abgelehnt.").replace("%s", player.getName())));
|
private void handleFriendDeny(Player player, String requesterName) {
|
||||||
}
|
UUID requesterUUID = getUUIDFromName(requesterName);
|
||||||
logger.info(player.getName() + " hat die Freundschaftsanfrage von " + requesterName + " abgelehnt.");
|
if (requesterUUID == null) {
|
||||||
}
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", requesterName)));
|
||||||
|
return;
|
||||||
private void handleFriendList(Player player) {
|
}
|
||||||
UUID playerUUID = player.getUniqueId();
|
|
||||||
List<String> friendUUIDs = friendsConfig.getStringList(playerUUID + ".friends");
|
UUID playerUUID = player.getUniqueId();
|
||||||
|
List<String> pendingRequests = friendsConfig.getStringList(playerUUID + ".pending_requests");
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.header", "&6=== Deine Freundesliste ===")));
|
|
||||||
if (friendUUIDs.isEmpty()) {
|
if (!pendingRequests.contains(requesterUUID.toString())) {
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.empty", "&7Du hast keine Freunde.")));
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.no-request", "&cKeine Anfrage von %s gefunden!").replace("%s", requesterName)));
|
||||||
} else {
|
return;
|
||||||
for (String friendUUID : friendUUIDs) {
|
}
|
||||||
String friendName = getNameFromUUID(UUID.fromString(friendUUID));
|
|
||||||
Player friend = Bukkit.getPlayer(UUID.fromString(friendUUID));
|
pendingRequests.remove(requesterUUID.toString());
|
||||||
String status = friend != null ? langConfig.getString("friend.list.online", "&aOnline") : langConfig.getString("friend.list.offline", "&7Offline");
|
friendsConfig.set(playerUUID + ".pending_requests", pendingRequests);
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.entry", "&e%s: %s").replaceFirst("%s", friendName).replaceFirst("%s", status)));
|
saveFriendsConfig();
|
||||||
}
|
|
||||||
}
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.deny.success", "&aFreundschaftsanfrage von %s abgelehnt.").replace("%s", requesterName)));
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.footer", "&6=====================")));
|
Player requester = Bukkit.getPlayer(requesterUUID);
|
||||||
logger.info("Freundesliste für " + player.getName() + " angezeigt.");
|
if (requester != null) {
|
||||||
}
|
requester.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.deny.notify", "&c%s hat deine Freundschaftsanfrage abgelehnt.").replace("%s", player.getName())));
|
||||||
|
}
|
||||||
private void handleFriendDelete(Player player, String friendName) {
|
logger.info(player.getName() + " hat die Freundschaftsanfrage von " + requesterName + " abgelehnt.");
|
||||||
UUID friendUUID = getUUIDFromName(friendName);
|
}
|
||||||
if (friendUUID == null) {
|
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", friendName)));
|
private void handleFriendList(Player player) {
|
||||||
return;
|
UUID playerUUID = player.getUniqueId();
|
||||||
}
|
List<String> friendUUIDs = friendsConfig.getStringList(playerUUID + ".friends");
|
||||||
|
|
||||||
UUID playerUUID = player.getUniqueId();
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.header", "&6=== Deine Freundesliste ===")));
|
||||||
List<String> playerFriends = friendsConfig.getStringList(playerUUID + ".friends");
|
if (friendUUIDs.isEmpty()) {
|
||||||
List<String> friendFriends = friendsConfig.getStringList(friendUUID + ".friends");
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.empty", "&7Du hast keine Freunde.")));
|
||||||
|
} else {
|
||||||
if (!playerFriends.contains(friendUUID.toString())) {
|
SimpleDateFormat dateFormat = new SimpleDateFormat(langConfig.getString("friend.list.date-format", "dd.MM.yyyy HH:mm:ss"));
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.not-friends", "&c%s ist nicht in deiner Freundesliste!").replace("%s", friendName)));
|
for (String friendUUID : friendUUIDs) {
|
||||||
return;
|
String friendName = getNameFromUUID(UUID.fromString(friendUUID));
|
||||||
}
|
Player friend = Bukkit.getPlayer(UUID.fromString(friendUUID));
|
||||||
|
TextComponent entry = new TextComponent();
|
||||||
playerFriends.remove(friendUUID.toString());
|
|
||||||
friendFriends.remove(playerUUID.toString());
|
if (friend != null) {
|
||||||
|
entry.addExtra(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.entry", "&e%s: %s").replaceFirst("%s", friendName).replaceFirst("%s", langConfig.getString("friend.list.online", "&aOnline"))));
|
||||||
friendsConfig.set(playerUUID + ".friends", playerFriends);
|
} else {
|
||||||
friendsConfig.set(friendUUID + ".friends", friendFriends);
|
long lastOnline = friendsConfig.getLong(friendUUID + ".last-online", 0);
|
||||||
saveFriendsConfig();
|
String lastOnlineStr = lastOnline > 0 ? dateFormat.format(new Date(lastOnline)) : langConfig.getString("friend.list.unknown", "&7Unbekannt");
|
||||||
|
entry.addExtra(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.entry-offline", "&e%s: %s &7(Zuletzt online: %s)").replaceFirst("%s", friendName).replaceFirst("%s", langConfig.getString("friend.list.offline", "&7Offline")).replace("%s", lastOnlineStr)));
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.del.success", "&a%s wurde aus deiner Freundesliste entfernt.").replace("%s", friendName)));
|
}
|
||||||
Player friend = Bukkit.getPlayer(friendUUID);
|
|
||||||
if (friend != null) {
|
TextComponent removeButton = new TextComponent(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.remove-button", "&c[X]")));
|
||||||
friend.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.del.notify", "&c%s hat dich aus seiner Freundesliste entfernt.").replace("%s", player.getName())));
|
removeButton.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/friend del " + friendName));
|
||||||
}
|
entry.addExtra(" ");
|
||||||
logger.info(player.getName() + " hat " + friendName + " aus der Freundesliste entfernt.");
|
entry.addExtra(removeButton);
|
||||||
}
|
|
||||||
|
player.spigot().sendMessage(entry);
|
||||||
private void handleFriendTeleport(Player player, String friendName) {
|
}
|
||||||
Player friend = Bukkit.getPlayerExact(friendName);
|
}
|
||||||
if (friend == null) {
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.list.footer", "&6=====================")));
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", friendName)));
|
logger.info("Freundesliste für " + player.getName() + " angezeigt.");
|
||||||
return;
|
}
|
||||||
}
|
|
||||||
|
private void handleFriendDelete(Player player, String friendName) {
|
||||||
UUID playerUUID = player.getUniqueId();
|
UUID friendUUID = getUUIDFromName(friendName);
|
||||||
UUID friendUUID = friend.getUniqueId();
|
if (friendUUID == null) {
|
||||||
List<String> playerFriends = friendsConfig.getStringList(playerUUID + ".friends");
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", friendName)));
|
||||||
|
return;
|
||||||
if (!playerFriends.contains(friendUUID.toString())) {
|
}
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.not-friends", "&c%s ist nicht in deiner Freundesliste!").replace("%s", friendName)));
|
|
||||||
return;
|
UUID playerUUID = player.getUniqueId();
|
||||||
}
|
List<String> playerFriends = friendsConfig.getStringList(playerUUID + ".friends");
|
||||||
|
|
||||||
if (!player.getWorld().equals(friend.getWorld())) {
|
if (!playerFriends.contains(friendUUID.toString())) {
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.different-world", "&cIhr müsst in derselben Welt sein, um zu teleportieren!")));
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.not-friends", "&c%s ist nicht in deiner Freundesliste!").replace("%s", friendName)));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.teleport(friend.getLocation());
|
TextComponent confirmMessage = new TextComponent(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.del.confirm", "&cMöchtest du %s wirklich aus deiner Freundesliste entfernen? ").replace("%s", friendName)));
|
||||||
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.tp.success", "&aDu wurdest zu %s teleportiert!").replace("%s", friendName)));
|
TextComponent confirmButton = new TextComponent(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.del.confirm-button", "&a[Confirm]")));
|
||||||
friend.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.tp.notify", "&a%s hat sich zu dir teleportiert.").replace("%s", player.getName())));
|
confirmButton.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/friend confirm " + friendName));
|
||||||
logger.info(player.getName() + " hat sich zu " + friendName + " teleportiert.");
|
TextComponent cancelButton = new TextComponent(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.del.cancel-button", "&c[Cancel]")));
|
||||||
}
|
cancelButton.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/friend list"));
|
||||||
|
confirmMessage.addExtra(confirmButton);
|
||||||
private UUID getUUIDFromName(String name) {
|
confirmMessage.addExtra(" ");
|
||||||
Player target = Bukkit.getPlayerExact(name);
|
confirmMessage.addExtra(cancelButton);
|
||||||
if (target != null) {
|
player.spigot().sendMessage(confirmMessage);
|
||||||
return target.getUniqueId();
|
|
||||||
}
|
logger.info(player.getName() + " wurde zur Bestätigung aufgefordert, " + friendName + " aus der Freundesliste zu entfernen.");
|
||||||
// Fallback für Offline-Spieler
|
}
|
||||||
for (String key : friendsConfig.getKeys(false)) {
|
|
||||||
try {
|
private void handleFriendConfirmDelete(Player player, String friendName) {
|
||||||
UUID uuid = UUID.fromString(key);
|
UUID friendUUID = getUUIDFromName(friendName);
|
||||||
String storedName = friendsConfig.getString(key + ".name");
|
if (friendUUID == null) {
|
||||||
if (storedName != null && storedName.equalsIgnoreCase(name)) {
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", friendName)));
|
||||||
return uuid;
|
return;
|
||||||
}
|
}
|
||||||
} catch (IllegalArgumentException ignored) {
|
|
||||||
}
|
UUID playerUUID = player.getUniqueId();
|
||||||
}
|
List<String> playerFriends = friendsConfig.getStringList(playerUUID + ".friends");
|
||||||
return null;
|
List<String> friendFriends = friendsConfig.getStringList(friendUUID + ".friends");
|
||||||
}
|
|
||||||
|
if (!playerFriends.contains(friendUUID.toString())) {
|
||||||
private String getNameFromUUID(UUID uuid) {
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.not-friends", "&c%s ist nicht in deiner Freundesliste!").replace("%s", friendName)));
|
||||||
Player player = Bukkit.getPlayer(uuid);
|
return;
|
||||||
if (player != null) {
|
}
|
||||||
return player.getName();
|
|
||||||
}
|
playerFriends.remove(friendUUID.toString());
|
||||||
String storedName = friendsConfig.getString(uuid + ".name");
|
friendFriends.remove(playerUUID.toString());
|
||||||
if (storedName != null) {
|
|
||||||
return storedName;
|
friendsConfig.set(playerUUID + ".friends", playerFriends);
|
||||||
}
|
friendsConfig.set(friendUUID + ".friends", friendFriends);
|
||||||
return uuid.toString(); // Fallback auf UUID, falls Name nicht gefunden
|
saveFriendsConfig();
|
||||||
}
|
|
||||||
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.del.success", "&a%s wurde aus deiner Freundesliste entfernt.").replace("%s", friendName)));
|
||||||
private void saveFriendsConfig() {
|
Player friend = Bukkit.getPlayer(friendUUID);
|
||||||
try {
|
if (friend != null) {
|
||||||
friendsConfig.save(new File(plugin.getDataFolder(), "friends.yml"));
|
friend.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.del.notify", "&c%s hat dich aus seiner Freundesliste entfernt.").replace("%s", player.getName())));
|
||||||
logger.fine("friends.yml erfolgreich gespeichert.");
|
}
|
||||||
} catch (IOException e) {
|
logger.info(player.getName() + " hat " + friendName + " aus der Freundesliste entfernt.");
|
||||||
logger.severe("Fehler beim Speichern der friends.yml: " + e.getMessage());
|
}
|
||||||
e.printStackTrace();
|
|
||||||
}
|
private void handleFriendTeleport(Player player, String friendName) {
|
||||||
}
|
Player friend = Bukkit.getPlayerExact(friendName);
|
||||||
|
if (friend == null) {
|
||||||
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.player-not-found", "&cSpieler %s nicht gefunden!").replace("%s", friendName)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
UUID playerUUID = player.getUniqueId();
|
||||||
|
UUID friendUUID = friend.getUniqueId();
|
||||||
|
List<String> playerFriends = friendsConfig.getStringList(playerUUID + ".friends");
|
||||||
|
|
||||||
|
if (!playerFriends.contains(friendUUID.toString())) {
|
||||||
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.not-friends", "&c%s ist nicht in deiner Freundesliste!").replace("%s", friendName)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!player.getWorld().equals(friend.getWorld())) {
|
||||||
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.error.different-world", "&cIhr müsst in derselben Welt sein, um zu teleportieren!")));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.teleport(friend.getLocation());
|
||||||
|
player.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.tp.success", "&aDu wurdest zu %s teleportiert!").replace("%s", friendName)));
|
||||||
|
friend.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.tp.notify", "&a%s hat sich zu dir teleportiert.").replace("%s", player.getName())));
|
||||||
|
logger.info(player.getName() + " hat sich zu " + friendName + " teleportiert.");
|
||||||
|
}
|
||||||
|
|
||||||
|
private UUID getUUIDFromName(String name) {
|
||||||
|
Player target = Bukkit.getPlayerExact(name);
|
||||||
|
if (target != null) {
|
||||||
|
return target.getUniqueId();
|
||||||
|
}
|
||||||
|
for (String key : friendsConfig.getKeys(false)) {
|
||||||
|
try {
|
||||||
|
UUID uuid = UUID.fromString(key);
|
||||||
|
String storedName = friendsConfig.getString(key + ".name");
|
||||||
|
if (storedName != null && storedName.equalsIgnoreCase(name)) {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
} catch (IllegalArgumentException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getNameFromUUID(UUID uuid) {
|
||||||
|
Player player = Bukkit.getPlayer(uuid);
|
||||||
|
if (player != null) {
|
||||||
|
return player.getName();
|
||||||
|
}
|
||||||
|
String storedName = friendsConfig.getString(uuid + ".name");
|
||||||
|
if (storedName != null) {
|
||||||
|
return storedName;
|
||||||
|
}
|
||||||
|
return uuid.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveFriendsConfig() {
|
||||||
|
try {
|
||||||
|
friendsConfig.save(new File(plugin.getDataFolder(), "friends.yml"));
|
||||||
|
logger.fine("friends.yml erfolgreich gespeichert.");
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.severe("Fehler beim Speichern der friends.yml: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void notifyFriendsOfJoin(Player player) {
|
||||||
|
UUID playerUUID = player.getUniqueId();
|
||||||
|
for (String friendUUIDStr : friendsConfig.getStringList(playerUUID + ".friends")) {
|
||||||
|
Player friend = Bukkit.getPlayer(UUID.fromString(friendUUIDStr));
|
||||||
|
if (friend != null) {
|
||||||
|
friend.sendMessage(ChatColor.translateAlternateColorCodes('&', langConfig.getString("friend.join.notify", "&aDein Freund %s ist dem Server beigetreten.").replace("%s", player.getName())));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateLastOnline(Player player) {
|
||||||
|
UUID playerUUID = player.getUniqueId();
|
||||||
|
friendsConfig.set(playerUUID + ".last-online", System.currentTimeMillis());
|
||||||
|
saveFriendsConfig();
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user