Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (โ‹ฎ) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

DerpyNinjaFrog

Members
  • Joined

  1. Ok, here's what I've come up with. For some reason, I can't put the potions in the brewing stand though, they're not recognized as ingredients, I guess. I think I need to initialize the super with something other than "null", but I don't know what to put there, it's expecting a Stream<IItemList> package com.derpyninjafrog.worldoffood.init; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.crafting.Ingredient; import net.minecraftforge.common.brewing.IBrewingRecipe; import java.util.function.Predicate; public class PotionIngredient extends Ingredient implements Predicate<ItemStack> { String potion; public PotionIngredient(String potion) { super(null); this.potion = potion; } @Override public boolean test(ItemStack itemStack) { return itemStack.getTag().getString("Potion").equals(this.potion); } @Override public Predicate<ItemStack> and(Predicate<? super ItemStack> other) { return Predicate.super.and(other); } }
  2. Hello, I'm trying to figure out how to specify the type of potion for the input of a brewing recipe. I can get the recipe to work with the basic Items.POTION but then you can use any potion for the input. I think you have to use NBT data but what I have currently doesn't seem to be working (it simply won't let you brew the recipe at all). I've seen some people using a different way of creating brewing recipes by creating a implementation of IBrewingRecipe, do I need to do that or is there a way to do it the way I have it now and I'm just missing something? (I made a getPotion() function to get an instance of the potion ItemStack with the NBT tag for the type of potion) package com.derpyninjafrog.worldoffood.init; import com.derpyninjafrog.worldoffood.WorldOfFood; import com.derpyninjafrog.worldoffood.effects.Nourished; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.crafting.Ingredient; import net.minecraft.nbt.CompoundNBT; import net.minecraft.potion.*; import net.minecraftforge.common.brewing.BrewingRecipeRegistry; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; @Mod.EventBusSubscriber(bus = Bus.MOD, modid = "world_of_food") public class ModPotions { public static final DeferredRegister<Effect> EFFECTS = DeferredRegister.create(ForgeRegistries.POTIONS, WorldOfFood.MOD_ID); public static final DeferredRegister<Potion> POTIONS = DeferredRegister.create(ForgeRegistries.POTION_TYPES, WorldOfFood.MOD_ID); public static final RegistryObject<Effect> NOURISHED = EFFECTS.register("nourished", () -> new Nourished(EffectType.BENEFICIAL, 3087634)); public static final RegistryObject<Potion> HOT_COCOA = POTIONS.register("hot_cocoa", () -> new Potion(new EffectInstance(NOURISHED.get(), 3600))); public static final RegistryObject<Potion> APPLE_JUICE = POTIONS.register("apple_juice", () -> new Potion(new EffectInstance(NOURISHED.get(), 3600))); public static final RegistryObject<Potion> APPLE_CIDER = POTIONS.register("apple_cider", () -> new Potion(new EffectInstance(NOURISHED.get(), 3600))); public static final RegistryObject<Potion> VINEGAR = POTIONS.register("vinegar", () -> new Potion(new EffectInstance(NOURISHED.get(), 3600))); @SubscribeEvent public static void registerPotions(FMLCommonSetupEvent event) { event.enqueueWork( ()-> BrewingRecipeRegistry.addRecipe(Ingredient.of(Items.POTION), Ingredient.of(Items.COCOA_BEANS), PotionUtils.setPotion(getPotion("minecraft:water"), HOT_COCOA.get())) ); event.enqueueWork( ()-> BrewingRecipeRegistry.addRecipe(Ingredient.of(Items.POTION), Ingredient.of(Items.APPLE), PotionUtils.setPotion(getPotion("minecraft:water"), APPLE_JUICE.get())) ); event.enqueueWork( ()-> BrewingRecipeRegistry.addRecipe(Ingredient.of(Items.POTION), Ingredient.of(Items.APPLE), PotionUtils.setPotion(getPotion("world_of_food:apple_juice"), APPLE_CIDER.get())) ); event.enqueueWork( ()-> BrewingRecipeRegistry.addRecipe(Ingredient.of(Items.POTION), Ingredient.of(Items.SUGAR), PotionUtils.setPotion(getPotion("world_of_food:apple_juice"), VINEGAR.get())) ); } public static ItemStack getPotion(String potion) { ItemStack itemstack = new ItemStack(Items.POTION); CompoundNBT tag = itemstack.getTag(); tag.putString("Potion", potion); return itemstack; } }
  3. I specifically checked that but that was the problem. I must be blind. ๐Ÿ˜‚ Fixed it. I put this in my effect class constructor: @Override public void applyInstantenousEffect(@Nullable Entity p_180793_1_, @Nullable Entity p_180793_2_, LivingEntity p_180793_3_, int p_180793_4_, double p_180793_5_) { if (p_180793_3_ instanceof PlayerEntity) { FoodStats foodstats = ((PlayerEntity)p_180793_3_).getFoodData(); foodstats.setFoodLevel(foodstats.getFoodLevel()+2); foodstats.setSaturation(foodstats.getSaturationLevel()+1); } } Thank you!
  4. Debug error: My potion/effect/brewing recipe registry: @Mod.EventBusSubscriber(bus = Bus.MOD, modid = "world_of_food") public class ModPotions { public static final DeferredRegister<Effect> EFFECTS = DeferredRegister.create(ForgeRegistries.POTIONS, WorldOfFood.MOD_ID); public static final DeferredRegister<Potion> POTIONS = DeferredRegister.create(ForgeRegistries.POTION_TYPES, WorldOfFood.MOD_ID); public static final RegistryObject<Effect> NOURISHED = EFFECTS.register("nourished", () -> new Nourished(EffectType.BENEFICIAL, 3087634)); public static final RegistryObject<Potion> HOT_COCOA = POTIONS.register("hot_cocoa", () -> new Potion(new EffectInstance(NOURISHED.get(), 3600))); @SubscribeEvent public static void registerPotions(FMLCommonSetupEvent event) { event.enqueueWork( ()-> BrewingRecipeRegistry.addRecipe(Ingredient.of(Items.POTION), Ingredient.of(Items.COCOA_BEANS), PotionUtils.setPotion(new ItemStack(Items.POTION), HOT_COCOA.get())) ); } } My "nourished" effect class: public class Nourished extends InstantEffect { public Nourished(EffectType typeIn, int liquidColorIn) { super(typeIn, liquidColorIn); } @Override public void applyInstantenousEffect(@Nullable Entity p_180793_1_, @Nullable Entity p_180793_2_, LivingEntity p_180793_3_, int p_180793_4_, double p_180793_5_) { if (p_180793_3_ == Minecraft.getInstance().player) { FoodStats foodstats = Minecraft.getInstance().player.getFoodData(); foodstats.setFoodLevel(foodstats.getFoodLevel()+2); foodstats.setSaturation(foodstats.getSaturationLevel()+1); } } } Should all my potion/effect/brewing recipe problems be in one thread?
  5. That fixed it, thanks! I'll work on changing my ModId. ๐Ÿ™‚ I put this in my mod class constructor: ModPotions.POTION_TYPES.register(FMLJavaModLoadingContext.get().getModEventBus());
  6. Ok, now that I've gotten my brewing recipe to work I'm trying to actually create a new potion type. I've looked at some other forum threads. This looks like it should be correct but I can no longer brew the item. I can't find the new potion type in the menu so something is wrong: @Mod.EventBusSubscriber(bus = Bus.MOD, modid = "wof") public class ModPotions { public static final DeferredRegister<Potion> POTION_TYPES = DeferredRegister.create(ForgeRegistries.POTION_TYPES, WorldOfFood.MOD_ID); public static final RegistryObject<Potion> HOT_COCOA = POTION_TYPES.register("hot_cocoa", () -> new Potion(new EffectInstance(Effects.SATURATION, 3600))); @SubscribeEvent public static void registerPotions(FMLCommonSetupEvent event) { event.enqueueWork( ()-> BrewingRecipeRegistry.addRecipe(Ingredient.of(Items.POTION), Ingredient.of(Items.COCOA_BEANS), PotionUtils.setPotion(new ItemStack(Items.POTION), HOT_COCOA.get())) ); } }
  7. Got it to work, thanks! package com.derpyninjafrog.worldoffood.init; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.item.crafting.Ingredient; import net.minecraftforge.common.brewing.BrewingRecipeRegistry; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; @Mod.EventBusSubscriber(bus = Bus.MOD, modid = "wof") public class ModPotions { @SubscribeEvent public static void registerPotions(FMLCommonSetupEvent event) { event.enqueueWork( ()-> BrewingRecipeRegistry.addRecipe(Ingredient.of(Items.POTION), Ingredient.of(Items.COCOA_BEANS), new ItemStack(ModItems.HOT_COCOA.get())) ); } }
  8. I am new to Java. Is this correct? public class ModPotions { @SubscribeEvent public static void registerPotions(FMLCommonSetupEvent event) { event.enqueueWork( ()-> BrewingRecipeRegistry.addRecipe(Ingredient.of(Items.POTION), Ingredient.of(Items.COCOA_BEANS), new ItemStack(HotCocoa::new)) ); } } And how do you register events with the event handler?
  9. I don't know how to make this work. It doesn't give any warnings, crashes, or errors. public class ModPotions { @SubscribeEvent public static void registerPotions(FMLCommonSetupEvent event) { BrewingRecipeRegistry.addRecipe(Ingredient.of(Items.POTION), Ingredient.of(Items.COCOA_BEANS), new ItemStack(HotCocoa::new)); } }

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions โ†’ Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.