Skip to content
This repository was archived by the owner on Oct 14, 2023. It is now read-only.

Commit 9eeddee

Browse files
committed
填充一点文本提示
1 parent 7ee2781 commit 9eeddee

File tree

10 files changed

+116
-58
lines changed

10 files changed

+116
-58
lines changed

src/main/java/moe/caa/fabric/quitconfirm/client/config/Config.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import moe.caa.fabric.quitconfirm.client.screen.confirm.style.BaseStyle;
99
import moe.caa.fabric.quitconfirm.client.screen.confirm.style.BedrockStyle;
1010
import moe.caa.fabric.quitconfirm.client.screen.confirm.style.ClassicStyle;
11+
import net.minecraft.text.Text;
12+
import net.minecraft.text.TranslatableTextContent;
1113

1214
import java.io.IOException;
1315
import java.nio.file.Files;
@@ -85,25 +87,25 @@ public <T extends Enum<T>> T nextEnum(Class<T> tClass, T value) {
8587
}
8688

8789
public enum ConfirmScreenDisplayTypeEnum {
88-
CLASSIC("经典", ClassicStyle::new),
89-
BEDROCK("基岩", BedrockStyle::new);
90-
public final String displayName;
90+
CLASSIC(Text.translatable("config.quitconfirm.screentype.classic"), ClassicStyle::new),
91+
BEDROCK(Text.translatable("config.quitconfirm.screentype.bedrock"), BedrockStyle::new);
92+
public final Text displayName;
9193
public final Supplier<BaseStyle> baseStyleSupplier;
9294

93-
ConfirmScreenDisplayTypeEnum(String displayName, Supplier<BaseStyle> baseStyleSupplier) {
95+
ConfirmScreenDisplayTypeEnum(Text displayName, Supplier<BaseStyle> baseStyleSupplier) {
9496
this.displayName = displayName;
9597
this.baseStyleSupplier = baseStyleSupplier;
9698
}
9799
}
98100

99101

100102
public enum ConfirmTypeEnum {
101-
TOAST("土司"),
102-
SCREEN("屏幕"),
103-
NONE("关闭");
104-
public final String displayName;
103+
TOAST(Text.translatable("config.quitconfirm.confirmtype.toast")),
104+
SCREEN(Text.translatable("config.quitconfirm.confirmtype.screen")),
105+
NONE(Text.translatable("config.quitconfirm.confirmtype.none"));
106+
public final Text displayName;
105107

106-
ConfirmTypeEnum(String displayName) {
108+
ConfirmTypeEnum(Text displayName) {
107109
this.displayName = displayName;
108110
}
109111
}

src/main/java/moe/caa/fabric/quitconfirm/client/handle/ToastQuitHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44
import moe.caa.fabric.quitconfirm.client.event.EventResult;
55
import moe.caa.fabric.quitconfirm.client.toast.QuitToast;
66
import net.minecraft.client.MinecraftClient;
7+
import net.minecraft.text.Text;
78

89
public class ToastQuitHandler {
9-
private final String message;
10+
private final Text message;
1011
private State state = State.INACTIVE;
1112
private long startTime = 0;
1213

13-
public ToastQuitHandler(String message) {
14+
public ToastQuitHandler(Text message) {
1415
this.message = message;
1516
}
1617

src/main/java/moe/caa/fabric/quitconfirm/client/main/QuitConfirm.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717

1818
public class QuitConfirm implements ClientModInitializer {
1919
public static final Logger LOGGER = LoggerFactory.getLogger("QuitConfirm");
20-
private final ToastQuitHandler toastInFinalQuitHandler = new ToastQuitHandler("退出这个游戏,请再次操作");
21-
private final ToastQuitHandler toastInSinglePlayerQuitHandle = new ToastQuitHandler("退出单人游戏,请再次操作");
22-
private final ToastQuitHandler toastInMultiplayerQuitHandle = new ToastQuitHandler("退出多人游戏,请再次操作");
20+
private final ToastQuitHandler toastInFinalQuitHandler = new ToastQuitHandler(Text.translatable("toast.quitconfirm.confirm.content.infinal"));
21+
private final ToastQuitHandler toastInSinglePlayerQuitHandle = new ToastQuitHandler(Text.translatable("toast.quitconfirm.confirm.content.insingleplay"));
22+
private final ToastQuitHandler toastInMultiplayerQuitHandle = new ToastQuitHandler(Text.translatable("toast.quitconfirm.confirm.content.inmultiplay"));
2323

2424
@Override
2525
public void onInitializeClient() {
@@ -29,7 +29,7 @@ public void onInitializeClient() {
2929
return toastInFinalQuitHandler.trigger();
3030
}
3131
if (Config.config.confirmTypeInFinalQuit == Config.ConfirmTypeEnum.SCREEN) {
32-
MinecraftClient.getInstance().setScreen(new ConfirmScreen(MinecraftClient.getInstance().currentScreen, Text.literal("退出这个游戏"), () -> MinecraftClient.getInstance().scheduleStop()));
32+
MinecraftClient.getInstance().setScreen(new ConfirmScreen(MinecraftClient.getInstance().currentScreen, Text.translatable("screen.quitconfirm.confirm.content.infinal"), () -> MinecraftClient.getInstance().scheduleStop()));
3333
return EventResult.CANCEL;
3434
}
3535
return EventResult.PASS;
@@ -51,7 +51,7 @@ public void onInitializeClient() {
5151
return toastInSinglePlayerQuitHandle.trigger();
5252
}
5353
if (Config.config.confirmTypeInSinglePlayer == Config.ConfirmTypeEnum.SCREEN) {
54-
MinecraftClient.getInstance().setScreen(new ConfirmScreen(MinecraftClient.getInstance().currentScreen, Text.literal("退出单人游戏"), button::onPress));
54+
MinecraftClient.getInstance().setScreen(new ConfirmScreen(MinecraftClient.getInstance().currentScreen, Text.translatable("screen.quitconfirm.confirm.content.insingleplay"), button::onPress));
5555
return EventResult.CANCEL;
5656
}
5757
return EventResult.PASS;
@@ -61,7 +61,7 @@ public void onInitializeClient() {
6161
return toastInMultiplayerQuitHandle.trigger();
6262
}
6363
if (Config.config.confirmTypeInMultiplayer == Config.ConfirmTypeEnum.SCREEN) {
64-
MinecraftClient.getInstance().setScreen(new ConfirmScreen(MinecraftClient.getInstance().currentScreen, Text.literal("退出多人游戏"), button::onPress));
64+
MinecraftClient.getInstance().setScreen(new ConfirmScreen(MinecraftClient.getInstance().currentScreen, Text.translatable("screen.quitconfirm.confirm.content.inmultiplay"), button::onPress));
6565
return EventResult.CANCEL;
6666
}
6767
return EventResult.PASS;

src/main/java/moe/caa/fabric/quitconfirm/client/screen/confirm/ConfirmScreen.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99

1010
public class ConfirmScreen extends Screen {
1111
private final Text message;
12-
private final ButtonWidget.PressAction onCancel;
13-
private final ButtonWidget.PressAction onConfirm;
12+
private final Runnable onCancel;
13+
private final Runnable onConfirm;
1414
private final long openTime;
1515
private final BaseStyle style = Config.config.confirmScreenDisplayType.baseStyleSupplier.get();
1616
private ButtonWidget cancel;
@@ -23,15 +23,14 @@ public boolean isConfirmed() {
2323
}
2424

2525
public ConfirmScreen(Screen parentScreen, Text message, Runnable confirm) {
26-
this(parentScreen, message, button -> confirm.run());
27-
}
28-
29-
public ConfirmScreen(Screen parentScreen, Text message, ButtonWidget.PressAction confirm) {
30-
super(Text.literal("你确定?"));
31-
openTime = System.currentTimeMillis();
26+
super(Text.translatable("screen.quitconfirm.confirm.title"));
27+
this.openTime = System.currentTimeMillis();
3228
this.message = message;
33-
onCancel = (buttonWidget) -> this.client.setScreen(parentScreen);
34-
onConfirm = confirm;
29+
this.onCancel = () -> this.client.setScreen(parentScreen);
30+
this.onConfirm = () -> {
31+
confirmed = true;
32+
confirm.run();
33+
};
3534
}
3635

3736
@Override
@@ -50,10 +49,10 @@ public void tick() {
5049
private void initButton() {
5150
confirm = style.generateConfirmButtons(this, button -> {
5251
confirmed = true;
53-
confirm.onPress();
52+
onConfirm.run();
5453
});
5554

56-
cancel = style.generateCancelButtons(this, onCancel);
55+
cancel = style.generateCancelButtons(this, button -> onCancel.run());
5756

5857
confirm.active = false;
5958
cancel.active = false;
@@ -70,7 +69,7 @@ public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {
7069
@Override
7170
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
7271
if (Config.config.enableScreenShortcutKey && keyCode == 257 /* ENTER */) {
73-
onConfirm.onPress(confirm);
72+
onConfirm.run();
7473
}
7574
return super.keyPressed(keyCode, scanCode, modifiers);
7675
}
@@ -79,4 +78,9 @@ public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
7978
public boolean shouldCloseOnEsc() {
8079
return Config.config.enableScreenShortcutKey;
8180
}
81+
82+
@Override
83+
public void close() {
84+
onCancel.run();
85+
}
8286
}

src/main/java/moe/caa/fabric/quitconfirm/client/screen/setting/SettingScreen.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class SettingScreen extends Screen {
1616
private ButtonWidget back;
1717

1818
public SettingScreen(Screen screen) {
19-
super(Text.literal("设置"));
19+
super(Text.translatable("config.quitconfirm.setting.title"));
2020
parentScreen = screen;
2121
}
2222

@@ -31,50 +31,50 @@ protected void init() {
3131

3232
SettingElementListWidget listWidget = new SettingElementListWidget(this.client, this.width, this.height, 30 /* 上边距 */, height - 40/* 下边距 */, 24);
3333
{
34-
MutableText category = Text.literal("设置退出二次确认的方式");
34+
MutableText category = Text.translatable("config.quitconfirm.setting.confirmtype.category");
3535
listWidget.addEntry(listWidget.new CategoryEntry(category.setStyle(category.getStyle().withBold(true)), 11184810));
3636

3737
listWidget.addEntry(listWidget.new ButtonListEntry(ButtonWidget
38-
.builder(Text.literal(Config.config.confirmTypeInFinalQuit.displayName), (button) -> {
38+
.builder(Config.config.confirmTypeInFinalQuit.displayName, (button) -> {
3939
Config.config.confirmTypeInFinalQuit = Config.config.nextEnum(Config.ConfirmTypeEnum.class, Config.config.confirmTypeInFinalQuit);
40-
button.setMessage(Text.literal(Config.config.confirmTypeInFinalQuit.displayName));
40+
button.setMessage((Config.config.confirmTypeInFinalQuit.displayName));
4141
})
42-
.dimensions(0, 0, 40, 20).build(), Text.literal("关闭游戏窗口时的确认方式")));
42+
.dimensions(0, 0, 50, 20).build(), Text.translatable("config.quitconfirm.setting.confirmtype.infinal")));
4343

4444
listWidget.addEntry(listWidget.new ButtonListEntry(ButtonWidget
45-
.builder(Text.literal(Config.config.confirmTypeInSinglePlayer.displayName), (button) -> {
45+
.builder((Config.config.confirmTypeInSinglePlayer.displayName), (button) -> {
4646
Config.config.confirmTypeInSinglePlayer = Config.config.nextEnum(Config.ConfirmTypeEnum.class, Config.config.confirmTypeInSinglePlayer);
47-
button.setMessage(Text.literal(Config.config.confirmTypeInSinglePlayer.displayName));
47+
button.setMessage((Config.config.confirmTypeInSinglePlayer.displayName));
4848
})
49-
.dimensions(0, 0, 40, 20).build(), Text.literal("退出单人游戏时的确认方式")));
49+
.dimensions(0, 0, 50, 20).build(), Text.translatable("config.quitconfirm.setting.confirmtype.insingleplayer")));
5050

5151
listWidget.addEntry(listWidget.new ButtonListEntry(ButtonWidget
52-
.builder(Text.literal(Config.config.confirmTypeInMultiplayer.displayName), (button) -> {
52+
.builder((Config.config.confirmTypeInMultiplayer.displayName), (button) -> {
5353
Config.config.confirmTypeInMultiplayer = Config.config.nextEnum(Config.ConfirmTypeEnum.class, Config.config.confirmTypeInMultiplayer);
54-
button.setMessage(Text.literal(Config.config.confirmTypeInMultiplayer.displayName));
54+
button.setMessage((Config.config.confirmTypeInMultiplayer.displayName));
5555
})
56-
.dimensions(0, 0, 40, 20).build(), Text.literal("退出多人游戏时的确认方式")));
56+
.dimensions(0, 0, 50, 20).build(), Text.translatable("config.quitconfirm.setting.confirmtype.inmultiplayer")));
5757
}
5858
{
5959
MutableText category = Text.literal("二次确认界面屏幕设定");
6060
listWidget.addEntry(listWidget.new CategoryEntry(category.setStyle(category.getStyle().withBold(true)), 11184810));
6161

6262
listWidget.addEntry(listWidget.new ButtonListEntry(ButtonWidget
63-
.builder(Text.literal(Config.config.confirmScreenDisplayType.displayName), (button) -> {
63+
.builder((Config.config.confirmScreenDisplayType.displayName), (button) -> {
6464
Config.config.confirmScreenDisplayType = Config.config.nextEnum(Config.ConfirmScreenDisplayTypeEnum.class, Config.config.confirmScreenDisplayType);
65-
button.setMessage(Text.literal(Config.config.confirmScreenDisplayType.displayName));
65+
button.setMessage((Config.config.confirmScreenDisplayType.displayName));
6666
})
67-
.dimensions(0, 0, 40, 20).build(), Text.literal("确认屏幕样式")));
67+
.dimensions(0, 0, 50, 20).build(), Text.literal("确认屏幕样式")));
6868

6969

7070
listWidget.addEntry(listWidget.new ButtonListEntry(ButtonWidget
7171
.builder(Config.config.enableScreenShortcutKey ? ScreenTexts.ON : ScreenTexts.OFF, (button) -> {
7272
Config.config.enableScreenShortcutKey = !Config.config.enableScreenShortcutKey;
7373
button.setMessage(Config.config.enableScreenShortcutKey ? ScreenTexts.ON : ScreenTexts.OFF);
7474
})
75-
.dimensions(0, 0, 40, 20).build(), Text.literal("允许在二次确认屏幕上使用快捷键")));
75+
.dimensions(0, 0, 50, 20).build(), Text.literal("允许在二次确认屏幕上使用快捷键")));
7676

77-
TextFieldWidget keepDark = new TextFieldWidget(client.textRenderer, 0, 0, 38, 20, Text.empty());
77+
TextFieldWidget keepDark = new TextFieldWidget(client.textRenderer, 0, 0, 48, 20, Text.empty());
7878
keepDark.setText(String.valueOf(Config.config.keepDarkInConfirmScreenTime));
7979
keepDark.setChangedListener(new PositiveLongParser(keepDark, (it) -> Config.config.keepDarkInConfirmScreenTime = it));
8080
listWidget.addEntry(listWidget.new InputListEntry(keepDark, Text.literal("保持确认屏幕按钮不可用时长")));
@@ -83,17 +83,17 @@ protected void init() {
8383
MutableText category = Text.literal("二次确认土司设定");
8484
listWidget.addEntry(listWidget.new CategoryEntry(category.setStyle(category.getStyle().withBold(true)), 11184810));
8585

86-
TextFieldWidget toastDisplayTime = new TextFieldWidget(client.textRenderer, 0, 0, 38, 20, Text.empty());
86+
TextFieldWidget toastDisplayTime = new TextFieldWidget(client.textRenderer, 0, 0, 48, 20, Text.empty());
8787
toastDisplayTime.setText(String.valueOf(Config.config.toastConfirmDisplayTime));
8888
toastDisplayTime.setChangedListener(new PositiveLongParser(toastDisplayTime, (it) -> Config.config.toastConfirmDisplayTime = it));
8989
listWidget.addEntry(listWidget.new InputListEntry(toastDisplayTime, Text.literal("土司持续时间")));
9090

91-
TextFieldWidget toastStartAliveTime = new TextFieldWidget(client.textRenderer, 0, 0, 38, 20, Text.empty());
91+
TextFieldWidget toastStartAliveTime = new TextFieldWidget(client.textRenderer, 0, 0, 48, 20, Text.empty());
9292
toastStartAliveTime.setText(String.valueOf(Config.config.toastConfirmStartAliveTime));
9393
toastStartAliveTime.setChangedListener(new PositiveLongParser(toastStartAliveTime, (it) -> Config.config.toastConfirmStartAliveTime = it));
9494
listWidget.addEntry(listWidget.new InputListEntry(toastStartAliveTime, Text.literal("土司响应开始时间")));
9595

96-
TextFieldWidget toastEndAliveTime = new TextFieldWidget(client.textRenderer, 0, 0, 38, 20, Text.empty());
96+
TextFieldWidget toastEndAliveTime = new TextFieldWidget(client.textRenderer, 0, 0, 48, 20, Text.empty());
9797
toastEndAliveTime.setText(String.valueOf(Config.config.toastConfirmEndAliveTime));
9898
toastEndAliveTime.setChangedListener(new PositiveLongParser(toastEndAliveTime, (it) -> Config.config.toastConfirmEndAliveTime = it));
9999
listWidget.addEntry(listWidget.new InputListEntry(toastEndAliveTime, Text.literal("土司响应结束时间")));

src/main/java/moe/caa/fabric/quitconfirm/client/toast/BaseToast.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@
33
import net.minecraft.client.toast.Toast;
44
import net.minecraft.client.toast.ToastManager;
55
import net.minecraft.client.util.math.MatrixStack;
6+
import net.minecraft.text.Text;
67
import net.minecraft.util.Identifier;
78

89
public abstract class BaseToast implements Toast {
910
protected static final Identifier texture = new Identifier("quitconfirm", "textures/gui/toasts.png");
10-
protected final String title;
11-
protected final String message;
11+
protected final Text title;
12+
protected final Text message;
1213
protected final long keepTime;
1314

14-
protected BaseToast(String title, String message, long keepTime) {
15+
protected BaseToast(Text title, Text message, long keepTime) {
1516
this.title = title;
1617
this.message = message;
1718
this.keepTime = keepTime;

src/main/java/moe/caa/fabric/quitconfirm/client/toast/QuitToast.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,27 @@
99
import java.awt.*;
1010

1111
public class QuitToast extends BaseToast {
12-
public QuitToast(String message, long keepTime) {
13-
super("退出提醒", message, keepTime);
12+
public QuitToast(Text message, long keepTime) {
13+
super(Text.translatable("toast.quitconfirm.confirm.title"), message, keepTime);
14+
}
15+
16+
@Override
17+
public int getWidth() {
18+
return 241;
19+
}
20+
21+
@Override
22+
public int getHeight() {
23+
return 32;
1424
}
1525

1626
@Override
1727
protected void drawToast(MatrixStack matrices, ToastManager manager) {
1828
RenderSystem.setShaderTexture(0, texture);
1929
RenderSystem.setShaderColor(1.0f, 1.0f, 1.0f, 1.0f);
20-
DrawableHelper.drawTexture(matrices, 0, 0, 0, 0, 160, 32);
21-
DrawableHelper.drawTexture(matrices, 8, 0, 241, 0, 15, 30);
22-
manager.getClient().textRenderer.drawWithShadow(matrices, Text.literal(title), 35.0f, 7.0f, Color.WHITE.getRGB());
23-
manager.getClient().textRenderer.drawWithShadow(matrices, Text.literal(message), 35.0f, 18.0f, Color.WHITE.getRGB());
30+
DrawableHelper.drawTexture(matrices, 0, 0, 0, 0, getWidth(), getHeight());
31+
DrawableHelper.drawTexture(matrices, 8, 0, 242, 0, 15, 30);
32+
manager.getClient().textRenderer.drawWithShadow(matrices, (title), 35.0f, 7.0f, Color.WHITE.getRGB());
33+
manager.getClient().textRenderer.drawWithShadow(matrices, (message), 35.0f, 18.0f, Color.WHITE.getRGB());
2434
}
2535
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"toast.quitconfirm.confirm.title": "Exit secondary confirmation.",
3+
"toast.quitconfirm.confirm.content.infinal": "Close the game, please try again.",
4+
"toast.quitconfirm.confirm.content.insingleplay": "Exit single player game, please try again.",
5+
"toast.quitconfirm.confirm.content.inmultiplay": "Exit multi player game, please try again.",
6+
"screen.quitconfirm.confirm.title": "Are you sure?",
7+
"screen.quitconfirm.confirm.content.infinal": "Close the game.",
8+
"screen.quitconfirm.confirm.content.insingleplay": "Exit single player game.",
9+
"screen.quitconfirm.confirm.content.inmultiplay": "Exit multi player game.",
10+
"config.quitconfirm.confirmtype.toast": "Toast",
11+
"config.quitconfirm.confirmtype.screen": "Screen",
12+
"config.quitconfirm.confirmtype.none": "Disable",
13+
"config.quitconfirm.screentype.classic": "Classic",
14+
"config.quitconfirm.screentype.bedrock": "Bedrock",
15+
"config.quitconfirm.setting.title": "Settings",
16+
"config.quitconfirm.setting.confirmtype.category": "Set the secondary confirmation method.",
17+
"config.quitconfirm.setting.confirmtype.infinal": "When closing the window.",
18+
"config.quitconfirm.setting.confirmtype.inmultiplayer": "When exiting a multiplayer game.",
19+
"config.quitconfirm.setting.confirmtype.insingleplayer": "When exiting a single player game."
20+
}

0 commit comments

Comments
 (0)