diff options
4 files changed, 24 insertions, 6 deletions
diff --git a/src/main/kotlin/moe/nea/notenoughupdates/rei/NEUReiPlugin.kt b/src/main/kotlin/moe/nea/notenoughupdates/rei/NEUReiPlugin.kt index 88f7abc..de515f3 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/rei/NEUReiPlugin.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/rei/NEUReiPlugin.kt @@ -2,16 +2,18 @@ package moe.nea.notenoughupdates.rei import io.github.moulberry.repo.data.NEUItem import me.shedaniel.rei.api.client.plugins.REIClientPlugin +import me.shedaniel.rei.api.client.registry.entry.CollapsibleEntryRegistry import me.shedaniel.rei.api.client.registry.entry.EntryRegistry import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry import me.shedaniel.rei.api.common.entry.EntryStack import me.shedaniel.rei.api.common.entry.type.EntryTypeRegistry import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes import net.minecraft.item.ItemStack +import net.minecraft.text.Text import net.minecraft.util.Identifier -import moe.nea.notenoughupdates.repo.ItemCache import moe.nea.notenoughupdates.repo.ItemCache.asItemStack import moe.nea.notenoughupdates.repo.RepoManager +import moe.nea.notenoughupdates.util.SkyblockId class NEUReiPlugin : REIClientPlugin { @@ -28,6 +30,16 @@ class NEUReiPlugin : REIClientPlugin { registry.register(SKYBLOCK_ITEM_TYPE_ID, SBItemEntryDefinition) } + override fun registerCollapsibleEntries(registry: CollapsibleEntryRegistry) { + RepoManager.neuRepo.constants.parents.parents + .forEach { (parent, children) -> + registry.group( + SkyblockId(parent).identifier, + Text.literal(RepoManager.getNEUItem(SkyblockId(parent))?.displayName ?: parent), + (children + parent).map { SBItemEntryDefinition.getEntry(RepoManager.getNEUItem(SkyblockId(it))) }) + } + } + override fun registerScreens(registry: ScreenRegistry) { registry.registerFocusedStack(SkyblockItemIdFocusedStackProvider) } diff --git a/src/main/kotlin/moe/nea/notenoughupdates/rei/SBItemEntryDefinition.kt b/src/main/kotlin/moe/nea/notenoughupdates/rei/SBItemEntryDefinition.kt index a9d4a7c..90d5931 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/rei/SBItemEntryDefinition.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/rei/SBItemEntryDefinition.kt @@ -68,5 +68,7 @@ object SBItemEntryDefinition : EntryDefinition<NEUItem> { return value?.getIdentifier() ?: Identifier.of("skyblockitem", "null")!! } + fun getEntry(neuItem: NEUItem?) = EntryStack.of(this, neuItem) + } diff --git a/src/main/kotlin/moe/nea/notenoughupdates/repo/ItemCache.kt b/src/main/kotlin/moe/nea/notenoughupdates/repo/ItemCache.kt index f243cfe..ae2b7d2 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/repo/ItemCache.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/repo/ItemCache.kt @@ -21,11 +21,10 @@ import net.minecraft.item.Items import net.minecraft.nbt.NbtCompound import net.minecraft.nbt.NbtOps import net.minecraft.text.Text -import net.minecraft.util.Identifier import moe.nea.notenoughupdates.NotEnoughUpdates -import moe.nea.notenoughupdates.mixins.accessor.AccessorDataFixTypes import moe.nea.notenoughupdates.util.LegacyTagParser import moe.nea.notenoughupdates.util.appendLore +import moe.nea.notenoughupdates.util.skyblockId object ItemCache : IReloadable { val dfuLog = Path.of("logs/dfulog.txt") @@ -91,8 +90,7 @@ object ItemCache : IReloadable { return s } - fun NEUItem.getIdentifier() = - Identifier("skyblockitem", skyblockItemId.lowercase().replace(";", "__")) + fun NEUItem.getIdentifier() = skyblockId.identifier var job: Job? = null diff --git a/src/main/kotlin/moe/nea/notenoughupdates/util/SkyblockId.kt b/src/main/kotlin/moe/nea/notenoughupdates/util/SkyblockId.kt index 8d7ef91..cc2d813 100644 --- a/src/main/kotlin/moe/nea/notenoughupdates/util/SkyblockId.kt +++ b/src/main/kotlin/moe/nea/notenoughupdates/util/SkyblockId.kt @@ -1,14 +1,20 @@ package moe.nea.notenoughupdates.util +import io.github.moulberry.repo.data.NEUItem import io.github.moulberry.repo.data.Rarity import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json import net.minecraft.item.ItemStack import net.minecraft.nbt.NbtCompound +import net.minecraft.util.Identifier @JvmInline -value class SkyblockId(val neuItem: String) +value class SkyblockId(val neuItem: String) { + val identifier get() = Identifier("skyblockitem", neuItem.lowercase().replace(";", "__")) +} + +val NEUItem.skyblockId get() = SkyblockId(skyblockItemId) @Serializable data class HypixelPetInfo( |