From 85c0452372ccfedd8ba817d8b3084e12f96c2704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sun, 13 Feb 2022 23:53:51 +0100 Subject: [PATCH] Also list all extra custom hard drives in the creative tab. --- .../device/data/BlockDeviceDataRegistry.java | 5 +++++ .../common/item/AbstractBlockDeviceItem.java | 6 ++++++ .../item/HardDriveWithExternalDataItem.java | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/src/main/java/li/cil/oc2/common/bus/device/data/BlockDeviceDataRegistry.java b/src/main/java/li/cil/oc2/common/bus/device/data/BlockDeviceDataRegistry.java index 992ed271..c20fa7fc 100644 --- a/src/main/java/li/cil/oc2/common/bus/device/data/BlockDeviceDataRegistry.java +++ b/src/main/java/li/cil/oc2/common/bus/device/data/BlockDeviceDataRegistry.java @@ -12,6 +12,7 @@ import net.minecraftforge.registries.RegistryObject; import javax.annotation.Nullable; import java.util.function.Supplier; +import java.util.stream.Stream; public final class BlockDeviceDataRegistry { private static final DeferredRegister INITIALIZER = RegistryUtils.create(BlockDeviceData.class); @@ -38,4 +39,8 @@ public final class BlockDeviceDataRegistry { public static BlockDeviceData getValue(final ResourceLocation location) { return REGISTRY.get().getValue(location); } + + public static Stream values() { + return REGISTRY.get().getValues().stream(); + } } diff --git a/src/main/java/li/cil/oc2/common/item/AbstractBlockDeviceItem.java b/src/main/java/li/cil/oc2/common/item/AbstractBlockDeviceItem.java index 16bb7cbb..1c141686 100644 --- a/src/main/java/li/cil/oc2/common/item/AbstractBlockDeviceItem.java +++ b/src/main/java/li/cil/oc2/common/item/AbstractBlockDeviceItem.java @@ -85,4 +85,10 @@ public abstract class AbstractBlockDeviceItem extends ModItem { return super.getName(stack); } } + + /////////////////////////////////////////////////////////////////// + + protected ResourceLocation getDefaultData() { + return defaultData; + } } diff --git a/src/main/java/li/cil/oc2/common/item/HardDriveWithExternalDataItem.java b/src/main/java/li/cil/oc2/common/item/HardDriveWithExternalDataItem.java index 2cf91160..7dc16c79 100644 --- a/src/main/java/li/cil/oc2/common/item/HardDriveWithExternalDataItem.java +++ b/src/main/java/li/cil/oc2/common/item/HardDriveWithExternalDataItem.java @@ -3,14 +3,18 @@ package li.cil.oc2.common.item; import li.cil.oc2.api.API; +import li.cil.oc2.common.bus.device.data.BlockDeviceDataRegistry; import li.cil.oc2.common.util.ColorUtils; import net.minecraft.Util; +import net.minecraft.core.NonNullList; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.DyeableLeatherItem; import net.minecraft.world.item.ItemStack; import javax.annotation.Nullable; +import java.util.Objects; public final class HardDriveWithExternalDataItem extends AbstractBlockDeviceItem implements DyeableLeatherItem { private final int defaultColor; @@ -25,6 +29,20 @@ public final class HardDriveWithExternalDataItem extends AbstractBlockDeviceItem /////////////////////////////////////////////////////////////////// + @Override + public void fillItemCategory(final CreativeModeTab tab, final NonNullList items) { + super.fillItemCategory(tab, items); + + BlockDeviceDataRegistry.values().forEach(data -> { + if (!Objects.equals(BlockDeviceDataRegistry.getKey(data), getDefaultData())) { + final ItemStack stack = withData(data); + if (!stack.isEmpty()) { + items.add(stack); + } + } + }); + } + @Override public int getColor(final ItemStack stack) { return hasCustomColor(stack) ? DyeableLeatherItem.super.getColor(stack) : defaultColor;