From 6ca4bf8ff3cac4d23097b3eaf26d6d0f873ec10f Mon Sep 17 00:00:00 2001 From: ShaneBeee Date: Fri, 3 Jan 2025 14:50:00 -0800 Subject: [PATCH] SecTransferCookieRetrieve - cleanup --- .../sections/SecTransferCookieRetrieve.java | 39 ++++++++----------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/shanebeestudios/skbee/elements/other/sections/SecTransferCookieRetrieve.java b/src/main/java/com/shanebeestudios/skbee/elements/other/sections/SecTransferCookieRetrieve.java index b97ab066..7448e621 100644 --- a/src/main/java/com/shanebeestudios/skbee/elements/other/sections/SecTransferCookieRetrieve.java +++ b/src/main/java/com/shanebeestudios/skbee/elements/other/sections/SecTransferCookieRetrieve.java @@ -34,6 +34,8 @@ "\t\tstore cookie \"%uuid of player%-transfer\" with key \"transfer\" on player", "\t\ttransfer player to arg-1", "", + "# Connect event is recommended over join event", + "# This way if you have to kick the player it's done before they join", "on connect:", "\t# only do a cookie check if player was transferred", "\tif player is transferred:", @@ -48,15 +50,15 @@ public class SecTransferCookieRetrieve extends Section { static { if (Skript.methodExists(Player.class, "retrieveCookie", NamespacedKey.class)) { - Skript.registerSection(SecTransferCookieRetrieve.class, - "retrieve cookie with key %namespacedkey/string% [from %player%]"); + Skript.registerSection(SecTransferCookieRetrieve.class, + "retrieve cookie with key %namespacedkey/string% [from %player%]"); } } private Expression key; private Expression player; - @SuppressWarnings({"NullableProblems", "unchecked"}) + @SuppressWarnings("unchecked") @Override public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, ParseResult parseResult, SectionNode sectionNode, List triggerItems) { this.key = exprs[0]; @@ -70,7 +72,6 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye return true; } - @SuppressWarnings("NullableProblems") @Override protected @Nullable TriggerItem walk(Event event) { TriggerItem next = getNext(); @@ -92,31 +93,23 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye player.retrieveCookie(key).thenAccept(bytes -> { Delay.addDelayedEvent(event); // Delay event to make sure kick effect still works - ExprTransferCookie.setLastTransferCookie(new String(bytes)); - // Walk the section - walkNext(localVars, event, first); + ExprTransferCookie.setLastTransferCookie(bytes != null ? new String(bytes) : null); + // re-set local variables + if (localVars != null) Variables.setLocalVariables(event, localVars); + + if (this.first != null) { + // Walk the section if there is one + TriggerItem.walk(this.first, event); + } + + // remove local vars as we're now done + Variables.removeLocals(event); // Clear cookie data before moving on ExprTransferCookie.setLastTransferCookie(null); - }).exceptionally(throwable -> { - // Walk the section even if no cookie was found - walkNext(localVars, event, first); - return null; }); return null; } - private static void walkNext(Object localVars, Event event, @Nullable TriggerItem triggerItem) { - // re-set local variables - if (localVars != null) Variables.setLocalVariables(event, localVars); - - if (triggerItem != null) { - TriggerItem.walk(triggerItem, event); - } - - // remove local vars as we're now done - Variables.removeLocals(event); - } - @Override public @NotNull String toString(Event e, boolean d) { return String.format("retrieve cookie with key %s from %s",