diff --git a/common/src/main/java/me/shedaniel/architectury/event/EventFactory.java b/common/src/main/java/me/shedaniel/architectury/event/EventFactory.java index a9db666d..131ac541 100644 --- a/common/src/main/java/me/shedaniel/architectury/event/EventFactory.java +++ b/common/src/main/java/me/shedaniel/architectury/event/EventFactory.java @@ -17,6 +17,7 @@ package me.shedaniel.architectury.event; import com.google.common.reflect.AbstractInvocationHandler; +import me.shedaniel.architectury.ExpectPlatform; import net.jodah.typetools.TypeResolver; import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResultHolder; @@ -112,6 +113,11 @@ public final class EventFactory { })); } + @ExpectPlatform + public static Event> attachToForge(Event> event) { + throw new AssertionError(); + } + private static class EventImpl implements Event { private final Function function; private T invoker = null; diff --git a/fabric/src/main/java/me/shedaniel/architectury/event/fabric/EventFactoryImpl.java b/fabric/src/main/java/me/shedaniel/architectury/event/fabric/EventFactoryImpl.java new file mode 100644 index 00000000..9096eb4c --- /dev/null +++ b/fabric/src/main/java/me/shedaniel/architectury/event/fabric/EventFactoryImpl.java @@ -0,0 +1,11 @@ +package me.shedaniel.architectury.event.fabric; + +import me.shedaniel.architectury.event.Event; + +import java.util.function.Consumer; + +public class EventFactoryImpl { + public static Event> attachToForge(Event> event) { + return event; + } +} diff --git a/forge/src/main/java/me/shedaniel/architectury/event/forge/EventFactoryImpl.java b/forge/src/main/java/me/shedaniel/architectury/event/forge/EventFactoryImpl.java new file mode 100644 index 00000000..81f0a14a --- /dev/null +++ b/forge/src/main/java/me/shedaniel/architectury/event/forge/EventFactoryImpl.java @@ -0,0 +1,18 @@ +package me.shedaniel.architectury.event.forge; + +import me.shedaniel.architectury.event.Event; +import net.minecraftforge.common.MinecraftForge; + +import java.util.function.Consumer; + +public class EventFactoryImpl { + public static Event> attachToForge(Event> event) { + event.register(eventObj -> { + if (!(eventObj instanceof net.minecraftforge.eventbus.api.Event)) { + throw new ClassCastException(eventObj.getClass() + " is not an instance of forge Event!"); + } + MinecraftForge.EVENT_BUS.post((net.minecraftforge.eventbus.api.Event) eventObj); + }); + return event; + } +} \ No newline at end of file