Помогите Как мне при закрытии инвентаря, снова его открывать?

TheKrealisYT

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
_TheKrealisYT_
У меня есть метод CommandCheck.CommandProcessGUI(p), который открывает меню.
Мне нужно, чтобы если игрок, находившийся в списке frozen при движении все время открывал меню, даже если закрывает.
Я создал эвент:
@EventHandler
public void onPlayerMove(PlayerMoveEvent e) {
if (e.getPlayer() != null && e.getFrom() != null && e.getTo() != null) {
Player p = e.getPlayer();
if (frozen.contains(p.getName())) {
e.setTo(e.getFrom());
CommandCheck.commandProcessGUI(p);
p.sendMessage(Utils.s(instance.getConfig().getString("settings.check.messages.check_move_canceled")));
CommandCheck.commandProcessGUI(p);
if (!e.getPlayer().getInventory().getName()
.equals(Utils.s(instance.getConfig().getString("settings.check.gui-name")))) {
CommandCheck.commandProcessGUI(p);
}
Когда игрок двигается, его возвращает обратно, верно. Открывается инвентарь, все как и должно быть, игрок его закрыл, он снова открылся, игрок его опять закрыл и на этот раз уже инвентарь не открывается. Подскажите, как мне реализовать эту идею? Все махинации с InventoryCloseEvent у меня не работали, но можете предложить свой вариант.
 
Не понятно, что конкретно ты пытаешься реализовать, поэтому могу предложить только одно
При движении проверяй, открыт ли тот и или иной инвентарь у игрока, если нет - открывай

И почему не работали "махинации" с InventoryCloseEvent ? Что конкретно не работало?
 
Как вариант - сделать таймер и каждую секунду (ну или чаще) открывать игроку инвентарь если он у него не открыт.
 
Не понятно, что конкретно ты пытаешься реализовать, поэтому могу предложить только одно
При движении проверяй, открыт ли тот и или иной инвентарь у игрока, если нет - открывай
Тоже не совсем грамотно. Если игрок двигаться не будет, то и инвентарь не откроется. Я как понимаю ТС хочет сделать заморозку игрока и в меню ему тыкать на сообщение, которое он не сможет проигнорировать.
 
Тоже не совсем грамотно. Если игрок двигаться не будет, то и инвентарь не откроется. Я как понимаю ТС хочет сделать заморозку игрока и в меню ему тыкать на сообщение, которое он не сможет проигнорировать.

Я так понял, это что-то по типу анти-афк, пока игрок не тыкнет - его не отпустит?
 
По-моему, в InventoryCloseEvent нужно открывать инвентарь с задержкой, через тик-два.
 
Я так понял, это что-то по типу анти-афк, пока игрок не тыкнет - его не отпустит?
Нет, типо, проверка на читы, открывается подозреваемому менюшка, которую он закрыть не может, там ссылка на дискорд сервер, вся информация, почему его вызвали, итд
 
Как вариант - сделать таймер и каждую секунду (ну или чаще) открывать игроку инвентарь если он у него не открыт.
А можно код? Просто я не очень дружу с таймерами. +Он у меня все время предлагает Написать после TaskLater (Plugin), из-за чего и не работает, а так ошибка в IDE
 
А можно код? Просто я не очень дружу с таймерами. +Он у меня все время предлагает Написать после TaskLater (Plugin), из-за чего и не работает, а так ошибка в IDE
Код:
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    @Override
    public void run() {
        //код в таймере
    }
}, 0L, 20L); //0 - задержка для первого выполнения, 20 - интервал в тиках

где plugin - главный класс плагина, а точнее его экземпляр
 
Код:
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
    @Override
    public void run() {
        //код в таймере
    }
}, 0L, 20L); //0 - задержка для первого выполнения, 20 - интервал в тиках

где plugin - главный класс плагина, а точнее его экземпляр
Спасибо большое!
 
Назад
Верх