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

Помогите Алгоритм захвата

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

  1. Автор темы
    Mihael_i

    Mihael_i Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Mihael_i
    Здравствуйте, я еще совсем новичок, моя цель создать такой плагин:
    В мире есть точка, если на нее встать и простоять на ней 5 секунд, то она будет захвачена игроком, как я представляю себе реализацию:
    Создать HashMap<Player, Integer>, при присоединение игрока к серверу занесет в мап с значением 0. При PlayerMoveEvent я собираюсь проверять координаты игрока, и если они соответствуют координатам точки, то менять его значение в мап на 5. Далее, каждую секунду будет срабатывать шелдулер, который будет перебирать всех игроков у которых значение не ноль и, если координаты до сих пор соответствуют координате точки, то он будет уменьшать значение на 1 и, в итоге, когда значение станет равно 1, плагин занесет игрока в Player winplayer.
    Правильно ли я вижу реализацию? И может ли из-за шелдулера раз в 1 секунду сильно нагружаться сервер?
     
  2. Хостинг MineCraft
    <
  3. Bohdan_Hrytsak

    Bohdan_Hrytsak Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NegaTiV
    -_-
     
    Последнее редактирование: 6 авг 2016
  4. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Того что выше - не слушай, он по моему не выспался. Мув эвент тебе не нужен. Шедулер в секунду и все.
    Нагрузка сервера зависит от того как будешь проверять что игрок на точке.
     
  5. Автор темы
    Mihael_i

    Mihael_i Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Mihael_i
    Хорошо, спасибо. Я собираюсь перебирать всех игроков, получать их x,y,z и сравнивать их с x,y,z точки, это правильно? Или существует более оптимизированный способ?
     
  6. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    помоему можно создать локацию той точки, и получать всех энтити вокруг.[DOUBLEPOST=1470477739,1470477088][/DOUBLEPOST]
    Код:
            for (Entity e : loc.getWorld().getNearbyEntities(loc, 1, 1, 1)) {
                if (e.getType() == EntityType.PLAYER) {
                    //выполняй код где увеличиваешь время
                }
            }
     
  7. Автор темы
    Mihael_i

    Mihael_i Активный участник Пользователь

    Баллы:
    66
    Имя в Minecraft:
    Mihael_i
    Ок, спасибо.
     
  8. Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    B1ruk
    Откуда в World есть метод getNearbyEntities()!? Никогда не замечал!
     
  9. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Есть. Ну по крайней мере в 1.10 есть.
     
  10. Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    B1ruk
    Етить его в жопу! Он и на 1.8 есть!
     

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