fixed dialog closing issue and changed dialog

This commit is contained in:
jannis committed 2026-10-30 18:53:21 +01:00
1 parent ba0cc8e458
commit a4063c3300
4 files changed
+64 -32

No files matched your search

@@ -92,7 +92,7 @@ public final class Dialog {
inputs.add(text("phoneNumber", "Telefonnummer (optional)", state.phoneNumber, 30));
}
case consent -> {
title = "Einverständnis";
title = "Serverregeln";
body.add(plain(Component.text("Serverregeln", NamedTextColor.GOLD, TextDecoration.BOLD), rulesWidth));
body.add(plain(Component.text(rulesPreamble, NamedTextColor.GRAY), rulesWidth));
for (String rule : rules) {
@@ -103,25 +103,30 @@ public final class Dialog {
.append(Component.text(" | "))
.append(link("Vollständige Regeln", rulesUrl))
.build(), rulesWidth));
}
case privacy -> {
title = "Einverständnis (1/3)";
body.add(plain(Component.text(
"Mit den drei Haken erklärst du: " +
"1) Ich bin mit der Speicherung meiner in der Anmeldung angegebenen, persönlichen Daten einverstanden. " +
"2) Ich bin mit der Speicherung in Form von Logs aller meiner, beim Spielen anfallenden, " +
"Ich bin mit der Speicherung meiner in der Anmeldung angegebenen, persönlichen Daten einverstanden.",
NamedTextColor.GRAY), rulesWidth));
inputs.add(checkbox("privacy", "Ich stimme zu *", state.privacyAccepted));
}
case logs -> {
title = "Einverständnis (2/3)";
body.add(plain(Component.text(
"Ich bin mit der Speicherung in Form von Logs aller meiner, beim Spielen anfallenden, " +
"persönlichen Daten durch den Server einverstanden. " +
"Die Log-Speicherung betrifft jede Interaktion im Spiel und zugehörige Daten, " +
"z.B. Chatnachrichten, welche vom Minecraft-Client an den Server übermittelt werden. " +
"3) Ich bin mit den Regeln einverstanden und achte sie.",
"z.B. Chatnachrichten, welche vom Minecraft-Client an den Server übermittelt werden.",
NamedTextColor.GRAY), rulesWidth));
inputs.add(checkbox("privacy",
"Ich stimme der Speicherung meiner\nAnmeldedaten zu. *",
state.privacyAccepted));
inputs.add(checkbox("logs",
"Ich stimme der Speicherung meiner\nSpiel-Logs zu. *",
state.logsAccepted));
inputs.add(checkbox("rules",
"Ich akzeptiere die Regeln\nund halte sie ein. *",
state.rulesAccepted));
inputs.add(checkbox("logs", "Ich stimme zu *", state.logsAccepted));
}
case rules -> {
title = "Einverständnis (3/3)";
body.add(plain(Component.text(
"Ich bin mit den Regeln einverstanden und achte sie.",
NamedTextColor.GRAY), rulesWidth));
inputs.add(checkbox("rules", "Ich stimme zu *", state.rulesAccepted));
}
default -> throw new IllegalStateException();
}
@@ -159,11 +164,10 @@ public final class Dialog {
state.birthday = payload.getString("birthday", "").trim();
state.phoneNumber = payload.getString("phoneNumber", "").trim();
}
case consent -> {
state.privacyAccepted = payload.getBoolean("privacy", false);
state.logsAccepted = payload.getBoolean("logs", false);
state.rulesAccepted = payload.getBoolean("rules", false);
}
case consent -> {}
case privacy -> state.privacyAccepted = payload.getBoolean("privacy", false);
case logs -> state.logsAccepted = payload.getBoolean("logs", false);
case rules -> state.rulesAccepted = payload.getBoolean("rules", false);
}
}
@@ -175,9 +179,15 @@ public final class Dialog {
if (!isValidBirthday(state.birthday))
return error("Bitte gib ein richtiges Geburtsdatum an.");
}
case consent -> {
if (!(state.privacyAccepted && state.logsAccepted && state.rulesAccepted))
return error("Du musst allen drei Punkten zustimmen, um fortzufahren.");
case consent -> {}
case privacy -> {
if (!state.privacyAccepted) return error("Du musst zustimmen, um fortzufahren.");
}
case logs -> {
if (!state.logsAccepted) return error("Du musst zustimmen, um fortzufahren.");
}
case rules -> {
if (!state.rulesAccepted) return error("Du musst zustimmen, um fortzufahren.");
}
}
return null;
@@ -204,6 +214,11 @@ public final class Dialog {
);
}
private static Component link(String text, String url) {
return Component.text(text, NamedTextColor.AQUA, TextDecoration.UNDERLINED)
.clickEvent(ClickEvent.openUrl(url));
}
private static DialogInput text(String key, String label, String initial, int maxLength) {
return new DialogInput.Text(key, 300, Component.text(label), true, initial, maxLength, null);
}
@@ -228,8 +243,4 @@ public final class Dialog {
return Component.text(text, NamedTextColor.RED);
}
private static Component link(String text, String url) {
return Component.text(text, NamedTextColor.AQUA, TextDecoration.UNDERLINED)
.clickEvent(ClickEvent.openUrl(url));
}
}