Dammit fabric... Yet another tab item registering fix
This commit is contained in:
@@ -1,37 +1,13 @@
|
|||||||
package me.hypherionmc.craterlib;
|
package me.hypherionmc.craterlib;
|
||||||
|
|
||||||
import me.hypherionmc.craterlib.common.FabricCommonHelper;
|
import me.hypherionmc.craterlib.common.FabricCommonHelper;
|
||||||
import me.hypherionmc.craterlib.systems.internal.CreativeTabRegistry;
|
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||||
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
|
||||||
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
|
||||||
import net.minecraft.network.chat.Component;
|
|
||||||
import net.minecraft.world.item.CreativeModeTab;
|
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
|
||||||
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public class CraterLibInitializer implements ModInitializer {
|
public class CraterLibInitializer implements ModInitializer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
ServerLifecycleEvents.SERVER_STARTING.register(server -> FabricCommonHelper.server = server);
|
ServerLifecycleEvents.SERVER_STARTING.register(server -> FabricCommonHelper.server = server);
|
||||||
|
|
||||||
CreativeTabRegistry.getTABS().forEach(tab -> {
|
|
||||||
CreativeModeTab finalTab = FabricItemGroup.builder(tab.getResourceLocation())
|
|
||||||
.title(Component.translatable("itemGroup." +
|
|
||||||
tab.getResourceLocation().toString().replace(":", ".")
|
|
||||||
))
|
|
||||||
.icon(tab.getIcon())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
tab.setTab(finalTab);
|
|
||||||
|
|
||||||
ItemGroupEvents.modifyEntriesEvent(finalTab).register(entries -> CreativeTabRegistry
|
|
||||||
.getTabItems()
|
|
||||||
.stream().filter(t -> t.getLeft().get() == finalTab && t.getRight() != null)
|
|
||||||
.map(Pair::getRight).forEach(itm -> entries.accept(itm.get())));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,38 @@
|
|||||||
|
package me.hypherionmc.craterlib.mixin;
|
||||||
|
|
||||||
|
import me.hypherionmc.craterlib.systems.internal.CreativeTabRegistry;
|
||||||
|
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
|
||||||
|
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.main.GameConfig;
|
||||||
|
import net.minecraft.network.chat.Component;
|
||||||
|
import net.minecraft.world.item.CreativeModeTab;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
@Mixin(Minecraft.class)
|
||||||
|
public class MinecraftMixin {
|
||||||
|
|
||||||
|
@Inject(method = "<init>", at = @At("RETURN"))
|
||||||
|
private void injectCraterLateInit(GameConfig gameConfig, CallbackInfo ci) {
|
||||||
|
CreativeTabRegistry.getTABS().forEach(tab -> {
|
||||||
|
CreativeModeTab finalTab = FabricItemGroup.builder(tab.getResourceLocation())
|
||||||
|
.title(Component.translatable("itemGroup." +
|
||||||
|
tab.getResourceLocation().toString().replace(":", ".")
|
||||||
|
))
|
||||||
|
.icon(tab.getIcon())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
tab.setTab(finalTab);
|
||||||
|
|
||||||
|
ItemGroupEvents.modifyEntriesEvent(finalTab).register(entries -> CreativeTabRegistry
|
||||||
|
.getTabItems()
|
||||||
|
.stream().filter(t -> t.getLeft().get() == finalTab && t.getRight() != null)
|
||||||
|
.map(Pair::getRight).forEach(itm -> entries.accept(itm.get())));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -6,6 +6,7 @@
|
|||||||
"mixins": [
|
"mixins": [
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
|
"MinecraftMixin"
|
||||||
],
|
],
|
||||||
"server": [
|
"server": [
|
||||||
],
|
],
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
# Project
|
# Project
|
||||||
version_major=0
|
version_major=0
|
||||||
version_minor=0
|
version_minor=0
|
||||||
version_patch=5d
|
version_patch=6d
|
||||||
group=me.hypherionmc.craterlib
|
group=me.hypherionmc.craterlib
|
||||||
|
|
||||||
# Common
|
# Common
|
||||||
|
Reference in New Issue
Block a user