From 69b874c8325f0a16dc18cea447c4e3edabd17349 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sun, 1 Nov 2015 01:58:25 +0100 Subject: [PATCH 001/117] Update AuthMePlayerListener.java --- .../xephi/authme/listener/AuthMePlayerListener.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index 04937fd4..51b7933b 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -143,13 +143,11 @@ public class AuthMePlayerListener implements Listener { player.setWalkSpeed(0.0f); player.setFlySpeed(0.0f); } - if (!event.getFrom().getBlock().equals(event.getTo().getBlock())) { - event.setTo(event.getFrom()); - } + event.setTo(event.getFrom()); return; } - if (Settings.getMovementRadius == 0) { + if (Settings.getMovementRadius <= 0) { return; } @@ -218,7 +216,7 @@ public class AuthMePlayerListener implements Listener { plugin.management.performJoin(player); // Remove the join message while the player isn't logging in - if ((Settings.enableProtection || Settings.delayJoinMessage) && event.getJoinMessage() != null) { + if (Settings.delayJoinMessage && event.getJoinMessage() != null) { joinMessage.put(name, event.getJoinMessage()); event.setJoinMessage(null); } @@ -378,7 +376,8 @@ public class AuthMePlayerListener implements Listener { plugin.management.performQuit(player, false); - if (!PlayerCache.getInstance().isAuthenticated(name) && Settings.enableProtection) + // TODO: rename delayjoinmessage setting + if (!PlayerCache.getInstance().isAuthenticated(name) && Settings.delayJoinMessages) event.setQuitMessage(null); } From b2bd3b0ab74916fe6bd2395d4b6c42a64726af3f Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sun, 1 Nov 2015 12:00:45 +0100 Subject: [PATCH 002/117] cleanup --- .../authme/commands/UnregisterCommand.java | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java b/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java index 9c881d02..b7b58c2f 100644 --- a/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java +++ b/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java @@ -1,40 +1,20 @@ package fr.xephi.authme.commands; -import java.security.NoSuchAlgorithmException; - -import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; 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.Utils; -import fr.xephi.authme.Utils.GroupType; import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.backup.JsonCache; -import fr.xephi.authme.cache.limbo.LimboCache; -import fr.xephi.authme.events.SpawnTeleportEvent; -import fr.xephi.authme.security.PasswordSecurity; 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 UnregisterCommand implements CommandExecutor { private Messages m = Messages.getInstance(); public AuthMe plugin; - private JsonCache playerCache; public UnregisterCommand(AuthMe plugin) { this.plugin = plugin; - this.playerCache = new JsonCache(); } @Override From d478973fa5bd27de67508016aa0a31c6993e2c52 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sun, 1 Nov 2015 13:23:47 +0100 Subject: [PATCH 003/117] Enhance join/leave message delay --- .../authme/commands/UnregisterCommand.java | 1 + .../authme/listener/AuthMePlayerListener.java | 43 +++++++++---------- .../fr/xephi/authme/settings/Settings.java | 12 ++++-- src/main/resources/config.yml | 4 +- 4 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java b/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java index b7b58c2f..4a879f1b 100644 --- a/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java +++ b/src/main/java/fr/xephi/authme/commands/UnregisterCommand.java @@ -4,6 +4,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; + import fr.xephi.authme.AuthMe; import fr.xephi.authme.cache.auth.PlayerCache; import fr.xephi.authme.settings.Messages; diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index 51b7933b..4504a11d 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -52,10 +52,11 @@ import fr.xephi.authme.settings.Settings; public class AuthMePlayerListener implements Listener { + public AuthMe plugin; + private Messages m = Messages.getInstance(); + public static ConcurrentHashMap gameMode = new ConcurrentHashMap<>(); public static ConcurrentHashMap joinMessage = new ConcurrentHashMap<>(); - private Messages m = Messages.getInstance(); - public AuthMe plugin; public static ConcurrentHashMap causeByAuthMe = new ConcurrentHashMap<>(); private List antibot = new ArrayList<>(); @@ -67,9 +68,16 @@ public class AuthMePlayerListener implements Listener { Player player = event.getPlayer(); if (!Utils.checkAuth(player)) { String cmd = event.getMessage().split(" ")[0]; - if (!Settings.isChatAllowed && !(Settings.allowCommands.contains(cmd))) { - event.setCancelled(true); + if (cmd.startsWith("/")) { + if (Settings.allowCommands.contains(cmd)) { + return; + } + } else { + if (Settings.isChatAllowed) { + return; + } } + if (plugin.database.isAuthAvailable(player.getName().toLowerCase())) { m.send(player, "login_msg"); } else { @@ -84,22 +92,14 @@ public class AuthMePlayerListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { - String msg = event.getMessage(); - if (msg.equalsIgnoreCase("/worldedit cui")) - return; - - String cmd = msg.split(" ")[0]; - if (cmd.equalsIgnoreCase("/login") || cmd.equalsIgnoreCase("/register") || cmd.equalsIgnoreCase("/l") || cmd.equalsIgnoreCase("/reg") || cmd.equalsIgnoreCase("/email") || cmd.equalsIgnoreCase("/captcha")) - return; + String cmd = event.getMessage().split(" ")[0]; if (Settings.useEssentialsMotd && cmd.equalsIgnoreCase("/motd")) return; if (Settings.allowCommands.contains(cmd)) return; - - if (!Utils.checkAuth(event.getPlayer())) { - event.setMessage("/notloggedin"); - event.setCancelled(true); - } + if (Utils.checkAuth(event.getPlayer())) + return; + event.setCancelled(true); } @EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL) @@ -216,7 +216,7 @@ public class AuthMePlayerListener implements Listener { plugin.management.performJoin(player); // Remove the join message while the player isn't logging in - if (Settings.delayJoinMessage && event.getJoinMessage() != null) { + if (Settings.delayJoinLeaveMessages && event.getJoinMessage() != null) { joinMessage.put(name, event.getJoinMessage()); event.setJoinMessage(null); } @@ -372,13 +372,12 @@ public class AuthMePlayerListener implements Listener { } Player player = event.getPlayer(); - String name = player.getName().toLowerCase(); + + if (!Utils.checkAuth(player) && Settings.delayJoinLeaveMessages) { + event.setQuitMessage(null); + } plugin.management.performQuit(player, false); - - // TODO: rename delayjoinmessage setting - if (!PlayerCache.getInstance().isAuthenticated(name) && Settings.delayJoinMessages) - event.setQuitMessage(null); } @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java index ed951d1d..84672b38 100644 --- a/src/main/java/fr/xephi/authme/settings/Settings.java +++ b/src/main/java/fr/xephi/authme/settings/Settings.java @@ -76,7 +76,7 @@ public final class Settings extends YamlConfiguration { purgeLimitedCreative, purgeAntiXray, purgePermissions, enableProtection, enableAntiBot, recallEmail, useWelcomeMessage, broadcastWelcomeMessage, forceRegKick, forceRegLogin, - checkVeryGames, delayJoinMessage, noTeleport, applyBlindEffect, + checkVeryGames, delayJoinLeaveMessages, noTeleport, applyBlindEffect, customAttributes, generateImage, isRemoveSpeedEnabled, isMySQLWebsite; public static String getNickRegex, getUnloggedinGroup, getMySQLHost, @@ -273,7 +273,7 @@ public final class Settings extends YamlConfiguration { getMaxLoginPerIp = configFile.getInt("settings.restrictions.maxLoginPerIp", 0); getMaxJoinPerIp = configFile.getInt("settings.restrictions.maxJoinPerIp", 0); checkVeryGames = configFile.getBoolean("VeryGames.enableIpCheck", false); - delayJoinMessage = configFile.getBoolean("settings.delayJoinMessage", false); + delayJoinLeaveMessages = configFile.getBoolean("settings.delayJoinLeaveMessage", false); noTeleport = configFile.getBoolean("settings.restrictions.noTeleport", false); crazyloginFileName = configFile.getString("Converter.CrazyLogin.fileName", "accounts.db"); getPassRegex = configFile.getString("settings.restrictions.allowedPasswordCharacters", "[\\x21-\\x7E]*"); @@ -402,8 +402,12 @@ public final class Settings extends YamlConfiguration { set("settings.restrictions.allowedNicknameCharacters", "[a-zA-Z0-9_]*"); changes = true; } - if (!contains("settings.delayJoinMessage")) { - set("settings.delayJoinMessage", false); + if (contains("settings.delayJoinMessage")) { + set("settings.delayJoinMessage", null); + changes = true; + } + if (!contains("settings.delayJoinLeaveMessages")) { + set("settings.delayJoinLeaveMessages", true); changes = true; } if (!contains("settings.restrictions.noTeleport")) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 6e3ad561..e991efc0 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -253,8 +253,8 @@ settings: useWelcomeMessage: true # Do we need to broadcast the welcome message to all server or only to the player? set true for server or false for player broadcastWelcomeMessage: false - # Do we need to delay the X has joined the game after /login ? - delayJoinMessage: false + # Do we need to delay the join/leave message to be displayed only when the player is authenticated ? + delayJoinLeaveMessages: true # Do we need to add potion effect Blinding before login/register ? applyBlindEffect: false ExternalBoardOptions: From 49a9d3f51b04c1b33b60e27101e5dbcedd80e71c Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sun, 1 Nov 2015 14:42:39 +0100 Subject: [PATCH 004/117] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 056700d3..220a2ced 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@

The most used authentication plugin for CraftBukkit/Spigot!


+ +####Development history: +[![Guava AuthMe History Video](http://img.youtube.com/vi/hJRzNfYyd9k/hqdefault.jpg)](https://www.youtube.com/watch?v=hJRzNfYyd9k) + #####Development tools: - DEVELOPMENT TEAM REPO (please send PRs here!): Github Development Page From 7cea79eefc2f136ece27a1a6525a26e8c57c0c0e Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sun, 1 Nov 2015 13:34:24 +0100 Subject: [PATCH 005/117] cleanup --- src/main/java/fr/xephi/authme/AuthMe.java | 2 +- .../java/fr/xephi/authme/process/join/AsyncronousJoin.java | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index aae74c27..8371bbb4 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -109,7 +109,7 @@ public class AuthMe extends JavaPlugin { // In case we need to cache PlayerAuths, prevent connection before it's done private boolean canConnect = true; - public boolean isCanConnect() { + public boolean canConnect() { return canConnect; } diff --git a/src/main/java/fr/xephi/authme/process/join/AsyncronousJoin.java b/src/main/java/fr/xephi/authme/process/join/AsyncronousJoin.java index b52833e4..a35708ba 100644 --- a/src/main/java/fr/xephi/authme/process/join/AsyncronousJoin.java +++ b/src/main/java/fr/xephi/authme/process/join/AsyncronousJoin.java @@ -58,8 +58,7 @@ public class AsyncronousJoin { plugin.ess.getUser(player).setSocialSpyEnabled(false); } - if (!plugin.isCanConnect()) - { + if (!plugin.canConnect()) { final GameMode gM = AuthMePlayerListener.gameMode.get(name); sched.scheduleSyncDelayedTask(plugin, new Runnable() { From 1897b1f5e6569b73217ed238b3dd433cdc387636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Vis=C3=A9e?= Date: Sun, 1 Nov 2015 15:31:15 +0100 Subject: [PATCH 006/117] Added dynamic command handler from Dungeon Maze --- .../dynamic/CommandArgumentDescription.java | 91 ++ .../commands/dynamic/CommandDescription.java | 912 ++++++++++++++++++ .../commands/dynamic/CommandHandler.java | 205 ++++ .../dynamic/CommandHandlerService.java | 90 ++ .../commands/dynamic/CommandManager.java | 288 ++++++ .../authme/commands/dynamic/CommandParts.java | 204 ++++ .../commands/dynamic/CommandPermissions.java | 182 ++++ .../commands/dynamic/ExecutableCommand.java | 17 + .../commands/dynamic/FoundCommandResult.java | 151 +++ .../executable/CheckUpdatesCommand.java | 78 ++ .../executable/CreateWorldCommand.java | 140 +++ .../executable/DungeonMazeCommand.java | 28 + .../dynamic/executable/HelpCommand.java | 37 + .../executable/InstallUpdateCommand.java | 75 ++ .../dynamic/executable/ListWorldCommand.java | 67 ++ .../dynamic/executable/LoadWorldCommand.java | 75 ++ .../dynamic/executable/ReloadCommand.java | 75 ++ .../executable/ReloadPermissionsCommand.java | 56 ++ .../dynamic/executable/RestartCommand.java | 105 ++ .../dynamic/executable/ServiceCommand.java | 73 ++ .../dynamic/executable/StatusCommand.java | 180 ++++ .../dynamic/executable/TeleportCommand.java | 80 ++ .../executable/UnloadWorldCommand.java | 107 ++ .../dynamic/executable/VersionCommand.java | 80 ++ .../commands/dynamic/help/HelpPrinter.java | 189 ++++ .../commands/dynamic/help/HelpProvider.java | 114 +++ .../dynamic/help/HelpSyntaxHelper.java | 60 ++ 27 files changed, 3759 insertions(+) create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/CommandArgumentDescription.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/CommandDescription.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/CommandHandler.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/CommandHandlerService.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/CommandManager.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/CommandParts.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/CommandPermissions.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/ExecutableCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/FoundCommandResult.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/CheckUpdatesCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/CreateWorldCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/DungeonMazeCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/HelpCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/InstallUpdateCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/ListWorldCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/LoadWorldCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/ReloadCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/ReloadPermissionsCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/RestartCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/ServiceCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/StatusCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/TeleportCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/UnloadWorldCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/executable/VersionCommand.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/help/HelpPrinter.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/help/HelpProvider.java create mode 100644 src/main/java/fr/xephi/authme/commands/dynamic/help/HelpSyntaxHelper.java diff --git a/src/main/java/fr/xephi/authme/commands/dynamic/CommandArgumentDescription.java b/src/main/java/fr/xephi/authme/commands/dynamic/CommandArgumentDescription.java new file mode 100644 index 00000000..5d021b65 --- /dev/null +++ b/src/main/java/fr/xephi/authme/commands/dynamic/CommandArgumentDescription.java @@ -0,0 +1,91 @@ +package fr.xephi.authme.commands.dynamic; + +public class CommandArgumentDescription { + + // TODO: Allow argument to consist of infinite parts.