diff options
Diffstat (limited to 'default-plugin/src/main/java/me/shedaniel/rei')
20 files changed, 102 insertions, 84 deletions
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 ff2b22547..5fc2affee 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 @@ -38,6 +38,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; import java.util.Optional; @@ -71,7 +72,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)) @@ -86,7 +87,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 1ddc6d6eb..2764ca379 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 @@ -309,8 +309,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 -> { diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultInformationCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultInformationCategory.java index 38de0e376..d9c6c7c35 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultInformationCategory.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultInformationCategory.java @@ -161,9 +161,9 @@ public class DefaultInformationCategory implements DisplayCategory<DefaultInform } @Override - public boolean mouseScrolled(double mouseX, double mouseY, double amount) { - if (containsMouse(mouseX, mouseY)) { - scrolling.offset(ClothConfigInitializer.getScrollStep() * -amount, true); + public boolean mouseScrolled(double mouseX, double mouseY, double amountX, double amountY) { + if (containsMouse(mouseX, mouseY) && amountY != 0) { + scrolling.offset(ClothConfigInitializer.getScrollStep() * -amountY, true); return true; } return false; diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconBaseCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconBaseCategory.java index 0c068776d..78b683e79 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconBaseCategory.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconBaseCategory.java @@ -122,9 +122,9 @@ public class DefaultBeaconBaseCategory implements DisplayCategory<DefaultBeaconB } @Override - public boolean mouseScrolled(double double_1, double double_2, double double_3) { - if (containsMouse(double_1, double_2)) { - scrolling.offset(ClothConfigInitializer.getScrollStep() * -double_3, true); + public boolean mouseScrolled(double double_1, double double_2, double amountX, double amountY) { + if (containsMouse(double_1, double_2) && amountY != 0) { + scrolling.offset(ClothConfigInitializer.getScrollStep() * -amountY, true); return true; } return false; diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconPaymentCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconPaymentCategory.java index c70d6e3bc..2172e3046 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconPaymentCategory.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconPaymentCategory.java @@ -122,9 +122,9 @@ public class DefaultBeaconPaymentCategory implements DisplayCategory<DefaultBeac } @Override - public boolean mouseScrolled(double double_1, double double_2, double double_3) { - if (containsMouse(double_1, double_2)) { - scrolling.offset(ClothConfigInitializer.getScrollStep() * -double_3, true); + public boolean mouseScrolled(double double_1, double double_2, double amountX, double amountY) { + if (containsMouse(double_1, double_2) && amountY != 0) { + scrolling.offset(ClothConfigInitializer.getScrollStep() * -amountY, true); return true; } return false; diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/ReferenceTagNodeWidget.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/ReferenceTagNodeWidget.java index 128300f11..04ddb52bf 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/ReferenceTagNodeWidget.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/ReferenceTagNodeWidget.java @@ -71,7 +71,9 @@ public class ReferenceTagNodeWidget<S, T> extends TagNodeWidget<S, T> { public void render(GuiGraphics graphics, int mouseX, int mouseY, float delta) { if (this.overflowBounds.intersects(MatrixUtils.transform(graphics.pose().last().pose(), getBounds()))) { RenderSystem.setShader(GameRenderer::getPositionTexShader); - graphics.blit(new ResourceLocation("textures/gui/advancements/widgets.png"), bounds.x, bounds.y, 1, 128 + 27, 24, 24); + graphics.innerBlit(new ResourceLocation("textures/gui/sprites/advancements/task_frame_unobtained.png"), + bounds.x - 1, bounds.x - 1 + 26, bounds.y - 1, bounds.y - 1 + 26, 0, + 0, 1, 0, 1); this.slot.getBounds().setLocation(bounds.getCenterX() - this.slot.getBounds().getWidth() / 2, bounds.y + (bounds.height - this.slot.getBounds().getHeight()) / 2 + 1); this.slot.render(graphics, mouseX, mouseY, delta); if (this.containsMouse(mouseX, mouseY)) { 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 a6bd71996..57fa27cca 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 @@ -44,24 +44,17 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Player; 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; } @@ -90,24 +83,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())))); } @@ -119,13 +113,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.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeHolder; i |
