From 602360a3d8334edd8dd4c626ae78407670604ee6 Mon Sep 17 00:00:00 2001 From: HypherionMC Date: Thu, 8 Jun 2023 20:34:33 +0200 Subject: [PATCH] Fix LateInitEvent on Forge --- .../src/main/resources/craterlib.mixins.json | 3 +- .../craterlib/mixin}/TutorialMixin.java | 2 +- .../resources/craterlib.fabric.mixins.json | 1 + .../com/hypherionmc/craterlib/CraterLib.java | 13 ++++++-- .../craterlib/client/CraterClientBus.java | 32 +++++++++++++++++++ .../craterlib/client/ForgeClientEvents.java | 21 ++++++++++++ .../craterlib/common/ForgeCommonEvents.java | 23 ------------- 7 files changed, 67 insertions(+), 28 deletions(-) rename {Common/src/main/java/com/hypherionmc/craterlib/mixin/events/client => Fabric/src/main/java/com/hypherionmc/craterlib/mixin}/TutorialMixin.java (93%) create mode 100644 Forge/src/main/java/com/hypherionmc/craterlib/client/CraterClientBus.java create mode 100644 Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java diff --git a/Common/src/main/resources/craterlib.mixins.json b/Common/src/main/resources/craterlib.mixins.json index 6b27b88..28c2c7b 100644 --- a/Common/src/main/resources/craterlib.mixins.json +++ b/Common/src/main/resources/craterlib.mixins.json @@ -11,8 +11,7 @@ "events.PlayerMixin", "events.client.ClientLevelMixin", "events.client.MinecraftMixin", - "events.client.RealmsMainScreenMixin", - "events.client.TutorialMixin" + "events.client.RealmsMainScreenMixin" ], "server": [ "events.CommandMixin", diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/client/TutorialMixin.java b/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/TutorialMixin.java similarity index 93% rename from Common/src/main/java/com/hypherionmc/craterlib/mixin/events/client/TutorialMixin.java rename to Fabric/src/main/java/com/hypherionmc/craterlib/mixin/TutorialMixin.java index 6c24f86..715af1b 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/client/TutorialMixin.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/mixin/TutorialMixin.java @@ -1,4 +1,4 @@ -package com.hypherionmc.craterlib.mixin.events.client; +package com.hypherionmc.craterlib.mixin; import com.hypherionmc.craterlib.api.event.client.LateInitEvent; import com.hypherionmc.craterlib.core.event.CraterEventBus; diff --git a/Fabric/src/main/resources/craterlib.fabric.mixins.json b/Fabric/src/main/resources/craterlib.fabric.mixins.json index a7e308c..214b5cc 100644 --- a/Fabric/src/main/resources/craterlib.fabric.mixins.json +++ b/Fabric/src/main/resources/craterlib.fabric.mixins.json @@ -6,6 +6,7 @@ "mixins": [ ], "client": [ + "TutorialMixin" ], "server": [ ], diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 1e78ea0..71a63dc 100644 --- a/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -1,13 +1,22 @@ package com.hypherionmc.craterlib; -import com.hypherionmc.craterlib.common.ForgeCommonEvents; +import com.hypherionmc.craterlib.api.event.client.LateInitEvent; +import com.hypherionmc.craterlib.client.CraterClientBus; import com.hypherionmc.craterlib.core.event.CraterEventBus; +import net.minecraft.client.Minecraft; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.common.Mod; @Mod(CraterConstants.MOD_ID) public class CraterLib { public CraterLib() { - CraterEventBus.INSTANCE.registerEventListener(ForgeCommonEvents.class); + CraterEventBus.INSTANCE.registerEventListener(CraterClientBus.class); + + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { + LateInitEvent event = new LateInitEvent(Minecraft.getInstance(), Minecraft.getInstance().options); + CraterEventBus.INSTANCE.postEvent(event); + }); } } diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/client/CraterClientBus.java b/Forge/src/main/java/com/hypherionmc/craterlib/client/CraterClientBus.java new file mode 100644 index 0000000..9cf2f00 --- /dev/null +++ b/Forge/src/main/java/com/hypherionmc/craterlib/client/CraterClientBus.java @@ -0,0 +1,32 @@ +package com.hypherionmc.craterlib.client; + +import com.hypherionmc.craterlib.CraterConstants; +import com.hypherionmc.craterlib.api.event.client.LateInitEvent; +import com.hypherionmc.craterlib.core.event.annot.CraterEventListener; +import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; + +public class CraterClientBus { + + @CraterEventListener + public static void lateInit(LateInitEvent event) { + CraterConstants.LOG.info("Registering Creative Tabs"); + + CreativeTabRegistry.getTabs().forEach(tab -> { + CreativeModeTab.Builder builder = CreativeModeTab.builder(); + builder.title(Component.translatable("itemGroup." + tab.getResourceLocation().toString().replace(":", "."))); + builder.icon(tab.getIcon()); + + if (!tab.getBackgroundSuffix().isEmpty()) { + builder.backgroundSuffix(tab.getBackgroundSuffix()); + } + + CreativeModeTab tabb = Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, tab.getResourceKey(), builder.build()); + tab.setTab(tabb); + }); + } + +} diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java b/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java new file mode 100644 index 0000000..e5a6369 --- /dev/null +++ b/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java @@ -0,0 +1,21 @@ +package com.hypherionmc.craterlib.client; + +import com.hypherionmc.craterlib.CraterConstants; +import com.hypherionmc.craterlib.api.event.client.CraterClientTickEvent; +import com.hypherionmc.craterlib.core.event.CraterEventBus; +import net.minecraft.client.Minecraft; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = CraterConstants.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) +public class ForgeClientEvents { + + @SubscribeEvent + public static void clientTick(TickEvent.LevelTickEvent event) { + CraterClientTickEvent craterClientTickEvent = new CraterClientTickEvent(Minecraft.getInstance().level); + CraterEventBus.INSTANCE.postEvent(craterClientTickEvent); + } + +} diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonEvents.java b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonEvents.java index 7d9ae10..4e4ec41 100644 --- a/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonEvents.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/common/ForgeCommonEvents.java @@ -1,12 +1,7 @@ package com.hypherionmc.craterlib.common; import com.hypherionmc.craterlib.CraterConstants; -import com.hypherionmc.craterlib.api.event.client.LateInitEvent; -import com.hypherionmc.craterlib.core.event.annot.CraterEventListener; import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry; -import net.minecraft.core.Registry; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.network.chat.Component; import net.minecraft.world.item.CreativeModeTab; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -15,24 +10,6 @@ import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(modid = CraterConstants.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD) public class ForgeCommonEvents { - @CraterEventListener - public static void lateInit(LateInitEvent event) { - CraterConstants.LOG.info("Registering Creative Tabs"); - - CreativeTabRegistry.getTabs().forEach(tab -> { - CreativeModeTab.Builder builder = CreativeModeTab.builder(); - builder.title(Component.translatable("itemGroup." + tab.getResourceLocation().toString().replace(":", "."))); - builder.icon(tab.getIcon()); - - if (!tab.getBackgroundSuffix().isEmpty()) { - builder.backgroundSuffix(tab.getBackgroundSuffix()); - } - - CreativeModeTab tabb = Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, tab.getResourceKey(), builder.build()); - tab.setTab(tabb); - }); - } - @SubscribeEvent public static void registerTabs(BuildCreativeModeTabContentsEvent event) { CreativeModeTab tab = event.getTab();