-
Notifications
You must be signed in to change notification settings - Fork 20
/
ModItems.kt
83 lines (77 loc) · 4.16 KB
/
ModItems.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package net.barribob.boss.item
import net.barribob.boss.Mod
import net.barribob.boss.block.BrimstoneNectarItem
import net.barribob.boss.block.structure_repair.GauntletStructureRepair
import net.barribob.boss.block.structure_repair.LichStructureRepair
import net.barribob.boss.block.structure_repair.ObsidilithStructureRepair
import net.barribob.boss.block.structure_repair.VoidBlossomStructureRepair
import net.barribob.boss.utils.ModUtils
import net.fabricmc.api.EnvType
import net.fabricmc.api.Environment
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup
import net.fabricmc.fabric.api.`object`.builder.v1.client.model.FabricModelPredicateProviderRegistry
import net.minecraft.component.type.FoodComponent
import net.minecraft.entity.effect.StatusEffectInstance
import net.minecraft.entity.effect.StatusEffects
import net.minecraft.item.Item
import net.minecraft.item.ItemGroup
import net.minecraft.item.ItemStack
import net.minecraft.registry.Registries
import net.minecraft.registry.Registry
import net.minecraft.registry.RegistryKey
import net.minecraft.registry.RegistryKeys
import net.minecraft.text.Text
import net.minecraft.util.Identifier
import net.minecraft.util.Rarity
class ModItems {
var itemGroup: RegistryKey<ItemGroup> = RegistryKey.of(RegistryKeys.ITEM_GROUP, Mod.identifier("items"))
val soulStar = SoulStarItem(Item.Settings())
private val ancientAnima = MaterialItem(Item.Settings().rarity(Rarity.RARE))
private val blazingEye = MaterialItem(Item.Settings().rarity(Rarity.RARE).fireproof())
private val obsidianHeart = MaterialItem(Item.Settings().rarity(Rarity.RARE).fireproof())
private val earthdiveSpear = EarthdiveSpear(Item.Settings().fireproof().maxDamage(250)) // createAttributeModifiers()
private val voidThorn = MaterialItem(Item.Settings().rarity(Rarity.RARE).fireproof())
private val crystalFruitFoodComponent = FoodComponent.Builder().nutrition(4).saturationModifier(1.2f)
.statusEffect(StatusEffectInstance(StatusEffects.REGENERATION, 300, 1), 1.0f)
.statusEffect(StatusEffectInstance(StatusEffects.INSTANT_HEALTH, 1), 1.0f)
.statusEffect(StatusEffectInstance(StatusEffects.RESISTANCE, 600, 0), 1.0f)
.alwaysEdible().build()
private val crystalFruit = CrystalFruitItem(Item.Settings().rarity(Rarity.RARE).fireproof().food(crystalFruitFoodComponent))
val chargedEnderPearl = ChargedEnderPearlItem(Item.Settings().fireproof().maxCount(1))
private val brimstoneNectar = BrimstoneNectarItem(
Item.Settings().rarity(Rarity.RARE).fireproof(), listOf(
VoidBlossomStructureRepair(), GauntletStructureRepair(), ObsidilithStructureRepair(), LichStructureRepair()
))
fun init() {
Registry.register(Registries.ITEM_GROUP, itemGroup, FabricItemGroup.builder()
.icon { ItemStack(soulStar) }
.displayName(Text.translatable("itemGroup.bosses_of_mass_destruction.items"))
.build())
registerItem(Mod.identifier("soul_star"), soulStar)
registerItem(Mod.identifier("ancient_anima"), ancientAnima)
registerItem(Mod.identifier("blazing_eye"), blazingEye)
registerItem(Mod.identifier("obsidian_heart"), obsidianHeart)
registerItem(Mod.identifier("earthdive_spear"), earthdiveSpear)
registerItem(Mod.identifier("void_thorn"), voidThorn)
registerItem(Mod.identifier("crystal_fruit"), crystalFruit)
registerItem(Mod.identifier("charged_ender_pearl"), chargedEnderPearl)
registerItem(Mod.identifier("brimstone_nectar"), brimstoneNectar)
}
private fun registerItem(identifier: Identifier, item: Item, addToItemGroup: Boolean = true){
Registry.register(Registries.ITEM, identifier, item)
if (addToItemGroup)
ModUtils.addItemToGroup(item)
}
@Environment(EnvType.CLIENT)
fun clientInit() {
FabricModelPredicateProviderRegistry.register(
earthdiveSpear,
Identifier.of("throwing")
) { itemStack, _, livingEntity, _ ->
if (livingEntity == null) {
return@register 0.0f
}
if (livingEntity.isUsingItem && livingEntity.activeItem === itemStack) 1.0f else 0.0f
}
}
}