Помогите ArrayList очищается сам по себе

Статус
Закрыто для дальнейших ответов.

Dan_Ender

Активный участник
Пользователь
Баллы
76
Ник в Minecraft
Dan_Ender
Когда захожу в игру(joinmap) меня добавляет в PlayersInGame, но когда начинаю игру(startgame) меня там уже нет!!!
Как исправить?

Код:
package ru.Dan_Ender.bedwars.maps;

import java.util.ArrayList;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;

import ru.Dan_Ender.main.BWMenu;
import ru.Dan_Ender.main.BWUtil;

public class map1 implements Listener {
    //vars
    //locations
    World Kingdoms4x4 = Bukkit.getWorld("Kingdoms4x4");
    Location loc1 = new Location(Kingdoms4x4, 109, 52, 390);
    Location teamgreenspawn = new Location(Kingdoms4x4, 102, 10, 264);
    Location teamredspawn = new Location(Kingdoms4x4, 235, 10, 383);
    Location teambluespawn = new Location(Kingdoms4x4, -16, 10, 397);
    Location teamyellowspawn = new Location(Kingdoms4x4, 116, 10, 516);
    Location goldspawn1 = new Location(Kingdoms4x4, 112, 9, 390);
    Location goldspawn2 = new Location(Kingdoms4x4, 109, 9, 393);
    Location goldspawn3 = new Location(Kingdoms4x4, 106, 9, 390);
    Location goldspawn4 = new Location(Kingdoms4x4, 109, 9, 387);
    Location ironspawn1 = new Location(Kingdoms4x4, 109, 9, 351);
    Location ironspawn2 = new Location(Kingdoms4x4, 148, 9, 390);
    Location ironspawn3 = new Location(Kingdoms4x4, 109, 9, 429);
    Location ironspawn4 = new Location(Kingdoms4x4, 70, 9, 390);
    Location bronzespawn1 = new Location(Kingdoms4x4, 99, 8, 275);
    Location bronzespawn2 = new Location(Kingdoms4x4, -5, 8, 400);
    Location bronzespawn3 = new Location(Kingdoms4x4, 119, 8, 505);
    Location bronzespawn4 = new Location(Kingdoms4x4, 224, 8, 380);
    //teams
    ArrayList<String> PlayersInGame = new ArrayList<String>();
    ArrayList<String> TeamGreen = new ArrayList<String>();
    ArrayList<String> TeamRed = new ArrayList<String>();
    ArrayList<String> TeamYellow = new ArrayList<String>();
    ArrayList<String> TeamBlue = new ArrayList<String>();
    //players
   
    //code
    public void joinmap(Player p) {
        p.teleport(loc1);
        PlayersInGame.add(p.getName());
        p.sendMessage(PlayersInGame.toString());
        p.getInventory().setItem(0, BWUtil.create(Material.BED, 1, (byte)0, "§fBedWars | Выбор команды", null, null, null));
    }
    public void teamjoingreen(Player p) {
        TeamGreen.add(p.getName());
        p.sendMessage(PlayersInGame.toString());
        p.sendMessage("§6§lBedWars §f| Вы присоединились к команде §aЗелёных");
    }
    public void teamjoinred(Player p) {
        TeamRed.add(p.getName());
        p.sendMessage(PlayersInGame.toString());
        p.sendMessage("§6§lBedWars §f| Вы присоединились к команде §cКрасных");
    }
    public void teamjoinblue(Player p) {
        TeamBlue.add(p.getName());
        p.sendMessage(PlayersInGame.toString());
        p.sendMessage("§6§lBedWars §f| Вы присоединились к команде §9Синих");
    }
    public void teamjoinyellow(Player p) {
        TeamYellow.add(p.getName());
        p.sendMessage(PlayersInGame.toString());
        p.sendMessage("§6§lBedWars §f| Вы присоединились к команде §eЖёлтых");
    }
   
    public void startgame(Player p) {
        p.sendMessage(PlayersInGame.toString());
        if (PlayersInGame.size()==2) {
            Player p1 = Kingdoms4x4.getPlayers().get(1);
            Player p2 = Kingdoms4x4.getPlayers().get(2);
            //p1   
            if (PlayersInGame.contains(p1.getName())) {
                p1.sendMessage("BedWars | Игра началась!");
            }
            if (TeamGreen.contains(p1.getName())) {
                p1.teleport(teamgreenspawn);
            }
            if (TeamRed.contains(p1.getName())) {
                p1.teleport(teamredspawn);
            }
            if (TeamBlue.contains(p1.getName())) {
                p1.teleport(teambluespawn);
            }
            if (TeamYellow.contains(p1.getName())) {
                p1.teleport(teamyellowspawn);
            }
            //p2   
            if (PlayersInGame.contains(p2.getName())) {
                p2.sendMessage("BedWars | Игра началась!");
            }
            if (TeamGreen.contains(p2.getName())) {
                p2.teleport(teamgreenspawn);
            }
            if (TeamRed.contains(p2.getName())) {
                p2.teleport(teamredspawn);
            }
            if (TeamBlue.contains(p2.getName())) {
                p2.teleport(teambluespawn);
            }
                if (TeamYellow.contains(p2.getName())) {
                p2.teleport(teamyellowspawn);
            }
        }
       
        /*Player p1 = Kingdoms4x4.getPlayers().get(1);
        Player p2 = Kingdoms4x4.getPlayers().get(2);
        Player p3 = Kingdoms4x4.getPlayers().get(3);
        Player p4 = Kingdoms4x4.getPlayers().get(4);
        Player p5 = Kingdoms4x4.getPlayers().get(5);
        Player p6 = Kingdoms4x4.getPlayers().get(6);
        Player p7 = Kingdoms4x4.getPlayers().get(7);
        Player p8 = Kingdoms4x4.getPlayers().get(8);
        Player p9 = Kingdoms4x4.getPlayers().get(9);
        Player p10 = Kingdoms4x4.getPlayers().get(10);
        Player p11 = Kingdoms4x4.getPlayers().get(11);
        Player p12 = Kingdoms4x4.getPlayers().get(12);
        Player p13 = Kingdoms4x4.getPlayers().get(13);
        Player p14 = Kingdoms4x4.getPlayers().get(14);
        Player p15 = Kingdoms4x4.getPlayers().get(15);
        Player p16 = Kingdoms4x4.getPlayers().get(16);*/
       
        Bukkit.getScheduler().scheduleSyncRepeatingTask(Bukkit.getPluginManager().getPlugin("DWBedWars"), new Runnable() {
            public void run() {
                Kingdoms4x4.dropItem(goldspawn1, BWUtil.create(Material.GOLD_INGOT, 1, (byte)0, "§eЗолото", null, null, null));       
                Kingdoms4x4.dropItem(goldspawn2, BWUtil.create(Material.GOLD_INGOT, 1, (byte)0, "§eЗолото", null, null, null));
                Kingdoms4x4.dropItem(goldspawn3, BWUtil.create(Material.GOLD_INGOT, 1, (byte)0, "§eЗолото", null, null, null));
                Kingdoms4x4.dropItem(goldspawn4, BWUtil.create(Material.GOLD_INGOT, 1, (byte)0, "§eЗолото", null, null, null));
        }
           
        }, 0, 600L);
        Bukkit.getScheduler().scheduleSyncRepeatingTask(Bukkit.getPluginManager().getPlugin("DWBedWars"), new Runnable() {
            public void run() {
                Kingdoms4x4.dropItem(ironspawn1, BWUtil.create(Material.IRON_INGOT, 1, (byte)0, "§7Железо", null, null, null));
                Kingdoms4x4.dropItem(ironspawn2, BWUtil.create(Material.IRON_INGOT, 1, (byte)0, "§7Железо", null, null, null));
                Kingdoms4x4.dropItem(ironspawn3, BWUtil.create(Material.IRON_INGOT, 1, (byte)0, "§7Железо", null, null, null));
                Kingdoms4x4.dropItem(ironspawn4, BWUtil.create(Material.IRON_INGOT, 1, (byte)0, "§7Железо", null, null, null));
        }
           
        }, 0, 300L);
        Bukkit.getScheduler().scheduleSyncRepeatingTask(Bukkit.getPluginManager().getPlugin("DWBedWars"), new Runnable() {
            public void run() {
                Kingdoms4x4.dropItem(bronzespawn1, BWUtil.create(Material.CLAY_BRICK, 1, (byte)0, "§fБронза", null, null, null));
                Kingdoms4x4.dropItem(bronzespawn1, BWUtil.create(Material.CLAY_BRICK, 1, (byte)0, "§fБронза", null, null, null));
                Kingdoms4x4.dropItem(bronzespawn1, BWUtil.create(Material.CLAY_BRICK, 1, (byte)0, "§fБронза", null, null, null));
                Kingdoms4x4.dropItem(bronzespawn1, BWUtil.create(Material.CLAY_BRICK, 1, (byte)0, "§fБронза", null, null, null));
        }
           
        }, 0, 30L);
        /*/p1   
        if (PlayersInGame.contains(p1.getName())) {
            p1.sendMessage("BedWars | Игра началась!");
        }
        if (TeamGreen.contains(p1.getName())) {
            p1.teleport(teamgreenspawn);
        }
        if (TeamRed.contains(p1.getName())) {
            p1.teleport(teamredspawn);
        }
        if (TeamBlue.contains(p1.getName())) {
            p1.teleport(teambluespawn);
        }
        if (TeamYellow.contains(p1.getName())) {
            p1.teleport(teamyellowspawn);
        }
        //p2   
        if (PlayersInGame.contains(p2.getName())) {
            p2.sendMessage("BedWars | Игра началась!");
        }
        if (TeamGreen.contains(p2.getName())) {
            p2.teleport(teamgreenspawn);
        }
        if (TeamRed.contains(p2.getName())) {
            p2.teleport(teamredspawn);
        }
        if (TeamBlue.contains(p2.getName())) {
            p2.teleport(teambluespawn);
        }
            if (TeamYellow.contains(p2.getName())) {
            p2.teleport(teamyellowspawn);
        }
        /*if (PlayersInGame.contains(p.getName())) {
            p.sendMessage("BedWars | Игра началась!");
        }
        if (TeamGreen.contains(p.getName())) {
            p.teleport(teamgreenspawn);
        }
        if (TeamRed.contains(p.getName())) {
            p.teleport(teamredspawn);
        }
        if (TeamBlue.contains(p.getName())) {
            p.teleport(teambluespawn);
        }
        if (TeamYellow.contains(p.getName())) {
            p.teleport(teamyellowspawn);
        }*/
    }
    public void gameend() {
        Bukkit.getScheduler().cancelTask(1);
        PlayersInGame.clear();
        TeamGreen.clear();
        TeamBlue.clear();
        TeamRed.clear();
        TeamYellow.clear();
    }
   
