diff --git a/.idea/claudeCodeEditorTabs.xml b/.idea/claudeCodeEditorTabs.xml
new file mode 100644
index 0000000..71b631d
--- /dev/null
+++ b/.idea/claudeCodeEditorTabs.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/eu/mhsl/craftattack/loginServer/Api.java b/src/main/java/eu/mhsl/craftattack/loginServer/Api.java
index d618ddf..671d41e 100644
--- a/src/main/java/eu/mhsl/craftattack/loginServer/Api.java
+++ b/src/main/java/eu/mhsl/craftattack/loginServer/Api.java
@@ -49,7 +49,9 @@ public final class Api {
}
String query = "?perPage=1&filter=" + URLEncoder.encode(filter.toString(), StandardCharsets.UTF_8);
- JsonArray items = send("GET", collection, query, null).getAsJsonArray("items");
+ JsonObject response = send("GET", collection, query, null);
+ if (!response.has("items")) return Optional.empty();
+ JsonArray items = response.getAsJsonArray("items");
return items.size() == 0 ? Optional.empty() : Optional.of(items.get(0).getAsJsonObject());
}
diff --git a/src/main/java/eu/mhsl/craftattack/loginServer/Dialog.java b/src/main/java/eu/mhsl/craftattack/loginServer/Dialog.java
index fd97821..5f2ac1a 100644
--- a/src/main/java/eu/mhsl/craftattack/loginServer/Dialog.java
+++ b/src/main/java/eu/mhsl/craftattack/loginServer/Dialog.java
@@ -53,14 +53,14 @@ public final class Dialog {
}
public static boolean handleClick(Player player, DialogState state, Key key, CompoundBinaryTag payload) {
- saveCurrentPage(state, payload);
-
if (key.equals(backKey)) {
state.previousPage();
showPage(player, state, null);
return false;
}
+ saveCurrentPage(state, payload);
+
Component error = validateCurrentPage(player, state);
if (error != null) {
showPage(player, state, error);
@@ -144,13 +144,13 @@ public final class Dialog {
null,
false,
false,
- DialogAfterAction.CLOSE,
+ state.isLastPage() ? DialogAfterAction.CLOSE : DialogAfterAction.NONE,
body,
inputs
),
buttons,
- null, // kein extra Exit-Button
- 2 // Spalten
+ null,
+ 2
));
}
diff --git a/src/main/java/eu/mhsl/craftattack/loginServer/PlayerHandler.java b/src/main/java/eu/mhsl/craftattack/loginServer/PlayerHandler.java
index f804090..a822693 100644
--- a/src/main/java/eu/mhsl/craftattack/loginServer/PlayerHandler.java
+++ b/src/main/java/eu/mhsl/craftattack/loginServer/PlayerHandler.java
@@ -3,6 +3,7 @@ package eu.mhsl.craftattack.loginServer;
import net.kyori.adventure.nbt.CompoundBinaryTag;
import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Pos;
+import net.minestom.server.entity.Player;
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
import net.minestom.server.event.player.PlayerCustomClickEvent;
import net.minestom.server.instance.InstanceManager;
@@ -18,13 +19,14 @@ public final class PlayerHandler {
private PlayerHandler() {}
public static void join(AsyncPlayerConfigurationEvent event, InstanceManager instanceManager) {
- var player = event.getPlayer();
+ Player player = event.getPlayer();
event.setSpawningInstance(instanceManager.createInstanceContainer());
player.setRespawnPoint(new Pos(0, 100, 0));
if (Api.isRegistered(player.getUuid())) {
player.kick("Du bist bereits auf Craftattack registriert, wir freuen uns auf dich!");
+ return;
}
DialogState state = states.computeIfAbsent(player.getUuid(), id -> DialogState.create());
@@ -38,7 +40,7 @@ public final class PlayerHandler {
public static void handleDialogClick(PlayerCustomClickEvent event) {
if (!Dialog.isDialogKey(event.getKey())) return;
- var player = event.getPlayer();
+ Player player = event.getPlayer();
DialogState state = states.get(player.getUuid());
if (state == null) return;
@@ -48,22 +50,24 @@ public final class PlayerHandler {
if (finished) complete(player, state);
}
- private static void complete(net.minestom.server.entity.Player player, DialogState state) {
+ private static void complete(Player player, DialogState state) {
states.remove(player.getUuid());
if (Api.isRegistered(player.getUuid())) {
player.kick("Du bist bereits auf Craftattack registriert, wir freuen uns auf dich!");
+ return;
}
player.sendMessage("Danke für deine Anmeldung.");
player.sendMessage("Du bist für das Projekt Craftattack 9 registriert!");
- Api.setProfile(player.getUuid(),player.getUsername(), state.firstName, state.secondName, state.birthday, state.phoneNumber);
+ Api.setProfile(player.getUuid(), player.getUsername(), state.firstName, state.secondName, state.birthday, state.phoneNumber);
Api.removeSecret(player.getUsername(), state.secret);
- MinecraftServer.getSchedulerManager().buildTask(() -> {
- player.kick("Anmeldung erfolgreich, wir freuen uns auf dich!");
- }).delay(Duration.ofMillis(1000)).schedule();
+ MinecraftServer.getSchedulerManager()
+ .buildTask(() -> player.kick("Anmeldung erfolgreich, wir freuen uns auf dich!"))
+ .delay(Duration.ofMillis(1000))
+ .schedule();
System.out.println("Vorname: " + state.firstName);
System.out.println("Nachname: " + state.secondName);
diff --git a/src/main/java/eu/mhsl/craftattack/loginServer/listeners/DialogOutput.java b/src/main/java/eu/mhsl/craftattack/loginServer/listeners/DialogClickListener.java
similarity index 64%
rename from src/main/java/eu/mhsl/craftattack/loginServer/listeners/DialogOutput.java
rename to src/main/java/eu/mhsl/craftattack/loginServer/listeners/DialogClickListener.java
index df17eb8..7dff506 100644
--- a/src/main/java/eu/mhsl/craftattack/loginServer/listeners/DialogOutput.java
+++ b/src/main/java/eu/mhsl/craftattack/loginServer/listeners/DialogClickListener.java
@@ -5,11 +5,9 @@ import net.minestom.server.event.Event;
import net.minestom.server.event.EventNode;
import net.minestom.server.event.player.PlayerCustomClickEvent;
-public class DialogOutput implements Listener {
+public class DialogClickListener implements Listener {
@Override
public void register(EventNode node) {
- node.addListener(PlayerCustomClickEvent.class, event ->{
- PlayerHandler.handleDialogClick(event);
- });
+ node.addListener(PlayerCustomClickEvent.class, PlayerHandler::handleDialogClick);
}
}
diff --git a/src/main/java/eu/mhsl/craftattack/loginServer/listeners/Listener.java b/src/main/java/eu/mhsl/craftattack/loginServer/listeners/Listener.java
index 7bfa426..1c7b175 100644
--- a/src/main/java/eu/mhsl/craftattack/loginServer/listeners/Listener.java
+++ b/src/main/java/eu/mhsl/craftattack/loginServer/listeners/Listener.java
@@ -13,7 +13,7 @@ public interface Listener {
List listeners = List.of(
new PlayerJoinListener(instanceManager),
new PlayerMoveListener(),
- new DialogOutput()
+ new DialogClickListener()
);
listeners.forEach(listener -> listener.register(node));
diff --git a/src/main/java/eu/mhsl/craftattack/loginServer/listeners/PlayerJoinListener.java b/src/main/java/eu/mhsl/craftattack/loginServer/listeners/PlayerJoinListener.java
index 2c2cd70..5a4683b 100644
--- a/src/main/java/eu/mhsl/craftattack/loginServer/listeners/PlayerJoinListener.java
+++ b/src/main/java/eu/mhsl/craftattack/loginServer/listeners/PlayerJoinListener.java
@@ -14,8 +14,6 @@ public class PlayerJoinListener implements Listener {
}
@Override
public void register(EventNode node) {
- node.addListener(AsyncPlayerConfigurationEvent.class, event ->{
- PlayerHandler.join(event, instanceManager);
- });
+ node.addListener(AsyncPlayerConfigurationEvent.class, event -> PlayerHandler.join(event, instanceManager));
}
}
diff --git a/src/main/java/eu/mhsl/craftattack/loginServer/listeners/PlayerMoveListener.java b/src/main/java/eu/mhsl/craftattack/loginServer/listeners/PlayerMoveListener.java
index f6365f5..c09dff2 100644
--- a/src/main/java/eu/mhsl/craftattack/loginServer/listeners/PlayerMoveListener.java
+++ b/src/main/java/eu/mhsl/craftattack/loginServer/listeners/PlayerMoveListener.java
@@ -7,8 +7,6 @@ import net.minestom.server.event.player.PlayerMoveEvent;
public class PlayerMoveListener implements Listener {
@Override
public void register(EventNode node) {
- node.addListener(PlayerMoveEvent.class, event -> {
- event.setCancelled(true);
- });
+ node.addListener(PlayerMoveEvent.class, event -> event.setCancelled(true));
}
}