Fixed luma color in ResourceGenerator

This commit is contained in:
Calclavia 2014-01-31 18:14:30 +08:00
parent 9380b03dc0
commit 84b13c027c
2 changed files with 28 additions and 27 deletions

View file

@ -5,7 +5,9 @@ import java.awt.image.BufferedImage;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
@ -39,14 +41,20 @@ import cpw.mods.fml.relauncher.SideOnly;
public class ResourceGenerator public class ResourceGenerator
{ {
public static final ResourceGenerator INSTANCE = new ResourceGenerator(); public static final ResourceGenerator INSTANCE = new ResourceGenerator();
public static final Set<String> oreDictBlackList = new HashSet<String>();
public static final List<String> materialNames = new ArrayList<String>(); public static final List<String> materialNames = new ArrayList<String>();
public static final HashMap<String, Integer> materialColors = new HashMap<String, Integer>(); public static final HashMap<String, Integer> materialColors = new HashMap<String, Integer>();
public static final HashMap<Item, Integer> itemColorMap = new HashMap<Item, Integer>(); private static final HashMap<Icon, Integer> iconColorMap = new HashMap<Icon, Integer>();
static
{
oreDictBlackList.add("ingotRefinedIron");
}
@ForgeSubscribe @ForgeSubscribe
public void oreRegisterEvent(OreRegisterEvent evt) public void oreRegisterEvent(OreRegisterEvent evt)
{ {
if (evt.Name.startsWith("ingot")) if (evt.Name.startsWith("ingot") && !oreDictBlackList.contains(evt.Name))
{ {
String materialName = evt.Name.replace("ingot", ""); String materialName = evt.Name.replace("ingot", "");
@ -153,14 +161,15 @@ public class ResourceGenerator
int colorCount = 0; int colorCount = 0;
Item item = itemStack.getItem(); Item item = itemStack.getItem();
if (itemColorMap.containsKey(item))
{
return itemColorMap.get(item);
}
try try
{ {
Icon icon = item.getIconIndex(itemStack); Icon icon = item.getIconIndex(itemStack);
if (iconColorMap.containsKey(icon))
{
return iconColorMap.get(icon);
}
String iconString = icon.getIconName(); String iconString = icon.getIconName();
if (iconString != null && !iconString.contains("MISSING_ICON_ITEM")) if (iconString != null && !iconString.contains("MISSING_ICON_ITEM"))
@ -181,9 +190,9 @@ public class ResourceGenerator
Color rgb = new Color(bufferedimage.getRGB(x, y)); Color rgb = new Color(bufferedimage.getRGB(x, y));
/** /**
* Ignore things that are too dark.per ITU-R BT.709 * Ignore things that are too dark. Standard luma calculation.
*/ */
double luma = 0.2126 * rgb.getRed() + 0.7152 * rgb.getGreen() + 0.0722 * rgb.getGreen(); double luma = 0.2126 * rgb.getRed() + 0.7152 * rgb.getGreen() + 0.0722 * rgb.getBlue();
if (luma > 40) if (luma > 40)
{ {
@ -195,21 +204,20 @@ public class ResourceGenerator
} }
} }
} }
if (colorCount > 0)
{
totalR /= colorCount;
totalG /= colorCount;
totalB /= colorCount;
int averageColor = new Color(totalR, totalG, totalB).brighter().getRGB();
iconColorMap.put(icon, averageColor);
return averageColor;
}
} }
catch (Exception e) catch (Exception e)
{ {
ResonantInduction.LOGGER.fine("Failed to compute colors for: " + item); ResonantInduction.LOGGER.fine("Failed to compute colors for: " + item);
// e.printStackTrace();
}
if (colorCount > 0)
{
totalR /= colorCount;
totalG /= colorCount;
totalB /= colorCount;
int averageColor = new Color(totalR, totalG, totalB).brighter().getRGB();
itemColorMap.put(item, averageColor);
return averageColor;
} }
return 0xFFFFFF; return 0xFFFFFF;

View file

@ -41,13 +41,6 @@ public class ItemOreResource extends ItemRI
setMaxDamage(0); setMaxDamage(0);
} }
@Override
public void addInformation(ItemStack itemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
{
// par3List.add("TEST" +
// itemStack.getTagCompound().equals(getStackFromMaterial(getMaterialFromStack(itemStack)).getTagCompound()));
}
@Override @Override
public String getItemDisplayName(ItemStack is) public String getItemDisplayName(ItemStack is)
{ {