初始化代理的實現模式
此示例向你展示如何為你的 Minecraft Mod 應用程式實現代理類,這些代理類用於初始化你的 mod。
首先,你需要實現基本 CommonProxy.java 類,其中包含 3 個主要使用的方法:
public class CommonProxy {
public void preInit(FMLPreInitializationEvent e) {}
public void init(FMLInitializationEvent e) {}
public void postInit(FMLPostInitializationEvent e) {}
}
通常,你的 mod 有兩個不同的客戶端和伺服器程式碼包,因此你需要在每個包中使用 CommonProxy.java 的子類,如:
public class ClientProxy extends CommonProxy {
@Override
public void preInit(FMLPreInitializationEvent e) {
super.preInit(e);
}
@Override
public void init(FMLInitializationEvent e) {
super.init(e);
}
@Override
public void postInit(FMLPostInitializationEvent e) {
super.postInit(e);
}
}
併為伺服器:
public class ServerProxy extends CommonProxy {
@Override
public void preInit(FMLPreInitializationEvent e) {
super.preInit(e);
}
@Override
public void init(FMLInitializationEvent e) {
super.init(e);
}
@Override
public void postInit(FMLPostInitializationEvent e) {
super.postInit(e);
}
}
建立此類之後,你可以通過必須僅在客戶端或伺服器端執行的方法擴充套件它們,但如果你在 base
類中呼叫方法,也可以將它們附加到兩者。
最後,你必須定義在執行時採用哪個代理。你必須使用 @Mod
註釋擴充套件主 mod 類,方法是:
private static final String CLIENTPROXY = "com.yourpackage.client.ClientProxy";
private static final String SERVERPROXY = "com.yourpackage.client.ServerProxy";
@SidedProxy(clientSide = CLIENTPROXY, serverSide = SERVERPROXY)
public static CommonProxy PROXY;
這將使 Forge 能夠檢測在執行時應該採用哪個類。在 Mod 的初始化方法中,你現在可以使用此靜態 PROXY 屬性。
@EventHandler
public void init(FMLInitializationEvent event) {
PROXY.init(event);
}
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
PROXY.preInit(event);
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
PROXY.postInit(event);
}