@Override
	public void onEnable() {
		instance = this;
		getDataFolder().mkdir();
		log = getLogger();
		nameLoader = new NamesLoader(this);
		nameLoader.writeDefault("config.yml", false);
		nameLoader.writeDefault("custom.yml", false);
		nameLoader.writeDefault("tier.yml", false);
		nameLoader.writeDefault("set.yml", false);
		nameLoader.writeDefault("prefix.txt", false);
		nameLoader.writeDefault("suffix.txt", false);
		nameLoader.writeDefault("defenselore.txt", false);
		nameLoader.writeDefault("offenselore.txt", false);
		FileConfiguration config = getConfig();
		settings = new Settings(config);
		if (config.getBoolean("Display.ItemMaterialExtras", false)) {
			File loc = new File(getDataFolder(), "/NamesPrefix/");
			if (!loc.exists()) {
				loc.mkdir();
			}
			for (File f : loc.listFiles())
				if (f.getName().endsWith(".txt")) {
					getLogger().info("Loading Prefix File:" + f.getName());
					nameLoader.loadMaterialFile(hmprefix,
							new File(loc, f.getName()));
				}
			File sloc = new File(getDataFolder(), "/NamesSuffix/");
			if (!sloc.exists()) {
				sloc.mkdir();
			}
			for (File f : sloc.listFiles())
				if (f.getName().endsWith(".txt")) {
					getLogger().info("Loading Suffix File:" + f.getName());
					nameLoader.loadMaterialFile(hmsuffix,
							new File(sloc, f.getName()));
				}
		}

		nameLoader.loadFile(prefix, "prefix.txt");
		nameLoader.loadFile(suffix, "suffix.txt");

		nameLoader.loadFile(defenselore, "defenselore.txt");
		nameLoader.loadFile(offenselore, "offenselore.txt");
		custom = new ArrayList<ItemStack>();
		drop = new ItemAPI();
		new CustomBuilder(this).build();
		new SocketBuilder(this).build();
		new TierBuilder(this).build();
		new ArmorSetBuilder(this).build();
		dropsAPI = new DropsAPI(this);
		setsAPI = new SetsAPI(this);
		if (config.getBoolean("Worlds.Enabled", false)) {
			for (String s : config.getStringList("Worlds.Allowed")) {
				worlds.add(s.toLowerCase());
			}
		}
		debug = config.getBoolean("Plugin.Debug", false);

		PluginManager pm = getServer().getPluginManager();
		pm.registerEvents(new MobListener(this), this);
		pm.registerEvents(new TomeListener(this), this);
		pm.registerEvents(new SocketListener(this), this);
		pm.registerEvents(new EffectsListener(this), this);
		pm.registerEvents(new SetListener(this), this);

		getCommand("diablodrops").setExecutor(new DiabloDropCommand(this));

		ShapelessRecipe re = new ShapelessRecipe(new IdentifyTome());
		re.addIngredient(3, Material.BOOK);
		re.addIngredient(Material.EYE_OF_ENDER);
		this.getServer().addRecipe(re);
	}