FairFly

FairFly 1.1

Нет прав для скачивания

Кактус

Заблокирован
Сообщения
1 536
Решения
90
Будьте осторожны с рекомендациями этого пользователя.
cactus122 обновил(а) ресурс FairFly новой записью:

Обновление 1.1

Добавлено право на обход требования надевать элитры - fairfly.bypass
Исправлена логика проверки на отсутствие элитр, теперь она не будет съедать все ресурсы сервера
Теперь права зарегистрированы по нормальному

Узнать больше об этом обновлении...
 
Будьте осторожны с рекомендациями этого пользователя.
chest?
Вам необходимо зарегистрироваться для просмотра изображений-вложений
 
можно слотом(цифрой) на хотбаре убрать элитру и всё, флай останется
Объединено

я не дорос до этого
Java:
public static void scheduler(MainClass main) {
        Bukkit.getScheduler().runTaskTimerAsynchronously(main, () -> {
            for(Player p : Bukkit.getOnlinePlayers()) {
                if(p.getInventory().getChestplate().getType() == Material.ELYTRA) {
                    if(p.getAllowFlight()) {
                        p.setAllowFlight(false);
                    }
                }
            }
        },0,10); // время в тиках (20тиков = 1сек), 1 цифра ожидание перед запуском потока, 2 цифра - интервал повторения потока
    }

    @Override
    public void onEnable() {
        Utils.scheduler(this);
    }
Объединено

я бы ещё создал лист игроков которые летают, чтобы не проверять всех игроков сервера.
после ввода команды игроком добавь его в лист который будешь иттерировать в потоке
 
Последнее редактирование:
Будьте осторожны с рекомендациями этого пользователя.
Плагин отличный! но проблему с читом не решает
 
Последнее редактирование:
offtop
Объединено

offtop попробуй это:
Java:
HashMap<UUID, Location> from = new HashMap<>();
HashMap<UUID, Location> to = new HashMap<>();
    @EventHandler
    public void onMove(PlayerMoveEvent e) {
        Player p = e.getPlayer();
        if(p.getAllowFlight()) {
            if(!from.containsKey(p.getUniqueId())) {
                from.put(p.getUniqueId(), p.getLocation());
            }
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    to.put(p.getUniqueId(), p.getLocation());
                    if(from.get(p.getUniqueId()).distance(to.get(p.getUniqueId())) > 5) {
                        p.kickPlayer("Далеко собрался?");
                    }
                    from.remove(p.getUniqueId());
                    to.remove(p.getUniqueId());
                }
            },500);
        }
    }
точно я не знаю работает ли таймер на бакките, но вроде должен
 
offtop
Объединено


offtop попробуй это:
Java:
HashMap<UUID, Location> from = new HashMap<>();
HashMap<UUID, Location> to = new HashMap<>();
    @EventHandler
    public void onMove(PlayerMoveEvent e) {
        Player p = e.getPlayer();
        if(p.getAllowFlight()) {
            if(!from.containsKey(p.getUniqueId())) {
                from.put(p.getUniqueId(), p.getLocation());
            }
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    to.put(p.getUniqueId(), p.getLocation());
                    if(from.get(p.getUniqueId()).distance(to.get(p.getUniqueId())) > 5) {
                        p.kickPlayer("Далеко собрался?");
                    }
                    from.remove(p.getUniqueId());
                    to.remove(p.getUniqueId());
                }
            },500);
        }
    }
точно я не знаю работает ли таймер на бакките, но вроде должен
Я на других проектах видел что если ты одеваешь элитры и пишешь /fly, то ты летишь бесконечно на элитрах пока они одеты как-будто бесконечный фейерверк и ускорить полет не получается сразу кикает античит, я не понимаю как они это смогли реализовать
Объединено

offtop
Объединено


offtop попробуй это:
Java:
HashMap<UUID, Location> from = new HashMap<>();
HashMap<UUID, Location> to = new HashMap<>();
    @EventHandler
    public void onMove(PlayerMoveEvent e) {
        Player p = e.getPlayer();
        if(p.getAllowFlight()) {
            if(!from.containsKey(p.getUniqueId())) {
                from.put(p.getUniqueId(), p.getLocation());
            }
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    to.put(p.getUniqueId(), p.getLocation());
                    if(from.get(p.getUniqueId()).distance(to.get(p.getUniqueId())) > 5) {
                        p.kickPlayer("Далеко собрался?");
                    }
                    from.remove(p.getUniqueId());
                    to.remove(p.getUniqueId());
                }
            },500);
        }
    }
точно я не знаю работает ли таймер на бакките, но вроде должен
Хочу найти что то подобное, так как они сильно грузят чанки и ломают игровой процесс
 
очно я не знаю работает ли таймер на бакките, но вроде должен
Он везде работает.

Timer timer = new Timer();
Не нужно каждый раз создавать новый таймер. Создай 1 раз и используй

p.kickPlayer("Далеко собрался?");
Это упадет с исключением. Кик возможен только в основном потоке

А ещё твой код кикнет игрока, если он телепортируется куда-то, дёргая камерой
 
Назад
Сверху Снизу