Recolor using vanilla facilities.

This commit is contained in:
Florian Nücke
2021-04-05 01:06:26 +02:00
parent 80a4914a62
commit 215a983f8c
3 changed files with 17 additions and 12 deletions

View File

@@ -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;
}
}

View File

@@ -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;
///////////////////////////////////////////////////////////////////

View File

@@ -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;
///////////////////////////////////////////////////////////////////