From ed3b728223f0443a7bfc30e44119305c9a675000 Mon Sep 17 00:00:00 2001 From: cnaude Date: Sun, 3 Jul 2016 09:39:23 -0700 Subject: [PATCH] Handle prism rollbacks from console. --- .../GameListeners/PrismListener.java | 8 +++- .../java/com/cnaude/purpleirc/PurpleBot.java | 40 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cnaude/purpleirc/GameListeners/PrismListener.java b/src/main/java/com/cnaude/purpleirc/GameListeners/PrismListener.java index 0d9f677..454ee43 100644 --- a/src/main/java/com/cnaude/purpleirc/GameListeners/PrismListener.java +++ b/src/main/java/com/cnaude/purpleirc/GameListeners/PrismListener.java @@ -23,6 +23,7 @@ import me.botsko.prism.events.PrismBlocksDrainEvent; import me.botsko.prism.events.PrismBlocksExtinguishEvent; import me.botsko.prism.events.PrismBlocksRollbackEvent; import me.botsko.prism.events.PrismCustomPlayerActionEvent; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -49,8 +50,13 @@ public class PrismListener implements Listener { @EventHandler public void onPrismBlocksRollbackEvent(PrismBlocksRollbackEvent event) { plugin.logDebug("onPrismBlocksRollbackEvent caught"); + Player player = event.onBehalfOf(); for (PurpleBot ircBot : plugin.ircBots.values()) { - ircBot.gamePrismRollback(event.onBehalfOf(), event.getQueryParameters(), event.getResult().getBlockStateChanges()); + if (player == null) { + ircBot.gamePrismRollback("CONSOLE", event.getQueryParameters(), event.getResult().getBlockStateChanges()); + } else { + ircBot.gamePrismRollback(event.onBehalfOf(), event.getQueryParameters(), event.getResult().getBlockStateChanges()); + } } } diff --git a/src/main/java/com/cnaude/purpleirc/PurpleBot.java b/src/main/java/com/cnaude/purpleirc/PurpleBot.java index 7921e01..260295a 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleBot.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleBot.java @@ -3588,6 +3588,46 @@ public final class PurpleBot { } } } + + public void gamePrismRollback(String name, QueryParameters queryParams, ArrayList blockStateChange) { + if (!this.isConnected()) { + return; + } + String keyword = queryParams.getKeyword(); + String sortDirection = queryParams.getSortDirection(); + String worldName = queryParams.getWorld(); + String id = String.valueOf(queryParams.getId()); + String radius = String.valueOf(queryParams.getRadius()); + if (keyword == null) { + keyword = ""; + } + if (sortDirection == null) { + sortDirection = ""; + } + if (worldName == null) { + worldName = ""; + } + if (id == null) { + id = ""; + } + if (radius == null) { + radius = ""; + } + for (String channelName : botChannels) { + if (isMessageEnabled(channelName, TemplateName.PRISM_ROLLBACK)) { + asyncIRCMessage(channelName, prismBlockStateChangeTokens(plugin.tokenizer + .gameChatToIRCTokenizer(name, plugin.getMessageTemplate(botNick, channelName, TemplateName.PRISM_ROLLBACK)) + .replace("%NAME%", name) + .replace("%COMMAND%", queryParams.getOriginalCommand()) + .replace("%KEYWORD%", keyword) + .replace("%SORTDIRECTION%", sortDirection) + .replace("%PARAMWORLD%", worldName) + .replace("%ID%", id) + .replace("%RADIUS%", radius), blockStateChange + )); + } + } + } public void gamePrismDrainOrExtinguish(String template, Player player, int radius, ArrayList blockStateChange) { if (!this.isConnected()) {