2014-01-18 76 views
0

我需要從我的bukkit插件中的IC2(mod)API調用一個函數。Bukkit Plugin Call IC2 Function

我會如何將IC2 API導入插件,以便我可以調用該函數?

給你一個想法,爲什麼我想這樣做;

下面是一段javascript,它完全符合我的需求。但是這個腳本運行了一個名爲ScriptCraft的插件,它可以讓你用javascript製作插件。我希望這個腳本能夠用java自帶的插件實現,所以我不需要ScriptCraft。

cl = __plugin.getClass().getClassLoader().getParent(); 
ic2 = cl.loadClass("ic2.core.IC2").newInstance(); 
net = ic2.network; 
dmm = cl.loadClass("net.minecraftforge.common.DimensionManager").newInstance(); 
worlds = dmm.getWorlds(); 

for(var wid in worlds){ 
    var te = worlds[wid].field_73009_h; 
    for (var ti=0;ti<te.size();ti++){ 
     if(te.get(ti).getFacing!=undefined){ 
      net.updateTileEntityField(te.get(ti),"facing") 
     } 
    } 
} 

我可以看到它在做什麼以及如何做。我只是不知道如何能夠在bukkit插件中運行IC2的updateTileEntityField()。

編輯: 我已經開始將它轉換爲java,但是我在運行之前並沒有太多的問題。

NetworkManager ic2 = new ic2.core.IC2().network; 
DimensionManager dmm = new net.minecraftforge.common.DimensionManager(); 
?? worlds = dmm.getWorlds(); //What Data Type? 

問題出在最後一行。 getWorlds()要求一個in []數據類型,這個eclipse說不存在。

回答

0

您需要將.jar API添加到eclipse中的Java Build Path中。

然後你應該可以創建一個新實例並調用你想調用的方法。

+0

我已經添加了jar,並導入它,但我無法弄清楚如何添加實例。 – Mattigins

0

如果你知道插件的名稱,你可以得到permissionsEx(或其他任何插件)是這樣的...

var pex = server.pluginManager.getPlugin('PermissionsEx'); 

if (pex.getUser(player).inGroup('moderator')) { 
... 
} 

一般來說,如果你想使用其他插件的API,然後獲取插件按名稱對象,然後調用其方法。希望這可以幫助。

Walter

相關問題