Add warning for missing REI

This commit is contained in:
Linnea Gräf
2024-10-30 16:35:19 +01:00
parent c38dcee2c5
commit c9c25b6156
8 changed files with 374 additions and 233 deletions

View File

@@ -128,7 +128,7 @@ runtime_required = [
] ]
runtime_optional = [ runtime_optional = [
"devauth", "devauth",
"freecammod", # "freecammod",
"sodium", "sodium",
# "qolify", # "qolify",
"ncr", "ncr",

View File

@@ -0,0 +1,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())
}
}
}
}

View File

@@ -40,7 +40,7 @@ object RepoManager {
RepoManager.launchAsyncUpdate(true) RepoManager.launchAsyncUpdate(true)
} }
val alwaysSuperCraft by toggle("enable-super-craft") { true } val alwaysSuperCraft by toggle("enable-super-craft") { true }
var warnForMissingItemListMod by toggle("warn-for-missing-item-list-mod") { true }
} }
val currentDownloadedSha by RepoDownloadManager::latestSavedVersionHash val currentDownloadedSha by RepoDownloadManager::latestSavedVersionHash

View File

@@ -12,6 +12,7 @@ fun DrawContext.isUntranslatedGuiDrawContext(): Boolean {
fun DrawContext.drawLine(fromX: Int, fromY: Int, toX: Int, toY: Int, color: Color) { fun DrawContext.drawLine(fromX: Int, fromY: Int, toX: Int, toY: Int, color: Color) {
// TODO: push scissors // TODO: push scissors
// TODO: use matrix translations and a different render layer
if (toY < fromY) { if (toY < fromY) {
drawLine(toX, toY, fromX, fromY, color) drawLine(toX, toY, fromX, fromY, color)
return return

View File

@@ -1,5 +1,6 @@
package moe.nea.firmament.util package moe.nea.firmament.util
import net.minecraft.text.ClickEvent
import net.minecraft.text.MutableText import net.minecraft.text.MutableText
import net.minecraft.text.PlainTextContent import net.minecraft.text.PlainTextContent
import net.minecraft.text.Text import net.minecraft.text.Text
@@ -119,7 +120,30 @@ fun Text.iterator(): Sequence<Text> {
fun Text.allSiblings(): List<Text> = listOf(this) + siblings.flatMap { it.allSiblings() } fun Text.allSiblings(): List<Text> = listOf(this) + siblings.flatMap { it.allSiblings() }
fun MutableText.withColor(formatting: Formatting) = this.styled { it.withColor(formatting).withItalic(false) } fun MutableText.withColor(formatting: Formatting): MutableText = this.styled {
it.withColor(formatting)
.withItalic(false)
.withBold(false)
}
fun MutableText.blue() = withColor(Formatting.BLUE)
fun MutableText.aqua() = withColor(Formatting.AQUA)
fun MutableText.lime() = withColor(Formatting.GREEN)
fun MutableText.darkGreen() = withColor(Formatting.DARK_GREEN)
fun MutableText.yellow() = withColor(Formatting.YELLOW)
fun MutableText.grey() = withColor(Formatting.GRAY)
fun MutableText.red() = withColor(Formatting.RED)
fun MutableText.white() = withColor(Formatting.WHITE)
fun MutableText.bold(): MutableText = styled { it.withBold(true) }
fun MutableText.clickCommand(command: String): MutableText {
require(command.startsWith("/"))
return this.styled {
it.withClickEvent(ClickEvent(ClickEvent.Action.RUN_COMMAND,
"/firm disablereiwarning"))
}
}
fun Text.transformEachRecursively(function: (Text) -> Text): Text { fun Text.transformEachRecursively(function: (Text) -> Text): Text {
val c = this.content val c = this.content

View File

@@ -1,240 +1,245 @@
{ {
"firmament.dev.resourcerebuild.start": "Invoking gradle resource rebuild (./gradlew :processResources)", "firmament.dev.resourcerebuild.start": "Invoking gradle resource rebuild (./gradlew :processResources)",
"firmament.dev.resourcerebuild.done": "Gradle resource rebuild done in %s", "firmament.dev.resourcerebuild.done": "Gradle resource rebuild done in %s",
"firmament.command.toggle.no-config-found": "Could not find config %s", "firmament.command.toggle.no-config-found": "Could not find config %s",
"firmament.command.toggle.no-property-found": "Could not find property %s", "firmament.command.toggle.no-property-found": "Could not find property %s",
"firmament.command.toggle.not-a-toggle": "Property %s is not a toggle", "firmament.command.toggle.not-a-toggle": "Property %s is not a toggle",
"firmament.command.toggle.toggled": "Toggled %s / %s %s", "firmament.command.toggle.toggled": "Toggled %s / %s %s",
"firmament.command.waypoint.import": "Imported %s waypoints from clipboard.", "firmament.command.waypoint.import": "Imported %s waypoints from clipboard.",
"firmament.command.waypoint.import.error": "Could not import waypoints from clipboard. Make sure they are on ColeWeight format:\n[{\"x\": 69, \"y\":420, \"z\": 36}]", "firmament.command.waypoint.import.error": "Could not import waypoints from clipboard. Make sure they are on ColeWeight format:\n[{\"x\": 69, \"y\":420, \"z\": 36}]",
"firmament.command.waypoint.clear": "Cleared waypoints.", "firmament.command.waypoint.clear": "Cleared waypoints.",
"firmament.command.waypoint.added": "Added waypoint %s %s %s.", "firmament.command.waypoint.added": "Added waypoint %s %s %s.",
"firmament.command.waypoint.remove": "Removed waypoint %s. Other waypoints may have different indexes now.", "firmament.command.waypoint.remove": "Removed waypoint %s. Other waypoints may have different indexes now.",
"firmament.command.waypoint.remove.error": "Could not find waypoint with that index to delete.", "firmament.command.waypoint.remove.error": "Could not find waypoint with that index to delete.",
"firmament.command.waypoint.skip.error": "Could not skip a waypoint. Are you in ordered waypoint mode with waypoints loaded?", "firmament.command.waypoint.skip.error": "Could not skip a waypoint. Are you in ordered waypoint mode with waypoints loaded?",
"firmament.command.waypoint.skip": "Skipped 1 waypoint", "firmament.command.waypoint.skip": "Skipped 1 waypoint",
"firmament.poweruser.entity.fail": "No entity found under cursor", "firmament.poweruser.entity.fail": "No entity found under cursor",
"firmament.poweruser.entity.type": "Entity Type: %s", "firmament.poweruser.entity.type": "Entity Type: %s",
"firmament.poweruser.entity.name": "Entity Name: %s", "firmament.poweruser.entity.name": "Entity Name: %s",
"firmament.poweruser.entity.position": "Position: %s", "firmament.poweruser.entity.position": "Position: %s",
"firmament.poweruser.entity.armor": "Entity Armor:", "firmament.poweruser.entity.armor": "Entity Armor:",
"firmament.poweruser.entity.armor.item": " - %s", "firmament.poweruser.entity.armor.item": " - %s",
"firmament.poweruser.entity.passengers": "%s Passengers", "firmament.poweruser.entity.passengers": "%s Passengers",
"firmament.mixins.start": "Applied firmament mixins:", "firmament.mixins.start": "Applied firmament mixins:",
"firmament.event.start": "Event Bus Readout:", "firmament.event.start": "Event Bus Readout:",
"firmament.event.bustype": " - %s:", "firmament.event.bustype": " - %s:",
"firmament.event.handler": " * %s", "firmament.event.handler": " * %s",
"firmament.config.all-configs": "- All Configs -", "firmament.config.all-configs": "- All Configs -",
"firmament.config.anniversary": "Anniversary Features", "firmament.config.anniversary": "Anniversary Features",
"firmament.config.anniversary.shiny-pigs": "Shiny Pigs Tracker", "firmament.config.anniversary.shiny-pigs": "Shiny Pigs Tracker",
"firmament.config.anniversary.pig-hud": "Pig Tracker Hud", "firmament.config.anniversary.pig-hud": "Pig Tracker Hud",
"firmament.pristine-profit.collection": "Collection: %s/h", "firmament.pristine-profit.collection": "Collection: %s/h",
"firmament.pristine-profit.money": "Money: %s/h", "firmament.pristine-profit.money": "Money: %s/h",
"firmament.toggle.true": "On", "firmament.toggle.true": "On",
"firmament.toggle.false": "Off", "firmament.toggle.false": "Off",
"firmament.config.developer": "Developer Settings", "firmament.config.developer": "Developer Settings",
"firmament.config.developer.auto-rebuild": "Automatically rebuild resources", "firmament.config.developer.auto-rebuild": "Automatically rebuild resources",
"firmament.price": "Checking price for %s", "firmament.price": "Checking price for %s",
"firmament.price.bazaar": "Bazaar stats:", "firmament.price.bazaar": "Bazaar stats:",
"firmament.price.bazaar.productid": "Stock id: %s", "firmament.price.bazaar.productid": "Stock id: %s",
"firmament.price.bazaar.buy.price": "Buy Price: %s", "firmament.price.bazaar.buy.price": "Buy Price: %s",
"firmament.price.bazaar.buy.order": "Buy orders: %d", "firmament.price.bazaar.buy.order": "Buy orders: %d",
"firmament.tooltip.bazaar.sell-order": "Bazaar Sell Order: %s", "firmament.tooltip.bazaar.sell-order": "Bazaar Sell Order: %s",
"firmament.tooltip.bazaar.buy-order": "Bazaar Buy Order: %s", "firmament.tooltip.bazaar.buy-order": "Bazaar Buy Order: %s",
"firmament.tooltip.ah.lowestbin": "Lowest BIN: %d", "firmament.tooltip.ah.lowestbin": "Lowest BIN: %d",
"firmament.pv.pets": "Pets", "firmament.pv.pets": "Pets",
"firmament.config.diana": "Diana", "firmament.reiwarning.disable": "Click here to disable this warning",
"firmament.config.diana.ancestral-teleport": "Warp near guess", "firmament.reiwarning.disabled": "Disabled the RoughlyEnoughItems warning. Keep in mind that you will not have an item list without REI.",
"firmament.config.diana.ancestral-spade": "Ancestral Spade Solver", "firmament.download": "Click here to download %s",
"firmament.config.diana.nearby-waypoints": "Nearby Waypoints Highlighter", "firmament.download.already": " (Already downloaded)",
"firmament.config.pristine-profit": "Pristine Profit Tracker", "firmament.reiwarning": "Firmament needs RoughlyEnoughItems to display its item list!",
"firmament.config.pristine-profit.timeout": "Timeout (0 = disabled)", "firmament.config.diana": "Diana",
"firmament.config.pristine-profit.position": "Position", "firmament.config.diana.ancestral-teleport": "Warp near guess",
"firmament.debug.skyblockid": "SkyBlock ID: %s", "firmament.config.diana.ancestral-spade": "Ancestral Spade Solver",
"firmament.debug.skyblockid.copy": "Click to copy SkyBlock ID", "firmament.config.diana.nearby-waypoints": "Nearby Waypoints Highlighter",
"firmament.price.bazaar.sell.price": "Sell Price: %s", "firmament.config.pristine-profit": "Pristine Profit Tracker",
"firmament.price.bazaar.sell.order": "Sell orders: %d", "firmament.config.pristine-profit.timeout": "Timeout (0 = disabled)",
"firmament.price.lowestbin": "Lowest BIN: %s", "firmament.config.pristine-profit.position": "Position",
"firmament.repo.reload.network": "Trying to redownload the repository", "firmament.debug.skyblockid": "SkyBlock ID: %s",
"firmament.repo.reload.disk": "Reloading repository from disk. This may lag a bit.", "firmament.debug.skyblockid.copy": "Click to copy SkyBlock ID",
"firmament.repo.cache": "Recaching items", "firmament.price.bazaar.sell.price": "Sell Price: %s",
"firmament.repo.brokenitem": "Failed to render item: %s", "firmament.price.bazaar.sell.order": "Sell orders: %d",
"firmament.config.auto-completions": "Hypixel Command Improvements", "firmament.price.lowestbin": "Lowest BIN: %s",
"firmament.config.auto-completions.warp-complete": "Auto Complete /warp", "firmament.repo.reload.network": "Trying to redownload the repository",
"firmament.config.auto-completions.warp-is": "Redirect /warp is to /warp island", "firmament.repo.reload.disk": "Reloading repository from disk. This may lag a bit.",
"firmanent.config.edit": "Edit", "firmament.repo.cache": "Recaching items",
"firmament.config.carnival": "Carnival Features", "firmament.repo.brokenitem": "Failed to render item: %s",
"firmament.config.carnival.bombs-solver": "Bombs Solver", "firmament.config.auto-completions": "Hypixel Command Improvements",
"firmament.config.carnival.tutorials": "Tutorial Reminder", "firmament.config.auto-completions.warp-complete": "Auto Complete /warp",
"firmament.carnival.tutorial.minesweeper": "§eClick here to check out Firmaments Tutorial for this minigame!", "firmament.config.auto-completions.warp-is": "Redirect /warp is to /warp island",
"firmament.config.repo": "Firmament Repo Settings", "firmanent.config.edit": "Edit",
"firmament.config.repo.autoUpdate": "Auto Update", "firmament.config.carnival": "Carnival Features",
"firmament.config.repo.username": "Repo Username", "firmament.config.carnival.bombs-solver": "Bombs Solver",
"firmament.config.repo.username.hint": "NotEnoughUpdates", "firmament.config.carnival.tutorials": "Tutorial Reminder",
"firmament.config.repo.reponame": "Repo Name", "firmament.carnival.tutorial.minesweeper": "§eClick here to check out Firmaments Tutorial for this minigame!",
"firmament.config.repo.reponame.hint": "NotEnoughUpdates-REPO", "firmament.config.repo": "Firmament Repo Settings",
"firmament.config.configconfig.enable-yacl": "Use YACL Config", "firmament.config.repo.autoUpdate": "Auto Update",
"firmament.config.repo.branch": "Repo Branch", "firmament.config.repo.username": "Repo Username",
"firmament.config.repo.username.hint": "NotEnoughUpdates",
"firmament.config.repo.reponame": "Repo Name",
"firmament.config.repo.reponame.hint": "NotEnoughUpdates-REPO",
"firmament.config.configconfig.enable-yacl": "Use YACL Config",
"firmament.config.repo.branch": "Repo Branch",
"firmament.config.configconfig": "Firmaments Config", "firmament.config.configconfig": "Firmaments Config",
"firmament.config.commissions": "Commissions", "firmament.config.commissions": "Commissions",
"firmament.config.commissions.highlight-completed": "Highlight Completed", "firmament.config.commissions.highlight-completed": "Highlight Completed",
"firmament.config.repo.branch.hint": "dangerous", "firmament.config.repo.branch.hint": "dangerous",
"firmament.config.repo.reset": "Reset", "firmament.config.repo.reset": "Reset",
"firmament.config.repo.disable-item-groups": "Disable Item Groups", "firmament.config.repo.disable-item-groups": "Disable Item Groups",
"firmament.config.repo.enable-super-craft": "Always use Super Craft", "firmament.config.repo.enable-super-craft": "Always use Super Craft",
"firmament.config.repo.reload": "Reload Item List", "firmament.config.repo.reload": "Reload Item List",
"firmament.config.repo.redownload": "Redownload Item List", "firmament.config.repo.redownload": "Redownload Item List",
"firmament.config.pets": "Pets", "firmament.config.pets": "Pets",
"firmament.config.pets.highlight-pet": "Highlight active pet", "firmament.config.pets.highlight-pet": "Highlight active pet",
"firmament.config.category.misc": "Miscellaneous", "firmament.config.category.misc": "Miscellaneous",
"firmament.config.category.mining": "Mining", "firmament.config.category.mining": "Mining",
"firmament.config.category.events": "Events", "firmament.config.category.events": "Events",
"firmament.config.category.chat": "Chat", "firmament.config.category.chat": "Chat",
"firmament.config.category.inventory": "Inventory", "firmament.config.category.inventory": "Inventory",
"firmament.config.category.integrations": "Integrations & Textures", "firmament.config.category.integrations": "Integrations & Textures",
"firmament.config.category.meta": "Meta & Firmament", "firmament.config.category.meta": "Meta & Firmament",
"firmament.config.category.dev": "Developer & Debug", "firmament.config.category.dev": "Developer & Debug",
"firmament.ursa.debugrequest.start": "Ursa request launched", "firmament.ursa.debugrequest.start": "Ursa request launched",
"firmament.hotmpreset.openinghotm": "Opening /hotm menu for export.", "firmament.hotmpreset.openinghotm": "Opening /hotm menu for export.",
"firmament.hotmpreset.scrollprompt": "We need to scroll! Please click anywhere to continue.", "firmament.hotmpreset.scrollprompt": "We need to scroll! Please click anywhere to continue.",
"firmament.hotmpreset.scrolled": "Just scrolled. Waiting on server to update items.", "firmament.hotmpreset.scrolled": "Just scrolled. Waiting on server to update items.",
"firmament.hotmpreset.copied": "Collected all HOTM perks to clipboard. Use /firm importhotm to import.", "firmament.hotmpreset.copied": "Collected all HOTM perks to clipboard. Use /firm importhotm to import.",
"firmament.hotmpreset.okayimport": "Imported a HOTM perk preset.", "firmament.hotmpreset.okayimport": "Imported a HOTM perk preset.",
"firmament.hotmpreset.failedimport": "Could not find a HOTM perk preset in your clipboard. You can export your current HOTM perks with /firm exporthotm", "firmament.hotmpreset.failedimport": "Could not find a HOTM perk preset in your clipboard. You can export your current HOTM perks with /firm exporthotm",
"firmament.ursa.debugrequest.result": "Ursa request succeeded: %s", "firmament.ursa.debugrequest.result": "Ursa request succeeded: %s",
"firmament.sbinfo.nolocraw": "No locraw data available", "firmament.sbinfo.nolocraw": "No locraw data available",
"firmament.sbinfo.profile": "Current profile cutename: %s", "firmament.sbinfo.profile": "Current profile cutename: %s",
"firmament.sbinfo.server": "Locraw Server: %s", "firmament.sbinfo.server": "Locraw Server: %s",
"firmament.sbinfo.gametype": "Locraw Gametype: %s", "firmament.sbinfo.gametype": "Locraw Gametype: %s",
"firmament.sbinfo.mode": "Locraw Mode: %s", "firmament.sbinfo.mode": "Locraw Mode: %s",
"firmament.sbinfo.map": "Locraw Map: %s", "firmament.sbinfo.map": "Locraw Map: %s",
"firmament.config.price-data": "Price data", "firmament.config.price-data": "Price data",
"firmament.config.price-data.enable-always": "Enable Item Price", "firmament.config.price-data.enable-always": "Enable Item Price",
"firmament.config.price-data.enable-keybind": "Enable only with Keybinding", "firmament.config.price-data.enable-keybind": "Enable only with Keybinding",
"firmament.config.fairy-souls": "Fairy Souls", "firmament.config.fairy-souls": "Fairy Souls",
"firmament.config.fairy-souls.show": "Show Fairy Soul Waypoints", "firmament.config.fairy-souls.show": "Show Fairy Soul Waypoints",
"firmament.config.fairy-souls.reset": "Reset Collected Fairy Souls", "firmament.config.fairy-souls.reset": "Reset Collected Fairy Souls",
"firmament.config.fishing-warning": "Fishing Warning", "firmament.config.fishing-warning": "Fishing Warning",
"firmament.config.fishing-warning.display-warning": "Display a warning when you are about to hook a fish", "firmament.config.fishing-warning.display-warning": "Display a warning when you are about to hook a fish",
"firmament.config.fishing-warning.highlight-wake-chain": "Highlight fishing particles", "firmament.config.fishing-warning.highlight-wake-chain": "Highlight fishing particles",
"firmament.protectitem": "Firmament protected your item: ", "firmament.protectitem": "Firmament protected your item: ",
"firmament.inventory-buttons.save-preset": "Save Preset", "firmament.inventory-buttons.save-preset": "Save Preset",
"firmament.inventory-buttons.load-preset": "Load Preset", "firmament.inventory-buttons.load-preset": "Load Preset",
"firmament.inventory-buttons.import-failed": "One of your buttons could only be imported partially", "firmament.inventory-buttons.import-failed": "One of your buttons could only be imported partially",
"firmament.config.inventory-buttons": "Inventory buttons", "firmament.config.inventory-buttons": "Inventory buttons",
"firmament.config.inventory-buttons.open-editor": "Open Editor", "firmament.config.inventory-buttons.open-editor": "Open Editor",
"firmament.warp-util.mark-excluded": "Firmament: Tried to warp to %s, but it was not unlocked. I will avoid warping there again.", "firmament.warp-util.mark-excluded": "Firmament: Tried to warp to %s, but it was not unlocked. I will avoid warping there again.",
"firmament.waypoint.temporary": "Temporary Waypoint: %s", "firmament.waypoint.temporary": "Temporary Waypoint: %s",
"firmament.config.waypoints": "Waypoints", "firmament.config.waypoints": "Waypoints",
"firmament.config.waypoints.temp-waypoint-duration": "Temporary Waypoint Duration", "firmament.config.waypoints.temp-waypoint-duration": "Temporary Waypoint Duration",
"firmament.config.waypoints.show-index": "Show ordered waypoint indexes", "firmament.config.waypoints.show-index": "Show ordered waypoint indexes",
"firmament.config.waypoints.skip-to-nearest": "Allow skipping waypoints", "firmament.config.waypoints.skip-to-nearest": "Allow skipping waypoints",
"firmament.recipe.forge.time": "Forging Time: %s", "firmament.recipe.forge.time": "Forging Time: %s",
"firmament.recipe.mobs.drops": "§e§lDrop Chance: %s", "firmament.recipe.mobs.drops": "§e§lDrop Chance: %s",
"firmament.recipe.mobs.name": "§8[§7Lv %d§8] §c%s", "firmament.recipe.mobs.name": "§8[§7Lv %d§8] §c%s",
"firmament.recipe.mobs.name.nolevel": "§c%s", "firmament.recipe.mobs.name.nolevel": "§c%s",
"firmament.recipe.mobs.coins": "§eCoins: %s", "firmament.recipe.mobs.coins": "§eCoins: %s",
"firmament.recipe.mobs.combat": "§bCombat Experience: %s", "firmament.recipe.mobs.combat": "§bCombat Experience: %s",
"firmament.recipe.mobs.exp": "§6Experience: %s", "firmament.recipe.mobs.exp": "§6Experience: %s",
"firmament.pv.skills": "Skills", "firmament.pv.skills": "Skills",
"firmament.pv.skills.farming": "Farming", "firmament.pv.skills.farming": "Farming",
"firmament.pv.skills.foraging": "Foraging", "firmament.pv.skills.foraging": "Foraging",
"firmament.pv.skills.mining": "Mining", "firmament.pv.skills.mining": "Mining",
"firmament.pv.skills.alchemy": "Alchemy", "firmament.pv.skills.alchemy": "Alchemy",
"firmament.pv.skills.taming": "Taming", "firmament.pv.skills.taming": "Taming",
"firmament.pv.skills.fishing": "Fishing", "firmament.pv.skills.fishing": "Fishing",
"firmament.pv.skills.runecrafting": "Runecrafting", "firmament.pv.skills.runecrafting": "Runecrafting",
"firmament.pv.skills.carpentry": "Carpentry", "firmament.pv.skills.carpentry": "Carpentry",
"firmament.pv.skills.combat": "Combat", "firmament.pv.skills.combat": "Combat",
"firmament.pv.skills.social": "Social", "firmament.pv.skills.social": "Social",
"firmament.pv.skills.rift": "Rift", "firmament.pv.skills.rift": "Rift",
"firmament.pv.skills.enchanting": "Enchanting", "firmament.pv.skills.enchanting": "Enchanting",
"firmament.pv.skills.total": "Total Exp: %s", "firmament.pv.skills.total": "Total Exp: %s",
"firmament.pv.lookingup": "Looking up %s", "firmament.pv.lookingup": "Looking up %s",
"firmament.pv.noprofile": "%s has no SkyBlock profiles", "firmament.pv.noprofile": "%s has no SkyBlock profiles",
"firmament.pv.noplayer": "%s is not a Minecraft player", "firmament.pv.noplayer": "%s is not a Minecraft player",
"firmament.config.save-cursor-position.enable": "Enable", "firmament.config.save-cursor-position.enable": "Enable",
"firmament.config.save-cursor-position.tolerance": "Tolerance", "firmament.config.save-cursor-position.tolerance": "Tolerance",
"firmament.config.save-cursor-position": "Save Cursor Position", "firmament.config.save-cursor-position": "Save Cursor Position",
"firmament.config.storage-overlay": "Storage Overlay", "firmament.config.storage-overlay": "Storage Overlay",
"firmament.config.storage-overlay.rows": "Columns", "firmament.config.storage-overlay.rows": "Columns",
"firmament.config.storage-overlay.always-replace": "Always Open Overlay", "firmament.config.storage-overlay.always-replace": "Always Open Overlay",
"firmament.config.storage-overlay.padding": "Padding", "firmament.config.storage-overlay.padding": "Padding",
"firmament.config.storage-overlay.scroll-speed": "Scroll Speed", "firmament.config.storage-overlay.scroll-speed": "Scroll Speed",
"firmament.config.storage-overlay.inverse-scroll": "Invert Scroll", "firmament.config.storage-overlay.inverse-scroll": "Invert Scroll",
"firmament.config.storage-overlay.margin": "Margin", "firmament.config.storage-overlay.margin": "Margin",
"firmament.config.chat-links": "Chat Links", "firmament.config.chat-links": "Chat Links",
"firmament.config.chat-links.links-enabled": "Enable Clickable Links", "firmament.config.chat-links.links-enabled": "Enable Clickable Links",
"firmament.config.chat-links.image-enabled": "Enable Image Preview", "firmament.config.chat-links.image-enabled": "Enable Image Preview",
"firmament.config.chat-links.allow-all-hosts": "Allow all Image Hosts", "firmament.config.chat-links.allow-all-hosts": "Allow all Image Hosts",
"firmament.config.chat-links.allowed-hosts": "Allowed Image Hosts", "firmament.config.chat-links.allowed-hosts": "Allowed Image Hosts",
"firmament.config.chat-links.position": "Chat Image Preview", "firmament.config.chat-links.position": "Chat Image Preview",
"firmament.config.item-rarity-cosmetics": "Item Rarity Cosmetics", "firmament.config.item-rarity-cosmetics": "Item Rarity Cosmetics",
"firmament.config.item-rarity-cosmetics.background": "Slot Background Rarity", "firmament.config.item-rarity-cosmetics.background": "Slot Background Rarity",
"firmament.config.item-rarity-cosmetics.background-hotbar": "Hotbar Background Rarity", "firmament.config.item-rarity-cosmetics.background-hotbar": "Hotbar Background Rarity",
"firmament.hud.edit": "Edit %s", "firmament.hud.edit": "Edit %s",
"firmament.key.category": "Firmament", "firmament.key.category": "Firmament",
"firmament.keybinding.external": "%s", "firmament.keybinding.external": "%s",
"firmament.config.slot-locking": "Slot Locking", "firmament.config.slot-locking": "Slot Locking",
"firmament.config.slot-locking.lock": "Lock Slot", "firmament.config.slot-locking.lock": "Lock Slot",
"firmament.config.slot-locking.lock-uuid": "Lock UUID (Lock Item)", "firmament.config.slot-locking.lock-uuid": "Lock UUID (Lock Item)",
"firmament.config.slot-locking.bind": "Bind Slot", "firmament.config.slot-locking.bind": "Bind Slot",
"firmament.config.slot-locking.require-quick-move": "Require Shift-Click for Bound Slots", "firmament.config.slot-locking.require-quick-move": "Require Shift-Click for Bound Slots",
"firmament.config.fixes.auto-sprint": "Auto Sprint", "firmament.config.fixes.auto-sprint": "Auto Sprint",
"firmament.config.fixes.auto-sprint-keybinding": "Auto Sprint KeyBinding", "firmament.config.fixes.auto-sprint-keybinding": "Auto Sprint KeyBinding",
"firmament.config.fixes.auto-sprint-hud": "Sprint State Hud", "firmament.config.fixes.auto-sprint-hud": "Sprint State Hud",
"firmament.config.fixes.peek-chat": "Peek Chat", "firmament.config.fixes.peek-chat": "Peek Chat",
"firmament.config.fixes.clientside-lefthand": "Fix Left Handed", "firmament.config.fixes.clientside-lefthand": "Fix Left Handed",
"firmament.fixes.auto-sprint.on": "Sprint toggled", "firmament.fixes.auto-sprint.on": "Sprint toggled",
"firmament.fixes.auto-sprint.sprinting": "Sprinting", "firmament.fixes.auto-sprint.sprinting": "Sprinting",
"firmament.fixes.auto-sprint.not-sprinting": "Not Sprinting", "firmament.fixes.auto-sprint.not-sprinting": "Not Sprinting",
"firmament.recipe.novanilla": "Hypixel cannot super craft vanilla recipes", "firmament.recipe.novanilla": "Hypixel cannot super craft vanilla recipes",
"firmament.config.custom-skyblock-textures": "Custom SkyBlock Item Textures", "firmament.config.custom-skyblock-textures": "Custom SkyBlock Item Textures",
"firmament.config.custom-skyblock-textures.cache-duration": "Model Cache Duration", "firmament.config.custom-skyblock-textures.cache-duration": "Model Cache Duration",
"firmament.config.custom-skyblock-textures.model-overrides": "Enable model overrides/predicates", "firmament.config.custom-skyblock-textures.model-overrides": "Enable model overrides/predicates",
"firmament.config.custom-skyblock-textures.legacy-cit": "Enable legacy CIT Resewn compat", "firmament.config.custom-skyblock-textures.legacy-cit": "Enable legacy CIT Resewn compat",
"firmament.config.custom-skyblock-textures.recolor-text": "Allow packs to recolor text", "firmament.config.custom-skyblock-textures.recolor-text": "Allow packs to recolor text",
"firmament.config.custom-skyblock-textures.armor-overrides": "Enable Armor re-texturing", "firmament.config.custom-skyblock-textures.armor-overrides": "Enable Armor re-texturing",
"firmament.config.custom-skyblock-textures.block-overrides": "Enable Block re-modelling", "firmament.config.custom-skyblock-textures.block-overrides": "Enable Block re-modelling",
"firmament.config.custom-skyblock-textures.enabled": "Enable Custom Item Textures", "firmament.config.custom-skyblock-textures.enabled": "Enable Custom Item Textures",
"firmament.config.custom-skyblock-textures.skulls-enabled": "Enable Custom Placed Skull Textures", "firmament.config.custom-skyblock-textures.skulls-enabled": "Enable Custom Placed Skull Textures",
"firmament.config.custom-skyblock-textures.cache-forever": "Disable cache clearing", "firmament.config.custom-skyblock-textures.cache-forever": "Disable cache clearing",
"firmament.config.fixes": "Fixes", "firmament.config.fixes": "Fixes",
"firmament.config.fixes.player-skins": "Fix unsigned Player Skins", "firmament.config.fixes.player-skins": "Fix unsigned Player Skins",
"firmament.config.power-user.show-item-id": "Show SkyBlock Ids", "firmament.config.power-user.show-item-id": "Show SkyBlock Ids",
"firmament.config.power-user.copy-item-id": "Copy SkyBlock Id", "firmament.config.power-user.copy-item-id": "Copy SkyBlock Id",
"firmament.modapi.event": "Received mod API event: %s", "firmament.modapi.event": "Received mod API event: %s",
"firmament.config.power-user.copy-texture-pack-id": "Copy Texture Pack Id", "firmament.config.power-user.copy-texture-pack-id": "Copy Texture Pack Id",
"firmament.config.power-user.copy-skull-texture": "Copy Placed Skull Id", "firmament.config.power-user.copy-skull-texture": "Copy Placed Skull Id",
"firmament.config.power-user.entity-data": "Show Entity Data", "firmament.config.power-user.entity-data": "Show Entity Data",
"firmament.config.power-user.copy-nbt-data": "Copy ExtraAttributes data", "firmament.config.power-user.copy-nbt-data": "Copy ExtraAttributes data",
"firmament.config.power-user.copy-lore": "Copy Name + Lore", "firmament.config.power-user.copy-lore": "Copy Name + Lore",
"firmament.config.power-user.copy-item-stack": "Copy ItemStack", "firmament.config.power-user.copy-item-stack": "Copy ItemStack",
"firmament.config.power-user": "Power Users", "firmament.config.power-user": "Power Users",
"firmament.tooltip.skyblockid": "SkyBlock Id: %s", "firmament.tooltip.skyblockid": "SkyBlock Id: %s",
"firmament.tooltip.copied.skyblockid.fail": "Failed to copy SkyBlock Id", "firmament.tooltip.copied.skyblockid.fail": "Failed to copy SkyBlock Id",
"firmament.tooltip.copied.skyblockid": "Copied SkyBlock Id: %s", "firmament.tooltip.copied.skyblockid": "Copied SkyBlock Id: %s",
"firmament.tooltip.copied.modelid.fail": "Failed to copy Texture Id", "firmament.tooltip.copied.modelid.fail": "Failed to copy Texture Id",
"firmament.tooltip.copied.modelid": "Copied Texture Id: %s", "firmament.tooltip.copied.modelid": "Copied Texture Id: %s",
"firmament.tooltip.copied.skull": "Copied Skull Id: %s", "firmament.tooltip.copied.skull": "Copied Skull Id: %s",
"firmament.tooltip.copied.skull.fail": "Failed to copy skull id.", "firmament.tooltip.copied.skull.fail": "Failed to copy skull id.",
"firmament.tooltip.copied.nbt": "Copied NBT data", "firmament.tooltip.copied.nbt": "Copied NBT data",
"firmament.tooltip.copied.lore": "Copied Name and Lore", "firmament.tooltip.copied.lore": "Copied Name and Lore",
"firmament.tooltip.copied.stack": "Copied ItemStack", "firmament.tooltip.copied.stack": "Copied ItemStack",
"firmament.config.compatibility": "Intermod Features", "firmament.config.compatibility": "Intermod Features",
"firmament.config.compatibility.explosion-enabled": "Redirect Enhanced Explosions", "firmament.config.compatibility.explosion-enabled": "Redirect Enhanced Explosions",
"firmament.config.compatibility.explosion-power": "Enhanced Explosion Power", "firmament.config.compatibility.explosion-power": "Enhanced Explosion Power",
"firmament.quick-commands.join.unknown": "Could not find instance for %s", "firmament.quick-commands.join.unknown": "Could not find instance for %s",
"firmament.quick-commands.join.success": "Joining: %s", "firmament.quick-commands.join.success": "Joining: %s",
"firmament.quick-commands.join.explain": "Join a dungeon or kuudra floor by using commands like /join f1, /join m7, /join fe or /join khot", "firmament.quick-commands.join.explain": "Join a dungeon or kuudra floor by using commands like /join f1, /join m7, /join fe or /join khot",
"firmament.quick-commands.join.unknown-kuudra": "Unknown kuudra floor %s", "firmament.quick-commands.join.unknown-kuudra": "Unknown kuudra floor %s",
"firmament.quick-commands.join.unknown-catacombs": "Unknown catacombs floor %s", "firmament.quick-commands.join.unknown-catacombs": "Unknown catacombs floor %s",
"firmament.config.pickaxe-info": "Pickaxes", "firmament.config.pickaxe-info": "Pickaxes",
"firmament.config.pickaxe-info.ability-cooldown": "Pickaxe Ability Cooldown", "firmament.config.pickaxe-info.ability-cooldown": "Pickaxe Ability Cooldown",
"firmament.config.pickaxe-info.ability-scale": "Ability Cooldown Scale", "firmament.config.pickaxe-info.ability-scale": "Ability Cooldown Scale",
"firmament.config.pickaxe-info.fuel-bar": "Drill Fuel Durability Bar", "firmament.config.pickaxe-info.fuel-bar": "Drill Fuel Durability Bar",
"firmament.warp-util.no-warp-found": "Could not find an unlocked warp in %s", "firmament.warp-util.no-warp-found": "Could not find an unlocked warp in %s",
"firmament.warp-util.already-close": "Already closer to destination than /warp %s", "firmament.warp-util.already-close": "Already closer to destination than /warp %s",
"firmament.warp-util.attempting-to-warp": "Trying to warp to /warp %s", "firmament.warp-util.attempting-to-warp": "Trying to warp to /warp %s",
"firmament.warp-util.clear-excluded": "Marked all /warp commands as potentially available." "firmament.warp-util.clear-excluded": "Marked all /warp commands as potentially available."
} }

View File

@@ -46,10 +46,7 @@
"depends": { "depends": {
"fabric": "*", "fabric": "*",
"fabric-language-kotlin": ">=${fabric_kotlin_version}", "fabric-language-kotlin": ">=${fabric_kotlin_version}",
"minecraft": ">=${minecraft_version}", "minecraft": ">=${minecraft_version}"
"roughlyenoughitems": ">=${rei_version}",
"cloth-config": "*",
"architectury": "*"
}, },
"custom": { "custom": {
"configured": { "configured": {

View File

@@ -0,0 +1,31 @@
{
components: {
"minecraft:custom_data": {
},
"minecraft:custom_name": '{"extra":[{"color":"dark_blue","text":"◆ "},{"bold":true,"color":"dark_blue","text":"Tidal Rune"}],"italic":false,"text":""}',
"minecraft:lore": [
'{"extra":[{"color":"dark_gray","text":"Rune Sack"}],"italic":false,"text":""}',
'{"italic":false,"text":""}',
'{"extra":[{"color":"yellow","text":"I"},{"color":"gray","text":": "},{"color":"yellow","text":"1"},{"color":"gray","text":"/64"}],"italic":false,"text":""}',
'{"extra":[{"color":"yellow","text":"II"},{"color":"gray","text":": "},{"color":"dark_gray","text":"0"},{"color":"gray","text":"/64"}],"italic":false,"text":""}',
'{"extra":[{"color":"yellow","text":"III"},{"color":"gray","text":": "},{"color":"dark_gray","text":"0"},{"color":"gray","text":"/64"}],"italic":false,"text":""}',
'{"italic":false,"text":""}',
'{"extra":[{"color":"gray","text":"Tier: "},{"color":"gold","text":"Legendary"}],"italic":false,"text":""}',
'{"italic":false,"text":""}',
'{"extra":[{"color":"yellow","text":"Click to pickup!"}],"italic":false,"text":""}'
],
"minecraft:profile": {
id: "30ea28d50755386a90924ae91af1b7e5",
name: "30ea28d50755386a",
properties: [
{
name: "textures",
signature: "",
value: "ewogICJ0aW1lc3RhbXAiIDogMTcxOTUwMzQ3NzI1MSwKICAicHJvZmlsZUlkIiA6ICIxOWY1YzkwMWEzMjQ0YzVmYTM4NThjZGVhNDk5ZWMwYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJzb2RpdW16aXAiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjk2NzEwNDdjNmFkZThhOWM0ZDZhNTgxYmMyNmQyODRhNTRhZTMyZTg1YzM0Y2U2OWQ4MWY5Mjc5OWJmM2ZiYiIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9"
}
]
}
},
count: 1,
id: "minecraft:player_head"
}