Почему сообщение отправляется дважды?

Версия Minecraft
1.12.2
API
Forge
33
5
7
Вывожу игроку сообщение следующим образом
Java:
    @Override
    public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
        //PacketHandler.NetworkWrapper.sendToServer(new UseItemMessage());
        player.sendStatusMessage(new TextComponentTranslation("tile.test_item.used", new Object[0]), false);
        return EnumActionResult.SUCCESS;
    }
Но в чате сообщение выводится два раза. Почему так? Я подумал, что все дело в том, что я должен отправлять пакет на сервер, а там его обрабатывать и выводить сообщение. Однако, что пакет, что напрямую дают один и тот же результат.

Код:
[02:31:24] [Client thread/INFO] [minecraft/GuiNewChat]: [CHAT] Битчес, я игрок как Джордан, Пиппен, Родман
[02:31:24] [Client thread/INFO] [minecraft/GuiNewChat]: [CHAT] Битчес, я игрок как Джордан, Пиппен, Родман

Подскажите, пожалуйста, как это исправить
 
Решение
onItemUse выполняется на клиентской и серверной стороне. Естественно, у тебя будет выводится два сообщения, так как ты отправляешь на каждой стороне. Используй worldIn.isRemote (возвращает true, если это клиентская сторона и false если серверная), чтобы выполнить код только на нужной стороне
onItemUse выполняется на клиентской и серверной стороне. Естественно, у тебя будет выводится два сообщения, так как ты отправляешь на каждой стороне. Используй worldIn.isRemote (возвращает true, если это клиентская сторона и false если серверная), чтобы выполнить код только на нужной стороне
 
Java:
@Override
public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
    if (!worldIn.isRemote) { // Только на сервере
        player.sendStatusMessage(new TextComponentTranslation("tile.test_item.used"), false);
    }
    return EnumActionResult.SUCCESS;
}
 
Назад
Сверху