@@ -53,33 +53,119 @@ public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
5353 .append (Component .text ("Nothing changed! Maintenance is currently activated!" , NamedTextColor .RED )));
5454 }
5555 } else {
56- ServerSettingsAPI .getApi ().enableMaintenance ("" , null , null , null );
57- if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
58- player .sendMessage (Statements .getPrefix ()
59- .append (Component .text ("Die Wartung hat begonnen." , NamedTextColor .GREEN )));
56+ if (ServerSettingsAPI .getApi ().getMaintenanceStart () == null ) {
57+ ServerSettingsAPI .getApi ().enableMaintenance ("" , null , null , null );
58+ if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
59+ player .sendMessage (Statements .getPrefix ()
60+ .append (Component .text ("Die Wartung hat begonnen." , NamedTextColor .GREEN )));
61+ } else {
62+ player .sendMessage (Statements .getPrefix ()
63+ .append (Component .text ("Maintenance was started." , NamedTextColor .GREEN )));
64+ }
65+ for (Player onlinePlayer : getOnlinePlayers ()) {
66+ if (onlinePlayer .isOp () || RankAPI .getApi ().getRankId (onlinePlayer ) > 7 ) continue ;
67+ if (LanguageAPI .getApi ().getLanguage (onlinePlayer ) == 2 ) {
68+ onlinePlayer .kick (Component .text ("Der Server ist nun in Wartung! Bitte warten Sie, bis es weitere Informationen gibt." ));
69+ } else {
70+ onlinePlayer .kick (Component .text ("The server is in maintenance! Please wait until there is more information." ));
71+ }
72+ }
6073 } else {
61- player .sendMessage (Statements .getPrefix ()
62- .append (Component .text ("Maintenance was started." , NamedTextColor .GREEN )));
63- }
64- for (Player onlinePlayer : getOnlinePlayers ()) {
65- if (onlinePlayer .isOp () || RankAPI .getApi ().getRankId (onlinePlayer ) > 7 ) continue ;
66- if (LanguageAPI .getApi ().getLanguage (onlinePlayer ) == 2 ) {
67- onlinePlayer .kick (Component .text ("Der Server ist nun in Wartung! Bitte warten Sie, bis es weitere Informationen gibt." ));
74+ ServerSettingsAPI .getApi ().setMaintenanceEnabled (true );
75+ if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
76+ player .sendMessage (Statements .getPrefix ()
77+ .append (Component .text ("Die Wartung hat nun frühzeitiger begonnen als geplant." , NamedTextColor .GREEN )));
6878 } else {
69- onlinePlayer .kick (Component .text ("The server is in maintenance! Please wait until there is more information." ));
79+ player .sendMessage (Statements .getPrefix ()
80+ .append (Component .text ("Maintenance was started earlier than planned." , NamedTextColor .GREEN )));
81+ }
82+ for (Player onlinePlayer : getOnlinePlayers ()) {
83+ if (onlinePlayer .isOp () || RankAPI .getApi ().getRankId (onlinePlayer ) > 7 ) continue ;
84+ if (LanguageAPI .getApi ().getLanguage (onlinePlayer ) == 2 ) {
85+ onlinePlayer .kick (Component .text ("Der Server ist nun in Wartung! Bitte warten Sie, bis es weitere Informationen gibt." ));
86+ } else {
87+ onlinePlayer .kick (Component .text ("The server is in maintenance! Please wait until there is more information." ));
88+ }
7089 }
7190 }
7291 }
7392 break ;
7493 }
7594 case "off" : {
7695 if (!ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
77- if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
78- player .sendMessage (Statements .getPrefix ()
79- .append (Component .text ("Nichts hat sich geändert! Aktuell sind keine Wartungen!" , NamedTextColor .RED )));
96+ Instant maintenanceStart = ServerSettingsAPI .getApi ().getMaintenanceStart ();
97+ if (maintenanceStart == null ) {
98+ if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {player .sendMessage (Statements .getPrefix ()
99+ .append (Component .text ("Nichts hat sich geändert! Aktuell sind keine Wartungen!" , NamedTextColor .RED )));} else {player .sendMessage (Statements .getPrefix ()
100+ .append (Component .text ("Nothing changed! There is currently no maintenance!" , NamedTextColor .RED )));}
80101 } else {
81- player .sendMessage (Statements .getPrefix ()
82- .append (Component .text ("Nothing changed! There is currently no maintenance!" , NamedTextColor .RED )));
102+
103+ Instant maintenanceEnd = ServerSettingsAPI .getApi ().getMaintenanceEstimatedEnd ();
104+ Instant maintenanceDeadline = ServerSettingsAPI .getApi ().getMaintenanceDeadline ();
105+ Instant now = Instant .now ();
106+
107+ ServerSettingsAPI .getApi ().disableMaintenance ();
108+ if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
109+ player .sendMessage (Statements .getPrefix ()
110+ .append (Component .text ("Die geplante Wartung wurde abgebrochen." , NamedTextColor .WHITE )));
111+
112+ long startDuration = Math .abs (Duration .between (maintenanceStart , now ).getSeconds ());
113+ Component formattedStart = FormatNumbers .formatDuration (startDuration );
114+ player .sendMessage (Statements .getPrefix ()
115+ .append (Component .text ("Die Wartung hätte in " , NamedTextColor .GRAY ))
116+ .append (formattedStart )
117+ .append (Component .text (" begonnen." , NamedTextColor .GRAY )));
118+
119+ if (maintenanceEnd != null ) {
120+ long endDuration = Duration .between (maintenanceStart , maintenanceEnd ).getSeconds ();
121+ Component formattedEnd = FormatNumbers .formatDuration (Math .abs (endDuration ));
122+
123+ player .sendMessage (Statements .getPrefix ()
124+ .append (Component .text ("Die Wartung sollte voraussichtlich " , NamedTextColor .BLUE ))
125+ .append (formattedEnd )
126+ .append (Component .text (" gebraucht." , NamedTextColor .BLUE )));
127+ }
128+
129+ if (maintenanceDeadline != null ) {
130+ long deadlineDuration = Duration .between (now , maintenanceDeadline ).getSeconds ();
131+ Component formattedDeadline = FormatNumbers .formatDuration (Math .abs (deadlineDuration ));
132+
133+ player .sendMessage (Statements .getPrefix ()
134+ .append (Component .text ("Die Wartung hätte in " , NamedTextColor .GOLD ))
135+ .append (formattedDeadline )
136+ .append (Component .text (" automatisch beendet werden sollen." , NamedTextColor .GOLD )));
137+ }
138+ } else {
139+ player .sendMessage (Statements .getPrefix ()
140+ .append (Component .text ("The planned maintenance was cancelled." , NamedTextColor .WHITE )));
141+
142+ long startDuration = Math .abs (Duration .between (maintenanceStart , now ).getSeconds ());
143+ Component formattedStart = FormatNumbers .formatDuration (startDuration );
144+ player .sendMessage (Statements .getPrefix ()
145+ .append (Component .text ("The maintenance should've started in " , NamedTextColor .GRAY ))
146+ .append (formattedStart )
147+ .append (Component .text ("." , NamedTextColor .GRAY )));
148+
149+ if (maintenanceEnd != null ) {
150+ long endDuration = Duration .between (maintenanceStart , maintenanceEnd ).getSeconds ();
151+ Component formattedEnd = FormatNumbers .formatDuration (Math .abs (endDuration ));
152+
153+ player .sendMessage (Statements .getPrefix ()
154+ .append (Component .text ("The maintenance was estimated to take " , NamedTextColor .BLUE ))
155+ .append (formattedEnd )
156+ .append (Component .text (" ." , NamedTextColor .BLUE )));
157+ }
158+
159+ if (maintenanceDeadline != null ) {
160+ long deadlineDuration = Duration .between (now , maintenanceDeadline ).getSeconds ();
161+ Component formattedDeadline = FormatNumbers .formatDuration (Math .abs (deadlineDuration ));
162+
163+ player .sendMessage (Statements .getPrefix ()
164+ .append (Component .text ("The maintenance would have been automatically disabled in " , NamedTextColor .GOLD ))
165+ .append (formattedDeadline )
166+ .append (Component .text ("." , NamedTextColor .GOLD )));
167+ }
168+ }
83169 }
84170 } else {
85171 Instant maintenanceStart = ServerSettingsAPI .getApi ().getMaintenanceStart ();
@@ -207,17 +293,6 @@ public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
207293 return ;
208294 }
209295
210- if (!ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
211- if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
212- player .sendMessage (Statements .getPrefix ()
213- .append (Component .text ("Nichts hat sich geändert! Aktuell sind keine Wartungen!" , NamedTextColor .RED )));
214- } else {
215- player .sendMessage (Statements .getPrefix ()
216- .append (Component .text ("Nothing changed! There is currently no maintenance!" , NamedTextColor .RED )));
217- }
218- break ;
219- }
220-
221296 Instant startTime = TimeUtil .parseTimeToInstant (args [1 ]);
222297 if (startTime == null ) {
223298 if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
@@ -232,10 +307,10 @@ public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
232307 ServerSettingsAPI .getApi ().setMaintenanceStart (startTime );
233308 if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
234309 player .sendMessage (Statements .getPrefix ()
235- .append (Component .text ("Der Wartungsstart wurde erfolgreich aktualisiert !" , NamedTextColor .GREEN )));
310+ .append (Component .text ("Die Wartung wurde erfolgreich geplant !" , NamedTextColor .GREEN )));
236311 } else {
237312 player .sendMessage (Statements .getPrefix ()
238- .append (Component .text ("The maintenance start was successfully updated !" , NamedTextColor .GREEN )));
313+ .append (Component .text ("The maintenance was successfully planned !" , NamedTextColor .GREEN )));
239314 }
240315 break ;
241316 }
@@ -255,7 +330,18 @@ public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
255330 return ;
256331 }
257332
258- if (!ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
333+ if (ServerSettingsAPI .getApi ().getMaintenanceStart () == null && !ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
334+ if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
335+ player .sendMessage (Statements .getPrefix ()
336+ .append (Component .text ("Nichts hat sich geändert! Aktuell sind keine Wartungen geplant!" , NamedTextColor .RED )));
337+ } else {
338+ player .sendMessage (Statements .getPrefix ()
339+ .append (Component .text ("Nothing changed! There is no maintenance planned!" , NamedTextColor .RED )));
340+ }
341+ break ;
342+ }
343+
344+ if (ServerSettingsAPI .getApi ().getMaintenanceStart () != null && !ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
259345 if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
260346 player .sendMessage (Statements .getPrefix ()
261347 .append (Component .text ("Nichts hat sich geändert! Aktuell sind keine Wartungen!" , NamedTextColor .RED )));
@@ -303,7 +389,18 @@ public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
303389 return ;
304390 }
305391
306- if (!ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
392+ if (ServerSettingsAPI .getApi ().getMaintenanceStart () == null && !ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
393+ if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
394+ player .sendMessage (Statements .getPrefix ()
395+ .append (Component .text ("Nichts hat sich geändert! Aktuell sind keine Wartungen geplant!" , NamedTextColor .RED )));
396+ } else {
397+ player .sendMessage (Statements .getPrefix ()
398+ .append (Component .text ("Nothing changed! There is no maintenance planned!" , NamedTextColor .RED )));
399+ }
400+ break ;
401+ }
402+
403+ if (ServerSettingsAPI .getApi ().getMaintenanceStart () != null && !ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
307404 if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
308405 player .sendMessage (Statements .getPrefix ()
309406 .append (Component .text ("Nichts hat sich geändert! Aktuell sind keine Wartungen!" , NamedTextColor .RED )));
@@ -351,7 +448,18 @@ public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
351448 return ;
352449 }
353450
354- if (!ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
451+ if (ServerSettingsAPI .getApi ().getMaintenanceStart () == null && !ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
452+ if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
453+ player .sendMessage (Statements .getPrefix ()
454+ .append (Component .text ("Nichts hat sich geändert! Aktuell sind keine Wartungen geplant!" , NamedTextColor .RED )));
455+ } else {
456+ player .sendMessage (Statements .getPrefix ()
457+ .append (Component .text ("Nothing changed! There is no maintenance planned!" , NamedTextColor .RED )));
458+ }
459+ break ;
460+ }
461+
462+ if (ServerSettingsAPI .getApi ().getMaintenanceStart () != null && !ServerSettingsAPI .getApi ().isMaintenanceEnabled ()) {
355463 if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
356464 player .sendMessage (Statements .getPrefix ()
357465 .append (Component .text ("Nichts hat sich geändert! Aktuell sind keine Wartungen!" , NamedTextColor .RED )));
0 commit comments