查询这段时间里,玩家可能退出了服务器,可能在banned-players.json里面,或者不在whitelist.json里。原来直接调用kick,导致这几种情况下产生空指针异常。现在在踢出之前对玩家是否在线进行一个检测,如果玩家在线才踢出。
24 lines
707 B
Java
24 lines
707 B
Java
package cn.cnklp.studio.UnionBanClientSpigot;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
public class KickPlayerTask extends BukkitRunnable {
|
|
private final String username;
|
|
private final ClientPlugin plugin;
|
|
|
|
public KickPlayerTask(ClientPlugin plugin, String username) {
|
|
this.username = username;
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
public void run() {
|
|
Player player = Bukkit.getPlayer(username);
|
|
if (player == null) {
|
|
plugin.getLogger().info("Player " + username + " is not in the server.");
|
|
} else {
|
|
player.kickPlayer("You are in the UnionBan list!");
|
|
}
|
|
}
|
|
}
|