@Unsafe(Unsafe.REFLECT_API) protected void injectLoader() { List<ModContainer> mods = $(Loader.instance(), "mods"); $(Loader.instance(), "mods<", ImmutableList.builder().addAll(mods).add(this).build()); $(Loader.instance(), "namedMods<", Maps.uniqueIndex(mods, ModContainer::getModId)); LoadController modController = $(Loader.instance(), "modController"); Multimap<String, ModState> modStates = $(modController, "modStates"); modStates.put(getModId(), ModState.AVAILABLE); Map<String, String> modNames = $(modController, "modNames"); modNames.put(getModId(), getName()); List<ModContainer> activeModList = $(modController, "activeModList"); activeModList = Lists.newArrayList(activeModList); activeModList.add(this); $(modController, "activeModList<", activeModList); ImmutableMap<String,EventBus> eventChannels = $(modController, "eventChannels"); $(modController, "eventChannels<", ImmutableMap.builder().putAll(eventChannels).put(getModId(), new EventBus()).build()); }
/** * Warning, this method break into the Loader and LoadController. It will change the current active ModContainer. * * @param container The mod container will be changed into. */ public static void setActiveContainer(ModContainer container) { ReflectionHelper.setPrivateValue(LoadController.class, (LoadController) ReflectionHelper.getPrivateValue(Loader.class, Loader.instance(), "modController"), container, "activeContainer"); }
@Override public boolean registerBus(EventBus bus, LoadController controller) { return true; }
@Override public boolean registerBus(EventBus bus, LoadController controller) { bus.register(this); return true; }
@Override public boolean registerBus(EventBus bus, LoadController controller) { return false; }
@Override public boolean registerBus(EventBus bus, LoadController lc) { bus.register(this); return true; }