diff options
| author | shedaniel <daniel@shedaniel.me> | 2024-04-16 02:26:19 +0900 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2024-04-16 03:21:35 +0900 |
| commit | a377a5bf80f3f93ef788b9fcd4ceb5c529219cb7 (patch) | |
| tree | 62cd12da4a32ce1f9a727db983a36d7e460b3fce /default-plugin/src/main/java/me/shedaniel/rei/plugin/common | |
| parent | fccc677951d7d5352ab7bf154951b7198d440e90 (diff) | |
| parent | f105040ca748544101f4fb829af8604d036447ed (diff) | |
| download | RoughlyEnoughItems-a377a5bf80f3f93ef788b9fcd4ceb5c529219cb7.tar.gz RoughlyEnoughItems-a377a5bf80f3f93ef788b9fcd4ceb5c529219cb7.tar.bz2 RoughlyEnoughItems-a377a5bf80f3f93ef788b9fcd4ceb5c529219cb7.zip | |
Merge remote-tracking branch 'origin/14.x-1.20.4' into 15.x-1.20.5
# Conflicts:
# default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
# default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java
# gradle.properties
# runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ConfigureCategoriesScreen.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/generic/OptionEntriesScreen.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java
Diffstat (limited to 'default-plugin/src/main/java/me/shedaniel/rei/plugin/common')
| -rw-r--r-- | default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java | 1 | ||||
| -rw-r--r-- | default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java | 90 |
2 files changed, 41 insertions, 50 deletions
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java index fc76dff56..0cb016597 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/DefaultPlugin.java @@ -77,6 +77,7 @@ public class DefaultPlugin implements BuiltinPlugin, REIServerPlugin { registry.registerComponents(Items.SPLASH_POTION); registry.registerComponents(Items.LINGERING_POTION); registry.registerComponents(Items.TIPPED_ARROW); + registry.register((context, stack) -> 0, Items.FIREWORK_ROCKET, Items.FILLED_MAP); } @Override 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 961946780..a4242768f 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,8 +27,14 @@ 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.core.component.DataComponents; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.armortrim.*; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.SmithingRecipe; import net.minecraft.world.item.crafting.SmithingTransformRecipe; @@ -36,6 +42,7 @@ import net.minecraft.world.item.crafting.SmithingTrimRecipe; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -53,58 +60,41 @@ public class DefaultSmithingDisplay extends BasicDisplay { ); } - @ApiStatus.Experimental - public static DefaultSmithingDisplay ofTrimming(RecipeHolder<SmithingTrimRecipe> recipe) { - return new DefaultSmithingDisplay( - recipe.value(), - recipe.id(), - List.of( - EntryIngredients.ofIngredient(recipe.value().template), - EntryIngredients.ofIngredient(recipe.value().base), - EntryIngredients.ofIngredient(recipe.value().addition) - ) - ); + public static List<DefaultSmithingDisplay> fromTrimming(RecipeHolder<SmithingTrimRecipe> recipe) { + RegistryAccess registryAccess = BasicDisplay.registryAccess(); + List<DefaultSmithingDisplay> displays = new ArrayList<>(); + for (ItemStack templateItem : recipe.value().template.getItems()) { + Holder.Reference<TrimPattern> trimPattern = TrimPatterns.getFromTemplate(registryAccess, templateItem) + .orElse(null); + if (trimPattern == null) continue; + + for (ItemStack additionStack : recipe.value().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.value().base.getItems()) { + ArmorTrim trim = item.get(DataComponents.TRIM); + if (trim == null || !trim.hasPatternAndMaterial(trimPattern, trimMaterial)) { + ItemStack newItem = item.copyWithCount(1); + newItem.set(DataComponents.TRIM, 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.id()))); + } + } + return displays; } -// @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()) -// ); -// } - public DefaultSmithingDisplay(SmithingRecipe recipe, @Nullable ResourceLocation id, List<EntryIngredient> inputs) { this( inputs, |
