Skip to content

Commit

Permalink
Add custom colorfulhearts entry point for fabric mods
Browse files Browse the repository at this point in the history
  • Loading branch information
Terrails committed May 4, 2024
1 parent 0815bfd commit 4f7338f
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@

import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.gui.GuiGraphics;
import terrails.colorfulhearts.CColorfulHearts;
import terrails.colorfulhearts.api.event.HeartRenderEvent;
import terrails.colorfulhearts.api.event.HeartRegistry;
import terrails.colorfulhearts.api.heart.drawing.StatusEffectHeart;
import terrails.colorfulhearts.fabric.api.event.ColorfulHeartsApi;
import terrails.colorfulhearts.fabric.api.event.FabHeartEvents;

public class LoaderExpectPlatformImpl {
Expand Down Expand Up @@ -35,6 +37,18 @@ public static void postRenderEvent(GuiGraphics guiGraphics, int x, int y, boolea
}

public static void heartRegistryEvent(HeartRegistry registry) {
FabricLoader.getInstance().getEntrypointContainers("colorfulhearts", ColorfulHeartsApi.class).forEach(entryPoint -> {
String modId = entryPoint.getProvider().getMetadata().getId();
try {
CColorfulHearts.LOGGER.info("Loading ColorfulHeartsApi implementation of mod {}", modId);
ColorfulHeartsApi api = entryPoint.getEntrypoint();
api.registerHearts(registry);
CColorfulHearts.LOGGER.debug("Loaded ColorfulHeartsApi implementation of mod {}", modId);
} catch (Throwable e) {
CColorfulHearts.LOGGER.error("Could not load ColorfulHeartsApi implementation of mod {}", modId, e);
}
});

FabHeartEvents.HEART_REGISTRY.invoker().accept(registry);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package terrails.colorfulhearts.fabric.api.event;

import terrails.colorfulhearts.api.event.HeartRegistry;

/**
* Custom "colorfulhearts" entryPoint type for fabric.mod.json
* An alternative to events
*/
public interface ColorfulHeartsApi {

void registerHearts(HeartRegistry registry);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
import terrails.colorfulhearts.api.event.HeartRegistry;
import terrails.colorfulhearts.api.heart.drawing.StatusEffectHeart;

/**
* Used to register custom heart types. Currently, it can only be used to register status effect type hearts.
* IMPORTANT: Make sure to register an event listener on the mod-loader bus and not on the regular Forge bus
* as the event is run before the regular event bus is initialized
*/
public class ForgeHeartRegistryEvent extends Event implements IModBusEvent {

private final HeartRegistry registry;
Expand Down

0 comments on commit 4f7338f

Please sign in to comment.