diff --git a/src/main/kotlin/matterlink/MatterLink.kt b/src/main/kotlin/matterlink/MatterLink.kt index 0b0d612..62fbca3 100644 --- a/src/main/kotlin/matterlink/MatterLink.kt +++ b/src/main/kotlin/matterlink/MatterLink.kt @@ -56,12 +56,17 @@ object MatterLink { BridgeCommandRegistry.registerAll(PlayerListCommand, HelpCommand) } + @Mod.EventHandler + fun serverAboutToStart(event: FMLServerAboutToStartEvent) { + MessageHandler.start() + } @Mod.EventHandler fun serverStarting(event: FMLServerStartingEvent) { logger.debug("Registering server commands") event.registerServerCommand(CommandMatterlink()) - MessageHandler.start() + + MessageHandler.rcvQueue.clear() } @Mod.EventHandler diff --git a/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt b/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt index 29984e4..c4b7a27 100644 --- a/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt +++ b/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt @@ -5,10 +5,13 @@ import matterlink.bridge.command.BridgeCommandRegistry import matterlink.cfg object ServerChatHandler { + var processMessages: Boolean = true + /** * This method must be called every server tick with no arguments. */ fun writeIncomingToChat() { + if (!processMessages) return if (MessageHandler.rcvQueue.isNotEmpty()) MatterLink.logger.debug("incoming: " + MessageHandler.rcvQueue.toString()) val nextMessage = MessageHandler.rcvQueue.poll() diff --git a/src/main/kotlin/matterlink/command/CommandMatterlink.kt b/src/main/kotlin/matterlink/command/CommandMatterlink.kt index a3abf59..0c3fa69 100644 --- a/src/main/kotlin/matterlink/command/CommandMatterlink.kt +++ b/src/main/kotlin/matterlink/command/CommandMatterlink.kt @@ -4,9 +4,11 @@ import matterlink.* import matterlink.MatterLink.logger import matterlink.bridge.MessageHandler import com.google.common.collect.Lists +import matterlink.bridge.ServerChatHandler import net.minecraft.command.CommandBase import net.minecraft.command.ICommandSender import net.minecraft.server.MinecraftServer +import org.apache.logging.log4j.core.jmx.Server class CommandMatterlink : CommandBase() { @@ -39,11 +41,16 @@ class CommandMatterlink : CommandBase() { val cmd = args[0].toLowerCase() when (cmd) { "connect" -> if (MessageHandler.start()) { + MessageHandler.rcvQueue.clear() logger.info("Connected to matterbridge relay") + ServerChatHandler.processMessages = true } else { logger.error("Connection to matterbridge relay failed.") } - "disconnect" -> MessageHandler.stop() + "disconnect" -> { + MessageHandler.stop() + ServerChatHandler.processMessages = false + } } }