From 253b54da1d535fbe095940998c4216a2ebec0a92 Mon Sep 17 00:00:00 2001 From: Xephi59 Date: Mon, 10 Aug 2015 00:06:55 +0200 Subject: [PATCH] Messages can now be customized more easily --- .../xephi/authme/commands/AdminCommand.java | 2 +- .../authme/listener/AuthMePlayerListener.java | 31 +++++--- .../fr/xephi/authme/settings/Messages.java | 27 ++++--- .../fr/xephi/authme/settings/Settings.java | 71 ++++++------------- src/main/resources/messages_vn.yml | 59 +++++++++++++++ 5 files changed, 119 insertions(+), 71 deletions(-) create mode 100644 src/main/resources/messages_vn.yml diff --git a/src/main/java/fr/xephi/authme/commands/AdminCommand.java b/src/main/java/fr/xephi/authme/commands/AdminCommand.java index 52fbec31e..28f4519b9 100644 --- a/src/main/java/fr/xephi/authme/commands/AdminCommand.java +++ b/src/main/java/fr/xephi/authme/commands/AdminCommand.java @@ -141,7 +141,7 @@ public class AdminCommand implements CommandExecutor { } YamlConfiguration newConfig = YamlConfiguration.loadConfiguration(newConfigFile); Settings.reloadConfigOptions(newConfig); - m.reLoad(); + m.reloadMessages(); plugin.database.close(); plugin.setupDatabase(); m.send(sender, "reload"); diff --git a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java index 859621795..42e2c8f5f 100644 --- a/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/AuthMePlayerListener.java @@ -428,17 +428,17 @@ public class AuthMePlayerListener implements Listener { } } - if (Settings.isKickNonRegisteredEnabled && !Settings.antiBotInAction){ + if (Settings.isKickNonRegisteredEnabled && !Settings.antiBotInAction) { if (!plugin.database.isAuthAvailable(name)) { event.setKickMessage(m.send("reg_only")[0]); event.setResult(PlayerLoginEvent.Result.KICK_OTHER); return; } } - - if (Settings.antiBotInAction){ + + if (Settings.antiBotInAction) { if (!plugin.database.isAuthAvailable(name)) { - event.setKickMessage("AntiBot service in action! Non registered players can't connect until the bot attack stops!"); //Need to add string to messages + event.setKickMessage("AntiBot service in action! You actually need to be registered!"); event.setResult(PlayerLoginEvent.Result.KICK_OTHER); return; } @@ -658,31 +658,40 @@ public class AuthMePlayerListener implements Listener { event.setCancelled(true); } - @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) + @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerInventoryOpen(InventoryOpenEvent event) { if (event.getPlayer() == null) return; - Player player = (Player) event.getPlayer(); + final Player player = (Player) event.getPlayer(); String name = player.getName().toLowerCase(); - if (Utils.getInstance().isUnrestricted(player)) { return; } - if (plugin.getCitizensCommunicator().isNPC(player)) return; - if (PlayerCache.getInstance().isAuthenticated(player.getName().toLowerCase())) { return; } - if (!plugin.database.isAuthAvailable(name)) { if (!Settings.isForcedRegistrationEnabled) { return; } } event.setCancelled(true); - player.closeInventory(); + + /* + * @note little hack cause InventoryOpenEvent cannot be cancelled for + * real, cause no packet is send to server by client for the main inv + */ + Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() { + + @Override + public void run() { + player.closeInventory(); + ; + } + + }, 1); } @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) diff --git a/src/main/java/fr/xephi/authme/settings/Messages.java b/src/main/java/fr/xephi/authme/settings/Messages.java index 2328d8206..75db7b7ce 100644 --- a/src/main/java/fr/xephi/authme/settings/Messages.java +++ b/src/main/java/fr/xephi/authme/settings/Messages.java @@ -12,13 +12,15 @@ import fr.xephi.authme.ConsoleLogger; public class Messages extends CustomConfiguration { private static Messages singleton = null; + private String lang = "en"; - public Messages(File file) { + public Messages(File file, String lang) { super(file); loadDefaults(file); loadFile(); saveDefaults(file); singleton = this; + this.lang = lang; } /** @@ -32,7 +34,7 @@ public class Messages extends CustomConfiguration { InputStream stream = AuthMe.getInstance().getResource(file.getName()); if (stream == null) return; - + setDefaults(YamlConfiguration.loadConfiguration(stream)); } @@ -67,12 +69,14 @@ public class Messages extends CustomConfiguration { } private void loadFile() { - this.load(); - this.save(); + load(); + save(); } public void send(CommandSender sender, String msg) { - String loc = (String) this.get(msg); + if (!Settings.messagesLanguage.equalsIgnoreCase(singleton.lang)) + singleton.reloadMessages(); + String loc = (String) singleton.get(msg); if (loc == null) { loc = "Error with Translation files, please contact the admin for verify or update translation"; ConsoleLogger.showError("Error with the " + msg + " translation, verify in your " + Settings.MESSAGE_FILE + "_" + Settings.messagesLanguage + ".yml !"); @@ -83,13 +87,14 @@ public class Messages extends CustomConfiguration { } public String[] send(String msg) { + if (!Settings.messagesLanguage.equalsIgnoreCase(singleton.lang)) + singleton.reloadMessages(); String s = null; try { - s = (String) this.get(msg); + s = (String) singleton.get(msg); } catch (Exception e) { } - if (s == null) - { + if (s == null) { ConsoleLogger.showError("Error with the " + msg + " translation, verify in your " + Settings.MESSAGE_FILE + "_" + Settings.messagesLanguage + ".yml !"); String[] loc = new String[1]; loc[0] = "Error with " + msg + " translation; Please contact the admin for verify or update translation files"; @@ -109,9 +114,13 @@ public class Messages extends CustomConfiguration { public static Messages getInstance() { if (singleton == null) { - singleton = new Messages(new File(Settings.MESSAGE_FILE + "_" + Settings.messagesLanguage + ".yml")); + singleton = new Messages(new File(Settings.MESSAGE_FILE + "_" + Settings.messagesLanguage + ".yml"), Settings.messagesLanguage); } return singleton; } + public void reloadMessages() { + singleton = new Messages(new File(Settings.MESSAGE_FILE + "_" + Settings.messagesLanguage + ".yml"), Settings.messagesLanguage); + } + } diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java index 6fc1aca6f..45b4139cb 100644 --- a/src/main/java/fr/xephi/authme/settings/Settings.java +++ b/src/main/java/fr/xephi/authme/settings/Settings.java @@ -22,8 +22,8 @@ import fr.xephi.authme.security.HashAlgorithm; public final class Settings extends YamlConfiguration { - //This is not an option! - public static Boolean antiBotInAction = false; + // This is not an option! + public static Boolean antiBotInAction = false; public static String PLUGIN_FOLDER = "." + File.separator + "plugins" + File.separator + "AuthMe"; public static final String CACHE_FOLDER = Settings.PLUGIN_FOLDER + File.separator + "cache"; @@ -62,17 +62,17 @@ public final class Settings extends YamlConfiguration { isResetInventoryIfCreative, isCachingEnabled, isKickOnWrongPasswordEnabled, getEnablePasswordVerifier, protectInventoryBeforeLogInEnabled, isBackupActivated, - isBackupOnStart, isBackupOnStop, isStopEnabled, - reloadSupport, rakamakUseIp, noConsoleSpam, removePassword, - displayOtherAccounts, useCaptcha, emailRegistration, multiverse, - chestshop, bungee, banUnsafeIp, doubleEmailCheck, - sessionExpireOnIpChange, disableSocialSpy, forceOnlyAfterLogin, - useEssentialsMotd, usePurge, purgePlayerDat, purgeEssentialsFile, - supportOldPassword, purgeLimitedCreative, purgeAntiXray, - purgePermissions, enableProtection, enableAntiBot, recallEmail, - useWelcomeMessage, broadcastWelcomeMessage, forceRegKick, - forceRegLogin, checkVeryGames, delayJoinMessage, noTeleport, - applyBlindEffect, customAttributes, generateImage; + isBackupOnStart, isBackupOnStop, isStopEnabled, reloadSupport, + rakamakUseIp, noConsoleSpam, removePassword, displayOtherAccounts, + useCaptcha, emailRegistration, multiverse, chestshop, bungee, + banUnsafeIp, doubleEmailCheck, sessionExpireOnIpChange, + disableSocialSpy, forceOnlyAfterLogin, useEssentialsMotd, usePurge, + purgePlayerDat, purgeEssentialsFile, supportOldPassword, + purgeLimitedCreative, purgeAntiXray, purgePermissions, + enableProtection, enableAntiBot, recallEmail, useWelcomeMessage, + broadcastWelcomeMessage, forceRegKick, forceRegLogin, + checkVeryGames, delayJoinMessage, noTeleport, applyBlindEffect, + customAttributes, generateImage; public static String getNickRegex, getUnloggedinGroup, getMySQLHost, getMySQLPort, getMySQLUsername, getMySQLPassword, getMySQLDatabase, @@ -127,7 +127,7 @@ public final class Settings extends YamlConfiguration { @SuppressWarnings("unchecked") public static void loadVariables() { - messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage", "en")); + messagesLanguage = checkLang(configFile.getString("settings.messagesLanguage", "en").toLowerCase()); isPermissionCheckEnabled = configFile.getBoolean("permission.EnablePermissionCheck", false); isForcedRegistrationEnabled = configFile.getBoolean("settings.registration.force", true); isRegistrationEnabled = configFile.getBoolean("settings.registration.enabled", true); @@ -603,22 +603,20 @@ public final class Settings extends YamlConfiguration { } public static String checkLang(String lang) { - for (messagesLang language : messagesLang.values()) { - if (lang.toLowerCase().contains(language.toString())) { - ConsoleLogger.info("Set Language: " + lang); - return lang; - } + if (new File(MESSAGE_FILE + "_" + lang + ".yml").exists()) { + ConsoleLogger.info("Set Language to: " + lang); + return lang; } - ConsoleLogger.info("Set Default Language: En "); + ConsoleLogger.info("Language file not found for " + lang + ", set to default language: en !"); return "en"; } public static void switchAntiBotMod(boolean mode) { - if (mode){ + if (mode) { isKickNonRegisteredEnabled = true; antiBotInAction = true; - }else{ - isKickNonRegisteredEnabled = configFile.getBoolean("settings.restrictions.kickNonRegistered", false); + } else { + isKickNonRegisteredEnabled = configFile.getBoolean("settings.restrictions.kickNonRegistered", false); antiBotInAction = false; } } @@ -684,31 +682,4 @@ public final class Settings extends YamlConfiguration { } return correct; } - - public enum messagesLang { - en, - de, - br, - cz, - pl, - fr, - uk, - ru, - hu, - sk, - es, - fi, - zhtw, - zhhk, - zhcn, - lt, - it, - ko, - pt, - nl, - gl, - bg, - eu, - tr - } } diff --git a/src/main/resources/messages_vn.yml b/src/main/resources/messages_vn.yml new file mode 100644 index 000000000..56efede94 --- /dev/null +++ b/src/main/resources/messages_vn.yml @@ -0,0 +1,59 @@ +unknown_user: '&fNgười chơi không tồn tại trong cơ sở dữ liệu' +unsafe_spawn: '&fNơi thoát server của bạn không an toàn, đang dịch chuyển bạn tới điểm spawn của server' +not_logged_in: '&cChưa đăng nhập!' +reg_voluntarily: '&fBạn có thể đăng kí tài khoản với lệnh + "/register mật-khẩu nhập-lại-mật-khẩu"' +usage_log: '&eSử dụng: /login password' +wrong_pwd: '&cSai mật khẩu' +unregistered: '&cHuỷ đăng kí thành công!' +reg_disabled: '&cHệ thống đăng kí đã bị vô hiệu' +valid_session: '&cPhiên đăng nhập còn tồn tại, bạn không cần nhập mật khẩu' +login: '&cĐăng nhập thành công!' +vb_nonActiv: '&fTài khoản của bạn chưa được kích hoạt, kiểm tra email!' +user_regged: '&cTên đăng nhập này đã được đăng kí' +usage_reg: '&eSử dụng: /register mật-khẩu nhập-lại-mật-khẩu' +max_reg: '&fSố lượng tài khoản ở IP của bạn trong server này đã quá giới hạn cho phép' +no_perm: '&cKhông có quyền' +error: '&fCó lỗi xảy ra; Báo lại cho người điều hành server' +login_msg: '&cĐăng nhập với lệnh "/login mật-khẩu"' +reg_msg: '&cĐăng kí tài khoản với lệnh "/register mật-khẩu nhập-lại-mật-khẩu"' +reg_email_msg: '&cĐăng kí email cho tài khoản với lệnh "/register "' +usage_unreg: '&eSử dụng: /unregister mật-khẩu' +pwd_changed: '&cĐã đổi mật khẩu!' +user_unknown: '&cTài khoản này chưa được đăng kí' +password_error: '&fMật khẩu không khớp' +unvalid_session: '&fPhiên đăng nhập không hồi đáp, vui lòng chờ phiên đăng nhập kết thúc' +reg_only: '&fChỉ cho phép người đã đăng kí! Hãy vào trang http://web-của.bạn/ để đăng kí' +logged_in: '&cĐã đăng nhập!' +logout: '&cThoát đăng nhập thành công' +same_nick: '&fTài khoản đang được người khác sử dụng trong server' +registered: '&cĐăng kí thành công!' +pass_len: '&fMật khẩu của bạn quá ngắn hoặc quá dài' +reload: '&fThiết lập và dữ liệu đã được nạp lại' +timeout: '&fQuá thời gian đăng nhập' +usage_changepassword: '&eSử dụng: /changepassword mật-khẩu-cũ mật-khẩu-mới' +name_len: '&cTên đăng nhập của bạn quá ngắn hoặc quá dài' +regex: '&cTên đăng nhập của bạn có chứa kí tự đặc biệt không được cho phép. Các kí tự hợp lệ: REG_EX' +add_email: '&cVui lòng thêm địa chỉ email cho tài khoản với lệnh: /email add email-của-bạn nhập-lại-email-của-bạn' +bad_database_email: '[AuthMe] Lệnh /email chỉ hoạt động với cơ sở dữ liệu MySQL và SQLite, + hãy liên hệ điều hành viên của server' +recovery_email: '&cQuên mật khẩu? Hãy dùng lệnh /email recovery ' +usage_captcha: '&cBạn cần nhập mã xác nhận: /captcha ' +wrong_captcha: '&cSai mã xác nhận, nhập lại: /captcha ' +valid_captcha: '&aMã xác nhận hợp lệ!' +kick_forvip: '&cNgười chơi VIP đã vào server hiện đang full!' +kick_fullserver: '&cXin lỗi, hiện tại server không còn trống slot để bạn có thể vào!' +usage_email_add: '&eSử dụng: /email add ' +usage_email_change: '&eSử dụng: /email change ' +usage_email_recovery: '&eSử dụng: /email recovery ' +new_email_invalid: '[AuthMe] Địa chỉ email mới không hợp lệ!' +old_email_invalid: '[AuthMe] Địa chỉ email cũ không hợp lệ!' +email_invalid: '[AuthMe] Sai địa chỉ email' +email_added: '[AuthMe] Đã thêm địa chỉ email !' +email_confirm: '[AuthMe] Xác nhận email !' +email_changed: '[AuthMe] Đã thay đổi email !' +email_send: '[AuthMe] Đã gửi email khôi phục mật khẩu tới bạn !' +country_banned: 'Rất tiếc, quốc gia của bạn không được phép gia nhập server' +antibot_auto_enabled: '[AuthMe] AntiBot đã được kích hoạt vì lượng người chơi kết nối vượt quá giới hạn!' +antibot_auto_disabled: '[AuthMe] AntiBot tự huỷ kích hoạt sau %m phút, + hi vọng lượng kết nối sẽ giảm bớt' \ No newline at end of file