[英]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.