package com.simibubi.create; import com.simibubi.create.foundation.block.IHaveNoBlockItem; import com.simibubi.create.foundation.item.IAddedByOther; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; public final class CreateItemGroup extends ItemGroup { public CreateItemGroup() { super(getGroupCountSafe(), Create.ID); } @Override public ItemStack createIcon() { return new ItemStack(AllBlocks.COGWHEEL.get()); } @Override @OnlyIn(Dist.CLIENT) public void fill(NonNullList items) { addItems(items, true); addBlocks(items); addItems(items, false); } @OnlyIn(Dist.CLIENT) public void addBlocks(NonNullList items) { for (AllBlocks block : AllBlocks.values()) { Block def = block.get(); if (def == null) continue; if (!block.module.isEnabled()) continue; if (def instanceof IHaveNoBlockItem && !((IHaveNoBlockItem) def).hasBlockItem()) continue; if (def instanceof IAddedByOther) continue; def.asItem().fillItemGroup(this, items); for (AllBlocks.TaggedBlock alsoRegistered : block.alsoRegistered) alsoRegistered.getBlock().asItem().fillItemGroup(this, items); } } @OnlyIn(Dist.CLIENT) public void addItems(NonNullList items, boolean specialItems) { ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); for (AllItems item : AllItems.values()) { if (item.get() == null) continue; if (!item.module.isEnabled()) continue; IBakedModel model = itemRenderer.getItemModelWithOverrides(item.asStack(), Minecraft.getInstance().world, Minecraft.getInstance().player); if (model.isGui3d() != specialItems) continue; if (item.get() instanceof IAddedByOther) continue; item.get().fillItemGroup(this, items); } } }