初始化代理的实现模式
此示例向你展示如何为你的 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);
}