Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Двойной прыжок

Статус
Закрыто для дальнейших ответов.

serega6531

Старожил
Девелопер
Пользователь
Баллы
173
Я хочу, чтобы если я стою у стены, то при прыжке я мог подпрыгнуть ещё раз (и ещё, если я все еще у стены). Как мне это сделать?
И ещё. Как сделать, чтобы компас показывал на нужное место?
И как нанести игроку урон от имени другого игрока?
 
Последнее редактирование:
Ищешь плагин на двойной прыжок - смотришь, как у него там реализовано (в основном это засчёт переключение полёта - fly on\off). Делаешь такую же аналогию, но добавляешь условии со стеной, чтобы можно было использовать бесконечно.
Готово.
 
Я хочу, чтобы если я стою у стены, то при прыжке я мог подпрыгнуть ещё раз (и ещё, если я все еще у стены). Как мне это сделать?
И ещё. Как сделать, чтобы компас показывал на нужное место?
И как нанести игроку урон от имени другого игрока?
Задавать вектор игроку при прыжке и проверять, возле стены ли он.
player.setCompassTarget(location)
player.damage(int/double, player) - хотя, когда я писал MineCS, это не работало, приходилось бросаться эвентами
 
Ищешь плагин на двойной прыжок - смотришь, как у него там реализовано (в основном это засчёт переключение полёта - fly on\off). Делаешь такую же аналогию, но добавляешь условии со стеной, чтобы можно было использовать бесконечно.
Готово.
Попробую поискать исходники.
Задавать вектор игроку при прыжке и проверять, возле стены ли он.
player.setCompassTarget(location)
player.damage(int/double, player) - хотя, когда я писал MineCS, это не работало, приходилось бросаться эвентами
Попробую с векторами. Как проверить, находится ли он около стены? Проверять блоки перед ним?
И как отлавливать прыжок?
 
Попробую с векторами. Как проверить, находится ли он около стены? Проверять блоки перед ним?И как отлавливать прыжок?
Ну да, проверять блоки. Можно даже проверять, есть ли перед его глазами блок через player.getTargetBlock(null(любой блок); 1(на расстоянии 1 метра)).
Прыжок тоже всяко отлавливать можно. Я брал грузный Move эвент и проверял по условия player.isOnGround()
 
Ну да, проверять блоки. Можно даже проверять, есть ли перед его глазами блок через player.getTargetBlock(null(любой блок); 1(на расстоянии 1 метра)).
Прыжок тоже всяко отлавливать можно. Я брал грузный Move эвент и проверял по условия player.isOnGround()
Спасибо!
player.isOnGround() deprecated! Есть entity.isOnGround().
 
Да и getTargetBlock() тоже deprecated.
The method getEntity() is undefined for the type Player
 
Да не пугайся ты этих депрекатедов. Пока методу нет замены, он будет работать.
 
И от какого блока мне его брать?
А если так:

Код:
        Player player = event.getPlayer();
        Location loc = player.getLocation();
        int direction = (int)(((loc.getYaw() * 4F) / 360F) + 0.5D) & 3;
        switch(direction)
        {
          case 0: //Direction 0 = +Z
          {
              loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY()+1, (int)loc.getZ()+1);
                break;
          }
          case 1: //Direction 1 = -X
          {
              loc = new Location(loc.getWorld(), (int)loc.getX()-1, (int)loc.getY()+1, (int)loc.getZ());
                break;
          }
          case 2: //Direction 2 = -Z
          {
              loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY()+1, (int)loc.getZ()-1);
                break;
          }
          case 3: //Direction 3 = +X
          {
              loc = new Location(loc.getWorld(), (int)loc.getX()+1, (int)loc.getY()+1, (int)loc.getZ());
                break;
          }
        }
        if(!(player.isOnGround()) && !(loc.getBlock().getType().equals(Material.AIR))){
           //code
        }
?
Up!
Сделал, но нужно узнать, вдруг игрок спускается я не поднимается. Как?
 
И от какого блока мне его брать?
А если так:

Код:
        Player player = event.getPlayer();
        Location loc = player.getLocation();
        int direction = (int)(((loc.getYaw() * 4F) / 360F) + 0.5D) & 3;
        switch(direction)
        {
          case 0: //Direction 0 = +Z
          {
              loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY()+1, (int)loc.getZ()+1);
                break;
          }
          case 1: //Direction 1 = -X
          {
              loc = new Location(loc.getWorld(), (int)loc.getX()-1, (int)loc.getY()+1, (int)loc.getZ());
                break;
          }
          case 2: //Direction 2 = -Z
          {
              loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY()+1, (int)loc.getZ()-1);
                break;
          }
          case 3: //Direction 3 = +X
          {
              loc = new Location(loc.getWorld(), (int)loc.getX()+1, (int)loc.getY()+1, (int)loc.getZ());
                break;
          }
        }
        if(!(player.isOnGround()) && !(loc.getBlock().getType().equals(Material.AIR))){
           //code
        }
?
Up!
Сделал, но нужно узнать, вдруг игрок спускается я не поднимается. Как?
У игрока есть вектор движения, вот по нему и смотри куда он направлен.

ну или moveEvent отлавливай изменения за каждый тик - если dY > 0 - поднимается, если dY < 0 - опускается
 
ниже написано.

Включай уже логику, в программировании без неё нельзя ничего сделать.
 
Тут поднятие на полете.
>.<

Открывай любой учебный ресурс и читай про вектора, про его направление и думай, что с ним можно сделать.
Я так понимаю, если y вектора отрицательный, то игрок движется вниз. Так?
 
Статус
Закрыто для дальнейших ответов.

Поделиться этой страницей

Назад
Верх