    @EventHandler
    public void onInteract(PlayerInteractEvent i) {
        Player p = i.getPlayer();
        if (i.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("§fBedWars | Выбор команды")) {
            BWMenu.createinv2(p);
            p.sendMessage("test ok");
        }
    }
}
 
Нужно целиком смотреть, как именно вызывается startgame и всё остальное, что делается с листом. Ты наверняка его где-то криво чистишь.

Код отвратительно форматирован. Читай:
http://www.lar.ru/java-codestyle/
https://habrahabr.ru/post/112042/
 
Player p1 = Kingdoms4x4.getPlayers().get(1);
Player p2 = Kingdoms4x4.getPlayers().get(2);

Это верно?
Нумерация массива с нуля же.

Player p1 = Kingdoms4x4.getPlayers().get(0);
Player p2 = Kingdoms4x4.getPlayers().get(1);

Не?
 
Да говнокод дикий. Брать нужных игроков из HashMap не дано ему. А на новых версиях вообще обломается, потому что там не массивом игроки возвращаются.

Цель так же не ясна - плагины на бедварс уже есть, зачем писать кривой велосипед.
 
Да говнокод дикий. Брать нужных игроков из HashMap не дано ему. А на новых версиях вообще обломается, потому что там не массивом игроки возвращаются.

Цель так же не ясна - плагины на бедварс уже есть, зачем писать кривой велосипед.
Да пусть тренируется 🤓
Все когда-то говнокодили.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх Низ