From e2410305af33fb29049f8bda181f5420b7b29d95 Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Sat, 10 Feb 2018 17:54:43 +0100 Subject: [PATCH 1/9] add a (not yet working) 1.11.2 subproject --- 1.11.2/build.gradle | 49 +++++++ 1.11.2/gradle.properties | 4 + .../main/kotlin/matterlink/EventWrapper.kt | 98 ++++++++++++++ .../src/main/kotlin/matterlink/MatterLink.kt | 71 ++++++++++ .../kotlin/matterlink/MatterLinkConfig.kt | 128 ++++++++++++++++++ .../matterlink/command/CommandMatterlink.kt | 53 ++++++++ 1.12.2/build.gradle | 49 +++++++ 1.12.2/gradle.properties | 4 +- .../main/kotlin/matterlink/EventWrapper.kt | 3 +- build.gradle | 47 ------- .../src/main/kotlin/matterlink/IMatterLink.kt | 14 ++ .../matterlink/bridge/HttpStreamConnection.kt | 10 +- .../matterlink/bridge/ServerChatHandler.kt | 3 +- settings.gradle | 2 +- 14 files changed, 481 insertions(+), 54 deletions(-) create mode 100644 1.11.2/build.gradle create mode 100644 1.11.2/gradle.properties create mode 100644 1.11.2/src/main/kotlin/matterlink/EventWrapper.kt create mode 100644 1.11.2/src/main/kotlin/matterlink/MatterLink.kt create mode 100644 1.11.2/src/main/kotlin/matterlink/MatterLinkConfig.kt create mode 100644 1.11.2/src/main/kotlin/matterlink/command/CommandMatterlink.kt diff --git a/1.11.2/build.gradle b/1.11.2/build.gradle new file mode 100644 index 0000000..50e452c --- /dev/null +++ b/1.11.2/build.gradle @@ -0,0 +1,49 @@ + +buildscript { + repositories { + jcenter() + maven { url = "http://files.minecraftforge.net/maven" } + mavenCentral() + } + dependencies { + classpath "net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT" + } +} + +apply plugin: 'net.minecraftforge.gradle.forge' + +minecraft { + version = mc_version + "-" + forge_version + runDir = "../run" + + mappings = mcp_mappings + + replaceIn 'MatterLink.kt' + replace '@VERSION@', mod_version +} + +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(project(":core").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(project(":core").sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } + +} + +reobf { + shadowJar { mappingType = 'SEARGE' } +} + +tasks.reobfShadowJar.mustRunAfter shadowJar \ No newline at end of file diff --git a/1.11.2/gradle.properties b/1.11.2/gradle.properties new file mode 100644 index 0000000..4bc3c4c --- /dev/null +++ b/1.11.2/gradle.properties @@ -0,0 +1,4 @@ +mc_version = 1.11.2 +mcp_mappings = stable_32 +forge_version = 13.20.1.2386 +forgegradle_version = 2.3-SNAPSHOT \ No newline at end of file diff --git a/1.11.2/src/main/kotlin/matterlink/EventWrapper.kt b/1.11.2/src/main/kotlin/matterlink/EventWrapper.kt new file mode 100644 index 0000000..c987464 --- /dev/null +++ b/1.11.2/src/main/kotlin/matterlink/EventWrapper.kt @@ -0,0 +1,98 @@ +package matterlink + +import matterlink.bridge.ServerChatHandler +import matterlink.bridge.USER_ACTION +import matterlink.config.cfg +import matterlink.handlers.* +import net.minecraft.command.server.CommandBroadcast +import net.minecraft.command.server.CommandEmote +import net.minecraft.entity.player.EntityPlayer +import net.minecraft.server.dedicated.DedicatedServer +import net.minecraft.tileentity.TileEntityCommandBlock +import net.minecraftforge.event.CommandEvent +import net.minecraftforge.event.ServerChatEvent +import net.minecraftforge.event.entity.living.LivingDeathEvent +import net.minecraftforge.event.entity.player.AdvancementEvent +import net.minecraftforge.fml.common.FMLCommonHandler +import net.minecraftforge.fml.common.Mod +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import net.minecraftforge.fml.common.gameevent.PlayerEvent +import net.minecraftforge.fml.common.gameevent.TickEvent + +//FORGE-DEPENDENT +@Mod.EventBusSubscriber +object EventWrapper { + + //MC-VERSION & FORGE DEPENDENT + @SubscribeEvent + @JvmStatic + fun progressEvent(e: AdvancementEvent) { + if (e.advancement.display == null) return + val name = e.entityPlayer.name + val text = "has made the advancement ${e.advancement.displayText.unformattedText}" + ProgressHandler.handleProgress(name, text) + } + + //FORGE-DEPENDENT + @SubscribeEvent + @JvmStatic + fun chatEvent(e: ServerChatEvent) { + val user = e.username + val msg = e.message + ChatHandler.handleChat(user, msg) + } + + //FORGE-DEPENDENT + @SubscribeEvent + @JvmStatic + fun commandEvent(e: CommandEvent) { + val sender = + when { + e.sender is EntityPlayer -> e.sender.name + e.sender is DedicatedServer -> cfg!!.relay.systemUser + e.sender is TileEntityCommandBlock -> "CommandBlock" + else -> return + } + val args = e.parameters.joinToString(" ") + val type = when { + e.command is CommandEmote -> USER_ACTION + e.command is CommandBroadcast -> "" + else -> return + } + CommandHandler.handleCommand(sender, args, type) + + } + + //FORGE-DEPENDENT + @SubscribeEvent + @JvmStatic + fun deathEvent(e: LivingDeathEvent) { + if (e.entityLiving is EntityPlayer) { + DeathHandler.handleDeath( + e.entityLiving.name, + e.entityLiving.combatTracker.deathMessage.unformattedText + ) + } + } + + //FORGE-DEPENDENT + @SubscribeEvent + @JvmStatic + fun joinEvent(e: PlayerEvent.PlayerLoggedInEvent) { + JoinLeaveHandler.handleJoin(e.player.name) + } + + //FORGE-DEPENDENT + @SubscribeEvent + @JvmStatic + fun leaveEvent(e: PlayerEvent.PlayerLoggedOutEvent) { + JoinLeaveHandler.handleLeave(e.player.name) + } + + //FORGE-DEPENDENT + @SubscribeEvent + @JvmStatic + fun serverTickEvent(e: TickEvent.ServerTickEvent) { + ServerChatHandler.writeIncomingToChat(FMLCommonHandler.instance().minecraftServerInstance.tickCounter) + } +} \ No newline at end of file diff --git a/1.11.2/src/main/kotlin/matterlink/MatterLink.kt b/1.11.2/src/main/kotlin/matterlink/MatterLink.kt new file mode 100644 index 0000000..fe431de --- /dev/null +++ b/1.11.2/src/main/kotlin/matterlink/MatterLink.kt @@ -0,0 +1,71 @@ +package matterlink + +import matterlink.bridge.MessageHandler +import matterlink.bridge.command.BridgeCommandRegistry +import matterlink.bridge.command.HelpCommand +import matterlink.bridge.command.PlayerListCommand +import matterlink.command.CommandMatterlink +import net.minecraft.util.text.TextComponentString +import net.minecraftforge.fml.common.FMLCommonHandler +import net.minecraftforge.fml.common.Mod +import net.minecraftforge.fml.common.event.* + +const val MODID = "matterlink" +const val NAME = "MatterLink" +const val VERSION = "@VERSION@" + +@Mod( + modid = MODID, + name = NAME, version = VERSION, + serverSideOnly = true, + useMetadata = true, + acceptableRemoteVersions = "*", + modLanguageAdapter = "net.shadowfacts.forgelin.KotlinAdapter" +) +object MatterLink : IMatterLink() { + init { + instance = this + } + + @Mod.EventHandler + fun preInit(event: FMLPreInitializationEvent) { + logger = event.modLog + logger.info("Building bridge!") + + MatterLinkConfig(event.suggestedConfigurationFile) + } + + @Mod.EventHandler + fun init(event: FMLInitializationEvent) { + BridgeCommandRegistry.registerAll(PlayerListCommand, HelpCommand) + } + + @Mod.EventHandler + fun serverAboutToStart(event: FMLServerAboutToStartEvent) { + MessageHandler.start(clear = true) + } + + @Mod.EventHandler + fun serverStarting(event: FMLServerStartingEvent) { + logger.debug("Registering server commands") + event.registerServerCommand(CommandMatterlink()) + + connect() + } + + @Mod.EventHandler + fun serverStopping(event: FMLServerStoppingEvent) { + disconnect() + } + + //FORGE-DEPENDENT + override fun wrappedSendToPlayers(msg: String) { + FMLCommonHandler.instance().minecraftServerInstance.playerList.sendMessage(TextComponentString(msg)) + } + + //FORGE-DEPENDENT + override fun wrappedPlayerList(): Array { + return FMLCommonHandler.instance().minecraftServerInstance.playerList.onlinePlayerNames + } + +} diff --git a/1.11.2/src/main/kotlin/matterlink/MatterLinkConfig.kt b/1.11.2/src/main/kotlin/matterlink/MatterLinkConfig.kt new file mode 100644 index 0000000..3214c79 --- /dev/null +++ b/1.11.2/src/main/kotlin/matterlink/MatterLinkConfig.kt @@ -0,0 +1,128 @@ +package matterlink + +import matterlink.config.IMatterLinkConfig +import matterlink.config.cfg +import net.minecraftforge.common.config.Configuration +import java.io.File +import java.util.regex.Pattern + +class MatterLinkConfig(file: File) : IMatterLinkConfig() { + init { + logger.info("Reading bridge blueprints... from {}", file) + val config = Configuration(file) + + config.addCustomCategoryComment(CATEGORY_RELAY_OPTIONS, "Relay options") + relay = RelayOptions( + + systemUser = config.getString( + "systemUser", + CATEGORY_RELAY_OPTIONS, + relay.systemUser, + "Name of the server user (used by death and advancement messages and the /say command)" + ), + deathEvents = config.getBoolean( + "deathEvents", + CATEGORY_RELAY_OPTIONS, + relay.deathEvents, + "Relay player death messages" + ), + advancements = config.getBoolean( + "advancements", + CATEGORY_RELAY_OPTIONS, + relay.advancements, + "Relay player advancements" + ), + joinLeave = config.getBoolean( + "joinLeave", + CATEGORY_RELAY_OPTIONS, + relay.joinLeave, + "Relay when a player joins or leaves the game" + ) + ) + + config.addCustomCategoryComment(CATEGORY_COMMAND, "User commands") + command = CommandOptions( + enable = config.getBoolean( + "enable", + CATEGORY_COMMAND, + command.enable, + "Enable MC bridge commands" + ), + prefix = config.getString( + "prefix", + CATEGORY_COMMAND, + command.prefix, + "Prefix for MC bridge commands. Accepts a single character (not alphanumeric or /)", + Pattern.compile("^[^0-9A-Za-z/]$") + ) + ) + + config.addCustomCategoryComment(CATEGORY_FORMATTING_INCOMING, "Gateway -> Server" + + "Formatting options: " + + "Available variables: {username}, {text}, {gateway}, {channel}, {protocol}, {username:antiping}") + formatting = FormattingOptions( + chat = config.getString( + "chat", + CATEGORY_FORMATTING_INCOMING, + formatting.chat, + "Generic chat event, just talking" + ), + joinLeave = config.getString( + "joinLeave", + CATEGORY_FORMATTING_INCOMING, + formatting.joinLeave, + "Join and leave events from other gateways" + ), + action = config.getString( + "action", + CATEGORY_FORMATTING_INCOMING, + formatting.action, + "User actions (/me) sent by users from other gateways" + ) + ) + + config.addCustomCategoryComment(CATEGORY_FORMATTING_JOIN_LEAVE, "Server -> Gateway" + + "Formatting options: " + + "Available variables: {username}, {username:antiping}") + formattingJoinLeave = FormattingJoinLeave( + joinServer = config.getString( + "joinServer", + CATEGORY_FORMATTING_JOIN_LEAVE, + formattingJoinLeave.joinServer, + "user join message sent to other gateways, available variables: {username}, {username:antiping}" + ), + leaveServer = config.getString( + "leaveServer", + CATEGORY_FORMATTING_JOIN_LEAVE, + formattingJoinLeave.leaveServer, + "user leave message sent to other gateways, available variables: {username}, {username:antiping}" + ) + ) + + config.addCustomCategoryComment(CATEGORY_CONNECTION, "Connection settings") + connect = ConnectOptions( + url = config.getString( + "connectURL", + CATEGORY_CONNECTION, + 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, + connect.gateway, + "MatterBridge gateway" + ) + ) + + if (config.hasChanged()) config.save() + + cfg = this + } +} \ No newline at end of file diff --git a/1.11.2/src/main/kotlin/matterlink/command/CommandMatterlink.kt b/1.11.2/src/main/kotlin/matterlink/command/CommandMatterlink.kt new file mode 100644 index 0000000..50b5131 --- /dev/null +++ b/1.11.2/src/main/kotlin/matterlink/command/CommandMatterlink.kt @@ -0,0 +1,53 @@ +package matterlink.command + +import com.google.common.collect.Lists +import matterlink.MODID +import matterlink.bridge.MessageHandler +import matterlink.bridge.ServerChatHandler +import matterlink.instance +import matterlink.logger +import net.minecraft.command.CommandBase +import net.minecraft.command.ICommandSender +import net.minecraft.server.MinecraftServer + + +class CommandMatterlink : CommandBase() { + private val aliases: List + + init { + aliases = Lists.newArrayList(MODID, "bridge", "BRIDGE") + } + + override fun getName(): String { + return "bridge" + } + + override fun getUsage(sender: ICommandSender): String { + return "bridge " + } + + override fun getAliases(): List { + return aliases + } + + override fun execute(server: MinecraftServer, sender: ICommandSender, args: Array) /*throws CommandException*/ { + if (args.isEmpty()) { + //throw new WrongUsageException("") + return + } + //TODO: check if sender is OP or test if normal users cannot send this + + + val cmd = args[0].toLowerCase() + when (cmd) { + "connect" -> { + instance.connect() + } + "disconnect" -> { + instance.disconnect() + } + } + } + + +} diff --git a/1.12.2/build.gradle b/1.12.2/build.gradle index e69de29..1e495cd 100644 --- a/1.12.2/build.gradle +++ b/1.12.2/build.gradle @@ -0,0 +1,49 @@ + +buildscript { + repositories { + jcenter() + maven { url = "http://files.minecraftforge.net/maven" } + mavenCentral() + } + dependencies { + classpath "net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT" + } +} + +apply plugin: 'net.minecraftforge.gradle.forge' + +minecraft { + version = mc_version + "-" + forge_version + runDir = "../run" + + mappings = mcp_mappings + + replaceIn 'MatterLink.kt' + replace '@VERSION@', mod_version +} + +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(project(":core").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(project(":core").sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } + +} + +reobf { + shadowJar { mappingType = 'SEARGE' } +} + +tasks.reobfShadowJar.mustRunAfter shadowJar \ No newline at end of file diff --git a/1.12.2/gradle.properties b/1.12.2/gradle.properties index c4c2571..9be039d 100644 --- a/1.12.2/gradle.properties +++ b/1.12.2/gradle.properties @@ -1,4 +1,4 @@ -group = matterbridge mc_version = 1.12.2 mcp_mappings = snapshot_20171003 -forge_version = 14.23.1.2599 \ No newline at end of file +forge_version = 14.23.1.2599 +forgegradle_version = 2.3-SNAPSHOT \ No newline at end of file diff --git a/1.12.2/src/main/kotlin/matterlink/EventWrapper.kt b/1.12.2/src/main/kotlin/matterlink/EventWrapper.kt index 1a5ce30..c987464 100644 --- a/1.12.2/src/main/kotlin/matterlink/EventWrapper.kt +++ b/1.12.2/src/main/kotlin/matterlink/EventWrapper.kt @@ -13,6 +13,7 @@ import net.minecraftforge.event.CommandEvent import net.minecraftforge.event.ServerChatEvent import net.minecraftforge.event.entity.living.LivingDeathEvent import net.minecraftforge.event.entity.player.AdvancementEvent +import net.minecraftforge.fml.common.FMLCommonHandler import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import net.minecraftforge.fml.common.gameevent.PlayerEvent @@ -92,6 +93,6 @@ object EventWrapper { @SubscribeEvent @JvmStatic fun serverTickEvent(e: TickEvent.ServerTickEvent) { - ServerChatHandler.writeIncomingToChat() + ServerChatHandler.writeIncomingToChat(FMLCommonHandler.instance().minecraftServerInstance.tickCounter) } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 6327722..c8a1efb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,3 @@ -buildscript { - repositories { - jcenter() - maven { url = "http://files.minecraftforge.net/maven" } - mavenCentral() - } - dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' - } -} plugins { id "org.jetbrains.kotlin.jvm" version '1.2.21' id "com.github.johnrengelman.shadow" version "1.2.4" @@ -25,7 +15,6 @@ subprojects { } if(name != "core") { - apply plugin: 'net.minecraftforge.gradle.forge' apply plugin: 'com.github.johnrengelman.shadow' version = mc_version + "-" + mod_version @@ -37,35 +26,6 @@ subprojects { sourceCompatibility = targetCompatibility = '1.8' } - minecraft { - version = mc_version + "-" + forge_version - runDir = "../run" - - mappings = mcp_mappings - - replaceIn 'MatterLink.kt' - replace '@VERSION@', mod_version - } - - 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(project(":core").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(project(":core").sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' - } - } - repositories { jcenter() maven { @@ -96,12 +56,5 @@ subprojects { exclude 'dummyThing' } - - - reobf { - shadowJar { mappingType = 'SEARGE' } - } - - tasks.reobfShadowJar.mustRunAfter shadowJar } } \ No newline at end of file diff --git a/core/src/main/kotlin/matterlink/IMatterLink.kt b/core/src/main/kotlin/matterlink/IMatterLink.kt index f6494e9..36e107f 100644 --- a/core/src/main/kotlin/matterlink/IMatterLink.kt +++ b/core/src/main/kotlin/matterlink/IMatterLink.kt @@ -7,6 +7,8 @@ lateinit var instance: IMatterLink lateinit var logger: Logger abstract class IMatterLink { + var interrupted: Boolean = false + abstract fun wrappedSendToPlayers(msg: String) abstract fun wrappedPlayerList(): Array @@ -22,4 +24,16 @@ abstract class IMatterLink { fun disconnect () { MessageHandler.stop() } + + + fun reconnect(tick: Int) { + if(tick % 20 == 0 && interrupted) { + logger.info("Trying to reconnect") + if (MessageHandler.start(clear = false)) { + logger.info("Reconnected to matterbridge relay") + } else { + logger.error("Reconnection to matterbridge relay failed.") + } + } + } } \ No newline at end of file diff --git a/core/src/main/kotlin/matterlink/bridge/HttpStreamConnection.kt b/core/src/main/kotlin/matterlink/bridge/HttpStreamConnection.kt index 68e4ef6..5f73f09 100644 --- a/core/src/main/kotlin/matterlink/bridge/HttpStreamConnection.kt +++ b/core/src/main/kotlin/matterlink/bridge/HttpStreamConnection.kt @@ -1,5 +1,6 @@ package matterlink.bridge; +import matterlink.instance import matterlink.logger import org.apache.http.client.methods.HttpGet import org.apache.http.impl.client.HttpClients @@ -19,7 +20,8 @@ class HttpStreamConnection(getClosure: () -> HttpGet, clearClosure: () -> HttpGe override fun run() { - if(clear) { + instance.interrupted = false + if (clear) { val r = client.execute(clearGet) r.entity.content.bufferedReader().forEachLine { logger.debug("skipping $it") @@ -49,7 +51,11 @@ class HttpStreamConnection(getClosure: () -> HttpGet, clearClosure: () -> HttpGe } } } catch (e: SocketException) { -// MatterLink.logger.error("Bridge Connection interrupted...") + if (!cancelled) { + logger.error("Bridge Connection interrupted...") + instance.interrupted = true + //TODO: mark connection as interrupted and try to reconnect + } } logger.debug("closing stream") content.close() diff --git a/core/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt b/core/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt index 536b49a..f0187f2 100644 --- a/core/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt +++ b/core/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt @@ -10,7 +10,8 @@ object ServerChatHandler { /** * This method must be called every server tick with no arguments. */ - fun writeIncomingToChat() { + fun writeIncomingToChat(tick: Int) { + instance.reconnect(tick) if (MessageHandler.rcvQueue.isNotEmpty()) logger.debug("incoming: " + MessageHandler.rcvQueue.toString()) val nextMessage = MessageHandler.rcvQueue.poll() diff --git a/settings.gradle b/settings.gradle index 5cc28de..de5082c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ rootProject.name = 'MatterLink' -include 'core', '1.12.2' \ No newline at end of file +include 'core', '1.12.2', '1.11.2' \ No newline at end of file From 25896551bda7a89ce207a3076ff1e36512579e36 Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Sat, 10 Feb 2018 18:08:42 +0100 Subject: [PATCH 2/9] shuffling the build logic a little bit more --- 1.11.2/build.gradle | 31 +++++++++++++++++++++++++++++++ 1.12.2/build.gradle | 31 +++++++++++++++++++++++++++++++ build.gradle | 31 ------------------------------- 3 files changed, 62 insertions(+), 31 deletions(-) diff --git a/1.11.2/build.gradle b/1.11.2/build.gradle index 50e452c..aa3f425 100644 --- a/1.11.2/build.gradle +++ b/1.11.2/build.gradle @@ -10,8 +10,39 @@ buildscript { } } +plugins { + id "com.github.johnrengelman.shadow" version "1.2.4" +} + apply plugin: 'net.minecraftforge.gradle.forge' +version = mc_version + "-" + mod_version + +archivesBaseName = "MatterLink" + +sourceCompatibility = targetCompatibility = '1.8' + +dependencies { + compile project(':core') + compile group: "net.shadowfacts", name: "Forgelin", version: "1.6.0" +} + +shadowJar { + classifier '' + // configurations = [project.configurations.shadow] + + relocate "org.apache.http", "matterlink.repack.org.apache.http" + relocate "org.apache.commons.logging", "matterlink.repack.org.apache.commons.logging" + dependencies { + include(project(":core")) + include(dependency("org.apache.httpcomponents:httpclient:4.3.3")) + include(dependency("org.apache.httpcomponents:httpcore:4.3.2")) + include(dependency('commons-logging:commons-logging:1.1.3')) + } + + exclude 'dummyThing' +} + minecraft { version = mc_version + "-" + forge_version runDir = "../run" diff --git a/1.12.2/build.gradle b/1.12.2/build.gradle index 1e495cd..8dd9869 100644 --- a/1.12.2/build.gradle +++ b/1.12.2/build.gradle @@ -10,8 +10,39 @@ buildscript { } } +plugins { + id "com.github.johnrengelman.shadow" version "1.2.4" +} + apply plugin: 'net.minecraftforge.gradle.forge' +version = mc_version + "-" + mod_version + +archivesBaseName = "MatterLink" + +sourceCompatibility = targetCompatibility = '1.8' + +dependencies { + compile project(':core') + compile group: "net.shadowfacts", name: "Forgelin", version: "1.6.0" +} + +shadowJar { + classifier '' + // configurations = [project.configurations.shadow] + + relocate "org.apache.http", "matterlink.repack.org.apache.http" + relocate "org.apache.commons.logging", "matterlink.repack.org.apache.commons.logging" + dependencies { + include(project(":core")) + include(dependency("org.apache.httpcomponents:httpclient:4.3.3")) + include(dependency("org.apache.httpcomponents:httpcore:4.3.2")) + include(dependency('commons-logging:commons-logging:1.1.3')) + } + + exclude 'dummyThing' +} + minecraft { version = mc_version + "-" + forge_version runDir = "../run" diff --git a/build.gradle b/build.gradle index c8a1efb..ab78b89 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,5 @@ plugins { id "org.jetbrains.kotlin.jvm" version '1.2.21' - id "com.github.johnrengelman.shadow" version "1.2.4" id 'idea' } @@ -15,16 +14,7 @@ subprojects { } if(name != "core") { - apply plugin: 'com.github.johnrengelman.shadow' - version = mc_version + "-" + mod_version - - archivesBaseName = "MatterLink" - - sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. - compileJava { - sourceCompatibility = targetCompatibility = '1.8' - } repositories { jcenter() @@ -35,26 +25,5 @@ subprojects { url "http://maven.shadowfacts.net/" } } - - dependencies { - compile project(':core') - compile group: "net.shadowfacts", name: "Forgelin", version: "1.6.0" - } - - shadowJar { - classifier '' - // configurations = [project.configurations.shadow] - - relocate "org.apache.http", "matterlink.repack.org.apache.http" - relocate "org.apache.commons.logging", "matterlink.repack.org.apache.commons.logging" - dependencies { - include(project(":core")) - include(dependency("org.apache.httpcomponents:httpclient:4.3.3")) - include(dependency("org.apache.httpcomponents:httpcore:4.3.2")) - include(dependency('commons-logging:commons-logging:1.1.3')) - } - - exclude 'dummyThing' - } } } \ No newline at end of file From 7d02199eb1cc35e0b72fffa4f96edf06ed710be2 Mon Sep 17 00:00:00 2001 From: DaMachinator Date: Sat, 10 Feb 2018 12:39:38 -0500 Subject: [PATCH 3/9] Update 1.11.2 EventWrapper --- 1.11.2/src/main/kotlin/matterlink/EventWrapper.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/1.11.2/src/main/kotlin/matterlink/EventWrapper.kt b/1.11.2/src/main/kotlin/matterlink/EventWrapper.kt index c987464..4471a74 100644 --- a/1.11.2/src/main/kotlin/matterlink/EventWrapper.kt +++ b/1.11.2/src/main/kotlin/matterlink/EventWrapper.kt @@ -12,7 +12,7 @@ import net.minecraft.tileentity.TileEntityCommandBlock import net.minecraftforge.event.CommandEvent import net.minecraftforge.event.ServerChatEvent import net.minecraftforge.event.entity.living.LivingDeathEvent -import net.minecraftforge.event.entity.player.AdvancementEvent +import net.minecraftforge.event.entity.player.AchievementEvent import net.minecraftforge.fml.common.FMLCommonHandler import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @@ -26,10 +26,9 @@ object EventWrapper { //MC-VERSION & FORGE DEPENDENT @SubscribeEvent @JvmStatic - fun progressEvent(e: AdvancementEvent) { - if (e.advancement.display == null) return + fun progressEvent(e: AchievementEvent) { val name = e.entityPlayer.name - val text = "has made the advancement ${e.advancement.displayText.unformattedText}" + val text = "has earned the achievement ${e.achievement.statName.unformattedText}" ProgressHandler.handleProgress(name, text) } From fb4d94f718a0800d67d6dd28d6852ce841eeddab Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Sat, 10 Feb 2018 19:05:10 +0100 Subject: [PATCH 4/9] replace logger with System.out until we find a way to log version agnostic --- 1.11.2/build.gradle | 2 +- .../src/main/kotlin/matterlink/MatterLink.kt | 3 +++ 1.12.2/build.gradle | 2 +- .../src/main/kotlin/matterlink/MatterLink.kt | 3 +++ build.gradle | 15 +++++++-------- core/build.gradle | 2 +- core/src/main/kotlin/matterlink/IMatterLink.kt | 14 +++++++------- .../matterlink/bridge/HttpStreamConnection.kt | 12 ++++++------ .../kotlin/matterlink/bridge/MessageHandler.kt | 18 +++++++++--------- .../matterlink/bridge/ServerChatHandler.kt | 14 +++++++------- .../bridge/command/BridgeCommandRegistry.kt | 4 ++-- .../kotlin/matterlink/handlers/ChatHandler.kt | 4 ++-- 12 files changed, 49 insertions(+), 44 deletions(-) diff --git a/1.11.2/build.gradle b/1.11.2/build.gradle index aa3f425..1808215 100644 --- a/1.11.2/build.gradle +++ b/1.11.2/build.gradle @@ -45,7 +45,7 @@ shadowJar { minecraft { version = mc_version + "-" + forge_version - runDir = "../run" + runDir = "run" mappings = mcp_mappings diff --git a/1.11.2/src/main/kotlin/matterlink/MatterLink.kt b/1.11.2/src/main/kotlin/matterlink/MatterLink.kt index fe431de..b2e7566 100644 --- a/1.11.2/src/main/kotlin/matterlink/MatterLink.kt +++ b/1.11.2/src/main/kotlin/matterlink/MatterLink.kt @@ -9,11 +9,14 @@ import net.minecraft.util.text.TextComponentString import net.minecraftforge.fml.common.FMLCommonHandler import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.common.event.* +import org.apache.logging.log4j.Logger const val MODID = "matterlink" const val NAME = "MatterLink" const val VERSION = "@VERSION@" +lateinit var logger: Logger + @Mod( modid = MODID, name = NAME, version = VERSION, diff --git a/1.12.2/build.gradle b/1.12.2/build.gradle index 8dd9869..c071fa1 100644 --- a/1.12.2/build.gradle +++ b/1.12.2/build.gradle @@ -45,7 +45,7 @@ shadowJar { minecraft { version = mc_version + "-" + forge_version - runDir = "../run" + runDir = "run" mappings = mcp_mappings diff --git a/1.12.2/src/main/kotlin/matterlink/MatterLink.kt b/1.12.2/src/main/kotlin/matterlink/MatterLink.kt index fe431de..b2e7566 100644 --- a/1.12.2/src/main/kotlin/matterlink/MatterLink.kt +++ b/1.12.2/src/main/kotlin/matterlink/MatterLink.kt @@ -9,11 +9,14 @@ import net.minecraft.util.text.TextComponentString import net.minecraftforge.fml.common.FMLCommonHandler import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.common.event.* +import org.apache.logging.log4j.Logger const val MODID = "matterlink" const val NAME = "MatterLink" const val VERSION = "@VERSION@" +lateinit var logger: Logger + @Mod( modid = MODID, name = NAME, version = VERSION, diff --git a/build.gradle b/build.gradle index ab78b89..68253b2 100644 --- a/build.gradle +++ b/build.gradle @@ -3,18 +3,17 @@ plugins { id 'idea' } + subprojects { apply plugin: "kotlin" - apply plugin: 'idea' - - idea { - module { - excludeDirs += [file("run")] - } - } + apply plugin: "idea" if(name != "core") { - + idea { + module { + excludeDirs += [file("run")] + } + } repositories { jcenter() diff --git a/core/build.gradle b/core/build.gradle index b7d33de..51f784e 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -20,7 +20,7 @@ repositories { dependencies { compile 'org.apache.httpcomponents:httpclient:4.3.3' compile 'commons-logging:commons-logging:1.1.3' - compile group: "org.apache.logging.log4j", name: "log4j-api", version: '2.8.1' +// compile group: "org.apache.logging.log4j", name: "log4j-api", version: '2.8.1' compile 'com.google.code.gson:gson:2.8.0' compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" } diff --git a/core/src/main/kotlin/matterlink/IMatterLink.kt b/core/src/main/kotlin/matterlink/IMatterLink.kt index 36e107f..e5865aa 100644 --- a/core/src/main/kotlin/matterlink/IMatterLink.kt +++ b/core/src/main/kotlin/matterlink/IMatterLink.kt @@ -1,10 +1,10 @@ package matterlink import matterlink.bridge.MessageHandler -import org.apache.logging.log4j.Logger +//import org.apache.logging.log4j.Logger lateinit var instance: IMatterLink -lateinit var logger: Logger +//lateinit var logger: Logger abstract class IMatterLink { var interrupted: Boolean = false @@ -15,9 +15,9 @@ abstract class IMatterLink { fun connect() { if (MessageHandler.start(clear = true)) { - logger.info("Connected to matterbridge relay") + println("Connected to matterbridge relay") } else { - logger.error("Connection to matterbridge relay failed.") + System.err.println("Connection to matterbridge relay failed.") } } @@ -28,11 +28,11 @@ abstract class IMatterLink { fun reconnect(tick: Int) { if(tick % 20 == 0 && interrupted) { - logger.info("Trying to reconnect") + println("Trying to reconnect") if (MessageHandler.start(clear = false)) { - logger.info("Reconnected to matterbridge relay") + println("Reconnected to matterbridge relay") } else { - logger.error("Reconnection to matterbridge relay failed.") + System.err.println("Reconnection to matterbridge relay failed.") } } } diff --git a/core/src/main/kotlin/matterlink/bridge/HttpStreamConnection.kt b/core/src/main/kotlin/matterlink/bridge/HttpStreamConnection.kt index 5f73f09..81682aa 100644 --- a/core/src/main/kotlin/matterlink/bridge/HttpStreamConnection.kt +++ b/core/src/main/kotlin/matterlink/bridge/HttpStreamConnection.kt @@ -1,7 +1,7 @@ package matterlink.bridge; import matterlink.instance -import matterlink.logger +//import matterlink.logger import org.apache.http.client.methods.HttpGet import org.apache.http.impl.client.HttpClients import java.io.InputStream @@ -24,7 +24,7 @@ class HttpStreamConnection(getClosure: () -> HttpGet, clearClosure: () -> HttpGe if (clear) { val r = client.execute(clearGet) r.entity.content.bufferedReader().forEachLine { - logger.debug("skipping $it") + println("DEBUG: skipping $it") } } val response = client.execute(get) @@ -39,7 +39,7 @@ class HttpStreamConnection(getClosure: () -> HttpGet, clearClosure: () -> HttpGe if (chars > 0) { buffer += String(buf.dropLast(buf.count() - chars).toByteArray()) - logger.debug(buffer) + println("DEBUG: " + buffer) while (buffer.contains("\n")) { val line = buffer.substringBefore("\n") @@ -52,14 +52,14 @@ class HttpStreamConnection(getClosure: () -> HttpGet, clearClosure: () -> HttpGe } } catch (e: SocketException) { if (!cancelled) { - logger.error("Bridge Connection interrupted...") + System.err.println("Bridge Connection interrupted...") instance.interrupted = true //TODO: mark connection as interrupted and try to reconnect } } - logger.debug("closing stream") + println("DEBUG: closing stream") content.close() - logger.debug("thread finished") + println("DEBUG: thread finished") onClose() return } diff --git a/core/src/main/kotlin/matterlink/bridge/MessageHandler.kt b/core/src/main/kotlin/matterlink/bridge/MessageHandler.kt index 0a22668..f4d7aba 100644 --- a/core/src/main/kotlin/matterlink/bridge/MessageHandler.kt +++ b/core/src/main/kotlin/matterlink/bridge/MessageHandler.kt @@ -1,7 +1,7 @@ package matterlink.bridge import matterlink.config.cfg -import matterlink.logger +//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 +30,7 @@ object MessageHandler { } private fun createThread(clear: Boolean = true): HttpStreamConnection { - logger.info("Attempting to open bridge connection.") + println("Attempting to open bridge connection.") return HttpStreamConnection( { HttpGet(cfg!!.connect.url + "/api/stream").apply { @@ -46,10 +46,10 @@ object MessageHandler { rcvQueue.add( ApiMessage.decode(it) ) - logger.debug("Received: " + it) +// println("Received: " + it) }, { - logger.info("Bridge connection closed!") + println("Bridge connection closed!") connected = false }, clear @@ -58,13 +58,13 @@ object MessageHandler { fun transmit(msg: ApiMessage) { if (connected && streamConnection.isAlive) { - logger.debug("Transmitting: " + msg) + println("Transmitting: " + msg) transmitMessage(msg) } } fun stop() { - logger.info("Closing bridge connection...") + println("Closing bridge connection...") // MessageHandler.transmit(ApiMessage(text="bridge closing", username="Server")) streamConnection.close() } @@ -93,14 +93,14 @@ object MessageHandler { val response = client.execute(post) val code = response.statusLine.statusCode if (code != 200) { - logger.error("Server returned $code for $post") + System.err.println("Server returned $code for $post") } sendErrors = 0 } catch (e: IOException) { - logger.error("sending message caused $e") + System.err.println("sending message caused $e") sendErrors++ if (sendErrors > 5) { - logger.error("caught too many errors, closing bridge") + System.err.println("caught too many errors, closing bridge") stop() } } diff --git a/core/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt b/core/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt index f0187f2..4c07e75 100644 --- a/core/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt +++ b/core/src/main/kotlin/matterlink/bridge/ServerChatHandler.kt @@ -1,6 +1,6 @@ package matterlink.bridge -import matterlink.logger +//import matterlink.logger import matterlink.instance import matterlink.bridge.command.BridgeCommandRegistry import matterlink.config.cfg @@ -13,7 +13,7 @@ object ServerChatHandler { fun writeIncomingToChat(tick: Int) { instance.reconnect(tick) if (MessageHandler.rcvQueue.isNotEmpty()) - logger.debug("incoming: " + MessageHandler.rcvQueue.toString()) + println("incoming: " + MessageHandler.rcvQueue.toString()) val nextMessage = MessageHandler.rcvQueue.poll() if (nextMessage != null && nextMessage.gateway == cfg!!.connect.gateway) { @@ -30,11 +30,11 @@ object ServerChatHandler { val user = nextMessage.username val text = nextMessage.text val json = nextMessage.encode() - 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") + println("Threw out message with unhandled event: ${nextMessage.event}") + println(" Message contents:") + println(" User: $user") + println(" Text: $text") + println(" JSON: $json") return } } diff --git a/core/src/main/kotlin/matterlink/bridge/command/BridgeCommandRegistry.kt b/core/src/main/kotlin/matterlink/bridge/command/BridgeCommandRegistry.kt index f051fa9..f240354 100644 --- a/core/src/main/kotlin/matterlink/bridge/command/BridgeCommandRegistry.kt +++ b/core/src/main/kotlin/matterlink/bridge/command/BridgeCommandRegistry.kt @@ -1,7 +1,7 @@ package matterlink.bridge.command import matterlink.config.cfg -import matterlink.logger +//import matterlink.logger import java.util.* object BridgeCommandRegistry { @@ -23,7 +23,7 @@ object BridgeCommandRegistry { fun register(cmd: IBridgeCommand): Boolean { if (cmd.name.isBlank() || commandMap.containsKey(cmd.name)) { - logger.error("Failed to register command: '${cmd.name}'") + System.out.println("Failed to register command: '${cmd.name}'") return false } commandMap[cmd.name] = cmd diff --git a/core/src/main/kotlin/matterlink/handlers/ChatHandler.kt b/core/src/main/kotlin/matterlink/handlers/ChatHandler.kt index 90aa90e..48211df 100644 --- a/core/src/main/kotlin/matterlink/handlers/ChatHandler.kt +++ b/core/src/main/kotlin/matterlink/handlers/ChatHandler.kt @@ -2,7 +2,7 @@ package matterlink.handlers import matterlink.bridge.ApiMessage import matterlink.bridge.MessageHandler -import matterlink.logger +//import matterlink.logger object ChatHandler { fun handleChat(user: String, msg: String) { @@ -12,7 +12,7 @@ object ChatHandler { username = user, text = message )) - else -> logger.warn("dropped blank message by '$user'") + else -> println("WARN: dropped blank message by '$user'") } } } From 70406cf3084b5dd74a2bf03092aa409bc15f9f9c Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Sat, 10 Feb 2018 19:07:31 +0100 Subject: [PATCH 5/9] add jenkins stages --- Jenkinsfile | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 99eaf83..e0ca064 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,5 +1,19 @@ node { checkout scm - sh './gradlew :1.12.2:setupCiWorkspace :1.12.2:clean :1.12.2:build' - archive '1.12.2/build/libs/*jar' + stages { + stage("1.11.2") { + steps { + sh './gradlew :1.11.2:setupCiWorkspace :1.11.2:clean :1.11.2:build' + archive '1.11.2/build/libs/*jar' + + } + } + stage("1.12.2") { + steps { + sh './gradlew :1.12.2:setupCiWorkspace :1.12.2:clean :1.12.2:build' + archive '1.12.2/build/libs/*jar' + + } + } + } } \ No newline at end of file From 035dfa25114c11659203789bb382c64f94908f85 Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Sat, 10 Feb 2018 19:10:12 +0100 Subject: [PATCH 6/9] hope this is how jekins stages work --- Jenkinsfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index e0ca064..b3daced 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,18 +1,21 @@ -node { - checkout scm +pipeline { + agent any stages { + stage("checkout") { + steps { + checkout scm + } + } stage("1.11.2") { steps { sh './gradlew :1.11.2:setupCiWorkspace :1.11.2:clean :1.11.2:build' archive '1.11.2/build/libs/*jar' - } } stage("1.12.2") { steps { sh './gradlew :1.12.2:setupCiWorkspace :1.12.2:clean :1.12.2:build' archive '1.12.2/build/libs/*jar' - } } } From 1362147c7016c26f37f0da42f1eae4554f00620a Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Sat, 10 Feb 2018 19:17:00 +0100 Subject: [PATCH 7/9] is SCM implied in the declarative pipeline ? --- Jenkinsfile | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index b3daced..deb8b1d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,11 +1,6 @@ pipeline { agent any stages { - stage("checkout") { - steps { - checkout scm - } - } stage("1.11.2") { steps { sh './gradlew :1.11.2:setupCiWorkspace :1.11.2:clean :1.11.2:build' From 1ebf4852a4fef696278a1535b6b29c552bfd52c2 Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Sat, 10 Feb 2018 20:06:42 +0100 Subject: [PATCH 8/9] fix -sources jars --- 1.11.2/build.gradle | 12 ++++++++++++ 1.12.2/build.gradle | 11 +++++++++++ Jenkinsfile | 8 ++++++-- build.gradle | 3 ++- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/1.11.2/build.gradle b/1.11.2/build.gradle index 1808215..b1fbb43 100644 --- a/1.11.2/build.gradle +++ b/1.11.2/build.gradle @@ -73,6 +73,18 @@ processResources { } +sourceJar { + classifier 'sources' + // copy all the minecraftforge specific classes + from sourceSets.main.allSource + + // copy everything else except the mcmod.info + from (project(":core").sourceSets.main.allSource) { + exclude 'mcmod.info' + } +} + + reobf { shadowJar { mappingType = 'SEARGE' } } diff --git a/1.12.2/build.gradle b/1.12.2/build.gradle index c071fa1..663d187 100644 --- a/1.12.2/build.gradle +++ b/1.12.2/build.gradle @@ -73,6 +73,17 @@ processResources { } +sourceJar { + classifier 'sources' + // copy all the minecraftforge specific classes + from sourceSets.main.allSource + + // copy everything else except the mcmod.info + from (project(":core").sourceSets.main.allSource) { + exclude 'mcmod.info' + } +} + reobf { shadowJar { mappingType = 'SEARGE' } } diff --git a/Jenkinsfile b/Jenkinsfile index deb8b1d..6033692 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,13 +3,17 @@ pipeline { stages { stage("1.11.2") { steps { - sh './gradlew :1.11.2:setupCiWorkspace :1.11.2:clean :1.11.2:build' + sh './gradlew :1.11.2:setupCiWorkspace' + sh './gradlew :1.11.2:clean' + sh './gradlew :1.11.2:build' archive '1.11.2/build/libs/*jar' } } stage("1.12.2") { steps { - sh './gradlew :1.12.2:setupCiWorkspace :1.12.2:clean :1.12.2:build' + sh './gradlew :1.12.2:setupCiWorkspace' + sh './gradlew :1.12.2:clean' + sh './gradlew :1.12.2:build' archive '1.12.2/build/libs/*jar' } } diff --git a/build.gradle b/build.gradle index 68253b2..90e1a4b 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ subprojects { apply plugin: "kotlin" apply plugin: "idea" - if(name != "core") { + if (name != "core") { idea { module { excludeDirs += [file("run")] @@ -24,5 +24,6 @@ subprojects { url "http://maven.shadowfacts.net/" } } + } } \ No newline at end of file From 015620f41ab1dbd91846c241ae0f1d38b3646516 Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Sat, 10 Feb 2018 20:50:13 +0100 Subject: [PATCH 9/9] release 1.2 --- build.gradle | 14 ++++++++------ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 90e1a4b..9212dad 100644 --- a/build.gradle +++ b/build.gradle @@ -8,20 +8,22 @@ subprojects { apply plugin: "kotlin" apply plugin: "idea" - if (name != "core") { - idea { - module { - excludeDirs += [file("run")] - } + idea { + module { + excludeDirs += [file("run")] } + } + if (name != "core") { repositories { jcenter() maven { + name = "unascribed" url = 'http://unascribed.com/maven/releases' } maven { - url "http://maven.shadowfacts.net/" + name = "shadowfacts" + url = "http://maven.shadowfacts.net/" } } diff --git a/gradle.properties b/gradle.properties index f5b8419..551e3e5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -mod_version = 1.1.2 +mod_version = 1.2