From 4eda0d6caa073a6c0ad5910fa1e84794fe8826fd Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Thu, 9 Jun 2016 16:59:11 -0700 Subject: [PATCH] First pass at coloring Sigil of Holding (#787) --- .../WayofTime/bloodmagic/api/Constants.java | 1 + .../item/sigil/ItemSigilHolding.java | 7 +++++ .../bloodmagic/proxy/ClientProxy.java | 26 +++++++++++----- .../bloodmagic/registry/ModItems.java | 21 +++++++++++++ .../util/handler/event/CraftingHandler.java | 30 +++++++++++++++++++ .../blockstates/item/ItemSigilHolding.json | 6 ++++ 6 files changed, 83 insertions(+), 8 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/api/Constants.java b/src/main/java/WayofTime/bloodmagic/api/Constants.java index 717cf43f..92da1111 100644 --- a/src/main/java/WayofTime/bloodmagic/api/Constants.java +++ b/src/main/java/WayofTime/bloodmagic/api/Constants.java @@ -117,6 +117,7 @@ public class Constants public static final String CURRENT_SIGIL = "currentSigil"; public static final String MOST_SIG = "mostSig"; public static final String LEAST_SIG = "leastSig"; + public static final String COLOR = "color"; } public static class Mod diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHolding.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHolding.java index 88f7132e..4235f6ca 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHolding.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHolding.java @@ -24,7 +24,9 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import org.apache.commons.lang3.tuple.Pair; +import java.util.Collections; import java.util.List; public class ItemSigilHolding extends ItemSigilBase implements IKeybindable @@ -285,4 +287,9 @@ public class ItemSigilHolding extends ItemSigilBase implements IKeybindable itemStack.getTagCompound().setInteger(Constants.NBT.CURRENT_SIGIL, mode); } } + + @Override + public List> getVariants() { + return Collections.emptyList(); + } } diff --git a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java index 4a09ed34..bd6ac9cf 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java @@ -91,14 +91,24 @@ public class ClientProxy extends CommonProxy @Override public void init() { - Minecraft.getMinecraft().getItemColors().registerItemColorHandler(new IItemColor() - { - @Override - public int getColorFromItemstack(ItemStack stack, int tintIndex) - { - return stack.hasTagCompound() && stack.getTagCompound().hasKey("bloody") ? new Color(0x8B191B).getRGB() : 16777215; - } - }, Items.BREAD); + Minecraft.getMinecraft().getItemColors().registerItemColorHandler( + new IItemColor() + { + @Override + public int getColorFromItemstack(ItemStack stack, int tintIndex) + { + try { + if (stack.hasTagCompound() && stack.getTagCompound().hasKey(Constants.NBT.COLOR)) + if (tintIndex == 1) + return Color.decode(stack.getTagCompound().getString(Constants.NBT.COLOR)).getRGB(); + } catch (NumberFormatException e) { + return -1; + } + return -1; + } + }, + ModItems.sigilHolding + ); addElytraLayer(); } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java index 99d8af40..96cbbe2e 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModItems.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModItems.java @@ -1,8 +1,12 @@ package WayofTime.bloodmagic.registry; +import net.minecraft.client.renderer.ItemMeshDefinition; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.fml.common.IFuelHandler; import net.minecraftforge.fml.common.registry.GameRegistry; @@ -259,6 +263,23 @@ public class ModItems { InventoryRenderHelper renderHelper = BloodMagic.proxy.getRenderHelper(); + final ResourceLocation holdingLoc = new ResourceLocation("bloodmagic", "item/ItemSigilHolding"); + ModelLoader.setCustomMeshDefinition( + sigilHolding, + new ItemMeshDefinition() + { + @Override + public ModelResourceLocation getModelLocation(ItemStack stack) + { + if (stack.hasTagCompound() && stack.getTagCompound().hasKey(Constants.NBT.COLOR)) + return new ModelResourceLocation(holdingLoc, "type=color"); + return new ModelResourceLocation(holdingLoc, "type=normal"); + } + } + ); + ModelLoader.registerItemVariants(sigilHolding, new ModelResourceLocation(holdingLoc, "type=normal")); + ModelLoader.registerItemVariants(sigilHolding, new ModelResourceLocation(holdingLoc, "type=color")); + renderHelper.itemRenderAll(bloodOrb); OrbRegistry.registerOrbTexture(orbWeak, new ResourceLocation(Constants.Mod.DOMAIN + "ItemBloodOrbWeak")); OrbRegistry.registerOrbTexture(orbApprentice, new ResourceLocation(Constants.Mod.DOMAIN + "ItemBloodOrbApprentice")); diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java index b7063808..62a42509 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java @@ -11,7 +11,10 @@ import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.item.ItemInscriptionTool; import WayofTime.bloodmagic.registry.ModItems; import net.minecraft.init.Items; +import net.minecraft.item.EnumDyeColor; +import net.minecraft.item.ItemBanner; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.event.AnvilUpdateEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -57,6 +60,33 @@ public class CraftingHandler { } } + if (event.getLeft().getItem() == ModItems.sigilHolding) { + if (event.getRight().getItem() == Items.NAME_TAG) { + ItemStack output = event.getLeft().copy(); + if (!output.hasTagCompound()) + output.setTagCompound(new NBTTagCompound()); + output.getTagCompound().setString(Constants.NBT.COLOR, event.getRight().getDisplayName()); + event.setCost(1); + + event.setOutput(output); + + return; + } + + if (event.getRight().getItem() == Items.DYE) { + EnumDyeColor dyeColor = ItemBanner.getBaseColor(event.getRight()); + ItemStack output = event.getLeft().copy(); + if (!output.hasTagCompound()) + output.setTagCompound(new NBTTagCompound()); + output.getTagCompound().setString(Constants.NBT.COLOR, String.valueOf(dyeColor.getMapColor().colorValue)); + event.setCost(1); + + event.setOutput(output); + + return; + } + } + if (event.getLeft().getItem() == Items.BOOK && event.getRight().getItem() == Items.ELYTRA && !event.getRight().isItemDamaged()) { ItemStack output = new ItemStack(ModItems.upgradeTome); diff --git a/src/main/resources/assets/bloodmagic/blockstates/item/ItemSigilHolding.json b/src/main/resources/assets/bloodmagic/blockstates/item/ItemSigilHolding.json index 77427007..cfe4b8ec 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/item/ItemSigilHolding.json +++ b/src/main/resources/assets/bloodmagic/blockstates/item/ItemSigilHolding.json @@ -10,6 +10,12 @@ "textures": { "layer0": "bloodmagic:items/SigilOfHolding" } + }, + "color": { + "textures": { + "layer0": "bloodmagic:items/SigilOfHolding", + "layer1": "bloodmagic:items/SigilOverlay" + } } } }