1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов 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. Bohdan_Hrytsak

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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