Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Циклом перебираешь всех игроков, и делаешь проверку на игровой режим.
через запятую получить всех игроков
public void send(Player sender) {
List<String> players = new ArrayList<String>();
Bukkit.getOnlinePlayers().stream().filter(player -> !player.getGameMode().equals(GameMode.SPECTATOR)).forEach(player -> {
players.add(player.getName());
});
sender.sendMessage(String.join(",", players));
}
Я лишь дополнил твой ответ - обычное совмещение строк через + не стоит использовать в цикле - утечка памяти из-за создания кучи объектов String. Вариант из другой темы как альтернатива.Ну можно обойтись обычным циклом for, хотя, каждый дрочит как он хочет)
Какая еще утечка памятиЯ лишь дополнил твой ответ - обычное совмещение строк через + не стоит использовать в цикле - утечка памяти из-за создания кучи объектов String. Вариант из другой темы как альтернатива.

Речь про забитие памяти мусором. Правда я сомневаюсь, что это будет хоть как-то ощутимо в текущей задачеКакая еще утечка памяти![]()
public void? насчет sender, я про ввод командыКод:public void send(Player sender) { List<String> players = new ArrayList<String>(); Bukkit.getOnlinePlayers().stream().filter(player -> !player.getGameMode().equals(GameMode.SPECTATOR)).forEach(player -> { players.add(player.getName()); }); sender.sendMessage(String.join(",", players)); }
Ну, просто переделай под себя? В чем проблема?public void? насчет sender, я про ввод команды
Головой часто в детстве падал?public void? насчет sender, я про ввод команды
Код:public void send(Player sender) { List<String> players = new ArrayList<String>(); Bukkit.getOnlinePlayers().stream().filter(player -> !player.getGameMode().equals(GameMode.SPECTATOR)).forEach(player -> { players.add(player.getName()); }); sender.sendMessage(String.join(",", players)); }
sender.sendMessage(Bukkit.getOnlinePlayers().stream()
.filter(p -> !p.getGameMode().equals(GameMode.SPECTATOR))
.map(Object::toString)
.collect(Collectors.joining(",")));
bruh, ради рофла потестил, 1кк стрингов занимают 5 мегабайтЯ лишь дополнил твой ответ - обычное совмещение строк через + не стоит использовать в цикле - утечка памяти из-за создания кучи объектов String. Вариант из другой темы как альтернатива.
В конце концов, всегда стоит поддерживаться рекомендуемых практик, если только у тебя нет вариантов по-лучше. Мало ли для каких дел будет использоваться этот или подобный код.bruh, ради рофла потестил, 1кк стрингов занимают 5 мегабайт
в чем проблема стринг билдер в цикле юзать, о каких ты практиках говоришь челВ конце концов, всегда стоит поддерживаться рекомендуемых практик, если только у тебя нет вариантов по-лучше. Мало ли для каких дел будет использоваться этот или подобный код.
Ну можно и так да. Только как оно выведет? Из Player.toString()?Код:sender.sendMessage(Bukkit.getOnlinePlayers().stream() .filter(p -> !p.getGameMode().equals(GameMode.SPECTATOR)) .map(Object::toString) .collect(Collectors.joining(",")));

не можно а нужноНу можно и так да.
public void send(Player sender) {
sender.sendMessage(Bukkit.getOnlinePlayers().stream()
.filter(p -> !p.getGameMode().equals(GameMode.SPECTATOR))
.map(player -> player.getName()).collect(Collectors.joining(",")));
}

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