From 5e396b98a932efcb80c3c3240aafd218662f8afb Mon Sep 17 00:00:00 2001 From: M_Viper Date: Thu, 7 May 2026 19:39:38 +0000 Subject: [PATCH] Soft-delete copy _trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/EcoAdminCommand.java --- .../modules/economy/EcoAdminCommand.java | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 _trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/EcoAdminCommand.java diff --git a/_trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/EcoAdminCommand.java b/_trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/EcoAdminCommand.java new file mode 100644 index 0000000..82c8796 --- /dev/null +++ b/_trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/EcoAdminCommand.java @@ -0,0 +1,134 @@ +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; + +/** + * /ecoadmin [Betrag] + * Admin-Verwaltung des Economy-Systems (auch für Offline-Spieler). + * + * Berechtigung: economy.admin + */ +public class EcoAdminCommand extends Command { + + private final Plugin plugin; + private final EconomyManager manager; + + public EcoAdminCommand(Plugin plugin, EconomyManager manager) { + super("ecoadmin", "economy.admin", "ecomod", "moneyadmin"); + this.plugin = plugin; + this.manager = manager; + } + + @Override + public void execute(CommandSender sender, String[] args) { + if (!sender.hasPermission("economy.admin")) { + sender.sendMessage(new TextComponent(c("&cKeine Berechtigung."))); + return; + } + + if (args.length < 2) { + sendHelp(sender); + return; + } + + String action = args[0].toLowerCase(); + String targetName = args[1]; + + plugin.getProxy().getScheduler().runAsync(plugin, () -> { + UUID targetUUID = manager.resolveUUID(targetName); + + if (targetUUID == null) { + sender.sendMessage(new TextComponent(c("&cSpieler &e" + targetName + " &cnicht gefunden."))); + return; + } + + switch (action) { + + case "check": { + double bal = manager.getBalance(targetUUID); + sender.sendMessage(new TextComponent(c("&7Kontostand von &e" + targetName + + "&7: &a" + formatAmount(bal) + " $"))); + break; + } + + case "give": { + if (args.length < 3) { sendHelp(sender); return; } + double amount = parseAmount(args[2]); + if (amount <= 0) { sender.sendMessage(new TextComponent(c("&cUngültiger Betrag."))); return; } + manager.deposit(targetUUID, amount); + double newBal = manager.getBalance(targetUUID); + sender.sendMessage(new TextComponent(c("&a+ " + formatAmount(amount) + + " $ &7an &e" + targetName + " &7→ Neues Guthaben: &a" + formatAmount(newBal) + " $"))); + notifyPlayer(targetUUID, c("&7Admin hat dir &a+" + formatAmount(amount) + + " $ &7gegeben. Guthaben: &a" + formatAmount(newBal) + " $")); + break; + } + + case "take": { + if (args.length < 3) { sendHelp(sender); return; } + double amount = parseAmount(args[2]); + if (amount <= 0) { sender.sendMessage(new TextComponent(c("&cUngültiger Betrag."))); return; } + boolean ok = manager.withdraw(targetUUID, amount); + if (!ok) { + sender.sendMessage(new TextComponent(c("&cNicht genug Guthaben bei &e" + targetName + "&c."))); + return; + } + double newBal = manager.getBalance(targetUUID); + sender.sendMessage(new TextComponent(c("&c- " + formatAmount(amount) + + " $ &7von &e" + targetName + " &7→ Neues Guthaben: &a" + formatAmount(newBal) + " $"))); + notifyPlayer(targetUUID, c("&7Admin hat dir &c-" + formatAmount(amount) + + " $ &7abgezogen. Guthaben: &a" + formatAmount(newBal) + " $")); + break; + } + + case "set": { + if (args.length < 3) { sendHelp(sender); return; } + double amount = parseAmount(args[2]); + if (amount < 0) { sender.sendMessage(new TextComponent(c("&cBetrag darf nicht negativ sein."))); return; } + manager.setBalance(targetUUID, amount); + sender.sendMessage(new TextComponent(c("&7Guthaben von &e" + targetName + + " &7gesetzt auf &a" + formatAmount(amount) + " $"))); + notifyPlayer(targetUUID, c("&7Dein Guthaben wurde auf &a" + formatAmount(amount) + " $ &7gesetzt.")); + break; + } + + default: + sendHelp(sender); + } + }); + } + + private void notifyPlayer(UUID uuid, String message) { + ProxiedPlayer target = plugin.getProxy().getPlayer(uuid); + if (target != null) { + target.sendMessage(new TextComponent(message)); + } + } + + private void sendHelp(CommandSender sender) { + sender.sendMessage(new TextComponent(c("&e/ecoadmin check "))); + sender.sendMessage(new TextComponent(c("&e/ecoadmin give "))); + sender.sendMessage(new TextComponent(c("&e/ecoadmin take "))); + sender.sendMessage(new TextComponent(c("&e/ecoadmin set "))); + } + + private static double parseAmount(String s) { + try { return Double.parseDouble(s.replace(",", ".")); } + catch (NumberFormatException e) { return -1; } + } + + private static String formatAmount(double amount) { + return String.format("%,.2f", amount); + } + + private static String c(String msg) { + return ChatColor.translateAlternateColorCodes('&', msg); + } +}