diff --git a/src/commands/dew/core/impl/DewCore.java b/src/commands/dew/core/impl/DewCore.java index 5e91163..31f71ce 100644 --- a/src/commands/dew/core/impl/DewCore.java +++ b/src/commands/dew/core/impl/DewCore.java @@ -19,6 +19,7 @@ import utils.LogFilter; public class DewCore { // TODO: Make realm and players both per-realm + public static String responseHeader = "[Dewdrop Forest]"; public static DewRealm realm; public static List players; public static List playersCaptured; @@ -82,7 +83,10 @@ public class DewCore if(f != null) { - Response.EditLastMessage(f.resString); + Response.GetLastMessage((String last) -> { + if(last.contains(responseHeader)) + Response.EditLastMessage(f.resString); + }); didRun = true; } } @@ -145,6 +149,7 @@ public class DewCore // Draw world String out = ""; + out += responseHeader + "\n"; out += "**Realm ID - ** `" + realm.id + "`\n"; for(int y = 0; y < worldBuffer.length; ++y) diff --git a/src/dataStructures/KittyTrackedResponse.java b/src/dataStructures/KittyTrackedResponse.java new file mode 100644 index 0000000..ed7258a --- /dev/null +++ b/src/dataStructures/KittyTrackedResponse.java @@ -0,0 +1,6 @@ +package dataStructures; + +public class KittyTrackedResponse +{ + // TODO: Fill this out! +} diff --git a/src/dataStructures/Response.java b/src/dataStructures/Response.java index cfe03fe..c76f988 100644 --- a/src/dataStructures/Response.java +++ b/src/dataStructures/Response.java @@ -3,6 +3,7 @@ package dataStructures; import java.io.File; import java.io.InputStream; import java.util.concurrent.ExecutionException; +import java.util.function.Consumer; import net.dv8tion.jda.core.JDA; import net.dv8tion.jda.core.MessageBuilder; @@ -20,7 +21,7 @@ import utils.LogFilter; public class Response { // Last message - private static Message lastSentMessage = null; + private static Message lastSentMessage = new MessageBuilder().append(" ").build(); // Variables private GuildMessageReceivedEvent event; @@ -155,6 +156,7 @@ public class Response //////////////////////// // Blast that message out and don't do anything else on this thread until sent. + // BLOCKING protected void respondImmediate(MessageAction toSend) { synchronized(lastSentMessage) @@ -163,7 +165,8 @@ public class Response } } - // Async thread-safe assignment. Assignment may technically be out of order, so keep that in mind. + // thread-safe assignment. Assignment may technically be out of order, so keep that in mind. + // ASYNC protected void respond(MessageAction toSend) { toSend.submit().whenComplete((msg, err) -> { @@ -174,6 +177,7 @@ public class Response }); } + // BLOCKING public static String GetLastMessage() { synchronized(lastSentMessage) @@ -185,6 +189,19 @@ public class Response } } + // ASYNC + public static void GetLastMessage(Consumer consumer) + { + synchronized(lastSentMessage) + { + if(lastSentMessage == null) + return; + + consumer.accept(lastSentMessage.getContentRaw()); + } + } + + // BLOCKING public static void EditLastMessage(String newContent) { synchronized(lastSentMessage)