diff --git a/forge/src/main/java/me/shedaniel/architectury/event/forge/EventHandlerImpl.java b/forge/src/main/java/me/shedaniel/architectury/event/forge/EventHandlerImpl.java index 68922d01..3d8fc2e8 100644 --- a/forge/src/main/java/me/shedaniel/architectury/event/forge/EventHandlerImpl.java +++ b/forge/src/main/java/me/shedaniel/architectury/event/forge/EventHandlerImpl.java @@ -20,6 +20,8 @@ import me.shedaniel.architectury.event.EventHandler; import me.shedaniel.architectury.event.events.PlayerEvent; import me.shedaniel.architectury.event.events.TextureStitchEvent; import me.shedaniel.architectury.event.events.*; +import me.shedaniel.architectury.forge.ArchitecturyForge; +import me.shedaniel.architectury.platform.forge.EventBuses; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.IGuiEventListener; import net.minecraft.client.world.ClientWorld; @@ -61,16 +63,19 @@ public class EventHandlerImpl implements EventHandler.Impl { @Override public void registerClient() { MinecraftForge.EVENT_BUS.register(Client.class); + EventBuses.getModEventBus(ArchitecturyForge.MOD_ID).orElseThrow(() -> new IllegalStateException("Where is architectury?")).register(ModBasedEventHandlerImpl.Client.class); } @Override public void registerCommon() { MinecraftForge.EVENT_BUS.register(Common.class); + EventBuses.getModEventBus(ArchitecturyForge.MOD_ID).orElseThrow(() -> new IllegalStateException("Where is architectury?")).register(ModBasedEventHandlerImpl.Common.class); } @Override public void registerServer() { MinecraftForge.EVENT_BUS.register(Server.class); + EventBuses.getModEventBus(ArchitecturyForge.MOD_ID).orElseThrow(() -> new IllegalStateException("Where is architectury?")).register(ModBasedEventHandlerImpl.Server.class); } @OnlyIn(Dist.CLIENT) diff --git a/forge/src/main/java/me/shedaniel/architectury/event/forge/ModBasedEventHandlerImpl.java b/forge/src/main/java/me/shedaniel/architectury/event/forge/ModBasedEventHandlerImpl.java new file mode 100644 index 00000000..d45f02d9 --- /dev/null +++ b/forge/src/main/java/me/shedaniel/architectury/event/forge/ModBasedEventHandlerImpl.java @@ -0,0 +1,46 @@ +/* + * Copyright 2020 shedaniel + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package me.shedaniel.architectury.event.forge; + +import me.shedaniel.architectury.event.events.TextureStitchEvent; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.eventbus.api.SubscribeEvent; + +public class ModBasedEventHandlerImpl { + @OnlyIn(Dist.CLIENT) + public static class Client { + @SubscribeEvent + public static void event(net.minecraftforge.client.event.TextureStitchEvent.Pre event) { + TextureStitchEvent.PRE.invoker().stitch(event.getMap(), event::addSprite); + } + + @SubscribeEvent + public static void event(net.minecraftforge.client.event.TextureStitchEvent.Post event) { + TextureStitchEvent.POST.invoker().stitch(event.getMap()); + } + } + + public static class Common { + + } + + @OnlyIn(Dist.DEDICATED_SERVER) + public static class Server { + + } +} diff --git a/forge/src/main/java/me/shedaniel/architectury/forge/ArchitecturyForge.java b/forge/src/main/java/me/shedaniel/architectury/forge/ArchitecturyForge.java index b66356b7..487f1504 100644 --- a/forge/src/main/java/me/shedaniel/architectury/forge/ArchitecturyForge.java +++ b/forge/src/main/java/me/shedaniel/architectury/forge/ArchitecturyForge.java @@ -17,11 +17,16 @@ package me.shedaniel.architectury.forge; import me.shedaniel.architectury.event.EventHandler; +import me.shedaniel.architectury.platform.forge.EventBuses; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -@Mod("architectury") +@Mod(ArchitecturyForge.MOD_ID) public class ArchitecturyForge { + public static final String MOD_ID = "architectury"; + public ArchitecturyForge() { + EventBuses.registerModEventBus(ArchitecturyForge.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus()); EventHandler.init(); } }