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

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

timaxa007

Модератор
5,831
409
672
Отсылая на сервер, что игрок нажал ту или иную кнопку. И проверяется из клиента, какая кнопка нажата, а не от игрока.
Можно KeyBinding.keybindArray (keybindArray приватная переменная) проверяя циклом на getIsKeyPressed(), т.е. нажата-ли клавиша. И отправляй что надо, не забывая что на одну кнопку может стоять два бинда.
 
1,976
68
220
А как понять, какой из игроков её нажал? В каком классе этот метод или что?
 
2,505
81
397
Внутри пакета игрок есть.
 

timaxa007

Модератор
5,831
409
672
Я же писал. Если не понял, то постараюсь более понятно объяснить. 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,976
68
220
201602180017-horosho-chto-vy-mne-vse-obyasnili-zhal-chto-ya-nichego-ne-ponyal-kashamalasha-com.jpg

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

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

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

timaxa007

Модератор
5,831
409
672
timaxa007 написал(а):
Я пользуюсь вторым способом.
Я не знаю для чего именно тебе нужно отправлять нажатую кнопку. Я не знаю нужно-ли тебе отправлять значения от KeyBinding, или лучше надо Keyboard, или надо просто отправлять значение от Keyboard по имеющийся клавиш в KeyBinding.
Каждый может по своему сделать, цели могут быть разные.
 
1,239
2
24
с пакетами все просто если IMessage. это просто действие на стороне сервера.
 
1,976
68
220
Я сижу в танке. Я жму кнопку, на которую привязано обычное движение вперёд (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,137
5
3
Там тайл был. Лично я, пакеты делаю через эвенты. Мне так удобнее :) а ещё, оказывается, ненужный ByteBuf можно удалить методом release(хотя в джаве нет ручного выделения памяти)
 
2,505
81
397
Передавай в пакете число 0-3. И в хендлере уже что-нибудь делай, как вариант.
 
1,976
68
220
Да, всё работает, всё хорошо, огромное спасибо за менее непонятный код, чем везде :D
Тему можно закрывать
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху