From a70c54f804eef445be54b8f2f4392e251383b129 Mon Sep 17 00:00:00 2001 From: Nikky Ai Date: Sun, 21 Jan 2018 13:14:19 +0100 Subject: [PATCH] make some forge events work again --- src/main/kotlin/civilengineering/CivilEngineering.kt | 3 ++- .../kotlin/civilengineering/bridge/ApiMessage.kt | 7 ++++--- .../bridge/CancellableConnectionFollowThread.kt | 7 ++++--- .../kotlin/civilengineering/bridge/MessageHandler.kt | 12 +++++++----- .../civilengineering/bridge/ServerChatHelper.kt | 6 +++--- .../eventhandlers/ChatMessageHandler.kt | 4 ++-- .../eventhandlers/DeathEventHandler.kt | 2 +- .../eventhandlers/UserActionHandler.kt | 2 +- 8 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/main/kotlin/civilengineering/CivilEngineering.kt b/src/main/kotlin/civilengineering/CivilEngineering.kt index f7dfc58..aa5ebec 100644 --- a/src/main/kotlin/civilengineering/CivilEngineering.kt +++ b/src/main/kotlin/civilengineering/CivilEngineering.kt @@ -66,7 +66,7 @@ object CivilEngineering { if (config.hasChanged()) { config.save() } - MinecraftForge.EVENT_BUS.register(ServerChatHelper::class.java) +// MinecraftForge.EVENT_BUS.register(ServerChatHelper::class.java) } @@ -77,6 +77,7 @@ object CivilEngineering { MessageHandler.start() //maybe try registering them manually + MinecraftForge.EVENT_BUS.register(ServerChatHelper()) MinecraftForge.EVENT_BUS.register(ChatMessageHandler()) MinecraftForge.EVENT_BUS.register(DeathEventHandler()) MinecraftForge.EVENT_BUS.register(UserActionHandler()) diff --git a/src/main/kotlin/civilengineering/bridge/ApiMessage.kt b/src/main/kotlin/civilengineering/bridge/ApiMessage.kt index 54596e0..a67129f 100644 --- a/src/main/kotlin/civilengineering/bridge/ApiMessage.kt +++ b/src/main/kotlin/civilengineering/bridge/ApiMessage.kt @@ -1,17 +1,18 @@ package civilengineering.bridge +import civilengineering.Config import com.google.gson.Gson data class ApiMessage( - val text: String = "", - val channel: String = "", val username: String = "", + val text: String = "", + val gateway: String = Config.gateway, + val channel: String = "", val userid: String = "", val avatar: String = "", val account: String = "", val event: String = "", val protocol: String = "", - val gateway: String = "", // val timestamp: Date, val id: String = "" // val Extra: Any? = null diff --git a/src/main/kotlin/civilengineering/bridge/CancellableConnectionFollowThread.kt b/src/main/kotlin/civilengineering/bridge/CancellableConnectionFollowThread.kt index 02f5a8e..a18c7a8 100644 --- a/src/main/kotlin/civilengineering/bridge/CancellableConnectionFollowThread.kt +++ b/src/main/kotlin/civilengineering/bridge/CancellableConnectionFollowThread.kt @@ -10,10 +10,11 @@ import java.net.HttpURLConnection */ class CancellableConnectionFollowThread(httpConnClosure: () -> HttpURLConnection, private val mhandler: (String) -> Unit) : Thread() { - val cancelGuard = Object() - var waitingOnNetwork = true + private val cancelGuard = Object() + private var waitingOnNetwork = true var cancelled = false - val httpConn = httpConnClosure() + private set + private val httpConn = httpConnClosure() override fun run() { try { diff --git a/src/main/kotlin/civilengineering/bridge/MessageHandler.kt b/src/main/kotlin/civilengineering/bridge/MessageHandler.kt index a908279..5b2c848 100644 --- a/src/main/kotlin/civilengineering/bridge/MessageHandler.kt +++ b/src/main/kotlin/civilengineering/bridge/MessageHandler.kt @@ -11,6 +11,7 @@ import java.util.concurrent.ConcurrentLinkedQueue object MessageHandler { private fun createThread(): CancellableConnectionFollowThread { + CivilEngineering.logger.info("building bridge") return CancellableConnectionFollowThread( { CivilEngineering.logger.info("Connecting to bridge server @ " + Config.connectURL) @@ -23,7 +24,7 @@ object MessageHandler { rcvQueue.add( ApiMessage.decode(it) ) - CivilEngineering.logger.trace("received: " + it) + CivilEngineering.logger.info("received: " + it) } ) } @@ -37,21 +38,22 @@ object MessageHandler { fun transmit(msg: ApiMessage) { CivilEngineering.logger.info("transmitting " + msg) transmitMessage(msg) - //TODO: create thread with Runnable(sendstuff).execute() } fun stop() { + CivilEngineering.logger.info("bridge closing") +// MessageHandler.transmit(ApiMessage(text="bridge closing", username="Server")) cancellableThread.abort() - CivilEngineering.logger.info("bridge closed ") + CivilEngineering.logger.info("bridge closed") } fun start(): Boolean { - if (cancellableThread.isInterrupted) { - CivilEngineering.logger.info("rebuilding bridge") + if (cancellableThread.cancelled) { cancellableThread = createThread() } if (!cancellableThread.isAlive) { cancellableThread.start() +// MessageHandler.transmit(ApiMessage(text="bridge connected", username="Server")) return true } return false diff --git a/src/main/kotlin/civilengineering/bridge/ServerChatHelper.kt b/src/main/kotlin/civilengineering/bridge/ServerChatHelper.kt index 5d779cf..c188e04 100644 --- a/src/main/kotlin/civilengineering/bridge/ServerChatHelper.kt +++ b/src/main/kotlin/civilengineering/bridge/ServerChatHelper.kt @@ -6,10 +6,10 @@ import net.minecraftforge.fml.common.FMLCommonHandler import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.TickEvent -object ServerChatHelper { +class ServerChatHelper { @SubscribeEvent fun onServerUpdate(event: TickEvent.ServerTickEvent) { - if(MessageHandler.rcvQueue.isNotEmpty()) + if (MessageHandler.rcvQueue.isNotEmpty()) CivilEngineering.logger.info("incoming: " + MessageHandler.rcvQueue.toString()) val nextMessage = MessageHandler.rcvQueue.poll() @@ -20,7 +20,7 @@ object ServerChatHelper { val message: String if (!text.isEmpty()) { - message = when(nextMessage.event) { + message = when (nextMessage.event) { "user_action" -> "* $user $text" else -> "<$user> $text" } diff --git a/src/main/kotlin/civilengineering/eventhandlers/ChatMessageHandler.kt b/src/main/kotlin/civilengineering/eventhandlers/ChatMessageHandler.kt index c5d7b62..76ccfa3 100644 --- a/src/main/kotlin/civilengineering/eventhandlers/ChatMessageHandler.kt +++ b/src/main/kotlin/civilengineering/eventhandlers/ChatMessageHandler.kt @@ -9,7 +9,7 @@ class ChatMessageHandler { @SubscribeEvent fun handleServerChatEvent(event: ServerChatEvent) { val message = event.message.trim { it <= ' ' } - if (!message.isEmpty()) - MessageHandler.transmit(ApiMessage(event.username, message)) + if (message.isNotBlank()) + MessageHandler.transmit(ApiMessage(username = event.username, text = message)) } } diff --git a/src/main/kotlin/civilengineering/eventhandlers/DeathEventHandler.kt b/src/main/kotlin/civilengineering/eventhandlers/DeathEventHandler.kt index beb45da..387a01b 100644 --- a/src/main/kotlin/civilengineering/eventhandlers/DeathEventHandler.kt +++ b/src/main/kotlin/civilengineering/eventhandlers/DeathEventHandler.kt @@ -14,7 +14,7 @@ class DeathEventHandler { val entity = event.entityLiving if (entity is EntityPlayer) { val message = entity.getCombatTracker().deathMessage.unformattedText - MessageHandler.transmit(ApiMessage("Server", message)) + MessageHandler.transmit(ApiMessage(username = "Server", text = message)) } } } diff --git a/src/main/kotlin/civilengineering/eventhandlers/UserActionHandler.kt b/src/main/kotlin/civilengineering/eventhandlers/UserActionHandler.kt index f236745..d657aa2 100644 --- a/src/main/kotlin/civilengineering/eventhandlers/UserActionHandler.kt +++ b/src/main/kotlin/civilengineering/eventhandlers/UserActionHandler.kt @@ -21,7 +21,7 @@ class UserActionHandler { } message = message.trim { it <= ' ' } - MessageHandler.transmit(ApiMessage(user, message, "user_action")) + MessageHandler.transmit(ApiMessage(username=user, text=message, event="user_action")) } } }