summaryrefslogtreecommitdiffstats
path: root/Essentials/src/net/ess3/bukkit/VersionCheck.java
blob: f84b97efa5b66b562aa786b06f8d3da0610ec456 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package net.ess3.bukkit;

import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static net.ess3.I18n._;
import org.bukkit.plugin.PluginManager;


public class VersionCheck
{
	public static final int BUKKIT_VERSION = 2735;
	private static final Pattern bukkitVersionPattern = Pattern.compile(
			"git-Bukkit-(?:(?:[0-9]+)\\.)+[0-9]+-R[\\.0-9]+-(?:[0-9]+-g[0-9a-f]+-)?b([0-9]+)jnks.*");

	public static boolean checkVersion(final org.bukkit.plugin.Plugin plugin)
	{
		final PluginManager pm = plugin.getServer().getPluginManager();
		final String pluginVersion = plugin.getDescription().getVersion();
		final Logger log = plugin.getLogger();
		for (org.bukkit.plugin.Plugin p : pm.getPlugins())
		{
			if (p.getDescription().getName().startsWith("Essentials") && !p.getDescription().getVersion().equals(pluginVersion))
			{
				p.getLogger().log(Level.WARNING, _("§4Version mismatch! Please update {0} to the same version.", p.getDescription().getName()));
			}
		}
		final Matcher versionMatch = bukkitVersionPattern.matcher(plugin.getServer().getVersion());
		if (versionMatch.matches())
		{
			final int versionNumber = Integer.parseInt(versionMatch.group(1));
			if (versionNumber < BUKKIT_VERSION && versionNumber > 100)
			{
				log.log(Level.SEVERE, _(" §4* ! * Bukkit version is not the recommended build for Essentials."));
				log.log(Level.SEVERE, _(" §6* ! * You need atleast build {0} of CraftBukkit, download it from http://dl.bukkit.org/downloads/craftbukkit/", Integer.toString(BUKKIT_VERSION)));
				return false;
			}
		}
		else
		{
			log.log(Level.INFO, _("Bukkit version format changed. Version not checked."));
			log.log(Level.INFO, plugin.getServer().getVersion());
			log.log(Level.INFO, plugin.getServer().getBukkitVersion());
		}
		return true;
	}
}