Merge origin/enum into local branch

This commit is contained in:
ljacqu
2015-11-25 22:18:21 +01:00
185 changed files with 10883 additions and 9491 deletions
@@ -1,105 +1,110 @@
package fr.xephi.authme.process;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.process.email.AsyncChangeEmail;
import fr.xephi.authme.process.join.AsyncronousJoin;
import fr.xephi.authme.process.login.AsyncronousLogin;
import fr.xephi.authme.process.logout.AsyncronousLogout;
import fr.xephi.authme.process.quit.AsyncronousQuit;
import fr.xephi.authme.process.register.AsyncRegister;
import fr.xephi.authme.process.unregister.AsyncronousUnregister;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitScheduler;
/**
*/
public class Management {
private final AuthMe plugin;
private final BukkitScheduler sched;
public Management(AuthMe plugin) {
this.plugin = plugin;
this.sched = this.plugin.getServer().getScheduler();
}
public void performLogin(final Player player, final String password, final boolean forceLogin) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncronousLogin(player, password, forceLogin, plugin, plugin.database).process();
}
});
}
public void performLogout(final Player player) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncronousLogout(player, plugin, plugin.database).process();
}
});
}
public void performRegister(final Player player, final String password, final String email) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncRegister(player, password, email, plugin, plugin.database).process();
}
});
}
public void performUnregister(final Player player, final String password, final boolean force) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncronousUnregister(player, password, force, plugin).process();
}
});
}
public void performJoin(final Player player) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncronousJoin(player, plugin, plugin.database).process();
}
});
}
public void performQuit(final Player player, final boolean isKick) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncronousQuit(player, plugin, plugin.database, isKick).process();
}
});
}
public void performAddEmail(final Player player, final String newEmail, final String newEmailVerify) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncChangeEmail(player, plugin, null, newEmail, newEmailVerify).process();
}
});
}
public void performChangeEmail(final Player player, final String oldEmail, final String newEmail) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncChangeEmail(player, plugin, oldEmail, newEmail).process();
}
});
}
}
package fr.xephi.authme.process;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.process.email.AsyncChangeEmail;
import fr.xephi.authme.process.join.AsynchronousJoin;
import fr.xephi.authme.process.login.AsynchronousLogin;
import fr.xephi.authme.process.logout.AsynchronousLogout;
import fr.xephi.authme.process.quit.AsynchronousQuit;
import fr.xephi.authme.process.register.AsyncRegister;
import fr.xephi.authme.process.unregister.AsyncronousUnregister;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitScheduler;
/**
*/
public class Management {
private final AuthMe plugin;
private final BukkitScheduler sched;
/**
* Constructor for Management.
*
* @param plugin AuthMe
*/
public Management(AuthMe plugin) {
this.plugin = plugin;
this.sched = this.plugin.getServer().getScheduler();
}
public void performLogin(final Player player, final String password, final boolean forceLogin) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsynchronousLogin(player, password, forceLogin, plugin, plugin.database).process();
}
});
}
public void performLogout(final Player player) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsynchronousLogout(player, plugin, plugin.database).process();
}
});
}
public void performRegister(final Player player, final String password, final String email) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncRegister(player, password, email, plugin, plugin.database).process();
}
});
}
public void performUnregister(final Player player, final String password, final boolean force) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsynchronousUnregister(player, password, force, plugin).process();
}
});
}
public void performJoin(final Player player) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsynchronousJoin(player, plugin, plugin.database).process();
}
});
}
public void performQuit(final Player player, final boolean isKick) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsynchronousQuit(player, plugin, plugin.database, isKick).process();
}
});
}
public void performAddEmail(final Player player, final String newEmail, final String newEmailVerify) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncChangeEmail(player, plugin, null, newEmail, newEmailVerify).process();
}
});
}
public void performChangeEmail(final Player player, final String oldEmail, final String newEmail) {
sched.runTaskAsynchronously(plugin, new Runnable() {
@Override
public void run() {
new AsyncChangeEmail(player, plugin, oldEmail, newEmail).process();
}
});
}
}
@@ -1,15 +1,15 @@
package fr.xephi.authme.process.email;
import java.util.Arrays;
import org.bukkit.entity.Player;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.auth.PlayerAuth;
import fr.xephi.authme.cache.auth.PlayerCache;
import fr.xephi.authme.settings.MessageKey;
import fr.xephi.authme.settings.Messages;
import fr.xephi.authme.settings.Settings;
import org.bukkit.entity.Player;
import java.util.Arrays;
/**
*/
@@ -22,14 +22,6 @@ public class AsyncChangeEmail {
private final String newEmailVerify;
private final Messages m;
/**
* Constructor for AsyncChangeEmail.
* @param player Player
* @param plugin AuthMe
* @param oldEmail String
* @param newEmail String
* @param newEmailVerify String
*/
public AsyncChangeEmail(Player player, AuthMe plugin, String oldEmail, String newEmail, String newEmailVerify) {
this.player = player;
this.plugin = plugin;
@@ -39,13 +31,6 @@ public class AsyncChangeEmail {
this.m = Messages.getInstance();
}
/**
* Constructor for AsyncChangeEmail.
* @param player Player
* @param plugin AuthMe
* @param oldEmail String
* @param newEmail String
*/
public AsyncChangeEmail(Player player, AuthMe plugin, String oldEmail, String newEmail) {
this(player, plugin, oldEmail, newEmail, newEmail);
}
@@ -55,7 +40,9 @@ public class AsyncChangeEmail {
String playerName = player.getName().toLowerCase();
if (Settings.getmaxRegPerEmail > 0) {
if (!plugin.getPermissionsManager().hasPermission(player, "authme.allow2accounts") && plugin.database.getAllAuthsByEmail(newEmail).size() >= Settings.getmaxRegPerEmail) {
if (!plugin.getPermissionsManager().hasPermission(player, "authme.allow2accounts")
&& plugin.database.getAllAuthsByEmail(newEmail).size() >= Settings.getmaxRegPerEmail) {
// TODO ljacqu 20151124: max_reg is not in enum
m.send(player, "max_reg");
return;
}
@@ -63,53 +50,54 @@ public class AsyncChangeEmail {
if (PlayerCache.getInstance().isAuthenticated(playerName)) {
if (!newEmail.equals(newEmailVerify)) {
m.send(player, "email_confirm");
m.send(player, MessageKey.CONFIRM_EMAIL_MESSAGE);
return;
}
PlayerAuth auth = PlayerCache.getInstance().getAuth(playerName);
if (oldEmail != null) {
if (auth.getEmail() == null || auth.getEmail().equals("your@email.com") || auth.getEmail().isEmpty()) {
m.send(player, "usage_email_add");
m.send(player, MessageKey.USAGE_ADD_EMAIL);
return;
}
if (!oldEmail.equals(auth.getEmail())) {
m.send(player, "old_email_invalid");
m.send(player, MessageKey.INVALID_OLD_EMAIL);
return;
}
}
if (!Settings.isEmailCorrect(newEmail)) {
m.send(player, "new_email_invalid");
m.send(player, MessageKey.INVALID_NEW_EMAIL);
return;
}
String old = auth.getEmail();
auth.setEmail(newEmail);
if (!plugin.database.updateEmail(auth)) {
m.send(player, "error");
m.send(player, MessageKey.ERROR);
auth.setEmail(old);
return;
}
PlayerCache.getInstance().updatePlayer(auth);
if (oldEmail == null) {
m.send(player, "email_added");
m.send(player, MessageKey.EMAIL_ADDED_SUCCESS);
player.sendMessage(auth.getEmail());
return;
}
m.send(player, "email_changed");
m.send(player, MessageKey.EMAIL_CHANGED_SUCCESS);
// TODO ljacqu 20151124: Did I really miss "email_defined" or is it not present in the 'en' messages?
player.sendMessage(Arrays.toString(m.send("email_defined")) + auth.getEmail());
} else {
if (plugin.database.isAuthAvailable(playerName)) {
m.send(player, "login_msg");
m.send(player, MessageKey.LOGIN_MESSAGE);
} else {
if (Settings.emailRegistration)
m.send(player, "reg_email_msg");
m.send(player, MessageKey.REGISTER_EMAIL_MESSAGE);
else
m.send(player, "reg_msg");
m.send(player, MessageKey.REGISTER_MESSAGE);
}
}
} catch (Exception e) {
ConsoleLogger.showError(e.getMessage());
ConsoleLogger.writeStackTrace(e);
m.send(player, "error");
m.send(player, MessageKey.ERROR);
}
}
}
@@ -1,15 +1,5 @@
package fr.xephi.authme.process.join;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.auth.PlayerAuth;
@@ -20,6 +10,7 @@ import fr.xephi.authme.events.FirstSpawnTeleportEvent;
import fr.xephi.authme.events.ProtectInventoryEvent;
import fr.xephi.authme.events.SpawnTeleportEvent;
import fr.xephi.authme.listener.AuthMePlayerListener;
import fr.xephi.authme.settings.MessageKey;
import fr.xephi.authme.settings.Messages;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.Spawn;
@@ -27,10 +18,19 @@ import fr.xephi.authme.task.MessageTask;
import fr.xephi.authme.task.TimeoutTask;
import fr.xephi.authme.util.Utils;
import fr.xephi.authme.util.Utils.GroupType;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
/**
*/
public class AsyncronousJoin {
public class AsynchronousJoin {
private final AuthMe plugin;
private final Player player;
@@ -39,13 +39,7 @@ public class AsyncronousJoin {
private final Messages m;
private final BukkitScheduler sched;
/**
* Constructor for AsyncronousJoin.
* @param player Player
* @param plugin AuthMe
* @param database DataSource
*/
public AsyncronousJoin(Player player, AuthMe plugin, DataSource database) {
public AsynchronousJoin(Player player, AuthMe plugin, DataSource database) {
this.player = player;
this.plugin = plugin;
this.sched = plugin.getServer().getScheduler();
@@ -68,7 +62,7 @@ public class AsyncronousJoin {
}
if (!plugin.canConnect()) {
final GameMode gM = AuthMePlayerListener.gameMode.get(name);
final GameMode gM = AuthMePlayerListener.gameMode.get(name);
sched.scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
@@ -239,31 +233,33 @@ public class AsyncronousJoin {
database.setUnlogged(name);
PlayerCache.getInstance().removePlayer(name);
if (auth != null && auth.getIp().equals(ip)) {
m.send(player, "valid_session");
m.send(player, MessageKey.SESSION_RECONNECTION);
plugin.management.performLogin(player, "dontneed", true);
return;
} else if (Settings.sessionExpireOnIpChange) {
m.send(player, "invalid_session");
m.send(player, MessageKey.SESSION_EXPIRED);
}
}
String[] msg = isAuthAvailable ? m.send("login_msg") :
m.send("reg_" + (Settings.emailRegistration? "email_" : "") + "msg");
String[] msg;
if (isAuthAvailable) {
msg = m.retrieve(MessageKey.LOGIN_MESSAGE);
} else {
msg = Settings.emailRegistration
? m.retrieve(MessageKey.REGISTER_EMAIL_MESSAGE)
: m.retrieve(MessageKey.REGISTER_MESSAGE);
}
BukkitTask msgTask = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, msg, msgInterval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgTask);
}
/**
* Method needFirstSpawn.
* @return boolean */
private boolean needFirstSpawn() {
if (player.hasPlayedBefore())
return false;
Location firstspawn = Spawn.getInstance().getFirstSpawn();
if (firstspawn == null || firstspawn.getWorld() == null)
Location firstSpawn = Spawn.getInstance().getFirstSpawn();
if (firstSpawn == null || firstSpawn.getWorld() == null)
return false;
FirstSpawnTeleportEvent tpEvent = new FirstSpawnTeleportEvent(player, player.getLocation(), firstspawn);
FirstSpawnTeleportEvent tpEvent = new FirstSpawnTeleportEvent(player, player.getLocation(), firstSpawn);
plugin.getServer().getPluginManager().callEvent(tpEvent);
if (!tpEvent.isCancelled()) {
if (player.isOnline() && tpEvent.getTo() != null && tpEvent.getTo().getWorld() != null) {
@@ -281,11 +277,6 @@ public class AsyncronousJoin {
return true;
}
/**
* Method placePlayerSafely.
* @param player Player
* @param spawnLoc Location
*/
private void placePlayerSafely(final Player player, final Location spawnLoc) {
if (spawnLoc == null)
return;
@@ -304,8 +295,8 @@ public class AsyncronousJoin {
Material cur = player.getLocation().getBlock().getType();
Material top = player.getLocation().add(0D, 1D, 0D).getBlock().getType();
if (cur == Material.PORTAL || cur == Material.ENDER_PORTAL
|| top == Material.PORTAL || top == Material.ENDER_PORTAL) {
m.send(player, "unsafe_spawn");
|| top == Material.PORTAL || top == Material.ENDER_PORTAL) {
m.send(player, MessageKey.UNSAFE_QUIT_LOCATION);
player.teleport(spawnLoc);
}
}
@@ -1,12 +1,5 @@
package fr.xephi.authme.process.login;
import java.util.Date;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.auth.PlayerAuth;
@@ -21,31 +14,38 @@ import fr.xephi.authme.settings.Messages;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.task.MessageTask;
import fr.xephi.authme.util.Utils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
import java.util.Date;
import java.util.List;
/**
*/
public class AsyncronousLogin {
public class AsynchronousLogin {
protected Player player;
protected String name;
protected String realName;
protected String password;
protected boolean forceLogin;
private AuthMe plugin;
private DataSource database;
private static RandomString rdm = new RandomString(Settings.captchaLength);
private Messages m = Messages.getInstance();
private static final RandomString rdm = new RandomString(Settings.captchaLength);
protected final Player player;
protected final String name;
protected final String realName;
protected final String password;
protected final boolean forceLogin;
private final AuthMe plugin;
private final DataSource database;
private final Messages m = Messages.getInstance();
/**
* Constructor for AsyncronousLogin.
* @param player Player
* @param password String
* Constructor for AsynchronousLogin.
*
* @param player Player
* @param password String
* @param forceLogin boolean
* @param plugin AuthMe
* @param data DataSource
* @param plugin AuthMe
* @param data DataSource
*/
public AsyncronousLogin(Player player, String password, boolean forceLogin,
AuthMe plugin, DataSource data) {
public AsynchronousLogin(Player player, String password, boolean forceLogin,
AuthMe plugin, DataSource data) {
this.player = player;
this.password = password;
name = player.getName().toLowerCase();
@@ -57,16 +57,18 @@ public class AsyncronousLogin {
/**
* Method getIP.
* @return String */
*
* @return String
*/
protected String getIP() {
return plugin.getIP(player);
}
/**
* Method needsCaptcha.
* @return boolean */
*
* @return boolean
*/
protected boolean needsCaptcha() {
if (Settings.useCaptcha) {
if (!plugin.captcha.containsKey(name)) {
@@ -93,8 +95,9 @@ public class AsyncronousLogin {
/**
* Checks the precondition for authentication (like user known) and returns
* the playerAuth-State
* @return PlayerAuth */
*
* @return PlayerAuth
*/
protected PlayerAuth preAuth() {
if (PlayerCache.getInstance().isAuthenticated(name)) {
m.send(player, "logged_in");
@@ -221,8 +224,9 @@ public class AsyncronousLogin {
/**
* Method displayOtherAccounts.
*
* @param auth PlayerAuth
* @param p Player
* @param p Player
*/
public void displayOtherAccounts(PlayerAuth auth, Player p) {
if (!Settings.displayOtherAccounts) {
@@ -1,11 +1,5 @@
package fr.xephi.authme.process.login;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.potion.PotionEffectType;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.cache.auth.PlayerAuth;
import fr.xephi.authme.cache.backup.JsonCache;
@@ -20,28 +14,34 @@ import fr.xephi.authme.listener.AuthMePlayerListener;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.util.Utils;
import fr.xephi.authme.util.Utils.GroupType;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.potion.PotionEffectType;
/**
*/
public class ProcessSyncronousPlayerLogin implements Runnable {
private LimboPlayer limbo;
private Player player;
private String name;
private PlayerAuth auth;
private AuthMe plugin;
private DataSource database;
private PluginManager pm;
private JsonCache playerCache;
private final LimboPlayer limbo;
private final Player player;
private final String name;
private final PlayerAuth auth;
private final AuthMe plugin;
private final DataSource database;
private final PluginManager pm;
private final JsonCache playerCache;
/**
* Constructor for ProcessSyncronousPlayerLogin.
*
* @param player Player
* @param plugin AuthMe
* @param data DataSource
* @param data DataSource
*/
public ProcessSyncronousPlayerLogin(Player player, AuthMe plugin,
DataSource data) {
DataSource data) {
this.plugin = plugin;
this.database = data;
this.pm = plugin.getServer().getPluginManager();
@@ -54,8 +54,9 @@ public class ProcessSyncronousPlayerLogin implements Runnable {
/**
* Method getLimbo.
* @return LimboPlayer */
*
* @return LimboPlayer
*/
public LimboPlayer getLimbo() {
return limbo;
}
@@ -65,7 +66,7 @@ public class ProcessSyncronousPlayerLogin implements Runnable {
}
protected void restoreFlyghtState() {
if(Settings.isForceSurvivalModeEnabled) {
if (Settings.isForceSurvivalModeEnabled) {
player.setAllowFlight(false);
player.setFlying(false);
return;
@@ -97,18 +98,15 @@ public class ProcessSyncronousPlayerLogin implements Runnable {
protected void restoreInventory() {
RestoreInventoryEvent event = new RestoreInventoryEvent(player);
Bukkit.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
pm.callEvent(event);
if (!event.isCancelled() && plugin.inventoryProtector != null) {
plugin.inventoryProtector.sendInventoryPacket(player);
}
}
protected void forceCommands() {
for (String command : Settings.forceCommands) {
try {
player.performCommand(command.replace("%p", player.getName()));
} catch (Exception ignored) {
}
player.performCommand(command.replace("%p", player.getName()));
}
for (String command : Settings.forceCommandsAsConsole) {
Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), command.replace("%p", player.getName()));
@@ -117,6 +115,7 @@ public class ProcessSyncronousPlayerLogin implements Runnable {
/**
* Method run.
*
* @see java.lang.Runnable#run()
*/
@Override
@@ -135,8 +134,7 @@ public class ProcessSyncronousPlayerLogin implements Runnable {
} else {
teleportBackFromSpawn();
}
} else
if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) {
} else if (Settings.isForceSpawnLocOnJoinEnabled && Settings.getForcedWorlds.contains(player.getWorld().getName())) {
teleportToSpawn();
} else if (Settings.isSaveQuitLocationEnabled && auth.getQuitLocY() != 0) {
packQuitLocation();
@@ -150,10 +148,10 @@ public class ProcessSyncronousPlayerLogin implements Runnable {
} else {
player.setGameMode(limbo.getGameMode());
}
restoreFlyghtState();
if (Settings.protectInventoryBeforeLogInEnabled && plugin.inventoryProtector != null) {
if (Settings.protectInventoryBeforeLogInEnabled) {
restoreInventory();
}
@@ -167,7 +165,7 @@ public class ProcessSyncronousPlayerLogin implements Runnable {
// We can now display the join message (if delayed)
String jm = AuthMePlayerListener.joinMessage.get(name);
if (jm != null) {
if(!jm.isEmpty()) {
if (!jm.isEmpty()) {
for (Player p : Utils.getOnlinePlayers()) {
if (p.isOnline())
p.sendMessage(jm);
@@ -193,11 +191,11 @@ public class ProcessSyncronousPlayerLogin implements Runnable {
if (Settings.useWelcomeMessage)
if (Settings.broadcastWelcomeMessage) {
for (String s : Settings.welcomeMsg) {
Bukkit.getServer().broadcastMessage(plugin.replaceAllInfos(s, player));
Bukkit.getServer().broadcastMessage(plugin.replaceAllInfo(s, player));
}
} else {
for (String s : Settings.welcomeMsg) {
player.sendMessage(plugin.replaceAllInfos(s, player));
player.sendMessage(plugin.replaceAllInfo(s, player));
}
}
@@ -1,8 +1,5 @@
package fr.xephi.authme.process.logout;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitScheduler;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.cache.auth.PlayerAuth;
import fr.xephi.authme.cache.auth.PlayerCache;
@@ -11,26 +8,29 @@ import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.settings.Messages;
import fr.xephi.authme.util.Utils;
import fr.xephi.authme.util.Utils.GroupType;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitScheduler;
/**
*/
public class AsyncronousLogout {
public class AsynchronousLogout {
protected Player player;
protected String name;
protected AuthMe plugin;
protected DataSource database;
protected final Player player;
protected final String name;
protected final AuthMe plugin;
protected final DataSource database;
protected boolean canLogout = true;
private Messages m = Messages.getInstance();
private final Messages m = Messages.getInstance();
/**
* Constructor for AsyncronousLogout.
* @param player Player
* @param plugin AuthMe
* Constructor for AsynchronousLogout.
*
* @param player Player
* @param plugin AuthMe
* @param database DataSource
*/
public AsyncronousLogout(Player player, AuthMe plugin,
DataSource database) {
public AsynchronousLogout(Player player, AuthMe plugin,
DataSource database) {
this.player = player;
this.plugin = plugin;
this.database = database;
@@ -46,10 +46,11 @@ public class AsyncronousLogout {
public void process() {
preLogout();
if (!canLogout)
if (!canLogout) {
return;
}
final Player p = player;
BukkitScheduler sched = p.getServer().getScheduler();
BukkitScheduler scheduler = p.getServer().getScheduler();
PlayerAuth auth = PlayerCache.getInstance().getAuth(name);
database.updateSession(auth);
auth.setQuitLocX(p.getLocation().getX());
@@ -60,17 +61,17 @@ public class AsyncronousLogout {
PlayerCache.getInstance().removePlayer(name);
database.setUnlogged(name);
sched.scheduleSyncDelayedTask(plugin, new Runnable() {
scheduler.scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
Utils.teleportToSpawn(p);
}
});
if (LimboCache.getInstance().hasLimboPlayer(name))
if (LimboCache.getInstance().hasLimboPlayer(name)) {
LimboCache.getInstance().deleteLimboPlayer(name);
}
LimboCache.getInstance().addLimboPlayer(player);
Utils.setGroup(player, GroupType.NOTLOGGEDIN);
sched.scheduleSyncDelayedTask(plugin, new ProcessSyncronousPlayerLogout(p, plugin));
scheduler.scheduleSyncDelayedTask(plugin, new ProcessSyncronousPlayerLogout(p, plugin));
}
}
@@ -1,76 +1,81 @@
package fr.xephi.authme.process.logout;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.limbo.LimboCache;
import fr.xephi.authme.events.LogoutEvent;
import fr.xephi.authme.settings.Messages;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.task.MessageTask;
import fr.xephi.authme.task.TimeoutTask;
/**
*/
public class ProcessSyncronousPlayerLogout implements Runnable {
protected Player player;
protected AuthMe plugin;
protected String name;
private Messages m = Messages.getInstance();
/**
* Constructor for ProcessSyncronousPlayerLogout.
* @param player Player
* @param plugin AuthMe
*/
public ProcessSyncronousPlayerLogout(Player player, AuthMe plugin) {
this.player = player;
this.plugin = plugin;
this.name = player.getName().toLowerCase();
}
/**
* Method run.
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
if (plugin.sessions.containsKey(name))
plugin.sessions.get(name).cancel();
plugin.sessions.remove(name);
int delay = Settings.getRegistrationTimeout * 20;
int interval = Settings.getWarnMessageInterval;
BukkitScheduler sched = player.getServer().getScheduler();
if (delay != 0) {
BukkitTask id = sched.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name, player), delay);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id);
}
BukkitTask msgT = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("login_msg"), interval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT);
if (player.isInsideVehicle() && player.getVehicle() != null)
player.getVehicle().eject();
if (Settings.applyBlindEffect)
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, Settings.getRegistrationTimeout * 20, 2));
player.setOp(false);
if (!Settings.isMovementAllowed) {
player.setAllowFlight(true);
player.setFlying(true);
if (!Settings.isMovementAllowed && Settings.isRemoveSpeedEnabled) {
player.setFlySpeed(0.0f);
player.setWalkSpeed(0.0f);
}
}
// Player is now logout... Time to fire event !
Bukkit.getServer().getPluginManager().callEvent(new LogoutEvent(player));
m.send(player, "logout");
ConsoleLogger.info(player.getName() + " logged out");
}
}
package fr.xephi.authme.process.logout;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.limbo.LimboCache;
import fr.xephi.authme.events.LogoutEvent;
import fr.xephi.authme.settings.Messages;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.task.MessageTask;
import fr.xephi.authme.task.TimeoutTask;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
/**
*/
public class ProcessSyncronousPlayerLogout implements Runnable {
protected final Player player;
protected final AuthMe plugin;
protected final String name;
private final Messages m = Messages.getInstance();
/**
* Constructor for ProcessSyncronousPlayerLogout.
*
* @param player Player
* @param plugin AuthMe
*/
public ProcessSyncronousPlayerLogout(Player player, AuthMe plugin) {
this.player = player;
this.plugin = plugin;
this.name = player.getName().toLowerCase();
}
/**
* Method run.
*
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
if (plugin.sessions.containsKey(name)) {
plugin.sessions.get(name).cancel();
plugin.sessions.remove(name);
}
if (Settings.protectInventoryBeforeLogInEnabled) {
plugin.inventoryProtector.sendBlankInventoryPacket(player);
}
int timeOut = Settings.getRegistrationTimeout * 20;
int interval = Settings.getWarnMessageInterval;
BukkitScheduler sched = player.getServer().getScheduler();
if (timeOut != 0) {
BukkitTask id = sched.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name, player), timeOut);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id);
}
BukkitTask msgT = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("login_msg"), interval));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(msgT);
if (player.isInsideVehicle() && player.getVehicle() != null)
player.getVehicle().eject();
if (Settings.applyBlindEffect)
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, Settings.getRegistrationTimeout * 20, 2));
player.setOp(false);
if (!Settings.isMovementAllowed) {
player.setAllowFlight(true);
player.setFlying(true);
if (!Settings.isMovementAllowed && Settings.isRemoveSpeedEnabled) {
player.setFlySpeed(0.0f);
player.setWalkSpeed(0.0f);
}
}
// Player is now logout... Time to fire event !
Bukkit.getServer().getPluginManager().callEvent(new LogoutEvent(player));
m.send(player, "logout");
ConsoleLogger.info(player.getName() + " logged out");
}
}
@@ -1,10 +1,5 @@
package fr.xephi.authme.process.quit;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.cache.auth.PlayerAuth;
import fr.xephi.authme.cache.auth.PlayerCache;
@@ -14,29 +9,34 @@ import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.listener.AuthMePlayerListener;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.util.Utils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
/**
*/
public class AsyncronousQuit {
public class AsynchronousQuit {
protected AuthMe plugin;
protected DataSource database;
protected Player player;
private String name;
protected final AuthMe plugin;
protected final DataSource database;
protected final Player player;
private final String name;
private boolean isOp = false;
private boolean isFlying = false;
private boolean needToChange = false;
private boolean isKick = false;
/**
* Constructor for AsyncronousQuit.
* @param p Player
* @param plugin AuthMe
* Constructor for AsynchronousQuit.
*
* @param p Player
* @param plugin AuthMe
* @param database DataSource
* @param isKick boolean
* @param isKick boolean
*/
public AsyncronousQuit(Player p, AuthMe plugin, DataSource database,
boolean isKick) {
public AsynchronousQuit(Player p, AuthMe plugin, DataSource database,
boolean isKick) {
this.player = p;
this.plugin = plugin;
this.database = database;
@@ -1,32 +1,32 @@
package fr.xephi.authme.process.quit;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.settings.Settings;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
/**
*/
public class ProcessSyncronousPlayerQuit implements Runnable {
protected AuthMe plugin;
protected Player player;
protected boolean isOp;
protected boolean isFlying;
protected boolean needToChange;
protected final AuthMe plugin;
protected final Player player;
protected final boolean isOp;
protected final boolean isFlying;
protected final boolean needToChange;
/**
* Constructor for ProcessSyncronousPlayerQuit.
* @param plugin AuthMe
* @param player Player
* @param isOp boolean
* @param isFlying boolean
*
* @param plugin AuthMe
* @param player Player
* @param isOp boolean
* @param isFlying boolean
* @param needToChange boolean
*/
public ProcessSyncronousPlayerQuit(AuthMe plugin, Player player
, boolean isOp, boolean isFlying
, boolean needToChange) {
, boolean isOp, boolean isFlying
, boolean needToChange) {
this.plugin = plugin;
this.player = player;
this.isOp = isOp;
@@ -36,6 +36,7 @@ public class ProcessSyncronousPlayerQuit implements Runnable {
/**
* Method run.
*
* @see java.lang.Runnable#run()
*/
@Override
@@ -50,7 +51,7 @@ public class ProcessSyncronousPlayerQuit implements Runnable {
}
try {
player.getVehicle().eject();
} catch (Exception e) {
} catch (Exception ignored) {
}
}
}
@@ -1,10 +1,5 @@
package fr.xephi.authme.process.register;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
import org.bukkit.entity.Player;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.auth.PlayerAuth;
@@ -13,26 +8,31 @@ import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.security.PasswordSecurity;
import fr.xephi.authme.settings.Messages;
import fr.xephi.authme.settings.Settings;
import org.bukkit.entity.Player;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
/**
*/
public class AsyncRegister {
protected Player player;
protected String name;
protected String password;
protected final Player player;
protected final String name;
protected final String password;
protected String email = "";
private AuthMe plugin;
private DataSource database;
private Messages m = Messages.getInstance();
private final AuthMe plugin;
private final DataSource database;
private final Messages m = Messages.getInstance();
/**
* Constructor for AsyncRegister.
* @param player Player
*
* @param player Player
* @param password String
* @param email String
* @param plugin AuthMe
* @param data DataSource
* @param email String
* @param plugin AuthMe
* @param data DataSource
*/
public AsyncRegister(Player player, String password, String email,
AuthMe plugin, DataSource data) {
@@ -46,29 +46,30 @@ public class AsyncRegister {
/**
* Method getIp.
* @return String */
*
* @return String
*/
protected String getIp() {
return plugin.getIP(player);
}
/**
* Method preRegisterCheck.
* @return boolean * @throws Exception */
*
* @return boolean * @throws Exception
*/
protected boolean preRegisterCheck() throws Exception {
String lowpass = password.toLowerCase();
String passLow = password.toLowerCase();
if (PlayerCache.getInstance().isAuthenticated(name)) {
m.send(player, "logged_in");
return false;
} else if (!Settings.isRegistrationEnabled) {
m.send(player, "reg_disabled");
return false;
} else if (lowpass.contains("delete") || lowpass.contains("where") || lowpass.contains("insert") || lowpass.contains("modify") || lowpass.contains("from") || lowpass.contains("select") || lowpass.contains(";") || lowpass.contains("null") || !lowpass.matches(Settings.getPassRegex)) {
} else if (passLow.contains("delete") || passLow.contains("where") || passLow.contains("insert") || passLow.contains("modify") || passLow.contains("from") || passLow.contains("select") || passLow.contains(";") || passLow.contains("null") || !passLow.matches(Settings.getPassRegex)) {
m.send(player, "password_error");
return false;
} else if (lowpass.equalsIgnoreCase(player.getName())) {
} else if (passLow.equalsIgnoreCase(player.getName())) {
m.send(player, "password_error_nick");
return false;
} else if (password.length() < Settings.getPasswordMinLen || password.length() > Settings.passwordMaxLength) {
@@ -113,8 +114,9 @@ public class AsyncRegister {
/**
* Method emailRegister.
* @throws Exception */
*
* @throws Exception
*/
protected void emailRegister() throws Exception {
if (Settings.getmaxRegPerEmail > 0) {
if (!plugin.getPermissionsManager().hasPermission(player, "authme.allow2accounts") && database.getAllAuthsByEmail(email).size() >= Settings.getmaxRegPerEmail) {
@@ -123,8 +125,8 @@ public class AsyncRegister {
}
}
PlayerAuth auth;
final String hashnew = PasswordSecurity.getHash(Settings.getPasswordHash, password, name);
auth = new PlayerAuth(name, hashnew, getIp(), 0, (int) player.getLocation().getX(), (int) player.getLocation().getY(), (int) player.getLocation().getZ(), player.getLocation().getWorld().getName(), email, player.getName());
final String hashNew = PasswordSecurity.getHash(Settings.getPasswordHash, password, name);
auth = new PlayerAuth(name, hashNew, getIp(), 0, (int) player.getLocation().getX(), (int) player.getLocation().getY(), (int) player.getLocation().getZ(), player.getLocation().getWorld().getName(), email, player.getName());
if (PasswordSecurity.userSalt.containsKey(name)) {
auth.setSalt(PasswordSecurity.userSalt.get(name));
}
@@ -132,8 +134,8 @@ public class AsyncRegister {
database.updateEmail(auth);
database.updateSession(auth);
plugin.mail.main(auth, password);
ProcessSyncEmailRegister syncronous = new ProcessSyncEmailRegister(player, plugin);
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, syncronous);
ProcessSyncEmailRegister sync = new ProcessSyncEmailRegister(player, plugin);
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, sync);
}
@@ -161,7 +163,7 @@ public class AsyncRegister {
database.setLogged(name);
}
plugin.otherAccounts.addPlayer(player.getUniqueId());
ProcessSyncronousPasswordRegister syncronous = new ProcessSyncronousPasswordRegister(player, plugin);
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, syncronous);
ProcessSyncronousPasswordRegister sync = new ProcessSyncronousPasswordRegister(player, plugin);
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, sync);
}
}
@@ -1,9 +1,5 @@
package fr.xephi.authme.process.register;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.limbo.LimboCache;
@@ -13,18 +9,22 @@ import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.task.MessageTask;
import fr.xephi.authme.task.TimeoutTask;
import fr.xephi.authme.util.Utils;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
/**
*/
public class ProcessSyncEmailRegister implements Runnable {
protected Player player;
protected String name;
private AuthMe plugin;
private Messages m = Messages.getInstance();
protected final Player player;
protected final String name;
private final AuthMe plugin;
private final Messages m = Messages.getInstance();
/**
* Constructor for ProcessSyncEmailRegister.
*
* @param player Player
* @param plugin AuthMe
*/
@@ -36,6 +36,7 @@ public class ProcessSyncEmailRegister implements Runnable {
/**
* Method run.
*
* @see java.lang.Runnable#run()
*/
@Override
@@ -54,7 +55,7 @@ public class ProcessSyncEmailRegister implements Runnable {
BukkitTask id = sched.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name, player), time);
limbo.setTimeoutTaskId(id);
}
if (limbo != null){
if (limbo != null) {
limbo.getMessageTaskId().cancel();
BukkitTask nwMsg = sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("login_msg"), msgInterval));
limbo.setMessageTaskId(nwMsg);
@@ -1,12 +1,5 @@
package fr.xephi.authme.process.register;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.limbo.LimboCache;
@@ -18,18 +11,25 @@ import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.task.MessageTask;
import fr.xephi.authme.task.TimeoutTask;
import fr.xephi.authme.util.Utils;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
/**
*/
public class ProcessSyncronousPasswordRegister implements Runnable {
protected Player player;
protected String name;
private AuthMe plugin;
private Messages m = Messages.getInstance();
protected final Player player;
protected final String name;
private final AuthMe plugin;
private final Messages m = Messages.getInstance();
/**
* Constructor for ProcessSyncronousPasswordRegister.
*
* @param player Player
* @param plugin AuthMe
*/
@@ -53,6 +53,7 @@ public class ProcessSyncronousPasswordRegister implements Runnable {
/**
* Method forceLogin.
*
* @param player Player
*/
protected void forceLogin(Player player) {
@@ -76,6 +77,7 @@ public class ProcessSyncronousPasswordRegister implements Runnable {
/**
* Method run.
*
* @see java.lang.Runnable#run()
*/
@Override
@@ -137,11 +139,11 @@ public class ProcessSyncronousPasswordRegister implements Runnable {
if (Settings.useWelcomeMessage)
if (Settings.broadcastWelcomeMessage) {
for (String s : Settings.welcomeMsg) {
plugin.getServer().broadcastMessage(plugin.replaceAllInfos(s, player));
plugin.getServer().broadcastMessage(plugin.replaceAllInfo(s, player));
}
} else {
for (String s : Settings.welcomeMsg) {
player.sendMessage(plugin.replaceAllInfos(s, player));
player.sendMessage(plugin.replaceAllInfo(s, player));
}
}
@@ -1,13 +1,5 @@
package fr.xephi.authme.process.unregister;
import java.security.NoSuchAlgorithmException;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.auth.PlayerCache;
@@ -20,28 +12,36 @@ import fr.xephi.authme.task.MessageTask;
import fr.xephi.authme.task.TimeoutTask;
import fr.xephi.authme.util.Utils;
import fr.xephi.authme.util.Utils.GroupType;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitScheduler;
import org.bukkit.scheduler.BukkitTask;
import java.security.NoSuchAlgorithmException;
/**
*/
public class AsyncronousUnregister {
public class AsynchronousUnregister {
protected Player player;
protected String name;
private AuthMe plugin;
private Messages m = Messages.getInstance();
protected String password;
protected boolean force;
private JsonCache playerCache;
protected final Player player;
protected final String name;
protected final String password;
protected final boolean force;
private final AuthMe plugin;
private final Messages m = Messages.getInstance();
private final JsonCache playerCache;
/**
* Constructor for AsyncronousUnregister.
* @param player Player
* Constructor for AsynchronousUnregister.
*
* @param player Player
* @param password String
* @param force boolean
* @param plugin AuthMe
* @param force boolean
* @param plugin AuthMe
*/
public AsyncronousUnregister(Player player, String password,
boolean force, AuthMe plugin) {
public AsynchronousUnregister(Player player, String password,
boolean force, AuthMe plugin) {
this.player = player;
this.password = password;
this.force = force;
@@ -52,8 +52,9 @@ public class AsyncronousUnregister {
/**
* Method getIp.
* @return String */
*
* @return String
*/
protected String getIp() {
return plugin.getIP(player);
}
@@ -74,12 +75,12 @@ public class AsyncronousUnregister {
LimboCache.getInstance().addLimboPlayer(player);
int delay = Settings.getRegistrationTimeout * 20;
int interval = Settings.getWarnMessageInterval;
BukkitScheduler sched = plugin.getServer().getScheduler();
BukkitScheduler scheduler = plugin.getServer().getScheduler();
if (delay != 0) {
BukkitTask id = sched.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name, player), delay);
BukkitTask id = scheduler.runTaskLaterAsynchronously(plugin, new TimeoutTask(plugin, name, player), delay);
LimboCache.getInstance().getLimboPlayer(name).setTimeoutTaskId(id);
}
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(sched.runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("reg_msg"), interval)));
LimboCache.getInstance().getLimboPlayer(name).setMessageTaskId(scheduler.runTaskAsynchronously(plugin, new MessageTask(plugin, name, m.send("reg_msg"), interval)));
m.send(player, "unregistered");
ConsoleLogger.info(player.getDisplayName() + " unregistered himself");
return;