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 之后调用它。
如标题中所述,我认为 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 之后调用它。