From 215a983f8c20677fe4d4bd3753bdc80cde9fc067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Mon, 5 Apr 2021 01:06:26 +0200 Subject: [PATCH] Recolor using vanilla facilities. --- .../cil/oc2/client/item/CustomItemColors.java | 24 +++++++++++-------- .../li/cil/oc2/common/item/FloppyItem.java | 2 +- .../li/cil/oc2/common/item/HardDriveItem.java | 3 ++- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/main/java/li/cil/oc2/client/item/CustomItemColors.java b/src/main/java/li/cil/oc2/client/item/CustomItemColors.java index 30943f3c..dfd22454 100644 --- a/src/main/java/li/cil/oc2/client/item/CustomItemColors.java +++ b/src/main/java/li/cil/oc2/client/item/CustomItemColors.java @@ -1,13 +1,12 @@ package li.cil.oc2.client.item; import li.cil.oc2.common.item.Items; -import li.cil.oc2.common.util.ItemStackUtils; -import li.cil.oc2.common.util.NBTTagIds; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.color.ItemColors; import net.minecraft.item.DyeColor; +import net.minecraft.item.IDyeableArmorItem; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; public final class CustomItemColors { public static final int BLACK = 0xFF404040; @@ -30,7 +29,6 @@ public final class CustomItemColors { /////////////////////////////////////////////////////////////////// - private static final String COLOR_TAG_NAME = "color"; private static final int NO_TINT = 0xFFFFFFFF; /////////////////////////////////////////////////////////////////// @@ -81,12 +79,14 @@ public final class CustomItemColors { } public static int getColor(final ItemStack stack) { - final CompoundNBT tag = ItemStackUtils.getModDataTag(stack); - if (tag.contains(COLOR_TAG_NAME, NBTTagIds.TAG_INT)) { - return tag.getInt(COLOR_TAG_NAME); - } else { - return GREY; + final Item item = stack.getItem(); + if (item instanceof IDyeableArmorItem) { + final IDyeableArmorItem coloredItem = (IDyeableArmorItem) item; + if (coloredItem.hasColor(stack)) { + return coloredItem.getColor(stack); + } } + return GREY; } public static ItemStack withColor(final ItemStack stack, final DyeColor color) { @@ -94,7 +94,11 @@ public final class CustomItemColors { } public static ItemStack withColor(final ItemStack stack, final int color) { - ItemStackUtils.getOrCreateModDataTag(stack).putInt(COLOR_TAG_NAME, color); + final Item item = stack.getItem(); + if (item instanceof IDyeableArmorItem) { + final IDyeableArmorItem coloredItem = (IDyeableArmorItem) item; + coloredItem.setColor(stack, color); + } return stack; } } diff --git a/src/main/java/li/cil/oc2/common/item/FloppyItem.java b/src/main/java/li/cil/oc2/common/item/FloppyItem.java index 0b974472..41678cc2 100644 --- a/src/main/java/li/cil/oc2/common/item/FloppyItem.java +++ b/src/main/java/li/cil/oc2/common/item/FloppyItem.java @@ -11,7 +11,7 @@ import net.minecraft.util.Hand; import net.minecraft.util.NonNullList; import net.minecraft.world.World; -public final class FloppyItem extends AbstractBlockDeviceItem { +public final class FloppyItem extends AbstractBlockDeviceItem implements IDyeableArmorItem { private static final int DEFAULT_CAPACITY = 512 * Constants.KILOBYTE; /////////////////////////////////////////////////////////////////// diff --git a/src/main/java/li/cil/oc2/common/item/HardDriveItem.java b/src/main/java/li/cil/oc2/common/item/HardDriveItem.java index 50b44355..5aea4baa 100644 --- a/src/main/java/li/cil/oc2/common/item/HardDriveItem.java +++ b/src/main/java/li/cil/oc2/common/item/HardDriveItem.java @@ -3,13 +3,14 @@ package li.cil.oc2.common.item; import li.cil.oc2.common.Constants; import li.cil.oc2.common.bus.device.data.BlockDeviceDataRegistration; import net.minecraft.item.DyeColor; +import net.minecraft.item.IDyeableArmorItem; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import static li.cil.oc2.client.item.CustomItemColors.withColor; -public final class HardDriveItem extends AbstractBlockDeviceItem { +public final class HardDriveItem extends AbstractBlockDeviceItem implements IDyeableArmorItem { private static final int DEFAULT_CAPACITY = 2 * Constants.MEGABYTE; ///////////////////////////////////////////////////////////////////