Jump to content

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


gbln00

Recommended Posts

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 ?

Link to comment
Share on other sites

2 hours ago, 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.

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 ?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

38 minutes ago, 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.

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 ?

Link to comment
Share on other sites

14 minutes ago, 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 ?

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

Link to comment
Share on other sites

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.



×
×
  • Create New...

Important Information

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