package pixlepix.auracascade.data;

import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.WeightedRandom;
import net.minecraftforge.oredict.OreDictionary;

import java.util.*;

/**
 * Created by localmacaccount on 6/6/15.
 */
public class OreDropManager {
    public static HashMap<String, Integer> oreNames = new HashMap<String, Integer>();

    public static void addOreWeight(String name, int value) {
        //Nether ores registers stuff whether or not the overworld version exists
        if (name.contains("Nether") && !(OreDictionary.getOres(name.replace("Nether", "")).size() > 0)) {
            return;
        }
        oreNames.put(name, value);
    }

    public static void init() {

        //Ore weights courtesy of Vazkii's Botania

        addOreWeight("oreAluminum", 3940); // Tinkers' Construct
        addOreWeight("oreAmber", 2075); // Thaumcraft
        addOreWeight("oreApatite", 1595); // Forestry
        addOreWeight("oreBlueTopaz", 3195); // Ars Magica
        addOreWeight("oreCertusQuartz", 3975); // Applied Energistics
        addOreWeight("oreChimerite", 3970); // Ars Magica
        addOreWeight("oreCinnabar", 2585); // Thaumcraft
        addOreWeight("oreCoal", 46525); // Vanilla
        addOreWeight("oreCopper", 8325); // IC2, Thermal Expansion, Tinkers' Construct, etc.
        addOreWeight("oreDark", 1350); // EvilCraft
        addOreWeight("oreDarkIron", 1700); // Factorization
        addOreWeight("oreDiamond", 1265); // Vanilla
        addOreWeight("oreEmerald", 780); // Vanilla
        addOreWeight("oreGalena", 1000); // Factorization
        addOreWeight("oreGold", 2970); // Vanilla
        addOreWeight("oreInfusedAir", 925); // Thaumcraft
        addOreWeight("oreInfusedEarth", 925); // Thaumcraft
        addOreWeight("oreInfusedEntropy", 925); // Thaumcraft
        addOreWeight("oreInfusedFire", 925); // Thaumcraft
        addOreWeight("oreInfusedOrder", 925); // Thaumcraft
        addOreWeight("oreInfusedWater", 925); // Thaumcraft
        addOreWeight("oreIron", 20665); // Vanilla
        addOreWeight("oreLapis", 1285); // Vanilla
        addOreWeight("oreLead", 7985); // IC2, Thermal Expansion, Factorization, etc.
        addOreWeight("oreMCropsEssence", 3085); // Magical Crops
        addOreWeight("oreNickel", 2275); // Thermal Expansion
        addOreWeight("oreOlivine", 1100); // Project RED
        addOreWeight("oreRedstone", 6885); // Vanilla
        addOreWeight("oreRuby", 1100); // Project RED
        addOreWeight("oreSapphire", 1100); // Project RED
        addOreWeight("oreSilver", 6300); // Thermal Expansion, Factorization, etc.
        addOreWeight("oreSulfur", 1105); // Railcraft
        addOreWeight("oreTin", 9450); // IC2, Thermal Expansion, etc.
        addOreWeight("oreUranium", 1337); // IC2
        addOreWeight("oreVinteum", 5925); // Ars Magica
        addOreWeight("oreYellorite", 3520); // Big Reactors
        addOreWeight("oreZinc", 6485); // Flaxbeard's Steam Power
        addOreWeight("oreMythril", 6485); // Simple Ores2
        addOreWeight("oreAdamantium", 2275); // Simple Ores2
        addOreWeight("oreTungsten", 3520); // Simple Tungsten

        addOreWeight("oreQuartz", 19600); // Vanilla
        addOreWeight("oreCobalt", 500); // Tinker's Construct
        addOreWeight("oreArdite", 500); // Tinker's Construct
        addOreWeight("oreFirestone", 5); // Railcraft
        addOreWeight("oreNetherCoal", 17000); // Nether Ores
        addOreWeight("oreNetherCopper", 4700); // Nether Ores
        addOreWeight("oreNetherDiamond", 175); // Nether Ores
        addOreWeight("oreNetherEssence", 2460); // Magical Crops
        addOreWeight("oreNetherGold", 3635); // Nether Ores
        addOreWeight("oreNetherIron", 5790); // Nether Ores
        addOreWeight("oreNetherLapis", 3250); // Nether Ores
        addOreWeight("oreNetherLead", 2790); // Nether Ores
        addOreWeight("oreNetherNickel", 1790); // Nether Ores
        addOreWeight("oreNetherPlatinum", 170); // Nether Ores
        addOreWeight("oreNetherRedstone", 5600); // Nether Ores
        addOreWeight("oreNetherSilver", 1550); // Nether Ores
        addOreWeight("oreNetherSteel", 1690); // Nether Ores
        addOreWeight("oreNetherTin", 3750); // Nether Ores
        addOreWeight("oreFyrite", 1000); // Netherrocks
        addOreWeight("oreMalachite", 1000); // Netherrocks
        addOreWeight("oreAshstone", 1000); // Netherrocks
        addOreWeight("oreDragonstone", 175); // Netherrocks
        addOreWeight("oreArgonite", 1000); // Netherrocks
        addOreWeight("oreOnyx", 500); // SimpleOres 2
        addOreWeight("oreHaditeCoal", 500); // Hadite
    }

    //Also Botania's code
    public static ItemStack getOreToPut() {
        Collection<WeightedRandom.Item> values = new ArrayList();
        for (String s : oreNames.keySet())
            values.add(new StringRandomItem(oreNames.get(s), s));

        String ore = ((StringRandomItem) WeightedRandom.getRandomItem(new Random(), values)).s;

        List<ItemStack> ores = OreDictionary.getOres(ore);

        for (ItemStack stack : ores) {
            Item item = stack.getItem();
            String clname = item.getClass().getName();

            if (clname.startsWith("gregtech") || clname.startsWith("gregapi")) {
                continue;
            }

            return stack.copy();
        }

        return getOreToPut();
    }

    private static class StringRandomItem extends WeightedRandom.Item {

        public String s;

        public StringRandomItem(int par1, String s) {
            super(par1);
            this.s = s;
        }

    }
}

@@ -4339,67 +4339,8 @@
 cks%0A
-        addOreWeight(%22oreMalachite%22, 1000); // Netherrocks%0A
     

Remove oreMalachite