From 67d0aab64e543667283fd354647a70c8b958ed81 Mon Sep 17 00:00:00 2001 From: NikkyAI Date: Sat, 17 Feb 2018 23:51:58 +0100 Subject: [PATCH] add 1.7.10 --- 1.7.10/build.gradle | 89 ++++++++++++++++++ 1.7.10/gradle.properties | 3 + .../main/kotlin/matterlink/EventHandler.kt | 93 +++++++++++++++++++ .../src/main/kotlin/matterlink/MatterLink.kt | 72 ++++++++++++++ .../kotlin/matterlink/MatterLinkConfig.kt | 25 +++++ .../matterlink/command/CommandMatterlink.kt | 33 +++++++ .../command/MatterlinkCommandSender.kt | 50 ++++++++++ .../templates/kotlin/matterlink/Constants.kt | 8 ++ .../src/main/kotlin/matterlink/IMatterLink.kt | 1 - gradle.properties | 2 +- settings.gradle | 2 +- 11 files changed, 375 insertions(+), 3 deletions(-) create mode 100644 1.7.10/build.gradle create mode 100644 1.7.10/gradle.properties create mode 100644 1.7.10/src/main/kotlin/matterlink/EventHandler.kt create mode 100644 1.7.10/src/main/kotlin/matterlink/MatterLink.kt create mode 100644 1.7.10/src/main/kotlin/matterlink/MatterLinkConfig.kt create mode 100644 1.7.10/src/main/kotlin/matterlink/command/CommandMatterlink.kt create mode 100644 1.7.10/src/main/kotlin/matterlink/command/MatterlinkCommandSender.kt create mode 100644 1.7.10/src/templates/kotlin/matterlink/Constants.kt diff --git a/1.7.10/build.gradle b/1.7.10/build.gradle new file mode 100644 index 0000000..87d7310 --- /dev/null +++ b/1.7.10/build.gradle @@ -0,0 +1,89 @@ + +buildscript { + repositories { + jcenter() + maven { url = "http://files.minecraftforge.net/maven" } + mavenCentral() + } + dependencies { + classpath "net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT" + } +} + +apply plugin: 'forge' + +version = project.mc_version + "-" + project.mod_version + +archivesBaseName = project.mod_name + +sourceCompatibility = targetCompatibility = '1.8' + +configurations { + shade + compile.extendsFrom shade +} + +dependencies { + shade project(":core") +} + +minecraft { + version = project.mc_version + "-" + project.forge_version + "-" + project.mc_version + runDir = "run" + + mappings = project.mcp_mappings + + srgExtra "PK: kotlin matterlink/repack/kotlin" + srgExtra "PK: org/jetbrains/annotations matterlink/repack/org/jetbrains/annotations" + srgExtra "PK: com/google/gson matterlink/repack/com/google/gson" + srgExtra "PK: org/apache/commons matterlink/repack/org/apache/commons" + srgExtra "PK: org/apache/http matterlink/repack/org/apache/http" + srgExtra "PK: org/intelij matterlink/repack/org/intelij" +} + +compileKotlin.doFirst { + def target = "src/main/kotlin/matterlink/gen" + copy { + from("src/templates/kotlin/matterlink/Constants.kt") + into(target) + } + ant.replaceregexp(match:'@MODVERSION@', replace: project.mod_version, flags:'g', byline:true) { + fileset(dir: target, includes: 'Constants.kt') + } + ant.replaceregexp(match:'@MCVERSION@', replace: project.mc_version, flags:'g', byline:true) { + fileset(dir: target, includes: 'Constants.kt') + } + ant.replaceregexp(match:'@FORGELIN-VERSION@', replace: project.forgelin_version, flags:'g', byline:true) { + fileset(dir: target, includes: 'Constants.kt') + } + ant.replaceregexp(match:'@FORGE-VERSION@', replace: project.forge_version, flags:'g', byline:true) { + fileset(dir: target, includes: 'Constants.kt') + } +} + +processResources { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.mod_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.mod_version, 'mcversion': project.minecraft.version + } + + // copy everything else except the mcmod.info + from(project(":core").sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } +} + +jar { + configurations.shade.each { dep -> + from (project.zipTree(dep)) { + exclude "META-INF", "META-INF/**" + } + } +} \ No newline at end of file diff --git a/1.7.10/gradle.properties b/1.7.10/gradle.properties new file mode 100644 index 0000000..f7103cd --- /dev/null +++ b/1.7.10/gradle.properties @@ -0,0 +1,3 @@ +mc_version = 1.7.10 +mcp_mappings = stable_12 +forge_version = 10.13.4.1614 diff --git a/1.7.10/src/main/kotlin/matterlink/EventHandler.kt b/1.7.10/src/main/kotlin/matterlink/EventHandler.kt new file mode 100644 index 0000000..9be924c --- /dev/null +++ b/1.7.10/src/main/kotlin/matterlink/EventHandler.kt @@ -0,0 +1,93 @@ +package matterlink + +import cpw.mods.fml.common.eventhandler.SubscribeEvent +import cpw.mods.fml.common.gameevent.PlayerEvent +import cpw.mods.fml.common.gameevent.TickEvent +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.MinecraftServer +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.AchievementEvent + +//FORGE-DEPENDENT +object EventHandler { + + //MC-VERSION & FORGE DEPENDENT + @SubscribeEvent + fun progressEvent(e: AchievementEvent) { + ProgressHandler.handleProgress( + name = e.entityPlayer.displayName, + message = "has earned the achievement", + display = e.achievement.statName.unformattedText + ) + } + + //FORGE-DEPENDENT + @SubscribeEvent + fun chatEvent(e: ServerChatEvent) { + ChatProcessor.sendToBridge( + user = e.username, + msg = e.message, + event = "" + ) + } + + //FORGE-DEPENDENT + @SubscribeEvent + fun commandEvent(e: CommandEvent) { + val sender = when { + e.sender is EntityPlayer -> e.sender.commandSenderName + 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 + } + ChatProcessor.sendToBridge(user = sender, msg = args, event = type) + + } + + //FORGE-DEPENDENT + @SubscribeEvent + fun deathEvent(e: LivingDeathEvent) { + if (e.entityLiving is EntityPlayer) { + val player = e.entityLiving as EntityPlayer + DeathHandler.handleDeath( + player = player.displayName, + deathMessage = e.entityLiving.combatTracker.func_151521_b().unformattedText, + damageType = e.source.damageType + ) + } + } + + //FORGE-DEPENDENT + @SubscribeEvent + fun joinEvent(e: PlayerEvent.PlayerLoggedInEvent) { + JoinLeaveHandler.handleJoin(e.player.displayName) + } + + //FORGE-DEPENDENT + @SubscribeEvent + fun leaveEvent(e: PlayerEvent.PlayerLoggedOutEvent) { + JoinLeaveHandler.handleLeave(e.player.displayName) + } + + //FORGE-DEPENDENT + @SubscribeEvent + fun serverTickEvent(e: TickEvent.ServerTickEvent) { + ServerChatHandler.writeIncomingToChat(MinecraftServer.getServer().tickCounter) + } +} \ No newline at end of file diff --git a/1.7.10/src/main/kotlin/matterlink/MatterLink.kt b/1.7.10/src/main/kotlin/matterlink/MatterLink.kt new file mode 100644 index 0000000..0296105 --- /dev/null +++ b/1.7.10/src/main/kotlin/matterlink/MatterLink.kt @@ -0,0 +1,72 @@ +package matterlink + +import cpw.mods.fml.common.Mod +import cpw.mods.fml.common.event.* +import matterlink.command.CommandMatterlink +import matterlink.command.IMinecraftCommandSender +import matterlink.command.MatterlinkCommandSender +import matterlink.config.cfg +import net.minecraft.server.MinecraftServer +import net.minecraft.util.ChatComponentText +import net.minecraftforge.common.MinecraftForge +import org.apache.logging.log4j.Level +import org.apache.logging.log4j.Logger + +lateinit var logger: Logger + +@Mod( + modid = MODID, + name = NAME, version = MODVERSION, + useMetadata = true, + acceptableRemoteVersions = "*" +) +class MatterLink : IMatterLink() { + init { + instance = this + } + + @Mod.EventHandler + fun preInit(event: FMLPreInitializationEvent) { + MinecraftForge.EVENT_BUS.register(EventHandler) + logger = event.modLog + logger.info("Building bridge!") + + cfg = MatterLinkConfig(event.suggestedConfigurationFile) + } + + @Mod.EventHandler + fun init(event: FMLInitializationEvent) { + this.registerBridgeCommands() + } + + @Mod.EventHandler + fun serverStarting(event: FMLServerStartingEvent) { + logger.debug("Registering server commands") + event.registerServerCommand(CommandMatterlink()) + serverStartTime = System.currentTimeMillis() + connect() + } + + @Mod.EventHandler + fun serverStopping(event: FMLServerStoppingEvent) { + disconnect() + } + + //FORGE-DEPENDENT + override fun wrappedSendToPlayers(msg: String) { + MinecraftServer.getServer().addChatMessage(ChatComponentText(msg)); + } + + //FORGE-DEPENDENT + override fun wrappedPlayerList(): Array { + return MinecraftServer.getServer().allUsernames + } + + override fun log(level: String, formatString: String, vararg data: Any) = + logger.log(Level.toLevel(level, Level.INFO),formatString, *data) + + override var commandSender: IMinecraftCommandSender = MatterlinkCommandSender + + override val mcVersion: String = MCVERSION + override val modVersion: String = MODVERSION +} diff --git a/1.7.10/src/main/kotlin/matterlink/MatterLinkConfig.kt b/1.7.10/src/main/kotlin/matterlink/MatterLinkConfig.kt new file mode 100644 index 0000000..0d1e481 --- /dev/null +++ b/1.7.10/src/main/kotlin/matterlink/MatterLinkConfig.kt @@ -0,0 +1,25 @@ +package matterlink + +import matterlink.config.BaseConfig +import net.minecraftforge.common.config.Configuration +import java.io.File + +class MatterLinkConfig(val file: File) : BaseConfig() { + init { + logger.info("Reading bridge blueprints... from {}", file) + val config = Configuration(file) + + load( + getBoolean = config::getBoolean, + getString = config::getString, + getStringValidated = config::getString, + getStringValidValues = config::getString, + getStringList = config::getStringList, + addCustomCategoryComment = config::addCustomCategoryComment + ) + + if (config.hasChanged()) config.save() + } + + override fun load() = MatterLinkConfig(file) +} \ No newline at end of file diff --git a/1.7.10/src/main/kotlin/matterlink/command/CommandMatterlink.kt b/1.7.10/src/main/kotlin/matterlink/command/CommandMatterlink.kt new file mode 100644 index 0000000..74f35dd --- /dev/null +++ b/1.7.10/src/main/kotlin/matterlink/command/CommandMatterlink.kt @@ -0,0 +1,33 @@ +package matterlink.command + +import net.minecraft.command.CommandBase +import net.minecraft.command.ICommandSender +import net.minecraft.command.WrongUsageException +import net.minecraft.util.ChatComponentText + + +class CommandMatterlink : CommandBase() { + override fun processCommand(sender: ICommandSender, args: Array) { + if (args.isEmpty()) { + throw WrongUsageException("Invalid command! Valid uses: ${this.getCommandUsage(sender)}") + } + + val reply = CommandCore.execute(args) + + if (reply.isNotEmpty()) { + sender.addChatMessage(ChatComponentText(reply)) + } + } + + override fun getCommandName(): String { + return CommandCore.getName() + } + + override fun getCommandUsage(sender: ICommandSender): String { + return CommandCore.getUsage() + } + + override fun getCommandAliases(): List { + return CommandCore.getAliases() + } +} diff --git a/1.7.10/src/main/kotlin/matterlink/command/MatterlinkCommandSender.kt b/1.7.10/src/main/kotlin/matterlink/command/MatterlinkCommandSender.kt new file mode 100644 index 0000000..ff0eb6e --- /dev/null +++ b/1.7.10/src/main/kotlin/matterlink/command/MatterlinkCommandSender.kt @@ -0,0 +1,50 @@ +package matterlink.command + +import matterlink.bridge.ApiMessage +import matterlink.bridge.MessageHandler +import matterlink.config.cfg +import net.minecraft.command.ICommandSender +import net.minecraft.entity.Entity +import net.minecraft.server.MinecraftServer +import net.minecraft.util.ChatComponentText +import net.minecraft.util.ChunkCoordinates +import net.minecraft.util.IChatComponent +import net.minecraft.world.World + +object MatterlinkCommandSender : IMinecraftCommandSender, ICommandSender { + + private var level: Int = 0 + + override fun execute(cmdString: String, level: Int): Boolean { + return 0 < MinecraftServer.getServer().commandManager.executeCommand( + this, + cmdString + ) + } + + override fun getFormattedCommandSenderName(): IChatComponent { + return ChatComponentText(commandSenderName) + } + + override fun getCommandSenderName(): String { + return "MatterLink" + } + + override fun getEntityWorld(): World { + return MinecraftServer.getServer().worldServerForDimension(0) + } + + override fun canCommandSenderUseCommand(permLevel: Int, commandName: String?): Boolean { + //TODO: Implement actual permissions checking + return true + } + + override fun addChatMessage(component: IChatComponent) { + MessageHandler.transmit(ApiMessage( + username = cfg.relay.systemUser, + text = component.unformattedText + )) + } + + override fun getCommandSenderPosition(): ChunkCoordinates = ChunkCoordinates(0,0,0) +} \ No newline at end of file diff --git a/1.7.10/src/templates/kotlin/matterlink/Constants.kt b/1.7.10/src/templates/kotlin/matterlink/Constants.kt new file mode 100644 index 0000000..7b8c7b1 --- /dev/null +++ b/1.7.10/src/templates/kotlin/matterlink/Constants.kt @@ -0,0 +1,8 @@ +package matterlink + +const val MODID = "matterlink" +const val NAME = "MatterLink" +const val MODVERSION = "@MODVERSION@" +const val MCVERSION = "@MCVERSION@" +const val DEPENDENCIES = "" + diff --git a/core/src/main/kotlin/matterlink/IMatterLink.kt b/core/src/main/kotlin/matterlink/IMatterLink.kt index 1c67d27..5a50875 100644 --- a/core/src/main/kotlin/matterlink/IMatterLink.kt +++ b/core/src/main/kotlin/matterlink/IMatterLink.kt @@ -13,7 +13,6 @@ abstract class IMatterLink { abstract val modVersion: String abstract var commandSender: IMinecraftCommandSender - //var interrupted: Boolean = false abstract fun wrappedSendToPlayers(msg: String) diff --git a/gradle.properties b/gradle.properties index 9d6a851..e183429 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ mod_name = MatterLink -mod_version = 1.3 +mod_version = 1.3.1 forgelin_version = 1.6.0 \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 581d1c0..d7d67cc 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ rootProject.name = 'MatterLink' -include 'core', '1.12.2', '1.11.2', '1.10.2' \ No newline at end of file +include 'core', '1.12.2', '1.11.2', '1.10.2', '1.7.10' \ No newline at end of file