refactor project into modules
isolate core from forge related code
This commit is contained in:
parent
66914a63ca
commit
fdce1c0cc9
|
@ -0,0 +1,84 @@
|
|||
buildscript {
|
||||
ext.kotlin_version = '1.2.20'
|
||||
repositories {
|
||||
jcenter()
|
||||
maven { url = "http://files.minecraftforge.net/maven" }
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
|
||||
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
|
||||
}
|
||||
}
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'net.minecraftforge.gradle.forge'
|
||||
apply plugin: 'com.github.johnrengelman.shadow'
|
||||
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
|
||||
|
||||
archivesBaseName = "MatterLink"
|
||||
|
||||
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
||||
compileJava {
|
||||
sourceCompatibility = targetCompatibility = '1.8'
|
||||
}
|
||||
|
||||
minecraft {
|
||||
version = "1.12.2-14.23.1.2599"
|
||||
runDir = "run"
|
||||
|
||||
// the mappings can be changed at any time, and must be in the following format.
|
||||
// snapshot_YYYYMMDD snapshot are built nightly.
|
||||
// stable_# stables are built at the discretion of the MCP team.
|
||||
// Use non-default mappings at your own risk. they may not always work.
|
||||
// simply re-run your setup task after changing the mappings to update your workspace.
|
||||
mappings = "snapshot_20171003"
|
||||
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
|
||||
|
||||
replaceIn 'src/main/kotlin/matterlink/MatterLink.kt'
|
||||
replace '@VERSION@', project.version
|
||||
}
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
url = 'http://unascribed.com/maven/releases'
|
||||
}
|
||||
maven {
|
||||
url "http://maven.shadowfacts.net/"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile project(':core')
|
||||
compile group: "net.shadowfacts", name: "Forgelin", version: "1.6.0"
|
||||
}
|
||||
|
||||
shadowJar {
|
||||
relocate 'org.jetbrains.annotations', 'matterlink.jetbrains.annotations'
|
||||
classifier ''
|
||||
configurations = [project.configurations.shadow]
|
||||
}
|
||||
|
||||
reobf {
|
||||
shadowJar { mappingType = 'SEARGE' }
|
||||
}
|
||||
|
||||
processResources {
|
||||
// this will ensure that this task is redone when the versions change.
|
||||
inputs.property "version", project.version
|
||||
inputs.property "mcversion", project.minecraft.version
|
||||
|
||||
// replace stuff in mcmod.info, nothing else
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
include 'mcmod.info'
|
||||
|
||||
// replace version and mcversion
|
||||
expand 'version':project.version, 'mcversion':project.minecraft.version
|
||||
}
|
||||
|
||||
// copy everything else except the mcmod.info
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
exclude 'mcmod.info'
|
||||
}
|
||||
}
|
|
@ -5,18 +5,10 @@ import matterlink.bridge.command.BridgeCommandRegistry
|
|||
import matterlink.bridge.command.HelpCommand
|
||||
import matterlink.bridge.command.PlayerListCommand
|
||||
import matterlink.command.CommandMatterlink
|
||||
import matterlink.handlers.*
|
||||
import net.minecraft.util.text.TextComponentString
|
||||
import net.minecraftforge.common.MinecraftForge
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler
|
||||
import net.minecraftforge.fml.common.Mod
|
||||
import net.minecraftforge.fml.common.event.*
|
||||
import org.apache.logging.log4j.Level
|
||||
import org.apache.logging.log4j.Logger
|
||||
import org.apache.logging.log4j.message.SimpleMessageFactory
|
||||
import org.apache.logging.log4j.simple.SimpleLogger
|
||||
import org.apache.logging.log4j.util.PropertiesUtil
|
||||
import java.util.*
|
||||
|
||||
const val MODID = "matterlink"
|
||||
const val NAME = "MatterLink"
|
||||
|
@ -30,18 +22,10 @@ const val VERSION = "@VERSION@"
|
|||
acceptableRemoteVersions = "*",
|
||||
modLanguageAdapter = "net.shadowfacts.forgelin.KotlinAdapter"
|
||||
)
|
||||
object MatterLink {
|
||||
//create fake logger to get around Nullability
|
||||
var logger: Logger = SimpleLogger("",
|
||||
Level.OFF,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
"",
|
||||
SimpleMessageFactory(),
|
||||
PropertiesUtil(Properties()),
|
||||
System.out)
|
||||
object MatterLink : IMatterLink() {
|
||||
init {
|
||||
instance = this
|
||||
}
|
||||
|
||||
@Mod.EventHandler
|
||||
fun preInit(event: FMLPreInitializationEvent) {
|
||||
|
@ -75,12 +59,12 @@ object MatterLink {
|
|||
}
|
||||
|
||||
//FORGE-DEPENDENT
|
||||
fun wrappedSendToPlayers(msg: String) {
|
||||
override fun wrappedSendToPlayers(msg: String) {
|
||||
FMLCommonHandler.instance().minecraftServerInstance.playerList.sendMessage(TextComponentString(msg))
|
||||
}
|
||||
|
||||
//FORGE-DEPENDENT
|
||||
fun wrappedPlayerList(): Array<String> {
|
||||
override fun wrappedPlayerList(): Array<String> {
|
||||
return FMLCommonHandler.instance().minecraftServerInstance.playerList.onlinePlayerNames
|
||||
}
|
||||
|
|
@ -4,45 +4,9 @@ import net.minecraftforge.common.config.Configuration
|
|||
import java.io.File
|
||||
import java.util.regex.Pattern
|
||||
|
||||
var cfg: MatterLinkConfig? = null
|
||||
|
||||
class MatterLinkConfig(file: File) {
|
||||
private val CATEGORY_RELAY_OPTIONS = "relay"
|
||||
private val CATEGORY_FORMATTING = "formatting"
|
||||
private val CATEGORY_CONNECTION = "connection"
|
||||
private val CATEGORY_COMMAND = "command"
|
||||
|
||||
val relay: RelayOptions
|
||||
val connect: ConnectOptions
|
||||
val formatting: FormattingOptions
|
||||
val command: CommandOptions
|
||||
|
||||
data class RelayOptions(
|
||||
val systemUser: String,
|
||||
val deathEvents: Boolean,
|
||||
val advancements: Boolean,
|
||||
val joinLeave: Boolean
|
||||
)
|
||||
|
||||
data class FormattingOptions(
|
||||
val chat: String,
|
||||
val joinLeave: String,
|
||||
val action: String
|
||||
)
|
||||
|
||||
data class ConnectOptions(
|
||||
val url: String,
|
||||
val authToken: String,
|
||||
val gateway: String
|
||||
)
|
||||
|
||||
data class CommandOptions(
|
||||
val prefix: String,
|
||||
val enable: Boolean
|
||||
)
|
||||
|
||||
class MatterLinkConfig(file: File) : IMatterLinkConfig() {
|
||||
init {
|
||||
MatterLink.logger.info("Reading bridge blueprints... from {}", file)
|
||||
logger.info("Reading bridge blueprints... from {}", file)
|
||||
val config = Configuration(file)
|
||||
|
||||
config.addCustomCategoryComment(CATEGORY_RELAY_OPTIONS, "Relay options")
|
||||
|
@ -51,25 +15,25 @@ class MatterLinkConfig(file: File) {
|
|||
systemUser = config.getString(
|
||||
"systemUser",
|
||||
CATEGORY_RELAY_OPTIONS,
|
||||
"Server",
|
||||
relay.systemUser,
|
||||
"Name of the server user (used by death and advancement messages and the /say command)"
|
||||
),
|
||||
deathEvents = config.getBoolean(
|
||||
"deathEvents",
|
||||
CATEGORY_RELAY_OPTIONS,
|
||||
false,
|
||||
relay.deathEvents,
|
||||
"Relay player death messages"
|
||||
),
|
||||
advancements = config.getBoolean(
|
||||
"advancements",
|
||||
CATEGORY_RELAY_OPTIONS,
|
||||
false,
|
||||
relay.advancements,
|
||||
"Relay player advancements"
|
||||
),
|
||||
joinLeave = config.getBoolean(
|
||||
"joinLeave",
|
||||
CATEGORY_RELAY_OPTIONS,
|
||||
false,
|
||||
relay.joinLeave,
|
||||
"Relay when a player joins or leaves the game"
|
||||
)
|
||||
)
|
||||
|
@ -79,13 +43,13 @@ class MatterLinkConfig(file: File) {
|
|||
enable = config.getBoolean(
|
||||
"enable",
|
||||
CATEGORY_COMMAND,
|
||||
true,
|
||||
command.enable,
|
||||
"Enable MC bridge commands"
|
||||
),
|
||||
prefix = config.getString(
|
||||
"commandPrefix",
|
||||
"prefix",
|
||||
CATEGORY_COMMAND,
|
||||
"$",
|
||||
command.prefix,
|
||||
"Prefix for MC bridge commands. Accepts a single character (not alphanumeric or /)",
|
||||
Pattern.compile("^[^0-9A-Za-z/]$")
|
||||
)
|
||||
|
@ -97,19 +61,19 @@ class MatterLinkConfig(file: File) {
|
|||
chat = config.getString(
|
||||
"chat",
|
||||
CATEGORY_FORMATTING,
|
||||
"<{username}> {text}",
|
||||
formatting.chat,
|
||||
"Generic chat event, just talking"
|
||||
),
|
||||
joinLeave = config.getString(
|
||||
"joinLeave",
|
||||
CATEGORY_FORMATTING,
|
||||
"§6-- {username} {text}",
|
||||
formatting.joinLeave,
|
||||
"Join and leave events from other gateways"
|
||||
),
|
||||
action = config.getString(
|
||||
"action",
|
||||
CATEGORY_FORMATTING,
|
||||
"§5* {username} {text}",
|
||||
formatting.action,
|
||||
"User actions (/me) sent by users from other gateways"
|
||||
)
|
||||
)
|
||||
|
@ -119,19 +83,19 @@ class MatterLinkConfig(file: File) {
|
|||
url = config.getString(
|
||||
"connectURL",
|
||||
CATEGORY_CONNECTION,
|
||||
"http://localhost:4242",
|
||||
connect.url,
|
||||
"The URL or IP address of the bridge server"
|
||||
),
|
||||
authToken = config.getString(
|
||||
"authToken",
|
||||
CATEGORY_CONNECTION,
|
||||
"",
|
||||
connect.authToken,
|
||||
"Auth token used to connect to the bridge server"
|
||||
),
|
||||
gateway = config.getString(
|
||||
"gateway",
|
||||
CATEGORY_CONNECTION,
|
||||
"minecraft",
|
||||
connect.gateway,
|
||||
"MatterBridge gateway"
|
||||
)
|
||||
)
|
|
@ -2,9 +2,9 @@ package matterlink.command
|
|||
|
||||
import com.google.common.collect.Lists
|
||||
import matterlink.MODID
|
||||
import matterlink.MatterLink.logger
|
||||
import matterlink.bridge.MessageHandler
|
||||
import matterlink.bridge.ServerChatHandler
|
||||
import matterlink.logger
|
||||
import net.minecraft.command.CommandBase
|
||||
import net.minecraft.command.ICommandSender
|
||||
import net.minecraft.server.MinecraftServer
|
||||
|
@ -39,12 +39,14 @@ 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.")
|
||||
"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()
|
|
@ -1,5 +1,5 @@
|
|||
node {
|
||||
checkout scm
|
||||
sh './gradlew setupCiWorkspace clean build'
|
||||
archive 'build/libs/*jar'
|
||||
sh './gradlew :1.12.2:setupCiWorkspace :1.12.2:clean :1.12.2:build'
|
||||
archive '1.12.2/build/libs/*jar'
|
||||
}
|
90
build.gradle
90
build.gradle
|
@ -1,86 +1,16 @@
|
|||
buildscript {
|
||||
ext.kotlin_version = '1.2.20'
|
||||
repositories {
|
||||
jcenter()
|
||||
maven { url = "http://files.minecraftforge.net/maven" }
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
|
||||
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
|
||||
}
|
||||
}
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'net.minecraftforge.gradle.forge'
|
||||
apply plugin: 'com.github.johnrengelman.shadow'
|
||||
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
|
||||
|
||||
|
||||
version = "1.1.0"
|
||||
group = "matterlink" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
archivesBaseName = "MatterLink"
|
||||
|
||||
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
||||
compileJava {
|
||||
sourceCompatibility = targetCompatibility = '1.8'
|
||||
plugins {
|
||||
id 'idea'
|
||||
}
|
||||
|
||||
minecraft {
|
||||
version = "1.12.2-14.23.1.2599"
|
||||
runDir = "run"
|
||||
|
||||
// the mappings can be changed at any time, and must be in the following format.
|
||||
// snapshot_YYYYMMDD snapshot are built nightly.
|
||||
// stable_# stables are built at the discretion of the MCP team.
|
||||
// Use non-default mappings at your own risk. they may not always work.
|
||||
// simply re-run your setup task after changing the mappings to update your workspace.
|
||||
mappings = "snapshot_20171003"
|
||||
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
|
||||
subprojects {
|
||||
apply plugin: 'idea'
|
||||
|
||||
replaceIn 'src/main/kotlin/matterlink/MatterLink.kt'
|
||||
replace '@VERSION@', project.version
|
||||
}
|
||||
group = 'matterlink'
|
||||
version = '1.1.0'
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
url = 'http://unascribed.com/maven/releases'
|
||||
}
|
||||
maven {
|
||||
url "http://maven.shadowfacts.net/"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile group: "net.shadowfacts", name: "Forgelin", version: "1.6.0"
|
||||
}
|
||||
|
||||
shadowJar {
|
||||
relocate 'org.jetbrains.annotations', 'ivilengineering.jetbrains.annotations'
|
||||
classifier ''
|
||||
configurations = [project.configurations.shadow]
|
||||
}
|
||||
|
||||
reobf {
|
||||
shadowJar { mappingType = 'SEARGE' }
|
||||
}
|
||||
|
||||
processResources {
|
||||
// this will ensure that this task is redone when the versions change.
|
||||
inputs.property "version", project.version
|
||||
inputs.property "mcversion", project.minecraft.version
|
||||
|
||||
// replace stuff in mcmod.info, nothing else
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
include 'mcmod.info'
|
||||
|
||||
// replace version and mcversion
|
||||
expand 'version':project.version, 'mcversion':project.minecraft.version
|
||||
}
|
||||
|
||||
// copy everything else except the mcmod.info
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
exclude 'mcmod.info'
|
||||
idea {
|
||||
module {
|
||||
excludeDirs += [file("run")]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.2.21'
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
apply plugin: 'kotlin'
|
||||
|
||||
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile 'org.apache.logging.log4j:log4j-api:2.8.1'
|
||||
compile "org.apache.httpcomponents:httpclient:4.3.3"
|
||||
compile "com.google.code.gson:gson:2.8.0"
|
||||
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
|
||||
}
|
||||
|
||||
compileKotlin {
|
||||
kotlinOptions {
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package matterlink
|
||||
|
||||
import org.apache.logging.log4j.Level
|
||||
import org.apache.logging.log4j.Logger
|
||||
import org.apache.logging.log4j.message.SimpleMessageFactory
|
||||
import org.apache.logging.log4j.simple.SimpleLogger
|
||||
import org.apache.logging.log4j.util.PropertiesUtil
|
||||
import java.util.*
|
||||
|
||||
var instance: IMatterLink = DummyLink()
|
||||
|
||||
//create fake logger to get around Nullability
|
||||
var logger: Logger = SimpleLogger("",
|
||||
Level.OFF,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
"",
|
||||
SimpleMessageFactory(),
|
||||
PropertiesUtil(Properties()),
|
||||
System.out)
|
||||
|
||||
abstract class IMatterLink {
|
||||
abstract fun wrappedSendToPlayers(msg: String)
|
||||
|
||||
abstract fun wrappedPlayerList(): Array<String>
|
||||
}
|
||||
|
||||
|
||||
class DummyLink : IMatterLink() {
|
||||
override fun wrappedPlayerList(): Array<String> {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
override fun wrappedSendToPlayers(msg: String) {
|
||||
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
package matterlink
|
||||
|
||||
var cfg: IMatterLinkConfig? = null
|
||||
|
||||
abstract class IMatterLinkConfig {
|
||||
protected val CATEGORY_RELAY_OPTIONS = "relay"
|
||||
protected val CATEGORY_FORMATTING = "formatting"
|
||||
protected val CATEGORY_CONNECTION = "connection"
|
||||
protected val CATEGORY_COMMAND = "command"
|
||||
|
||||
var relay: RelayOptions = RelayOptions()
|
||||
var connect: ConnectOptions = ConnectOptions()
|
||||
var formatting: FormattingOptions = FormattingOptions()
|
||||
var command: CommandOptions = CommandOptions()
|
||||
|
||||
data class RelayOptions(
|
||||
val systemUser: String = "Server",
|
||||
val deathEvents: Boolean = true,
|
||||
val advancements: Boolean = true,
|
||||
val joinLeave: Boolean = true
|
||||
)
|
||||
|
||||
data class FormattingOptions(
|
||||
val chat: String = "<{username}> {text}",
|
||||
val joinLeave: String = "§6-- {username} {text}",
|
||||
val action: String = "§5* {username} {text}"
|
||||
)
|
||||
|
||||
data class ConnectOptions(
|
||||
val url: String = "http://localhost:4242",
|
||||
val authToken: String = "",
|
||||
val gateway: String = "minecraft"
|
||||
)
|
||||
|
||||
data class CommandOptions(
|
||||
val prefix: String = "$",
|
||||
val enable: Boolean = true
|
||||
)
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package matterlink
|
||||
|
||||
|
||||
private const val ZWSP: Char = '\u200b'
|
||||
|
||||
//Inserts a zero-width space at index 1 in the string'
|
|
@ -1,6 +1,6 @@
|
|||
package matterlink.bridge;
|
||||
|
||||
import matterlink.MatterLink
|
||||
import matterlink.logger
|
||||
import org.apache.http.client.methods.HttpGet
|
||||
import org.apache.http.impl.client.HttpClients
|
||||
import java.io.InputStream
|
||||
|
@ -30,7 +30,7 @@ class HttpStreamConnection(private val getClosure: () -> HttpGet, private val mh
|
|||
if (chars > 0) {
|
||||
buffer += String(buf.dropLast(buf.count() - chars).toByteArray())
|
||||
|
||||
MatterLink.logger.debug(buffer)
|
||||
logger.debug(buffer)
|
||||
|
||||
while (buffer.contains("\n")) {
|
||||
val line = buffer.substringBefore("\n")
|
||||
|
@ -44,9 +44,9 @@ class HttpStreamConnection(private val getClosure: () -> HttpGet, private val mh
|
|||
} catch (e: SocketException) {
|
||||
// MatterLink.logger.error("Bridge Connection interrupted...")
|
||||
}
|
||||
MatterLink.logger.debug("closing stream")
|
||||
logger.debug("closing stream")
|
||||
content.close()
|
||||
MatterLink.logger.debug("thread finished")
|
||||
logger.debug("thread finished")
|
||||
onClose()
|
||||
return
|
||||
}
|
|
@ -1,7 +1,8 @@
|
|||
package matterlink.bridge
|
||||
|
||||
import matterlink.MatterLink
|
||||
import matterlink.IMatterLink
|
||||
import matterlink.cfg
|
||||
import matterlink.logger
|
||||
import org.apache.http.client.methods.HttpGet
|
||||
import org.apache.http.client.methods.HttpPost
|
||||
import org.apache.http.client.methods.HttpRequestBase
|
||||
|
@ -30,7 +31,7 @@ object MessageHandler {
|
|||
}
|
||||
|
||||
private fun createThread(): HttpStreamConnection {
|
||||
MatterLink.logger.info("Attempting to open bridge connection.")
|
||||
logger.info("Attempting to open bridge connection.")
|
||||
return HttpStreamConnection(
|
||||
{
|
||||
HttpGet(cfg!!.connect.url + "/api/stream").apply {
|
||||
|
@ -41,10 +42,10 @@ object MessageHandler {
|
|||
rcvQueue.add(
|
||||
ApiMessage.decode(it)
|
||||
)
|
||||
MatterLink.logger.debug("Received: " + it)
|
||||
logger.debug("Received: " + it)
|
||||
},
|
||||
{
|
||||
MatterLink.logger.info("Bridge connection closed!")
|
||||
logger.info("Bridge connection closed!")
|
||||
connected = false
|
||||
}
|
||||
)
|
||||
|
@ -52,13 +53,13 @@ object MessageHandler {
|
|||
|
||||
fun transmit(msg: ApiMessage) {
|
||||
if (connected && streamConnection.isAlive) {
|
||||
MatterLink.logger.debug("Transmitting: " + msg)
|
||||
logger.debug("Transmitting: " + msg)
|
||||
transmitMessage(msg)
|
||||
}
|
||||
}
|
||||
|
||||
fun stop() {
|
||||
MatterLink.logger.info("Closing bridge connection...")
|
||||
logger.info("Closing bridge connection...")
|
||||
// MessageHandler.transmit(ApiMessage(text="bridge closing", username="Server"))
|
||||
streamConnection.close()
|
||||
}
|
||||
|
@ -87,14 +88,14 @@ object MessageHandler {
|
|||
val response = client.execute(post)
|
||||
val code = response.statusLine.statusCode
|
||||
if (code != 200) {
|
||||
MatterLink.logger.error("Server returned $code for $post")
|
||||
logger.error("Server returned $code for $post")
|
||||
}
|
||||
sendErrors = 0
|
||||
} catch (e: IOException) {
|
||||
MatterLink.logger.error("sending message caused $e")
|
||||
logger.error("sending message caused $e")
|
||||
sendErrors++
|
||||
if (sendErrors > 5) {
|
||||
MatterLink.logger.error("caught too many errors, closing bridge")
|
||||
logger.error("caught too many errors, closing bridge")
|
||||
stop()
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package matterlink.bridge
|
||||
|
||||
import matterlink.MatterLink
|
||||
import matterlink.logger
|
||||
import matterlink.instance
|
||||
import matterlink.bridge.command.BridgeCommandRegistry
|
||||
import matterlink.cfg
|
||||
|
||||
|
@ -13,7 +14,7 @@ object ServerChatHandler {
|
|||
fun writeIncomingToChat() {
|
||||
if (!processMessages) return
|
||||
if (MessageHandler.rcvQueue.isNotEmpty())
|
||||
MatterLink.logger.debug("incoming: " + MessageHandler.rcvQueue.toString())
|
||||
logger.debug("incoming: " + MessageHandler.rcvQueue.toString())
|
||||
val nextMessage = MessageHandler.rcvQueue.poll()
|
||||
|
||||
if (nextMessage != null && nextMessage.gateway == cfg!!.connect.gateway) {
|
||||
|
@ -30,15 +31,15 @@ object ServerChatHandler {
|
|||
val user = nextMessage.username
|
||||
val text = nextMessage.text
|
||||
val json = nextMessage.encode()
|
||||
MatterLink.logger.debug("Threw out message with unhandled event: ${nextMessage.event}")
|
||||
MatterLink.logger.debug(" Message contents:")
|
||||
MatterLink.logger.debug(" User: $user")
|
||||
MatterLink.logger.debug(" Text: $text")
|
||||
MatterLink.logger.debug(" JSON: $json")
|
||||
logger.debug("Threw out message with unhandled event: ${nextMessage.event}")
|
||||
logger.debug(" Message contents:")
|
||||
logger.debug(" User: $user")
|
||||
logger.debug(" Text: $text")
|
||||
logger.debug(" JSON: $json")
|
||||
return
|
||||
}
|
||||
}
|
||||
MatterLink.wrappedSendToPlayers(message)
|
||||
instance.wrappedSendToPlayers(message)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,9 @@
|
|||
package matterlink.bridge.command
|
||||
|
||||
import matterlink.MatterLink
|
||||
import matterlink.IMatterLink
|
||||
import matterlink.cfg
|
||||
import matterlink.logger
|
||||
import java.util.*
|
||||
|
||||
object BridgeCommandRegistry {
|
||||
|
||||
|
@ -22,7 +24,7 @@ object BridgeCommandRegistry {
|
|||
|
||||
fun register(cmd: IBridgeCommand): Boolean {
|
||||
if (cmd.name.isBlank() || commandMap.containsKey(cmd.name)) {
|
||||
MatterLink.logger.error("Failed to register command: '${cmd.name}'")
|
||||
logger.error("Failed to register command: '${cmd.name}'")
|
||||
return false
|
||||
}
|
||||
commandMap[cmd.name] = cmd
|
|
@ -1,6 +1,6 @@
|
|||
package matterlink.bridge.command
|
||||
|
||||
import matterlink.MatterLink
|
||||
import matterlink.instance
|
||||
import matterlink.antiping
|
||||
import matterlink.bridge.ApiMessage
|
||||
import matterlink.bridge.MessageHandler
|
||||
|
@ -11,7 +11,7 @@ object PlayerListCommand : IBridgeCommand {
|
|||
override val help: String = "Lists online players."
|
||||
override fun call(args: String): Boolean {
|
||||
if (args.isNotBlank()) return false
|
||||
val playerList = MatterLink.wrappedPlayerList()
|
||||
val playerList = instance.wrappedPlayerList()
|
||||
MessageHandler.transmit(ApiMessage(
|
||||
username = cfg!!.relay.systemUser,
|
||||
text = when {
|
|
@ -0,0 +1,2 @@
|
|||
rootProject.name = 'MatterLink'
|
||||
include 'core', '1.12.2'
|
Loading…
Reference in New Issue