Soft-delete copy _trash/2026-05-07T19-39-23-130Z/src/main/java/net/viper/status/modules/economy/EcoAdminCommand.java
This commit is contained in:
@@ -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 <give|take|set|check> <Spieler> [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 <Spieler>")));
|
||||||
|
sender.sendMessage(new TextComponent(c("&e/ecoadmin give <Spieler> <Betrag>")));
|
||||||
|
sender.sendMessage(new TextComponent(c("&e/ecoadmin take <Spieler> <Betrag>")));
|
||||||
|
sender.sendMessage(new TextComponent(c("&e/ecoadmin set <Spieler> <Betrag>")));
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user