Skip to content

Inter Mod Communication (IMC)

Catharsis provides Fabric entrypoints that other mods can invoke during initialization.

Entrypoint Registry

Catharsis exposes two entrypoints under its IMC setup:

Entrypoint PathPurposeExpected Value Type
catharsis:imc/item_idApplies a specific Catharsis ID to an ItemStack directly.java.util.function.BiConsumer<ItemStack, Identifier>
catharsis:imc/disabledDisables Catharsis retexturing and GUI behaviors for an item stack completely.java.util.function.BiConsumer<ItemStack, Boolean>

Registering Entrypoints

To link your mods compatibility handlers, register static method handles or consumer implementations inside your fabric.mod.json entrypoints block:

json
"entrypoints": {
"catharsis:imc/item_id": [
"your.package.CatharsisSupport::id"
],
"catharsis:imc/disabled": [
"your.package.CatharsisSupport::disabled"
]
}

Templates

Kotlin Implementation
kotlin
package your.package

import net.minecraft.resources.Identifier
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import java.util.function.BiConsumer

object CatharsisSupport {

    private var idConsumer: BiConsumer<ItemStack, Identifier> = BiConsumer { _, _ -> }
    private var disabledConsumer: BiConsumer<ItemStack, Boolean> = BiConsumer { _, _ -> }

    @JvmStatic
    fun id(consumer: BiConsumer<ItemStack, Identifier>) {
        this.idConsumer = consumer
    }

    @JvmStatic
    fun disabled(consumer: BiConsumer<ItemStack, Boolean>) {
        this.disabledConsumer = consumer
    }

    fun ItemStack.disableCatharsisModifications() = apply {
        disabledConsumer.accept(this, true)
    }

    fun ItemStack.withCatharsisId(identifier: Identifier): ItemStack = apply {
        idConsumer.accept(this, identifier)
    }

    fun Item.withCatharsisId(identifier: Identifier): ItemStack = defaultInstance.apply {
        idConsumer.accept(this, identifier)
    }
}
Java Implementation
java
package your.

package;

import net.minecraft.resources.Identifier;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;

import java.util.function.BiConsumer;

public class CatharsisSupport {

    private static BiConsumer<ItemStack, Identifier> idConsumer = (stack, id) -> {
    };
    private static BiConsumer<ItemStack, Boolean> disabledConsumer = (stack, disabled) -> {
    };

    public static void id(BiConsumer<ItemStack, Identifier> consumer) {
        idConsumer = consumer;
    }

    public static void disabled(BiConsumer<ItemStack, Boolean> consumer) {
        disabledConsumer = consumer;
    }

    public static ItemStack disableCatharsisModifications(ItemStack stack) {
        disabledConsumer.accept(stack, true);
        return stack;
    }

    public static ItemStack withCatharsisId(ItemStack stack, Identifier identifier) {
        idConsumer.accept(stack, identifier);
        return stack;
    }

    public static ItemStack withCatharsisId(Item item, Identifier identifier) {
        ItemStack stack = item.getDefaultInstance();
        idConsumer.accept(stack, identifier);
        return stack;
    }
}

Tree view icons from the Minecraft.wiki
Not an official Minecraft product. Not approved by or affiliated with Mojang or Microsoft.
Not approved by or affiliated with Hypixel.