fix dialog flow and cleanup listeners
This commit is contained in:
1 parent
d70b3b826e
commit
78a01d9654
8 files changed
+44
-23
No files matched your search
Generated
+21
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ClaudeCodeEditorTabs">
|
||||
<option name="activeSessionId" value="fe25343b-25e1-4de3-ac2a-8ba16e4c38b9" />
|
||||
<option name="openSessionIds">
|
||||
<list>
|
||||
<option value="fe25343b-25e1-4de3-ac2a-8ba16e4c38b9" />
|
||||
</list>
|
||||
</option>
|
||||
<option name="sessionPaths">
|
||||
<map>
|
||||
<entry key="fe25343b-25e1-4de3-ac2a-8ba16e4c38b9" value="/sessions/90f5ec6e-0a41-4a6f-9288-12703fc962dd" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="sessionTitles">
|
||||
<map>
|
||||
<entry key="fe25343b-25e1-4de3-ac2a-8ba16e4c38b9" value="/simplfy" />
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
@@ -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,11 +50,12 @@ 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.");
|
||||
@@ -61,9 +64,10 @@ public final class PlayerHandler {
|
||||
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);
|
||||
|
||||
+2
-4
@@ -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<Event> node) {
|
||||
node.addListener(PlayerCustomClickEvent.class, event ->{
|
||||
PlayerHandler.handleDialogClick(event);
|
||||
});
|
||||
node.addListener(PlayerCustomClickEvent.class, PlayerHandler::handleDialogClick);
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ public interface Listener {
|
||||
List<Listener> listeners = List.of(
|
||||
new PlayerJoinListener(instanceManager),
|
||||
new PlayerMoveListener(),
|
||||
new DialogOutput()
|
||||
new DialogClickListener()
|
||||
);
|
||||
|
||||
listeners.forEach(listener -> listener.register(node));
|
||||
|
||||
@@ -14,8 +14,6 @@ public class PlayerJoinListener implements Listener {
|
||||
}
|
||||
@Override
|
||||
public void register(EventNode<Event> node) {
|
||||
node.addListener(AsyncPlayerConfigurationEvent.class, event ->{
|
||||
PlayerHandler.join(event, instanceManager);
|
||||
});
|
||||
node.addListener(AsyncPlayerConfigurationEvent.class, event -> PlayerHandler.join(event, instanceManager));
|
||||
}
|
||||
}
|
||||
@@ -7,8 +7,6 @@ import net.minestom.server.event.player.PlayerMoveEvent;
|
||||
public class PlayerMoveListener implements Listener {
|
||||
@Override
|
||||
public void register(EventNode<Event> node) {
|
||||
node.addListener(PlayerMoveEvent.class, event -> {
|
||||
event.setCancelled(true);
|
||||
});
|
||||
node.addListener(PlayerMoveEvent.class, event -> event.setCancelled(true));
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user