Помогите мне нужна помощь в разработке GUI где должны отображается все игроки на сервере

  • Автор темы Автор темы Lairon1
  • Дата начала Дата начала

Lairon1

Новичок
Пользователь
Баллы
21
Имя в Minecraft
Lairon1
Доброго времени суток, я хочу создать GUI где должны отображается все головы игроков который в данный момент онлайн. Я уже пытался написать плагин, но моего опыта недостаточно( пишу плагины всего неделю. Не бейте). В своем плагине я создал GUI отображения голов. Но как отображать всех онлайн игроков я не знаю, в моей GUI отображается только голова того кто отправил команду(на сервере будет максимум 10 человек)
"
meta2.setDisplayName(ChatColor.WHITE + sender.getName());
meta2.setLore(Lists.newArrayList(ChatColor.GOLD + "IP: " + ChatColor.WHITE + ((Player) sender).getAddress().getHostName()));
"
Также отображается его имя и его IP в lore.
upload_2021-2-28_16-52-41.png
Также были попытки создания GUI в GUIPlus.
Заранее спасибо за ответ)
 

Вложения

  • upload_2021-2-28_16-52-34.png
    upload_2021-2-28_16-52-34.png
    40,8 КБ · Просмотры: 3
Bukkit.getOnlinePlayers();
И форычем добавляешь в гуи
 
Bukkit.getOnlinePlayers();
И форычем добавляешь в гуи
Что значит "форычем добавляешь в гуи"?
Это значит что мне нужно вставить что-то в место "___"?
"meta2.setDisplayName(ChatColor.WHITE + ___());"
если да то что?
 
Создаёшь цикл for, в котором перебираешь всех игроков:
for (Player player : Bukkit.getOnlinePlayers()) {
}

Внутри цикла добавляешь новый предмет в меню. Не забудь при каждой итерации увеличивать номер слота. Готовый код не показываю, попробуй сам
 
Последнее редактирование:
Создаёшь цикл for, в котором перебираешь всех игроков:
for (Player player : Bukkit.getOnlinePlayer()) {
}

Внутри цикла добавляешь новый предмет в меню. Не забудь при каждой итерации увеличивать номер слота. Готовый код не показываю, попробуй сам

"Внутри цикла добавляешь новый предмет в меню" это значит что мне в цикле нужно прописать i.setItem(40, head);?
если да то, при присваивании имени предмету я использую sender.getName(), типо sender это тот кто отправил команду. но все онлайн игроки это не sender. Я вообще ничего не понимаю(
 
Вот что значит быть без IDE....
Промолчу
В чем проблема?
"Внутри цикла добавляешь новый предмет в меню" это значит что мне в цикле нужно прописать i.setItem(40, head);?
если да то, при присваивании имени предмету я использую sender.getName(), типо sender это тот кто отправил команду. но все онлайн игроки это не sender. Я вообще ничего не понимаю(
40 - это номер слота. У каждого предмета должен быть свой слот.
Вместо sender у тебя переменная цикла - в моём примере это player.
Тебе нужно начать с изучения основ Java. Вот, глянь видео:
 
В чем проблема?

40 - это номер слота. У каждого предмета должен быть свой слот.
Вместо sender у тебя переменная цикла - в моём примере это player.
Тебе нужно начать с изучения основ Java. Вот, глянь видео:
Да думаю нужно начинать изучать джаву с основ( я в прошлом КБшер решил перейти сразу на плагины)
Так вот сделал вот так upload_2021-2-28_19-36-9.png
и этот код выдает название головы и лор последнего игрока который зашел на сервер). и вообще обезательно ли каждый раз задавать предмет ItemStack?
 
Да думаю нужно начинать изучать джаву с основ( я в прошлом КБшер решил перейти сразу на плагины)
Так вот сделал вот так Посмотреть вложение 58889
и этот код выдает название головы и лор последнего игрока который зашел на сервер). и вообще обезательно ли каждый раз задавать предмет ItemStack?
Проблема в том, что сейчас у тебя для каждого игрока предмет устанавливается только в 20 и 21 слоты. Тебе нужно сделать так, чтобы для каждого игрока слот был больше, чем для предыдущего.

Добиться этого можно примерно так:
Перед циклом объявляешь числовую переменную:
int slot = 0;
Внутри цикла устанавливаешь слот с использованием этой переменной:
i.setItem(slot, head);
После этого увеличиваешь значение переменной:
slot = slot + 1;

Также я не понял, зачем под каждого игрока ты создаёшь сразу два предмета. Подозреваю, что это тебе не нужно
 
Проблема в том, что сейчас у тебя для каждого игрока предмет устанавливается только в 20 и 21 слоты. Тебе нужно сделать так, чтобы для каждого игрока слот был больше, чем для предыдущего.

Добиться этого можно примерно так:
Перед циклом объявляешь числовую переменную:
int slot = 0;
Внутри цикла устанавливаешь слот с использованием этой переменной:
i.setItem(slot, head);
После этого увеличиваешь значение переменной:
slot = slot + 1;

Также я не понял, зачем под каждого игрока ты создаёшь сразу два предмета. Подозреваю, что это тебе не нужно
тоесть каждый игрок это отдельный цикл for?
 
тоесть каждый игрок это отдельный цикл for?
Смотрел видео, которое выше кидал?
Для всех игроков буде достаточно одного цикла, у тебя практически правильный код сейчас.

Хотя, возможно, я не совсем правильно понял, что ты хочешь сделать
 
Смотрел видео, которое выше кидал?
Для всех игроков буде достаточно одного цикла, у тебя практически правильный код сейчас.

Хотя, возможно, я не совсем правильно понял, что ты хочешь сделать
upload_2021-2-28_20-10-20.png
ОНО РАБОТАЕТ! наконец-то спасибо огромное) но GUI у меня выглядит так: upload_2021-2-28_20-11-31.png
то есть если игроков будет больше 5 то головы начнут залазить на фиолетовые панели. как этого избежать? повторюсь на сервере будет максимум 10 человек) это нужно делать чере if ? тоесть если slot = 24 то мы прибовляем то количество слотов которое нам нужно.
 
Посмотреть вложение 58890
ОНО РАБОТАЕТ! наконец-то спасибо огромное) но GUI у меня выглядит так: Посмотреть вложение 58891
то есть если игроков будет больше 5 то головы начнут залазить на фиолетовые панели. как этого избежать? повторюсь на сервере будет максимум 10 человек) это нужно делать чере if ? тоесть если slot = 24 то мы прибовляем то количество слотов которое нам нужно.
Да, можно так
 
если я тебя не задолбал еще) можно последний вопрос? я хочу чтобы головы были со скинами, я это делаю через meta2.setOwningPlayer(player1); но когда я добавляю эту строчку GUI просто не открывается( код выглядит так: upload_2021-2-28_20-44-45.png
 
если я тебя не задолбал еще) можно последний вопрос? я хочу чтобы головы были со скинами, я это делаю через meta2.setOwningPlayer(player1); но когда я добавляю эту строчку GUI просто не открывается( код выглядит так: Посмотреть вложение 58892
Совсем не открывается или открывается с большой задержкой?
Если ошибок в консоли нет - должно открываться, но, возможно, с ощутимой задержкой (если голов много)
 
Назад
Верх