diff --git a/build.gradle.kts b/build.gradle.kts index 21a8caf9f..29f81e5b7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -182,8 +182,7 @@ dependencies { val mekanism_version: String by project val curios_version: String by project - compileOnly(fg.deobf("top.theillusivec4.curios:curios-forge:${mc_version}-${curios_version}:api")) - runtimeOnly(fg.deobf("top.theillusivec4.curios:curios-forge:${mc_version}-${curios_version}")) + implementation(fg.deobf("top.theillusivec4.curios:curios-forge:${mc_version}-${curios_version}")) compileOnly(fg.deobf("mezz.jei:jei-${mc_version}-common-api:${jei_version}")) compileOnly(fg.deobf("mezz.jei:jei-${mc_version}-forge-api:${jei_version}")) diff --git a/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryCapability.java b/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryCapability.java index 0d0741da5..0e7c89898 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryCapability.java +++ b/src/main/java/ru/dbotthepony/mc/otm/capability/MatteryCapability.java @@ -10,6 +10,8 @@ import ru.dbotthepony.mc.otm.capability.matter.IPatternStorage; import ru.dbotthepony.mc.otm.graph.matter.IMatterGraphNode; import ru.dbotthepony.mc.otm.graph.storage.IStorageGraphNode; import ru.dbotthepony.mc.otm.storage.IStorageStack; +import top.theillusivec4.curios.api.type.capability.ICurio; +import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler; import javax.annotation.Nonnull; @@ -49,4 +51,12 @@ public class MatteryCapability { @Nonnull @NotNull public static final Capability MEKANISM_ENERGY = CapabilityManager.get(new CapabilityToken<>() {}); + + @Nonnull + @NotNull + public static final Capability CURIOS_INVENTORY = CapabilityManager.get(new CapabilityToken<>() {}); + + @Nonnull + @NotNull + public static final Capability CURIOS_ITEM = CapabilityManager.get(new CapabilityToken<>() {}); } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ExoSuitInventoryScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ExoSuitInventoryScreen.kt index 33dcb5634..882099b72 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ExoSuitInventoryScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/ExoSuitInventoryScreen.kt @@ -12,6 +12,7 @@ import ru.dbotthepony.mc.otm.client.render.element import ru.dbotthepony.mc.otm.client.screen.panels.* import ru.dbotthepony.mc.otm.client.setMousePos import ru.dbotthepony.mc.otm.client.shouldOpenVanillaInventory +import ru.dbotthepony.mc.otm.compat.curios.curiosSlots import ru.dbotthepony.mc.otm.core.maxScrollDivision import ru.dbotthepony.mc.otm.menu.ExoSuitInventoryMenu import ru.dbotthepony.mc.otm.network.ExoSuitMenuOpen @@ -169,7 +170,31 @@ class ExoSuitInventoryScreen(menu: ExoSuitInventoryMenu) : MatteryScreen> { + val handler = getCapability(MatteryCapability.CURIOS_INVENTORY).orNull() ?: return listOf() + + val result = ArrayList>() + + for ((identifier, curio) in handler.curios) { + if (curio.isVisible) { + val stacks = curio.stacks + + for (slot in 0 until stacks.slots) { + val regular = CurioSlot(this, stacks, slot, identifier, 0, 0, curio.renders) + + if (curio.hasCosmetic()) { + val cosmetic = CosmeticCurioSlot(this, curio.cosmeticStacks, slot, identifier, 0, 0) + + result.add(regular to cosmetic) + } else { + result.add(regular to null) + } + } + } + } + + return result +} + +/** + * [Pair] + */ +val Player.curiosSlots: Collection> get() { + if (!isCuriosLoaded) { + return listOf() + } + + return getCuriosSlotsImpl() +}