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

  • Автор темы Автор темы Mihael_i
  • Дата начала Дата начала

Mihael_i

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Mihael_i
Здравствуйте, я еще совсем новичок, моя цель создать такой плагин:
В мире есть точка, если на нее встать и простоять на ней 5 секунд, то она будет захвачена игроком, как я представляю себе реализацию:
Создать HashMap<Player, Integer>, при присоединение игрока к серверу занесет в мап с значением 0. При PlayerMoveEvent я собираюсь проверять координаты игрока, и если они соответствуют координатам точки, то менять его значение в мап на 5. Далее, каждую секунду будет срабатывать шелдулер, который будет перебирать всех игроков у которых значение не ноль и, если координаты до сих пор соответствуют координате точки, то он будет уменьшать значение на 1 и, в итоге, когда значение станет равно 1, плагин занесет игрока в Player winplayer.
Правильно ли я вижу реализацию? И может ли из-за шелдулера раз в 1 секунду сильно нагружаться сервер?
 
-_-
 
Последнее редактирование:
Того что выше - не слушай, он по моему не выспался. Мув эвент тебе не нужен. Шедулер в секунду и все.
Нагрузка сервера зависит от того как будешь проверять что игрок на точке.
 
Того что выше - не слушай, он по моему не выспался. Мув эвент тебе не нужен. Шедулер в секунду и все.
Нагрузка сервера зависит от того как будешь проверять что игрок на точке.
Хорошо, спасибо. Я собираюсь перебирать всех игроков, получать их x,y,z и сравнивать их с x,y,z точки, это правильно? Или существует более оптимизированный способ?
 
Хорошо, спасибо. Я собираюсь перебирать всех игроков, получать их x,y,z и сравнивать их с x,y,z точки, это правильно? Или существует более оптимизированный способ?
помоему можно создать локацию той точки, и получать всех энтити вокруг.
Код:
        for (Entity e : loc.getWorld().getNearbyEntities(loc, 1, 1, 1)) {
            if (e.getType() == EntityType.PLAYER) {
                //выполняй код где увеличиваешь время
            }
        }
 
помоему можно создать локацию той точки, и получать всех энтити вокруг.
Код:
        for (Entity e : loc.getWorld().getNearbyEntities(loc, 1, 1, 1)) {
            if (e.getType() == EntityType.PLAYER) {
                //выполняй код где увеличиваешь время
            }
        }
Ок, спасибо.
 
помоему можно создать локацию той точки, и получать всех энтити вокруг.
Код:
        for (Entity e : loc.getWorld().getNearbyEntities(loc, 1, 1, 1)) {
            if (e.getType() == EntityType.PLAYER) {
                //выполняй код где увеличиваешь время
            }
        }
Откуда в World есть метод getNearbyEntities()!? Никогда не замечал!
 
Назад
Верх