Jump to content

[1.20.1] How Can I add Custom Effect to Custom Food ?


Recommended Posts

Posted

Hey everyone, I'm trying to do when player eat custom food he gains a custom effect that makes player can't swim. 
I created a custom effect like this ;

public class cantSwimEffect extends MobEffect {

    public cantSwimEffect(MobEffectCategory mobEffectCategory, int color) {
        super(mobEffectCategory, color);
    }

    @Override
    public void applyEffectTick(LivingEntity pLivingEntity, int pAmplifier) {

        if (!pLivingEntity.level().isClientSide() && pLivingEntity.isInWater()) {

            pLivingEntity.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SLOWDOWN,400));

        };


    }

    @Override
    public  boolean isDurationEffectTick(int pDuration, int pAmplifier) {
        return true;
    }
}

I created a custom food like this ;
 

public class ModFoods {

    public static final FoodProperties custom_food = new FoodProperties.Builder().nutrition(2).saturationMod(02.f).fast().build();


}

But I don't know how to add that custom effect to this food ? Can anyone help me ?

Posted
  On 11/11/2023 at 4:32 PM, Luis_ST said:

Use FoodProperties.Builder#effect which takes a MobEffectInstance Supplier and the chance of the effect (0.0 - 1.0)

I would recommend to follow the java naming convention.

Expand  

Thank you for your answer ! I did something like that ; 

public static final FoodProperties MERA_MERA_NO_MI = new FoodProperties.Builder().nutrition(2).fast()
            .saturationMod(0.2f).effect(() -> new MobEffectInstance(new CantSwimEffect(MobEffectCategory.HARMFUL,4866583)),1).build();

But in game I can only eat that food when I'm in creative mod. And also after I ate that java occurs this error ;

java.lang.IllegalArgumentException: No delegate exists for value net.mbkgr.opmod.item.custom.customeffect.cantSwimEffect@44b4927a

What is the problem can you help me ?

Posted
Time: 2023-11-11 22:40:00
Description: Ticking player

java.lang.IllegalArgumentException: No delegate exists for value net.mbkgr.opmod.item.custom.customeffect.CantSwimEffect@2d3e42e0
    at net.minecraftforge.registries.ForgeRegistry.lambda$getDelegateOrThrow$5(ForgeRegistry.java:542) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23190%23197!/:?] {re:classloading}
    at java.util.Optional.orElseThrow(Optional.java:403) ~[?:?] {}
    at net.minecraftforge.registries.ForgeRegistry.getDelegateOrThrow(ForgeRegistry.java:542) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23190%23197!/:?] {re:classloading}
    at net.minecraft.world.effect.MobEffectInstance.getEffect(MobEffectInstance.java:145) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,xf:fml:forge:potion}
    at net.minecraft.world.effect.MobEffectInstance.<init>(MobEffectInstance.java:64) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,xf:fml:forge:potion}
    at net.minecraft.world.entity.LivingEntity.addEatEffect(LivingEntity.java:3504) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.entity.LivingEntity.eat(LivingEntity.java:3488) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.entity.player.Player.eat(Player.java:2153) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.world.item.Item.finishUsingItem(Item.java:168) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.item.ItemStack.finishUsingItem(ItemStack.java:293) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,xf:fml:forge:itemstack}
    at net.minecraft.world.entity.LivingEntity.completeUsingItem(LivingEntity.java:3213) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.server.level.ServerPlayer.completeUsingItem(ServerPlayer.java:1162) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.world.entity.LivingEntity.updateUsingItem(LivingEntity.java:3092) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.server.level.ServerPlayer.updateUsingItem(ServerPlayer.java:1766) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.world.entity.LivingEntity.updatingUsingItem(LivingEntity.java:3074) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.entity.LivingEntity.tick(LivingEntity.java:2402) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.entity.player.Player.tick(Player.java:245) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.level.ServerPlayer.doTick(ServerPlayer.java:489) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.network.ServerGamePacketListenerImpl.tick(ServerGamePacketListenerImpl.java:267) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.network.Connection.tick(Connection.java:289) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:159) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:937) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:844) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.server.IntegratedServer.tickServer(IntegratedServer.java:95) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:679) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:251) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at java.lang.Thread.run(Thread.java:840) ~[?:?] {}


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Server thread
Stacktrace:
    at net.minecraftforge.registries.ForgeRegistry.lambda$getDelegateOrThrow$5(ForgeRegistry.java:542) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23190%23197!/:?] {re:classloading}
    at java.util.Optional.orElseThrow(Optional.java:403) ~[?:?] {}
    at net.minecraftforge.registries.ForgeRegistry.getDelegateOrThrow(ForgeRegistry.java:542) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23190%23197!/:?] {re:classloading}
    at net.minecraft.world.effect.MobEffectInstance.getEffect(MobEffectInstance.java:145) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,xf:fml:forge:potion}
    at net.minecraft.world.effect.MobEffectInstance.<init>(MobEffectInstance.java:64) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,xf:fml:forge:potion}
    at net.minecraft.world.entity.LivingEntity.addEatEffect(LivingEntity.java:3504) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.entity.LivingEntity.eat(LivingEntity.java:3488) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.entity.player.Player.eat(Player.java:2153) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.world.item.Item.finishUsingItem(Item.java:168) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.item.ItemStack.finishUsingItem(ItemStack.java:293) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,xf:fml:forge:itemstack}
    at net.minecraft.world.entity.LivingEntity.completeUsingItem(LivingEntity.java:3213) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.server.level.ServerPlayer.completeUsingItem(ServerPlayer.java:1162) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.world.entity.LivingEntity.updateUsingItem(LivingEntity.java:3092) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.server.level.ServerPlayer.updateUsingItem(ServerPlayer.java:1766) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.world.entity.LivingEntity.updatingUsingItem(LivingEntity.java:3074) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.entity.LivingEntity.tick(LivingEntity.java:2402) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.world.entity.player.Player.tick(Player.java:245) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
