aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-03-08 16:00:39 +0100
committerLinnea Gräf <nea@nea.moe>2025-03-08 16:01:00 +0100
commit222da0dd8eb57d531b38a3a7eee110ded173d09f (patch)
tree714c15f8cfd868505c59cf3b7459aebee95f5bf2 /src/main
parent7070b0794c8dbedd03763c718729daada60d7952 (diff)
downloadFirmament-222da0dd8eb57d531b38a3a7eee110ded173d09f.tar.gz
Firmament-222da0dd8eb57d531b38a3a7eee110ded173d09f.tar.bz2
Firmament-222da0dd8eb57d531b38a3a7eee110ded173d09f.zip
feat: Add debug UI for block types
Diffstat (limited to 'src/main')
-rw-r--r--src/main/kotlin/commands/rome.kt6
-rw-r--r--src/main/kotlin/features/mining/MiningBlockInfoUi.kt54
-rw-r--r--src/main/resources/assets/firmament/gui/mining_block_info/index.xml38
3 files changed, 98 insertions, 0 deletions
diff --git a/src/main/kotlin/commands/rome.kt b/src/main/kotlin/commands/rome.kt
index 6fc01e5..8ae34f6 100644
--- a/src/main/kotlin/commands/rome.kt
+++ b/src/main/kotlin/commands/rome.kt
@@ -15,6 +15,7 @@ import moe.nea.firmament.features.debug.PowerUserTools
import moe.nea.firmament.features.inventory.buttons.InventoryButtons
import moe.nea.firmament.features.inventory.storageoverlay.StorageOverlayScreen
import moe.nea.firmament.features.inventory.storageoverlay.StorageOverviewScreen
+import moe.nea.firmament.features.mining.MiningBlockInfoUi
import moe.nea.firmament.gui.config.AllConfigsGui
import moe.nea.firmament.gui.config.BooleanHandler
import moe.nea.firmament.gui.config.ManagedConfig
@@ -217,6 +218,11 @@ fun firmamentCommand() = literal("firmament") {
}
}
}
+ thenLiteral("blocks") {
+ thenExecute {
+ ScreenUtil.setScreenLater(MiningBlockInfoUi.makeScreen())
+ }
+ }
thenLiteral("dumpchat") {
thenExecute {
MC.inGameHud.chatHud.messages.forEach {
diff --git a/src/main/kotlin/features/mining/MiningBlockInfoUi.kt b/src/main/kotlin/features/mining/MiningBlockInfoUi.kt
new file mode 100644
index 0000000..e8ea4f4
--- /dev/null
+++ b/src/main/kotlin/features/mining/MiningBlockInfoUi.kt
@@ -0,0 +1,54 @@
+package moe.nea.firmament.features.mining
+
+import io.github.notenoughupdates.moulconfig.observer.ObservableList
+import io.github.notenoughupdates.moulconfig.observer.Property
+import io.github.notenoughupdates.moulconfig.platform.ModernItemStack
+import io.github.notenoughupdates.moulconfig.xml.Bind
+import net.minecraft.client.gui.screen.Screen
+import net.minecraft.item.ItemStack
+import moe.nea.firmament.repo.MiningRepoData
+import moe.nea.firmament.repo.RepoManager
+import moe.nea.firmament.util.MoulConfigUtils
+import moe.nea.firmament.util.SkyBlockIsland
+
+object MiningBlockInfoUi {
+ class MiningInfo(miningData: MiningRepoData) {
+ @field:Bind("search")
+ @JvmField
+ var search = ""
+
+ @get:Bind("ores")
+ val blocks = miningData.customMiningBlocks.mapTo(ObservableList(mutableListOf())) { OreInfo(it, this) }
+ }
+
+ class OreInfo(block: MiningRepoData.CustomMiningBlock, info: MiningInfo) {
+ @get:Bind("oreName")
+ val oreName = block.name ?: "No Name"
+
+ @get:Bind("blocks")
+ val res = ObservableList(block.blocks189.map { BlockInfo(it, info) })
+ }
+
+ class BlockInfo(val block: MiningRepoData.Block189, val info: MiningInfo) {
+ @get:Bind("item")
+ val item = ModernItemStack.of(block.block?.let { ItemStack(it) } ?: ItemStack.EMPTY)
+
+ @get:Bind("isSelected")
+ val isSelected get() = info.search.let { block.isActiveIn(SkyBlockIsland.forMode(it)) }
+
+ @get:Bind("itemName")
+ val itemName get() = item.getDisplayName()
+
+ @get:Bind("restrictions")
+ val res = ObservableList(
+ if (block.onlyIn != null)
+ block.onlyIn.map { " §r- §a${it.userFriendlyName}" }
+ else
+ listOf("Everywhere")
+ )
+ }
+
+ fun makeScreen(): Screen {
+ return MoulConfigUtils.loadScreen("mining_block_info/index", MiningInfo(RepoManager.miningData), null)
+ }
+}
diff --git a/src/main/resources/assets/firmament/gui/mining_block_info/index.xml b/src/main/resources/assets/firmament/gui/mining_block_info/index.xml
new file mode 100644
index 0000000..6404995
--- /dev/null
+++ b/src/main/resources/assets/firmament/gui/mining_block_info/index.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<Root xmlns="http://notenoughupdates.org/moulconfig"
+ xmlns:firm="http://firmament.nea.moe/moulconfig"
+>
+ <Gui>
+ <Column>
+ <Row>
+ <Text text="Search: "/>
+ <TextField value="@search"/>
+ </Row>
+ <ScrollPanel width="200" height="150">
+ <Array data="@ores">
+ <Column>
+ <Text text="@oreName"/>
+ <Array data="@blocks">
+ <Row>
+ <When condition="@isSelected">
+ <Center>
+ <Text text="§a+" textAlign="CENTER" width="10"/>
+ </Center>
+ <Spacer width="10" height="0"/>
+ </When>
+ <firm:Hover lines="@restrictions">
+ <Row>
+ <ItemStack value="@item"/>
+ <Align horizontal="LEFT" vertical="CENTER">
+ <Text text="@itemName"/>
+ </Align>
+ </Row>
+ </firm:Hover>
+ </Row>
+ </Array>
+ </Column>
+ </Array>
+ </ScrollPanel>
+ </Column>
+ </Gui>
+</Root>