当前位置: 首页 > 知识库问答 >
问题:

Bukkit插件:主类中的侦听器

谢选
2023-03-14

我正试着做一个插件,你输入命令/设置,它就切换布尔设置。如果set是真的,我希望当玩家加入时,它对他们说“嗨”,但如果set是假的,它什么也不做。(顺便说一句,我是唯一可以使用这个命令的人)。我试着创建两个类,一个是主类,另一个是侦听器类,但是我不能从侦听器类访问布尔值,所以我试着把它们都放在一个类中。当使用我提供的代码时,除了PlayerJoinEvent之外,一切都正常。我要么需要解决如何从另一个类访问布尔值,要么解决这个问题。

package me.jakegeyer28;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

import net.md_5.bungee.api.ChatColor;

public class Main extends JavaPlugin implements Listener{

    public boolean set = true;

    @Override
    public void onEnable() {
        getLogger().info("Done");
    }

    @Override
    public void onDisable() {
        getLogger().info("Done");
    }

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (cmd.getName().equalsIgnoreCase("settings")) {
            Player player = (Player) sender;
            if (player.getName().equalsIgnoreCase("jakegeyer27")) {
            if(set == true) {
                set = false;
                player.sendMessage(ChatColor.RED + "Off");
                }
            else if (set == false) {
                set = true;
                player.sendMessage(ChatColor.GREEN + "On");
                }
            }
            return true;
        }
        return false;
    }

    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent e) {
        Player player = e.getPlayer();
        if (set == true) {
        player.sendMessage("hi");
    }
    }
    }

谢谢

共有1个答案

吴才俊
2023-03-14

您似乎尚未注册侦听器。即使侦听器是你的主类,你仍然需要在你的 onEnable 方法中用 this.getServer().getPluginManager().registerEvents(this, this);注册它

 类似资料:
  • 嗨,我有这个问题与我的代码每次我使一个对象在监听器类的监听器将不工作例如。 我在我的主类(CSmain.java)中有这个公共变量: 我在类中还有一个名为getSpawn()的方法,它返回spawn: 我已经在我的onEnable()中初始化了这个变量,但是当我试图从我的另一个类中获取它时,这个类(JoinListener.java)将无法工作。 我测试了它没有创建对象(CSmain main C

  • 我正在尝试学习如何编写minecraft插件,但是我在开始时遇到了一点问题,当我尝试运行导出的插件时,我得到一个主类未找到错误。我已经尝试移动plugin.yml文件,检查所有部分都导出和重命名类等无济于事。也阅读了现有的问题。任何帮助都将不胜感激。 主要: helloCommand: 插件。yml: 控制台错误: Pic of Package Explorer编辑前一个问题,更正建议但错误仍然存

  • 在用java编写Minecraft插件时,您可以创建一个事件监听器方法,并将其命名为任意名称,但您必须传入事件监听者的类,例如: 我只是想知道,如果Bukkit API中的任何类都不知道该方法的名称,那么该方法是如何在“幕后”执行的?我希望我能很好地解释自己。谢谢

  • 我正在尝试恢复一个插件,但发现了一个错误: 我做的一切都是对的!plugin.yml外部罐子和出口,但仍然不起作用。知道为什么吗?

  • 当我试图在我的bukkit服务器中加载插件时,我遇到了NullPointerExc的问题,但在Eclipse中没有错误。我的插件是Rush插件,很多东西没有使用/丢失。错误是这样的: 以下是我的代码:

  • 我有一个自定义的事件在我的bukkit/龙头插件,扩展PlayerInteract事件,试图打开箱子在附近的地区周围的球员。 目前代码使用这个事件来确保没有其他插件(例如悲伤预防)反对玩家打开箱子。如果玩家可以打开箱子,我的插件会尝试将物品放入箱子。我想忽略< code>setCancelled(),如果它被某个插件(理想情况下)或类(作为一种解决方法)调用的话 从这个问题中我可以看出,要获得我可