From d32a5ce10b467e755ae1f63e6042446ab02d22ae Mon Sep 17 00:00:00 2001 From: M_Viper Date: Thu, 7 May 2026 19:39:41 +0000 Subject: [PATCH] Soft-delete copy _trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/PayCommand.java --- .../status/modules/economy/PayCommand.java | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 _trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/PayCommand.java diff --git a/_trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/PayCommand.java b/_trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/PayCommand.java new file mode 100644 index 0000000..eb87e4d --- /dev/null +++ b/_trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/PayCommand.java @@ -0,0 +1,102 @@ +package net.viper.status.modules.economy; + +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Command; +import net.md_5.bungee.api.plugin.Plugin; + +import java.util.UUID; + +/** + * /pay + * Überweist Geld an einen anderen Spieler (auch offline). + */ +public class PayCommand extends Command { + + private final Plugin plugin; + private final EconomyManager manager; + + public PayCommand(Plugin plugin, EconomyManager manager) { + super("pay", null); + this.plugin = plugin; + this.manager = manager; + } + + @Override + public void execute(CommandSender sender, String[] args) { + if (!(sender instanceof ProxiedPlayer)) { + sender.sendMessage(new TextComponent(c("&cNur Spieler können diesen Befehl nutzen."))); + return; + } + + if (args.length < 2) { + sender.sendMessage(new TextComponent(c("&eVerwendung: &f/pay "))); + return; + } + + ProxiedPlayer payer = (ProxiedPlayer) sender; + String targetName = args[0]; + double amount; + + try { + amount = Double.parseDouble(args[1].replace(",", ".")); + } catch (NumberFormatException e) { + sender.sendMessage(new TextComponent(c("&cUngültiger Betrag."))); + return; + } + + if (amount <= 0) { + sender.sendMessage(new TextComponent(c("&cDer Betrag muss größer als 0 sein."))); + return; + } + + if (targetName.equalsIgnoreCase(payer.getName())) { + sender.sendMessage(new TextComponent(c("&cDu kannst dir nicht selbst Geld überweisen."))); + return; + } + + plugin.getProxy().getScheduler().runAsync(plugin, () -> { + UUID targetUUID = manager.resolveUUID(targetName); + + if (targetUUID == null) { + payer.sendMessage(new TextComponent(c("&cSpieler &e" + targetName + " &cnicht gefunden."))); + return; + } + + double payerBalance = manager.getBalance(payer.getUniqueId()); + + if (payerBalance < amount) { + payer.sendMessage(new TextComponent(c("&cNicht genug Guthaben. Dein Kontostand: &e" + + formatAmount(payerBalance) + " $"))); + return; + } + + manager.withdraw(payer.getUniqueId(), amount); + manager.deposit(targetUUID, amount); + + payer.sendMessage(new TextComponent(c("&aErfolgreich &e" + formatAmount(amount) + + " $ &aan &e" + targetName + " &aüberwiesen."))); + payer.sendMessage(new TextComponent(c("&7Dein neues Guthaben: &e" + + formatAmount(manager.getBalance(payer.getUniqueId())) + " $"))); + + // Online-Benachrichtigung an Empfänger + ProxiedPlayer target = plugin.getProxy().getPlayer(targetUUID); + if (target != null) { + target.sendMessage(new TextComponent(c("&a" + payer.getName() + + " hat dir &e" + formatAmount(amount) + " $ &aüberwiesen."))); + target.sendMessage(new TextComponent(c("&7Dein neues Guthaben: &e" + + formatAmount(manager.getBalance(targetUUID)) + " $"))); + } + }); + } + + private static String formatAmount(double amount) { + return String.format("%,.2f", amount); + } + + private static String c(String msg) { + return ChatColor.translateAlternateColorCodes('&', msg); + } +}