diff --git a/common/src/main/java/me/shedaniel/architectury/hooks/FoodPropertiesHooks.java b/common/src/main/java/me/shedaniel/architectury/hooks/FoodPropertiesHooks.java index 14283518..ec19278e 100644 --- a/common/src/main/java/me/shedaniel/architectury/hooks/FoodPropertiesHooks.java +++ b/common/src/main/java/me/shedaniel/architectury/hooks/FoodPropertiesHooks.java @@ -31,7 +31,7 @@ public final class FoodPropertiesHooks { @ExpectPlatform public static void effect(FoodProperties.Builder builder, - Supplier effectSupplier, float chance) { + Supplier effectSupplier, float chance) { throw new AssertionError(); } } diff --git a/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/FoodPropertiesHooksImpl.java b/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/FoodPropertiesHooksImpl.java index f9141e60..f6f916f5 100644 --- a/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/FoodPropertiesHooksImpl.java +++ b/fabric/src/main/java/me/shedaniel/architectury/hooks/fabric/FoodPropertiesHooksImpl.java @@ -26,7 +26,7 @@ import java.util.function.Supplier; public class FoodPropertiesHooksImpl { public static void effect(FoodProperties.Builder builder, - Supplier effectSupplier, float chance) { + Supplier effectSupplier, float chance) { // Fabric doesn't have deferred registration, so the mob effect should always be available anyway builder.effect(effectSupplier.get(), chance); } diff --git a/forge/src/main/java/me/shedaniel/architectury/hooks/forge/FoodPropertiesHooksImpl.java b/forge/src/main/java/me/shedaniel/architectury/hooks/forge/FoodPropertiesHooksImpl.java index 8e33cdbf..e9662118 100644 --- a/forge/src/main/java/me/shedaniel/architectury/hooks/forge/FoodPropertiesHooksImpl.java +++ b/forge/src/main/java/me/shedaniel/architectury/hooks/forge/FoodPropertiesHooksImpl.java @@ -25,8 +25,9 @@ import net.minecraft.world.food.FoodProperties; import java.util.function.Supplier; public class FoodPropertiesHooksImpl { + @SuppressWarnings("unchecked") public static void effect(FoodProperties.Builder builder, - Supplier effectSupplier, float chance) { - builder.effect(effectSupplier, chance); + Supplier effectSupplier, float chance) { + builder.effect((Supplier) effectSupplier, chance); } } diff --git a/testmod-common/src/main/java/me/shedaniel/architectury/test/registry/TestRegistries.java b/testmod-common/src/main/java/me/shedaniel/architectury/test/registry/TestRegistries.java index 65c7483d..e8d6dc4a 100644 --- a/testmod-common/src/main/java/me/shedaniel/architectury/test/registry/TestRegistries.java +++ b/testmod-common/src/main/java/me/shedaniel/architectury/test/registry/TestRegistries.java @@ -20,6 +20,7 @@ package me.shedaniel.architectury.test.registry; import me.shedaniel.architectury.hooks.EntityHooks; +import me.shedaniel.architectury.hooks.FoodPropertiesHooks; import me.shedaniel.architectury.registry.BlockProperties; import me.shedaniel.architectury.registry.DeferredRegister; import me.shedaniel.architectury.registry.RegistrySupplier; @@ -29,7 +30,11 @@ import me.shedaniel.architectury.test.registry.objects.EquippableTickingItem; import me.shedaniel.architectury.test.tab.TestCreativeTabs; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.food.FoodProperties; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.BlockGetter; @@ -45,11 +50,20 @@ public class TestRegistries { public static final DeferredRegister ITEMS = DeferredRegister.create(TestMod.MOD_ID, Registry.ITEM_REGISTRY); public static final DeferredRegister BLOCKS = DeferredRegister.create(TestMod.MOD_ID, Registry.BLOCK_REGISTRY); public static final DeferredRegister> ENTITY_TYPES = DeferredRegister.create(TestMod.MOD_ID, Registry.ENTITY_TYPE_REGISTRY); + public static final DeferredRegister MOB_EFFECTS = DeferredRegister.create(TestMod.MOD_ID, Registry.MOB_EFFECT_REGISTRY); + public static final RegistrySupplier TEST_EFFECT = MOB_EFFECTS.register("test_effect", () -> + new MobEffect(MobEffectCategory.NEUTRAL, 0x123456) { }); + public static final RegistrySupplier TEST_ITEM = ITEMS.register("test_item", () -> new Item(new Item.Properties().tab(TestCreativeTabs.TEST_TAB))); public static final RegistrySupplier TEST_EQUIPPABLE = ITEMS.register("test_eqippable", () -> new EquippableTickingItem(new Item.Properties().tab(TestCreativeTabs.TEST_TAB))); + public static final RegistrySupplier TEST_EDIBLE = ITEMS.register("test_edible", () -> { + FoodProperties.Builder fpBuilder = new FoodProperties.Builder().nutrition(8).saturationMod(0.8F).meat(); + FoodPropertiesHooks.effect(fpBuilder, () -> new MobEffectInstance(TEST_EFFECT.get(), 100), 1); + return new Item(new Item.Properties().tab(TestCreativeTabs.TEST_TAB).food(fpBuilder.build())); + }); public static final RegistrySupplier TEST_BLOCK = BLOCKS.register("test_block", () -> new Block(BlockProperties.copy(Blocks.STONE))); @@ -70,6 +84,7 @@ public class TestRegistries { public static final RegistrySupplier> TEST_ENTITY = ENTITY_TYPES.register("test_entity", () -> TestEntity.TYPE); public static void initialize() { + MOB_EFFECTS.register(); BLOCKS.register(); ITEMS.register(); ENTITY_TYPES.register();