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.PlayerMixin",
"events.client.ClientLevelMixin", "events.client.ClientLevelMixin",
"events.client.MinecraftMixin", "events.client.MinecraftMixin",
"events.client.RealmsMainScreenMixin", "events.client.RealmsMainScreenMixin"
"events.client.TutorialMixin"
], ],
"server": [ "server": [
"events.CommandMixin", "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.api.event.client.LateInitEvent;
import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.event.CraterEventBus;

View File

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

View File

@@ -1,13 +1,22 @@
package com.hypherionmc.craterlib; 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 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; import net.minecraftforge.fml.common.Mod;
@Mod(CraterConstants.MOD_ID) @Mod(CraterConstants.MOD_ID)
public class CraterLib { public class CraterLib {
public 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; package com.hypherionmc.craterlib.common;
import com.hypherionmc.craterlib.CraterConstants; 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 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.minecraft.world.item.CreativeModeTab;
import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent; 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) @Mod.EventBusSubscriber(modid = CraterConstants.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ForgeCommonEvents { 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 @SubscribeEvent
public static void registerTabs(BuildCreativeModeTabContentsEvent event) { public static void registerTabs(BuildCreativeModeTabContentsEvent event) {
CreativeModeTab tab = event.getTab(); CreativeModeTab tab = event.getTab();