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

Помогите Проблема с сообщениями игрокам в ArrayList

Статус
Закрыто для дальнейших ответов.
Я бы для начала посмотрел, кто там есть в списке. Может быть, там всего один игрок?
У меня нет ошибок ни где но не отправляет игрокам кто в списке я делал так
for(String n : plugin.arraylist) {
Bukkit.getPlayer(n) .sendMessage("...") ;
}
И отправляет только первому игроку
 
Так же показывай что у тебя там в конфиге
Код:
options:
   prefix: '&e&l[&a&lДругие Голодные Игры&e&l] &f'
   world: world
   lobby: world
   commpasnear: true
   onDeachkick: false
x: 0
y: 0
z: 0
yw: 0
maxplayers: 100
minplayers: 50
minsec: 5
maxsec: 60
messages:
   1: '&3До старта осталось 1 секунда.'
   2: '&3До старта осталось 2 секунды.'
   3: '&3До старта осталось 3 секунды.'
   4: '&3До старта осталось 4 секунды.'
   5: '&3До старта осталось 5 секунд.'
   10: '&3До старта осталось 10 секунд.'
   15: '&3До старта осталось 15 секунд.'
   30: '&3До старта осталось 30 секунд.'
   60: '&3До старта осталось 60 секунд.'
   splayer: '&3До старта осталось &f%online%&3 игроков.'
   death: '&f%dplayer% &3был убит &f%playerd%.'
   minip: '&cВы вышли из игры!'
   mini: '&cВы не можете выйти такак вы не в игре!'
   minipl: '&fВы находитесь в игре для выхода из неё пропишите /ohg leave'
   join: '&f%player%&3 присоеденился к игре.'
   unjoin: '&f%player%&3 покинул игру.'
   full: '&cАрена заполнена!'
   dostartpl: '&aДо старта осталось &3(&a%online%&3/&a%maxplayers%&3)'
   nopl: '&aИгрок не найден!'
   deathkick: '&aВы были убиты %killer%!'
   nodeaths: '%player% &aумер не известной смертью :(!'
   nopex: '&cУ тебя нет на это разрешения.'
   com: '&aБлижайший игрок %player% растояние %dis%.'
   start: '&aИгра начялась!'
   sgame: '&aВы не можете зайти на арену!'
   b2m: '&cБессмертие закончится через 2 минуты.'
   b1m: '&cБессмертие закончится через 1 минуту.'
   b30: '&cБессмертие закончится через 30 секунд.'
   b15: '&cБессмертие закончится через 15 секунд.'
   b10: '&cБессмертие закончится через 10 секунд.'
   b9:  '&cБессмертие закончится через 9 секунд.'
   b8:  '&cБессмертие закончится через 8 секунд.'
   b7:  '&cБессмертие закончится через 7 секунд.'
   b6:  '&cБессмертие закончится через 6 секунд.'
   b5:  '&cБессмертие закончится через 5 секунд.'
   b4:  '&cБессмертие закончится через 4 секунды.'
   b3:  '&cБессмертие закончится через 3 секунды.'
   b2:  '&cБессмертие закончится через 2 секунды.'
   b1:  '&cБессмертие закончится через 1 секунду.'
   b0:  '&cБессмертие закончитлось теперь вы смертны.'
   help:
     gl: '&e----------- &aOthers Hungers Games Help&e ------------'
     1: '&a/ohg help&e - Помошь по коммандам!'
     2: '&a/ohg reload&e - Перезагрузить плагин!'
     3: '&a/ohg start&e - Начять игру!'
     4: '&a/ohg join&e - Зайти в игру!'
     5: '&a/ohg leave&e - Выйти из игры!'
     6: '&e-------------------------------------------------------'
 
Может потому что список содержит только первого игрока? Или может потому что у тебя слишком много говнокода и майнкрафт просто от него офигевает и офается после первого
Чему тут офатся если отсчёт робит и отсылает сообщения только первому игроку!
 
У меня в ArrayList написан
ArrayList<String> ArrayList = new ArrayList<String>(); может String заменить на Player?
 
У меня нет ошибок ни где но не отправляет игрокам кто в списке я делал так
for(String n : plugin.arraylist) {
Bukkit.getPlayer(n) .sendMessage("...") ;
}
И отправляет только первому игроку
Выведи список перед этой шляпой System.out.println(list);
 
У меня нет ошибок ни где но не отправляет игрокам кто в списке я делал так
for(String n : plugin.arraylist) {
Bukkit.getPlayer(n) .sendMessage("...") ;
}
И отправляет только первому игроку
for (String string : plugin.arrayList)
{
Bukkit.getPlayer(string).sendMessage("" + plugin.arrayList.size());
Bukkit.getPlayer(string).sendMessage("" + plugin.arrayList.get(0));
Bukkit.getPlayer(string).sendMessage("" + plugin.arrayList.get(1));
}

Что выдаст?
 
for (String string : plugin.arrayList)
{
Bukkit.getPlayer(string).sendMessage("" + plugin.arrayList.size());
Bukkit.getPlayer(string).sendMessage("" + plugin.arrayList.get(0));
Bukkit.getPlayer(string).sendMessage("" + plugin.arrayList.get(1));
}

Что выдаст?
Первому игроку отсылает ники всех игроков?
 
Чет мне кажется в листе нет других игроков, попробуй вывести размер листа
 
Чет мне кажется в листе нет других игроков, попробуй вывести размер листа
В коде уже есть что выводит количество игроков в ArrayList и макс кол-во я я знаю что именно первому игроку выводит сообщение что вам ещë видио записать чтоли
 
В коде уже есть что выводит количество игроков в ArrayList и макс кол-во я я знаю что именно первому игроку выводит сообщение что вам ещë видио записать чтоли
Привели код в порядок и все сразу видно станет. А пока там дичайшая каша ничего не понять.
 
у тебя полный треш с Runnable
переменные используются хрен знает откуда
внешний id, внешний sec
нахрена тебе на каждого игрока отдельный Runnable создавать?
понятно почему у тебя первому пишет только.
например, если minplayers равно 10, то у тебя на каждого из 10 игроков создается Runnable. всего 10 штук.
первый запускается, проверяет sec == 60, печатает сообщение, делает sec--
следующий уже видит не 60, а 59. и ничего не печатает.

собственно, это все можно понять банально навставляв принты в код. и разобравшись где что происходит

тебе надо все переписать и нормально инкапсулировать. чтобы не было глобальных счетчиков.
отправку всем игрокам в какой-нибудь метод закатать, а не в цикли делать неведомую хрень по каждому.
 
у тебя полный треш с Runnable
переменные используются хрен знает откуда
внешний id, внешний sec
нахрена тебе на каждого игрока отдельный Runnable создавать?
понятно почему у тебя первому пишет только.
например, если minplayers равно 10, то у тебя на каждого из 10 игроков создается Runnable. всего 10 штук.
первый запускается, проверяет sec == 60, печатает сообщение, делает sec--
следующий уже видит не 60, а 59. и ничего не печатает.

собственно, это все можно понять банально навставляв принты в код. и разобравшись где что происходит

тебе надо все переписать и нормально инкапсулировать. чтобы не было глобальных счетчиков.
отправку всем игрокам в какой-нибудь метод закатать, а не в цикли делать неведомую хрень по каждому.
Как сделать чтобы один runnable создовался
 
у тебя полный треш с Runnable
переменные используются хрен знает откуда
внешний id, внешний sec
нахрена тебе на каждого игрока отдельный Runnable создавать?
понятно почему у тебя первому пишет только.
например, если minplayers равно 10, то у тебя на каждого из 10 игроков создается Runnable. всего 10 штук.
первый запускается, проверяет sec == 60, печатает сообщение, делает sec--
следующий уже видит не 60, а 59. и ничего не печатает.

собственно, это все можно понять банально навставляв принты в код. и разобравшись где что происходит

тебе надо все переписать и нормально инкапсулировать. чтобы не было глобальных счетчиков.
отправку всем игрокам в какой-нибудь метод закатать, а не в цикли делать неведомую хрень по каждому.

Чт не видно чтобы создавало 10 runnable
 
Чт не видно чтобы создавало 10 runnable
а, тогда еще хуже
у тебя после создания runnable стоит return true;
(естественно в этой каше я его не увидел)
поэтому создается только для первого игрока. ему и шлется все
 
а, тогда еще хуже
у тебя после создания runnable стоит return true;
(естественно в этой каше я его не увидел)
поэтому создается только для первого игрока. ему и шлется все
Это еще не каша есть и похуже src
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх