Skip to content

Commit 0108745

Browse files
committed
Localized GUI Captcha
1 parent fcc34c2 commit 0108745

File tree

5 files changed

+98
-22
lines changed

5 files changed

+98
-22
lines changed

src/main/java/fr/xephi/authme/listener/GuiCaptchaHandler.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
import com.comphenix.protocol.events.PacketEvent;
88
import fr.xephi.authme.AuthMe;
99
import fr.xephi.authme.api.v3.AuthMeApi;
10+
import fr.xephi.authme.message.MessageKey;
11+
import fr.xephi.authme.message.Messages;
1012
import fr.xephi.authme.service.BukkitService;
13+
import fr.xephi.authme.service.CommonService;
1114
import fr.xephi.authme.settings.properties.HooksSettings;
1215
import fr.xephi.authme.settings.properties.RestrictionSettings;
1316
import fr.xephi.authme.settings.properties.SecuritySettings;
@@ -43,6 +46,10 @@ public class GuiCaptchaHandler implements Listener {
4346
private BukkitService bukkitService;
4447
@Inject
4548
private AuthMe plugin;
49+
@Inject
50+
private Messages messages;
51+
@Inject
52+
private CommonService service;
4653

4754
private PacketAdapter chatPacketListener;
4855
private PacketAdapter windowPacketListener;
@@ -85,7 +92,7 @@ public void onInventoryClick(InventoryClickEvent event) {
8592
event.setCancelled(true);
8693
closeReasonMap.put(player, "verified");
8794
player.closeInventory();
88-
player.sendMessage("§a验证完成");
95+
messages.send(player, MessageKey.GUI_CAPTCHA_VERIFIED);
8996
}
9097
}
9198
}
@@ -99,7 +106,7 @@ public void onPlayerJoin(PlayerJoinEvent event) {
99106
if (!authmeApi.isRegistered(name) && !isNpc(playerunreg)) {
100107
if (isBedrockPlayer(playerunreg.getUniqueId())) {
101108
closeReasonMap.put(playerunreg, "verified");
102-
playerunreg.sendMessage("§a基岩版自动验证完成");
109+
messages.send(playerunreg, MessageKey.GUI_CAPTCHA_VERIFIED_AUTO_BEDROCK);
103110
return;
104111
}
105112
bukkitService.runTaskAsynchronously(() -> {
@@ -120,12 +127,12 @@ public void onPlayerJoin(PlayerJoinEvent event) {
120127
randomString = sb.toString();
121128
Random random_blockpos = new Random();
122129
AtomicInteger random_num = new AtomicInteger(random_blockpos.nextInt(26));
123-
Inventory menu = Bukkit.createInventory(playerunreg, 27, randomString + "请验证你是真人");
130+
Inventory menu = Bukkit.createInventory(playerunreg, 27, messages.retrieveSingle(playerunreg, MessageKey.GUI_CAPTCHA_WINDOW_NAME, randomString));
124131
ItemStack item = new ItemStack(Material.REDSTONE_BLOCK);
125132
ItemMeta meta = item.getItemMeta();
126133
try {
127134
if (meta != null) {
128-
meta.setDisplayName("§a" + randomString + "§a我是真人");
135+
meta.setDisplayName(messages.retrieveSingle(playerunreg, MessageKey.GUI_CAPTCHA_CLICKABLE_NAME, randomString));
129136
item.setItemMeta(meta);
130137
}
131138
} catch (NullPointerException e) {
@@ -146,7 +153,7 @@ public void onPlayerJoin(PlayerJoinEvent event) {
146153
bukkitService.runTask(() -> {
147154
bukkitService.runTaskLater(() -> {
148155
if (!closeReasonMap.containsKey(playerunreg) && !authmeApi.isRegistered(playerunreg.getName())) {
149-
playerunreg.kickPlayer("§c验证超时");
156+
playerunreg.kickPlayer(service.retrieveSingleMessage(playerunreg, MessageKey.GUI_CAPTCHA_KICK_TIMEOUT));
150157
timesLeft = 3; // Reset the attempt counter
151158
}
152159
}, finalTimeOut * 20L);
@@ -160,19 +167,19 @@ public void onPacketReceiving(PacketEvent event) {
160167
if (event.getPlayer() == playerunreg && !closeReasonMap.containsKey(playerunreg) && !authmeApi.isRegistered(playerunreg.getName())) {
161168
if (timesLeft <= 0) {
162169
bukkitService.runTask(() -> {
163-
playerunreg.kickPlayer("§c请先完成人机验证!");
170+
playerunreg.kickPlayer(service.retrieveSingleMessage(playerunreg, MessageKey.GUI_CAPTCHA_KICK_FAILED));
164171
});
165172
timesLeft = 3;
166173
} else {
167174
--timesLeft;
168175
if (timesLeft <= 0) {
169176
bukkitService.runTask(() -> {
170-
playerunreg.kickPlayer("§c请先完成人机验证!");
177+
playerunreg.kickPlayer(service.retrieveSingleMessage(playerunreg, MessageKey.GUI_CAPTCHA_KICK_FAILED));
171178
});
172179
timesLeft = 3;
173180
return;
174181
}
175-
playerunreg.sendMessage("§c请先完成验证!,你还有" + timesLeft + "次机会");
182+
messages.send(playerunreg, MessageKey.GUI_CAPTCHA_RETRY_MESSAGE, String.valueOf(timesLeft));
176183
event.setCancelled(true);
177184
random_num.set(random_blockpos.nextInt(26));
178185
bukkitService.runTask(() -> {
@@ -191,7 +198,7 @@ public void onPacketReceiving(PacketEvent event) {
191198
@Override
192199
public void onPacketReceiving(PacketEvent event) {
193200
if (event.getPlayer() == playerunreg && !closeReasonMap.containsKey(playerunreg) && !authmeApi.isRegistered(playerunreg.getName())) {
194-
playerunreg.sendMessage("§c请先完成验证!");
201+
messages.send(playerunreg, MessageKey.GUI_CAPTCHA_DENIED_MESSAGE);
195202
event.setCancelled(true);
196203
}
197204
}

src/main/java/fr/xephi/authme/message/MessageKey.java

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,59 @@
44
* Keys for translatable messages managed by {@link Messages}.
55
*/
66
public enum MessageKey {
7-
/** In order to use this command you must be authenticated! */
7+
/**
8+
* %random Verification
9+
*/
10+
GUI_CAPTCHA_WINDOW_NAME("gui_captcha.captcha_window_name", "%random"),
11+
12+
/**
13+
* %random I am human
14+
*/
15+
GUI_CAPTCHA_CLICKABLE_NAME("gui_captcha.captcha_clickable_name", "%random"),
16+
17+
/**
18+
* Verification failed, you have %times retries left
19+
*/
20+
GUI_CAPTCHA_RETRY_MESSAGE("gui_captcha.message_on_retry", "%times"),
21+
22+
/**
23+
* Bedrock verification success!
24+
*/
25+
GUI_CAPTCHA_VERIFIED_AUTO_BEDROCK("gui_captcha.bedrock_auto_verify_success"),
26+
27+
/**
28+
* Please be verified before chatting!
29+
*/
30+
GUI_CAPTCHA_DENIED_MESSAGE("gui_captcha.denied_message_sending"),
31+
32+
/**
33+
* Verification timed out!
34+
*/
35+
GUI_CAPTCHA_KICK_TIMEOUT("gui_captcha.kick_on_timeout"),
36+
37+
/**
38+
* Please complete the verification!
39+
*/
40+
GUI_CAPTCHA_KICK_FAILED("gui_captcha.kick_on_failed"),
41+
42+
/**
43+
* Verification success!
44+
*/
45+
GUI_CAPTCHA_VERIFIED("gui_captcha.success"),
46+
47+
/**
48+
* In order to use this command you must be authenticated!
49+
*/
850
DENIED_COMMAND("error.denied_command"),
951

10-
/** A player with the same IP is already in game! */
52+
/**
53+
* A player with the same IP is already in game!
54+
*/
1155
SAME_IP_ONLINE("on_join_validation.same_ip_online"),
1256

13-
/** In order to chat you must be authenticated! */
57+
/**
58+
* In order to chat you must be authenticated!
59+
*/
1460
DENIED_CHAT("error.denied_chat"),
1561

1662
/** AntiBot protection mode is enabled! You have to wait some minutes before joining the server. */

src/main/java/fr/xephi/authme/message/updater/MessageUpdater.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ public static MessageKeyConfigurationData createConfigurationData() {
149149
.put("verification", "Verification code")
150150
.put("time", "Time units")
151151
.put("two_factor", "Two-factor authentication")
152+
.put("gui_captcha", "3rd party features: GUI Captcha")
152153
.build();
153154

154155
Set<String> addedKeys = new HashSet<>();

src/main/resources/messages/messages_en.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,14 @@ time:
155155
hours: 'hours'
156156
day: 'day'
157157
days: 'days'
158+
159+
# 3rd party features: GUI Captcha
160+
gui_captcha:
161+
success: '&aVerification success!'
162+
bedrock_auto_verify_success: '&aBedrock verification success!'
163+
captcha_window_name: '%random Verification'
164+
captcha_clickable_name: '%random I am human'
165+
message_on_retry: '&cVerification failed, you have %times retries left'
166+
denied_message_sending: '&cPlease be verified before chatting!'
167+
kick_on_failed: '&cPlease complete the verification!'
168+
kick_on_timeout: '&cVerification timed out!'

src/main/resources/messages/messages_zhcn.yml

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -154,13 +154,24 @@ time:
154154

155155
# Two-factor authentication
156156
two_factor:
157-
code_created: '&7您正在激活双重验证, 请打开 &a%url &7扫描二维码'
158-
confirmation_required: '&7请输入“/totp confirm <验证码>”来确认激活双重验证'
159-
code_required: '&c请输入“/totp code <验证码>”来提交验证码'
160-
already_enabled: '&a双重验证已启用'
161-
enable_error_no_code: '&c验证码丢失'
162-
enable_success: '&a已成功启用双重验证'
163-
enable_error_wrong_code: '&c验证码错误或者已经过期,请重新执行“/totp add”'
164-
not_enabled_error: '&c双重验证未在您的账号上启用,请使用“/totp add”来启用'
165-
removed_success: '&c双重验证已从您的账号上禁用'
166-
invalid_code: '&c无效的验证码'
157+
code_created: '&7您正在激活双重验证, 请打开 &a%url &7扫描二维码'
158+
confirmation_required: '&7请输入“/totp confirm <验证码>”来确认激活双重验证'
159+
code_required: '&c请输入“/totp code <验证码>”来提交验证码'
160+
already_enabled: '&a双重验证已启用'
161+
enable_error_no_code: '&c验证码丢失'
162+
enable_success: '&a已成功启用双重验证'
163+
enable_error_wrong_code: '&c验证码错误或者已经过期,请重新执行“/totp add”'
164+
not_enabled_error: '&c双重验证未在您的账号上启用,请使用“/totp add”来启用'
165+
removed_success: '&c双重验证已从您的账号上禁用'
166+
invalid_code: '&c无效的验证码'
167+
168+
# 3rd party features: GUI Captcha
169+
gui_captcha:
170+
success: '&a*** 验证完成 ***'
171+
bedrock_auto_verify_success: '&a*** 基岩版自动验证完成 ***'
172+
captcha_window_name: '&k%random&r&n请验证你是真人'
173+
captcha_clickable_name: '&k%random&r&n我是真人'
174+
message_on_retry: '&c验证失败,你还有 %times 次机会'
175+
denied_message_sending: '&c请先完成验证再聊天!'
176+
kick_on_failed: '&c请先完成验证!'
177+
kick_on_timeout: '&c验证超时'

0 commit comments

Comments
 (0)