Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

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

Discussion in 'Разработка плагинов для новичков' started by serega6531, Jan 25, 2014.

Thread Status:
Not open for further replies.
  1. Автор темы
    serega6531

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

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
  4. ptnk

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

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

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

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
    Попробую поискать исходники.[DOUBLEPOST=1390662416,1390662364][/DOUBLEPOST]
    Попробую с векторами. Как проверить, находится ли он около стены? Проверять блоки перед ним?[DOUBLEPOST=1390662645][/DOUBLEPOST]И как отлавливать прыжок?
     
  7. Den_Abr

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

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
    Спасибо![DOUBLEPOST=1390663833,1390663143][/DOUBLEPOST]player.isOnGround() deprecated! Есть entity.isOnGround().
     
  9. Den_Abr

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

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
    Да и getTargetBlock() тоже deprecated.[DOUBLEPOST=1390664175,1390664142][/DOUBLEPOST]The method getEntity() is undefined for the type Player
     
  11. Den_Abr

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

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

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

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

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

    Trophy Points:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
  14. Автор темы
    serega6531

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

    Trophy Points:
    173
    Skype:
    shkurovs
    И от какого блока мне его брать?[DOUBLEPOST=1390669827,1390665059][/DOUBLEPOST]А если так:

    Code:
            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
            }
    ?[DOUBLEPOST=1390671322][/DOUBLEPOST]Up![DOUBLEPOST=1390672937][/DOUBLEPOST]Сделал, но нужно узнать, вдруг игрок спускается я не поднимается. Как?
     
  15. ptnk

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

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

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
    И как смотреть?
     
  17. ptnk

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

    Trophy Points:
    173
    ниже написано.

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
    Как по вектору посмотреть?
     
  19. ptnk

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

    Trophy Points:
    173
    >.<

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

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

    Trophy Points:
    173
    Skype:
    shkurovs
    Тут поднятие на полете.[DOUBLEPOST=1390674737,1390674690][/DOUBLEPOST]
    Я так понимаю, если y вектора отрицательный, то игрок движется вниз. Так?
     
  21. ptnk

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

    Trophy Points:
    173
    просто прочитай про вектора, вспомни линейную алгебру.
     
Thread Status:
Not open for further replies.

Share This Page