Skip to content

Commit c241dea

Browse files
committed
Use translatable components in timer command
1 parent 664b2a1 commit c241dea

File tree

1 file changed

+203
-31
lines changed

1 file changed

+203
-31
lines changed

core/src/main/java/com/rappytv/speedruntimer/command/TimerCommand.java

Lines changed: 203 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,11 @@
1111

1212
public class TimerCommand extends Command {
1313

14-
private final SpeedrunTimerAddon addon;
15-
1614
public TimerCommand(SpeedrunTimerAddon addon) {
1715
super("timer");
18-
this.addon = addon;
1916

2017
withSubCommand(new StartSubcommand(addon));
18+
withSubCommand(new CountdownSubcommand(addon));
2119
withSubCommand(new PauseSubcommand(addon));
2220
withSubCommand(new ResumeSubcommand(addon));
2321
withSubCommand(new TimeSubcommand(addon));
@@ -33,7 +31,7 @@ public boolean execute(String prefix, String[] arguments) {
3331
"speedruntimer.command.usage",
3432
NamedTextColor.RED,
3533
Component.text(
36-
prefix + " <start/pause/resume/time/reset>",
34+
"/" + prefix + " <start/countdown/pause/resume/time/reset>",
3735
NamedTextColor.AQUA
3836
)
3937
))
@@ -53,29 +51,96 @@ protected StartSubcommand(SpeedrunTimerAddon addon) {
5351
@Override
5452
public boolean execute(String prefix, String[] arguments) {
5553
if(addon.getTimer().getState() == TimerState.RUNNING) {
56-
displayMessage("timer already running");
54+
displayMessage(
55+
Component.empty()
56+
.append(SpeedrunTimerAddon.prefix())
57+
.append(Component.translatable(
58+
"speedruntimer.command.start.alreadyRunning",
59+
NamedTextColor.RED,
60+
Component.text("/timer reset", NamedTextColor.AQUA)
61+
))
62+
);
5763
return true;
5864
}
5965
if(addon.getTimer().getState() == TimerState.PAUSED) {
6066
Laby.references().chatExecutor().chat("/timer resume", false);
6167
return true;
6268
}
63-
if(arguments.length > 0 && arguments[0].equalsIgnoreCase("down")) {
64-
if(arguments.length < 2) {
65-
displayMessage("enter number");
66-
return true;
67-
}
68-
long seconds = addon.getTimer().resolveSeconds(arguments[1]);
69-
if(seconds < 0) {
70-
displayMessage("invalid number");
71-
return true;
72-
}
73-
74-
addon.getTimer().startCountDown(seconds);
75-
} else {
76-
addon.getTimer().startCountUp();
69+
addon.getTimer().startCountUp();
70+
71+
displayMessage(
72+
Component.empty()
73+
.append(SpeedrunTimerAddon.prefix())
74+
.append(Component.translatable(
75+
"speedruntimer.command.start.success",
76+
NamedTextColor.GRAY
77+
))
78+
);
79+
return true;
80+
}
81+
}
82+
83+
private static class CountdownSubcommand extends SubCommand {
84+
85+
private final SpeedrunTimerAddon addon;
86+
87+
protected CountdownSubcommand(SpeedrunTimerAddon addon) {
88+
super("countdown", "down");
89+
this.addon = addon;
90+
}
91+
92+
@Override
93+
public boolean execute(String prefix, String[] arguments) {
94+
if(addon.getTimer().getState() == TimerState.RUNNING) {
95+
displayMessage(
96+
Component.empty()
97+
.append(SpeedrunTimerAddon.prefix())
98+
.append(Component.translatable(
99+
"speedruntimer.command.start.alreadyRunning",
100+
NamedTextColor.RED,
101+
Component.text("/timer reset", NamedTextColor.AQUA)
102+
))
103+
);
104+
return true;
77105
}
78-
displayMessage("timer started");
106+
if(addon.getTimer().getState() == TimerState.PAUSED) {
107+
Laby.references().chatExecutor().chat("/timer resume", false);
108+
return true;
109+
}
110+
111+
if(arguments.length < 1) {
112+
displayMessage(
113+
Component.empty()
114+
.append(SpeedrunTimerAddon.prefix())
115+
.append(Component.translatable(
116+
"speedruntimer.command.enterTimeValue",
117+
NamedTextColor.GRAY
118+
))
119+
);
120+
return true;
121+
}
122+
long seconds = addon.getTimer().resolveSeconds(arguments[0]);
123+
if(seconds < 0) {
124+
displayMessage(
125+
Component.empty()
126+
.append(SpeedrunTimerAddon.prefix())
127+
.append(Component.translatable(
128+
"speedruntimer.command.enterTimeValue",
129+
NamedTextColor.RED
130+
))
131+
);
132+
return true;
133+
}
134+
135+
addon.getTimer().startCountDown(seconds);
136+
displayMessage(
137+
Component.empty()
138+
.append(SpeedrunTimerAddon.prefix())
139+
.append(Component.translatable(
140+
"speedruntimer.command.start.success",
141+
NamedTextColor.GRAY
142+
))
143+
);
79144
return true;
80145
}
81146
}
@@ -92,15 +157,38 @@ protected PauseSubcommand(SpeedrunTimerAddon addon) {
92157
@Override
93158
public boolean execute(String prefix, String[] arguments) {
94159
if(addon.getTimer().getState() == TimerState.OFF) {
95-
displayMessage("no timer running");
160+
displayMessage(
161+
Component.empty()
162+
.append(SpeedrunTimerAddon.prefix())
163+
.append(Component.translatable(
164+
"speedruntimer.command.noTimerRunning",
165+
NamedTextColor.RED,
166+
Component.text("/timer start", NamedTextColor.AQUA)
167+
))
168+
);
96169
return true;
97170
}
98171
if(addon.getTimer().getState() == TimerState.PAUSED) {
99-
displayMessage("timer already paused");
172+
displayMessage(
173+
Component.empty()
174+
.append(SpeedrunTimerAddon.prefix())
175+
.append(Component.translatable(
176+
"speedruntimer.command.pause.alreadyPaused",
177+
NamedTextColor.RED,
178+
Component.text("/timer resume", NamedTextColor.AQUA)
179+
))
180+
);
100181
return true;
101182
}
102183
addon.getTimer().setState(TimerState.PAUSED);
103-
displayMessage("timer successfully paused");
184+
displayMessage(
185+
Component.empty()
186+
.append(SpeedrunTimerAddon.prefix())
187+
.append(Component.translatable(
188+
"speedruntimer.command.pause.success",
189+
NamedTextColor.GRAY
190+
))
191+
);
104192
return true;
105193
}
106194
}
@@ -116,16 +204,51 @@ protected ResumeSubcommand(SpeedrunTimerAddon addon) {
116204

117205
@Override
118206
public boolean execute(String prefix, String[] arguments) {
207+
if(addon.getTimer().getState() == TimerState.OFF) {
208+
displayMessage(
209+
Component.empty()
210+
.append(SpeedrunTimerAddon.prefix())
211+
.append(Component.translatable(
212+
"speedruntimer.command.noTimerRunning",
213+
NamedTextColor.RED,
214+
Component.text("/timer start", NamedTextColor.AQUA)
215+
))
216+
);
217+
return true;
218+
}
119219
if(addon.getTimer().getState() != TimerState.PAUSED) {
120-
displayMessage("timer not paused");
220+
displayMessage(
221+
Component.empty()
222+
.append(SpeedrunTimerAddon.prefix())
223+
.append(Component.translatable(
224+
"speedruntimer.command.resume.notPaused",
225+
NamedTextColor.RED,
226+
Component.text("/timer pause", NamedTextColor.AQUA)
227+
))
228+
);
121229
return true;
122230
}
123231
if(addon.getTimer().getDirection() == TimerDirection.COUNT_DOWN && addon.getTimer().getSeconds() == 0) {
124-
displayMessage("can't resume ended countdown");
232+
displayMessage(
233+
Component.empty()
234+
.append(SpeedrunTimerAddon.prefix())
235+
.append(Component.translatable(
236+
"speedruntimer.command.resume.endedCountdown",
237+
NamedTextColor.RED,
238+
Component.text("/timer reset", NamedTextColor.AQUA)
239+
))
240+
);
125241
return true;
126242
}
127243
addon.getTimer().setState(TimerState.RUNNING);
128-
displayMessage("timer resumed");
244+
displayMessage(
245+
Component.empty()
246+
.append(SpeedrunTimerAddon.prefix())
247+
.append(Component.translatable(
248+
"speedruntimer.command.resume.success",
249+
NamedTextColor.GRAY
250+
))
251+
);
129252
return true;
130253
}
131254
}
@@ -142,17 +265,51 @@ protected TimeSubcommand(SpeedrunTimerAddon addon) {
142265
@Override
143266
public boolean execute(String prefix, String[] arguments) {
144267
if(addon.getTimer().getState() == TimerState.OFF) {
145-
displayMessage("no timer running");
268+
displayMessage(
269+
Component.empty()
270+
.append(SpeedrunTimerAddon.prefix())
271+
.append(Component.translatable(
272+
"speedruntimer.command.noTimerRunning",
273+
NamedTextColor.RED,
274+
Component.text("/timer start", NamedTextColor.AQUA)
275+
))
276+
);
277+
return true;
278+
}
279+
if(arguments.length < 1) {
280+
displayMessage(
281+
Component.empty()
282+
.append(SpeedrunTimerAddon.prefix())
283+
.append(Component.translatable(
284+
"speedruntimer.command.enterTimeValue",
285+
NamedTextColor.GRAY
286+
))
287+
);
146288
return true;
147289
}
148290
long seconds = addon.getTimer().resolveSeconds(arguments[0]);
149291
if(seconds < 0) {
150-
displayMessage("invalid number");
292+
displayMessage(
293+
Component.empty()
294+
.append(SpeedrunTimerAddon.prefix())
295+
.append(Component.translatable(
296+
"speedruntimer.command.enterTimeValue",
297+
NamedTextColor.RED
298+
))
299+
);
151300
return true;
152301
}
153302

154303
addon.getTimer().setSeconds(seconds);
155-
displayMessage("set time to " + seconds + " seconds");
304+
displayMessage(
305+
Component.empty()
306+
.append(SpeedrunTimerAddon.prefix())
307+
.append(Component.translatable(
308+
"speedruntimer.command.time.success",
309+
NamedTextColor.GRAY,
310+
Component.text(arguments[0], NamedTextColor.AQUA)
311+
))
312+
);
156313
return true;
157314
}
158315
}
@@ -169,11 +326,26 @@ protected ResetSubcommand(SpeedrunTimerAddon addon) {
169326
@Override
170327
public boolean execute(String prefix, String[] arguments) {
171328
if(addon.getTimer().getState() == TimerState.OFF) {
172-
displayMessage("no timer running");
329+
displayMessage(
330+
Component.empty()
331+
.append(SpeedrunTimerAddon.prefix())
332+
.append(Component.translatable(
333+
"speedruntimer.command.noTimerRunning",
334+
NamedTextColor.RED,
335+
Component.text("/timer start", NamedTextColor.AQUA)
336+
))
337+
);
173338
return true;
174339
}
175340
addon.getTimer().reset();
176-
displayMessage("successfully reset");
341+
displayMessage(
342+
Component.empty()
343+
.append(SpeedrunTimerAddon.prefix())
344+
.append(Component.translatable(
345+
"speedruntimer.command.reset.success",
346+
NamedTextColor.GRAY
347+
))
348+
);
177349
return true;
178350
}
179351
}

0 commit comments

Comments
 (0)