1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Использование другого класса

Тема в разделе "Разработка плагинов для новичков", создана пользователем CreeperPro35, 31 июл 2019.

Статус темы:
Закрыта.
  1. Автор темы
    CreeperPro35

    CreeperPro35 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    _SEVENTYNINE_
    Нужно при финише паркура добавить игрока в ArrayList, а после того, как в листе будет 3 человека, выдать сообщение и очистить его. Всё, связанное с местами, я решил реализовать в отдельном классе.
    Классы:
    Код:
    public class CordRegister implements Listener {
        
        static CordRegister cordregister;
        CordRegister() {}
        
        Spots spotinstance = new Spots();
        
        public static CordRegister getCordRegister() {
            return cordregister;
        }
        static HashMap<Player, Location> pla = new HashMap<Player, Location>();
        
        @EventHandler
        public void CoordRegister(PlayerMoveEvent e) {
            Player p = e.getPlayer();
            Block b = e.getTo().getBlock().getRelative(BlockFace.DOWN);
            if (e.getTo().getBlock().getRelative(BlockFace.DOWN).getType() == Material.GOLD_BLOCK) {
                if (pla.get(p) == null) {
                    pla.put(p, p.getLocation());
                    p.sendMessage("Parkour started");
                    
                    }
                if (pla.get(p) != p.getLocation()) {
                    if (!pla.containsValue(p.getLocation())) {
                        if (pla.get(p).getBlockX() != p.getLocation().getBlockX() && pla.get(p).getBlockY() != p.getLocation().getBlockY() && pla.get(p).getBlockZ() != p.getLocation().getBlockZ()) {
                            pla.replace(p, p.getLocation());
                            if (b.hasMetadata("finish")) {
                                p.sendMessage("Parkour completed");
                                spotinstance.setSpot(p);
                                pla.remove(p);
                                if (Spots.isSpotThree()) {
                                    Bukkit.getServer().broadcastMessage(Spots.getSpots().parkourpassed.toString());
                                    spotinstance.spot.clear();
                                }
                            } else {
                                p.sendMessage("Checkpoint");
                            }
                        }
                    }
                }
            }
        }
    }

    Код:
    public Spots() {}
            
        static Spots spots;
        public static Spots getSpots() {
            return spots;
        }
        
        public static ArrayList<Player> spot = new ArrayList<>();
        
        public void setSpot (Player player) {
            spot.add(player);
        }
        
        public static String[] getParkourLeaderBoard() {
            String[] playerspots = {
            spot.get(0).getPlayer().getName(),
            spot.get(1).getPlayer().getName(),
            spot.get(2).getPlayer().getName(),
            };
            return playerspots;
        }
        
        public static boolean isSpotThree() {
            if (spot.size() == 2) {
                return true;
            } else {
                return false;
            }
        }
        
        public String[] parkourpassed = {"Parkour has ended!", "Winners:",
                "#1 " + Spots.spot.get(0).getName(),
                "#2 " + Spots.spot.get(1).getName(),
                "#3 " + Spots.spot.get(2).getName()};

    При ЗАПУСКЕ выдаёт ошибку
    Код:
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
            at java.util.ArrayList.rangeCheck(Unknown Source) ~[?:1.8.0_191]
            at java.util.ArrayList.get(Unknown Source) ~[?:1.8.0_191]
            at seventy.parkour.Spots.<init>(Spots.java:40) ~[?:?]
            at seventy.parkour.CordRegister.<init>(CordRegister.java:20) ~[?:?]
            at seventy.parkour.Main.onEnable(Main.java:28) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[spigot.jar:git-Spigot-4d24e36-5193f76]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:352) [spigot.jar:git-Spigot-4d24e36-5193f76]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:416) [spigot.jar:git-Spigot-4d24e36-5193f76]
            at org.bukkit.craftbukkit.v1_14_R1.CraftServer.enablePlugin(CraftServer.java:458) [spigot.jar:git-Spigot-4d24e36-5193f76]
            at org.bukkit.craftbukkit.v1_14_R1.CraftServer.enablePlugins(CraftServer.java:372) [spigot.jar:git-Spigot-4d24e36-5193f76]
            at net.minecraft.server.v1_14_R1.MinecraftServer.a(MinecraftServer.java:440) [spigot.jar:git-Spigot-4d24e36-5193f76]
            at net.minecraft.server.v1_14_R1.DedicatedServer.init(DedicatedServer.java:258) [spigot.jar:git-Spigot-4d24e36-5193f76]
            at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:758) [spigot.jar:git-Spigot-4d24e36-5193f76]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_191]
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Массив пустой вот и выдает. Иди сперва выучись как кодить на java
     
  3. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Рано объявляешь. Как выше написали - массив ещё пуст, а ты уже пытаешься получить оттуда что-либо.
     
  4. Автор темы
    CreeperPro35

    CreeperPro35 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    _SEVENTYNINE_
    Проблема решена, спасибо!
     
Статус темы:
Закрыта.

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