aboutsummaryrefslogtreecommitdiff
path: root/default-plugin
diff options
context:
space:
mode:
Diffstat (limited to 'default-plugin')
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/InventoryCraftingTransferHandler.java6
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/recipebook/DefaultRecipeBookHandler.java44
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/BuiltinClientPlugin.java8
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java197
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultBrewingCategory.java5
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCampfireCategory.java17
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultInformationCategory.java20
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java11
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconBaseCategory.java2
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/beacon/DefaultBeaconPaymentCategory.java2
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/cooking/DefaultCookingCategory.java25
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/DefaultCraftingCategory.java14
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/ArmorDyeRecipeFiller.java15
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/BannerDuplicateRecipeFiller.java5
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/BookCloningRecipeFiller.java5
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/CraftingRecipeFiller.java60
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/FireworkRocketRecipeFiller.java15
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/MapCloningRecipeFiller.java6
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/MapExtendingRecipeFiller.java6
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/ShieldDecorationRecipeFiller.java9
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/ShulkerBoxColoringFiller.java61
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/SuspiciousStewRecipeFiller.java64
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/crafting/filler/TippedArrowRecipeFiller.java2
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/tag/ReferenceTagNodeWidget.java13
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/displays/ClientsidedCookingDisplay.java161
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/displays/ClientsidedCraftingDisplay.java181
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/displays/ClientsidedRecipeBookDisplay.java32
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/exclusionzones/DefaultPotionEffectExclusionZones.java8
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/exclusionzones/DefaultRecipeBookExclusionZones.java8
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/TimeFavoriteEntry.java3
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/WeatherFavoriteEntry.java3
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/BuiltinPlugin.java16
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java112
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/SmithingDisplay.java51
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/CampfireDisplay.java32
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCampfireDisplay.java48
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCompostingDisplay.java41
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultFuelDisplay.java35
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultInformationDisplay.java65
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultOxidationScrapingDisplay.java29
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultOxidizingDisplay.java29
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultPathingDisplay.java29
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java118
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultStoneCuttingDisplay.java32
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultStrippingDisplay.java29
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultTillingDisplay.java29
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultWaxScrapingDisplay.java29
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultWaxingDisplay.java29
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/anvil/DefaultAnvilDisplay.java38
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/beacon/DefaultBeaconBaseDisplay.java9
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/beacon/DefaultBeaconDisplay.java20
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/beacon/DefaultBeaconPaymentDisplay.java9
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/brewing/BrewingRecipe.java14
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/brewing/DefaultBrewingDisplay.java70
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/CookingDisplay.java44
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultBlastingDisplay.java16
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultCookingDisplay.java84
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmeltingDisplay.java16
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/cooking/DefaultSmokingDisplay.java16
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/CraftingDisplay.java105
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/CraftingRecipeSizeProvider.java82
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCraftingDisplay.java194
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomDisplay.java57
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomShapedDisplay.java60
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultCustomShapelessDisplay.java54
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapedDisplay.java63
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/crafting/DefaultShapelessDisplay.java50
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/tag/DefaultTagDisplay.java9
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/tag/TagNodes.java6
69 files changed, 1739 insertions, 1038 deletions
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/InventoryCraftingTransferHandler.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/InventoryCraftingTransferHandler.java
index d57fc1bb6..cf68ef1d4 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/InventoryCraftingTransferHandler.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/autocrafting/InventoryCraftingTransferHandler.java
@@ -30,7 +30,7 @@ import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.InputIngredient;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
import me.shedaniel.rei.api.common.util.CollectionUtils;
-import me.shedaniel.rei.plugin.common.displays.crafting.DefaultCraftingDisplay;
+import me.shedaniel.rei.plugin.common.displays.crafting.CraftingDisplay;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
@@ -48,7 +48,7 @@ public class InventoryCraftingTransferHandler implements TransferHandler, Transf
ApplicabilityResult applicable = parent.checkApplicable(context);
if (!applicable.isApplicable()) return applicable;
- DefaultCraftingDisplay<?> display = (DefaultCraftingDisplay<?>) context.getDisplay();
+ CraftingDisplay display = (CraftingDisplay) context.getDisplay();
if (display != null && (display.getWidth() > 2 || display.getHeight() > 2)) {
return ApplicabilityResult.createApplicableWithError(Component.translatable("error.rei.transfer.too_small", 2, 2));
}
@@ -58,7 +58,7 @@ public class InventoryCraftingTransferHandler implements TransferHandler, Transf
@Override
public Result handle(Context context) {
- List<InputIngredient<EntryStack<?>>> inputs = ((DefaultCraftingDisplay<?>) context.getDisplay()).getInputIngredients(2, 2);
+ List<InputIngredient<EntryStack<?>>> inputs = ((CraftingDisplay) context.getDisplay()).getInputIngredients(2, 2);
return parent.handleSimpleTransfer(context, parent.getMissingInputRenderer(),
CollectionUtils.map(inputs, entry -> InputIngredient.withType(entry, VanillaEntryTypes.ITEM)),
parent.getInputSlots(context), parent.getInventorySlots(context));
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 5f42f0303..107ec319e 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
@@ -27,20 +27,16 @@ import me.shedaniel.rei.api.client.ClientHelper;
import me.shedaniel.rei.api.client.registry.transfer.TransferHandler;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.api.common.display.SimpleGridMenuDisplay;
-import me.shedaniel.rei.api.common.transfer.info.MenuTransferException;
-import me.shedaniel.rei.plugin.common.displays.cooking.DefaultCookingDisplay;
-import me.shedaniel.rei.plugin.common.displays.crafting.DefaultCraftingDisplay;
+import me.shedaniel.rei.plugin.client.displays.ClientsidedCraftingDisplay;
+import me.shedaniel.rei.plugin.client.displays.ClientsidedRecipeBookDisplay;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
-import net.minecraft.client.gui.screens.recipebook.RecipeUpdateListener;
+import net.minecraft.client.gui.screens.inventory.AbstractRecipeBookScreen;
import net.minecraft.network.chat.Component;
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;
+import net.minecraft.world.item.crafting.display.RecipeDisplayId;
@Environment(EnvType.CLIENT)
public class DefaultRecipeBookHandler implements TransferHandler {
@@ -49,7 +45,7 @@ public class DefaultRecipeBookHandler implements TransferHandler {
if (context.getDisplay() instanceof SimpleGridMenuDisplay && ClientHelper.getInstance().canUseMovePackets())
return ApplicabilityResult.createNotApplicable();
Display display = context.getDisplay();
- if (!(context.getMenu() instanceof RecipeBookMenu<?, ?> container))
+ if (!(context.getMenu() instanceof RecipeBookMenu container))
return ApplicabilityResult.createNotApplicable();
if (container == null)
return ApplicabilityResult.createNotApplicable();
@@ -58,10 +54,10 @@ public class DefaultRecipeBookHandler implements TransferHandler {
@Override
public Result handle(Context context) {
- RecipeBookMenu<?, ?> container = (RecipeBookMenu<?, ?>) context.getMenu();
+ RecipeBookMenu container = (RecipeBookMenu) context.getMenu();
Display display = context.getDisplay();
- if (display instanceof DefaultCraftingDisplay<?> craftingDisplay) {
- if (craftingDisplay.getOptionalRecipe().isPresent()) {
+ if (display instanceof ClientsidedCraftingDisplay craftingDisplay) {
+ if (craftingDisplay.recipeDisplayId().isPresent()) {
int h = -1, w = -1;
if (container instanceof CraftingMenu) {
h = 3;
@@ -72,30 +68,26 @@ public class DefaultRecipeBookHandler implements TransferHandler {
}
if (h == -1 || w == -1)
return Result.createNotApplicable();
- RecipeHolder<?> recipe = craftingDisplay.getOptionalRecipe().get();
+ RecipeDisplayId id = craftingDisplay.recipeDisplayId().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))
- return Result.createNotApplicable();
if (!context.isActuallyCrafting())
return Result.createSuccessful();
context.getMinecraft().setScreen(context.getContainerScreen());
- if (context.getContainerScreen() instanceof RecipeUpdateListener)
- ((RecipeUpdateListener) context.getContainerScreen()).getRecipeBookComponent().ghostRecipe.clear();
- context.getMinecraft().gameMode.handlePlaceRecipe(container.containerId, recipe, context.isStackedCrafting());
+ if (context.getContainerScreen() instanceof AbstractRecipeBookScreen<?> screen)
+ screen.recipeBookComponent.ghostSlots.clear();
+ context.getMinecraft().gameMode.handlePlaceRecipe(container.containerId, id, context.isStackedCrafting());
return Result.createSuccessful();
}
- } else if (display instanceof DefaultCookingDisplay defaultDisplay) {
- if (defaultDisplay.getOptionalRecipe().isPresent()) {
- RecipeHolder<?> recipe = (defaultDisplay).getOptionalRecipe().get();
- if (!context.getMinecraft().player.getRecipeBook().contains(recipe))
- return Result.createNotApplicable();
+ } else if (display instanceof ClientsidedRecipeBookDisplay defaultDisplay) {
+ if (defaultDisplay.recipeDisplayId().isPresent()) {
+ RecipeDisplayId id = defaultDisplay.recipeDisplayId().get();
if (!context.isActuallyCrafting())
return Result.createSuccessful();
context.getMinecraft().setScreen(context.getContainerScreen());
- if (context.getContainerScreen() instanceof RecipeUpdateListener)
- ((RecipeUpdateListener) context.getContainerScreen()).getRecipeBookComponent().ghostRecipe.clear();
- context.getMinecraft().gameMode.handlePlaceRecipe(container.containerId, recipe, context.isStackedCrafting());
+ if (context.getContainerScreen() instanceof AbstractRecipeBookScreen<?> screen)
+ screen.recipeBookComponent.ghostSlots.clear();
+ context.getMinecraft().gameMode.handlePlaceRecipe(container.containerId, id, context.isStackedCrafting());
return Result.createSuccessful();
}
}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/BuiltinClientPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/BuiltinClientPlugin.java
index d87b56eeb..7b3bad53a 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/BuiltinClientPlugin.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/BuiltinClientPlugin.java
@@ -28,8 +28,6 @@ import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.impl.ClientInternals;
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
import net.minecraft.network.chat.Component;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.item.crafting.Ingredient;
import java.util.List;
import java.util.function.UnaryOperator;
@@ -39,11 +37,7 @@ public interface BuiltinClientPlugin extends BuiltinPlugin {
return (BuiltinClientPlugin) ClientInternals.getBuiltinPlugin();
}
- default void registerBrewingRecipe(ItemStack input, Ingredient ingredient, ItemStack output) {
- registerBrewingRecipe(Ingredient.of(input), ingredient, output);
- }
-
- void registerBrewingRecipe(Ingredient input, Ingredient ingredient, ItemStack output);
+ void registerBrewingRecipe(EntryIngredient input, EntryIngredient ingredient, EntryIngredient output);
void registerInformation(EntryIngredient ingredient, Component name, UnaryOperator<List<Component>> textBuilder);
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 84629be4d..6c93af751 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
@@ -56,8 +56,9 @@ import me.shedaniel.rei.plugin.client.categories.beacon.DefaultBeaconBaseCategor
import me.shedaniel.rei.plugin.client.categories.beacon.DefaultBeaconPaymentCategory;
import me.shedaniel.rei.plugin.client.categories.cooking.DefaultCookingCategory;
import me.shedaniel.rei.plugin.client.categories.crafting.DefaultCraftingCategory;
-import me.shedaniel.rei.plugin.client.categories.crafting.filler.*;
import me.shedaniel.rei.plugin.client.categories.tag.DefaultTagCategory;
+import me.shedaniel.rei.plugin.client.displays.ClientsidedCookingDisplay;
+import me.shedaniel.rei.plugin.client.displays.ClientsidedCraftingDisplay;
import me.shedaniel.rei.plugin.client.exclusionzones.DefaultPotionEffectExclusionZones;
import me.shedaniel.rei.plugin.client.exclusionzones.DefaultRecipeBookExclusionZones;
import me.shedaniel.rei.plugin.client.favorites.GameModeFavoriteEntry;
@@ -71,10 +72,6 @@ import me.shedaniel.rei.plugin.common.displays.beacon.DefaultBeaconBaseDisplay;
import me.shedaniel.rei.plugin.common.displays.beacon.DefaultBeaconPaymentDisplay;
import me.shedaniel.rei.plugin.common.displays.brewing.BrewingRecipe;
import me.shedaniel.rei.plugin.common.displays.brewing.DefaultBrewingDisplay;
-import me.shedaniel.rei.plugin.common.displays.cooking.DefaultBlastingDisplay;
-import me.shedaniel.rei.plugin.common.displays.cooking.DefaultSmeltingDisplay;
-import me.shedaniel.rei.plugin.common.displays.cooking.DefaultSmokingDisplay;
-import me.shedaniel.rei.plugin.common.displays.crafting.DefaultCraftingDisplay;
import me.shedaniel.rei.plugin.common.displays.tag.DefaultTagDisplay;
import me.shedaniel.rei.plugin.common.displays.tag.TagNodes;
import net.fabricmc.api.EnvType;
@@ -83,6 +80,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.inventory.*;
import net.minecraft.client.gui.screens.recipebook.RecipeUpdateListener;
import net.minecraft.core.Holder;
+import net.minecraft.core.HolderLookup;
import net.minecraft.core.Registry;
import net.minecraft.core.component.DataComponents;
import net.minecraft.core.registries.BuiltInRegistries;
@@ -97,14 +95,18 @@ import net.minecraft.world.item.*;
import net.minecraft.world.item.alchemy.Potion;
import net.minecraft.world.item.alchemy.PotionBrewing;
import net.minecraft.world.item.alchemy.PotionContents;
-import net.minecraft.world.item.crafting.*;
+import net.minecraft.world.item.crafting.Ingredient;
+impo