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

Помогите Помогите мне правильно обработать BlockBreakEvent в плагине

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

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

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

    Баллы:
    66
    Решил для интереса обновить заброшенный плагин OPSRegion. Уже многое в нем переделал (добавил команды для проверки WE и WG), но есть такая проблемка небольшая. Как правильно построить двойное условие таким образом, чтобы при попытке сломать блок сообщение об отсутствии доступа к региону (спавну) отображалось только на основном регионе, а не на автошахте (при попытке там сломать блок, такое же сообщение показывает, хотя блок сломать можно). На основных регионах, которые занесены в список, при попытке редактировать регион выводит сообщение, которое я придумал. Переходить мне на другой плагин или бросить это дело мне не предлагать! Вот скрипт, проверьте его и предлагайте варианты исправления (кто тут в java хорошо разбирается):
    Код:
        @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false)
        void wg(final BlockBreakEvent e) {
            final Player p = e.getPlayer();
            if (!p.hasPermission("OPSRegion.admin")) {
                if (this.wgs(p.getWorld(), e.getBlock().getLocation(), false)) {
                    e.setCancelled(true);
                    p.sendMessage("§c§l[!]§7 \u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u044e \u0441\u0435\u0440\u0432\u0435\u0440\u0430!");
                }
                if (this.wgs(p.getWorld(), e.getBlock().getLocation(), true)) {
                    e.setCancelled(false);
                }
            }
        }
        
     
    Последнее редактирование: 1 мар 2018
  2. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Чот орнул
     
  3. ZONCCK

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

    Баллы:
    78
    Имя в Minecraft:
    ZONCCK
    Java и Javascript немного разные языки)
     
  4. Автор темы
    Crosstwinz

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

    Баллы:
    66
    Уже подправил
     
  5. Автор темы
    Crosstwinz

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

    Баллы:
    66
    Ну так что с моей проблемой?
     
  6. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    На жыэс пиши
     
  7. Автор темы
    Crosstwinz

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

    Баллы:
    66
    Обьясните пж по подробнее, "жыэс" не понимаю.
     
  8. php5master

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

    Баллы:
    66
    Ну только проверять на количество регионов в данном блоке

    Код:
    // Получаешь RegionManager из мира
    RegionManager wgCurrWorldRM = wgInst.getRegionManager(player.getWorld());
    //По любому локейшену создаёшь такой объект
    ApplicableRegionSet arSet = wgCurrWorldRM.getApplicableRegions(block.getLocation());
    //Среди этого сета ищем "спавн"
    boolean isSpawn = false;
    for (ProtectedRegion each : arSet) {
      if (each.getId().equalsIgnoreCase("spawn")) {
        isSpawn = true;
        break;
      }
    }
    // Чекаешь на количество приватов в локейшене
    if(arSet.size() == 1 && isSpawn)
    {
      p.sendMessage("Иди отсюда! Это не твоё!");
    }
    Источник: англофорумы и гугл
    Время: 5-10 минут
     
    Последнее редактирование: 2 мар 2018
Статус темы:
Закрыта.

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