diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/condensed_creative/CondensedCreativeCompat.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/condensed_creative/CondensedCreativeCompat.kt index 71fd9d2ae..e265f5355 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/condensed_creative/CondensedCreativeCompat.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/condensed_creative/CondensedCreativeCompat.kt @@ -4,9 +4,15 @@ import io.wispforest.condensed_creative.entry.impl.CondensedItemEntry import io.wispforest.condensed_creative.registry.CondensedCreativeInitializer import io.wispforest.condensed_creative.registry.CondensedEntryRegistry import net.minecraft.core.RegistryAccess +import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.world.item.CreativeModeTab import net.minecraft.world.item.DyeColor import net.minecraft.world.item.Item +import net.minecraft.world.item.ItemStack +import net.minecraft.world.level.material.Fluids +import net.neoforged.neoforge.capabilities.Capabilities +import net.neoforged.neoforge.fluids.FluidStack +import net.neoforged.neoforge.fluids.capability.IFluidHandler import ru.dbotthepony.mc.otm.core.registryName import ru.dbotthepony.mc.otm.registry.MCreativeTabs import ru.dbotthepony.mc.otm.registry.MItems @@ -48,6 +54,9 @@ class CondensedCreativeCompat : CondensedCreativeInitializer { addByBase(MItems.ITEM_MONITOR, MCreativeTabs.MAIN) addByBase(MItems.STORAGE_POWER_SUPPLIER, MCreativeTabs.MAIN) + addByFluids(MItems.FLUID_CAPSULE, MCreativeTabs.MAIN) + addByFluids(MItems.FLUID_TANK, MCreativeTabs.MAIN) + addByBase(MItems.TRITANIUM_DOOR, MCreativeTabs.DECORATIVE) addByBase(MItems.TRITANIUM_TRAPDOOR, MCreativeTabs.DECORATIVE) addByBase(MRegistry.TRITANIUM_PRESSURE_PLATE.allItems, MCreativeTabs.DECORATIVE) @@ -111,4 +120,23 @@ class CondensedCreativeCompat : CondensedCreativeInitializer { tabs.forEach { builder.addToItemGroup(it) } return builder } + + private fun addByFluids(item: Item, vararg tabs: CreativeModeTab): CondensedItemEntry.Builder? { + val base = ItemStack(item, 1) + + val list = arrayListOf(base) + for (fluid in BuiltInRegistries.FLUID) { + if (fluid != Fluids.EMPTY && fluid.isSource(fluid.defaultFluidState())) { + list.add(base.copy().also { + it.getCapability(Capabilities.FluidHandler.ITEM)?.let { + it.fill(FluidStack(fluid, it.getTankCapacity(0)), IFluidHandler.FluidAction.EXECUTE) + } + }) + } + } + + val builder = CondensedEntryRegistry.fromItemStacks(item.registryName, base, list) + tabs.forEach { builder.addToItemGroup(it) } + return builder + } }