[Решено] Игрок жмёт кнопку

Статус
В этой теме нельзя размещать новые ответы.
1,979
68
213
Снова здрасти :D
Подскажите, пожалуйста, как проверить, что определённый EntityPlayer нажимает нужную кнопку (ту, что среди Minecraft.getMinecraft().gameSettings.keyBind)? Вроде даже можно на клиенте проверять.
 

timaxa007

Модератор
5,827
409
656
Отсылая на сервер, что игрок нажал ту или иную кнопку. И проверяется из клиента, какая кнопка нажата, а не от игрока.
Можно KeyBinding.keybindArray (keybindArray приватная переменная) проверяя циклом на getIsKeyPressed(), т.е. нажата-ли клавиша. И отправляй что надо, не забывая что на одну кнопку может стоять два бинда.
 
1,979
68
213
А как понять, какой из игроков её нажал? В каком классе этот метод или что?
 
2,502
78
380
Внутри пакета игрок есть.
 

timaxa007

Модератор
5,827
409
656
Я же писал. Если не понял, то постараюсь более понятно объяснить. KeyBinding и Keyboard это клиентские классы.
Нужно отправлять пакеты, о том какую кнопку нажал, как-бы клиентский игрок. Потом обрабатываешь пакет, из пакета достаешь серверного игрока.
Ну а дальше сам решай, что будешь делать с этой обработкой.
[merge_posts_bbcode]Добавлено: 02.07.2016 15:19:17[/merge_posts_bbcode]

Код:
@Override
public IMessage onMessage(REQ packet, MessageContext message) {
    //int id = packet.id;
    //boolean state = packet.state;
    EntityPlayerMP playerMP = message.getServerHandler().playerEntity;
    return null;
}
[merge_posts_bbcode]Добавлено: 02.07.2016 15:21:21[/merge_posts_bbcode]

Я не знаю каким кассами для отправки и приёма пакетов ты будешь пользоваться, но пример показал.
 
1,979
68
213

[merge_posts_bbcode]Добавлено: 02.07.2016 15:33:58[/merge_posts_bbcode]

Есть ли хоть где-то нормальный туториал по этим пакетам? Что, где, как, куда и зачем.
Потому что из кода выше я понял только извлечение игрока. А кнопка где? И что за переменные? И зачем они нужны? И как вообще эти пакеты отправлять, принимать и где это делать? Искал я, искал, все говорят "Отправь пакет." А что за пакет, как создать, что туда засунуть итп - никто не пишет. И как другим понять, если знающие полностью не описывают?
 
2,502
78
380
Только не говори, что ты до сих пор не умеешь отправлять пакеты...
[merge_posts_bbcode]Добавлено: 02.07.2016 16:44:01[/merge_posts_bbcode]

Тем жи миллион было
 

timaxa007

Модератор
5,827
409
656
timaxa007 написал(а):
Я пользуюсь вторым способом.
Я не знаю для чего именно тебе нужно отправлять нажатую кнопку. Я не знаю нужно-ли тебе отправлять значения от KeyBinding, или лучше надо Keyboard, или надо просто отправлять значение от Keyboard по имеющийся клавиш в KeyBinding.
Каждый может по своему сделать, цели могут быть разные.
 
1,236
2
16
с пакетами все просто если IMessage. это просто действие на стороне сервера.
 
1,979
68
213
Я сижу в танке. Я жму кнопку, на которую привязано обычное движение вперёд (W) - модификатор скорости танка (моя переменная, не motionX/Y/Z!) увеличивается.
Я жму назад - модификатор уменьшается.
Я удерживаю кнопку атаки - танк заряжается и стреляет.
Вот что мне нужно.
[merge_posts_bbcode]Добавлено: 02.07.2016 16:05:19[/merge_posts_bbcode]

За ссылки спасибо, сейчас посмотрю.

[merge_posts_bbcode]Добавлено: 02.07.2016 16:06:36[/merge_posts_bbcode]

Dahaka написал(а):
Только не говори, что ты до сих пор не умеешь отправлять пакеты...
Не было нужды. Единственная отправка - из NBT тайлэнтити на SkyProvider моего мира (сервер - клиент). И код без объяснений мне дал Wilah. Так что сделать-то я сделал, но уметь - не умею.
 
1,138
5
10
Там тайл был. Лично я, пакеты делаю через эвенты. Мне так удобнее :) а ещё, оказывается, ненужный ByteBuf можно удалить методом release(хотя в джаве нет ручного выделения памяти)
 
2,502
78
380
Передавай в пакете число 0-3. И в хендлере уже что-нибудь делай, как вариант.
 
1,979
68
213
Да, всё работает, всё хорошо, огромное спасибо за менее непонятный код, чем везде :D
Тему можно закрывать
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху