superb-warfare/src/main/java/com/atsuishio/superbwarfare/init/ModTabs.java
2025-03-29 01:16:00 +08:00

105 lines
5.6 KiB
Java

package com.atsuishio.superbwarfare.init;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.item.ArmorPlate;
import com.atsuishio.superbwarfare.item.BatteryItem;
import com.atsuishio.superbwarfare.item.C4Bomb;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.item.ItemStack;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent;
import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredRegister;
import java.util.function.Supplier;
import static com.atsuishio.superbwarfare.item.ContainerBlockItem.CONTAINER_ENTITIES;
@EventBusSubscriber(bus = EventBusSubscriber.Bus.MOD)
@SuppressWarnings("unused")
public class ModTabs {
public static final DeferredRegister<CreativeModeTab> TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, ModUtils.MODID);
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> GUN_TAB = TABS.register("guns",
() -> CreativeModeTab.builder()
.title(Component.translatable("item_group.superbwarfare.guns"))
.icon(() -> new ItemStack(ModItems.TASER.get()))
.displayItems((param, output) -> ModItems.GUNS.getEntries().forEach(registryObject -> output.accept(registryObject.get())))
.build());
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> PERK_TAB = TABS.register("perk",
() -> CreativeModeTab.builder()
.title(Component.translatable("item_group.superbwarfare.perk"))
.icon(() -> new ItemStack(ModItems.AP_BULLET.get()))
.withTabsBefore(GUN_TAB.getKey())
.displayItems((param, output) -> ModItems.PERKS.getEntries().forEach(registryObject -> output.accept(registryObject.get())))
.build());
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> AMMO_TAB = TABS.register("ammo",
() -> CreativeModeTab.builder()
.title(Component.translatable("item_group.superbwarfare.ammo"))
.icon(() -> new ItemStack(ModItems.SHOTGUN_AMMO_BOX.get()))
.withTabsBefore(PERK_TAB.getKey())
.displayItems((param, output) -> {
ModItems.AMMO.getEntries().forEach(registryObject -> {
if (registryObject.get() != ModItems.POTION_MORTAR_SHELL.get()) {
output.accept(registryObject.get());
if (registryObject.get() == ModItems.C4_BOMB.get()) {
output.accept(C4Bomb.makeInstance());
}
}
});
// TODO potion mortar shell
// param.holders().lookup(Registries.POTION)
// .ifPresent(potion -> generatePotionEffectTypes(output, potion, ModItems.POTION_MORTAR_SHELL.get()));
})
.build());
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> ITEM_TAB = TABS.register("item",
() -> CreativeModeTab.builder()
.title(Component.translatable("item_group.superbwarfare.item"))
.icon(() -> new ItemStack(ModItems.FIRING_PARAMETERS.get()))
.displayItems((param, output) -> ModItems.ITEMS.getEntries().forEach(registryObject -> {
if (registryObject.get() == ModItems.CONTAINER.get()) {
CONTAINER_ENTITIES.stream().map(Supplier::get).forEach(output::accept);
} else {
output.accept(registryObject.get());
if (registryObject.get() == ModItems.ARMOR_PLATE.get()) {
output.accept(ArmorPlate.getInfiniteInstance());
}
if (registryObject.get() instanceof BatteryItem batteryItem) {
output.accept(batteryItem.makeFullEnergyStack());
}
}
}))
.build());
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> BLOCK_TAB = TABS.register("block",
() -> CreativeModeTab.builder()
.title(Component.translatable("item_group.superbwarfare.block"))
.icon(() -> new ItemStack(ModItems.SANDBAG.get()))
.withTabsBefore(ITEM_TAB.getKey())
.displayItems((param, output) -> ModItems.BLOCKS.getEntries().forEach(registryObject -> output.accept(registryObject.get())))
.build());
@SubscribeEvent
public static void buildTabContentsVanilla(BuildCreativeModeTabContentsEvent tabData) {
if (tabData.getTabKey() == CreativeModeTabs.SPAWN_EGGS) {
tabData.accept(ModItems.SENPAI_SPAWN_EGG.get());
}
}
// TODO potion shell
// private static void generatePotionEffectTypes(CreativeModeTab.Output output, HolderLookup<Potion> potions, Item potionItem) {
// potions.listElements().filter(potion -> !potion.is(Potions.EMPTY_ID))
// .map(potion -> PotionUtils.setPotion(new ItemStack(potionItem), potion.value()))
// .forEach(output::accept);
// }
}