Garlic effect (proto demo)
build / build (push) Successful in 5m58s

This commit is contained in:
2026-06-17 16:57:06 +02:00
parent b8e5c1da1a
commit c09f74ccae
9 changed files with 84 additions and 7 deletions
@@ -1,5 +1,6 @@
package gamer.noir.curseenc
import gamer.noir.curseenc.effect.Effect
import gamer.noir.curseenc.item.ModItems
import net.fabricmc.api.ModInitializer
import org.slf4j.LoggerFactory
@@ -11,6 +12,7 @@ object CurseOfEienNoChi : ModInitializer {
override fun onInitialize() {
ModItems.initialize()
Effect.initialize()
// This code runs as soon as Minecraft is in a mod-load-ready state.
// However, some things (like resources) may still be uninitialized.
// Proceed with mild caution.
@@ -0,0 +1,26 @@
package gamer.noir.curseenc.effect
import net.minecraft.advancements.critereon.MobEffectsPredicate.Builder.effects
import net.minecraft.core.Holder
import net.minecraft.core.Registry
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.effect.MobEffect
object Effect {
val GARLIC_STATUS: Holder<MobEffect> = register(GarlicStatus,"garlic_status")
fun register(effect : MobEffect , id : String): Holder.Reference<MobEffect> {
return Registry.registerForHolder(
BuiltInRegistries.MOB_EFFECT,
ResourceLocation.fromNamespaceAndPath("curseenc", id),
effect
);
}
fun initialize() {
}
}
@@ -0,0 +1,31 @@
package gamer.noir.curseenc.effect
import gamer.noir.curseenc.item.ModItems
import net.fabricmc.api.ModInitializer
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.server.level.ServerLevel
import net.minecraft.world.effect.MobEffect
import net.minecraft.world.effect.MobEffectCategory
import net.minecraft.world.entity.LivingEntity
import net.minecraft.world.entity.player.Player
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.Items
object GarlicStatus : MobEffect(MobEffectCategory.BENEFICIAL, 0xe9b8b3) {
// Called every tick to check if the effect can be applied or not
override fun shouldApplyEffectTickThisTick(duration: Int, amplifier: Int): Boolean {
// In our case, we just make it return true so that it applies the effect every tick
return true
}
// Called when the effect is applied.
override fun applyEffectTick(entity: LivingEntity, amplifier: Int): Boolean {
if (entity is Player && entity.mainHandItem.`is`(Items.DIRT)){
entity.inventory.add(ItemStack(ModItems.GARLIC)) // Higher amplifier gives you experience faster
}
return super.applyEffectTick(entity, amplifier)
}
}
@@ -1,15 +1,22 @@
package gamer.noir.curseenc.item
import gamer.noir.curseenc.CurseOfEienNoChi
import gamer.noir.curseenc.effect.Effect
import gamer.noir.curseenc.effect.GarlicStatus
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroupEntries
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents.ModifyEntries
import net.minecraft.core.Registry
import net.minecraft.core.registries.BuiltInRegistries
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.effect.MobEffect
import net.minecraft.world.effect.MobEffectInstance
import net.minecraft.world.effect.MobEffects
import net.minecraft.world.food.FoodProperties
import net.minecraft.world.item.CreativeModeTabs
import net.minecraft.world.item.Item
object ModItems {
fun register(item: Item, id: String): Item {
// Create the identifier for the item.
@@ -22,13 +29,21 @@ object ModItems {
return registeredItem
}
val GARLIC_FOOD: FoodProperties = FoodProperties.Builder()
.alwaysEdible()
.effect(MobEffectInstance(Effect.GARLIC_STATUS, 6 * 20, 0), 1.0f)
.build()
val GARLIC: Item = register(
Item(Item.Properties()),
Item(Item.Properties().food(GARLIC_FOOD)),
"garlic"
)
fun initialize() {
ItemGroupEvents.modifyEntriesEvent(CreativeModeTabs.INGREDIENTS)
.register(ModifyEntries { entries: FabricItemGroupEntries? -> entries!!.accept(GARLIC) })
.register(ModifyEntries { entries: FabricItemGroupEntries ->
entries.accept(GARLIC)
})
}
}
}
@@ -1,3 +0,0 @@
{
"item.CurseOfEienNoChi.garlic": "Garlic"
}
@@ -0,0 +1,6 @@
{
"item.curseenc.garlic": "Garlic",
"effect.curseenc.garlic_status": "Garlic Status"
}
@@ -1,6 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "example-mod:item/garlic"
"layer0": "curseenc:item/garlic"
}
}

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B