make some forge events work again

This commit is contained in:
Nikky Ai 2018-01-21 13:14:19 +01:00
parent aa564d1e1f
commit a70c54f804
8 changed files with 24 additions and 19 deletions

View File

@ -66,7 +66,7 @@ object CivilEngineering {
if (config.hasChanged()) { if (config.hasChanged()) {
config.save() config.save()
} }
MinecraftForge.EVENT_BUS.register(ServerChatHelper::class.java) // MinecraftForge.EVENT_BUS.register(ServerChatHelper::class.java)
} }
@ -77,6 +77,7 @@ object CivilEngineering {
MessageHandler.start() MessageHandler.start()
//maybe try registering them manually //maybe try registering them manually
MinecraftForge.EVENT_BUS.register(ServerChatHelper())
MinecraftForge.EVENT_BUS.register(ChatMessageHandler()) MinecraftForge.EVENT_BUS.register(ChatMessageHandler())
MinecraftForge.EVENT_BUS.register(DeathEventHandler()) MinecraftForge.EVENT_BUS.register(DeathEventHandler())
MinecraftForge.EVENT_BUS.register(UserActionHandler()) MinecraftForge.EVENT_BUS.register(UserActionHandler())

View File

@ -1,17 +1,18 @@
package civilengineering.bridge package civilengineering.bridge
import civilengineering.Config
import com.google.gson.Gson import com.google.gson.Gson
data class ApiMessage( data class ApiMessage(
val text: String = "",
val channel: String = "",
val username: String = "", val username: String = "",
val text: String = "",
val gateway: String = Config.gateway,
val channel: String = "",
val userid: String = "", val userid: String = "",
val avatar: String = "", val avatar: String = "",
val account: String = "", val account: String = "",
val event: String = "", val event: String = "",
val protocol: String = "", val protocol: String = "",
val gateway: String = "",
// val timestamp: Date, // val timestamp: Date,
val id: String = "" val id: String = ""
// val Extra: Any? = null // val Extra: Any? = null

View File

@ -10,10 +10,11 @@ import java.net.HttpURLConnection
*/ */
class CancellableConnectionFollowThread(httpConnClosure: () -> HttpURLConnection, private val mhandler: (String) -> Unit) : Thread() { class CancellableConnectionFollowThread(httpConnClosure: () -> HttpURLConnection, private val mhandler: (String) -> Unit) : Thread() {
val cancelGuard = Object() private val cancelGuard = Object()
var waitingOnNetwork = true private var waitingOnNetwork = true
var cancelled = false var cancelled = false
val httpConn = httpConnClosure() private set
private val httpConn = httpConnClosure()
override fun run() { override fun run() {
try { try {

View File

@ -11,6 +11,7 @@ import java.util.concurrent.ConcurrentLinkedQueue
object MessageHandler { object MessageHandler {
private fun createThread(): CancellableConnectionFollowThread { private fun createThread(): CancellableConnectionFollowThread {
CivilEngineering.logger.info("building bridge")
return CancellableConnectionFollowThread( return CancellableConnectionFollowThread(
{ {
CivilEngineering.logger.info("Connecting to bridge server @ " + Config.connectURL) CivilEngineering.logger.info("Connecting to bridge server @ " + Config.connectURL)
@ -23,7 +24,7 @@ object MessageHandler {
rcvQueue.add( rcvQueue.add(
ApiMessage.decode(it) ApiMessage.decode(it)
) )
CivilEngineering.logger.trace("received: " + it) CivilEngineering.logger.info("received: " + it)
} }
) )
} }
@ -37,21 +38,22 @@ object MessageHandler {
fun transmit(msg: ApiMessage) { fun transmit(msg: ApiMessage) {
CivilEngineering.logger.info("transmitting " + msg) CivilEngineering.logger.info("transmitting " + msg)
transmitMessage(msg) transmitMessage(msg)
//TODO: create thread with Runnable(sendstuff).execute()
} }
fun stop() { fun stop() {
CivilEngineering.logger.info("bridge closing")
// MessageHandler.transmit(ApiMessage(text="bridge closing", username="Server"))
cancellableThread.abort() cancellableThread.abort()
CivilEngineering.logger.info("bridge closed ") CivilEngineering.logger.info("bridge closed")
} }
fun start(): Boolean { fun start(): Boolean {
if (cancellableThread.isInterrupted) { if (cancellableThread.cancelled) {
CivilEngineering.logger.info("rebuilding bridge")
cancellableThread = createThread() cancellableThread = createThread()
} }
if (!cancellableThread.isAlive) { if (!cancellableThread.isAlive) {
cancellableThread.start() cancellableThread.start()
// MessageHandler.transmit(ApiMessage(text="bridge connected", username="Server"))
return true return true
} }
return false return false

View File

@ -6,10 +6,10 @@ import net.minecraftforge.fml.common.FMLCommonHandler
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import net.minecraftforge.fml.common.gameevent.TickEvent import net.minecraftforge.fml.common.gameevent.TickEvent
object ServerChatHelper { class ServerChatHelper {
@SubscribeEvent @SubscribeEvent
fun onServerUpdate(event: TickEvent.ServerTickEvent) { fun onServerUpdate(event: TickEvent.ServerTickEvent) {
if(MessageHandler.rcvQueue.isNotEmpty()) if (MessageHandler.rcvQueue.isNotEmpty())
CivilEngineering.logger.info("incoming: " + MessageHandler.rcvQueue.toString()) CivilEngineering.logger.info("incoming: " + MessageHandler.rcvQueue.toString())
val nextMessage = MessageHandler.rcvQueue.poll() val nextMessage = MessageHandler.rcvQueue.poll()
@ -20,7 +20,7 @@ object ServerChatHelper {
val message: String val message: String
if (!text.isEmpty()) { if (!text.isEmpty()) {
message = when(nextMessage.event) { message = when (nextMessage.event) {
"user_action" -> "* $user $text" "user_action" -> "* $user $text"
else -> "<$user> $text" else -> "<$user> $text"
} }

View File

@ -9,7 +9,7 @@ class ChatMessageHandler {
@SubscribeEvent @SubscribeEvent
fun handleServerChatEvent(event: ServerChatEvent) { fun handleServerChatEvent(event: ServerChatEvent) {
val message = event.message.trim { it <= ' ' } val message = event.message.trim { it <= ' ' }
if (!message.isEmpty()) if (message.isNotBlank())
MessageHandler.transmit(ApiMessage(event.username, message)) MessageHandler.transmit(ApiMessage(username = event.username, text = message))
} }
} }

View File

@ -14,7 +14,7 @@ class DeathEventHandler {
val entity = event.entityLiving val entity = event.entityLiving
if (entity is EntityPlayer) { if (entity is EntityPlayer) {
val message = entity.getCombatTracker().deathMessage.unformattedText val message = entity.getCombatTracker().deathMessage.unformattedText
MessageHandler.transmit(ApiMessage("Server", message)) MessageHandler.transmit(ApiMessage(username = "Server", text = message))
} }
} }
} }

View File

@ -21,7 +21,7 @@ class UserActionHandler {
} }
message = message.trim { it <= ' ' } message = message.trim { it <= ' ' }
MessageHandler.transmit(ApiMessage(user, message, "user_action")) MessageHandler.transmit(ApiMessage(username=user, text=message, event="user_action"))
} }
} }
} }