From 08292b8ac1809be51ba65d0606739a94c1cab17e Mon Sep 17 00:00:00 2001 From: Xephi59 Date: Sun, 12 Jul 2015 23:14:21 +0200 Subject: [PATCH 1/7] Change to StringList --- .../fr/xephi/authme/settings/Settings.java | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java index 085594c5..ae53fdac 100644 --- a/src/main/java/fr/xephi/authme/settings/Settings.java +++ b/src/main/java/fr/xephi/authme/settings/Settings.java @@ -218,7 +218,7 @@ public final class Settings extends YamlConfiguration { multiverse = configFile.getBoolean("Hooks.multiverse", true); chestshop = configFile.getBoolean("Hooks.chestshop", true); bungee = configFile.getBoolean("Hooks.bungeecord", false); - getForcedWorlds = (List) configFile.getList("settings.restrictions.ForceSpawnOnTheseWorlds", new ArrayList()); + getForcedWorlds = configFile.getStringList("settings.restrictions.ForceSpawnOnTheseWorlds"); banUnsafeIp = configFile.getBoolean("settings.restrictions.banUnsafedIP", false); doubleEmailCheck = configFile.getBoolean("settings.registration.doubleEmailCheck", false); sessionExpireOnIpChange = configFile.getBoolean("settings.sessions.sessionExpireOnIpChange", false); @@ -240,17 +240,17 @@ public final class Settings extends YamlConfiguration { purgeAntiXray = configFile.getBoolean("Purge.removeAntiXRayFile", false); purgePermissions = configFile.getBoolean("Purge.removePermissions", false); enableProtection = configFile.getBoolean("Protection.enableProtection", false); - countries = (List) configFile.getList("Protection.countries", new ArrayList()); + countries = configFile.getStringList("Protection.countries"); enableAntiBot = configFile.getBoolean("Protection.enableAntiBot", false); antiBotSensibility = configFile.getInt("Protection.antiBotSensibility", 5); antiBotDuration = configFile.getInt("Protection.antiBotDuration", 10); - forceCommands = (List) configFile.getList("settings.forceCommands", new ArrayList()); - forceCommandsAsConsole = (List) configFile.getList("settings.forceCommandsAsConsole", new ArrayList()); + forceCommands = configFile.getStringList("settings.forceCommands"); + forceCommandsAsConsole = configFile.getStringList("settings.forceCommandsAsConsole"); recallEmail = configFile.getBoolean("Email.recallPlayers", false); delayRecall = configFile.getInt("Email.delayRecall", 5); useWelcomeMessage = configFile.getBoolean("settings.useWelcomeMessage", true); - unsafePasswords = (List) configFile.getList("settings.security.unsafePasswords", new ArrayList()); - countriesBlacklist = (List) configFile.getList("Protection.countriesBlacklist", new ArrayList()); + unsafePasswords = configFile.getStringList("settings.security.unsafePasswords"); + countriesBlacklist = configFile.getStringList("Protection.countriesBlacklist"); broadcastWelcomeMessage = configFile.getBoolean("settings.broadcastWelcomeMessage", false); forceRegKick = configFile.getBoolean("settings.registration.forceKickAfterRegister", false); forceRegLogin = configFile.getBoolean("settings.registration.forceLoginAfterRegister", false); @@ -266,7 +266,7 @@ public final class Settings extends YamlConfiguration { applyBlindEffect = configFile.getBoolean("settings.applyBlindEffect", false); emailBlacklist = configFile.getStringList("Email.emailBlacklisted"); emailWhitelist = configFile.getStringList("Email.emailWhitelisted"); - forceRegisterCommands = (List) configFile.getList("settings.forceRegisterCommands", new ArrayList()); + forceRegisterCommands = configFile.getStringList("settings.forceRegisterCommands"); forceRegisterCommandsAsConsole = (List) configFile.getList("settings.forceRegisterCommandsAsConsole", new ArrayList()); customAttributes = configFile.getBoolean("Hooks.customAttributes"); generateImage = configFile.getBoolean("Email.generateImage", true); @@ -323,12 +323,12 @@ public final class Settings extends YamlConfiguration { getMySQLColumnPassword = configFile.getString("DataSource.mySQLColumnPassword", "password"); getMySQLColumnIp = configFile.getString("DataSource.mySQLColumnIp", "ip"); getMySQLColumnLastLogin = configFile.getString("DataSource.mySQLColumnLastLogin", "lastlogin"); + getMySQLColumnSalt = configFile.getString("ExternalBoardOptions.mySQLColumnSalt"); + getMySQLColumnGroup = configFile.getString("ExternalBoardOptions.mySQLColumnGroup", ""); getMySQLlastlocX = configFile.getString("DataSource.mySQLlastlocX", "x"); getMySQLlastlocY = configFile.getString("DataSource.mySQLlastlocY", "y"); getMySQLlastlocZ = configFile.getString("DataSource.mySQLlastlocZ", "z"); getMySQLlastlocWorld = configFile.getString("DataSource.mySQLlastlocWorld", "world"); - getMySQLColumnSalt = configFile.getString("ExternalBoardOptions.mySQLColumnSalt", ""); - getMySQLColumnGroup = configFile.getString("ExternalBoardOptions.mySQLColumnGroup", ""); getNonActivatedGroup = configFile.getInt("ExternalBoardOptions.nonActivedUserGroup", -1); unRegisteredGroup = configFile.getString("GroupOptions.UnregisteredPlayerGroup", ""); getUnrestrictedName = configFile.getStringList("settings.unrestrictions.UnrestrictedName"); @@ -385,7 +385,7 @@ public final class Settings extends YamlConfiguration { multiverse = configFile.getBoolean("Hooks.multiverse", true); chestshop = configFile.getBoolean("Hooks.chestshop", true); bungee = configFile.getBoolean("Hooks.bungeecord", false); - getForcedWorlds = (List) configFile.getList("settings.restrictions.ForceSpawnOnTheseWorlds"); + getForcedWorlds = configFile.getStringList("settings.restrictions.ForceSpawnOnTheseWorlds"); banUnsafeIp = configFile.getBoolean("settings.restrictions.banUnsafedIP", false); doubleEmailCheck = configFile.getBoolean("settings.registration.doubleEmailCheck", false); sessionExpireOnIpChange = configFile.getBoolean("settings.sessions.sessionExpireOnIpChange", false); @@ -407,17 +407,17 @@ public final class Settings extends YamlConfiguration { purgeAntiXray = configFile.getBoolean("Purge.removeAntiXRayFile", false); purgePermissions = configFile.getBoolean("Purge.removePermissions", false); enableProtection = configFile.getBoolean("Protection.enableProtection", false); - countries = (List) configFile.getList("Protection.countries"); + countries = configFile.getStringList("Protection.countries"); enableAntiBot = configFile.getBoolean("Protection.enableAntiBot", false); antiBotSensibility = configFile.getInt("Protection.antiBotSensibility", 5); antiBotDuration = configFile.getInt("Protection.antiBotDuration", 10); - forceCommands = (List) configFile.getList("settings.forceCommands", new ArrayList()); - forceCommandsAsConsole = (List) configFile.getList("settings.forceCommandsAsConsole", new ArrayList()); + forceCommands = configFile.getStringList("settings.forceCommands"); + forceCommandsAsConsole = configFile.getStringList("settings.forceCommandsAsConsole"); recallEmail = configFile.getBoolean("Email.recallPlayers", false); delayRecall = configFile.getInt("Email.delayRecall", 5); useWelcomeMessage = configFile.getBoolean("settings.useWelcomeMessage", true); - unsafePasswords = (List) configFile.getList("settings.security.unsafePasswords", new ArrayList()); - countriesBlacklist = (List) configFile.getList("Protection.countriesBlacklist", new ArrayList()); + unsafePasswords = configFile.getStringList("settings.security.unsafePasswords"); + countriesBlacklist = configFile.getStringList("Protection.countriesBlacklist"); broadcastWelcomeMessage = configFile.getBoolean("settings.broadcastWelcomeMessage", false); forceRegKick = configFile.getBoolean("settings.registration.forceKickAfterRegister", false); forceRegLogin = configFile.getBoolean("settings.registration.forceLoginAfterRegister", false); @@ -433,7 +433,7 @@ public final class Settings extends YamlConfiguration { applyBlindEffect = configFile.getBoolean("settings.applyBlindEffect", false); emailBlacklist = configFile.getStringList("Email.emailBlacklisted"); emailWhitelist = configFile.getStringList("Email.emailWhitelisted"); - forceRegisterCommands = (List) configFile.getList("settings.forceRegisterCommands", new ArrayList()); + forceRegisterCommands = configFile.getStringList("settings.forceRegisterCommands"); forceRegisterCommandsAsConsole = (List) configFile.getList("settings.forceRegisterCommandsAsConsole", new ArrayList()); customAttributes = configFile.getBoolean("Hooks.customAttributes"); generateImage = configFile.getBoolean("Email.generateImage", true); From 5660ccc300e426374d1d2e5a48809aa3eccc77d1 Mon Sep 17 00:00:00 2001 From: Xephi59 Date: Mon, 13 Jul 2015 01:15:18 +0200 Subject: [PATCH 2/7] Fix FileCache ... Sleeping is stupid x) --- src/main/java/fr/xephi/authme/api/API.java | 4 +- .../xephi/authme/cache/backup/FileCache.java | 37 ++++++++++--------- .../authme/process/quit/AsyncronousQuit.java | 3 -- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/java/fr/xephi/authme/api/API.java b/src/main/java/fr/xephi/authme/api/API.java index 516157ad..b3fbaf2b 100644 --- a/src/main/java/fr/xephi/authme/api/API.java +++ b/src/main/java/fr/xephi/authme/api/API.java @@ -10,6 +10,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; import fr.xephi.authme.AuthMe; +import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.Utils; import fr.xephi.authme.cache.auth.PlayerAuth; import fr.xephi.authme.cache.auth.PlayerCache; @@ -104,7 +105,8 @@ public class API { try { player.getInventory().setContents(content); player.getInventory().setArmorContents(armor); - } catch (NullPointerException npe) { + } catch (Exception npe) { + ConsoleLogger.showError("Some error appear while trying to set inventory for " + player.getName()); } } diff --git a/src/main/java/fr/xephi/authme/cache/backup/FileCache.java b/src/main/java/fr/xephi/authme/cache/backup/FileCache.java index 94859806..6e59f47a 100644 --- a/src/main/java/fr/xephi/authme/cache/backup/FileCache.java +++ b/src/main/java/fr/xephi/authme/cache/backup/FileCache.java @@ -8,7 +8,6 @@ import java.util.List; import java.util.Scanner; import java.util.UUID; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; @@ -203,7 +202,7 @@ public class FileCache { path = player.getName(); } try { - File file = new File(plugin.getDataFolder() + File.separator + "cache" + File.separator + path + File.separator + ".playerdatas.cache"); + File file = new File(plugin.getDataFolder() + File.separator + "cache" + File.separator + path + File.separator + "playerdatas.cache"); String playername = player.getName().toLowerCase(); if (!file.exists()) { // OLD METHOD @@ -357,7 +356,7 @@ public class FileCache { for (int i = 0; i < inv.length; i++) { reader = new Scanner(new File(plugin.getDataFolder() + File.separator + "cache" + File.separator + path + File.separator + "inventory" + File.separator + i + ".cache")); ItemStack item = new ItemStack(Material.AIR); - ItemMeta meta = null; + ItemMeta meta = item.getItemMeta(); Attributes attributes = null; count = 1; boolean v = true; @@ -365,22 +364,24 @@ public class FileCache { String line = reader.nextLine(); switch (count) { case 1: - item.setType(Material.getMaterial(line)); + item = new ItemStack(Material.getMaterial(line)); if (item.getType() == Material.AIR) v = false; + meta = item.getItemMeta(); + count++; continue; case 2: - item.setDurability(Short.parseShort(line)); + item.setDurability((short) Integer.parseInt(line)); + count++; continue; case 3: item.setAmount(Integer.parseInt(line)); + count++; continue; - case 4: - meta = Bukkit.getItemFactory().getItemMeta(item.getType()); - break; default: break; } + meta = item.getItemMeta(); if (line.startsWith("name=")) { line = line.substring(5); meta.setDisplayName(line); @@ -399,6 +400,7 @@ public class FileCache { if (line.startsWith("enchant=")) { line = line.substring(8); item.addEnchantment(Enchantment.getByName(line.split(":")[0]), Integer.parseInt(line.split(":")[1])); + continue; } if (Settings.customAttributes) { if (line.startsWith("attribute=")) { @@ -429,7 +431,7 @@ public class FileCache { } if (reader != null) reader.close(); - if (attributes != null) + if (Settings.customAttributes && attributes != null) inv[i] = attributes.getStack(); else inv[i] = item; } @@ -444,22 +446,24 @@ public class FileCache { String line = reader.nextLine(); switch (count) { case 1: - item.setType(Material.getMaterial(line)); + item = new ItemStack(Material.getMaterial(line)); if (item.getType() == Material.AIR) v = false; + meta = item.getItemMeta(); + count++; continue; case 2: - item.setDurability(Short.parseShort(line)); + item.setDurability((short) Integer.parseInt(line)); + count++; continue; case 3: item.setAmount(Integer.parseInt(line)); + count++; continue; - case 4: - meta = Bukkit.getItemFactory().getItemMeta(item.getType()); - break; default: break; } + meta = item.getItemMeta(); if (line.startsWith("name=")) { line = line.substring(5); meta.setDisplayName(line); @@ -573,10 +577,7 @@ public class FileCache { file = new File("cache/" + player.getName().toLowerCase() + ".cache"); } - if (file.exists()) { - return true; - } - return false; + return file.exists(); } } diff --git a/src/main/java/fr/xephi/authme/process/quit/AsyncronousQuit.java b/src/main/java/fr/xephi/authme/process/quit/AsyncronousQuit.java index 6394cac8..953a3c71 100644 --- a/src/main/java/fr/xephi/authme/process/quit/AsyncronousQuit.java +++ b/src/main/java/fr/xephi/authme/process/quit/AsyncronousQuit.java @@ -79,9 +79,6 @@ public class AsyncronousQuit { if (limbo.getMessageTaskId() != null) limbo.getMessageTaskId().cancel(); LimboCache.getInstance().deleteLimboPlayer(name); - if (playerBackup.doesCacheExist(player)) { - playerBackup.removeCache(player); - } } if (Settings.isSessionsEnabled && !isKick) { BukkitTask task = plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { From 2c2b0f14a184c81f8a1c92807cb3247ceb3a1746 Mon Sep 17 00:00:00 2001 From: Xephi59 Date: Mon, 13 Jul 2015 01:17:38 +0200 Subject: [PATCH 3/7] RELEASE 5.0-BETA1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c51b50cc..e60ac147 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ fr.xephi authme - 5.0-SNAPSHOT + 5.0-beta1 AuthMeReloaded Authentication plugin for CraftBukkit/Spigot! From 5f77d50aae1eb6b1cf135ff9bb5f8ce5ce769eff Mon Sep 17 00:00:00 2001 From: Xephi59 Date: Mon, 13 Jul 2015 01:19:21 +0200 Subject: [PATCH 4/7] Return to SNAPSHOT for dev --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e60ac147..c51b50cc 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ fr.xephi authme - 5.0-beta1 + 5.0-SNAPSHOT AuthMeReloaded Authentication plugin for CraftBukkit/Spigot! From 869b89adace3b0b20d0d0e0c9bcf59f9a180b063 Mon Sep 17 00:00:00 2001 From: Xephi59 Date: Mon, 13 Jul 2015 06:07:48 +0200 Subject: [PATCH 5/7] Re-Add old API to prevent some plugin break --- src/main/java/fr/xephi/authme/AuthMe.java | 6 +- src/main/java/fr/xephi/authme/api/API.java | 75 ++++---- src/main/java/fr/xephi/authme/api/NewAPI.java | 174 ++++++++++++++++++ 3 files changed, 215 insertions(+), 40 deletions(-) create mode 100644 src/main/java/fr/xephi/authme/api/NewAPI.java diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index c86d9ecd..748a9448 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -35,6 +35,7 @@ import com.maxmind.geoip.LookupService; import com.onarandombox.MultiverseCore.MultiverseCore; import fr.xephi.authme.api.API; +import fr.xephi.authme.api.NewAPI; import fr.xephi.authme.cache.auth.PlayerAuth; import fr.xephi.authme.cache.auth.PlayerCache; import fr.xephi.authme.cache.backup.FileCache; @@ -92,7 +93,7 @@ public class AuthMe extends JavaPlugin { public double ChestShop = 0; public boolean BungeeCord = false; public Essentials ess; - public API api; + public NewAPI api; public Management management; public ConcurrentHashMap captcha = new ConcurrentHashMap(); public ConcurrentHashMap cap = new ConcurrentHashMap(); @@ -206,7 +207,8 @@ public class AuthMe extends JavaPlugin { dataManager = new DataManager(this); // Setup API - api = new API(this); + api = new NewAPI(this); + new API(this); // Setup Management management = new Management(this); diff --git a/src/main/java/fr/xephi/authme/api/API.java b/src/main/java/fr/xephi/authme/api/API.java index b3fbaf2b..b2a0cfe6 100644 --- a/src/main/java/fr/xephi/authme/api/API.java +++ b/src/main/java/fr/xephi/authme/api/API.java @@ -4,13 +4,11 @@ import java.security.NoSuchAlgorithmException; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.Server; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; import fr.xephi.authme.AuthMe; -import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.Utils; import fr.xephi.authme.cache.auth.PlayerAuth; import fr.xephi.authme.cache.auth.PlayerCache; @@ -21,38 +19,27 @@ import fr.xephi.authme.settings.Settings; public class API { public static final String newline = System.getProperty("line.separator"); - public static API singleton; - public AuthMe plugin; + public static AuthMe instance; - public API(AuthMe plugin) { - this.plugin = plugin; - } - - public API(Server serv) { - this.plugin = (AuthMe) serv.getPluginManager().getPlugin("AuthMe"); + public API(AuthMe instance) { + API.instance = instance; } /** * Hook into AuthMe * - * @return - * - * @return AuthMe plugin + * @return AuthMe instance */ - public static API getInstance() { - if (singleton != null) - return singleton; - Plugin p = Bukkit.getServer().getPluginManager().getPlugin("AuthMe"); - if (p == null || !(p instanceof AuthMe)) { + public static AuthMe hookAuthMe() { + Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("AuthMe"); + if (plugin == null || !(plugin instanceof AuthMe)) { return null; } - AuthMe authme = (AuthMe) p; - singleton = (new API(authme)); - return singleton; + return (AuthMe) plugin; } public AuthMe getPlugin() { - return plugin; + return instance; } /** @@ -60,17 +47,29 @@ public class API { * @param player * @return true if player is authenticate */ - public boolean isAuthenticated(Player player) { + public static boolean isAuthenticated(Player player) { return PlayerCache.getInstance().isAuthenticated(player.getName()); } + /** + * + * @param player + * @return true if player is a npc + */ + @Deprecated + public boolean isaNPC(Player player) { + if (instance.getCitizensCommunicator().isNPC(player)) + return true; + return CombatTagComunicator.isNPC(player); + } + /** * * @param player * @return true if player is a npc */ public boolean isNPC(Player player) { - if (plugin.getCitizensCommunicator().isNPC(player)) + if (instance.getCitizensCommunicator().isNPC(player)) return true; return CombatTagComunicator.isNPC(player); } @@ -80,11 +79,11 @@ public class API { * @param player * @return true if the player is unrestricted */ - public boolean isUnrestricted(Player player) { + public static boolean isUnrestricted(Player player) { return Utils.getInstance().isUnrestricted(player); } - public Location getLastLocation(Player player) { + public static Location getLastLocation(Player player) { try { PlayerAuth auth = PlayerCache.getInstance().getAuth(player.getName().toLowerCase()); @@ -100,13 +99,12 @@ public class API { } } - public void setPlayerInventory(Player player, ItemStack[] content, + public static void setPlayerInventory(Player player, ItemStack[] content, ItemStack[] armor) { try { player.getInventory().setContents(content); player.getInventory().setArmorContents(armor); - } catch (Exception npe) { - ConsoleLogger.showError("Some error appear while trying to set inventory for " + player.getName()); + } catch (NullPointerException npe) { } } @@ -115,9 +113,9 @@ public class API { * @param playerName * @return true if player is registered */ - public boolean isRegistered(String playerName) { + public static boolean isRegistered(String playerName) { String player = playerName.toLowerCase(); - return plugin.database.isAuthAvailable(player); + return instance.database.isAuthAvailable(player); } /** @@ -125,11 +123,12 @@ public class API { * playerName, String passwordToCheck * @return true if the password is correct , false else */ - public boolean checkPassword(String playerName, String passwordToCheck) { + public static boolean checkPassword(String playerName, + String passwordToCheck) { if (!isRegistered(playerName)) return false; String player = playerName.toLowerCase(); - PlayerAuth auth = plugin.database.getAuth(player); + PlayerAuth auth = instance.database.getAuth(player); try { return PasswordSecurity.comparePasswordWithHash(passwordToCheck, auth.getHash(), playerName); } catch (NoSuchAlgorithmException e) { @@ -144,15 +143,15 @@ public class API { * playerName, String password * @return true if the player is register correctly */ - public boolean registerPlayer(String playerName, String password) { + public static boolean registerPlayer(String playerName, String password) { try { String name = playerName.toLowerCase(); String hash = PasswordSecurity.getHash(Settings.getPasswordHash, password, name); if (isRegistered(name)) { return false; } - PlayerAuth auth = new PlayerAuth(name, hash, "192.168.0.1", 0, "your@email.com"); - if (!plugin.database.saveAuth(auth)) { + PlayerAuth auth = new PlayerAuth(name, hash, "198.18.0.1", 0, "your@email.com"); + if (!instance.database.saveAuth(auth)) { return false; } return true; @@ -167,8 +166,8 @@ public class API { * @param Player * player */ - public void forceLogin(Player player) { - plugin.management.performLogin(player, "dontneed", true); + public static void forceLogin(Player player) { + instance.management.performLogin(player, "dontneed", true); } } diff --git a/src/main/java/fr/xephi/authme/api/NewAPI.java b/src/main/java/fr/xephi/authme/api/NewAPI.java new file mode 100644 index 00000000..a632ea60 --- /dev/null +++ b/src/main/java/fr/xephi/authme/api/NewAPI.java @@ -0,0 +1,174 @@ +package fr.xephi.authme.api; + +import java.security.NoSuchAlgorithmException; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Server; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.Plugin; + +import fr.xephi.authme.AuthMe; +import fr.xephi.authme.ConsoleLogger; +import fr.xephi.authme.Utils; +import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.plugin.manager.CombatTagComunicator; +import fr.xephi.authme.security.PasswordSecurity; +import fr.xephi.authme.settings.Settings; + +public class NewAPI { + + public static final String newline = System.getProperty("line.separator"); + public static NewAPI singleton; + public AuthMe plugin; + + public NewAPI(AuthMe plugin) { + this.plugin = plugin; + } + + public NewAPI(Server serv) { + this.plugin = (AuthMe) serv.getPluginManager().getPlugin("AuthMe"); + } + + /** + * Hook into AuthMe + * + * @return + * + * @return AuthMe plugin + */ + public static NewAPI getInstance() { + if (singleton != null) + return singleton; + Plugin p = Bukkit.getServer().getPluginManager().getPlugin("AuthMe"); + if (p == null || !(p instanceof AuthMe)) { + return null; + } + AuthMe authme = (AuthMe) p; + singleton = (new NewAPI(authme)); + return singleton; + } + + public AuthMe getPlugin() { + return plugin; + } + + /** + * + * @param player + * @return true if player is authenticate + */ + public boolean isAuthenticated(Player player) { + return PlayerCache.getInstance().isAuthenticated(player.getName()); + } + + /** + * + * @param player + * @return true if player is a npc + */ + public boolean isNPC(Player player) { + if (plugin.getCitizensCommunicator().isNPC(player)) + return true; + return CombatTagComunicator.isNPC(player); + } + + /** + * + * @param player + * @return true if the player is unrestricted + */ + public boolean isUnrestricted(Player player) { + return Utils.getInstance().isUnrestricted(player); + } + + public Location getLastLocation(Player player) { + try { + PlayerAuth auth = PlayerCache.getInstance().getAuth(player.getName().toLowerCase()); + + if (auth != null) { + Location loc = new Location(Bukkit.getWorld(auth.getWorld()), auth.getQuitLocX(), auth.getQuitLocY(), auth.getQuitLocZ()); + return loc; + } else { + return null; + } + + } catch (NullPointerException ex) { + return null; + } + } + + public void setPlayerInventory(Player player, ItemStack[] content, + ItemStack[] armor) { + try { + player.getInventory().setContents(content); + player.getInventory().setArmorContents(armor); + } catch (Exception npe) { + ConsoleLogger.showError("Some error appear while trying to set inventory for " + player.getName()); + } + } + + /** + * + * @param playerName + * @return true if player is registered + */ + public boolean isRegistered(String playerName) { + String player = playerName.toLowerCase(); + return plugin.database.isAuthAvailable(player); + } + + /** + * @param String + * playerName, String passwordToCheck + * @return true if the password is correct , false else + */ + public boolean checkPassword(String playerName, String passwordToCheck) { + if (!isRegistered(playerName)) + return false; + String player = playerName.toLowerCase(); + PlayerAuth auth = plugin.database.getAuth(player); + try { + return PasswordSecurity.comparePasswordWithHash(passwordToCheck, auth.getHash(), playerName); + } catch (NoSuchAlgorithmException e) { + return false; + } + } + + /** + * Register a player + * + * @param String + * playerName, String password + * @return true if the player is register correctly + */ + public boolean registerPlayer(String playerName, String password) { + try { + String name = playerName.toLowerCase(); + String hash = PasswordSecurity.getHash(Settings.getPasswordHash, password, name); + if (isRegistered(name)) { + return false; + } + PlayerAuth auth = new PlayerAuth(name, hash, "192.168.0.1", 0, "your@email.com"); + if (!plugin.database.saveAuth(auth)) { + return false; + } + return true; + } catch (NoSuchAlgorithmException ex) { + return false; + } + } + + /** + * Force a player to login + * + * @param Player + * player + */ + public void forceLogin(Player player) { + plugin.management.performLogin(player, "dontneed", true); + } + +} From cd37b18ff6cb5f67ec755955839eb25a5630f6cb Mon Sep 17 00:00:00 2001 From: Xephi59 Date: Mon, 13 Jul 2015 06:08:27 +0200 Subject: [PATCH 6/7] beta2 for API --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c51b50cc..0f45d77b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ fr.xephi authme - 5.0-SNAPSHOT + 5.0-beta2 AuthMeReloaded Authentication plugin for CraftBukkit/Spigot! From e7264934a49177b02dc9af3a8050cd1b1cc0811b Mon Sep 17 00:00:00 2001 From: Xephi59 Date: Mon, 13 Jul 2015 06:09:12 +0200 Subject: [PATCH 7/7] Return to Snapshot, to avoid some confusion with dev builds --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0f45d77b..c51b50cc 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ fr.xephi authme - 5.0-beta2 + 5.0-SNAPSHOT AuthMeReloaded Authentication plugin for CraftBukkit/Spigot!