package com.example.robplugin;
import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.java.JavaPlugin;
import java.util.Random;
public class RobPlugin extends JavaPlugin { private static Economy economy;
@Override
public void onEnable() {
if (!setupEconomy()) {
getLogger().severe("Vault не найден! Отключение плагина...");
getServer().getPluginManager().disablePlugin(this);
return;
}
this.getCommand("rob").setExecutor(new RobCommand());
}
private boolean setupEconomy() {
RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(Economy.class);
if (economyProvider != null) {
economy = economyProvider.getProvider();
}
return (economy != null);
}
public static Economy getEconomy() {
return economy;
}
}
class RobCommand implements CommandExecutor { private final Random random = new Random();
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "Только игроки могут использовать эту команду.");
return true;
}
Player robber = (Player) sender;
if (!robber.hasPermission("robplugin.rob")) {
robber.sendMessage(ChatColor.RED + "У вас нет разрешения на ограбление!");
return true;
}
if (args.length != 1) {
robber.sendMessage(ChatColor.RED + "Использование: /rob <игрок>");
return true;
}
Player victim = Bukkit.getPlayer(args[0]);
if (victim == null || !victim.isOnline()) {
robber.sendMessage(ChatColor.RED + "Игрок не найден или не в сети.");
return true;
}
if (victim == robber) {
robber.sendMessage(ChatColor.RED + "Вы не можете ограбить себя!");
return true;
}
double victimBalance = RobPlugin.getEconomy().getBalance(victim);
if (victimBalance < 100) {
robber.sendMessage(ChatColor.RED + "У этого игрока слишком мало денег для ограбления.");
return true;
}
double amountToRob = Math.min(800, Math.max(100, random.nextDouble() * victimBalance));
RobPlugin.getEconomy().withdrawPlayer(victim, amountToRob);
RobPlugin.getEconomy().depositPlayer(robber, amountToRob);
robber.sendMessage(ChatColor.GREEN + "Вы ограбили " + victim.getName() + " на " + amountToRob + "$!");
victim.sendMessage(ChatColor.RED + "Вас ограбили на " + amountToRob + "$ игроком " + robber.getName() + "!");
return true;
}
}