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()) {
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())

View File

@ -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

View File

@ -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 {

View File

@ -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

View File

@ -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"
}

View File

@ -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))
}
}

View File

@ -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))
}
}
}

View File

@ -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"))
}
}
}