修复踢人时玩家不在产生的空指针异常

查询这段时间里,玩家可能退出了服务器,可能在banned-players.json里面,或者不在whitelist.json里。原来直接调用kick,导致这几种情况下产生空指针异常。现在在踢出之前对玩家是否在线进行一个检测,如果玩家在线才踢出。
This commit is contained in:
zhbaor 2020-06-21 16:18:57 +08:00
parent f803cf2309
commit 64d9436419

View file

@ -1,10 +1,9 @@
package cn.cnklp.studio.UnionBanClientSpigot; package cn.cnklp.studio.UnionBanClientSpigot;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import java.util.Objects;
public class KickPlayerTask extends BukkitRunnable { public class KickPlayerTask extends BukkitRunnable {
private final String username; private final String username;
private final ClientPlugin plugin; private final ClientPlugin plugin;
@ -15,6 +14,11 @@ public class KickPlayerTask extends BukkitRunnable {
} }
public void run() { public void run() {
Objects.requireNonNull(Bukkit.getPlayer(username)).kickPlayer("You are in the UnionBan list!"); 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!");
}
} }
} }