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

Помогите Делаю мини игру но список ников игроков пустеет

Метки:
Теги Теги
spigot 1.16.5

firlyaa

Активный участник
Баллы
61
Класс game
Код:
package org.thefilik.tinyworldarena.commands;


import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;

import java.util.ArrayList;
import java.util.List;


public class game {

    public static boolean started = false;


    public static void startGame(JavaPlugin plugin) {

        List<String> list = new pon().getArrayList();



        new BukkitRunnable() {
            @Override
            public void run() {
                if (started) {
                    cancel();
                }
                if (list.size() < 1) {
                    for (String nick : list) {
                        Bukkit.getPlayer(nick).sendMessage(ChatColor.translateAlternateColorCodes('&', "&aОжидание..."));
                    }
                } else {
                    started = true;
                    cancel();
                }
            }
        }.runTaskTimer(plugin, 60, 60);

        
        
        List<String> nicks = new pon().getArrayList();




        plugin.getServer().getConsoleSender().sendMessage("ну эт работает ладно");

        StringBuilder sb = new StringBuilder();
        sb.append("");
        sb.append(nicks.size());
        String strI = sb.toString();

        plugin.getServer().getConsoleSender().sendMessage(strI);



        for (String nick : nicks) {
            Bukkit.getPlayer(nick).sendMessage("ОМАГАД");
        }



    }










}

Класс pon
Код:
package org.thefilik.tinyworldarena.commands;

import org.bukkit.entity.Player;

import java.util.ArrayList;
import java.util.List;

public class pon {
    public static List<String> arrayList = new ArrayList<String>();

    public List<String> getArrayList(){
        return arrayList;
    }

    public static void addNick(String nick) {
        arrayList.add(nick);
    }
}

Проблема в том, что в классе game, когда цикл останавливается выводит "ну эт работает ладно" и "0" (0 это количество элементов в списке), так же игрокам не приходит сообщение "ОМАГАД". А в самом цикле сообщение "Ожидание..." отправляется. Что не так?
 
игрокам не приходит сообщение "ОМАГАД"
Значит, у тебя список пустой. Покажи, где ты его заполняешь, потому что из того, что ты показал, ты нигде его не заполняешь
 
Значит, у тебя список пустой. Покажи, где ты его заполняешь, потому что из того, что ты показал, ты нигде его не заполняешь

Класс twa:

Код:
package org.thefilik.tinyworldarena.commands;


import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.List;

public class twa implements CommandExecutor {
    public final JavaPlugin plugin;

    public twa(JavaPlugin plugin) {
        this.plugin = plugin;
    }


    @Override
    public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {

        pon uh = new pon();
        List<String> list = new pon().getArrayList();

        if (args[0].equalsIgnoreCase("join")) {
            if ((commandSender instanceof Player)) {
            }
            else {
                return false;
            }
            Player p = (Player) commandSender;
            if (list.contains(p.getName())) {
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cВы уже в игре!"));
                return false;
            } else {
                Location loc = new Location(Bukkit.getWorld("world"), 281.500, 65, 320.500, 0, 0);
                p.teleport(loc);
                if (list.size() < 1) {
                    game.startGame(plugin);
                }
                uh.addNick(p.getName());
                String string = String.format("&f[&a+&f] %s", p.getName());
                for (String nick : list) {
                    Bukkit.getPlayer(nick).sendMessage(ChatColor.translateAlternateColorCodes('&', string));
                }
            }


        }
        return true;
    }
}

Я использовал команду /twa join, написало что я зашёл и после этого ничего. А когда я чуть изменил код и зашёл 1 (когда надо минимум 2 было) писало "Ожидание..." до того как зашёл ещё один игрок
 
Класс twa:

Код:
package org.thefilik.tinyworldarena.commands;


import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

import java.util.List;

public class twa implements CommandExecutor {
    public final JavaPlugin plugin;

    public twa(JavaPlugin plugin) {
        this.plugin = plugin;
    }


    @Override
    public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {

        pon uh = new pon();
        List<String> list = new pon().getArrayList();

        if (args[0].equalsIgnoreCase("join")) {
            if ((commandSender instanceof Player)) {
            }
            else {
                return false;
            }
            Player p = (Player) commandSender;
            if (list.contains(p.getName())) {
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cВы уже в игре!"));
                return false;
            } else {
                Location loc = new Location(Bukkit.getWorld("world"), 281.500, 65, 320.500, 0, 0);
                p.teleport(loc);
                if (list.size() < 1) {
                    game.startGame(plugin);
                }
                uh.addNick(p.getName());
                String string = String.format("&f[&a+&f] %s", p.getName());
                for (String nick : list) {
                    Bukkit.getPlayer(nick).sendMessage(ChatColor.translateAlternateColorCodes('&', string));
                }
            }


        }
        return true;
    }
}

Я использовал команду /twa join, написало что я зашёл и после этого ничего. А когда я чуть изменил код и зашёл 1 (когда надо минимум 2 было) писало "Ожидание..." до того как зашёл ещё один игрок
Ты меняешь список в одном объекте, а потом создаешь новый, в котором список пустой
 

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

Назад
Верх