Skip to content

Commit adc6c00

Browse files
committed
working bot & config
1 parent 63bde52 commit adc6c00

File tree

8 files changed

+89
-8
lines changed

8 files changed

+89
-8
lines changed

build.gradle.kts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ version = "$modVersion+${libs.versions.minecraft.get()}"
1818
group = mavenGroup
1919

2020
repositories {
21+
maven("https://maven.nucleoid.xyz")
2122
maven("https://snapshots-repo.kordex.dev")
2223
maven("https://repo.kord.dev/snapshots")
2324
}
@@ -38,13 +39,11 @@ dependencies {
3839
includeImplementation(libs.konf.core)
3940
includeImplementation(libs.konf.toml)
4041

41-
implementation(libs.discord.reserializer)
42-
include(libs.discord.reserializer)
43-
implementation(libs.simple.ast)
44-
include(libs.simple.ast)
42+
implementAndInclude(libs.discord.reserializer)
43+
implementAndInclude(libs.simple.ast)
4544

46-
modImplementation(libs.kyori)
47-
include(libs.kyori)
45+
implementAndInclude(libs.kyori)
46+
implementAndInclude(libs.placeholder.api)
4847

4948
handleIncludes(includeImplementation)
5049
}
@@ -123,3 +122,8 @@ fun DependencyHandlerScope.handleIncludes(configuration: Configuration) {
123122
.first { it.moduleGroup == "net.fabricmc" && it.moduleName == "fabric-language-kotlin" },
124123
)
125124
}
125+
126+
fun DependencyHandlerScope.implementAndInclude(dep: Any) {
127+
modImplementation(dep)
128+
include(dep)
129+
}

libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ konf="1.1.2"
1313
discord-reserializer="4.3.0"
1414
simple-ast="2.2.8"
1515

16+
placeholder-api="2.4.1+1.21"
1617
kyori="5.14.1"
1718

1819
[libraries]
@@ -32,3 +33,4 @@ discord-reserializer = { module = "dev.vankka:mcdiscordreserializer", version.re
3233
simple-ast = { module = "dev.vankka:SimpleAST", version.ref = "simple-ast"}
3334

3435
kyori = { module = "net.kyori:adventure-platform-fabric", version.ref = "kyori"}
36+
placeholder-api = { module = "eu.pb4:placeholder-api", version.ref = "placeholder-api" }
Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,32 @@
11
package ua.mei.minekord
22

33
import net.fabricmc.api.ModInitializer
4+
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents
5+
import net.fabricmc.loader.api.FabricLoader
6+
import org.apache.logging.log4j.LogManager
7+
import org.apache.logging.log4j.Logger
8+
import ua.mei.minekord.bot.MinekordBot
9+
import ua.mei.minekord.config.CONFIG_PATH
10+
import ua.mei.minekord.config.config
11+
import java.nio.file.Files
12+
13+
object Minekord : ModInitializer {
14+
const val MOD_ID: String = "minekord"
15+
16+
val logger: Logger = LogManager.getLogger("Minekord")
417

5-
class Minekord : ModInitializer {
618
override fun onInitialize() {
19+
logger.info("Initializing Minekord")
20+
21+
if (!Files.exists(FabricLoader.getInstance().configDir.resolve(CONFIG_PATH))) {
22+
Files.copy(
23+
FabricLoader.getInstance().getModContainer(MOD_ID).get().findPath(CONFIG_PATH).get(),
24+
FabricLoader.getInstance().configDir.resolve(CONFIG_PATH)
25+
)
26+
}
27+
28+
config.validateRequired()
729

30+
ServerLifecycleEvents.SERVER_STARTING.register { MinekordBot.launchBot() }
831
}
932
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package ua.mei.minekord.bot
2+
3+
import dev.kordex.core.ExtensibleBot
4+
import kotlinx.coroutines.CoroutineScope
5+
import kotlinx.coroutines.Dispatchers
6+
import kotlinx.coroutines.launch
7+
import ua.mei.minekord.config.BotSpec
8+
import ua.mei.minekord.config.config
9+
import kotlin.coroutines.CoroutineContext
10+
11+
object MinekordBot : CoroutineScope {
12+
lateinit var bot: ExtensibleBot
13+
14+
fun launchBot() {
15+
launch {
16+
bot = ExtensibleBot(config[BotSpec.token]) {
17+
members {
18+
fill(config[BotSpec.guild])
19+
}
20+
}
21+
22+
bot.start()
23+
}
24+
}
25+
26+
override val coroutineContext: CoroutineContext = Dispatchers.Default
27+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package ua.mei.minekord.config
2+
3+
import com.uchuhimo.konf.ConfigSpec
4+
5+
object BotSpec : ConfigSpec() {
6+
val token by required<String>()
7+
val guild by required<ULong>()
8+
val chat by required<ULong>()
9+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package ua.mei.minekord.config
2+
3+
import com.uchuhimo.konf.Config
4+
import com.uchuhimo.konf.source.toml
5+
import net.fabricmc.loader.api.FabricLoader
6+
7+
const val CONFIG_PATH: String = "minekord.toml"
8+
9+
val config: Config = Config { addSpec(BotSpec) }
10+
.from.toml.resource(CONFIG_PATH)
11+
.from.toml.watchFile(FabricLoader.getInstance().configDir.resolve(CONFIG_PATH).toFile())

src/main/resources/fabric.mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"environment": "server",
1414
"entrypoints": {
1515
"main": [
16-
"ua.mei.minekord.Minekord"
16+
"ua.mei.minekord.Minekord::INSTANCE"
1717
]
1818
},
1919
"mixins": [

src/main/resources/minekord.toml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
[Bot]
2+
3+
token = ""
4+
guild = 0
5+
chat = 0

0 commit comments

Comments
 (0)