aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2023-09-01 17:37:03 +0800
committershedaniel <daniel@shedaniel.me>2023-09-01 17:37:03 +0800
commit5296049d81a7d201eeb1f535b4223bd0ba21febb (patch)
treedb95b66817c05136ec27f9112103555822740318
parent8a68acf83e7c45b381893d1abeb35040c245ace4 (diff)
downloadRoughlyEnoughItems-5296049d81a7d201eeb1f535b4223bd0ba21febb.tar.gz
RoughlyEnoughItems-5296049d81a7d201eeb1f535b4223bd0ba21febb.tar.bz2
RoughlyEnoughItems-5296049d81a7d201eeb1f535b4223bd0ba21febb.zip
Update to 23w35a
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayRegistry.java13
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/registry/RecipeManagerContext.java11
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/recipebook/DefaultRecipeBookHandler.java5
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java6
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCampfireDisplay.java7
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java32
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultStoneCuttingDisplay.java7
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultBlastingDisplay.java3
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultCookingDisplay.java17
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmeltingDisplay.java3
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmokingDisplay.java3
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/CraftingRecipeSizeProvider.java6
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java32
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java9
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomShapedDisplay.java9
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomShapelessDisplay.java9
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapedDisplay.java11
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapelessDisplay.java7
-rw-r--r--gradle.properties8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/changelog/ChangelogLoader.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/registry/RecipeManagerContextImpl.java8
22 files changed, 119 insertions, 94 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayRegistry.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayRegistry.java
index fd34e4e84..5a3fb9d30 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayRegistry.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayRegistry.java
@@ -35,6 +35,7 @@ import me.shedaniel.rei.api.common.registry.RecipeManagerContext;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.world.item.crafting.Recipe;
+import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.RecipeType;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -219,7 +220,7 @@ public interface DisplayRegistry extends RecipeManagerContext<REIClientPlugin> {
* @param <T> the type of object
* @param <D> the type of display
*/
- default <T extends Recipe<?>, D extends Display> void registerRecipeFiller(Class<T> typeClass, RecipeType<? super T> recipeType, Function<? extends T, @Nullable D> filler) {
+ default <T extends Recipe<?>, D extends Display> void registerRecipeFiller(Class<T> typeClass, RecipeType<? super T> recipeType, Function<? extends RecipeHolder<T>, @Nullable D> filler) {
registerRecipeFiller(typeClass, type -> Objects.equals(recipeType, type), filler);
}
@@ -234,7 +235,7 @@ public interface DisplayRegistry extends RecipeManagerContext<REIClientPlugin> {
* @param <T> the type of object
* @param <D> the type of display
*/
- default <T extends Recipe<?>, D extends Display> void registerRecipeFiller(Class<T> typeClass, Predicate<RecipeType<? super T>> recipeType, Function<? extends T, @Nullable D> filler) {
+ default <T extends Recipe<?>, D extends Display> void registerRecipeFiller(Class<T> typeClass, Predicate<RecipeType<? super T>> recipeType, Function<? extends RecipeHolder<T>, @Nullable D> filler) {
registerRecipeFiller(typeClass, recipeType, Predicates.alwaysTrue(), filler);
}
@@ -249,8 +250,12 @@ public interface DisplayRegistry extends RecipeManagerContext<REIClientPlugin> {
* @param <T> the type of object
* @param <D> the type of display
*/
- default <T extends Recipe<?>, D extends Display> void registerRecipeFiller(Class<T> typeClass, Predicate<RecipeType<? super T>> recipeType, Predicate<? extends T> predicate, Function<? extends T, @Nullable D> filler) {
- registerFiller(typeClass, recipe -> recipeType.test((RecipeType<? super T>) recipe.getType()) && ((Predicate<T>) predicate).test(recipe), filler);
+ default <T extends Recipe<?>, D extends Display> void registerRecipeFiller(Class<T> typeClass, Predicate<RecipeType<? super T>> recipeType, Predicate<? extends RecipeHolder<T>> predicate, Function<? extends RecipeHolder<T>, @Nullable D> filler) {
+ registerFiller(RecipeHolder.class, recipe -> {
+ return typeClass.isInstance(recipe.value())
+ && recipeType.test((RecipeType<? super T>) recipe.value().getType())
+ && ((Predicate<RecipeHolder<T>>) predicate).test(recipe);
+ }, filler);
}
/**
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/registry/RecipeManagerContext.java b/api/src/main/java/me/shedaniel/rei/api/common/registry/RecipeManagerContext.java
index f37e69473..878db7b98 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/registry/RecipeManagerContext.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/registry/RecipeManagerContext.java
@@ -28,8 +28,9 @@ import me.shedaniel.rei.api.common.plugins.REIPlugin;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.resources.ResourceLocation;
-import net.minecraft.world.item.crafting.Recipe;
+import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.RecipeManager;
+import org.jetbrains.annotations.Nullable;
import java.util.List;
@@ -44,7 +45,7 @@ public interface RecipeManagerContext<P extends REIPlugin<?>> extends Reloadable
/**
* @return a list of sorted recipes
*/
- List<Recipe<?>> getAllSortedRecipes();
+ List<RecipeHolder<?>> getAllSortedRecipes();
/**
* Returns the vanilla recipe manager
@@ -53,14 +54,16 @@ public interface RecipeManagerContext<P extends REIPlugin<?>> extends Reloadable
*/
RecipeManager getRecipeManager();
- default Recipe<?> byId(CompoundTag tag, String key) {
+ @Nullable
+ default RecipeHolder<?> byId(CompoundTag tag, String key) {
if (tag.contains(key, Tag.TAG_STRING)) {
return getRecipeManager().byKey(new ResourceLocation(tag.getString(key))).orElse(null);
}
return null;
}
- default Recipe<?> byId(ResourceLocation location) {
+ @Nullable
+ default RecipeHolder<?> byId(ResourceLocation location) {
return getRecipeManager().byKey(location).orElse(null);
}
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/recipebook/DefaultRecipeBookHandler.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/recipebook/DefaultRecipeBookHandler.java
index d475a4b28..05a877f75 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/recipebook/DefaultRecipeBookHandler.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/recipebook/DefaultRecipeBookHandler.java
@@ -37,6 +37,7 @@ import net.minecraft.world.inventory.CraftingMenu;
import net.minecraft.world.inventory.InventoryMenu;
import net.minecraft.world.inventory.RecipeBookMenu;
import net.minecraft.world.item.crafting.Recipe;
+import net.minecraft.world.item.crafting.RecipeHolder;
@Environment(EnvType.CLIENT)
public class DefaultRecipeBookHandler implements TransferHandler {
@@ -61,7 +62,7 @@ public class DefaultRecipeBookHandler implements TransferHandler {
}
if (h == -1 || w == -1)
return Result.createNotApplicable();
- Recipe<?> recipe = craftingDisplay.getOptionalRecipe().get();
+ RecipeHolder<?> recipe = craftingDisplay.getOptionalRecipe().get();
if (craftingDisplay.getHeight() > h || craftingDisplay.getWidth() > w)
return Result.createFailed(Component.translatable("error.rei.transfer.too_small", h, w));
if (!context.getMinecraft().player.getRecipeBook().contains(recipe))
@@ -76,7 +77,7 @@ public class DefaultRecipeBookHandler implements TransferHandler {
}
} else if (display instanceof DefaultCookingDisplay defaultDisplay) {
if (defaultDisplay.getOptionalRecipe().isPresent()) {
- Recipe<?> recipe = (defaultDisplay).getOptionalRecipe().get();
+ RecipeHolder<?> recipe = (defaultDisplay).getOptionalRecipe().get();
if (!context.getMinecraft().player.getRecipeBook().contains(recipe))
return Result.createNotApplicable();
if (!context.isActuallyCrafting())
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
index 38c9b1696..f96bf9011 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
@@ -265,8 +265,8 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
registry.registerRecipeFiller(BlastingRecipe.class, RecipeType.BLASTING, DefaultBlastingDisplay::new);
registry.registerRecipeFiller(CampfireCookingRecipe.class, RecipeType.CAMPFIRE_COOKING, DefaultCampfireDisplay::new);
registry.registerRecipeFiller(StonecutterRecipe.class, RecipeType.STONECUTTING, DefaultStoneCuttingDisplay::new);
- registry.registerRecipeFiller(SmithingTransformRecipe.class, RecipeType.SMITHING, DefaultSmithingDisplay::new);
- registry.registerRecipeFiller(SmithingTrimRecipe.class, RecipeType.SMITHING, DefaultSmithingDisplay::new);
+ registry.registerRecipeFiller(SmithingTransformRecipe.class, RecipeType.SMITHING, DefaultSmithingDisplay::ofTransforming);
+ registry.registerRecipeFiller(SmithingTrimRecipe.class, RecipeType.SMITHING, DefaultSmithingDisplay::ofTrimming);
registry.registerFiller(AnvilRecipe.class, DefaultAnvilDisplay::new);
registry.registerFiller(BrewingRecipe.class, DefaultBrewingDisplay::new);
registry.registerFiller(TagKey.class, tagKey -> {
@@ -369,7 +369,7 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
}
protected void registerForgePotions(DisplayRegistry registry, BuiltinClientPlugin clientPlugin) {
-
+
}
@Override
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCampfireDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCampfireDisplay.java
index 3119c8f85..c5352b3d2 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCampfireDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCampfireDisplay.java
@@ -31,6 +31,7 @@ import me.shedaniel.rei.plugin.common.BuiltinPlugin;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.CampfireCookingRecipe;
+import net.minecraft.world.item.crafting.RecipeHolder;
import java.util.Collections;
import java.util.List;
@@ -39,9 +40,9 @@ import java.util.Optional;
public class DefaultCampfireDisplay extends BasicDisplay {
private double cookTime;
- public DefaultCampfireDisplay(CampfireCookingRecipe recipe) {
- this(EntryIngredients.ofIngredients(recipe.getIngredients()), Collections.singletonList(EntryIngredients.of(recipe.getResultItem(BasicDisplay.registryAccess()))),
- Optional.ofNullable(recipe).map(CampfireCookingRecipe::getId), recipe.getCookingTime());
+ public DefaultCampfireDisplay(RecipeHolder<CampfireCookingRecipe> recipe) {
+ this(EntryIngredients.ofIngredients(recipe.value().getIngredients()), Collections.singletonList(EntryIngredients.of(recipe.value().getResultItem(BasicDisplay.registryAccess()))),
+ Optional.ofNullable(recipe.id()), recipe.value().getCookingTime());
}
public DefaultCampfireDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs, Optional<ResourceLocation> location, CompoundTag tag) {
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java
index 7a4b445f8..961946780 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java
@@ -29,35 +29,39 @@ import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.util.EntryIngredients;
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.SmithingRecipe;
import net.minecraft.world.item.crafting.SmithingTransformRecipe;
import net.minecraft.world.item.crafting.SmithingTrimRecipe;
import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Optional;
public class DefaultSmithingDisplay extends BasicDisplay {
@ApiStatus.Experimental
- public DefaultSmithingDisplay(SmithingTransformRecipe recipe) {
- this(
- recipe,
+ public static DefaultSmithingDisplay ofTransforming(RecipeHolder<SmithingTransformRecipe> recipe) {
+ return new DefaultSmithingDisplay(
+ recipe.value(),
+ recipe.id(),
List.of(
- EntryIngredients.ofIngredient(recipe.template),
- EntryIngredients.ofIngredient(recipe.base),
- EntryIngredients.ofIngredient(recipe.addition)
+ EntryIngredients.ofIngredient(recipe.value().template),
+ EntryIngredients.ofIngredient(recipe.value().base),
+ EntryIngredients.ofIngredient(recipe.value().addition)
)
);
}
@ApiStatus.Experimental
- public DefaultSmithingDisplay(SmithingTrimRecipe recipe) {
- this(
- recipe,
+ public static DefaultSmithingDisplay ofTrimming(RecipeHolder<SmithingTrimRecipe> recipe) {
+ return new DefaultSmithingDisplay(
+ recipe.value(),
+ recipe.id(),
List.of(
- EntryIngredients.ofIngredient(recipe.template),
- EntryIngredients.ofIngredient(recipe.base),
- EntryIngredients.ofIngredient(recipe.addition)
+ EntryIngredients.ofIngredient(recipe.value().template),
+ EntryIngredients.ofIngredient(recipe.value().base),
+ EntryIngredients.ofIngredient(recipe.value().addition)
)
);
}
@@ -101,11 +105,11 @@ public class DefaultSmithingDisplay extends BasicDisplay {
// );
// }
- public DefaultSmithingDisplay(SmithingRecipe recipe, List<EntryIngredient> inputs) {
+ public DefaultSmithingDisplay(SmithingRecipe recipe, @Nullable ResourceLocation id, List<EntryIngredient> inputs) {
this(
inputs,
List.of(EntryIngredients.of(recipe.getResultItem(BasicDisplay.registryAccess()))),
- Optional.ofNullable(recipe.getId())
+ Optional.ofNullable(id)
);
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultStoneCuttingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultStoneCuttingDisplay.java
index 9359d6d0e..dd5ed55d2 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultStoneCuttingDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultStoneCuttingDisplay.java
@@ -29,6 +29,7 @@ import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.util.EntryIngredients;
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.StonecutterRecipe;
import java.util.Collections;
@@ -36,9 +37,9 @@ import java.util.List;
import java.util.Optional;
public class DefaultStoneCuttingDisplay extends BasicDisplay {
- public DefaultStoneCuttingDisplay(StonecutterRecipe recipe) {
- this(EntryIngredients.ofIngredients(recipe.getIngredients()), Collections.singletonList(EntryIngredients.of(recipe.getResultItem(BasicDisplay.registryAccess()))),
- Optional.ofNullable(recipe.getId()));
+ public DefaultStoneCuttingDisplay(RecipeHolder<StonecutterRecipe> recipe) {
+ this(EntryIngredients.ofIngredients(recipe.value().getIngredients()), Collections.singletonList(EntryIngredients.of(recipe.value().getResultItem(BasicDisplay.registryAccess()))),
+ Optional.ofNullable(recipe.id()));
}
public DefaultStoneCuttingDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs, Optional<ResourceLocation> location) {
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultBlastingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultBlastingDisplay.java
index 059511111..5022bbb35 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultBlastingDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultBlastingDisplay.java
@@ -28,11 +28,12 @@ import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.crafting.BlastingRecipe;
+import net.minecraft.world.item.crafting.RecipeHolder;
import java.util.List;
public class DefaultBlastingDisplay extends DefaultCookingDisplay {
- public DefaultBlastingDisplay(BlastingRecipe recipe) {
+ public DefaultBlastingDisplay(RecipeHolder<BlastingRecipe> recipe) {
super(recipe);
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultCookingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultCookingDisplay.java
index a69f49a61..7366a91f0 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultCookingDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultCookingDisplay.java
@@ -30,21 +30,22 @@ import me.shedaniel.rei.api.common.registry.RecipeManagerContext;
import me.shedaniel.rei.api.common.util.EntryIngredients;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.crafting.AbstractCookingRecipe;
-import net.minecraft.world.item.crafting.Recipe;
+import net.minecraft.world.item.crafting.RecipeHolder;
import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.Nullable;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
public abstract class DefaultCookingDisplay extends BasicDisplay implements SimpleGridMenuDisplay {
- private Recipe<?> recipe;
+ private RecipeHolder<?> recipe;
private float xp;
private double cookTime;
- public DefaultCookingDisplay(AbstractCookingRecipe recipe) {
- this(EntryIngredients.ofIngredients(recipe.getIngredients()), Collections.singletonList(EntryIngredients.of(recipe.getResultItem(BasicDisplay.registryAccess()))),
- recipe, recipe.getExperience(), recipe.getCookingTime());
+ public DefaultCookingDisplay(RecipeHolder<? extends AbstractCookingRecipe> recipe) {
+ this(EntryIngredients.ofIngredients(recipe.value().getIngredients()), Collections.singletonList(EntryIngredients.of(recipe.value().getResultItem(BasicDisplay.registryAccess()))),
+ recipe, recipe.value().getExperience(), recipe.value().getCookingTime());
}
public DefaultCookingDisplay(List<EntryIngredient> input, List<EntryIngredient> output, CompoundTag tag) {
@@ -52,8 +53,8 @@ public abstract class DefaultCookingDisplay extends BasicDisplay implements Simp
tag.getFloat("xp"), tag.getDouble("cookTime"));
}
- public DefaultCookingDisplay(List<EntryIngredient> input, List<EntryIngredient> output, Recipe<?> recipe, float xp, double cookTime) {
- super(input, output, Optional.ofNullable(recipe).map(Recipe::getId));
+ public DefaultCookingDisplay(List<EntryIngredient> input, List<EntryIngredient> output, @Nullable RecipeHolder<?> recipe, float xp, double cookTime) {
+ super(input, output, Optional.ofNullable(recipe).map(RecipeHolder::id));
this.recipe = recipe;
this.xp = xp;
this.cookTime = cookTime;
@@ -68,7 +69,7 @@ public abstract class DefaultCookingDisplay extends BasicDisplay implements Simp
}
@ApiStatus.Internal
- public Optional<Recipe<?>> getOptionalRecipe() {
+ public Optional<RecipeHolder<?>> getOptionalRecipe() {
return Optional.ofNullable(recipe);
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmeltingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmeltingDisplay.java
index ff8ba1387..f89fbad75 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmeltingDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmeltingDisplay.java
@@ -27,12 +27,13 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
import net.minecraft.nbt.CompoundTag;
+import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.SmeltingRecipe;
import java.util.List;
public class DefaultSmeltingDisplay extends DefaultCookingDisplay {
- public DefaultSmeltingDisplay(SmeltingRecipe recipe) {
+ public DefaultSmeltingDisplay(RecipeHolder<SmeltingRecipe> recipe) {
super(recipe);
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmokingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmokingDisplay.java
index c769eb3e4..e77ec3465 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmokingDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmokingDisplay.java
@@ -27,12 +27,13 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
import net.minecraft.nbt.CompoundTag;
+import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.item.crafting.SmokingRecipe;
import java.util.List;
public class DefaultSmokingDisplay extends DefaultCookingDisplay {
- public DefaultSmokingDisplay(SmokingRecipe recipe) {
+ public DefaultSmokingDisplay(RecipeHolder<SmokingRecipe> recipe) {
super(recipe);
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/CraftingRecipeSizeProvider.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/CraftingRecipeSizeProvider.java
index 79ba2f856..4fb13af7c 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/CraftingRecipeSizeProvider.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/CraftingRecipeSizeProvider.java
@@ -24,6 +24,7 @@
package me.shedaniel.rei.plugin.common.displays.crafting;
import net.minecraft.world.item.crafting.Recipe;
+import net.minecraft.world.item.crafting.RecipeHolder;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -73,4 +74,9 @@ public interface CraftingRecipeSizeProvider<R extends Recipe<?>> {
@Nullable
Size getSize(R recipe);
+
+ @Nullable
+ default Size getSize(RecipeHolder<R> recipeHolder) {
+ return getSize(recipeHolder.value());
+ }
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java
index 03243114a..543f487ab 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java
@@ -43,24 +43,17 @@ import net.minecraft.core.NonNullList;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.item.crafting.Ingredient;
-import net.minecraft.world.item.crafting.Recipe;
-import net.minecraft.world.item.crafting.ShapedRecipe;
-import net.minecraft.world.item.crafting.ShapelessRecipe;
+import net.minecraft.world.item.crafting.*;
import org.jetbrains.annotations.Nullable;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
public abstract class DefaultCraftingDisplay<C extends Recipe<?>> extends BasicDisplay implements SimpleGridMenuDisplay {
- protected Optional<C> recipe;
+ protected Optional<RecipeHolder<C>> recipe;
- public DefaultCraftingDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs, Optional<C> recipe) {
- this(inputs, outputs, recipe.map(Recipe::getId), recipe);
- }
-
- public DefaultCraftingDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs, Optional<ResourceLocation> location, Optional<C> recipe) {
- super(inputs, outputs, location);
+ public DefaultCraftingDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs, Optional<RecipeHolder<C>> recipe) {
+ super(inputs, outputs, recipe.map(RecipeHolder::id));
this.recipe = recipe;
}
@@ -89,24 +82,25 @@ public abstract class DefaultCraftingDisplay<C extends Recipe<?>> extends BasicD
}
@Nullable
- public static DefaultCraftingDisplay<?> of(Recipe<?> recipe) {
+ public static DefaultCraftingDisplay<?> of(RecipeHolder<? extends Recipe<?>> holder) {
+ Recipe<?> recipe = holder.value();
if (recipe instanceof ShapelessRecipe) {
- return new DefaultShapelessDisplay((ShapelessRecipe) recipe);
+ return new DefaultShapelessDisplay((RecipeHolder<ShapelessRecipe>) holder);
} else if (recipe instanceof ShapedRecipe) {
- return new DefaultShapedDisplay((ShapedRecipe) recipe);
+ return new DefaultShapedDisplay((RecipeHolder<ShapedRecipe>) holder);
} else if (!recipe.isSpecial()) {
NonNullList<Ingredient> ingredients = recipe.getIngredients();
for (CraftingRecipeSizeProvider<?> pair : SIZE_PROVIDER) {
- CraftingRecipeSizeProvider.Size size = ((CraftingRecipeSizeProvider<Recipe<?>>) pair).getSize(recipe);
+ CraftingRecipeSizeProvider.Size size = ((CraftingRecipeSizeProvider<Recipe<?>>) pair).getSize((RecipeHolder<Recipe<?>>) holder);
if (size != null) {
- return new DefaultCustomShapedDisplay(recipe, EntryIngredients.ofIngredients(recipe.getIngredients()),
+ return new DefaultCustomShapedDisplay(holder, EntryIngredients.ofIngredients(recipe.getIngredients()),
Collections.singletonList(EntryIngredients.of(recipe.getResultItem(BasicDisplay.registryAccess()))),
size.getWidth(), size.getHeight());
}
}
- return new DefaultCustomDisplay(recipe, EntryIngredients.ofIngredients(recipe.getIngredients()),
+ return new DefaultCustomDisplay(holder, EntryIngredients.ofIngredients(recipe.getIngredients()),
Collections.singletonList(EntryIngredients.of(recipe.getResultItem(BasicDisplay.registryAccess()))));
}
@@ -118,13 +112,13 @@ public abstract class DefaultCraftingDisplay<C extends Recipe<?>> extends BasicD
return BuiltinPlugin.CRAFTING;
}
- public Optional<C> getOptionalRecipe() {
+ public Optional<RecipeHolder<C>> getOptionalRecipe() {
return recipe;
}
@Override
public Optional<ResourceLocation> getDisplayLocation() {
- return getOptionalRecipe().map(Recipe::getId);
+ return getOptionalRecipe().map(RecipeHolder::id);
}
public <T extends AbstractContainerMenu> List<List<ItemStack>> getOrganisedInputEntries(SimpleGridMenuInfo<T, DefaultCraftingDisplay<?>> menuInfo, T container) {
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java
index 8907a5c04..07e374cd9 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java
@@ -27,6 +27,7 @@ import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.registry.RecipeManagerContext;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.cra