-- Player being ticked --
Details:
    Entity Type: minecraft:player (net.minecraft.server.level.ServerPlayer)
    Entity ID: 231
    Entity Name: Dev
    Entity's Exact location: 7.55, 123.00, 10.53
    Entity's Block location: World: (7,123,10), Section: (at 7,11,10 in 0,7,0; chunk contains blocks 0,-64,0 to 15,319,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,-64,0 to 511,319,511)
    Entity's Momentum: 0.00, -0.08, 0.00
    Entity's Passengers: []
    Entity's Vehicle: null
Stacktrace:
    at net.minecraft.server.level.ServerPlayer.doTick(ServerPlayer.java:489) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.network.ServerGamePacketListenerImpl.tick(ServerGamePacketListenerImpl.java:267) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.network.Connection.tick(Connection.java:289) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:159) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading}
    at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:937) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:844) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.client.server.IntegratedServer.tickServer(IntegratedServer.java:95) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:679) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:251) ~[forge-1.20.1-47.2.1_mapped_parchment_2023.06.26-1.20.1-recomp.jar%23191!/:?] {re:classloading,pl:accesstransformer:B}
    at java.lang.Thread.run(Thread.java:840) ~[?:?] {}

That is the full crash report. And yes I checked it it's correct.

Posted
  On 11/11/2023 at 8:18 PM, Luis_ST said:

Your MobEffect (CantSwimEffect) is a registry object, you must not create a new instance of it you should use the one your registered.

Expand  

Thank you I changed it like that and solved it ;
 

public static final FoodProperties MERA_MERA_NO_MI = new FoodProperties.Builder().nutrition(2).fast() .saturationMod(0.2f).effect(() -> new MobEffectInstance(ModEffects.CANT_SWIM.get()),1).build();

But I can't eat the food while player in survival mod. Why ?

Posted
  On 11/11/2023 at 8:59 PM, gbln00 said:

Thank you I changed it like that and solved it ;
 

public static final FoodProperties MERA_MERA_NO_MI = new FoodProperties.Builder().nutrition(2).fast() .saturationMod(0.2f).effect(() -> new MobEffectInstance(ModEffects.CANT_SWIM.get()),1).build();

But I can't eat the food while player in survival mod. Why ?

Expand  

Ah sorry. I solved it . There was an registration error. Thanks for help again.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • just rewatched the tutorial and my code is exactly the same as kaupenjoe's.  the item is added into the game but like i said to start it doesnt have a texture or a proper name for whatever reason.
    • yes the name is en_us.json and it is in resources -> assests -> testmod -> lang folders.  i have checked my code and am pretty confident that the code itself is correct.  i even tried loading the project in eclipse and it has the same problems, I think i will just rewatch the whole tutorial and will give an update on the situation.
    • same error, I also tried removing Valkyrian skies as well because I noticed it coming up a lot in the debug log errors
    • Hey man,    i have only been modding Minecraft for a few days but maybe I can help you. First of all make sure to follow every step of Kaupenjoe's tutorial, I found it to been very helpful and complete. The game uses the raw translation key for the item (in your case "item.testmod.alexandrite") if it can't find the correct lang file. Make sure it's name is "en_us.json" and it is saved under "ressources" -> "assets" -> "testmod".
    • whenever I try to get this item to render into the game it appears with the not texture purple and black squares and calls itself by the lang translation file path instead of the name i gave it.   { "item.testmod.alexandrite": "Alexandrite" } this is the lang json file package net.Hurst.testmod.item; import net.Hurst.testmod.TestMod; import net.minecraft.world.item.Item; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; public class ModItems { public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, TestMod.MOD_ID); public static final RegistryObject<Item> ALEXANDRITE = ITEMS.register("alexandrite", () -> new Item(new Item.Properties())); public static void register(IEventBus eventBus){ ITEMS.register(eventBus); } } this is my ModItems.java file package net.Hurst.testmod; import com.mojang.logging.LogUtils; import net.Hurst.testmod.item.ModItems; import net.minecraft.world.item.CreativeModeTabs; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; import net.minecraftforge.event.server.ServerStartingEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.slf4j.Logger; // The value here should match an entry in the META-INF/mods.toml file @Mod(TestMod.MOD_ID) public class TestMod { public static final String MOD_ID = "testmod"; private static final Logger LOGGER = LogUtils.getLogger(); public TestMod() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); modEventBus.addListener(this::commonSetup); ModItems.register(modEventBus); MinecraftForge.EVENT_BUS.register(this); modEventBus.addListener(this::addCreative); ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.SPEC); } private void commonSetup(final FMLCommonSetupEvent event) { } // Add the example block item to the building blocks tab private void addCreative(BuildCreativeModeTabContentsEvent event) { if(event.getTabKey() == CreativeModeTabs.INGREDIENTS){ event.accept(ModItems.ALEXANDRITE); } } // You can use SubscribeEvent and let the Event Bus discover methods to call @SubscribeEvent public void onServerStarting(ServerStartingEvent event) { } // You can use EventBusSubscriber to automatically register all static methods in the class annotated with @SubscribeEvent @Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) public static class ClientModEvents { @SubscribeEvent public static void onClientSetup(FMLClientSetupEvent event) { } } } this is my TestMod.java file { "parent": "minecraft:item/generated", "textures": { "layer0": "testmod:item/generated" } } this is my model file for the item. I am using intellij 2025.1.2 with fdk 1.21 and java 21 I would appreciate the help.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.