From 0d8664d2cfa0a8df7f0db182887bbc401a030c35 Mon Sep 17 00:00:00 2001 From: Erdragh Date: Sun, 28 Apr 2024 11:13:25 +0200 Subject: [PATCH] Port to 1.20.4 --- .github/workflows/build.yml | 21 +------- .github/workflows/dependencies.yml | 26 ++++++++++ build.gradle.kts | 2 +- common/build.gradle.kts | 2 +- .../commands/discord/LinkingCommands.kt | 6 +-- .../astralbot/config/AstralBotConfig.kt | 32 ++++++------- .../astralbot/config/AstralBotTextConfig.kt | 48 +++++++++---------- .../astralbot/handlers/MinecraftHandler.kt | 9 ++-- .../astralbot/util/MessageFormatting.kt | 3 +- common/src/main/kotlin/module-info.java | 3 +- fabric/gradle.properties | 2 +- .../dev/erdragh/astralbot/fabric/BotMod.kt | 8 ++-- forge/build.gradle.kts | 6 +++ forge/gradle.properties | 2 +- .../dev/erdragh/astralbot/forge/BotMod.kt | 10 ++-- forge/src/main/resources/META-INF/mods.toml | 7 +++ gradle.properties | 6 +-- 17 files changed, 108 insertions(+), 85 deletions(-) create mode 100644 .github/workflows/dependencies.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f31efcc..ea5ab14 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,25 +63,6 @@ jobs: name: build-changelog path: prepared_changelog.md - dependencies: - runs-on: ubuntu-latest - if: ${{github.ref == 'refs/heads/version/1.20.1' && github.event_name != 'pull_request'}} - steps: - - name: checkout repository - uses: actions/checkout@v4 - - - name: setup jdk 17 - uses: actions/setup-java@v4 - with: - java-version: 17 - distribution: 'temurin' - - - name: Build with Gradle and generate dependency Graph - uses: gradle/gradle-build-action@v2 - with: - arguments: dependencies - dependency-graph: 'generate-and-submit' - publish: if: ${{ github.event.inputs.publish }} needs: @@ -143,9 +124,11 @@ jobs: curseforge-dependencies: | sqlite-jdbc(optional) kotlin-for-forge(required) + forge-config-api-port-fabric(required) modrinth-dependencies: | sqlite-jdbc(optional) kotlin-for-forge(required) + forge-config-api-port(required) - name: Upload Fabric Releases (Curse/Modrinth) id: fabric_release diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml new file mode 100644 index 0000000..07e8fc2 --- /dev/null +++ b/.github/workflows/dependencies.yml @@ -0,0 +1,26 @@ +name: build +on: + push: + branches: [ "main", "develop" ] + +permissions: + contents: write + +jobs: + dependencies: + runs-on: ubuntu-latest + steps: + - name: checkout repository + uses: actions/checkout@v4 + + - name: setup jdk 17 + uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: 'temurin' + + - name: Build with Gradle and generate dependency Graph + uses: gradle/gradle-build-action@v2 + with: + arguments: dependencies + dependency-graph: 'generate-and-submit' \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index c5a74c8..02b453d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ import java.nio.charset.StandardCharsets plugins { // This is an Architectury repository, as such the relevant plugins are needed id("architectury-plugin") version "3.4-SNAPSHOT" - id("dev.architectury.loom") version "1.5-SNAPSHOT" apply false + id("dev.architectury.loom") version "1.6-SNAPSHOT" apply false // The shadow plugin is used in both Architectury and when including JDA and Exposed id("com.github.johnrengelman.shadow") version "8.1.1" apply false // Since this mod/bot is written in Kotlin and expected to run on Minecraft and as such diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 74e9fcb..e1cdd35 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -10,5 +10,5 @@ dependencies { // Do NOT use other classes from fabric loader modImplementation("net.fabricmc:fabric-loader:${fabricLoaderVersion}") - api("fuzs.forgeconfigapiport:forgeconfigapiport-common:$forgeConfigAPIVersion") + api("fuzs.forgeconfigapiport:forgeconfigapiport-common-neoforgeapi:$forgeConfigAPIVersion") } \ No newline at end of file diff --git a/common/src/main/kotlin/dev/erdragh/astralbot/commands/discord/LinkingCommands.kt b/common/src/main/kotlin/dev/erdragh/astralbot/commands/discord/LinkingCommands.kt index 53af4e0..2759b95 100644 --- a/common/src/main/kotlin/dev/erdragh/astralbot/commands/discord/LinkingCommands.kt +++ b/common/src/main/kotlin/dev/erdragh/astralbot/commands/discord/LinkingCommands.kt @@ -68,11 +68,11 @@ object LinkCommand : HandledSlashCommand { } else { WhitelistHandler.whitelist(event.user, minecraftID) waitForSetup() - guild?.getRoleById(AstralBotConfig.DISCORD_ROLE.get())?.let { + guild?.getRoleById(AstralBotConfig.DISCORD_ROLE.get())?.let { role -> try { - guild?.addRoleToMember(event.user, it)?.queue() + guild?.addRoleToMember(event.user, role)?.queue() } catch (e: Exception) { - LOGGER.error("Failed to add role ${it.name} to member ${event.user.asMention}", e) + LOGGER.error("Failed to add role ${role.name} to member ${event.user.asMention}", e) } } event.hook.setEphemeral(true) diff --git a/common/src/main/kotlin/dev/erdragh/astralbot/config/AstralBotConfig.kt b/common/src/main/kotlin/dev/erdragh/astralbot/config/AstralBotConfig.kt index d6921aa..f79246d 100644 --- a/common/src/main/kotlin/dev/erdragh/astralbot/config/AstralBotConfig.kt +++ b/common/src/main/kotlin/dev/erdragh/astralbot/config/AstralBotConfig.kt @@ -2,7 +2,7 @@ package dev.erdragh.astralbot.config import dev.erdragh.astralbot.LOGGER import dev.erdragh.astralbot.commands.discord.allCommands -import net.minecraftforge.common.ForgeConfigSpec +import net.neoforged.neoforge.common.ModConfigSpec import java.net.URL /** @@ -12,89 +12,89 @@ import java.net.URL * @author Erdragh */ object AstralBotConfig { - val SPEC: ForgeConfigSpec + val SPEC: ModConfigSpec /** * If the `DISCORD_TOKEN` environment variable isn't set, the bot will * look for a token in this config option. */ - val DISCORD_TOKEN: ForgeConfigSpec.ConfigValue + val DISCORD_TOKEN: ModConfigSpec.ConfigValue /** * Whether the default whitelisting process is respected or ignored. * Setting this to `true` will *force* every user who wants to join * the server to link their account, even Operators. */ - val REQUIRE_LINK_FOR_WHITELIST: ForgeConfigSpec.BooleanValue + val REQUIRE_LINK_FOR_WHITELIST: ModConfigSpec.BooleanValue /** * The link to the Discord servers where users can run the /link command. * Gets used when formatting the message shown to users who try to log in * without being whitelisted. */ - val DISCORD_LINK: ForgeConfigSpec.ConfigValue + val DISCORD_LINK: ModConfigSpec.ConfigValue /** * The ID of the discord channel where the messages are synchronized */ - val DISCORD_CHANNEL: ForgeConfigSpec.ConfigValue + val DISCORD_CHANNEL: ModConfigSpec.ConfigValue /** * The ID of the Discord Guild (server) where this bot will be active. * This is used to get the chat sync channel etc. */ - val DISCORD_GUILD: ForgeConfigSpec.ConfigValue + val DISCORD_GUILD: ModConfigSpec.ConfigValue /** * The ID of the Discord role given to linked members */ - val DISCORD_ROLE: ForgeConfigSpec.ConfigValue + val DISCORD_ROLE: ModConfigSpec.ConfigValue /** * If this is set to true the message sent into the Minecraft chat * will be clickable and take you to the relevant message on Discord */ - val CLICKABLE_MESSAGES: ForgeConfigSpec.BooleanValue + val CLICKABLE_MESSAGES: ModConfigSpec.BooleanValue /** * If this is on the embeds and attached files on a message will be * handled and possibly displayed in messages sent to the players */ - val HANDLE_EMBEDS: ForgeConfigSpec.BooleanValue + val HANDLE_EMBEDS: ModConfigSpec.BooleanValue /** * If this is on embeds that have a URL associated with them will * be clickable. */ - val CLICKABLE_EMBEDS: ForgeConfigSpec.BooleanValue + val CLICKABLE_EMBEDS: ModConfigSpec.BooleanValue /** * List of Strings containing the URLs that are blocked by default. * If you read this and want to add more to the default list, feel * free to open an Issue or Pull Request. */ - private val URL_BLOCKLIST: ForgeConfigSpec.ConfigValue> + private val URL_BLOCKLIST: ModConfigSpec.ConfigValue> /** * List of the names of the commands that are enabled by default. * On first startup of a server, it will be all available commands. */ - val ENABLED_COMMANDS: ForgeConfigSpec.ConfigValue> + val ENABLED_COMMANDS: ModConfigSpec.ConfigValue> /** * Enables parsing Discord messages into Minecraft's Chat Components. * This includes making links clickable, etc. */ - val ENABLE_MARKDOWN_PARSING: ForgeConfigSpec.BooleanValue + val ENABLE_MARKDOWN_PARSING: ModConfigSpec.BooleanValue /** * Enables converting detected URLs into clickable links, requires * [ENABLE_MARKDOWN_PARSING] to be enabled to do anything */ - val ENABLE_AUTO_LINKS: ForgeConfigSpec.BooleanValue + val ENABLE_AUTO_LINKS: ModConfigSpec.BooleanValue init { - val builder = ForgeConfigSpec.Builder() + val builder = ModConfigSpec.Builder() builder.comment("AstralBot Config") diff --git a/common/src/main/kotlin/dev/erdragh/astralbot/config/AstralBotTextConfig.kt b/common/src/main/kotlin/dev/erdragh/astralbot/config/AstralBotTextConfig.kt index b41b8b5..b052323 100644 --- a/common/src/main/kotlin/dev/erdragh/astralbot/config/AstralBotTextConfig.kt +++ b/common/src/main/kotlin/dev/erdragh/astralbot/config/AstralBotTextConfig.kt @@ -1,42 +1,42 @@ package dev.erdragh.astralbot.config -import net.minecraftforge.common.ForgeConfigSpec +import net.neoforged.neoforge.common.ModConfigSpec object AstralBotTextConfig { - val SPEC: ForgeConfigSpec + val SPEC: ModConfigSpec - val GENERIC_ERROR: ForgeConfigSpec.ConfigValue - val GENERIC_SUCCESS: ForgeConfigSpec.ConfigValue - val GENERIC_BLOCKED: ForgeConfigSpec.ConfigValue + val GENERIC_ERROR: ModConfigSpec.ConfigValue + val GENERIC_SUCCESS: ModConfigSpec.ConfigValue + val GENERIC_BLOCKED: ModConfigSpec.ConfigValue - val FAQ_ERROR: ForgeConfigSpec.ConfigValue - val FAQ_NO_REGISTERED: ForgeConfigSpec.ConfigValue + val FAQ_ERROR: ModConfigSpec.ConfigValue + val FAQ_NO_REGISTERED: ModConfigSpec.ConfigValue - val TICK_REPORT: ForgeConfigSpec.ConfigValue + val TICK_REPORT: ModConfigSpec.ConfigValue - val PLAYER_MESSAGE: ForgeConfigSpec.ConfigValue + val PLAYER_MESSAGE: ModConfigSpec.ConfigValue - val DISCORD_MESSAGE: ForgeConfigSpec.ConfigValue - val DISCORD_REPLY: ForgeConfigSpec.ConfigValue - val DISCORD_EMBEDS: ForgeConfigSpec.ConfigValue + val DISCORD_MESSAGE: ModConfigSpec.ConfigValue + val DISCORD_REPLY: ModConfigSpec.ConfigValue + val DISCORD_EMBEDS: ModConfigSpec.ConfigValue - val RELOAD_ERROR: ForgeConfigSpec.ConfigValue - val RELOAD_SUCCESS: ForgeConfigSpec.ConfigValue + val RELOAD_ERROR: ModConfigSpec.ConfigValue + val RELOAD_SUCCESS: ModConfigSpec.ConfigValue - val LINK_NO_MINECRAFT: ForgeConfigSpec.ConfigValue - val LINK_MINECRAFT_TAKEN: ForgeConfigSpec.ConfigValue - val LINK_DISCORD_TAKEN: ForgeConfigSpec.ConfigValue - val LINK_SUCCESSFUL: ForgeConfigSpec.ConfigValue - val LINK_ERROR: ForgeConfigSpec.ConfigValue + val LINK_NO_MINECRAFT: ModConfigSpec.ConfigValue + val LINK_MINECRAFT_TAKEN: ModConfigSpec.ConfigValue + val LINK_DISCORD_TAKEN: ModConfigSpec.ConfigValue + val LINK_SUCCESSFUL: ModConfigSpec.ConfigValue + val LINK_ERROR: ModConfigSpec.ConfigValue - val LINK_COMMAND_MESSAGE: ForgeConfigSpec.ConfigValue - val LINK_COMMAND_ALREADY_LINKED: ForgeConfigSpec.ConfigValue + val LINK_COMMAND_MESSAGE: ModConfigSpec.ConfigValue + val LINK_COMMAND_ALREADY_LINKED: ModConfigSpec.ConfigValue - val UNLINK_UNLINKED: ForgeConfigSpec.ConfigValue - val UNLINK_NOPERMS: ForgeConfigSpec.ConfigValue + val UNLINK_UNLINKED: ModConfigSpec.ConfigValue + val UNLINK_NOPERMS: ModConfigSpec.ConfigValue init { - val builder = ForgeConfigSpec.Builder() + val builder = ModConfigSpec.Builder() val whitespaceRegex = Regex("\n[ \t]+") GENERIC_ERROR = builder.comment("Generic error message sent to Discord") diff --git a/common/src/main/kotlin/dev/erdragh/astralbot/handlers/MinecraftHandler.kt b/common/src/main/kotlin/dev/erdragh/astralbot/handlers/MinecraftHandler.kt index a317547..32b65f9 100644 --- a/common/src/main/kotlin/dev/erdragh/astralbot/handlers/MinecraftHandler.kt +++ b/common/src/main/kotlin/dev/erdragh/astralbot/handlers/MinecraftHandler.kt @@ -16,6 +16,7 @@ import net.minecraft.network.chat.Component import net.minecraft.network.chat.HoverEvent import net.minecraft.network.chat.MutableComponent import net.minecraft.server.MinecraftServer +import net.minecraft.server.level.ClientInformation import net.minecraft.server.level.ServerPlayer import net.minecraft.world.item.ItemStack import java.text.DecimalFormat @@ -31,7 +32,7 @@ import kotlin.math.min */ class MinecraftHandler(private val server: MinecraftServer) : ListenerAdapter() { private val playerNames = HashSet(server.maxPlayers); - private val notchPlayer = byName("Notch")?.let { ServerPlayer(this.server, this.server.allLevels.elementAt(0), it) } + private val notchPlayer = byName("Notch")?.let { ServerPlayer(this.server, this.server.allLevels.elementAt(0), it, ClientInformation.createDefault()) } companion object { @@ -83,12 +84,12 @@ class MinecraftHandler(private val server: MinecraftServer) : ListenerAdapter() */ fun tickReport(): String { // Idea from the TPSCommand in Forge - return AstralBotTextConfig.TICK_REPORT.get().replace("{{mspt}}", numberFormat.format(server.averageTickTime)) + return AstralBotTextConfig.TICK_REPORT.get().replace("{{mspt}}", numberFormat.format(server.averageTickTimeNanos * 1000)) .replace( "{{tps}}", numberFormat.format( min( 20.0, - 1000.0 / server.averageTickTime + 1000.0 / (server.averageTickTimeNanos * 1000) ) ) ) @@ -153,7 +154,7 @@ class MinecraftHandler(private val server: MinecraftServer) : ListenerAdapter() if (player != null) AstralBotTextConfig.PLAYER_MESSAGE.get() .replace("{{message}}", formatComponentToMarkdown(message)) - .replace("{{fullName}}", escape(player.displayName.string)) + .replace("{{fullName}}", escape(player.displayName?.string ?: player.name.string)) .replace("{{name}}", escape(player.name.string)) else escape(message.string) ) diff --git a/common/src/main/kotlin/dev/erdragh/astralbot/util/MessageFormatting.kt b/common/src/main/kotlin/dev/erdragh/astralbot/util/MessageFormatting.kt index e528f92..7f8d755 100644 --- a/common/src/main/kotlin/dev/erdragh/astralbot/util/MessageFormatting.kt +++ b/common/src/main/kotlin/dev/erdragh/astralbot/util/MessageFormatting.kt @@ -15,6 +15,7 @@ import net.minecraft.world.item.TooltipFlag import org.commonmark.parser.Parser import java.awt.Color import java.util.regex.Pattern +import kotlin.jvm.optionals.getOrNull // Pattern for recognizing a URL, based off RFC 3986 // Source: https://stackoverflow.com/questions/5713558/detect-and-extract-url-from-a-string @@ -99,7 +100,7 @@ fun formatHoverItems(stack: ItemStack, knownItems: MutableList, playe fun formatHoverEntity(entity: HoverEvent.EntityTooltipInfo): MessageEmbed? { if (entity.type == EntityType.PLAYER) return null return EmbedBuilder() - .setTitle(entity.name?.string) + .setTitle(entity.name.map(Component::getString).getOrNull()) .setDescription(entity.type.description.string) .let { builder: EmbedBuilder -> val mobCategory = entity.type.category diff --git a/common/src/main/kotlin/module-info.java b/common/src/main/kotlin/module-info.java index cc50849..42b2eb5 100644 --- a/common/src/main/kotlin/module-info.java +++ b/common/src/main/kotlin/module-info.java @@ -24,6 +24,7 @@ requires brigadier; // For accessing the config - requires forgeconfigapiport.common; + requires forgeconfigapiport.common.neoforgeapi; + requires java.desktop; } \ No newline at end of file diff --git a/fabric/gradle.properties b/fabric/gradle.properties index 3ce374e..9934aec 100644 --- a/fabric/gradle.properties +++ b/fabric/gradle.properties @@ -1,2 +1,2 @@ -fabricApiVersion=0.91.0 +fabricApiVersion=0.97.0 fabricKotlinVersion=1.10.19+kotlin.1.9.23 \ No newline at end of file diff --git a/fabric/src/main/kotlin/dev/erdragh/astralbot/fabric/BotMod.kt b/fabric/src/main/kotlin/dev/erdragh/astralbot/fabric/BotMod.kt index 59d97b9..295309e 100644 --- a/fabric/src/main/kotlin/dev/erdragh/astralbot/fabric/BotMod.kt +++ b/fabric/src/main/kotlin/dev/erdragh/astralbot/fabric/BotMod.kt @@ -5,19 +5,19 @@ import dev.erdragh.astralbot.commands.minecraft.registerMinecraftCommands import dev.erdragh.astralbot.config.AstralBotConfig import dev.erdragh.astralbot.config.AstralBotTextConfig import dev.erdragh.astralbot.handlers.DiscordMessageComponent -import fuzs.forgeconfigapiport.api.config.v2.ForgeConfigRegistry +import fuzs.forgeconfigapiport.fabric.api.neoforge.v4.NeoForgeConfigRegistry import net.fabricmc.api.ModInitializer import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents import net.fabricmc.fabric.api.message.v1.ServerMessageEvents import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents import net.minecraft.server.level.ServerPlayer -import net.minecraftforge.fml.config.ModConfig +import net.neoforged.fml.config.ModConfig object BotMod : ModInitializer { override fun onInitialize() { - ForgeConfigRegistry.INSTANCE.register(MODID, ModConfig.Type.SERVER, AstralBotConfig.SPEC) - ForgeConfigRegistry.INSTANCE.register(MODID, ModConfig.Type.SERVER, AstralBotTextConfig.SPEC, "astralbot-text.toml") + NeoForgeConfigRegistry.INSTANCE.register(MODID, ModConfig.Type.SERVER, AstralBotConfig.SPEC) + NeoForgeConfigRegistry.INSTANCE.register(MODID, ModConfig.Type.SERVER, AstralBotTextConfig.SPEC, "astralbot-text.toml") ServerLifecycleEvents.SERVER_STARTED.register { LOGGER.info("Starting AstralBot on Fabric") diff --git a/forge/build.gradle.kts b/forge/build.gradle.kts index 2677c6f..8d6603a 100644 --- a/forge/build.gradle.kts +++ b/forge/build.gradle.kts @@ -37,6 +37,7 @@ dependencies { val minecraftVersion: String by project val forgeVersion: String by project val kotlinForgeVersion: String by project + val forgeConfigAPIVersion: String by project forge(group = "net.minecraftforge", name = "forge", version = "$minecraftVersion-$forgeVersion") // Adds KFF as dependency and Kotlin libs @@ -51,4 +52,9 @@ dependencies { exclude(group = "org.jetbrains.kotlin") exclude(group = "org.slf4j") } + + // On 1.20.2 upwards, the forge config api port either reimplements neo's + // or lexforge's config API. I chose to use Neo's by default, resulting in + // an additional dependency on the lexforge side. + modApi("fuzs.forgeconfigapiport:forgeconfigapiport-forge:$forgeConfigAPIVersion") } \ No newline at end of file diff --git a/forge/gradle.properties b/forge/gradle.properties index 4b5bae3..b7f4c6d 100644 --- a/forge/gradle.properties +++ b/forge/gradle.properties @@ -1,3 +1,3 @@ loom.platform=forge -forgeVersion=47.2.21 +forgeVersion=49.0.49 kotlinForgeVersion=4.10.0 \ No newline at end of file diff --git a/forge/src/main/kotlin/dev/erdragh/astralbot/forge/BotMod.kt b/forge/src/main/kotlin/dev/erdragh/astralbot/forge/BotMod.kt index 955f367..68dc355 100644 --- a/forge/src/main/kotlin/dev/erdragh/astralbot/forge/BotMod.kt +++ b/forge/src/main/kotlin/dev/erdragh/astralbot/forge/BotMod.kt @@ -1,14 +1,12 @@ package dev.erdragh.astralbot.forge -import dev.erdragh.astralbot.LOGGER +import dev.erdragh.astralbot.* import dev.erdragh.astralbot.commands.minecraft.registerMinecraftCommands import dev.erdragh.astralbot.config.AstralBotConfig import dev.erdragh.astralbot.config.AstralBotTextConfig import dev.erdragh.astralbot.forge.event.SystemMessageEvent import dev.erdragh.astralbot.handlers.DiscordMessageComponent -import dev.erdragh.astralbot.minecraftHandler -import dev.erdragh.astralbot.startAstralbot -import dev.erdragh.astralbot.stopAstralbot +import fuzs.forgeconfigapiport.forge.api.neoforge.v4.NeoForgeConfigRegistry import net.minecraft.server.level.ServerPlayer import net.minecraftforge.event.RegisterCommandsEvent import net.minecraftforge.event.ServerChatEvent @@ -23,8 +21,8 @@ import thedarkcolour.kotlinforforge.forge.FORGE_BUS @Mod("astralbot") object BotMod { init { - ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, AstralBotConfig.SPEC) - ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, AstralBotTextConfig.SPEC, "astralbot-text.toml") + NeoForgeConfigRegistry.INSTANCE.register(MODID, ModConfig.Type.SERVER, AstralBotConfig.SPEC) + NeoForgeConfigRegistry.INSTANCE.register(MODID, ModConfig.Type.SERVER, AstralBotTextConfig.SPEC, "astralbot-text.toml") FORGE_BUS.addListener(::onServerStart) FORGE_BUS.addListener(::onServerStop) FORGE_BUS.addListener(::onChatMessage) diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index c5ce54b..e75bed8 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -24,4 +24,11 @@ modId = "minecraft" mandatory = true versionRange = "[1.20,)" ordering = "NONE" +side = "BOTH" + +[[dependencies.astralbot]] +modId = "forgeconfigapiport" +mandatory = true +versionRange = "[20,)" +ordering = "NONE" side = "BOTH" \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index b4ad148..7d4726d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,10 +9,10 @@ fabricLoaderVersion=0.15.10 version=1.3.0 group=dev.erdragh.astralbot -minecraftVersion=1.20.1 -parchmentVersion=2023.09.03 +minecraftVersion=1.20.4 +parchmentVersion=2024.04.14 -forgeConfigAPIVersion=8.0.0 +forgeConfigAPIVersion=20.4.3 # Discord Interactions jdaVersion=5.0.0-beta.23