package minefantasy.mf2.material;
import java.util.ArrayList;
import java.util.Iterator;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import minefantasy.mf2.api.MineFantasyAPI;
import minefantasy.mf2.api.material.CustomMaterial;
import minefantasy.mf2.item.list.ComponentListMF;
import minefantasy.mf2.util.MFLogUtil;
public class MetalMaterial extends CustomMaterial
{
public MetalMaterial(String name, int tier, float hardness, float durability, float flexibility, float sharpness, float resistance, float density)
{
super(name, "metal", tier, hardness, durability, flexibility, resistance, sharpness, density);
setArmourStats(1.0F, flexibility, 1F/flexibility);//Harder materials absorb blunt less but resist cutting and piercing more
}
/**
* Adds a new metal
* @param name The name, and register for the metal
* @param tier What tier the metal is
* @param hardness How hard the material is to break
* @param flexibility How well the metal can bend
* @param sharpness How well the metal can be sharpened
* @param resistance The resistance to elements such as fire and corrosion, right now its just 0-100 for armour resistance against elements
* @param density The overall mass (Kg) for an ingot
*/
public static CustomMaterial getOrAddMetal(String name, int tier, float durability, float flexibility, float sharpness, float resistance, float density, int red, int green, int blue)
{
if(getMaterial(name) != null)
{
return CustomMaterial.getMaterial(name);
}
float hardness = ((sharpness+5F)/2F)-1F;
return new MetalMaterial(name, tier, hardness, durability, flexibility, sharpness, resistance, density).setColour(red, green, blue).register();
}
public static CustomMaterial getOrAddMetal(String name, int tier, float hardness, float durability, float flexibility, float sharpness, float resistance, float density, int red, int green, int blue)
{
if(getMaterial(name) != null)
{
return CustomMaterial.getMaterial(name);
}
return new MetalMaterial(name, tier, hardness, durability, flexibility, sharpness, resistance, density).setColour(red, green, blue).register();
}
public static void init()
{
/* BaseMaterialMF
* WOOD(0, 59, 2.0F, 0.0F, 15),
STONE(1, 131, 4.0F, 1.0F, 5),
IRON(2, 250, 6.0F, 2.0F, 14),
EMERALD(3, 1561, 8.0F, 3.0F, 10),
GOLD(0, 32, 12.0F, 0.0F, 22);
*/
//Weak Mats Name T Dur Flx Shp Rst Wg
getOrAddMetal("Tin", 0, 2/5F, 0.5F, 0.0F, 10F, 2.0F, 164, 177, 177).setRarity(-1).setMeltingPoint(90);
getOrAddMetal("Copper", 0, 4/5F, 1.0F, 0.0F, 50F, 3.0F, 255, 132, 66).setMeltingPoint(100);
//Standard Mats Name T Dur Flx Shp Rst Wg
getOrAddMetal("Bronze", 1, 1.5F, 1.0F, 1.5F, 20F, 3.0F, 207, 165, 118).setCrafterTiers(1).setMeltingPoint(120);
getOrAddMetal("Iron", 2, 2.0F, 1.0F, 2.0F, 20F, 2.5F, 120, 95, 95).setCrafterTiers(2).setMeltingPoint(120).setArmourStats(1.0F, 1.0F, 1.0F);//Standard
getOrAddMetal("RefinedIron", 2, 2.0F, 0.8F, 2.0F, 20F, 2.5F, 120, 100, 110).setCrafterTiers(2).setMeltingPoint(120).setArmourStats(1.1F, 0.8F, 1.1F);//Less Blunt for more cutting/piercing
getOrAddMetal("Steel", 3, 3.0F, 1.0F, 2.5F, 30F, 2.5F, 168, 168, 168).setCrafterTiers(3).setMeltingPoint(125);
getOrAddMetal("Encrusted", 4, 8.0F, 1.0F, 3.0F, 35F, 3.0F, 64, 255, 255).setCrafterTiers(3).setMeltingPoint(150).setArmourStats(1.0F, 1.0F, 1.2F);//Better Piercing
getOrAddMetal("Obsidian", 4, 8.0F, 1.0F, 3.0F, 35F, 3.0F, 90 , 45 , 90).setCrafterTiers(3).setMeltingPoint(180).setArmourStats(1.0F, 1.3F, 1.0F);//Better Blunt
getOrAddMetal("Tungsten", 4, 8.0F, 0.8F, 3.0F, 35F, 4.0F, 66 , 86 , 65).setCrafterTiers(3).setMeltingPoint(150).setArmourStats(1.3F, 1.0F, 1.3F);//Better Cutting/Piercing
getOrAddMetal("BlackSteel", 5, 6.0F, 1.0F, 4.0F, 50F, 3.0F, 80 , 80 , 80).setCrafterTiers(4).setMeltingPoint(150).setArmourStats(1.0F, 1.0F, 1.0F);//Standard
getOrAddMetal("BlueSteel", 6, 7.0F, 1.2F, 5.0F, 65F, 2.0F, 28, 31, 159).setCrafterTiers(5).setMeltingPoint(160).setArmourStats(1.0F, 1.2F, 0.8F);//Better Blunt and Resist
getOrAddMetal("RedSteel", 6, 8.0F, 0.8F, 6.0F, 50F, 4.0F, 219, 56, 56).setCrafterTiers(5).setMeltingPoint(180).setArmourStats(0.9F, 0.9F, 1.2F);//Better AC and Piercing
//Precious Mats
getOrAddMetal("Silver", 0, 2/5F, 1.0F, 0.0F, 10F, 5.0F, 155, 206, 205).setMeltingPoint(120);
getOrAddMetal("Gold", 0, 2/5F, 1.0F, 0.0F, 10F, 5.0F, 243, 222, 49).setMeltingPoint(120);
//Mythic Mats Name T Dur Flx Shp Rst Wg
getOrAddMetal("Mithril", 7, 10.0F, 0.8F, 7.0F, 90F, 1.5F, 250, 180, 250).setMeltingPoint(200).setCrafterTiers(6).setRarity(1);
getOrAddMetal("Adamantium", 7, 12.0F, 0.8F, 8.0F, 80F, 4.5F, 100, 200, 100).setMeltingPoint(250).setCrafterTiers(6).setRarity(1);
getOrAddMetal("Mithium", 8, 15.0F, 0.8F, 10.0F, 95F, 1.0F, 60 , 200, 255).setMeltingPoint(250).setCrafterTiers(7).setRarity(2);
getOrAddMetal("Ignotumite", 8, 15.0F, 0.8F, 14.0F, 85F, 5.0F, 20 , 255, 100).setMeltingPoint(300).setCrafterTiers(7).setRarity(2);
getOrAddMetal("Ender", 8, 15.0F, 0.8F, 12.0F, 90F, 4.0F, 255, 63 , 243).setMeltingPoint(275).setCrafterTiers(7).setRarity(2);
//Non MF
getOrAddMetal("StainlessSteel", 3, 5.0F, 1.0F, 2.5F, 40F, 2.5F, 188, 188, 198).setMeltingPoint(140).setCrafterTiers(3);
getOrAddMetal("Titanium", 6, 10.0F, 1.0F, 4.0F, 50F, 1.0F, 190, 190, 160).setMeltingPoint(200).setCrafterTiers(3);
getOrAddMetal("Thaumium", 4, 4.0F, 1.0F, 3.0F, 65F, 2.5F, 115, 65 , 183).setMeltingPoint(150).setCrafterTiers(3);
getOrAddMetal("Void", 4, 10.0F, 2.0F, 4.0F, 75F, 1.0F, 75 , 45 , 75).setMeltingPoint(180).setCrafterTiers(3);
getOrAddMetal("Manasteel", 2, 3.0F, 1.0F, 2.0F, 40F, 2.5F, 88 , 195, 231).setMeltingPoint(150).setArmourStats(1.0F, 1.2F, 1.0F).setCrafterTiers(2);//More Resistant, Stronger than iron
getOrAddMetal("ElvenElementium",3, 4.0F, 1.0F, 2.5F, 40F, 2.5F, 235, 108, 235).setMeltingPoint(180).setArmourStats(1.1F, 1.0F, 1.1F).setCrafterTiers(2);//Similar to Manasteel, Slightly stronger
getOrAddMetal("Terrasteel", 4, 6.0F, 1.0F, 4.0F, 40F, 2.5F, 88 , 250, 150).setMeltingPoint(150).setArmourStats(1.0F, 0.9F, 1.0F).setCrafterTiers(3);
//Alloy
getOrAddMetal("CompositeAlloy", 4, 4.5F, 10.0F, 1.0F, 2.5F, 75F, 6.0F, 65, 75 ,65).setMeltingPoint(250).setRarity(1).setCrafterTiers(3).modifyCraftTime(5.0F);//Powerful All-Rounder
}
public static void addHeatables()
{
ArrayList<CustomMaterial> metal = CustomMaterial.getList("metal");
Iterator iteratorMetal = metal.iterator();
while(iteratorMetal.hasNext())
{
CustomMaterial customMat = (CustomMaterial) iteratorMetal.next();
int[] stats = customMat.getHeatableStats();
MFLogUtil.logDebug("Set Heatable Stats for " + customMat.name + ": " + stats[0] + "," + stats[1] + "," + stats[2]);
MineFantasyAPI.setHeatableStats("ingot"+customMat.name, stats[0], stats[1], stats[2]);
MineFantasyAPI.setHeatableStats("hunk"+customMat.name, stats[0], stats[1], stats[2]);
}
MineFantasyAPI.setHeatableStats(ComponentListMF.rivet, 100, 200, 300);
MineFantasyAPI.setHeatableStats(ComponentListMF.metalHunk, 50, 500, 1000);
}
@Override
public ItemStack getItem()
{
ArrayList<ItemStack> list = OreDictionary.getOres("ingot"+name);
if(list != null && !list.isEmpty())
{
return list.get(0);
}
return null;
}
}