簡體   English   中英

Bukkit插件-監聽器未運行?

[英]Bukkit plugin - Listener not running?

嗨,每次我在Listener類中創建對象時,我的代碼都會遇到此問題,例如,偵聽器將無法工作

我的主類(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 mainClass = new CSmain();)和(event.getPlayer()。teleport(mainClass.getSpawn()))進行了測試,並且偵聽器工作正常。 怎么了?

如果那是您的主要mod類,則永遠不要為其創建新實例。 相反,您應該有一個

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

這樣,您可以從任何地方檢索您的mod實例,如下所示:

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

您還可以從event.entity.worldObj.getSpawn或getWorldSpawn獲取世界生成位置-我不記得我的頭並且沒有代碼在我面前。

編輯:我看到您的生成“位置”字段既是公共的又是靜態的,這意味着您可以直接訪問它:

CSmain.location;

我敦促您讀一下static關鍵字的含義,因為如果您不完全理解它,它將以意想不到的方式極大地影響您的代碼。 請不要僅使用它,以便您可以輕松訪問字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM