aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2024-04-16 02:14:22 +0900
committershedaniel <daniel@shedaniel.me>2024-04-16 02:14:53 +0900
commitd96699c5e2858ef1d25d2a2fc77deff59041af81 (patch)
treeb1067bebf1dbe274d064fcd74780dc9be0ed1509
parent8981a2f730942e169ba5efa2f25ad3066dc0f797 (diff)
parentd0cbdaec7d80bc667d21e1a9a8805b075296abef (diff)
downloadRoughlyEnoughItems-d96699c5e2858ef1d25d2a2fc77deff59041af81.tar.gz
RoughlyEnoughItems-d96699c5e2858ef1d25d2a2fc77deff59041af81.tar.bz2
RoughlyEnoughItems-d96699c5e2858ef1d25d2a2fc77deff59041af81.zip
Merge remote-tracking branch 'origin/feature/11.1' into feature/12.1
# Conflicts: # default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java5
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java83
2 files changed, 45 insertions, 43 deletions
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..d7c34faf1 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
@@ -27,10 +27,7 @@ import com.google.common.collect.*;
import dev.architectury.event.EventResult;
import dev.architectury.networking.NetworkManager;
import dev.architectury.platform.Platform;
-import it.unimi.dsi.fastutil.objects.Object2FloatMap;
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
-import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
-import it.unimi.dsi.fastutil.objects.ReferenceSet;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.client.favorites.FavoriteEntry;
import me.shedaniel.rei.api.client.favorites.FavoriteEntryType;
@@ -310,7 +307,7 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
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.registerRecipesFiller(SmithingTrimRecipe.class, RecipeType.SMITHING, DefaultSmithingDisplay::from);
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/common/displays/DefaultSmithingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java
index 7a4b445f8..0c45a469b 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
@@ -27,13 +27,19 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.basic.BasicDisplay;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.util.EntryIngredients;
+import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
+import net.minecraft.core.Holder;
+import net.minecraft.core.RegistryAccess;
import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.armortrim.*;
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 java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -50,7 +56,7 @@ public class DefaultSmithingDisplay extends BasicDisplay {
);
}
- @ApiStatus.Experimental
+ @Deprecated(forRemoval = true)
public DefaultSmithingDisplay(SmithingTrimRecipe recipe) {
this(
recipe,
@@ -62,44 +68,43 @@ public class DefaultSmithingDisplay extends BasicDisplay {
);
}
-// @ApiStatus.Experimental
-// public DefaultSmithingDisplay(SmithingTrimRecipe recipe) {
-// this(
-// List.of(
-// EntryIngredients.ofIngredient(recipe.template),
-// EntryIngredients.ofIngredient(recipe.base),
-// EntryIngredients.ofIngredient(recipe.addition)
-// ),
-// List.of(EntryIngredients.ofItemStacks(((Supplier<List<ItemStack>>) () -> {
-// RegistryAccess registryAccess = BasicDisplay.registryAccess();
-// ItemStack[] templateItems = recipe.template.getItems();
-// ItemStack[] baseItems = recipe.base.getItems();
-// if (templateItems.length != 0) {
-// Holder.Reference<TrimPattern> trimPattern = TrimPatterns.getFromTemplate(registryAccess, templateItems[0])
-// .orElse(null);
-// if (trimPattern != null) {
-// for (ItemStack additionItem : recipe.addition.getItems()) {
-// Holder.Reference<TrimMaterial> trimMaterial = TrimMaterials.getFromIngredient(registryAccess, additionItem)
-// .orElse(null);
-// if (trimMaterial != null) {
-// Optional<ArmorTrim> trim = ArmorTrim.getTrim(registryAccess, itemStack);
-// if (trim.isEmpty() || !trim.get().hasPatternAndMaterial(trimPattern, trimMaterial)) {
-// ItemStack itemStack2 = itemStack.copy();
-// itemStack2.setCount(1);
-// ArmorTrim armorTrim = new ArmorTrim((Holder) optional.get(), (Holder) optional2.get());
-// if (ArmorTrim.setTrim(registryAccess, itemStack2, armorTrim)) {
-// return itemStack2;
-// }
-// }
-// }
-// }
-// }
-// }
-// return List.of(recipe.getResultItem(registryAccess));
-// }).get())),
-// Optional.ofNullable(recipe.getId())
-// );
-// }
+ @ApiStatus.Experimental
+ public static List<DefaultSmithingDisplay> from(SmithingTrimRecipe recipe) {
+ RegistryAccess registryAccess = BasicDisplay.registryAccess();
+ List<DefaultSmithingDisplay> displays = new ArrayList<>();
+ for (ItemStack templateItem : recipe.template.getItems()) {
+ Holder.Reference<TrimPattern> trimPattern = TrimPatterns.getFromTemplate(registryAccess, templateItem)
+ .orElse(null);
+ if (trimPattern == null) continue;
+
+ for (ItemStack additionStack : recipe.addition.getItems()) {
+ Holder.Reference<TrimMaterial> trimMaterial = TrimMaterials.getFromIngredient(registryAccess, additionStack)
+ .orElse(null);
+ if (trimMaterial == null) continue;
+
+ ArmorTrim armorTrim = new ArmorTrim(trimMaterial, trimPattern);
+ EntryIngredient.Builder baseItems = EntryIngredient.builder(), outputItems = EntryIngredient.builder();
+ for (ItemStack item : recipe.base.getItems()) {
+ Optional<ArmorTrim> trim = ArmorTrim.getTrim(registryAccess, item);
+ if (trim.isEmpty() || !trim.get().hasPatternAndMaterial(trimPattern, trimMaterial)) {
+ ItemStack newItem = item.copy();
+ newItem.setCount(1);
+ if (ArmorTrim.setTrim(registryAccess, newItem, armorTrim)) {
+ baseItems.add(EntryStacks.of(item.copy()));
+ outputItems.add(EntryStacks.of(newItem));
+ }
+ }
+ }
+ displays.add(new DefaultSmithingDisplay(List.of(
+ EntryIngredients.of(templateItem),
+ baseItems.build(),
+ EntryIngredients.of(additionStack)
+ ), List.of(outputItems.build()),
+ Optional.ofNullable(recipe.getId())));
+ }
+ }
+ return displays;
+ }
public DefaultSmithingDisplay(SmithingRecipe recipe, List<EntryIngredient> inputs) {
this(