Minecraft Forge FMLClientSetupEvent 在服务器上触发?

Minecraft Forge FMLClientSetupEvent fired on Server?

如标题中所述,我认为 FMLClientSetupEvent 在 Forge-Minecraft 专用服务器上触发。 Forge 版本应该相同。总而言之,这会导致错误

java.lang.RuntimeException:尝试加载 class net/minecraft/client/renderer/entity/EntityRenderer 以获得无效的 dist DEDICATED_SERVER

我发现这是由于 CustomRender class 是 EntityRenderer[=27= 的子class ]. 删除我注册 CustomRender 的行“RenderingRegistry.registerEntityRend...”时,服务器启动正常。

有什么想法吗?我自己真的没有得到它,因为我无法调试服务器应用程序。

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) {
        
    }
}

我想通了。该事件未被触发,但显然服务器不喜欢导入 EntityRenderer class。所以我为客户端设置创建了一个新的 class,并在 FMLClientSetupEvent 之后调用它。