次のコードがあります
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event){
Player player = event.getPlayer();
final Player[] playerlist = getServer().getOnlinePlayers();
if (playerlist.length <=1) { // if no players are online
getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){
// this is a scheduler.
public void run(){
if(playerlist.length <=1){
getServer().shutdown();
}
}
}, 6000L); // runs every 6000 ticks, which is every 300 seconds, which is every 5 minutes.
}
}
プレイヤーが離れると、彼が最後に参加したかどうかを確認し、5分後にもう一度確認し、まだ誰もいない場合はサーバーを停止することになっています.
この行で:
if (playerlist.length <=1) { // if no players are online
私はそれを<=1にする必要があります。そうしないと、まったく機能しませんが、サーバーを離れて戻ってきて、唯一のサーバーに参加すると、サーバーも停止します。=0 で 1 未満のときは機能しませんでした。
何か案は?
これが私の更新コードです(まだ動作しません):
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event){
Player player = event.getPlayer();
final Player[] playerlist = getServer().getOnlinePlayers();
if (playerlist.length <=1) { // if no players are online
getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable(){
// this is a scheduler.
public void run(){
final Player[] playerlist = getServer().getOnlinePlayers();
if(playerlist.length <=1){
getServer().shutdown();
}
}
}, 500L); // runs every 6000 ticks, which is every 300 seconds, which is every 5 minutes.
}
}