First pass at coloring Sigil of Holding (#787)

This commit is contained in:
Nicholas Ignoffo 2016-06-09 16:59:11 -07:00
parent 513bb113e1
commit 4eda0d6caa
6 changed files with 83 additions and 8 deletions

View file

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

View file

@ -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<Pair<Integer, String>> getVariants() {
return Collections.emptyList();
}
}

View file

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

View file

@ -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"));

View file

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

View file

@ -10,6 +10,12 @@
"textures": {
"layer0": "bloodmagic:items/SigilOfHolding"
}
},
"color": {
"textures": {
"layer0": "bloodmagic:items/SigilOfHolding",
"layer1": "bloodmagic:items/SigilOverlay"
}
}
}
}