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

Bukkit插件-侦听器未运行?

阎功
2023-03-14

嗨,我有这个问题与我的代码每次我使一个对象在监听器类的监听器将不工作例如。

我在我的主类(CSmain.java)中有这个公共变量:

public static Location spawn;

我在类中还有一个名为getSpawn()的方法,它返回spawn:

public Location getSpawn(){
    return spawn;
}

我已经在我的onEnable()中初始化了这个变量,但是当我试图从我的另一个类中获取它时,这个类(JoinListener.java)将无法工作。

@EventHandler
    public void onJoin(PlayerJoinEvent event){

        CSmain mainClass = new CSmain();

        Bukkit.broadcastMessage("Worked");
        event.getPlayer().teleport(mainClass.getSpawn());
        event.getPlayer().setGameMode(GameMode.ADVENTURE);

        setItem(event.getPlayer(), Material.COMPASS, "§2§kll §a§lGAMES §2§kll", 0);

}

我测试了它没有创建对象(CSmain main Class=new CSmain();)和(event.getPlayer()。怎么了?

共有1个答案

琴镜
2023-03-14

如果这是你的主要mod类,你永远不应该创建它的新实例。相反,你应该有一个

@Instance('yourmodid')
public static CSmain instance;

这样你就可以从任何地方检索你的mod实例:

// assuming your getSpawn() returns chunk coordinates
ChunkCoordinates cc = CSmain.instance.getSpawn();

你也可以从事件中获得世界繁殖位置。实体worldObj。getSpawn或getWorldSpawn——我记不得了,眼前也没有代码。

编辑:我看到你的产卵“位置”字段是公共的和静态的,这意味着你可以直接访问它:

CSmain.location;

我敦促你仔细阅读静态关键字的含义,因为如果你不完全理解它,它会以意想不到的方式对你的代码产生重大影响。请不要使用它,这样你就可以很容易地访问一个领域。

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

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

  • 我目前正在尝试使用bukkit插件。我每次都会遇到这个问题,想知道是否有人知道如何解决它。我已经尝试了你可以在谷歌上搜索的几乎所有修复方法,所以希望有人能分享一些光。 所有玩家事件都不起作用。当我用前面的@EventHandler做任何事情时,它就是不跑。下面是一个示例: 当在服务器上运行这个时,它永远不会看到玩家加入了游戏。

  • 我的代码使用jQuery。我有一个密码输入框,我想要得到输入的密码任何时候。 下面是我的代码: 我确信这是一个正确的代码,因为当我在浏览器的控制台中输入它时,它可以工作,但当我重新加载页面时,它就不工作了 我能做什么?

  • MyAlertDialog在尝试将上下文设置为侦听器时抛出ClassCastException。我正在从片段调用MyAlertDailog。 我正在使用在android开发文档中找到的指南。 https://developer.android.com/guide/topics/ui/dialogs#PassingEvents 我的片段 MyAlertDialog 错误报告

  • 我在我的一个工作流应用程序中使用了Camunda BPMN2.0。在我的一个服务任务中,我在start事件中创建了一个执行侦听器,在create事件中创建了一个任务侦听器。我不确定在开始时同时分配这些是否合适。如果是正确的,它们中的哪一个将首先执行--执行监听器或任务监听器,分别在start或create事件中执行?