Событие onJoin не заменяет lastPlayer - PullRequest
1 голос
/ 23 июня 2019

Я пытаюсь создать команду, которая приветствует недавно присоединившегося проигрывателя, однако прослушиватель соединения не заменяет переменную lastPlayer, поэтому при вводе / welba он просто говорит о нуле.

package me.spoonle.welba.command;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;

import me.spoonle.welba.Main;
import me.spoonle.welba.Utils.Utils;

public class WelbaCommand implements CommandExecutor {

    private Main plugin;

    public WelbaCommand(Main plugin) {
        this.plugin = plugin;

        plugin.getCommand("welba").setExecutor(this);
    }

    public static String lastPlayer = null;

    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
        lastPlayer = e.getPlayer().getName();
    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage(Utils.chat("&cYou don't have access to this command! Only players can use this command!"));
            return true;
        }

        Player p = (Player) sender;

        if (p.hasPermission("welba.use")) {
            p.chat("Welcome Back, " + lastPlayer);
        } else {
            p.sendMessage("&cYou don't have use to this command!");
        }
        return false;
    }
}

Вот мой код для плагина. Нужно ли менять место слушателя? Я попытался создать для него отдельный класс, но когда я вызвал lastPlayer в моем классе Main, он не поднял бы переменную.

1 Ответ

2 голосов
/ 24 июня 2019

Вам необходимо реализовать интерфейс Listener и зарегистрировать класс в своем основном классе.

Регистрация класса Listener в вашем Main.java:

public class Main extends JavaPlugin {
    @Override
    public void onEnable() {
        this.getServer().getPluginManager().registerEvents(new MyListener(), this);       
    }
}

И реализоватьСлушатель в MyListener.java:

public class MyListener implements org.bukkit.event.Listener {
    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        // implement your handling ...
        event.getPlayer().sendMessage("§cIt works!");
    }
}

Для получения дополнительной информации см. this для получения дополнительной информации.

...