如标题所述,我认为fmlclientsetupevent是在forge minecraft专用服务器上触发的。伪造版本应该是相同的。总之,这导致了错误
java.lang.runtimeexception:尝试为无效的dist专用\u服务器加载类net/minecraft/client/renderer/entity/entityrenderer
我发现这是因为customrender类是entityrenderer的一个子类。删除“renderingregistry.registerentityrend…”行时,我在其中注册customrender,服务器启动正常。
有什么想法吗?我真的没有得到它自己,因为我不能调试服务器应用程序。
fmlclientsetupevent的文档:https://mcforge.readthedocs.io/en/latest/conventions/loadstages/
我的代码:
@Mod(Utils.MOD_ID)
public class Main {
public Main() {
ModItems.ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus());
ModSounds.SOUNDS.register(FMLJavaModLoadingContext.get().getModEventBus());
ModEntityType.ENTITY_TYPES.register(FMLJavaModLoadingContext.get().getModEventBus());
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::serverSetup);
}
private void commonSetup(FMLCommonSetupEvent evt) {
}
private void clientSetup(FMLClientSetupEvent evt) {
Phaser.arrow = ModEntityType.LASERSTRAHL_ENTITY.get();
RenderingRegistry.registerEntityRenderingHandler(Phaser.arrow, renderManager -> new CustomRender(renderManager));
}
private void serverSetup(FMLDedicatedServerSetupEvent evt) {
}
}
1条答案
按热度按时间qpgpyjmq1#
我想出来了。事件没有被触发,但显然服务器不喜欢entityrenderer类被导入。因此,我为客户机设置东西创建了一个新类,并在fmlclientsetupevent之后调用它。