Помогите Как сделать так, чтобы игрок(target) при выходе с сервера банился?

TheKrealisYT

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
_TheKrealisYT_
Я пишу плагин на проверку игрока на читы. Команда /check.
Мне нужно, чтобы при выходе target банился, а sender'у писало, что игрок забанен, поскольку вышел с сервера. Предлагали уже сделать список с игроками, которые вызываются на проверку и потом через него банить, но мне хочется просто сделать так, чтобы прошло 10 минут и игрок банился автоматически





package ru.main.addon.events;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue;

import ru.main.addon.Main;

public class Check implements CommandExecutor {

@SuppressWarnings("deprecation")
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(cmd.getName().equals("check")) {

}
if(!(sender instanceof Player)) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.only_player").replace("&", "§"));
return true;
}

Player p = (Player)sender;
if(!(p.hasPermission("kaddon.check"))) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.noperm").replace("&", "§"));
return true;
}

if(args.length == 0) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.usage_check").replace("&", "§"));
return true;
}

String nick = args[0];
Player target = Bukkit.getPlayer(nick);
if (target == null) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.Player_notfound").replace("&", "§"));
return true;
}

if(args[0].equalsIgnoreCase(p.getName())) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.MySelf_Check").replace("&", "§"));
return true;
}

if(target.hasPermission("kaddon.bypass") || target.isOp()) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.Deny_check").replace("&", "§"));
return true;
}

if(args.length == 1) {
if(target.hasMetadata("check")) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.already_check").replace("&", "§").replace("<player>", target.getName()));
return true;
}
target.setMetadata("check", new FixedMetadataValue(Main.getInstance(), sender));

}
sender.sendMessage(Main.getInstance().getConfig().getString("check.admin_check_message").replace("&", "§").replace("<player>", target.getName()));
target.sendTitle(Main.getInstance().getConfig().getString("check.target_check_title").replace("&", "§").replace("<player>", target.getName()), null);
target.sendMessage(Main.getInstance().getConfig().getString("check.target_check_message").replace("&", "§").replace("<player>", sender.getName()));
return true;
}
}
 
Я пишу плагин на проверку игрока на читы. Команда /check.
Мне нужно, чтобы при выходе target банился, а sender'у писало, что игрок забанен, поскольку вышел с сервера. Предлагали уже сделать список с игроками, которые вызываются на проверку и потом через него банить, но мне хочется просто сделать так, чтобы прошло 10 минут и игрок банился автоматически





package ru.main.addon.events;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.metadata.FixedMetadataValue;

import ru.main.addon.Main;

public class Check implements CommandExecutor {

@SuppressWarnings("deprecation")
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(cmd.getName().equals("check")) {

}
if(!(sender instanceof Player)) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.only_player").replace("&", "§"));
return true;
}

Player p = (Player)sender;
if(!(p.hasPermission("kaddon.check"))) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.noperm").replace("&", "§"));
return true;
}

if(args.length == 0) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.usage_check").replace("&", "§"));
return true;
}

String nick = args[0];
Player target = Bukkit.getPlayer(nick);
if (target == null) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.Player_notfound").replace("&", "§"));
return true;
}

if(args[0].equalsIgnoreCase(p.getName())) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.MySelf_Check").replace("&", "§"));
return true;
}

if(target.hasPermission("kaddon.bypass") || target.isOp()) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.Deny_check").replace("&", "§"));
return true;
}

if(args.length == 1) {
if(target.hasMetadata("check")) {
sender.sendMessage(Main.getInstance().getConfig().getString("check.already_check").replace("&", "§").replace("<player>", target.getName()));
return true;
}
target.setMetadata("check", new FixedMetadataValue(Main.getInstance(), sender));

}
sender.sendMessage(Main.getInstance().getConfig().getString("check.admin_check_message").replace("&", "§").replace("<player>", target.getName()));
target.sendTitle(Main.getInstance().getConfig().getString("check.target_check_title").replace("&", "§").replace("<player>", target.getName()), null);
target.sendMessage(Main.getInstance().getConfig().getString("check.target_check_message").replace("&", "§").replace("<player>", sender.getName()));
return true;
}
}
Если я тебя правильно понял, то вот
PHP:
            String playerName = args[0];
            Date banTime = new Date(System.currentTimeMillis() - 1000L * 60L * 60L * 24L); //24 hours (1000L - 1 second)
            Bukkit.getScheduler().runTaskLater(Main.getInstance(), () -> Bukkit.getBanList(BanList.Type.NAME).addBan(playerName, "Sample reason", banTime, p.getName()), 20L * 600L); //20L - 1 second
Если нужно банить навсегда - указываешь new Date(0)
Ну и после добавления в список забаненых - просто кикаешь его с нужной тебе причиной, если он находится на сервере
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/BanList.html#addBan
 
Назад
Верх