Fix LateInitEvent on Forge

This commit is contained in:
2023-06-08 20:34:33 +02:00
parent 5142218f7d
commit 602360a3d8
7 changed files with 67 additions and 28 deletions

View File

@@ -11,8 +11,7 @@
"events.PlayerMixin",
"events.client.ClientLevelMixin",
"events.client.MinecraftMixin",
"events.client.RealmsMainScreenMixin",
"events.client.TutorialMixin"
"events.client.RealmsMainScreenMixin"
],
"server": [
"events.CommandMixin",

View File

@@ -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;

View File

@@ -6,6 +6,7 @@
"mixins": [
],
"client": [
"TutorialMixin"
],
"server": [
],

View File

@@ -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);
});
}
}

View File

@@ -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);
});
}
}

View File

@@ -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);
}
}

View File

@@ -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();