Files
fantasysmp_fabric/src/main/kotlin/dev/zxq5/items/FantasysmpItemRegistry.kt
T

57 lines
2.1 KiB
Kotlin

package dev.zxq5.items
import dev.zxq5.Fantasysmp
import dev.zxq5.items.sets.Dragonite
import dev.zxq5.items.sets.Ender
import dev.zxq5.items.sets.Witherite
import dev.zxq5.items.template.GenericItemSet
import net.fabricmc.fabric.api.creativetab.v1.FabricCreativeModeTab
import net.minecraft.core.Registry
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.core.registries.Registries
import net.minecraft.network.chat.Component
import net.minecraft.resources.Identifier
import net.minecraft.resources.ResourceKey
import net.minecraft.world.item.CreativeModeTab
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
object ModItems {
fun <T : Item> register(
name: String,
itemFactory: (Item.Properties) -> T,
settings: Item.Properties = Item.Properties(),
): T {
val itemKey = ResourceKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(Fantasysmp.MOD_ID, name))
val item = itemFactory(settings.setId(itemKey))
Registry.register(BuiltInRegistries.ITEM, itemKey, item)
return item
}
val CUSTOM_CREATIVE_TAB_KEY: ResourceKey<CreativeModeTab> = ResourceKey.create(
BuiltInRegistries.CREATIVE_MODE_TAB.key(), Identifier.fromNamespaceAndPath(Fantasysmp.MOD_ID, "creative_tab")
)
val CUSTOM_CREATIVE_TAB: CreativeModeTab = FabricCreativeModeTab.builder()
.icon { ItemStack(Witherite.SWORD) }
.title(Component.translatable("Fantasysmp"))
.displayItems { _, output ->
GenericItemSet.all.forEach {
it.items.forEach(output::accept)
}
}
.build()
private val eagerLoad = listOf<GenericItemSet>(
Witherite,
Dragonite,
// Ender // TODO: Enable for content drop #1
)
fun onLoad() {
// ensure that implementations such as creative tab are loaded and initialised
eagerLoad
GenericItemSet.all.forEach { it.onLoad() }
Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, CUSTOM_CREATIVE_TAB_KEY, CUSTOM_CREATIVE_TAB);
}
}