移除注册兼容事件,抽出独立的CompatManager
This commit is contained in:
parent
20b795486a
commit
0d5cef1a64
|
|
@ -33,7 +33,7 @@ mod_name=3944Realms 's Lib Mod
|
||||||
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
||||||
mod_license=MIT
|
mod_license=MIT
|
||||||
# The mod version. See https://semver.org/
|
# The mod version. See https://semver.org/
|
||||||
mod_version=0.2.1
|
mod_version=0.3.0
|
||||||
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
|
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
|
||||||
# This should match the base package used for the mod sources.
|
# This should match the base package used for the mod sources.
|
||||||
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||||
|
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
||||||
package top.r3944realms.lib39.api.event;
|
|
||||||
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
|
||||||
import net.minecraftforge.eventbus.api.Event;
|
|
||||||
import net.minecraftforge.fml.event.IModBusEvent;
|
|
||||||
import top.r3944realms.lib39.core.compat.CompatManager;
|
|
||||||
import top.r3944realms.lib39.core.compat.ICompat;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The type Register compat event.
|
|
||||||
*/
|
|
||||||
public class RegisterCompatEvent extends Event implements IModBusEvent {
|
|
||||||
/**
|
|
||||||
* The Compat manager.
|
|
||||||
*/
|
|
||||||
protected final CompatManager compatManager;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Instantiates a new Register compat event.
|
|
||||||
*
|
|
||||||
* @param compatManager the compat manager
|
|
||||||
*/
|
|
||||||
public RegisterCompatEvent(CompatManager compatManager) {
|
|
||||||
this.compatManager = compatManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets compat manager.
|
|
||||||
*
|
|
||||||
* @return the compat manager
|
|
||||||
*/
|
|
||||||
public CompatManager getCompatManager() {
|
|
||||||
return compatManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register compat.
|
|
||||||
*
|
|
||||||
* @param id the id
|
|
||||||
* @param compat the compat
|
|
||||||
*/
|
|
||||||
// 注册兼容模块
|
|
||||||
public void registerCompat(ResourceLocation id, ICompat compat) {
|
|
||||||
compatManager.registerCompat(id, compat);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register compat.
|
|
||||||
*
|
|
||||||
* @param namespace the namespace
|
|
||||||
* @param path the path
|
|
||||||
* @param compat the compat
|
|
||||||
*/
|
|
||||||
// 注册兼容模块(简化版本)
|
|
||||||
public void registerCompat(String namespace, String path, ICompat compat) {
|
|
||||||
compatManager.registerCompat(namespace, path, compat);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unregister compat.
|
|
||||||
*
|
|
||||||
* @param id the id
|
|
||||||
*/
|
|
||||||
// 取消注册兼容模块
|
|
||||||
public void unregisterCompat(ResourceLocation id) {
|
|
||||||
compatManager.unregisterCompat(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -4,8 +4,12 @@ import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraftforge.api.distmarker.Dist;
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
import net.minecraftforge.eventbus.api.IEventBus;
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
|
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
|
import net.minecraftforge.fml.event.lifecycle.FMLConstructModEvent;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
import top.r3944realms.lib39.Lib39;
|
import top.r3944realms.lib39.Lib39;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
@ -16,23 +20,43 @@ import java.util.stream.Collectors;
|
||||||
* The type Compat manager.
|
* The type Compat manager.
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public class CompatManager {
|
public abstract class CompatManager {
|
||||||
private final Map<ResourceLocation, ICompat> compats = new HashMap<>();
|
public ResourceLocation getId() {
|
||||||
private final IEventBus modEventBus, gameEventBus;
|
return id;
|
||||||
|
}
|
||||||
|
protected final Logger logger;
|
||||||
|
protected final ResourceLocation id;
|
||||||
|
protected final Map<ResourceLocation, ICompat> compats = new HashMap<>();
|
||||||
|
protected boolean initialized = false;
|
||||||
|
protected final List<Runnable> pendingTasks = new ArrayList<>();
|
||||||
|
protected final IEventBus modEventBus, gameEventBus;
|
||||||
|
|
||||||
// 存储事件监听器配置
|
// 存储事件监听器配置
|
||||||
private final List<ListenerConfig> listenerConfigs = new ArrayList<>();
|
protected final List<ListenerConfig> listenerConfigs = new ArrayList<>();
|
||||||
|
|
||||||
|
protected void initialize() {
|
||||||
|
modEventBus.addListener(this::onConstructMod);
|
||||||
|
modEventBus.addListener(this::onFMLCommonSetup);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
private void onConstructMod(FMLConstructModEvent event) {
|
||||||
* Instantiates a new Compat manager.
|
event.enqueueWork(() -> {
|
||||||
*
|
Lib39.LOGGER.info("[{}]: RegisterCompatEvent published during construct phase", this.getId());
|
||||||
* @param modEventBus the mod event bus
|
});
|
||||||
* @param gameEventBus the game event bus
|
}
|
||||||
*/
|
private void onFMLCommonSetup(FMLCommonSetupEvent event) {
|
||||||
public CompatManager(IEventBus modEventBus, IEventBus gameEventBus) {
|
event.enqueueWork(() -> {
|
||||||
|
initializeAllCompat();
|
||||||
|
Lib39.LOGGER.info("[{}]: CompatManager initialized with {} modules", this.getId(), getLoadedCompats().size());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public CompatManager(ResourceLocation id, IEventBus modEventBus, IEventBus gameEventBus) {
|
||||||
|
this.id = id;
|
||||||
this.modEventBus = modEventBus;
|
this.modEventBus = modEventBus;
|
||||||
this.gameEventBus = gameEventBus;
|
this.gameEventBus = gameEventBus;
|
||||||
|
this.logger = LoggerFactory.getLogger(id.toString());
|
||||||
|
initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -42,13 +66,24 @@ public class CompatManager {
|
||||||
* @param compat the compat
|
* @param compat the compat
|
||||||
*/
|
*/
|
||||||
public void registerCompat(ResourceLocation id, ICompat compat) {
|
public void registerCompat(ResourceLocation id, ICompat compat) {
|
||||||
|
if (initialized) {
|
||||||
|
// 已初始化,直接注册
|
||||||
|
doRegisterCompat(id, compat);
|
||||||
|
} else {
|
||||||
|
// 未初始化,缓存起来
|
||||||
|
pendingTasks.add(() -> doRegisterCompat(id, compat));
|
||||||
|
logger.debug("Cached compat registration for: {}", id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doRegisterCompat(ResourceLocation id, ICompat compat) {
|
||||||
if (compats.containsKey(id)) {
|
if (compats.containsKey(id)) {
|
||||||
Lib39.LOGGER.warn("Compat with id {} is already registered!", id);
|
logger.warn("Compat with id {} is already registered!", id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
compats.put(id, compat);
|
compats.put(id, compat);
|
||||||
addListenerForCompat(id);
|
addListenerForCompat(id);
|
||||||
Lib39.LOGGER.debug("Registered compat: {}", id);
|
logger.debug("Registered compat: {}", id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -120,19 +155,23 @@ public class CompatManager {
|
||||||
/**
|
/**
|
||||||
* 初始化所有兼容模块并应用事件监听器
|
* 初始化所有兼容模块并应用事件监听器
|
||||||
*/
|
*/
|
||||||
public void initializeAll() {
|
public void initializeAllCompat() {
|
||||||
Lib39.LOGGER.info("Initializing {} compatibility modules", compats.size());
|
logger.info("Initializing {} compatibility modules", compats.size());
|
||||||
|
|
||||||
|
// 先处理所有缓存的注册
|
||||||
|
pendingTasks.forEach(Runnable::run);
|
||||||
|
pendingTasks.clear();
|
||||||
|
|
||||||
// 1. 先初始化所有兼容模块
|
// 1. 先初始化所有兼容模块
|
||||||
for (Map.Entry<ResourceLocation, ICompat> entry : compats.entrySet()) {
|
for (Map.Entry<ResourceLocation, ICompat> entry : compats.entrySet()) {
|
||||||
try {
|
try {
|
||||||
entry.getValue().initialize();
|
entry.getValue().initialize();
|
||||||
Lib39.LOGGER.info("Initialized compat: {}", entry.getKey());
|
logger.info("Initialized compat: {}", entry.getKey());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Lib39.LOGGER.error("Failed to initialize compat: {}", entry.getKey(), e);
|
logger.error("Failed to initialize compat: {}", entry.getKey(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
initialized = true;
|
||||||
// 2. 然后应用所有事件监听器
|
// 2. 然后应用所有事件监听器
|
||||||
applyAllEventListeners();
|
applyAllEventListeners();
|
||||||
}
|
}
|
||||||
|
|
@ -141,7 +180,7 @@ public class CompatManager {
|
||||||
* 应用所有配置的事件监听器到对应的 ICompat 实例
|
* 应用所有配置的事件监听器到对应的 ICompat 实例
|
||||||
*/
|
*/
|
||||||
private void applyAllEventListeners() {
|
private void applyAllEventListeners() {
|
||||||
Lib39.LOGGER.info("Applying {} event listener configurations", listenerConfigs.size());
|
logger.info("Applying {} event listener configurations", listenerConfigs.size());
|
||||||
|
|
||||||
for (ListenerConfig config : listenerConfigs) {
|
for (ListenerConfig config : listenerConfigs) {
|
||||||
if (config.compatId == null) {
|
if (config.compatId == null) {
|
||||||
|
|
@ -207,11 +246,11 @@ public class CompatManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lib39.LOGGER.debug("Applied {} listener to compat: {}",
|
logger.debug("Applied {} listener to compat: {}",
|
||||||
getListenerTypeName(config), compat.id());
|
getListenerTypeName(config), compat.id());
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Lib39.LOGGER.error("Failed to apply listener to compat: {}", compat.id(), e);
|
logger.error("Failed to apply listener to compat: {}", compat.id(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -238,7 +277,7 @@ public class CompatManager {
|
||||||
addListenerForCompat(compatId, null, bus);
|
addListenerForCompat(compatId, null, bus);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ListenerConfig {
|
protected static class ListenerConfig {
|
||||||
/**
|
/**
|
||||||
* The Compat id.
|
* The Compat id.
|
||||||
*/
|
*/
|
||||||
|
|
@ -282,12 +321,12 @@ public class CompatManager {
|
||||||
* On load complete.
|
* On load complete.
|
||||||
*/
|
*/
|
||||||
public void onLoadComplete() {
|
public void onLoadComplete() {
|
||||||
Lib39.LOGGER.info("Calling onLoadComplete for {} compatibility modules", compats.size());
|
logger.info("Calling onLoadComplete for {} compatibility modules", compats.size());
|
||||||
for (Map.Entry<ResourceLocation, ICompat> entry : compats.entrySet()) {
|
for (Map.Entry<ResourceLocation, ICompat> entry : compats.entrySet()) {
|
||||||
try {
|
try {
|
||||||
entry.getValue().onLoadComplete();
|
entry.getValue().onLoadComplete();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Lib39.LOGGER.error("Error in onLoadComplete for compat: {}", entry.getKey(), e);
|
logger.error("Error in onLoadComplete for compat: {}", entry.getKey(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -320,7 +359,7 @@ public class CompatManager {
|
||||||
public void unregisterCompat(ResourceLocation id) {
|
public void unregisterCompat(ResourceLocation id) {
|
||||||
ICompat removed = compats.remove(id);
|
ICompat removed = compats.remove(id);
|
||||||
if (removed != null) {
|
if (removed != null) {
|
||||||
Lib39.LOGGER.debug("Unregistered compat: {}", id);
|
logger.debug("Unregistered compat: {}", id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,6 @@ import net.minecraftforge.fml.event.lifecycle.FMLConstructModEvent;
|
||||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
import net.minecraftforge.registries.RegistryObject;
|
import net.minecraftforge.registries.RegistryObject;
|
||||||
import top.r3944realms.lib39.Lib39;
|
import top.r3944realms.lib39.Lib39;
|
||||||
import top.r3944realms.lib39.api.event.RegisterCompatEvent;
|
|
||||||
import top.r3944realms.lib39.api.event.SyncManagerRegisterEvent;
|
import top.r3944realms.lib39.api.event.SyncManagerRegisterEvent;
|
||||||
import top.r3944realms.lib39.base.command.Lib39HelpCommand;
|
import top.r3944realms.lib39.base.command.Lib39HelpCommand;
|
||||||
import top.r3944realms.lib39.base.datagen.Lib39BaseDataGenEvent;
|
import top.r3944realms.lib39.base.datagen.Lib39BaseDataGenEvent;
|
||||||
|
|
@ -40,6 +39,7 @@ import top.r3944realms.lib39.content.register.Lib39Items;
|
||||||
import top.r3944realms.lib39.core.compat.CompatManager;
|
import top.r3944realms.lib39.core.compat.CompatManager;
|
||||||
import top.r3944realms.lib39.core.sync.ISyncData;
|
import top.r3944realms.lib39.core.sync.ISyncData;
|
||||||
import top.r3944realms.lib39.core.sync.SyncData2Manager;
|
import top.r3944realms.lib39.core.sync.SyncData2Manager;
|
||||||
|
import top.r3944realms.lib39.example.compat.Lib39CompatManager;
|
||||||
import top.r3944realms.lib39.util.GameProfileHelper;
|
import top.r3944realms.lib39.util.GameProfileHelper;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -225,40 +225,6 @@ public class CommonEventHandler {
|
||||||
public static class Mod extends CommonEventHandler {
|
public static class Mod extends CommonEventHandler {
|
||||||
private static final Map<RegistryObject<Block>, ResourceKey<CreativeModeTab>[]> itemAddMap = new ConcurrentHashMap<>();
|
private static final Map<RegistryObject<Block>, ResourceKey<CreativeModeTab>[]> itemAddMap = new ConcurrentHashMap<>();
|
||||||
private static final Map<ResourceKey<CreativeModeTab>, List<RegistryObject<Block>>> tabToItemsMap = new ConcurrentHashMap<>();
|
private static final Map<ResourceKey<CreativeModeTab>, List<RegistryObject<Block>>> tabToItemsMap = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets compat manager.
|
|
||||||
*
|
|
||||||
* @return the compat manager
|
|
||||||
*/
|
|
||||||
public static CompatManager getCompatManager() {
|
|
||||||
return compatManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Compat manager.
|
|
||||||
*/
|
|
||||||
static volatile CompatManager compatManager;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* On construct mod.
|
|
||||||
*
|
|
||||||
* @param event the event
|
|
||||||
*/
|
|
||||||
@SubscribeEvent
|
|
||||||
public static void onConstructMod(FMLConstructModEvent event) {
|
|
||||||
event.enqueueWork(() -> {
|
|
||||||
IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus();
|
|
||||||
IEventBus gameBus = MinecraftForge.EVENT_BUS;
|
|
||||||
compatManager = new CompatManager(modBus, gameBus);
|
|
||||||
|
|
||||||
// 在Mod总线上发布事件
|
|
||||||
modBus.post(new RegisterCompatEvent(compatManager));
|
|
||||||
Lib39.LOGGER.info("RegisterCompatEvent published during construct phase");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* On fml common setup.
|
* On fml common setup.
|
||||||
*
|
*
|
||||||
|
|
@ -272,13 +238,6 @@ public class CommonEventHandler {
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 在这里初始化兼容模块,给其他模组足够的时间注册
|
|
||||||
if (compatManager != null) {
|
|
||||||
compatManager.initializeAll();
|
|
||||||
Lib39.LOGGER.info("CompatManager initialized with {} modules",
|
|
||||||
compatManager.getLoadedCompats().size());
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package top.r3944realms.lib39.example.compat;
|
||||||
|
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
|
import top.r3944realms.lib39.Lib39;
|
||||||
|
import top.r3944realms.lib39.core.compat.CompatManager;
|
||||||
|
|
||||||
|
public class Lib39CompatManager extends CompatManager {
|
||||||
|
/**
|
||||||
|
* Instantiates a new Compat manager.
|
||||||
|
*
|
||||||
|
* @param path the path
|
||||||
|
* @param modEventBus the mod event bus
|
||||||
|
* @param gameEventBus the game event bus
|
||||||
|
*/
|
||||||
|
public Lib39CompatManager(String path, IEventBus modEventBus, IEventBus gameEventBus) {
|
||||||
|
super(Lib39.rl(path), modEventBus, gameEventBus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
package top.r3944realms.lib39.example.core.event;
|
package top.r3944realms.lib39.example.core.event;
|
||||||
|
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent;
|
import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent;
|
||||||
import net.minecraftforge.event.AttachCapabilitiesEvent;
|
import net.minecraftforge.event.AttachCapabilitiesEvent;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
import top.r3944realms.lib39.api.event.RegisterCompatEvent;
|
import net.minecraftforge.fml.event.lifecycle.FMLConstructModEvent;
|
||||||
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
import top.r3944realms.lib39.api.event.SyncManagerRegisterEvent;
|
import top.r3944realms.lib39.api.event.SyncManagerRegisterEvent;
|
||||||
|
import top.r3944realms.lib39.core.compat.CompatManager;
|
||||||
|
import top.r3944realms.lib39.core.event.CommonEventHandler;
|
||||||
import top.r3944realms.lib39.core.sync.CachedSyncManager;
|
import top.r3944realms.lib39.core.sync.CachedSyncManager;
|
||||||
import top.r3944realms.lib39.example.compat.Lib39Compat;
|
import top.r3944realms.lib39.example.compat.Lib39Compat;
|
||||||
|
import top.r3944realms.lib39.example.compat.Lib39CompatManager;
|
||||||
import top.r3944realms.lib39.example.content.capability.AbstractedTestSyncData;
|
import top.r3944realms.lib39.example.content.capability.AbstractedTestSyncData;
|
||||||
import top.r3944realms.lib39.example.content.capability.ExCapabilityHandler;
|
import top.r3944realms.lib39.example.content.capability.ExCapabilityHandler;
|
||||||
import top.r3944realms.lib39.example.content.capability.TestSyncData;
|
import top.r3944realms.lib39.example.content.capability.TestSyncData;
|
||||||
|
|
@ -64,17 +70,40 @@ public class ExCommonEventHandler {
|
||||||
* The type Mod.
|
* The type Mod.
|
||||||
*/
|
*/
|
||||||
public static class Mod extends ExCommonEventHandler {
|
public static class Mod extends ExCommonEventHandler {
|
||||||
|
public static final IEventBus EVENT_BUS = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
|
/**
|
||||||
|
* Gets compat manager.
|
||||||
|
*
|
||||||
|
* @return the compat manager
|
||||||
|
*/
|
||||||
|
public static CompatManager getOrCreateCompatManager() {
|
||||||
|
if (compatManager == null) {
|
||||||
|
synchronized (CommonEventHandler.Mod.class) {
|
||||||
|
if (compatManager == null) {
|
||||||
|
compatManager = new Lib39CompatManager("compat", EVENT_BUS, MinecraftForge.EVENT_BUS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return compatManager;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* On register compat.
|
* The Compat manager.
|
||||||
|
*/
|
||||||
|
static volatile CompatManager compatManager;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* On construct mod.
|
||||||
*
|
*
|
||||||
* @param event the event
|
* @param event the event
|
||||||
*/
|
*/
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onRegisterCompat (RegisterCompatEvent event) {
|
public static void onConstructMod(FMLConstructModEvent event) {
|
||||||
event.registerCompat(Lib39Compat.ID, Lib39Compat.INSTANCE);
|
event.enqueueWork(() -> {
|
||||||
|
getOrCreateCompatManager();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* On fml common setup.
|
* On fml common setup.
|
||||||
*
|
*
|
||||||
|
|
@ -82,9 +111,8 @@ public class ExCommonEventHandler {
|
||||||
*/
|
*/
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onFMLCommonSetup(FMLCommonSetupEvent event) {
|
public static void onFMLCommonSetup(FMLCommonSetupEvent event) {
|
||||||
event.enqueueWork(() -> {
|
event.enqueueWork(() -> ExCommonEventHandler.Mod.getOrCreateCompatManager()
|
||||||
|
.registerCompat(Lib39Compat.ID, Lib39Compat.INSTANCE));
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user