Java 从迭代器Bukkit 1.16.5中获取玩家

Java 从迭代器Bukkit 1.16.5中获取玩家,java,minecraft,bukkit,Java,Minecraft,Bukkit,我有一个问题,今天让我非常疲惫,我创建了一个插件,在点击清单时将玩家添加到arraylist(我这样做是因为我不是很好),游戏只有一个,包含两个玩家,我不能确定如果一个玩家退出,通过一种方法,他可以给另一个玩家胜利,我尝试了很多方法,这是最后一种(在下面的代码中,我尝试使用一种方法,如果我远程理解它,它会向玩家发送一条胜利消息,显然它不会,然后执行LobbyJoin,这是一种将你带到大厅的方法): private void makeWinSupport(玩家赢家,玩家输家){ if(player

我有一个问题,今天让我非常疲惫,我创建了一个插件,在点击清单时将玩家添加到arraylist(我这样做是因为我不是很好),游戏只有一个,包含两个玩家,我不能确定如果一个玩家退出,通过一种方法,他可以给另一个玩家胜利,我尝试了很多方法,这是最后一种(在下面的代码中,我尝试使用一种方法,如果我远程理解它,它会向玩家发送一条胜利消息,显然它不会,然后执行LobbyJoin,这是一种将你带到大厅的方法):

private void makeWinSupport(玩家赢家,玩家输家){
if(playerGame.contains(赢家)和&playerGame.contains(输家)){
winner.sendMessage(plugin.cc(&6(!)Hai vinto!”);
游说团体(失败者);
游说团(获胜者);
玩家游戏。移除(赢家);
玩家游戏。移除(失败者);
}
}
公共无效makePlayerWin(玩家输家){
迭代器i=playerGame.Iterator();
系统输出打印项次(1);
if(i.hasNext()&&i==失败者){
makeWinSupport(i.next(),loser);
}否则{
makeWinSupport(playerGame.get(0),失败者);
}
@事件处理程序
退出时公开作废(PlayerQuit事件e){
e、 setQuitMessage(“”);
Player p=e.getPlayer();
if(playerGame.contains(p)){
makePlayerWin(p);
}
}
}
当玩家离开时,您可以使用从插件中删除他们。我举了这个例子,假设您有一个名为
yourPlayerList
的列表,其中存储了两个竞争对手,但您可以修改它以与更多玩家一起工作

@EventHandler
public void onPlayerLeave(PlayerQuitEvent event) {
    if(yourPlayerList.remove(event.getPlayer())){//only true if the player was removed from the queue, which only happens if it was in the queue originally
        Player loser=event.getPlayer();//the loser
        Player winner=yourPlayerList.get(0);//the other player is still in the queue
        makeWinSupport(winner,loser);
    }
}
不要忘记在事件管理器中注册事件

编辑:如果您想从列表中删除该玩家,并且只在剩下一名玩家时结束游戏,您可以执行以下操作:

@EventHandler
public void onPlayerLeave(PlayerQuitEvent event) {
    if(yourPlayerList.remove(event.getPlayer())&&yourPlayerList.size()==1){//removes the player and checks the amount of active players
        Player winner=yourPlayerList.get(0);
        //here you can call a method which accepts only the winning player. If you have 4 players, there is no reason to include a 'loser' player.
    }
}

对不起,我的英语不准确,我不是英国人,如果你不懂什么,我可以在这里解释你的问题?没有任何背景。试着用一句话来解释这个问题。@tibetiroka举个简单的例子,如果一名球员离开了服务器,我想拿下arraylist,了解竞争对手是谁,并让他们获胜。。你的名单上只有两名球员,对吗?@tibetiroka yea。编辑:但很快我将有最多4名球员
@EventHandler
public void onPlayerLeave(PlayerQuitEvent event) {
    if(yourPlayerList.remove(event.getPlayer())&&yourPlayerList.size()==1){//removes the player and checks the amount of active players
        Player winner=yourPlayerList.get(0);
        //here you can call a method which accepts only the winning player. If you have 4 players, there is no reason to include a 'loser' player.
    }
}