我有一个命令,踢球员从MySQL数据库,但它不工作,当球员是离线;它不会从数据库中删除它们。
下面是我的代码:
this.ms.connect();
PreparedStatement kick = this.ms.prepare("DELETE FROM `players` WHERE `nick` = ?");
try {
kick.setString(1, args[0]);
} catch (SQLException e) {
e.printStackTrace();
}
this.ms.execute(kick);
我得到的错误是:
Caused by: java.lang.IllegalArgumentException: OfflinePlayer cannot be null
你需要使用播放器uid,如果你不能找到离线播放器的确切名称。此外,请确保所有的mySql请求都在一个新的异步线程中工作,而不是在主服务器线程中。
这是非常不清楚的,但如果nick
是玩家的用户名,那么做:
Bukkit.getOfflinePlayer(args[0]).getName()
请记住,args[0]
应该是用户名但如果它是UUID,则执行:
Bukkit.getOfflinePlayer(UUID.fromString(args[0]))