minecraft forge fmlclientsetupevent在服务器上激发?

x33g5p2x  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(373)

如标题所述,我认为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) {

    }
}
qpgpyjmq

qpgpyjmq1#

我想出来了。事件没有被触发,但显然服务器不喜欢entityrenderer类被导入。因此,我为客户机设置东西创建了一个新类,并在fmlclientsetupevent之后调用它。

相关问题