Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Почему не вставляется schematic

Статус
Закрыто для дальнейших ответов.
team.remove(p); наверняка убирает игрока из redTeam. Если так, то изучайте итераторы.
Я прочитал про итераторы, вставил в свой код, и ничего не работает(
Вот код:
Код:
Team team = TeamManager.getInstance().getTeam(p);
                Team redTeam = TeamManager.getInstance().getTeam("Red", arena);
                Team blueTeam = TeamManager.getInstance().getTeam("Blue", arena);
               
                Iterator<Player> liRed = redTeam.getPlayers().iterator();
                Iterator<Player> liBlue = blueTeam.getPlayers().iterator();
               
                if (team == redTeam) {
                    team.setScore(team.getScore() + 1);
                   
                    arena.sendMessage(MessageType.INFO, p.getName() + " сломал обсидиан! Счёт: " +
                            "Красные- " + redTeam.getScore() +
                            " Синие- " + blueTeam.getScore());
                    if (redTeam.getScore() == 3 && blueTeam.getScore() == 0) {
                        arena.sendMessage(MessageType.INFO, "Красная команда победила!");
                       
                        while (liRed.hasNext()) {
                            Player redPlayer = liRed.next();
                           
                            redPlayer.sendMessage(ChatColor.GREEN + "==============================");
                            redPlayer.sendMessage("Металиков заработано:");
                            redPlayer.sendMessage("");
                            redPlayer.sendMessage(ChatColor.GREEN + "+10 металиков" + ChatColor.RESET + " - За игру");
                            redPlayer.sendMessage(ChatColor.GREEN + "+10 металиков" + ChatColor.RESET + " - За победу");
                           
                            econ.depositPlayer(redPlayer.getName(), 20);
                            if (redPlayer.hasPermission(vip)) {
                                econ.depositPlayer(redPlayer.getName(), 2);
                                redPlayer.sendMessage(ChatColor.GREEN + "+2 металиков" + ChatColor.RESET + " - За " + ChatColor.GOLD + "VIP");
                            }
                            if (redPlayer.hasPermission(ultra)) {
                                econ.depositPlayer(redPlayer.getName(), 5);
                                redPlayer.sendMessage(ChatColor.GREEN + "+5 металиков" + ChatColor.RESET + " - За " + ChatColor.DARK_PURPLE + "ULTRA");
                            }
                            if (redPlayer.hasPermission(hero)) {
                                econ.depositPlayer(redPlayer.getName(), 15);
                                redPlayer.sendMessage(ChatColor.GREEN + "+15 металиков" + ChatColor.RESET + " - За " + ChatColor.GREEN + "HERO");
                            }
                            redPlayer.sendMessage("");
                            redPlayer.sendMessage("Ваш баланс: " + ChatColor.GREEN + econ.getBalance(redPlayer.getName()));
                            redPlayer.sendMessage(ChatColor.GREEN + "==============================");
                           
                            redTeam.setScore(0);
                            blueTeam.setScore(0);
                           
                            arena.removePlayer(p);
                            team.remove(p);
                            if (KitManager.getInstance().getKit(p) != null) {
                                KitManager.getInstance().getKit(p).removeKit(p);
                            }
                            arena.restart();
                           
                            redPlayer.remove();
                        }
                        while (liBlue.hasNext()) {
                            Player bluePlayer = liBlue.next();
                           
                            bluePlayer.sendMessage(ChatColor.GREEN + "==============================");
                            bluePlayer.sendMessage("Металиков заработано:");
                            bluePlayer.sendMessage("");
                            bluePlayer.sendMessage(ChatColor.GREEN + "+10 металиков" + ChatColor.RESET + " - За игру");
                           
                            econ.depositPlayer(bluePlayer.getName(), 10);
                            if (bluePlayer.hasPermission(vip)) {
                                econ.depositPlayer(bluePlayer.getName(), 2);
                                bluePlayer.sendMessage(ChatColor.GREEN + "+2 металиков" + ChatColor.RESET + " - За " + ChatColor.GOLD + "VIP");
                            }
                            if (bluePlayer.hasPermission(ultra)) {
                                econ.depositPlayer(bluePlayer.getName(), 5);
                                bluePlayer.sendMessage(ChatColor.GREEN + "+5 металиков" + ChatColor.RESET + " - За " + ChatColor.DARK_PURPLE + "ULTRA");
                            }
                            if (bluePlayer.hasPermission(hero)) {
                                econ.depositPlayer(bluePlayer.getName(), 15);
                                bluePlayer.sendMessage(ChatColor.GREEN + "+15 металиков" + ChatColor.RESET + " - За " + ChatColor.GREEN + "HERO");
                            }
                            bluePlayer.sendMessage("");
                            bluePlayer.sendMessage("Ваш баланс: " + ChatColor.GREEN + econ.getBalance(bluePlayer.getName()));
                            bluePlayer.sendMessage(ChatColor.GREEN + "==============================");
                           
                            redTeam.setScore(0);
                            blueTeam.setScore(0);
                           
                            arena.removePlayer(p);
                            team.remove(p);
                            if (KitManager.getInstance().getKit(p) != null) {
                                KitManager.getInstance().getKit(p).removeKit(p);
                            }
                            arena.restart();
                           
                            bluePlayer.remove();
                        }
                    }
Это только часть, но суть одна.
 
Я прочитал про итераторы, вставил в свой код, и ничего не работает(
Вот код:
Код:
Team team = TeamManager.getInstance().getTeam(p);
                Team redTeam = TeamManager.getInstance().getTeam("Red", arena);
                Team blueTeam = TeamManager.getInstance().getTeam("Blue", arena);
              
                Iterator<Player> liRed = redTeam.getPlayers().iterator();
                Iterator<Player> liBlue = blueTeam.getPlayers().iterator();
              
                if (team == redTeam) {
                    team.setScore(team.getScore() + 1);
                  
                    arena.sendMessage(MessageType.INFO, p.getName() + " сломал обсидиан! Счёт: " +
                            "Красные- " + redTeam.getScore() +
                            " Синие- " + blueTeam.getScore());
                    if (redTeam.getScore() == 3 && blueTeam.getScore() == 0) {
                        arena.sendMessage(MessageType.INFO, "Красная команда победила!");
                      
                        while (liRed.hasNext()) {
                            Player redPlayer = liRed.next();
                          
                            redPlayer.sendMessage(ChatColor.GREEN + "==============================");
                            redPlayer.sendMessage("Металиков заработано:");
                            redPlayer.sendMessage("");
                            redPlayer.sendMessage(ChatColor.GREEN + "+10 металиков" + ChatColor.RESET + " - За игру");
                            redPlayer.sendMessage(ChatColor.GREEN + "+10 металиков" + ChatColor.RESET + " - За победу");
                          
                            econ.depositPlayer(redPlayer.getName(), 20);
                            if (redPlayer.hasPermission(vip)) {
                                econ.depositPlayer(redPlayer.getName(), 2);
                                redPlayer.sendMessage(ChatColor.GREEN + "+2 металиков" + ChatColor.RESET + " - За " + ChatColor.GOLD + "VIP");
                            }
                            if (redPlayer.hasPermission(ultra)) {
                                econ.depositPlayer(redPlayer.getName(), 5);
                                redPlayer.sendMessage(ChatColor.GREEN + "+5 металиков" + ChatColor.RESET + " - За " + ChatColor.DARK_PURPLE + "ULTRA");
                            }
                            if (redPlayer.hasPermission(hero)) {
                                econ.depositPlayer(redPlayer.getName(), 15);
                                redPlayer.sendMessage(ChatColor.GREEN + "+15 металиков" + ChatColor.RESET + " - За " + ChatColor.GREEN + "HERO");
                            }
                            redPlayer.sendMessage("");
                            redPlayer.sendMessage("Ваш баланс: " + ChatColor.GREEN + econ.getBalance(redPlayer.getName()));
                            redPlayer.sendMessage(ChatColor.GREEN + "==============================");
                          
                            redTeam.setScore(0);
                            blueTeam.setScore(0);
                          
                            arena.removePlayer(p);
                            team.remove(p);
                            if (KitManager.getInstance().getKit(p) != null) {
                                KitManager.getInstance().getKit(p).removeKit(p);
                            }
                            arena.restart();
                          
                            redPlayer.remove();
                        }
                        while (liBlue.hasNext()) {
                            Player bluePlayer = liBlue.next();
                          
                            bluePlayer.sendMessage(ChatColor.GREEN + "==============================");
                            bluePlayer.sendMessage("Металиков заработано:");
                            bluePlayer.sendMessage("");
                            bluePlayer.sendMessage(ChatColor.GREEN + "+10 металиков" + ChatColor.RESET + " - За игру");
                          
                            econ.depositPlayer(bluePlayer.getName(), 10);
                            if (bluePlayer.hasPermission(vip)) {
                                econ.depositPlayer(bluePlayer.getName(), 2);
                                bluePlayer.sendMessage(ChatColor.GREEN + "+2 металиков" + ChatColor.RESET + " - За " + ChatColor.GOLD + "VIP");
                            }
                            if (bluePlayer.hasPermission(ultra)) {
                                econ.depositPlayer(bluePlayer.getName(), 5);
                                bluePlayer.sendMessage(ChatColor.GREEN + "+5 металиков" + ChatColor.RESET + " - За " + ChatColor.DARK_PURPLE + "ULTRA");
                            }
                            if (bluePlayer.hasPermission(hero)) {
                                econ.depositPlayer(bluePlayer.getName(), 15);
                                bluePlayer.sendMessage(ChatColor.GREEN + "+15 металиков" + ChatColor.RESET + " - За " + ChatColor.GREEN + "HERO");
                            }
                            bluePlayer.sendMessage("");
                            bluePlayer.sendMessage("Ваш баланс: " + ChatColor.GREEN + econ.getBalance(bluePlayer.getName()));
                            bluePlayer.sendMessage(ChatColor.GREEN + "==============================");
                          
                            redTeam.setScore(0);
                            blueTeam.setScore(0);
                          
                            arena.removePlayer(p);
                            team.remove(p);
                            if (KitManager.getInstance().getKit(p) != null) {
                                KitManager.getInstance().getKit(p).removeKit(p);
                            }
                            arena.restart();
                          
                            bluePlayer.remove();
                        }
                    }
Это только часть, но суть одна.
Вы все равно делаете team.remove(p).
 
Вообще у Вас всего очень много накручено. Упрощайте. Раскладывайте на функции. Иначе в собственном коде путаться будете постоянно. Вон, у Вас одни и те же действия происходят для синей и для красной команды. Так можно же сделать функцию, которую вызывать при необходимости... Но это так лирика.

Вы итератором проходитесь по списку игроков, который получаете посредством redTeam.getPlayers(). Уверен, что удаляя посредством team.remove(p) вы удаляете именно из этого списка. Т.е. не пользуетесь итератором для удаления.
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх