Как отправить сообщение всем игрокам на сервере?(На стороне сервера) - PullRequest
0 голосов
/ 30 декабря 2018

Как бы я отправил сообщение всем игрокам на сервере?(При попытке сделать это выводится только на консоль, и я считаю, что это потому, что мод не установлен на стороне клиента.)

Я пытался сделать мод для 1.7.10сервер (положить в пакет обновления 1.7.10), который может отправлять сообщения всем игрокам онлайн.Я просмотрел этот вопрос и не нашел ответов.

@SideOnly(Side.SERVER)
@SubscribeEvent
public void onDeath(PlayerEvent.Clone event)
{
    if (event.wasDeath) {
        final String[] messages = {"Oh boiss we got a respawner O_O", "How dare ye respawn on me?", "GAAH! You died again!", "._. Just why...", "Was taht me or waas that you? -.-","Why isn't this in hardcore mode? It should be..."};
        Random random = new Random();
        int index = random.nextInt(messages.length);
        ChatComponentText text = new ChatComponentText(messages[index]);
        ChatStyle style = new ChatStyle();
        style.setColor(EnumChatFormatting.LIGHT_PURPLE);
        text.setChatStyle(style);
         FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().sendChatMsg(text);
    System.out.println("Respawned");
    }
}

Я ожидаю, что сервер отправит сообщение всем, но выводит только на консоль.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Очень быстрый способ решить эту проблему - создать EventHandler, когда игрок присоединяется.Затем добавьте их в ArrayList.Затем, когда они уходят (Проверьте на событие удара / выхода).Удалите их из ArrayList.Имея arraylist вы можете пройти через это и отправить сообщение каждому игроку.

0 голосов
/ 23 апреля 2019

Ваша 'System.out.println ("Respawned"); строка будет печататься только на консоль.

Я полагаю, что вы собираетесь сделать следующее:

1) Перебрать всех игроков на сервере.2) Отправьте каждому игроку подсчитанное сообщение.

Я не уверен на 100%, как получить доступ к списку игроков в верхней части моей головы, но вам нужно получить доступ к FMLServerHandler и получить игрок-list, OR (лучший способ) получить доступ к EntityPlayer объектам, связанным с текущим миром игрока, и выполнить вышеуказанные шаги.Второй метод будет работать только для текущего мира, поэтому, если вы хотите получить доступ ко всем соединениям с сервером, первый способ - это путь.

...