Помогите Как создать список, в который можно добавить полученные данные?

zxcRemkun

Активный участник
Баллы
61
Привет! Я новичок в джаве и написании плагинов, поэтому не серчайте если мои вопросы покажутся вам очень глупыми))
Суть вопроса: Хочу создать команду, которая будет получать координаты игрока и добавлять их в список, где каждая строка будет состоять из 3х аргументов(координат).
Так вот, я уже могу получать координаты, но создать список, в который при выполнении этой команды будут вноситься новые данные, я не могу(не знаю как). Буду рад если вы объясните мне как полученные координаты записать в список доступным языком(ну и на языке шарящих тоже можно, как-нибудь разберусь :)).
Вот команда которую я хочу дополнить, если что-то неправильно, надеюсь вы укажете на это:
Код:
if (args[0].equalsIgnoreCase("setSpawnFactory")) {
    Location l = player.getLocation();
    player.sendMessage(ChatColor.GREEN + "Точка спавна установлена");
    player.sendMessage(ChatColor.GREEN + "X: " +  (l.getBlockX()) + " " + ChatColor.YELLOW + "Y: " + l.getBlockY() + " " + ChatColor.GREEN + "Z: " + l.getBlockZ());
    player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 10, 10);
}

Так же я хочу чтобы координаты в списке можно было в дальнейшем использовать, допустим координаты в списке будет выглядеть так: [100, 70, 230](Таких строк с координатами должно быть несколько). Я хочу чтобы потом при клике на табличку игрок переносился на рандомные координаты, которые будут браться из этого списка строк.
Надеюсь ваш мозг сможет понять мои каракули и вы мне поможете)) Заранее спасибо.
 
Приветик!


Код:
ArrayList<Location> locations = new ArrayList<Location>();
Location location = new Location(x, y, z);
locations.add(location);
 
Ответ по созданию списка дали выше, но для общего понимания хорошей структуры распишу более подробно...

У тебя есть два варианта создания подобной команды:
1. Для новичков.
- Создаём список в основном классе плагина:
upload_2021-10-26_14-22-5.png

- Создаём класс-исполнитель команды, передавая список через конструктор ( static - зло, ConstuctorInjection - красиво и правильно ):
upload_2021-10-26_14-22-53.png

- Передаём созданный нами список из основного класса плагина через конструктор при создании экземпляра класса-исполнителя команды.
upload_2021-10-26_14-25-56.png

2. Для бывалых.
- Вспоминаем, что парадигмы ООП и менеджеры - это крутая структура, поэтому делаем так:
upload_2021-10-26_14-29-24.png

- Повторяем примерно те же действия, что были в первом пункте, только с менеджером:
upload_2021-10-26_14-31-27.png

upload_2021-10-26_14-31-42.png
 
типо List<Location[]> list = new ArrayList<>();?
И в Location[] ты хоть 350 точек суй. Что предлагают люди выше - понятия не имею
 
типо List<Location[]> list = new ArrayList<>();?
И в Location[] ты хоть 350 точек суй. Что предлагают люди выше - понятия не имею
Точка в трехмерном пространстве состоит из трех чисел (x, y, z). Класс Location является оберткой этих данных, для удобного использования.
ТС'у надо сохранить три числа этой точки и добавить в список, решения выше как раз и реализуют это.

Твой список массивов Location тут не уместен.
 
Точка в трехмерном пространстве состоит из трех чисел (x, y, z). Класс Location является оберткой этих данных, для удобного использования.
ТС'у надо сохранить три числа этой точки и добавить в список, решения выше как раз и реализуют это.

Твой список массивов Location тут не уместен.
Так если ему не удобно в нормальном объекте локации хранить, то пусть Location заменит на Integer или Double
 
Привет! Я новичок в джаве и написании плагинов, поэтому не серчайте если мои вопросы покажутся вам очень глупыми))
Суть вопроса: Хочу создать команду, которая будет получать координаты игрока и добавлять их в список, где каждая строка будет состоять из 3х аргументов(координат).
Так вот, я уже могу получать координаты, но создать список, в который при выполнении этой команды будут вноситься новые данные, я не могу(не знаю как). Буду рад если вы объясните мне как полученные координаты записать в список доступным языком(ну и на языке шарящих тоже можно, как-нибудь разберусь :)).
Вот команда которую я хочу дополнить, если что-то неправильно, надеюсь вы укажете на это:
Код:
if (args[0].equalsIgnoreCase("setSpawnFactory")) {
    Location l = player.getLocation();
    player.sendMessage(ChatColor.GREEN + "Точка спавна установлена");
    player.sendMessage(ChatColor.GREEN + "X: " +  (l.getBlockX()) + " " + ChatColor.YELLOW + "Y: " + l.getBlockY() + " " + ChatColor.GREEN + "Z: " + l.getBlockZ());
    player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 10, 10);
}

Так же я хочу чтобы координаты в списке можно было в дальнейшем использовать, допустим координаты в списке будет выглядеть так: [100, 70, 230](Таких строк с координатами должно быть несколько). Я хочу чтобы потом при клике на табличку игрок переносился на рандомные координаты, которые будут браться из этого списка строк.
Надеюсь ваш мозг сможет понять мои каракули и вы мне поможете)) Заранее спасибо.
Просто храни в списке локации того, что тебе нужно, и у тебя будет предостаточное количество информации.
Код:
List<Location> locationList = new ArrayList()<>; // создаем список
locationList.add(l); // добавляем в список локацию l
 
Назад
Верх