From 8d2190f91dd5866a926355fa6e99ca0631f1c812 Mon Sep 17 00:00:00 2001 From: KnightMiner Date: Wed, 19 Aug 2020 19:44:14 -0400 Subject: [PATCH] Remove old cauldron recipe classes ICauldronRecipe is used too many places to remove it for now, so move to legacy package --- .../library/event/RegisterEvent.java | 39 ------ .../library/event/package-info.java | 7 -- .../cauldron/BrewingCauldronRecipe.java | 94 --------------- .../recipe/cauldron/DyeCauldronRecipe.java | 52 -------- .../recipe/cauldron/FillCauldronRecipe.java | 106 ---------------- .../recipe/cauldron/FluidCauldronRecipe.java | 98 --------------- .../FluidTransformCauldronRecipe.java | 77 ------------ .../cauldron/ISimpleCauldronRecipe.java | 64 ---------- .../recipe/cauldron/MixCauldronRecipe.java | 87 -------------- .../recipe/cauldron/PotionCauldronRecipe.java | 45 ------- .../cauldron/RecipeMatchCauldronRecipe.java | 113 ------------------ .../{ => legacy}/ICauldronRecipe.java | 2 +- .../recipe/cauldron/legacy}/package-info.java | 2 +- .../dispenser/DispenseCauldronRecipe.java | 4 +- .../cauldron/ArmorClearingCauldronRecipe.java | 49 -------- .../cauldron/ArmorDyeingCauldronRecipe.java | 49 -------- .../BannerClearingCauldronRecipe.java | 34 ------ .../recipe/cauldron/DyeCauldronWater.java | 73 ----------- .../cauldron/TippedArrowCauldronRecipe.java | 39 ------ .../empty/ContainerEmptyCauldron.java | 51 -------- .../empty/DyedBottleEmptyCauldron.java | 39 ------ .../cauldron/empty/PotionEmptyCauldron.java | 50 -------- .../cauldron/empty/SpongeEmptyCauldron.java | 38 ------ .../cauldron/fill/DyedBottleFillCauldron.java | 67 ----------- .../fill/FluidContainerFillCauldron.java | 65 ---------- .../cauldron/fill/PotionFillCauldron.java | 68 ----------- .../recipe/cauldron/fill/package-info.java | 7 -- .../recipes/recipe/cauldron/package-info.java | 7 -- .../recipes/tank/CauldronTank.java | 2 +- .../tileentity/CauldronTileEntity.java | 4 +- 30 files changed, 7 insertions(+), 1425 deletions(-) delete mode 100644 src/main/java/knightminer/inspirations/library/event/RegisterEvent.java delete mode 100644 src/main/java/knightminer/inspirations/library/event/package-info.java delete mode 100644 src/main/java/knightminer/inspirations/library/recipe/cauldron/BrewingCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/library/recipe/cauldron/DyeCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/library/recipe/cauldron/FillCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/library/recipe/cauldron/FluidCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/library/recipe/cauldron/FluidTransformCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/library/recipe/cauldron/ISimpleCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/library/recipe/cauldron/MixCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/library/recipe/cauldron/PotionCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/library/recipe/cauldron/RecipeMatchCauldronRecipe.java rename src/main/java/knightminer/inspirations/library/recipe/cauldron/{ => legacy}/ICauldronRecipe.java (99%) rename src/main/java/knightminer/inspirations/{recipes/recipe/cauldron/empty => library/recipe/cauldron/legacy}/package-info.java (71%) delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/ArmorClearingCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/ArmorDyeingCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/BannerClearingCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/DyeCauldronWater.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/TippedArrowCauldronRecipe.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/ContainerEmptyCauldron.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/DyedBottleEmptyCauldron.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/PotionEmptyCauldron.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/SpongeEmptyCauldron.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/DyedBottleFillCauldron.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/FluidContainerFillCauldron.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/PotionFillCauldron.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/package-info.java delete mode 100644 src/main/java/knightminer/inspirations/recipes/recipe/cauldron/package-info.java diff --git a/src/main/java/knightminer/inspirations/library/event/RegisterEvent.java b/src/main/java/knightminer/inspirations/library/event/RegisterEvent.java deleted file mode 100644 index dcde7b6d..00000000 --- a/src/main/java/knightminer/inspirations/library/event/RegisterEvent.java +++ /dev/null @@ -1,39 +0,0 @@ -package knightminer.inspirations.library.event; - -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.eventbus.api.Cancelable; -import net.minecraftforge.eventbus.api.Event; - -/** - * Base class for registering things to the Inspirations Registry - * @param Class being registered - */ -@Cancelable -public abstract class RegisterEvent extends Event { - private final T recipe; - - public RegisterEvent(T recipe) { - this.recipe = recipe; - } - - public T getRecipe() { - return recipe; - } - - /** - * Returns true on success, false if cancelled - */ - public boolean fire() { - return !MinecraftForge.EVENT_BUS.post(this); - } - - /** - * Class for registering cauldron recipes. May be many different cauldron recipe types - */ - public static class RegisterCauldronRecipe extends RegisterEvent { - public RegisterCauldronRecipe(ICauldronRecipe recipe) { - super(recipe); - } - } -} diff --git a/src/main/java/knightminer/inspirations/library/event/package-info.java b/src/main/java/knightminer/inspirations/library/event/package-info.java deleted file mode 100644 index 700f28bf..00000000 --- a/src/main/java/knightminer/inspirations/library/event/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -package knightminer.inspirations.library.event; - -import mcp.MethodsReturnNonnullByDefault; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/BrewingCauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/BrewingCauldronRecipe.java deleted file mode 100644 index 088d3301..00000000 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/BrewingCauldronRecipe.java +++ /dev/null @@ -1,94 +0,0 @@ -package knightminer.inspirations.library.recipe.cauldron; - -import com.google.common.collect.ImmutableList; -import knightminer.inspirations.common.Config; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.potion.Potion; -import net.minecraft.potion.Potions; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; - -import java.util.List; - -/** - * Cauldron recipe to transform a potion into another potion. Used primarily with vanilla potion recipes from the brewing registry. - */ -@Deprecated -public class BrewingCauldronRecipe implements ISimpleCauldronRecipe { - - private Ingredient reagent; - private CauldronState input; - private CauldronState output; - - /** - * @param input Input potion type - * @param reagent Ingredient for transformation - * @param output Resulting potion type - */ - public BrewingCauldronRecipe(Potion input, Ingredient reagent, Potion output) { - this.input = CauldronState.potion(input); - this.reagent = reagent; - this.output = CauldronState.potion(output); - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - // must have at least one level and be boiling. If 3 or more stack count must be bigger than 1 - return level > 0 && boiling - // if expensive brewing, level must be less than 3 or two inputs provided - && (!Config.expensiveCauldronBrewing() || level < 3 || stack.getCount() > 1) - && state.matches(input) && reagent.test(stack); - } - - @Override - public ItemStack transformInput(ItemStack stack, boolean boiling, int level, CauldronState state) { - stack.shrink(Config.expensiveCauldronBrewing() && level > 2 ? 2 : 1); - return stack; - } - - @Override - public CauldronState getState(ItemStack stack, boolean boiling, int level, CauldronState state) { - return output; - } - - @Override - public List getInput() { - return ImmutableList.copyOf(reagent.getMatchingStacks()); - } - - @Override - public int getInputLevel() { - return Config.expensiveCauldronBrewing() ? 2 : Config.getCauldronMax(); - } - - @Override - public Object getInputState() { - Potion potion = input.getPotion(); - return potion == Potions.WATER ? Fluids.WATER : potion; - } - - @Override - public Object getState() { - Potion potion = output.getPotion(); - return potion == Potions.WATER ? Fluids.WATER : potion; - } - - @Override - public boolean isBoiling() { - return true; - } - - @Override - public SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state) { - return SoundEvents.BLOCK_BREWING_STAND_BREW; - } - - @Override - public String toString() { - return String.format("BrewingCauldronRecipe: %s from %s", - output.getPotion().getRegistryName(), - input.getPotion().getRegistryName()); - } -} diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/DyeCauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/DyeCauldronRecipe.java deleted file mode 100644 index 2c794369..00000000 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/DyeCauldronRecipe.java +++ /dev/null @@ -1,52 +0,0 @@ -package knightminer.inspirations.library.recipe.cauldron; - -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemStack; -import slimeknights.mantle.recipe.match.RecipeMatch; - -/** - * Cauldron recipe to dye an item stack from colored cauldron water - */ -@Deprecated -public class DyeCauldronRecipe extends RecipeMatchCauldronRecipe { - - private DyeColor color; - - /** - * @param input Input recipe match entry - * @param color Color to test for in the cauldron - * @param result Resulting item stack - */ - public DyeCauldronRecipe(RecipeMatch input, DyeColor color, ItemStack result, int levels) { - super(input, result, null, levels); - this.color = color; - } - - public DyeCauldronRecipe(RecipeMatch input, DyeColor color, ItemStack result) { - this(input, color, result, 1); - } - - /** - * @param input Input item stack - * @param color Color to test for in the cauldron - * @param result Resulting item stack - */ - public DyeCauldronRecipe(ItemStack input, DyeColor color, ItemStack result) { - this(RecipeMatch.of(input), color, result); - } - - @Override - protected boolean matches(CauldronState state) { - return state.getColor() == color.colorValue; - } - - @Override - public Object getInputState() { - return color; - } - - @Override - public String toString() { - return String.format("DyeCauldronRecipe: %s dyed %s", getResult().toString(), color.getString()); - } -} diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/FillCauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/FillCauldronRecipe.java deleted file mode 100644 index 7536e987..00000000 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/FillCauldronRecipe.java +++ /dev/null @@ -1,106 +0,0 @@ -package knightminer.inspirations.library.recipe.cauldron; - -import knightminer.inspirations.common.Config; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; -import slimeknights.mantle.recipe.match.RecipeMatch; - -import javax.annotation.Nullable; -import java.util.Objects; - -/** - * Cauldron recipe to fill the cauldron from a fluid container - */ -@Deprecated -public class FillCauldronRecipe extends FluidCauldronRecipe { - private int amount; - - /** - * Full constructor - * @param input Input container - * @param fluid Fluid produced and required in the current cauldron - * @param amount Amount of fluid produced - * @param container Resulting container after filling the cauldron - * @param boiling If true, the cauldron must be placed above lava for this recipe - * @param sound Sound to play when filling - */ - public FillCauldronRecipe(RecipeMatch input, Fluid fluid, int amount, ItemStack container, @Nullable Boolean boiling, SoundEvent sound) { - super(input, fluid, container, boiling, 0, sound); - if (fluid == Fluids.EMPTY) { - throw new IllegalArgumentException("Cannot create fill recipe with empty fluid"); - } - this.amount = amount; - } - - /** - * Full constructor - * @param input Input container - * @param fluid Fluid produced and required in the current cauldron - * @param amount Amount of fluid produced - * @param container Resulting container after filling the cauldron - * @param sound Sound to play when filling - */ - public FillCauldronRecipe(RecipeMatch input, Fluid fluid, int amount, ItemStack container, SoundEvent sound) { - this(input, fluid, amount, container, null, sound); - } - - /** - * Constructor with default sound - * @param input Input container - * @param fluid Fluid produced and required in the current cauldron - * @param amount Amount of fluid produced - * @param container Resulting container after filling the cauldron - */ - public FillCauldronRecipe(RecipeMatch input, Fluid fluid, int amount, ItemStack container) { - this(input, fluid, amount, container, SoundEvents.ITEM_BOTTLE_EMPTY); - } - - /** - * Constructor with default sound and empty container - * @param input Input container - * @param fluid Fluid produced and required in the current cauldron - * @param amount Amount of fluid produced - */ - public FillCauldronRecipe(RecipeMatch input, Fluid fluid, int amount) { - this(input, fluid, amount, ItemStack.EMPTY); - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - if (level == Config.getCauldronMax() || (level > 0 && !state.matches(fluid)) - || (this.boiling != null && boiling != this.boiling)) { - return false; - } - - return matches(stack); - } - - @Override - public CauldronState getState(ItemStack stack, boolean boiling, int level, CauldronState state) { - return Objects.requireNonNull(fluid); - } - - @Override - public int getLevel(int level) { - return level + amount; - } - - @Override - public int getInputLevel() { - return 0; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } - - @Override - public String toString() { - assert fluid != null; - return String.format("FillCauldronRecipe: filling with %s", fluid.getFluid().getAttributes().getTranslationKey()); - } -} diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/FluidCauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/FluidCauldronRecipe.java deleted file mode 100644 index b8dfbfca..00000000 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/FluidCauldronRecipe.java +++ /dev/null @@ -1,98 +0,0 @@ -package knightminer.inspirations.library.recipe.cauldron; - -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; -import slimeknights.mantle.recipe.match.RecipeMatch; - -import javax.annotation.Nullable; - -/** - * Recipe to transform an item stack using a fluid - */ -@Deprecated -public class FluidCauldronRecipe extends RecipeMatchCauldronRecipe { - - @Nullable - protected CauldronState fluid; - - /** - * Full constructor - * @param input Input recipe match entry - * @param fluid Required fluid in the cauldron. If EMPTY, any "water" fluid is valid - * @param result Resulting item stack - * @param boiling If true, the cauldron must be above fire, if false it must not be above fire. Set to null to ignore fire - * @param levels Amount of levels consumed by the recipe, also determines how many levels are required to perform the recipe - * @param sound Sound to play when performing the recipe - */ - public FluidCauldronRecipe(RecipeMatch input, Fluid fluid, ItemStack result, @Nullable Boolean boiling, int levels, SoundEvent sound) { - super(input, result, boiling, levels, sound); - this.fluid = fluid == Fluids.EMPTY ? null : CauldronState.fluid(fluid); - } - - /** - * Constructor with default sound - * @param input Input recipe match entry - * @param fluid Required fluid in the cauldron. If EMPTY, any "water" fluid is valid - * @param result Resulting item stack - * @param boiling If true, the cauldron must be above fire, if false it must not be above fire. Set to null to ignore fire - * @param levels Amount of levels consumed by the recipe, also determines how many levels are required to perform the recipe - */ - public FluidCauldronRecipe(RecipeMatch input, Fluid fluid, ItemStack result, @Nullable Boolean boiling, int levels) { - this(input, fluid, result, boiling, levels, SoundEvents.ENTITY_FISHING_BOBBER_SPLASH); - } - - /** - * Constructor with default levels consumed of 1 - * @param input Input recipe match entry - * @param fluid Required fluid in the cauldron. If EMPTY, any "water" fluid is valid - * @param result Resulting item stack - * @param boiling If true, the cauldron must be above fire, if false it must not be above fire. Set to null to ignore fire - * @param sound Sound to play when performing the recipe - */ - public FluidCauldronRecipe(RecipeMatch input, Fluid fluid, ItemStack result, @Nullable Boolean boiling, SoundEvent sound) { - this(input, fluid, result, boiling, 1, sound); - } - - /** - * Constructor with default sound and default levels consumed - * @param input Input recipe match entry - * @param fluid Required fluid in the cauldron. If EMPTY, any "water" fluid is valid - * @param result Resulting item stack - * @param boiling If true, the cauldron must be above fire, if false it must not be above fire. Set to null to ignore fire - */ - public FluidCauldronRecipe(RecipeMatch input, Fluid fluid, ItemStack result, @Nullable Boolean boiling) { - this(input, fluid, result, boiling, SoundEvents.ENTITY_FISHING_BOBBER_SPLASH); - } - - /** - * Constructor with default sound, levels consumed, and defaulting input fluid to any water - * @param input Input recipe match entry - * @param result Resulting item stack - * @param boiling If true, the cauldron must be above fire, if false it must not be above fire. Set to null to ignore fire - */ - public FluidCauldronRecipe(RecipeMatch input, ItemStack result, @Nullable Boolean boiling) { - this(input, Fluids.EMPTY, result, boiling); - } - - @Override - protected boolean matches(CauldronState state) { - return fluid == null ? state.isWater() : fluid.getFluid() == state.getFluid(); - } - - @Override - public Object getInputState() { - return fluid == null ? Fluids.WATER : fluid.getFluid(); - } - - @Override - public String toString() { - return String.format( - "FluidCauldronRecipe: %s from %s", - getResult().toString(), - fluid == null ? "water" : fluid.getFluid().getAttributes().getTranslationKey() - ); - } -} diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/FluidTransformCauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/FluidTransformCauldronRecipe.java deleted file mode 100644 index 45de76d7..00000000 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/FluidTransformCauldronRecipe.java +++ /dev/null @@ -1,77 +0,0 @@ -package knightminer.inspirations.library.recipe.cauldron; - -import knightminer.inspirations.common.Config; -import net.minecraft.fluid.Fluid; -import net.minecraft.item.ItemStack; -import slimeknights.mantle.recipe.match.RecipeMatch; - -import javax.annotation.Nullable; - -/** - * Cauldron recipe to transform the fluid inside a cauldron into another fluid. Use primarily for soups, stews, and juices - */ -@Deprecated -public class FluidTransformCauldronRecipe extends FluidCauldronRecipe { - - private CauldronState result; - private int maxLevel; - - /** - * Constructor with default max level of 3 - * @param input Input item stack for transformation - * @param fluid Input fluid. Use EMPTY for any "water" - * @param result Resulting fluid - * @param boiling If true, cauldron must be above fire. If false, cauldron must not be above fire. Use null to ignore fire - */ - public FluidTransformCauldronRecipe(RecipeMatch input, Fluid fluid, Fluid result, @Nullable Boolean boiling) { - this(input, fluid, result, boiling, Config.getCauldronMax()); - } - - /** - * Full constructor - * @param input Input item stack for transformation - * @param fluid Input fluid. Use EMPTY for any "water" - * @param result Resulting fluid - * @param boiling If true, cauldron must be above fire. If false, cauldron must not be above fire. Use null to ignore fire - * @param maxLevel Maximum level at which this recipe works. Used for some recipes which cost more for more full cauldrons - */ - public FluidTransformCauldronRecipe(RecipeMatch input, Fluid fluid, Fluid result, @Nullable Boolean boiling, int maxLevel) { - super(input, fluid, ItemStack.EMPTY, boiling); - this.result = CauldronState.fluid(result); - this.maxLevel = maxLevel; - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - return level > 0 && level <= maxLevel && super.matches(stack, boiling, level, state); - } - - @Override - public int getLevel(int level) { - return level; - } - - @Override - public CauldronState getState(ItemStack stack, boolean boiling, int level, CauldronState state) { - return result; - } - - @Override - public Object getState() { - return result.getFluid(); - } - - @Override - public int getInputLevel() { - return maxLevel; - } - - @Override - public String toString() { - assert fluid != null; - return String.format( - "FluidTransformCauldronRecipe: %s from %s", - result.getFluid().getRegistryName(), - fluid == CauldronState.WATER ? "water" : fluid.getFluid().getRegistryName()); - } -} diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/ISimpleCauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/ISimpleCauldronRecipe.java deleted file mode 100644 index c301ffbe..00000000 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/ISimpleCauldronRecipe.java +++ /dev/null @@ -1,64 +0,0 @@ -package knightminer.inspirations.library.recipe.cauldron; - -import knightminer.inspirations.common.Config; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; - -import java.util.List; - -/** - * This is any cauldron recipe using items and fluids simple enough to be displayed in JEI - */ -@Deprecated -public interface ISimpleCauldronRecipe extends ICauldronRecipe { - /** - * Gets the inputs of the recipe for display in JEI - * @return Recipe inputs - */ - List getInput(); - - /** - * Gets the result of this recipe for display in JEI - * @return Recipe result - */ - default ItemStack getResult() { - return ItemStack.EMPTY; - } - - /** - * Gets whether this recipe requires the cauldron to be above fire - * @return True if the recipe requires fire - */ - default boolean isBoiling() { - return false; - } - - /** - * Gets the input state of this recipe for display in JEI. In order for it to be used, it must be either a Fluid, EnumDyeColor, or PotionType - * @return Input state as a Fluid, EnumDyeColor, or PotionType - */ - default Object getInputState() { - return Fluids.WATER; - } - - /** - * Gets the result state of this recipe for display in JEI. In order for it to be used, it must be either a Fluid, EnumDyeColor, or PotionType - * @return Result state as a Fluid, EnumDyeColor, or PotionType - */ - default Object getState() { - return getInputState(); - } - - /** - * Gets the display starting level for display in JEI. The result level will be determined using {@link #getLevel(int)} - * @return Input display level - */ - default int getInputLevel() { - return Config.getCauldronMax(); - } - - @Override - default ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - return getResult().copy(); - } -} diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/MixCauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/MixCauldronRecipe.java deleted file mode 100644 index cfe53030..00000000 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/MixCauldronRecipe.java +++ /dev/null @@ -1,87 +0,0 @@ -package knightminer.inspirations.library.recipe.cauldron; - -import com.google.common.collect.ImmutableList; -import knightminer.inspirations.common.Config; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidUtil; -import net.minecraftforge.fluids.capability.IFluidHandler; - -import java.util.List; - -/** - * Recipe to combine two fluids into an item output - */ -@Deprecated -public class MixCauldronRecipe implements ISimpleCauldronRecipe { - - private CauldronState input1, input2; - private ItemStack result; - - /** - * Combines two inputs into an item output. Input order does not matter, both can be either the container or in the cauldron - * @param result Item result - * @param input1 First fluid for either container or cauldron, will show in JEI as the cauldron contents - * @param input2 Second fluid for either container or cauldron, will show in JEI as a bucket - */ - public MixCauldronRecipe(Fluid input1, Fluid input2, ItemStack result) { - this.result = result; - this.input1 = CauldronState.fluid(input1); - this.input2 = CauldronState.fluid(input2); - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - // cauldron must be full of a fluid - if (level != Config.getCauldronMax() || state.getFluid() == Fluids.EMPTY) { - return false; - } - - // stack must be a fluid container - return FluidUtil.getFluidHandler(stack).map((fluidHandler) -> { - // fluid in stack must be a cauldron fluid - FluidStack fluidStack = fluidHandler.drain(1000, IFluidHandler.FluidAction.SIMULATE); - if (!CauldronState.fluidValid(fluidStack)) { - return false; - } - - // either input must be in the cauldron - Fluid fluid = fluidStack.getFluid(); - return input1.matches(state) && input2.getFluid() == fluid - || input2.matches(state) && input1.getFluid() == fluid; - }).orElse(false); - } - - @Override - public int getLevel(int level) { - return 0; - } - - /* JEI */ - @Override - public Fluid getInputState() { - return input1.getFluid(); - } - - @Override - public List getInput() { - return ImmutableList.of(FluidUtil.getFilledBucket(input2.getFluidStack())); - } - - @Override - public ItemStack getResult() { - return result; - } - - @Override - public String toString() { - return String.format( - "MixCauldronRecipe: %s from %s and %s", - getResult().toString(), - input1.getFluid().getRegistryName(), - input2.getFluid().getRegistryName() - ); - } -} diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/PotionCauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/PotionCauldronRecipe.java deleted file mode 100644 index b2e53776..00000000 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/PotionCauldronRecipe.java +++ /dev/null @@ -1,45 +0,0 @@ -package knightminer.inspirations.library.recipe.cauldron; - -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.Potions; -import slimeknights.mantle.recipe.match.RecipeMatch; - -import javax.annotation.Nullable; - -/** - * Recipe to transform an item stack using a fluid - */ -@Deprecated -public class PotionCauldronRecipe extends RecipeMatchCauldronRecipe { - - protected Potion potion; - - /** - * @param input Input recipe match entry - * @param potion Required potion in the cauldron - * @param result Resulting item stack - * @param levels Amount of levels consumed by the recipe, also determines how many levels are required to perform the recipe - * @param boiling If true, the cauldron must be above fire, if false it must not be above fire. Set to null to ignore fire - */ - public PotionCauldronRecipe(RecipeMatch input, Potion potion, ItemStack result, int levels, @Nullable Boolean boiling) { - super(input, result, boiling, levels); - this.potion = potion; - } - - @Override - protected boolean matches(CauldronState state) { - return state.getPotion() == potion; - } - - @Override - public Object getInputState() { - return potion == Potions.WATER ? Fluids.WATER : potion; - } - - @Override - public String toString() { - return String.format("FluidCauldronRecipe: %s from %s", getResult().toString(), potion.getRegistryName()); - } -} diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/RecipeMatchCauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/RecipeMatchCauldronRecipe.java deleted file mode 100644 index 73447584..00000000 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/RecipeMatchCauldronRecipe.java +++ /dev/null @@ -1,113 +0,0 @@ -package knightminer.inspirations.library.recipe.cauldron; - -import knightminer.inspirations.library.Util; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; -import slimeknights.mantle.recipe.match.RecipeMatch; - -import javax.annotation.Nullable; -import java.util.List; - -@Deprecated -public abstract class RecipeMatchCauldronRecipe implements ISimpleCauldronRecipe { - - private RecipeMatch input; - @Nullable - protected Boolean boiling; - private SoundEvent sound; - private ItemStack result; - private int levels; - - /** - * Base constructor - * @param input Input recipe match entry - * @param result Resulting item stack - * @param boiling If true, the cauldron must be above fire, if false it must not be above fire. Set to null to ignore fire - * @param levels Amount of levels consumed by the recipe, also determines how many levels are required to perform the recipe - * @param sound Sound to play when performing the recipe - */ - public RecipeMatchCauldronRecipe(RecipeMatch input, ItemStack result, @Nullable Boolean boiling, int levels, SoundEvent sound) { - this.input = input; - this.result = result; - this.levels = levels; - this.boiling = boiling; - this.sound = sound; - } - - /** - * Constructor which defaults sound - * @param input Input recipe match entry - * @param result Resulting item stack - * @param boiling If true, the cauldron must be above fire, if false it must not be above fire. Set to null to ignore fire - * @param levels Amount of levels consumed by the recipe, also determines how many levels are required to perform the recipe - */ - public RecipeMatchCauldronRecipe(RecipeMatch input, ItemStack result, @Nullable Boolean boiling, int levels) { - this(input, result, boiling, levels, SoundEvents.ENTITY_FISHING_BOBBER_SPLASH); - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - // if boiling is required, ensure it is set - if (level < levels || !matches(state) || (this.boiling != null && boiling != this.boiling)) { - return false; - } - - return matches(stack); - } - - /** - * Returns true if the state matches the given recipe - * @param state State to check - * @return True if the state matches - */ - protected abstract boolean matches(CauldronState state); - - /** - * Helper method to check if the recipe match matches the input stack - * @param stack stack to check - * @return true if it matches - */ - protected boolean matches(ItemStack stack) { - return this.input.matches(Util.createNonNullList(stack)).isPresent(); - } - - @SuppressWarnings("OptionalGetWithoutIsPresent") - @Override - public ItemStack transformInput(ItemStack stack, boolean boiling, int level, CauldronState state) { - NonNullList list = Util.createNonNullList(stack); - RecipeMatch.removeMatch(list, input.matches(list).get()); - return list.get(0); - } - - @Override - public List getInput() { - return input.getInputs(); - } - - @Override - public ItemStack getResult() { - return result; - } - - @Override - public int getLevel(int level) { - return level - levels; - } - - @Override - public int getInputLevel() { - return levels == 0 ? 1 : levels; - } - - @Override - public boolean isBoiling() { - return boiling == Boolean.TRUE; - } - - @Override - public SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state) { - return sound; - } -} diff --git a/src/main/java/knightminer/inspirations/library/recipe/cauldron/ICauldronRecipe.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/legacy/ICauldronRecipe.java similarity index 99% rename from src/main/java/knightminer/inspirations/library/recipe/cauldron/ICauldronRecipe.java rename to src/main/java/knightminer/inspirations/library/recipe/cauldron/legacy/ICauldronRecipe.java index 409cd018..76f15516 100644 --- a/src/main/java/knightminer/inspirations/library/recipe/cauldron/ICauldronRecipe.java +++ b/src/main/java/knightminer/inspirations/library/recipe/cauldron/legacy/ICauldronRecipe.java @@ -1,4 +1,4 @@ -package knightminer.inspirations.library.recipe.cauldron; +package knightminer.inspirations.library.recipe.cauldron.legacy; import net.minecraft.fluid.Fluid; import net.minecraft.fluid.Fluids; diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/package-info.java b/src/main/java/knightminer/inspirations/library/recipe/cauldron/legacy/package-info.java similarity index 71% rename from src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/package-info.java rename to src/main/java/knightminer/inspirations/library/recipe/cauldron/legacy/package-info.java index de180325..c28bd4ed 100644 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/package-info.java +++ b/src/main/java/knightminer/inspirations/library/recipe/cauldron/legacy/package-info.java @@ -1,6 +1,6 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -package knightminer.inspirations.recipes.recipe.cauldron.empty; +package knightminer.inspirations.library.recipe.cauldron.legacy; import mcp.MethodsReturnNonnullByDefault; diff --git a/src/main/java/knightminer/inspirations/recipes/dispenser/DispenseCauldronRecipe.java b/src/main/java/knightminer/inspirations/recipes/dispenser/DispenseCauldronRecipe.java index 110ff2e4..9fafec9a 100644 --- a/src/main/java/knightminer/inspirations/recipes/dispenser/DispenseCauldronRecipe.java +++ b/src/main/java/knightminer/inspirations/recipes/dispenser/DispenseCauldronRecipe.java @@ -2,8 +2,8 @@ import knightminer.inspirations.common.Config; import knightminer.inspirations.library.InspirationsTags; -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe.CauldronState; +import knightminer.inspirations.library.recipe.cauldron.legacy.ICauldronRecipe; +import knightminer.inspirations.library.recipe.cauldron.legacy.ICauldronRecipe.CauldronState; import knightminer.inspirations.recipes.block.EnhancedCauldronBlock; import knightminer.inspirations.recipes.tileentity.CauldronTileEntity; import net.minecraft.block.Block; diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/ArmorClearingCauldronRecipe.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/ArmorClearingCauldronRecipe.java deleted file mode 100644 index 3472eeba..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/ArmorClearingCauldronRecipe.java +++ /dev/null @@ -1,49 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron; - -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import net.minecraft.item.ArmorMaterial; -import net.minecraft.item.DyeableArmorItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -@Deprecated -public class ArmorClearingCauldronRecipe implements ICauldronRecipe { - - private final ArmorMaterial material; - - public ArmorClearingCauldronRecipe(ArmorMaterial material) { - this.material = material; - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - if (level == 0 || !state.isWater()) { - return false; - } - Item item = stack.getItem(); - if (!(item instanceof DyeableArmorItem)) { - return false; - } - - // only color leather, and ensure we are changing the color - DyeableArmorItem armor = (DyeableArmorItem)item; - return armor.getArmorMaterial() == material && armor.hasColor(stack); - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - stack = stack.copy(); - ((DyeableArmorItem)stack.getItem()).removeColor(stack); - return stack; - } - - @Override - public int getLevel(int level) { - return level - 1; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/ArmorDyeingCauldronRecipe.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/ArmorDyeingCauldronRecipe.java deleted file mode 100644 index 1d344164..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/ArmorDyeingCauldronRecipe.java +++ /dev/null @@ -1,49 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron; - -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import net.minecraft.item.ArmorMaterial; -import net.minecraft.item.DyeableArmorItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -@Deprecated -public class ArmorDyeingCauldronRecipe implements ICauldronRecipe { - - private final ArmorMaterial material; - - public ArmorDyeingCauldronRecipe(ArmorMaterial material) { - this.material = material; - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - if (level == 0 || state.getColor() == -1) { - return false; - } - Item item = stack.getItem(); - if (!(item instanceof DyeableArmorItem)) { - return false; - } - - // only color leather, and ensure we are changing the color - DyeableArmorItem armor = (DyeableArmorItem)item; - return armor.getArmorMaterial() == material && armor.getColor(stack) != state.getColor(); - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - stack = stack.copy(); - ((DyeableArmorItem)stack.getItem()).setColor(stack, state.getColor()); - return stack; - } - - @Override - public int getLevel(int level) { - return level - 1; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/BannerClearingCauldronRecipe.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/BannerClearingCauldronRecipe.java deleted file mode 100644 index 4b097766..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/BannerClearingCauldronRecipe.java +++ /dev/null @@ -1,34 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron; - -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import net.minecraft.item.BannerItem; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.BannerTileEntity; - -@Deprecated -public enum BannerClearingCauldronRecipe implements ICauldronRecipe { - INSTANCE; - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - return state.isWater() && level > 0 && stack.getItem() instanceof BannerItem && BannerTileEntity.getPatterns(stack) > 0; - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - ItemStack copy = stack.copy(); - copy.setCount(1); - BannerTileEntity.removeBannerData(copy); - return copy; - } - - @Override - public int getLevel(int level) { - return level - 1; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/DyeCauldronWater.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/DyeCauldronWater.java deleted file mode 100644 index d6ea9097..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/DyeCauldronWater.java +++ /dev/null @@ -1,73 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron; - -import knightminer.inspirations.library.InspirationsTags; -import knightminer.inspirations.library.Util; -import knightminer.inspirations.library.recipe.cauldron.ISimpleCauldronRecipe; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundEvent; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -@Deprecated -public class DyeCauldronWater implements ISimpleCauldronRecipe { - - private DyeColor color; - private Ingredient dye; - - public DyeCauldronWater(DyeColor color) { - this.color = color; - this.dye = Ingredient.fromTag(ItemTags.getCollection().getOrCreate( - new ResourceLocation("forge", "dyes/" + color.getString() - ))); - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - // special case water bottles - if (level == 0 || stack.getItem().isIn(InspirationsTags.Items.DYE_BOTTLES)) { - return false; - } - - // type must be water or dye - // input must not be the same color as the original dye - return (state.isWater() || state.getColor() > -1) - && dye.test(stack) && color.colorValue != state.getColor(); - } - - @Override - public List getInput() { - // we want to ignore the dyed water bottle as that has special behavior - return Arrays.stream(dye.getMatchingStacks()) - .filter(stack -> !stack.getItem().isIn(InspirationsTags.Items.DYE_BOTTLES)) - .collect(Collectors.toList()); - } - - @Override - public CauldronState getState(ItemStack stack, boolean boiling, int level, CauldronState state) { - int newColor = color.colorValue; - int color = state.getColor(); - if (color > -1) { - color = Util.combineColors(newColor, color, level); - } else { - color = newColor; - } - - return CauldronState.dye(color); - } - - @Override - public Object getState() { - return color; - } - - @Override - public SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state) { - return null; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/TippedArrowCauldronRecipe.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/TippedArrowCauldronRecipe.java deleted file mode 100644 index 2f5b5ff4..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/TippedArrowCauldronRecipe.java +++ /dev/null @@ -1,39 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron; - -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.potion.PotionUtils; -import net.minecraft.potion.Potions; - -@Deprecated -public enum TippedArrowCauldronRecipe implements ICauldronRecipe { - INSTANCE; - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - return state.getPotion() != Potions.EMPTY && stack.getItem() == Items.ARROW; - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - int size = Math.min(stack.getCount(), 8); - return PotionUtils.addPotionToItemStack(new ItemStack(Items.TIPPED_ARROW, size), state.getPotion()); - } - - @Override - public ItemStack transformInput(ItemStack stack, boolean boiling, int level, CauldronState state) { - stack.shrink(Math.min(stack.getCount(), 8)); - return stack; - } - - @Override - public int getLevel(int level) { - return level - 1; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/ContainerEmptyCauldron.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/ContainerEmptyCauldron.java deleted file mode 100644 index 08ce018a..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/ContainerEmptyCauldron.java +++ /dev/null @@ -1,51 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron.empty; - -import knightminer.inspirations.common.Config; -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.util.SoundEvent; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidUtil; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; - -@Deprecated -public enum ContainerEmptyCauldron implements ICauldronRecipe { - INSTANCE; - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, final CauldronState state) { - if (level != Config.getCauldronMax() || state.getFluid() == Fluids.EMPTY) { - return false; - } - - stack = stack.copy(); - stack.setCount(1); // stack size must be 1 or it fails - return FluidUtil.getFluidHandler(stack).map(handler -> handler.fill(new FluidStack(state.getFluid(), 1000), FluidAction.SIMULATE) == 1000).orElse(false); - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - stack = stack.copy(); - stack.setCount(1); - return FluidUtil.getFluidHandler(stack).map(handler -> { - handler.fill(state.getFluidStack(), FluidAction.EXECUTE); - return handler.getContainer(); - }).orElse(ItemStack.EMPTY); - } - - @Override - public int getLevel(int level) { - return 0; - } - - @Override - public SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state) { - return state.getFluid().getAttributes().getFillSound(); - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/DyedBottleEmptyCauldron.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/DyedBottleEmptyCauldron.java deleted file mode 100644 index 425063da..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/DyedBottleEmptyCauldron.java +++ /dev/null @@ -1,39 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron.empty; - -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import knightminer.inspirations.recipes.item.MixedDyedBottleItem; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; - -@Deprecated -public enum DyedBottleEmptyCauldron implements ICauldronRecipe { - INSTANCE; - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - return level != 0 && state.getColor() > -1 && stack.getItem() == Items.GLASS_BOTTLE; - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - return MixedDyedBottleItem.bottleFromDye(state.getColor()); - } - - @Override - public int getLevel(int level) { - return level - 1; - } - - @Override - public SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state) { - return SoundEvents.ITEM_BOTTLE_FILL; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} - diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/PotionEmptyCauldron.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/PotionEmptyCauldron.java deleted file mode 100644 index bca148d4..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/PotionEmptyCauldron.java +++ /dev/null @@ -1,50 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron.empty; - -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionUtils; -import net.minecraft.potion.Potions; -import net.minecraft.tags.ITag; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; - -@Deprecated -public class PotionEmptyCauldron implements ICauldronRecipe { - - private ITag bottle; - private Item potion; - - public PotionEmptyCauldron(Item potion, ITag bottle) { - this.bottle = bottle; - this.potion = potion; - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - if (level == 0) { - return false; - } - return state.getPotion() != Potions.EMPTY && stack.getItem().isIn(bottle); - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - return PotionUtils.addPotionToItemStack(new ItemStack(potion), state.getPotion()); - } - - @Override - public int getLevel(int level) { - return level - 1; - } - - @Override - public SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state) { - return SoundEvents.ITEM_BOTTLE_FILL; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/SpongeEmptyCauldron.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/SpongeEmptyCauldron.java deleted file mode 100644 index 9989f410..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/empty/SpongeEmptyCauldron.java +++ /dev/null @@ -1,38 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron.empty; - -import knightminer.inspirations.common.Config; -import knightminer.inspirations.library.recipe.cauldron.FluidCauldronRecipe; -import net.minecraft.block.Blocks; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potions; -import slimeknights.mantle.recipe.match.RecipeMatch; - -@Deprecated -public class SpongeEmptyCauldron extends FluidCauldronRecipe { - - public static final SpongeEmptyCauldron INSTANCE = new SpongeEmptyCauldron(); - - private SpongeEmptyCauldron() { - super(RecipeMatch.of(new ItemStack(Blocks.SPONGE)), - Fluids.EMPTY, - new ItemStack(Blocks.WET_SPONGE), - null, Config.canSpongeEmptyFullOnly() ? 3 : 1); - } - - @Override - protected boolean matches(CauldronState state) { - // matches water, dye, or potions - return state.isWater() || state.getColor() > -1 || state.getPotion() != Potions.EMPTY; - } - - @Override - public int getLevel(int level) { - return 0; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/DyedBottleFillCauldron.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/DyedBottleFillCauldron.java deleted file mode 100644 index cb9f7da9..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/DyedBottleFillCauldron.java +++ /dev/null @@ -1,67 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron.fill; - -import knightminer.inspirations.common.Config; -import knightminer.inspirations.library.InspirationsTags; -import knightminer.inspirations.library.Util; -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import knightminer.inspirations.recipes.item.MixedDyedBottleItem; -import net.minecraft.item.ItemStack; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; - -@Deprecated -public enum DyedBottleFillCauldron implements ICauldronRecipe { - INSTANCE; - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - if (level == Config.getCauldronMax()) { - return false; - } - - return (state.isWater() || state.getColor() > -1) - && stack.getItem().isIn(InspirationsTags.Items.DYE_BOTTLES); - } - - @Override - public CauldronState getState(ItemStack stack, boolean boiling, int level, CauldronState state) { - int newColor = MixedDyedBottleItem.dyeFromBottle(stack); - if (level == 0) { - return CauldronState.dye(newColor); - } - - int color = state.getColor(); - // if color is unchanged, use the old state - if (newColor == color) { - return state; - } - - // otherwise combine colors - if (color == -1) { - color = 0x888888; - } - - return CauldronState.dye(Util.combineColors(newColor, color, level)); - } - - @Override - public int getLevel(int level) { - return level + 1; - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - return stack.getItem().getContainerItem(stack); - } - - @Override - public SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state) { - return SoundEvents.ITEM_BOTTLE_EMPTY; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} - diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/FluidContainerFillCauldron.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/FluidContainerFillCauldron.java deleted file mode 100644 index cbee4df5..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/FluidContainerFillCauldron.java +++ /dev/null @@ -1,65 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron.fill; - -import knightminer.inspirations.common.Config; -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidUtil; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; - -@Deprecated -public enum FluidContainerFillCauldron implements ICauldronRecipe { - INSTANCE; - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - if (level == Config.getCauldronMax() || (level > 0 && state.getFluid() == Fluids.EMPTY)) { - return false; - } - - return FluidUtil.getFluidHandler(stack).map(handler -> { - FluidStack fluidStack = handler.drain(1000, FluidAction.SIMULATE); - return CauldronState.fluidValid(fluidStack) && (level == 0 || fluidStack.getFluid() == state.getFluid()); - }).orElse(false); - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - return FluidUtil.getFluidHandler(stack.copy()).map(handler -> { - handler.drain(1000, FluidAction.EXECUTE); - return handler.getContainer(); - }).orElse(ItemStack.EMPTY); - } - - @Override - public int getLevel(int level) { - return Config.getCauldronMax(); - } - - @Override - public CauldronState getState(ItemStack stack, boolean boiling, int level, CauldronState state) { - Fluid fluid = FluidUtil.getFluidHandler(stack).map(h -> h.drain(1000, FluidAction.SIMULATE).getFluid()).orElse(Fluids.EMPTY); - if (fluid == Fluids.EMPTY || fluid == state.getFluid()) { - return state; - } - - return CauldronState.fluid(fluid); - } - - @Override - public SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state) { - return FluidUtil.getFluidHandler(stack).map(h -> { - FluidStack fluid = h.drain(1000, FluidAction.SIMULATE); - return fluid.getFluid().getAttributes().getFillSound(fluid); - }).orElse(SoundEvents.ITEM_BUCKET_FILL); - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/PotionFillCauldron.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/PotionFillCauldron.java deleted file mode 100644 index 854d0f21..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/PotionFillCauldron.java +++ /dev/null @@ -1,68 +0,0 @@ -package knightminer.inspirations.recipes.recipe.cauldron.fill; - -import knightminer.inspirations.common.Config; -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionUtils; -import net.minecraft.potion.Potions; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; - -@Deprecated -public class PotionFillCauldron implements ICauldronRecipe { - - private ItemStack bottle; - private Item potion; - - public PotionFillCauldron(Item potion, ItemStack bottle) { - this.bottle = bottle; - this.potion = potion; - } - - @Override - public boolean matches(ItemStack stack, boolean boiling, int level, CauldronState state) { - return level < Config.getCauldronMax() && (level == 0 || state.getPotion() != Potions.EMPTY) - && stack.getItem() == potion; - } - - @Override - public ItemStack getResult(ItemStack stack, boolean boiling, int level, CauldronState state) { - return bottle.copy(); - } - - @Override - public int getLevel(int level) { - return level + 1; - } - - @Override - public CauldronState getState(ItemStack stack, boolean boiling, int level, CauldronState state) { - // if the level was 0, we need to add the potion state - Potion inputType = PotionUtils.getPotionFromItem(stack); - if (level == 0) { - return CauldronState.potion(inputType); - } - // if the types differ, it just turns black - if (state.getPotion() != inputType) { - return CauldronState.potion(Potions.THICK); - } - - return state; - } - - @Override - public SoundEvent getSound(ItemStack stack, boolean boiling, int level, CauldronState state) { - if (level > 0 && PotionUtils.getPotionFromItem(stack) != state.getPotion()) { - return SoundEvents.BLOCK_FIRE_EXTINGUISH; - } - - return SoundEvents.ITEM_BOTTLE_EMPTY; - } - - @Override - public ItemStack getContainer(ItemStack stack) { - return ItemStack.EMPTY; - } -} diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/package-info.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/package-info.java deleted file mode 100644 index 54a95061..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/fill/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -package knightminer.inspirations.recipes.recipe.cauldron.fill; - -import mcp.MethodsReturnNonnullByDefault; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/package-info.java b/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/package-info.java deleted file mode 100644 index c0774cb2..00000000 --- a/src/main/java/knightminer/inspirations/recipes/recipe/cauldron/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -package knightminer.inspirations.recipes.recipe.cauldron; - -import mcp.MethodsReturnNonnullByDefault; - -import javax.annotation.ParametersAreNonnullByDefault; diff --git a/src/main/java/knightminer/inspirations/recipes/tank/CauldronTank.java b/src/main/java/knightminer/inspirations/recipes/tank/CauldronTank.java index ce93648d..37b40c88 100644 --- a/src/main/java/knightminer/inspirations/recipes/tank/CauldronTank.java +++ b/src/main/java/knightminer/inspirations/recipes/tank/CauldronTank.java @@ -1,7 +1,7 @@ package knightminer.inspirations.recipes.tank; import knightminer.inspirations.common.Config; -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe.CauldronState; +import knightminer.inspirations.library.recipe.cauldron.legacy.ICauldronRecipe.CauldronState; import knightminer.inspirations.recipes.tileentity.CauldronTileEntity; import net.minecraft.fluid.Fluid; import net.minecraft.fluid.Fluids; diff --git a/src/main/java/knightminer/inspirations/recipes/tileentity/CauldronTileEntity.java b/src/main/java/knightminer/inspirations/recipes/tileentity/CauldronTileEntity.java index 645862be..6dde69f9 100644 --- a/src/main/java/knightminer/inspirations/recipes/tileentity/CauldronTileEntity.java +++ b/src/main/java/knightminer/inspirations/recipes/tileentity/CauldronTileEntity.java @@ -3,8 +3,8 @@ import knightminer.inspirations.Inspirations; import knightminer.inspirations.common.Config; import knightminer.inspirations.library.InspirationsTags; -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe; -import knightminer.inspirations.library.recipe.cauldron.ICauldronRecipe.CauldronState; +import knightminer.inspirations.library.recipe.cauldron.legacy.ICauldronRecipe; +import knightminer.inspirations.library.recipe.cauldron.legacy.ICauldronRecipe.CauldronState; import knightminer.inspirations.recipes.block.EnhancedCauldronBlock; import knightminer.inspirations.recipes.block.EnhancedCauldronBlock.CauldronContents; import knightminer.inspirations.recipes.tank.CauldronTank;