Список случайно становится пустым - Java - PullRequest
0 голосов
/ 10 февраля 2020
@Getter
@RequiredArgsConstructor
public class War {

    private final List<UUID> teamOne;
    private final List<UUID> teamTwo;
    private final WarType warType;
    private final List<UUID> teamOneAlive;
    private final List<UUID> teamTwoAlive;
    @Nullable
    private final Island winnerIsland;
}
    private void tryPrepareForWar(Set<Queue> queueSet) {
        for (Queue inQueue : queueSet) {
            if (inQueue.getUuid().equals(getPlayer().getUniqueId())) continue;
            List<UUID> teamOne = getTeamMates();
            teamOne.add(getPlayer().getUniqueId());
            List<UUID> teamTwo = inQueue.getTeamMates();
            teamTwo.add(inQueue.getUuid());
            ShardWars.getPlayerQueueManagerMap().get(inQueue.getUuid()).removeFromQueue();
            removeFromQueue();
            new WarManager(new War(teamOne, teamTwo, getWarType(), teamOne, teamTwo, null)).startWar();
            break;
        }
    }
WarManager warManager = ShardWars.getPlayerWarManagerMap().get(player.getUniqueId());
        War war = warManager.getWar();
        if (war.getTeamOneAlive().isEmpty()) {
            warManager.endWar(Core.getInstance().skyblockManager.getIsland(war.getTeamTwo().get(0)),
                    Core.getInstance().skyblockManager.getIsland(war.getTeamOne().get(0)));
            return;
        }
        if (war.getTeamTwoAlive().isEmpty()) {
            warManager.endWar(Core.getInstance().skyblockManager.getIsland(war.getTeamOne().get(0)),
                    Core.getInstance().skyblockManager.getIsland(war.getTeamTwo().get(0)));
            return;
        }
if (!ShardWars.getPlayerWarManagerMap().containsKey(player.getUniqueId()))
            return;

        WarManager warManager = ShardWars.getPlayerWarManagerMap().get(player.getUniqueId());
        War war = warManager.getWar();
        war.getTeamOneAlive().remove(player.getUniqueId());
        war.getTeamTwoAlive().remove(player.getUniqueId());
        List<ItemStack> playerInventory = Lists.newArrayList();
        IntStream.range(0, event.getDrops().size()).filter(i -> event.getDrops().get(i) != null && !event.getDrops().get(i).getType().equals(Material.AIR)).forEachOrdered(i -> {
            playerInventory.add(event.getDrops().get(i));
            event.getDrops().remove(i);
        });
        ShardWars.getInventoryContentMap().put(player.getUniqueId(), playerInventory);
        if (war.getTeamOneAlive().isEmpty()) {
            warManager.endWar(Core.getInstance().skyblockManager.getIsland(war.getTeamTwo().get(0)),
                    Core.getInstance().skyblockManager.getIsland(war.getTeamOne().get(0)));
            return;
        }
        if (war.getTeamTwoAlive().isEmpty()) {
            warManager.endWar(Core.getInstance().skyblockManager.getIsland(war.getTeamOne().get(0)),
                    Core.getInstance().skyblockManager.getIsland(war.getTeamTwo().get(0)));
            return;
        }

Я использую Spigot API и создаю плагин типа «игрок против игрока». Я использую ломбок для геттеров и конструкторов. War#getTeamOne() и War#getTeamTwo() случайно становятся пустыми. Я печатаю списки по всему коду, и он содержит значение, но перед тем, как сделать WarManager#endWar(), список пуст. Нигде в моем проекте я не могу удалить ни один из этих списков. Есть идеи, почему это так? Если вам нужно увидеть больше кода, lmk.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...