blob: 1e9b1b8fc186342c92efdb85f71dba518ddee9ed (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
package moe.nea.firmament.features.inventory
import net.fabricmc.loader.api.FabricLoader
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.time.Duration.Companion.seconds
import net.minecraft.SharedConstants
import net.minecraft.text.ClickEvent
import net.minecraft.text.Text
import moe.nea.firmament.Firmament
import moe.nea.firmament.annotations.Subscribe
import moe.nea.firmament.commands.thenExecute
import moe.nea.firmament.events.CommandEvent
import moe.nea.firmament.events.SkyblockServerUpdateEvent
import moe.nea.firmament.repo.RepoManager
import moe.nea.firmament.util.MC
import moe.nea.firmament.util.SBData
import moe.nea.firmament.util.aqua
import moe.nea.firmament.util.bold
import moe.nea.firmament.util.clickCommand
import moe.nea.firmament.util.grey
import moe.nea.firmament.util.lime
import moe.nea.firmament.util.red
import moe.nea.firmament.util.white
import moe.nea.firmament.util.yellow
object REIDependencyWarner {
val reiModId = "roughlyenoughitems"
val hasREI = FabricLoader.getInstance().isModLoaded(reiModId)
var sentWarning = false
fun modrinthLink(slug: String) =
"https://modrinth.com/mod/$slug/versions?g=${SharedConstants.getGameVersion().name}&l=fabric"
fun downloadButton(modName: String, modId: String, slug: String): Text {
val alreadyDownloaded = FabricLoader.getInstance().isModLoaded(modId)
return Text.literal(" - ")
.white()
.append(Text.literal("[").aqua())
.append(Text.translatable("firmament.download", modName)
.styled { it.withClickEvent(ClickEvent(ClickEvent.Action.OPEN_URL, modrinthLink(slug))) }
.yellow()
.also {
if (alreadyDownloaded)
it.append(Text.translatable("firmament.download.already", modName)
.lime())
})
.append(Text.literal("]").aqua())
}
@Subscribe
fun checkREIDependency(event: SkyblockServerUpdateEvent) {
if (!SBData.isOnSkyblock) return
if (hasREI) return
if (sentWarning) return
sentWarning = true
Firmament.coroutineScope.launch {
delay(2.seconds)
// TODO: should we offer an automatic install that actually downloads the JARs and places them into the mod folder?
MC.sendChat(
Text.translatable("firmament.reiwarning").red().bold().append("\n")
.append(downloadButton("RoughlyEnoughItems", reiModId, "rei")).append("\n")
.append(downloadButton("Architectury API", "architectury", "architectury-api")).append("\n")
.append(downloadButton("Cloth Config API", "cloth-config", "cloth-config")).append("\n")
.append(Text.translatable("firmament.reiwarning.disable")
.clickCommand("/firm disablereiwarning")
.grey())
)
}
}
@Subscribe
fun onSubcommand(event: CommandEvent.SubCommand) {
if (hasREI) return
event.subcommand("disablereiwarning") {
thenExecute {
RepoManager.Config.warnForMissingItemListMod = false
RepoManager.Config.save()
MC.sendChat(Text.translatable("firmament.reiwarning.disabled").yellow())
}
}
}
}
|