1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем serega6531, 25 янв 2014.

Статус темы:
Закрыта.
  1. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Я хочу, чтобы если я стою у стены, то при прыжке я мог подпрыгнуть ещё раз (и ещё, если я все еще у стены). Как мне это сделать?
    И ещё. Как сделать, чтобы компас показывал на нужное место?
    И как нанести игроку урон от имени другого игрока?
     
    Последнее редактирование: 25 янв 2014
  2. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
  3. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Ищешь плагин на двойной прыжок - смотришь, как у него там реализовано (в основном это засчёт переключение полёта - fly on\off). Делаешь такую же аналогию, но добавляешь условии со стеной, чтобы можно было использовать бесконечно.
    Готово.
     
  4. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Задавать вектор игроку при прыжке и проверять, возле стены ли он.
    player.setCompassTarget(location)
    player.damage(int/double, player) - хотя, когда я писал MineCS, это не работало, приходилось бросаться эвентами
     
    serega6531 нравится это.
  5. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Попробую поискать исходники.
    Попробую с векторами. Как проверить, находится ли он около стены? Проверять блоки перед ним?
    И как отлавливать прыжок?
     
  6. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ну да, проверять блоки. Можно даже проверять, есть ли перед его глазами блок через player.getTargetBlock(null(любой блок); 1(на расстоянии 1 метра)).
    Прыжок тоже всяко отлавливать можно. Я брал грузный Move эвент и проверял по условия player.isOnGround()
     
    serega6531 нравится это.
  7. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Спасибо!
    player.isOnGround() deprecated! Есть entity.isOnGround().
     
  8. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ну раз устарел, то можно и сделать player.getEntity().isOnGround()
     
    serega6531 нравится это.
  9. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Да и getTargetBlock() тоже deprecated.
    The method getEntity() is undefined for the type Player
     
  10. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Да не пугайся ты этих депрекатедов. Пока методу нет замены, он будет работать.
     
  11. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Ладно, и как получить блок впереди игрока? Мне нужен блок на уровне лица.
     
  12. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
  13. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    И от какого блока мне его брать?
    А если так:

    Код:
            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!
    Сделал, но нужно узнать, вдруг игрок спускается я не поднимается. Как?
     
  14. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    У игрока есть вектор движения, вот по нему и смотри куда он направлен.

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

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    И как смотреть?
     
  16. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    ниже написано.

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

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Как по вектору посмотреть?
     
  18. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    >.<

    Открывай любой учебный ресурс и читай про вектора, про его направление и думай, что с ним можно сделать.
     
  19. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Тут поднятие на полете.
    Я так понимаю, если y вектора отрицательный, то игрок движется вниз. Так?
     
  20. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    просто прочитай про вектора, вспомни линейную алгебру.
     
Статус темы:
Закрыта.

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