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)); } }