Игрок Чат событие в плагине Minecraft Java не делает то, что должен делать

У меня была странная ситуация, когда мне нужно было напечатать компонент реакции, который получает большой объем данных и рисует на холсте. Я пробовал все упомянутые подходы, но они не работали надежно для меня, с requestAnimationFrame внутри setTimeout я получаю пустой холст в 20% случаев, поэтому я сделал следующее:

nRequest = n => range(0,n).reduce(
(acc,val) => () => requestAnimationFrame(acc), () => requestAnimationFrame(this.save)
);

В основном я сделал цепочка requestAnimationFrame, не уверен, что это хорошая идея или нет, но это работает в 100% случаев для меня до сих пор (я использую 30 как значение для переменной n).

1
задан kaci 4 March 2019 в 18:05
поделиться

2 ответа

Итак, я смог получить функцию mutechat со следующим кодом: package com.ste999.events;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
//import org.bukkit.event.EventPriority;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginManager;

public class Main extends JavaPlugin implements Listener{
    public static boolean chatMuted = false;
    @Override
    public void onEnable()
    {
        getLogger().info("events tester enabled!");
        PluginManager pm = this.getServer().getPluginManager();
        pm.registerEvents(this, (this));
    }

    @Override
    public void onDisable()
    {
        getLogger().info("events tester disabled!");
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    {
        Player player = (Player)sender;
        if (cmd.getName().equalsIgnoreCase("mutechat")) {
            if (player.hasPermission("ste999.chat.mute")) {
            if(chatMuted == false) {
                Bukkit.broadcastMessage("§aThe chat has been disabled!");
                chatMuted = true;
                }
                else {
                if(chatMuted == true) {
                Bukkit.broadcastMessage("§aThe chat has been enabled!");
                chatMuted = false;
                }
                }
            } else {
                if (!player.hasPermission("ste999.chat.mute")) {
                player.sendMessage("§4You can't mute the chat silly!");
                }
            }
            }
    return false;
    }
    @EventHandler
    public void OnChat(AsyncPlayerChatEvent event)
    {
        Player pli = event.getPlayer();
        if (chatMuted == true) {
            if (!pli.hasPermission("ste999.chat.bypass")) {
                event.setCancelled(true);
                pli.sendMessage("§4The chat has been disabled");
            } else {
                if (pli.hasPermission("ste999.chat.bypass")) {
                    event.setCancelled(false);
                }
            }
        }
    }
}

Мне нужно было зарегистрировать события, но getServer().getPluginManager().registerEvents(this, this) у меня не сработало, поэтому Мне нужно было сделать это так, как я это делал в коде в onEnable и там, где было несколько других проблем

.
0
ответ дан kaci 4 March 2019 в 18:05
поделиться

Вашему классу событий (я серьезно рекомендую новый класс для этого) необходимо реализовать интерфейс прослушивателя . Только тогда вы можете зарегистрировать его.

0
ответ дан Benjamin Urquhart 4 March 2019 в 18:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: