From 4e0aab1224bf91e94e0872c2554a210e7d6749c5 Mon Sep 17 00:00:00 2001 From: Gabriel-Paulucci Date: Wed, 31 Jul 2024 16:41:17 -0300 Subject: [PATCH] Add: database test --- .editorconfig | 2 +- build.gradle | 9 ----- build.gradle.kts | 23 +++++++++++++ dependencies.gradle | 11 +++++- gradle.properties | 6 ++-- repositories.gradle | 2 +- settings.gradle | 25 -------------- settings.gradle.kts | 23 +++++++++++++ .../com/fardragi/dragiutils/ClientProxy.kt | 3 -- .../com/fardragi/dragiutils/CommonProxy.kt | 30 ---------------- .../kotlin/com/fardragi/dragiutils/Config.kt | 21 ------------ .../com/fardragi/dragiutils/DragiUtils.kt | 34 ++++++++++--------- .../fardragi/dragiutils/client/ClientProxy.kt | 5 +++ .../com/fardragi/dragiutils/config/Config.kt | 19 +++++++++++ .../dragiutils/config/DatabaseConfig.kt | 14 ++++++++ .../dragiutils/database/DatabaseModule.kt | 31 +++++++++++++++++ .../dragiutils/database/models/User.kt | 8 +++++ .../exceptions/DragiUtilsException.kt | 3 ++ .../fardragi/dragiutils/server/ServerProxy.kt | 28 +++++++++++++++ .../fardragi/dragiutils/utils/Minecraft.kt | 13 +++++++ src/main/resources/mcmod.info | 6 ++-- 21 files changed, 204 insertions(+), 112 deletions(-) delete mode 100644 build.gradle create mode 100644 build.gradle.kts delete mode 100644 settings.gradle create mode 100644 settings.gradle.kts delete mode 100644 src/main/kotlin/com/fardragi/dragiutils/ClientProxy.kt delete mode 100644 src/main/kotlin/com/fardragi/dragiutils/CommonProxy.kt delete mode 100644 src/main/kotlin/com/fardragi/dragiutils/Config.kt create mode 100644 src/main/kotlin/com/fardragi/dragiutils/client/ClientProxy.kt create mode 100644 src/main/kotlin/com/fardragi/dragiutils/config/Config.kt create mode 100644 src/main/kotlin/com/fardragi/dragiutils/config/DatabaseConfig.kt create mode 100644 src/main/kotlin/com/fardragi/dragiutils/database/DatabaseModule.kt create mode 100644 src/main/kotlin/com/fardragi/dragiutils/database/models/User.kt create mode 100644 src/main/kotlin/com/fardragi/dragiutils/exceptions/DragiUtilsException.kt create mode 100644 src/main/kotlin/com/fardragi/dragiutils/server/ServerProxy.kt create mode 100644 src/main/kotlin/com/fardragi/dragiutils/utils/Minecraft.kt diff --git a/.editorconfig b/.editorconfig index 4ffbd90..4631f0b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,7 +7,7 @@ root = true [*] charset = utf-8 end_of_line = lf -indent_size = 4 +indent_size = 2 indent_style = space insert_final_newline = true trim_trailing_whitespace = true diff --git a/build.gradle b/build.gradle deleted file mode 100644 index 65e44ce..0000000 --- a/build.gradle +++ /dev/null @@ -1,9 +0,0 @@ - -plugins { - id 'com.gtnewhorizons.gtnhconvention' - id 'org.jetbrains.kotlin.jvm' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..026fb2a --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,23 @@ +plugins { + id ("com.gtnewhorizons.gtnhconvention") + id ("org.jetbrains.kotlin.jvm") +} + +tasks.register("copyJar") { + group = "fardragi" + dependsOn("build") + doLast() { + val target = File("C:\\Users\\mrvul\\Documents\\Minecraft\\FarDragiServer\\mods\\dragiutils.jar") + val jar = File("./build/libs").walk().find { it.name.endsWith("dirty.jar") } + + jar?.copyTo(target, overwrite = true) + } +} + +tasks.register("startServer") { + group = "fardragi" + standardInput = System.`in` + dependsOn("copyJar") + workingDir("C:\\Users\\mrvul\\Documents\\Minecraft\\FarDragiServer") + commandLine("cmd", "/c", "startserver-java9.bat") +} diff --git a/dependencies.gradle b/dependencies.gradle index b470f13..d85e68e 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -34,5 +34,14 @@ * For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph */ dependencies { - runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.5.4-GTNH:dev") + runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.5.4-GTNH:dev") + + shadowImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.8.1") + + shadowImplementation("org.jetbrains.exposed:exposed-core:0.53.0") + implementation("org.jetbrains.exposed:exposed-jdbc:0.53.0") + + shadowImplementation("org.mariadb.jdbc:mariadb-java-client:3.3.1") + + shadowImplementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.0") } diff --git a/gradle.properties b/gradle.properties index a0d7025..c388b08 100644 --- a/gradle.properties +++ b/gradle.properties @@ -99,7 +99,7 @@ forceEnableMixins = false # If enabled, you may use 'shadowCompile' for dependencies. They will be integrated into your jar. It is your # responsibility to check the license and request permission for distribution if required. -usesShadowedDependencies = false +usesShadowedDependencies = true # If disabled, won't remove unused classes from shadowed dependencies. Some libraries use reflection to access # their own classes, making the minimization unreliable. @@ -108,7 +108,7 @@ minimizeShadowedDependencies = true # If disabled, won't rename the shadowed classes. relocateShadowedDependencies = true -# Adds the GTNH maven, CurseMaven, Modrinth, and some more well-known 1.7.10 repositories. +# Adds CurseMaven, Modrinth, and some more well-known 1.7.10 repositories. includeWellKnownRepositories = true # Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven. @@ -181,3 +181,5 @@ curseForgeRelations = # This is meant to be set in $HOME/.gradle/gradle.properties. # ideaCheckSpotlessOnBuild = true +# Non-GTNH properties +exposedVersion = 0.52.0 diff --git a/repositories.gradle b/repositories.gradle index 7e002f2..83ce338 100644 --- a/repositories.gradle +++ b/repositories.gradle @@ -1,5 +1,5 @@ // Add any additional repositories for your dependencies here. repositories { - + mavenCentral() } diff --git a/settings.gradle b/settings.gradle deleted file mode 100644 index 147acd8..0000000 --- a/settings.gradle +++ /dev/null @@ -1,25 +0,0 @@ - -pluginManagement { - repositories { - maven { - // RetroFuturaGradle - name "GTNH Maven" - url "https://nexus.gtnewhorizons.com/repository/public/" - mavenContent { - includeGroup("com.gtnewhorizons") - includeGroupByRegex("com\\.gtnewhorizons\\..+") - } - } - gradlePluginPortal() - mavenCentral() - mavenLocal() - } - plugins { - id 'org.jetbrains.kotlin.jvm' version '2.0.0' - } -} - -plugins { - id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.24' - id 'org.gradle.toolchains.foojay-resolver-convention' version '0.5.0' -} diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..c5787aa --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,23 @@ +pluginManagement { + repositories { + maven("https://nexus.gtnewhorizons.com/repository/public/") { + // RetroFuturaGradle + name = "GTNH Maven" + mavenContent { + includeGroup("com.gtnewhorizons") + includeGroupByRegex("com\\.gtnewhorizons\\..+") + } + } + gradlePluginPortal() + mavenCentral() + mavenLocal() + } + plugins { + id("org.jetbrains.kotlin.jvm") version "2.0.0" + } +} + +plugins { + id("com.gtnewhorizons.gtnhsettingsconvention") version "1.0.25" + id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0" +} diff --git a/src/main/kotlin/com/fardragi/dragiutils/ClientProxy.kt b/src/main/kotlin/com/fardragi/dragiutils/ClientProxy.kt deleted file mode 100644 index d8fc77e..0000000 --- a/src/main/kotlin/com/fardragi/dragiutils/ClientProxy.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.fardragi.dragiutils - -class ClientProxy : CommonProxy() diff --git a/src/main/kotlin/com/fardragi/dragiutils/CommonProxy.kt b/src/main/kotlin/com/fardragi/dragiutils/CommonProxy.kt deleted file mode 100644 index 073e5c8..0000000 --- a/src/main/kotlin/com/fardragi/dragiutils/CommonProxy.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.fardragi.dragiutils - -import com.fardragi.dragiutils.Config.synchronizeConfiguration -import cpw.mods.fml.common.event.FMLInitializationEvent -import cpw.mods.fml.common.event.FMLPostInitializationEvent -import cpw.mods.fml.common.event.FMLPreInitializationEvent -import cpw.mods.fml.common.event.FMLServerStartingEvent - -open class CommonProxy { - // preInit "Run before anything else. Read your config, create blocks, items, etc, and register - // them with the - // GameRegistry." (Remove if not needed) - fun preInit(event: FMLPreInitializationEvent) { - synchronizeConfiguration(event.suggestedConfigurationFile) - - DragiUtils.LOG.info(Config.greeting) - DragiUtils.LOG.info("I am MyMod at version " + Tags.VERSION) - } - - // load "Do your mod setup. Build whatever data structures you care about. Register recipes." - // (Remove if not needed) - fun init(event: FMLInitializationEvent?) {} - - // postInit "Handle interaction with other mods, complete your setup based on this." (Remove if - // not needed) - fun postInit(event: FMLPostInitializationEvent?) {} - - // register server commands in this event handler (Remove if not needed) - fun serverStarting(event: FMLServerStartingEvent?) {} -} diff --git a/src/main/kotlin/com/fardragi/dragiutils/Config.kt b/src/main/kotlin/com/fardragi/dragiutils/Config.kt deleted file mode 100644 index 32d21f2..0000000 --- a/src/main/kotlin/com/fardragi/dragiutils/Config.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.fardragi.dragiutils - -import java.io.File -import net.minecraftforge.common.config.Configuration - -object Config { - @JvmField var greeting: String = "Hello World" - - @JvmStatic - fun synchronizeConfiguration(configFile: File?) { - val configuration = Configuration(configFile) - - greeting = - configuration.getString( - "greeting", Configuration.CATEGORY_GENERAL, greeting, "How shall I greet?") - - if (configuration.hasChanged()) { - configuration.save() - } - } -} diff --git a/src/main/kotlin/com/fardragi/dragiutils/DragiUtils.kt b/src/main/kotlin/com/fardragi/dragiutils/DragiUtils.kt index 5aa348e..df1c6bf 100644 --- a/src/main/kotlin/com/fardragi/dragiutils/DragiUtils.kt +++ b/src/main/kotlin/com/fardragi/dragiutils/DragiUtils.kt @@ -1,5 +1,7 @@ package com.fardragi.dragiutils +import com.fardragi.dragiutils.exceptions.DragiUtilsException +import com.fardragi.dragiutils.server.ServerProxy import cpw.mods.fml.common.Mod import cpw.mods.fml.common.SidedProxy import cpw.mods.fml.common.event.FMLInitializationEvent @@ -13,30 +15,27 @@ import org.apache.logging.log4j.Logger modid = DragiUtils.MODID, version = Tags.VERSION, name = "DragiUtils", - acceptedMinecraftVersions = "[1.7.10]") + acceptedMinecraftVersions = "[1.7.10]", + acceptableRemoteVersions = "*") class DragiUtils { - @Mod.EventHandler // preInit "Run before anything else. Read your config, create blocks, items, - // etc, and register them with the - // GameRegistry." (Remove if not needed) + @Mod.EventHandler fun preInit(event: FMLPreInitializationEvent) { - proxy!!.preInit(event) + proxy.preInit(event) } - @Mod.EventHandler // load "Do your mod setup. Build whatever data structures you care about. - // Register recipes." (Remove if not needed) + @Mod.EventHandler fun init(event: FMLInitializationEvent?) { - proxy!!.init(event) + proxy.init(event) } - @Mod.EventHandler // postInit "Handle interaction with other mods, complete your setup based on - // this." (Remove if not needed) + @Mod.EventHandler fun postInit(event: FMLPostInitializationEvent?) { - proxy!!.postInit(event) + proxy.postInit(event) } - @Mod.EventHandler // register server commands in this event handler (Remove if not needed) + @Mod.EventHandler fun serverStarting(event: FMLServerStartingEvent?) { - proxy!!.serverStarting(event) + proxy.serverStarting(event) } companion object { @@ -44,8 +43,11 @@ class DragiUtils { @JvmField val LOG: Logger = LogManager.getLogger(MODID) @SidedProxy( - clientSide = "com.fardragi.dragiutils.ClientProxy", - serverSide = "com.fardragi.dragiutils.CommonProxy") - var proxy: CommonProxy? = null + clientSide = "com.fardragi.dragiutils.client.ClientProxy", + serverSide = "com.fardragi.dragiutils.server.ServerProxy") + private var _proxy: ServerProxy? = null + + val proxy: ServerProxy + get() = _proxy ?: throw DragiUtilsException("Fail get proxy") } } diff --git a/src/main/kotlin/com/fardragi/dragiutils/client/ClientProxy.kt b/src/main/kotlin/com/fardragi/dragiutils/client/ClientProxy.kt new file mode 100644 index 0000000..eaa086f --- /dev/null +++ b/src/main/kotlin/com/fardragi/dragiutils/client/ClientProxy.kt @@ -0,0 +1,5 @@ +package com.fardragi.dragiutils.client + +import com.fardragi.dragiutils.server.ServerProxy + +class ClientProxy : ServerProxy() diff --git a/src/main/kotlin/com/fardragi/dragiutils/config/Config.kt b/src/main/kotlin/com/fardragi/dragiutils/config/Config.kt new file mode 100644 index 0000000..603d031 --- /dev/null +++ b/src/main/kotlin/com/fardragi/dragiutils/config/Config.kt @@ -0,0 +1,19 @@ +package com.fardragi.dragiutils.config + +import com.fardragi.dragiutils.utils.getWorkingDir +import java.io.File +import net.minecraftforge.common.config.Configuration + +object Config { + var database: DatabaseConfig? = null + + fun synchronizeConfiguration() { + val configuration = Configuration(File(getWorkingDir(), "config.cfg")) + + database = DatabaseConfig(configuration) + + if (configuration.hasChanged()) { + configuration.save() + } + } +} diff --git a/src/main/kotlin/com/fardragi/dragiutils/config/DatabaseConfig.kt b/src/main/kotlin/com/fardragi/dragiutils/config/DatabaseConfig.kt new file mode 100644 index 0000000..efc4b57 --- /dev/null +++ b/src/main/kotlin/com/fardragi/dragiutils/config/DatabaseConfig.kt @@ -0,0 +1,14 @@ +package com.fardragi.dragiutils.config + +import net.minecraftforge.common.config.Configuration + +private const val CATEGORY = "Database" + +class DatabaseConfig(configuration: Configuration) { + val host: String = configuration.getString("host", CATEGORY, "localhost", "Database host") + val port: Int = configuration.getInt("port", CATEGORY, 3306, 0, 65535, "Database port") + val database: String = + configuration.getString("database", CATEGORY, "dragi_utils", "Database name") + val password: String = configuration.getString("password", CATEGORY, "root", "Database password") + val user: String = configuration.getString("user", CATEGORY, "root", "Database user") +} diff --git a/src/main/kotlin/com/fardragi/dragiutils/database/DatabaseModule.kt b/src/main/kotlin/com/fardragi/dragiutils/database/DatabaseModule.kt new file mode 100644 index 0000000..69fc9f8 --- /dev/null +++ b/src/main/kotlin/com/fardragi/dragiutils/database/DatabaseModule.kt @@ -0,0 +1,31 @@ +package com.fardragi.dragiutils.database + +import com.fardragi.dragiutils.config.DatabaseConfig +import com.fardragi.dragiutils.database.models.User +import cpw.mods.fml.common.FMLLog +import org.jetbrains.exposed.sql.Database +import org.jetbrains.exposed.sql.SchemaUtils +import org.jetbrains.exposed.sql.transactions.transaction + +class DatabaseModule(databaseConfig: DatabaseConfig) { + init { + val connectionString = + "jdbc:mariadb://${databaseConfig.host}:${databaseConfig.port}/${databaseConfig.database}" + + FMLLog.info("GAY:$connectionString") + + try { + val db = + Database.connect( + connectionString, + driver = "org.mariadb.jdbc.Driver", + user = databaseConfig.user, + password = databaseConfig.password, + ) + } catch (ex: Exception) { + FMLLog.severe(ex.message) + } + + transaction { SchemaUtils.createMissingTablesAndColumns(User) } + } +} diff --git a/src/main/kotlin/com/fardragi/dragiutils/database/models/User.kt b/src/main/kotlin/com/fardragi/dragiutils/database/models/User.kt new file mode 100644 index 0000000..6766610 --- /dev/null +++ b/src/main/kotlin/com/fardragi/dragiutils/database/models/User.kt @@ -0,0 +1,8 @@ +package com.fardragi.dragiutils.database.models + +import org.jetbrains.exposed.dao.id.IntIdTable + +object User : IntIdTable() { + val name = varchar("name", 255).uniqueIndex() + val passwordHash = varchar("passwordHash", 255) +} diff --git a/src/main/kotlin/com/fardragi/dragiutils/exceptions/DragiUtilsException.kt b/src/main/kotlin/com/fardragi/dragiutils/exceptions/DragiUtilsException.kt new file mode 100644 index 0000000..647daed --- /dev/null +++ b/src/main/kotlin/com/fardragi/dragiutils/exceptions/DragiUtilsException.kt @@ -0,0 +1,3 @@ +package com.fardragi.dragiutils.exceptions + +class DragiUtilsException(msg: String) : RuntimeException(msg) {} diff --git a/src/main/kotlin/com/fardragi/dragiutils/server/ServerProxy.kt b/src/main/kotlin/com/fardragi/dragiutils/server/ServerProxy.kt new file mode 100644 index 0000000..c3ca2ae --- /dev/null +++ b/src/main/kotlin/com/fardragi/dragiutils/server/ServerProxy.kt @@ -0,0 +1,28 @@ +package com.fardragi.dragiutils.server + +import com.fardragi.dragiutils.DragiUtils +import com.fardragi.dragiutils.Tags +import com.fardragi.dragiutils.config.Config +import com.fardragi.dragiutils.config.Config.synchronizeConfiguration +import com.fardragi.dragiutils.database.DatabaseModule +import cpw.mods.fml.common.event.FMLInitializationEvent +import cpw.mods.fml.common.event.FMLPostInitializationEvent +import cpw.mods.fml.common.event.FMLPreInitializationEvent +import cpw.mods.fml.common.event.FMLServerStartingEvent + +open class ServerProxy { + fun preInit(event: FMLPreInitializationEvent) { + synchronizeConfiguration() + + DragiUtils.LOG.info(Config.database?.host) + DragiUtils.LOG.info("I am MyMod at version " + Tags.VERSION) + } + + fun init(event: FMLInitializationEvent?) { + Config.database?.let { DatabaseModule(it) } + } + + fun postInit(event: FMLPostInitializationEvent?) {} + + fun serverStarting(event: FMLServerStartingEvent?) {} +} diff --git a/src/main/kotlin/com/fardragi/dragiutils/utils/Minecraft.kt b/src/main/kotlin/com/fardragi/dragiutils/utils/Minecraft.kt new file mode 100644 index 0000000..cbc8a2c --- /dev/null +++ b/src/main/kotlin/com/fardragi/dragiutils/utils/Minecraft.kt @@ -0,0 +1,13 @@ +package com.fardragi.dragiutils.utils + +import cpw.mods.fml.common.FMLCommonHandler +import java.io.File +import net.minecraft.client.Minecraft + +fun getWorkingDir(): File { + val baseDir = + if (FMLCommonHandler.instance().side.isClient) Minecraft.getMinecraft().mcDataDir + else File(".") + + return File(baseDir, "/DragiUtils") +} diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 6275554..24a9b25 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,12 +3,12 @@ "modList": [{ "modid": "${modId}", "name": "${modName}", - "description": "An example mod for Minecraft 1.7.10 with Forge focused on a stable setup.", + "description": "A server utilities mod.", "version": "${modVersion}", "mcversion": "${minecraftVersion}", - "url": "https://github.com/SinTh0r4s/MyMod", + "url": "https://github.com/FarDragi/DragiUtils", "updateUrl": "", - "authorList": ["SinTho0r4s"], + "authorList": ["Gabriel-Paulucci"], "credits": "", "logoFile": "", "screenshots": [],