FairFly

FairFly 1.1

Создайте и подтвердите аккаунт для скачивания

Кактус

Заблокирован
Сообщения
1 526
Решения
90
Будьте осторожны с рекомендациями этого пользователя.
cactus122 обновил(а) ресурс You must be logged in to see this link. новой записью:

You must be logged in to see this link.

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

You must be logged in to see this link.
 
Будьте осторожны с рекомендациями этого пользователя.
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 You must be logged in to see this link.
Объединено

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 You must be logged in to see this link.
Объединено


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 You must be logged in to see this link.
Объединено


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("Далеко собрался?");
Это упадет с исключением. Кик возможен только в основном потоке

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