Fix BCRYPT, Add WBB3 crypt, FIX CombatTag

This commit is contained in:
Xephi 2013-07-10 16:10:17 +02:00
parent d699f86cc7
commit bca506b2d5
12 changed files with 224 additions and 182 deletions

View File

@ -129,8 +129,7 @@ public class Utils {
final Location locat = new Location(world, x, y + 0.6D, z); final Location locat = new Location(world, x, y + 0.6D, z);
final Location loc = locat.getBlock().getLocation(); final Location loc = locat.getBlock().getLocation();
Bukkit.getScheduler().runTask(AuthMe.getInstance(), new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(AuthMe.getInstance(), new Runnable() {
@Override @Override
public void run() { public void run() {
AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(pl, loc); AuthMeTeleportEvent tpEvent = new AuthMeTeleportEvent(pl, loc);
@ -141,7 +140,6 @@ public class Utils {
pl.teleport(tpEvent.getTo()); pl.teleport(tpEvent.getTo());
} }
} }
}); });
id = Bukkit.getScheduler().runTaskTimer(AuthMe.authme, new Runnable() id = Bukkit.getScheduler().runTaskTimer(AuthMe.authme, new Runnable()
@ -155,7 +153,7 @@ public class Utils {
} }
} }
}, 1L, 20L); }, 1L, 20L);
Bukkit.getScheduler().runTaskLater(AuthMe.authme, new Runnable() Bukkit.getScheduler().scheduleSyncDelayedTask(AuthMe.authme, new Runnable()
{ {
@Override @Override
public void run() { public void run() {

View File

@ -49,7 +49,7 @@ public class API {
* @return true if player is authenticate * @return true if player is authenticate
*/ */
public static boolean isAuthenticated(Player player) { public static boolean isAuthenticated(Player player) {
return PlayerCache.getInstance().isAuthenticated(player.getName()); return PlayerCache.getInstance().isAuthenticated(player.getName().toLowerCase());
} }
/** /**

View File

@ -31,6 +31,7 @@ import uk.org.whoami.authme.AuthMe;
import uk.org.whoami.authme.Utils; import uk.org.whoami.authme.Utils;
import uk.org.whoami.authme.cache.auth.PlayerCache; import uk.org.whoami.authme.cache.auth.PlayerCache;
import uk.org.whoami.authme.datasource.DataSource; import uk.org.whoami.authme.datasource.DataSource;
import uk.org.whoami.authme.plugin.manager.CombatTagComunicator;
import uk.org.whoami.authme.settings.Settings; import uk.org.whoami.authme.settings.Settings;
public class AuthMeEntityListener implements Listener{ public class AuthMeEntityListener implements Listener{
@ -60,6 +61,9 @@ public class AuthMeEntityListener implements Listener{
Player player = (Player) entity; Player player = (Player) entity;
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if(CombatTagComunicator.isNPC(player))
return;
if (PlayerCache.getInstance().isAuthenticated(name)) { if (PlayerCache.getInstance().isAuthenticated(name)) {
return; return;
@ -169,7 +173,7 @@ public class AuthMeEntityListener implements Listener{
Player player = (Player) event.getEntity(); Player player = (Player) event.getEntity();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if (Utils.getInstance().isUnrestricted(player)) { if (Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) {
return; return;
} }
@ -198,7 +202,7 @@ public class AuthMeEntityListener implements Listener{
Player player = (Player) event.getEntity(); Player player = (Player) event.getEntity();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if (Utils.getInstance().isUnrestricted(player)) { if (Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) {
return; return;
} }

View File

@ -1010,7 +1010,7 @@ public class AuthMePlayerListener implements Listener {
Player player = event.getPlayer(); Player player = event.getPlayer();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if (Utils.getInstance().isUnrestricted(player)) { if (Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player)) {
return; return;
} }
@ -1080,7 +1080,7 @@ public class AuthMePlayerListener implements Listener {
Player player = event.getPlayer(); Player player = event.getPlayer();
String name = player.getName().toLowerCase(); String name = player.getName().toLowerCase();
if (Utils.getInstance().isUnrestricted(player)) if (Utils.getInstance().isUnrestricted(player) || CombatTagComunicator.isNPC(player))
return; return;
if (PlayerCache.getInstance().isAuthenticated(name)) if (PlayerCache.getInstance().isAuthenticated(name))

View File

@ -90,9 +90,14 @@ public class PasswordSecurity {
return getMD5(getMD5(salt) + getMD5(message)); return getMD5(getMD5(salt) + getMD5(message));
} }
private static String getBCrypt(String message, String salt) { private static String getBCrypt(String message, String salt) throws NoSuchAlgorithmException {
return BCrypt.hashpw(message, salt); return BCrypt.hashpw(message, salt);
} }
private static String getWBB3(String message, String salt) throws NoSuchAlgorithmException {
return getSHA1(salt.concat(getSHA1(salt.concat(getSHA1(message)))));
}
private static String createSalt(int length) throws NoSuchAlgorithmException { private static String createSalt(int length) throws NoSuchAlgorithmException {
byte[] msg = new byte[40]; byte[] msg = new byte[40];
@ -198,6 +203,18 @@ public class PasswordSecurity {
userSalt.put(name, saltbcrypt); userSalt.put(name, saltbcrypt);
} }
return getBCrypt(password, saltbcrypt); return getBCrypt(password, saltbcrypt);
case WBB3:
String saltwbb = "";
try {
saltbcrypt = AuthMe.getInstance().database.getAuth(name).getSalt();
} catch (NullPointerException npe) {
} catch (ArrayIndexOutOfBoundsException aioobe) {
}
if(saltwbb.isEmpty() || saltwbb == null) {
saltwbb = createSalt(40);
userSalt.put(name, saltwbb);
}
return getWBB3(password, saltwbb);
default: default:
throw new NoSuchAlgorithmException("Unknown hash algorithm"); throw new NoSuchAlgorithmException("Unknown hash algorithm");
} }
@ -208,6 +225,10 @@ public class PasswordSecurity {
PhpBB checkHash = new PhpBB(); PhpBB checkHash = new PhpBB();
return checkHash.phpbb_check_hash(password, hash); return checkHash.phpbb_check_hash(password, hash);
} }
if(!Settings.getMySQLColumnSalt.isEmpty() && Settings.getPasswordHash == HashAlgorithm.WBB3) {
String saltwbb3 = AuthMe.getInstance().database.getAuth(playername).getSalt();
return hash.equals(getWBB3(password, saltwbb3));
}
if(!Settings.getMySQLColumnSalt.isEmpty() && Settings.getPasswordHash == HashAlgorithm.IPB3) { if(!Settings.getMySQLColumnSalt.isEmpty() && Settings.getPasswordHash == HashAlgorithm.IPB3) {
String saltipb = AuthMe.getInstance().database.getAuth(playername).getSalt(); String saltipb = AuthMe.getInstance().database.getAuth(playername).getSalt();
return hash.equals(getSaltedIPB3(password, saltipb)); return hash.equals(getSaltedIPB3(password, saltipb));
@ -305,7 +326,8 @@ public class PasswordSecurity {
public enum HashAlgorithm { public enum HashAlgorithm {
MD5, SHA1, SHA256, WHIRLPOOL, XAUTH, MD5VB, PHPBB, PLAINTEXT, MYBB, IPB3, PHPFUSION, SMF, XFSHA1, XFSHA256, SALTED2MD5, JOOMLA, BCRYPT MD5, SHA1, SHA256, WHIRLPOOL, XAUTH, MD5VB, PHPBB, PLAINTEXT, MYBB, IPB3, PHPFUSION, SMF, XFSHA1,
XFSHA256, SALTED2MD5, JOOMLA, BCRYPT, WBB3
} }
} }

View File

@ -30,13 +30,13 @@ password_error: '&cHesla se neshoduji!'
pass_len: '&cVase heslo nedosahuje minimalni delky (4).' pass_len: '&cVase heslo nedosahuje minimalni delky (4).'
vb_nonActiv: '&cVas ucet neni aktivaovany, zkontrolujte si vas E-mail.' vb_nonActiv: '&cVas ucet neni aktivaovany, zkontrolujte si vas E-mail.'
usage_changepassword: '&cPouziti: "/changepassword stareHeslo noveHeslo".' usage_changepassword: '&cPouziti: "/changepassword stareHeslo noveHeslo".'
name_len: '&cYour nickname is too Short or too long' name_len: '&cTvuj nick je priliz kratky, nebo priliz dlouhy'
regex: '&cYour nickname contains illegal characters. Allowed chars: REG_EX' regex: '&cTvuj nick obsahuje nepovolene znaky. Pripustne znaky jsou: REG_EX'
add_email: '&cPlease add your email with : /email add yourEmail confirmEmail' add_email: '&cPridej prosim svuj email pomoci : /email add TvujEmail TvujEmail'
bad_database_email: '[AuthMe] This /email command only available with MySQL and SQLite, contact an Admin' bad_database_email: '[AuthMe] Prikaz /email je mozno pouzit jen s MySQL a SQLite, kontaktuj Admina'
recovery_email: '&cForgot your password? Please use /email recovery <yourEmail>' recovery_email: '&cZapomels heslo? Zadej: /email recovery <TvujEmail>'
usage_captcha: '&cUsage: /captcha <theCaptcha>' usage_captcha: '&cPouzij: /captcha <Captcha_text>'
wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' wrong_captcha: '&cSpatne opsana Captcha, pouzij prosim: /captcha CAPTCHA_TEXT'
valid_captcha: '&cYour captcha is valid !' valid_captcha: '&cZadana captcha je OK !'
kick_forvip: '&cA VIP Player join the full server!' kick_forvip: '&cA VIP Hrac se pripojil na plny server!'
kick_fullserver: '&cThe server is actually full, Sorry!' kick_fullserver: '&cServer je plne obsazen, zkus to pozdeji prosim !'

View File

@ -1,43 +1,42 @@
unknown_user: '&fBenutzer ist nicht in der Datenbank' unknown_user: '&fBenutzer ist nicht in der Datenbank'
unsafe_spawn: '&fDeine Logoutposition war unsicher, du wurdest zum Spawn teleportiert' unsafe_spawn: '&fDeine Logoutposition war unsicher, du wurdest zum Spawn teleportiert'
not_logged_in: '&cNicht eingelogt!' not_logged_in: '&cNicht eingeloggt!'
reg_voluntarily: '&fDu kannst dich mit folgendem Befehl registrieren reg_voluntarily: '&fDu kannst dich mit folgendem Befehl registrieren "/register <passwort> <passwortBestätigen>"'
"/register passwort"' usage_log: '&cBenutze: /login <passwort>'
usage_log: '&cBenutze: /login passwort'
wrong_pwd: '&cFalsches Passwort' wrong_pwd: '&cFalsches Passwort'
unregistered: '&cErfolgreich unregistriert!' unregistered: '&cBenutzerkonto erfolgreich gelöscht!'
reg_disabled: '&cRegistrierungen sind deaktiviert' reg_disabled: '&cRegistrierungen sind deaktiviert'
valid_session: '&cErfolgreich eingelogt' valid_session: '&cErfolgreich eingeloggt'
login: '&cErfolgreich eingelogt!' login: '&cErfolgreich eingeloggt!'
vb_nonActiv: '&fDein Account ist noch nicht aktiviert, bitte pruefe deine E-Mails!' vb_nonActiv: '&fDein Account wurde noch nicht aktiviert. Bitte prüfe Deine E-Mails!'
user_regged: '&cBenutzername wurde schon registriert' user_regged: '&cBenutzername ist schon vergeben'
usage_reg: '&cBenutze: /register passwort' usage_reg: '&cBenutze: /register <passwort> <passwortBestätigen>'
max_reg: '&fDu hast die maximale Anzahl an Accounts erreicht' max_reg: '&fDu hast die maximale Anzahl an Accounts erreicht'
no_perm: '&cKeine Rechte' no_perm: '&cKeine Rechte'
error: '&fEin Fehler ist unterlaufen, bitte kontaktiere einen Admin' error: '&fEin Fehler ist aufgetreten. Bitte kontaktiere einen Admin'
login_msg: '&cBitte logge dich ein mit "/login passwort"' login_msg: '&cBitte logge dich ein mit "/login <passwort>"'
reg_msg: '&cBitte registriere dich mit "/register passwort"' reg_msg: '&cBitte registriere dich mit "/register <passwort> <passwortBestätigen>"'
usage_unreg: '&cBenutze: /unregister passwort' usage_unreg: '&cBenutze: /unregister <passwort>'
pwd_changed: '&cPasswort geaendert!' pwd_changed: '&cPasswort geändert!'
user_unknown: '&cBenutzername nicht registriert' user_unknown: '&cBenutzername nicht registriert'
password_error: '&fPasswort falsch' password_error: '&fPasswort falsch'
unvalid_session: '&fPerioden login Fehler, bitte warte...' unvalid_session: '&fUngültige Session. Bitte starte das Spiel neu oder warte, bis die Session abgelaufen ist'
reg_only: '&fNur registrierte Spieler! Bitte besuche http://example.com zum registrieren' reg_only: '&fNur registrierte Spieler! Bitte besuche http://example.com zum registrieren'
logged_in: '&cSchon eingelogt!' logged_in: '&cBereits eingeloggt!'
logout: '&cErfolgreich ausgelogt' logout: '&cErfolgreich ausgeloggt'
same_nick: '&fSelber Name spielt bereits' same_nick: '&fSelber Name spielt bereits'
registered: '&cErfolgreich registriert!' registered: '&cErfolgreich registriert!'
pass_len: '&fIhr Passwort erreicht nicht die minimale Laenge oder überschreitet die maximale Laenge' pass_len: '&fDein Passwort ist zu kurz oder zu langg'
reload: '&fKonfiguration und Datenbank neu geladen' reload: '&fKonfiguration und Datenbank neu geladen'
timeout: '&fLogin dauerte zu lange' timeout: '&fZeitüberschreitung beim Login'
usage_changepassword: '&fBenutze: /changepassword altesPasswort neuesPasswort' usage_changepassword: '&fBenutze: /changepassword <altesPasswort> <neuesPasswort>'
name_len: '&cYour nickname is too Short or too long' name_len: '&cDein Nickname ist zu kurz oder zu lang'
regex: '&cYour nickname contains illegal characters. Allowed chars: REG_EX' regex: '&cDein Nichname enthält nicht erlaubte Zeichen. Zulässige Zeichen: REG_EX'
add_email: '&cPlease add your email with : /email add yourEmail confirmEmail' add_email: '&cBitte hinterlege Deine E-Mail Adresse: /email add <deineEmail> <emailBestätigen>'
bad_database_email: '[AuthMe] This /email command only available with MySQL and SQLite, contact an Admin' bad_database_email: '[AuthMe] Der /email Befehl ist nur mit MySQL und SQLite kompatibel. Bitte kontaktieren einen Admin'
recovery_email: '&cForgot your password? Please use /email recovery <yourEmail>' recovery_email: '&cPasswort vergessen? Nutze "/email recovery <yourEmail>" für ein neues Passwort'
usage_captcha: '&cUsage: /captcha <theCaptcha>' usage_captcha: '&cBenutze: /captcha <dasCaptcha>'
wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' wrong_captcha: '&cFalsches Captcha, bitte nutze: /captcha <dasCaptcha>'
valid_captcha: '&cYour captcha is valid !' valid_captcha: '&cDas Captcha ist korrekt!'
kick_forvip: '&cA VIP Player join the full server!' kick_forvip: '&cEin VIP Spieler hat den vollen Server betreten!'
kick_fullserver: '&cThe server is actually full, Sorry!' kick_fullserver: '&cDer Server ist momentan voll, Sorry!'

View File

@ -1,47 +1,47 @@
unknown_user: '&cЭтого игрока нет в базе' unknown_user: '&cЭтого игрока нет в базе'
unsafe_spawn: '&6Твоё расположение перед выходом из игры было небезопасным - &aты unsafe_spawn: '&6Твоё расположение перед выходом из игры было небезопасным - &aты
перенесён на спавн' перенесён на спавн'
not_logged_in: '&cТы не в игре!' not_logged_in: '&cТы не в игре!'
reg_voluntarily: '&eЗарегистрируйся - &d/reg ПАРОЛЬ ПОВТОРАРОЛЯ &eили &d/register reg_voluntarily: '&eЗарегистрируйся - &d/reg ПАРОЛЬ ПОВТОРАРОЛЯ &eили &d/register
ПАРОЛЬ ПОВТОРАРОЛЯ' ПАРОЛЬ ПОВТОРАРОЛЯ'
usage_log: '&eСинтаксис: &d/l ПАРОЛЬ &eили &d/login ПАРОЛЬ' usage_log: '&eСинтаксис: &d/l ПАРОЛЬ &eили &d/login ПАРОЛЬ'
wrong_pwd: '&cНеправильный пароль' wrong_pwd: '&cНеправильный пароль'
unregistered: '&aРегистрация снята' unregistered: '&aРегистрация снята'
reg_disabled: '&6Регистрация отключена' reg_disabled: '&6Регистрация отключена'
valid_session: '&aСессия открыта' valid_session: '&aСессия открыта'
login: '&aТы в игре' login: '&aТы в игре'
vb_nonActiv: '&aТвой аккаунт активирован. &5Проверь свою электронную почту.' vb_nonActiv: '&aТвой аккаунт активирован. &5Проверь свою электронную почту.'
user_regged: '&cЭтот игрок уже зарегистрирован' user_regged: '&cЭтот игрок уже зарегистрирован'
usage_reg: '&eСинтаксис: &d/reg ПАРОЛЬ ПОВТОРАРОЛЯ &eили &d/register ПАРОЛЬ ПОВТОРАРОЛЯ' usage_reg: '&eСинтаксис: &d/reg ПАРОЛЬ ПОВТОРАРОЛЯ &eили &d/register ПАРОЛЬ ПОВТОРАРОЛЯ'
max_reg: '&cТы превысил максимальное число регистраций' max_reg: '&cТы превысил максимальное число регистраций'
no_perm: '&cНет разрешения' no_perm: '&cНет разрешения'
error: '&cЧто-то пошло не так... &5Свяжись с администратором.' error: '&cЧто-то пошло не так... &5Свяжись с администратором.'
login_msg: '&eВойди в игру - &d/l ПАРОЛЬ &eили &d/login ПАРОЛЬ' login_msg: '&eВойди в игру - &d/l ПАРОЛЬ &eили &d/login ПАРОЛЬ'
reg_msg: '&eЗарегистрируйся - &d/reg ПАРОЛЬ ПОВТОРАРОЛЯ &eили &d/register ПАРОЛЬ reg_msg: '&eЗарегистрируйся - &d/reg ПАРОЛЬ ПОВТОРАРОЛЯ &eили &d/register ПАРОЛЬ
ПОВТОРАРОЛЯ' ПОВТОРАРОЛЯ'
usage_unreg: '&eСинтаксис: &d/unregister ПАРОЛЬ' usage_unreg: '&eСинтаксис: &d/unregister ПАРОЛЬ'
pwd_changed: '&aПароль изменён' pwd_changed: '&aПароль изменён'
user_unknown: '&cТакой игрок не зарегистрирован' user_unknown: '&cТакой игрок не зарегистрирован'
password_error: '&cПароль не найден' password_error: '&cПароль не найден'
unvalid_session: '&cДата сессии некорректна. &5Дождись конца сессии.' unvalid_session: '&cДата сессии некорректна. &5Дождись конца сессии.'
reg_only: '&cРегистрация только для игроков! &5Зайди на &dhttp://example.com &5для reg_only: '&cРегистрация только для игроков! &5Зайди на &dhttp://example.com &5для
регистрации.' регистрации.'
logged_in: '&cТы уже в матрице!' logged_in: '&cТы уже в матрице!'
logout: '&aТы вышел с сервера' logout: '&aТы вышел с сервера'
same_nick: '&cЭтот игрок уже играет' same_nick: '&cЭтот игрок уже играет'
registered: '&aУспешная регистрация' registered: '&aУспешная регистрация'
pass_len: '&cТвой пароль либо слишком длинный, либо слишком короткий' pass_len: '&cТвой пароль либо слишком длинный, либо слишком короткий'
reload: '&aКонфигурация и база данных перезагружена' reload: '&aКонфигурация и база данных перезагружена'
timeout: '&cТы не успел войти в игру' timeout: '&cТы не успел войти в игру'
usage_changepassword: '&eСинтаксис: &d/changepassword СТАРЫЙ_ПАРОЛЬ НОВЫЙ_ПАРОЛЬ' usage_changepassword: '&eСинтаксис: &d/changepassword СТАРЫЙ_ПАРОЛЬ НОВЫЙ_ПАРОЛЬ'
name_len: '&cТвой ник либо слишком длинный, либо слишком короткий' name_len: '&cТвой ник либо слишком длинный, либо слишком короткий'
regex: '&cТвой ник содержит недопустимые символы. Разрешено использовать: REG_EX' regex: '&cТвой ник содержит недопустимые символы. Разрешено использовать: REG_EX'
add_email: '&eДобавь свой email: &d/email add АДРЕСОЧТЫ ПОВТОР_АДРЕСАОЧТЫ' add_email: '&eДобавь свой email: &d/email add АДРЕСОЧТЫ ПОВТОР_АДРЕСАОЧТЫ'
bad_database_email: '&c[AuthMe] Команда &d/email&c доступна только при работе с MySQL bad_database_email: '&c[AuthMe] Команда &d/email&c доступна только при работе с MySQL
или SQLite' или SQLite'
recovery_email: '&cЗабыл пароль? Используй команду &d/email recovery <АДРЕСОЧТЫ>' recovery_email: '&cЗабыл пароль? Используй команду &d/email recovery <АДРЕСОЧТЫ>'
usage_captcha: '&cUsage: /captcha <theCaptcha>' usage_captcha: '&cUsage: /captcha <theCaptcha>'
wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA' wrong_captcha: '&cWrong Captcha, please use : /captcha THE_CAPTCHA'
valid_captcha: '&cYour captcha is valid !' valid_captcha: '&cYour captcha is valid !'
kick_forvip: '&cA VIP Player join the full server!' kick_forvip: '&cA VIP Player join the full server!'
kick_fullserver: '&cThe server is actually full, Sorry!' kick_fullserver: '&cThe server is actually full, Sorry!'

View File

@ -1,42 +1,42 @@
unknown_user: '&f数据库里找不到此用户' unknown_user: '&f数据库里找不到此用户'
unsafe_spawn: '&f你退出服务器时的位置不安全正在传送你到此世界的出生点' unsafe_spawn: '&f你退出服务器时的位置不安全正在传送你到此世界的出生点'
not_logged_in: '&c你还未登录' not_logged_in: '&c你还未登录'
reg_voluntarily: '&f你可以在服务器里使用这个指令以注册“/register <密码> <再输入一次以确定密码>”' reg_voluntarily: '&f你可以在服务器里使用这个指令以注册“/register <密码> <再输入一次以确定密码>”'
usage_log: '&c正确用法“/login <密码>”' usage_log: '&c正确用法“/login <密码>”'
wrong_pwd: '&c错误的密码' wrong_pwd: '&c错误的密码'
unregistered: '&c成功删除此用户' unregistered: '&c成功删除此用户'
reg_disabled: '&c目前服务器暂时禁止注册请到服务器论坛以得到更多资讯' reg_disabled: '&c目前服务器暂时禁止注册请到服务器论坛以得到更多资讯'
valid_session: '&c欢迎回来已帮你自动登录到此服务器' valid_session: '&c欢迎回来已帮你自动登录到此服务器'
login: '&c已成功登录' login: '&c已成功登录'
vb_nonActiv: '&f你的帐号还未激活请查看你的邮箱' vb_nonActiv: '&f你的帐号还未激活请查看你的邮箱'
user_regged: '&c此用户已经在此服务器注册过' user_regged: '&c此用户已经在此服务器注册过'
usage_reg: '&c正确用法“/register <密码> <再输入一次以确定密码>”' usage_reg: '&c正确用法“/register <密码> <再输入一次以确定密码>”'
max_reg: '&f你不允许再为你的IP在服务器注册更多用户了' max_reg: '&f你不允许再为你的IP在服务器注册更多用户了'
no_perm: '&c没有权限' no_perm: '&c没有权限'
error: '&f发现错误请联系管理员' error: '&f发现错误请联系管理员'
login_msg: '&c请输入“/login <密码>”以登录' login_msg: '&c请输入“/login <密码>”以登录'
reg_msg: '&c请输入“/register <密码> <再输入一次以确定密码>”以注册' reg_msg: '&c请输入“/register <密码> <再输入一次以确定密码>”以注册'
usage_unreg: '&c正确用法“/unregister <密码>”' usage_unreg: '&c正确用法“/unregister <密码>”'
pwd_changed: '&c密码已成功修改' pwd_changed: '&c密码已成功修改'
user_unknown: '&c此用户名还未注册过' user_unknown: '&c此用户名还未注册过'
password_error: '&f密码不相同' password_error: '&f密码不相同'
unvalid_session: '&fSession Dataes doesnt corrispond Plaese wait the end of session' unvalid_session: '&fSession Dataes doesnt corrispond Plaese wait the end of session'
reg_only: '&f只允许注册过的玩家进服请到http://example.com以注册' reg_only: '&f只允许注册过的玩家进服请到http://example.com以注册'
logged_in: '&c你已经登陆过了' logged_in: '&c你已经登陆过了'
logout: '&c已成功登出' logout: '&c已成功登出'
same_nick: '&f同样的用户名现在在线且已经登录了' same_nick: '&f同样的用户名现在在线且已经登录了'
registered: '&c已成功注册' registered: '&c已成功注册'
pass_len: '&你的密码没有达到要求!' pass_len: '&你的密码没有达到要求!'
reload: '&f配置以及数据已经重新加载完毕' reload: '&f配置以及数据已经重新加载完毕'
timeout: '&f给你登录的时间已经过了' timeout: '&f给你登录的时间已经过了'
usage_changepassword: '&f正确用法“/changepassword oldPassword ne”' usage_changepassword: '&f正确用法“/changepassword oldPassword ne”'
name_len: '&c你的用户名太短或者太长了' name_len: '&c你的用户名太短或者太长了'
regex: '&c你的用户名包含非法字母用户名里允许的字母: REG_EX' regex: '&c你的用户名包含非法字母用户名里允许的字母: REG_EX'
add_email: '&c请输入“/email add <你的邮箱> <再输入一次以确认>”以把你的邮箱添加到此帐号' add_email: '&c请输入“/email add <你的邮箱> <再输入一次以确认>”以把你的邮箱添加到此帐号'
bad_database_email: '[AuthMe]这个“/email”命令只有在插件已经连接MySQL或者SQLite数据库时才可用请联系管理员' bad_database_email: '[AuthMe]这个“/email”命令只有在插件已经连接MySQL或者SQLite数据库时才可用请联系管理员'
recovery_email: '&c忘了你的密码请输入“/email recovery <你的邮箱>”' recovery_email: '&c忘了你的密码请输入“/email recovery <你的邮箱>”'
usage_captcha: '&c正确用法/captcha <验证码>' usage_captcha: '&c正确用法/captcha <验证码>'
wrong_captcha: '&c错误的验证码请输入“/captcha <验证码>”' wrong_captcha: '&c错误的验证码请输入“/captcha <验证码>”'
valid_captcha: '&c你的验证码是有效的' valid_captcha: '&c你的验证码是有效的'
kick_forvip: '&cA VIP Player join the full server!' kick_forvip: '&cA VIP Player join the full server!'
kick_fullserver: '&cThe server is actually full, Sorry!' kick_fullserver: '&cThe server is actually full, Sorry!'

View File

@ -1,42 +1,42 @@
unknown_user: '&f用戶資料並不存在於資料庫中 。' unknown_user: '&f用戶資料並不存在於資料庫中 。'
unsafe_spawn: '&f你的登出位置不安全 現在將傳送你到重生點 。' unsafe_spawn: '&f你的登出位置不安全 現在將傳送你到重生點 。'
not_logged_in: '&c你還沒有登入 ' not_logged_in: '&c你還沒有登入 '
reg_voluntarily: '&f你可以使用這個的指令來註冊 《 /register <密碼> <重覆密碼> 》' reg_voluntarily: '&f你可以使用這個的指令來註冊 《 /register <密碼> <重覆密碼> 》'
usage_log: '&c用法 《 /login <密碼> 》' usage_log: '&c用法 《 /login <密碼> 》'
wrong_pwd: '&c你輸入了錯誤的密碼 。' wrong_pwd: '&c你輸入了錯誤的密碼 。'
unregistered: '&c你已成功註銷會員記錄 。' unregistered: '&c你已成功註銷會員記錄 。'
reg_disabled: '&c註冊機制被停用 。' reg_disabled: '&c註冊機制被停用 。'
valid_session: '&b嗨 我記得你 歡迎回來 ' valid_session: '&b嗨 我記得你 歡迎回來 '
login: '&c你成功的登入了 。' login: '&c你成功的登入了 。'
vb_nonActiv: '&f你的帳戶還沒有經過電郵驗證 ' vb_nonActiv: '&f你的帳戶還沒有經過電郵驗證 '
user_regged: '&c此用戶名已經註冊過了 。' user_regged: '&c此用戶名已經註冊過了 。'
usage_reg: '&c用法 《 /register <密碼> <重覆密碼> 》' usage_reg: '&c用法 《 /register <密碼> <重覆密碼> 》'
max_reg: '&f你的IP地址已達到註冊數上限 。' max_reg: '&f你的IP地址已達到註冊數上限 。'
no_perm: '&c你並沒有這個權限 。' no_perm: '&c你並沒有這個權限 。'
error: '&f發生錯誤 請與管理員聯絡 。' error: '&f發生錯誤 請與管理員聯絡 。'
login_msg: '&c請使用這個指令來登入 《 /login <密碼> 》' login_msg: '&c請使用這個指令來登入 《 /login <密碼> 》'
reg_msg: '&c請使用這個的指令來註冊 《 /register <密碼> <重覆密碼> 》' reg_msg: '&c請使用這個的指令來註冊 《 /register <密碼> <重覆密碼> 》'
usage_unreg: '&c用法 《 /unregister <密碼> 》' usage_unreg: '&c用法 《 /unregister <密碼> 》'
pwd_changed: '&c你成功的更換了你的密碼 ' pwd_changed: '&c你成功的更換了你的密碼 '
user_unknown: '&c此用戶名沒有已登記資料 。' user_unknown: '&c此用戶名沒有已登記資料 。'
password_error: '&f密碼不符合 。' password_error: '&f密碼不符合 。'
unvalid_session: '&f登入階段資料已損壞 請等待登入階段結束 。' unvalid_session: '&f登入階段資料已損壞 請等待登入階段結束 。'
reg_only: '&f限已註冊會員 請先到 http://member.usociety.org 註冊 。' reg_only: '&f限已註冊會員 請先到 http://member.usociety.org 註冊 。'
logged_in: '&c你已經登入過了 。' logged_in: '&c你已經登入過了 。'
logout: '&b你成功的登出了 。' logout: '&b你成功的登出了 。'
same_nick: '&f同名玩家已在遊玩 。' same_nick: '&f同名玩家已在遊玩 。'
registered: '&b你成功的註冊了 。' registered: '&b你成功的註冊了 。'
pass_len: '&f你的密碼並不符合規定長度 。' pass_len: '&f你的密碼並不符合規定長度 。'
reload: '&b登入系統設定及資料庫重新載入完畢 。' reload: '&b登入系統設定及資料庫重新載入完畢 。'
timeout: '&f登入逾時 。' timeout: '&f登入逾時 。'
usage_changepassword: '&f用法 《 /changepassword <舊密碼> <新密碼> 》' usage_changepassword: '&f用法 《 /changepassword <舊密碼> <新密碼> 》'
name_len: '&c你的用戶名不符合規定長度 。' name_len: '&c你的用戶名不符合規定長度 。'
regex: '&c你的用戶名含有不容許之字符。以下為准許之字母 REG_EX' regex: '&c你的用戶名含有不容許之字符。以下為准許之字母 REG_EX'
add_email: '&b請為你的帳戶立即添加電郵地址 《 /email add <電郵地址> <重覆電郵地址> 》' add_email: '&b請為你的帳戶立即添加電郵地址 《 /email add <電郵地址> <重覆電郵地址> 》'
bad_database_email: '[AuthMe] 此指令只適用於使用MySQL或SQLite之伺服器。' bad_database_email: '[AuthMe] 此指令只適用於使用MySQL或SQLite之伺服器。'
recovery_email: '&c忘記密碼 請使用這個的指令來更新密碼 《 /email recovery <電郵地址> 》' recovery_email: '&c忘記密碼 請使用這個的指令來更新密碼 《 /email recovery <電郵地址> 》'
usage_captcha: '&c用法 《 /captcha <驗證碼> 》' usage_captcha: '&c用法 《 /captcha <驗證碼> 》'
wrong_captcha: '&c你輸入了錯誤的驗證碼請使用 《 /captcha <驗證碼> 》 再次輸入 。' wrong_captcha: '&c你輸入了錯誤的驗證碼請使用 《 /captcha <驗證碼> 》 再次輸入 。'
valid_captcha: '&c你的驗證碼是無效的 ' valid_captcha: '&c你的驗證碼是無效的 '
kick_forvip: '&cA VIP Player join the full server!' kick_forvip: '&cA VIP Player join the full server!'
kick_fullserver: '&cThe server is actually full, Sorry!' kick_fullserver: '&cThe server is actually full, Sorry!'

View File

@ -0,0 +1,7 @@
spawn:
world: ''
x: ''
y: ''
z: ''
yaw: ''
pitch: ''

View File

@ -0,0 +1,12 @@
Spout GUI enabled: true
LoginScreen:
enabled: true
exit button: Quit
exit message: Good Bye
login button: Login
title: LOGIN
text:
- Sample text
- Change this at spout.yml
- '--- AuthMe Reloaded by ---'
- d4rkwarriors and Xephi59