54 lines
1.9 KiB
Kotlin
54 lines
1.9 KiB
Kotlin
package dev.zxq5.items
|
|
|
|
import dev.zxq5.Fantasysmp
|
|
import dev.zxq5.items.core.GenericGearSet
|
|
import dev.zxq5.items.core.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
|
|
): 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<GenericGearSet>(
|
|
Witherite,
|
|
Dragonite,
|
|
)
|
|
|
|
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);
|
|
}
|
|
} |