public void onEnable(){
		instance = this;
		getLogger().info("MaxPvP starting");
		saveDefaultConfig();
		reloadConfig();
		
		File pf = this.getDataFolder().getAbsoluteFile();
		if(pf == null || !pf.exists()){
			pf.mkdir();
		}
		
		this.db = new Database(this, "stats");
		
		try{
			if(!db.hasTable()){
				db.createTable();
			}
		}
		catch(SQLException e){
			e.printStackTrace();
			getLogger().severe(ChatColor.RED + "Could not create DB table.");
		}
		
		try {
			PreparedStatement ps = db.getConnection().prepareStatement("SELECT * FROM stats");
			ResultSet rs = ps.executeQuery();
			
			while(rs.next()){
				String name = rs.getString("name");
				int kills = rs.getInt("kills");
				int deaths = rs.getInt("deaths");
				int karma = rs.getInt("karma");
				
				KarmaPlayer kp = new KarmaPlayer(this, name, kills, deaths, karma);
				this.addKarmaPlayer(kp);
				this.names.add(name);
			}
		} catch (SQLException e) {
			e.printStackTrace();
			getLogger().severe("Could not load players from database!");
		}
		getLogger().info(karmaPlayers.size() + " players loaded.");
		
		getCommand("pvp").setExecutor(new PvP(this));
		
		if(!enabled){
			//Register the death listener
			this.deathListener = new PlayerListener();
			Bukkit.getServer().getPluginManager().registerEvents(this.deathListener, this);
			enabled = true;
		}
		
		getLogger().info("Generating rewards...");
		
		this.rewards.put(2, new StreakReward(){
			@Override
			public void give(Player p){
				PotionEffect pot = new PotionEffect(PotionEffectType.JUMP, 1200, 1);
				p.addPotionEffect(pot, false);
				p.playEffect(p.getLocation(), Effect.POTION_BREAK, 0);
				p.sendMessage(ChatColor.GOLD + "[PvP] " + ChatColor.GREEN + "Jump: II Granted!");
				
			}
		});
		
		this.rewards.put(3, new StreakReward(){
			@Override
			public void give(Player p){
				PotionEffect pot = new PotionEffect(PotionEffectType.REGENERATION, 1200, 2);
				p.addPotionEffect(pot, false);
				p.playEffect(p.getLocation(), Effect.POTION_BREAK, 0);
				p.sendMessage(ChatColor.GOLD + "[PvP] " + ChatColor.GREEN + "Regen: II Granted!");
				Bukkit.broadcastMessage(ChatColor.GOLD + "[PvP] " + ChatColor.GREEN + p.getName() + " has reached a 3 kill streak!");
			}
		});
		
		this.rewards.put(4, new StreakReward(){
			@Override
			public void give(Player p){
				PotionEffect pot = new PotionEffect(PotionEffectType.SPEED, 2400, 3);
				p.addPotionEffect(pot, false);
				p.playEffect(p.getLocation(), Effect.POTION_BREAK, 0);
				p.sendMessage(ChatColor.GOLD + "[PvP] " + ChatColor.GREEN + "Speed: III Granted!");
			}
		});
		
		this.rewards.put(5, new StreakReward(){
			@Override
			public void give(Player p){
				ArrayList<PotionEffect> effects = new ArrayList<PotionEffect>();
				effects.add(new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 300, 1));
				effects.add(new PotionEffect(PotionEffectType.FIRE_RESISTANCE, 300, 1));
				effects.add(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 300, 2));
				effects.add(new PotionEffect(PotionEffectType.JUMP, 300, 2));
				effects.add(new PotionEffect(PotionEffectType.REGENERATION, 300, 1));
				effects.add(new PotionEffect(PotionEffectType.SPEED, 300, 3));
				
				p.addPotionEffects(effects);
				p.sendMessage(ChatColor.GOLD + "[PvP] " + ChatColor.GREEN + "Adrenaline Rush Granted!");
			}
		});
		
		this.rewards.put(8, new StreakReward(){
			@Override
			public void give(Player p){
				ItemStack reward = new ItemStack(Material.DIAMOND, 3);
				
				p.getInventory().addItem(reward);
				KarmaPlayer kp = getKarmaPlayer(p);
				kp.setKillStreak(0);
				p.sendMessage(ChatColor.GOLD + "[PvP] " + ChatColor.GREEN + "Three Diamonds Granted!");
				
				StringBuilder sb = new StringBuilder(p.getName() + " killed ");
				for(String s : kp.getRecentKills().keySet()){
					sb.append(s + ", ");
				}
				getLogger().info("Potential abuse: " + sb.toString());
				
				Bukkit.broadcastMessage(ChatColor.GOLD + "[PvP] " + ChatColor.GREEN + p.getName() + " has reached an 8 kill streak!");
			}
		});
		
		getLogger().info("Loading Complete.");
	}