diff options
| author | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2015-06-11 19:59:48 +0100 |
|---|---|---|
| committer | OnyxDarkKnight <sor1n.iliutza16@gmail.com> | 2015-06-11 19:59:48 +0100 |
| commit | 2f93a3de229a3351d91708cf60fbc9ab7a1be97f (patch) | |
| tree | e5c60900d517d428e00946a7816ab67a75c0e3aa /src/main/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java | |
| parent | e66ce0d4678e288d981f734fa7fdec8f9642545e (diff) | |
Improved color detection system by 10000000%! (not rly, but it's better
than b4)
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java')
| -rw-r--r-- | src/main/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java | 92 |
1 files changed, 5 insertions, 87 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java b/src/main/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java index 1ffdeb7..f25e09e 100644 --- a/src/main/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemMoltenMetal.java @@ -8,7 +8,9 @@ import java.util.HashMap; import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+
import javax.imageio.ImageIO;
+
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.client.resources.IResourceManager;
@@ -18,6 +20,7 @@ import net.minecraft.util.ResourceLocation; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import darkknight.jewelrycraft.util.JewelryNBT;
+import darkknight.jewelrycraft.util.JewelrycraftUtil;
import darkknight.jewelrycraft.util.Variables;
public class ItemMoltenMetal extends Item
@@ -49,92 +52,7 @@ public class ItemMoltenMetal extends Item @SideOnly (Side.CLIENT)
public int getColorFromItemStack(ItemStack stack, int pass)
{
- try{
- return color(stack, pass);
- }
- catch(IOException e){
- e.printStackTrace();
- }
- return 16777215;
- }
-
- /**
- * @param stack
- * @param pass
- * @return
- * @throws IOException
- */
- @SideOnly(Side.CLIENT)
- public static int color(ItemStack stack, int pass) throws IOException
- {
- IResourceManager rm = Minecraft.getMinecraft().getResourceManager();
- ResourceLocation ingot;
- BufferedImage icon;
- if (stack != null && JewelryNBT.ingot(stack) != null && Item.getIdFromItem(JewelryNBT.ingot(stack).getItem()) > 0 && JewelryNBT.ingot(stack).getIconIndex() != null && JewelryNBT.ingotColor(stack) == 16777215){
- try{
- ingot = ItemBaseJewelry.getLocation(JewelryNBT.ingot(stack), stack, false);
- }
- catch(Exception e){
- ingot = new ResourceLocation("textures/items/apple.png");
- }
- icon = ImageIO.read(rm.getResource(ingot).getInputStream());
- int height = icon.getHeight();
- int width = icon.getWidth();
- Map m = new HashMap();
- for(int i = 0; i < width; i++)
- for(int j = 0; j < height; j++){
- int rgb = icon.getRGB(i, j);
- int red = rgb >> 16 & 0xff;
- int green = rgb >> 8 & 0xff;
- int blue = rgb & 0xff;
- int[] rgbArr = {red, green, blue};
- int Cmax = Math.max(red, Math.max(green, blue));
- int Cmin = Math.min(red, Math.min(green, blue));
- if (!isGray(rgbArr)) m.put(rgb, (Cmax + Cmin) / 2);
- }
- try{
- int color = getMostCommonColour(m);
- if (JewelryNBT.ingot(stack) != null && JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1) != 16777215) JewelryNBT.addIngotColor(stack, JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1));
- else JewelryNBT.addIngotColor(stack, color);
- }
- catch(Exception e){
- JewelryNBT.addIngotColor(stack, 16777215);
- }
- }
- if (JewelryNBT.ingot(stack) != null) return JewelryNBT.ingotColor(stack);
- return 0;
- }
-
- /**
- * @param map
- * @return
- */
- public static int getMostCommonColour(Map map)
- {
- List list = new LinkedList(map.entrySet());
- Collections.sort(list, new Comparator(){
- public int compare(Object o1, Object o2)
- {
- return ((Comparable)((Map.Entry)o1).getValue()).compareTo(((Map.Entry)o2).getValue());
- }
- });
- Map.Entry me = (Map.Entry)list.get(list.size() - 1);
- for(int i = 0; i < list.size(); i++){
- float alpha = Float.valueOf(list.get(i).toString().split("=")[1]);
- if (alpha < 180) me = (Map.Entry)list.get(i);
- }
- int rgb = (Integer)me.getKey();
- return rgb;
- }
-
- /**
- * @param rgbArr
- * @return
- */
- public static boolean isGray(int[] rgbArr)
- {
- int rgbSum = rgbArr[0] + rgbArr[1] + rgbArr[2];
- if (rgbSum > 0 && rgbSum < 256 * 3) return false;
- return true;
+ if(JewelryNBT.ingot(stack) != null) return JewelrycraftUtil.getColor(JewelryNBT.ingot(stack));
+ else return 0xFFFFFF;
}
}
|
