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

Помогите Как убрать любую телепортацию в регион

Тема в разделе "Помощь", создана пользователем Detfor, 22 сен 2019.

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

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

    Баллы:
    61
    Имя в Minecraft:
    Detfor
    У меня на сервере есть пирамида испытаний, за чье прохождение игрок получает награду. Мне нужно как-то сделать чтобы извне нельзя было туда телепортироваться к другим игрокам. Флаг blocked-cmds может убрать только /tpaccept, а если к игроку тпхается его супруг(а) или друг то ему уже вводить команду не нужно. Есть ли способ такой?
     
  2. alexandrage

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

    Баллы:
    173
    Кастом флагом, типо такого.
    Код:
        @EventHandler
        public void on(PlayerTeleportEvent e) {
            if (Flags.canBuild(e.getPlayer(), e.getTo())) {
                return;
            }
            if (!WGRegionUtils.isFlagAllows(e.getPlayer(), e.getTo(), TeleportFlag.getInstance())) {
                e.setCancelled(true);
            }
        }
    (Flags.canBuild)
    Код:
    wp = WorldGuard.getInstance().getPlatform();
    Код:
    wg = (WorldGuardPlugin) JavaPlugin.getPlugin(WorldGuardPlugin.class);
    Код:
        public static boolean canBuild(Player p, Location loc) {
            return p.hasPermission("worldguard.region.bypass." + p.getWorld().getName())
                    || wp.getRegionContainer().createQuery().testBuild(BukkitAdapter.adapt(loc), wg.wrapPlayer(p));
        }
    Код:
    public class TeleportFlag extends StateFlag {
        private static TeleportFlag instance;
    
        public static TeleportFlag getInstance() {
            if (instance == null) {
                instance = new TeleportFlag();
            }
            return instance;
        }
    
        protected TeleportFlag() {
            super("tp", true);
        }
    
        public State getDefault() {
            return State.ALLOW;
        }
    
        public static StateFlag.State allowOrNone(boolean flag) {
            return StateFlag.State.ALLOW;
        }
    }
     
    Последнее редактирование: 22 сен 2019
  3. alexandrage

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

    Баллы:
    173
    (WGRegionUtils)
    Код:
    public static final RegionQuery REGION_QUERY = WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery();
    Код:
        public static boolean isFlagAllows(Player player, Location location, StateFlag flag) {
            return REGION_QUERY.testState(BukkitAdapter.adapt(location), Flags.getWorldGuard().wrapPlayer(player), flag);
        }
     
  4. alexandrage

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

    Баллы:
    173
    Ну и сама регистрация в onLoad, не путать с onEnable, иначе не зарегистрируется.
    WorldGuard.getInstance().getFlagRegistry().register(TeleportFlag.getInstance());
     
  5. alexandrage

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

    Баллы:
    173
    P.s Если сложно, скину свой плагин на кастомфлагс.
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
  7. alexandrage

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

    Баллы:
    173
    Не пробовал, не знаю. И я тут увидел ток запрет тп из региона, работает он в обратную сторону или нет.
     
  8. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Я не исключаю, что entry относится и к пешим заходам, и к телепортациям внутрь. Да и на уровне баккита фича с запретом телепорта реализуется элементарно.
    В любом случае, ТСу стоит проверить
     
  9. alexandrage

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

    Баллы:
    173
    Ну как бы мой флаг делает на уровне бакита. А тот из самого плагина хз как работает.
     
    Последнее редактирование: 17 авг 2022
  10. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Так зачем твой флаг, если в WG, возможно, уже из коробки есть такой флаг? )
    Я говорю - пускай ТС чекнет
     
  11. alexandrage

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

    Баллы:
    173
    Ну если он такой же, че и нет. Но по описанию он односторонний.
     
    Последнее редактирование: 17 авг 2022

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