Очень просто. Вот пример как это сделано в ботании:проверку на двойной прыжок? как лучше?
private static boolean jumpDown;
@Override
public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected)
{
if(worldIn.isRemote)
{
if(entityIn instanceof EntityPlayerSP)
{
EntityPlayerSP playerSp = (EntityPlayerSP) entityIn;
if (playerSp.movementInput.jump) {
if (!jumpDown) {
// прыжок второй раз
playerSp.jump();
// отправка пакета о прыжке на сервер...
@SubscribeEvent
public void isKeyPressed(InputEvent.KeyInputEvent e)
{
if(Keyboard.isKeyDown(57)) // 57 - код клавиши Space (пробел)
{
// действие при нажатой клавише
}
}
Зачем использовать числа, если этот же класс Keyboard содержит константы с буквенными названиями клавиш?Для 1.7.10
Легких путей не ищете) В самом классе есть константы с кодами всех стандартных клавиш.Мне удобней так. Я беру числа отсюда
Keyboard.isKeyDown(Keyboard.KEY_SPACE);
Я не ищу легких путей, сказал же мне так нравиться :/Легких путей не ищете) В самом классе есть константы с кодами всех стандартных клавиш.
Я знаюВ самом классе есть константы с кодами всех стандартных клавиш.
Просто делаешь несколько проверок:а если надо сделать проверку на двойной прыжок? как лучше? (я про смоу проверку
if (Keyboard.isKeyDown(Keyboard.KEY_SPACE))
- если нажали Space (он же пробел)if (player.isJumping)
- если игрок в прыжке (на данный момент, уже)if (player.isAirBorne)
- если игрок в воздухеif (player.motionY < 0.05)
- узнаем путь прыжка, к примеру 0.05 (тут могу ошибаться)if (!WasJumped)
- до этого прыжка не былоWasJumped
нужно где-то хранить. Но по сути, 5-й пункт не обязательно. Просто если его не учесть, то каждый прыжок после прыжка будет двойным прыжком InputEvent.KeyInputEvent
? Но тогда как получить игрока, как узнать прыгает ли он? Очень просто. Вот пример как это сделано в ботании:проверку на двойной прыжок? как лучше?
private static boolean jumpDown;
@Override
public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected)
{
if(worldIn.isRemote)
{
if(entityIn instanceof EntityPlayerSP)
{
EntityPlayerSP playerSp = (EntityPlayerSP) entityIn;
if (playerSp.movementInput.jump) {
if (!jumpDown) {
// прыжок второй раз
playerSp.jump();
// отправка пакета о прыжке на сервер
/*sendToServer(new PacketJump());*/
}
jumpDown = true;
} else {
jumpDown = false;
}
}
}
}