diff options
| author | shedaniel <daniel@shedaniel.me> | 2024-09-17 21:52:18 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2024-09-17 21:52:18 +0800 |
| commit | 581543cb56b8a85d32d7237e0d37fb5ad24da9b5 (patch) | |
| tree | f3b8a2c81bef17fe6cb4672bbb1b77607e657b50 /default-plugin/src/main/java/me/shedaniel/rei/plugin/client | |
| parent | 048eccb27ce9907b1028b7acc4f0f98321864750 (diff) | |
| parent | ed0f9e051623b0a37b438a3df11c3e50a7d85ab5 (diff) | |
| download | RoughlyEnoughItems-581543cb56b8a85d32d7237e0d37fb5ad24da9b5.tar.gz RoughlyEnoughItems-581543cb56b8a85d32d7237e0d37fb5ad24da9b5.tar.bz2 RoughlyEnoughItems-581543cb56b8a85d32d7237e0d37fb5ad24da9b5.zip | |
Merge remote-tracking branch 'origin/14.x-1.20.4' into 15.x-1.20.5
# Conflicts:
# api/src/main/java/me/shedaniel/rei/api/common/display/basic/BasicDisplay.java
# api/src/main/java/me/shedaniel/rei/impl/Internals.java
# default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultSmithingDisplay.java
# fabric/src/main/resources/roughlyenoughitems.accessWidener
# runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java
# runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/PerformanceScreen.java
Diffstat (limited to 'default-plugin/src/main/java/me/shedaniel/rei/plugin/client')
| -rw-r--r-- | default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java index 982221600..a7546390c 100644 --- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java +++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultSmithingCategory.java @@ -27,15 +27,22 @@ import com.google.common.collect.Lists; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.gui.Renderer; +import me.shedaniel.rei.api.client.gui.widgets.Slot; import me.shedaniel.rei.api.client.gui.widgets.Widget; import me.shedaniel.rei.api.client.gui.widgets.Widgets; import me.shedaniel.rei.api.client.registry.display.DisplayCategory; 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.entry.EntryStack; import me.shedaniel.rei.api.common.util.EntryStacks; import me.shedaniel.rei.plugin.common.BuiltinPlugin; import me.shedaniel.rei.plugin.common.displays.DefaultSmithingDisplay; +import net.minecraft.core.RegistryAccess; import net.minecraft.network.chat.Component; import net.minecraft.world.level.block.Blocks; +import org.apache.commons.lang3.mutable.MutableBoolean; +import org.jetbrains.annotations.ApiStatus; import java.util.List; @@ -65,14 +72,23 @@ public class DefaultSmithingCategory implements DisplayCategory<DefaultSmithingD widgets.add(Widgets.createArrow(new Point(startPoint.x + 27 + offsetX, startPoint.y + 4))); widgets.add(Widgets.createResultSlotBackground(new Point(startPoint.x + 61 + offsetX, startPoint.y + 5))); if (!legacy) { - widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 - 18 * 2 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(0)).markInput()); - widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 - 18 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(1)).markInput()); - widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(2)).markInput()); + Slot templateSlot, baseSlot, additionSlot, resultSlot; + MutableBoolean dirty = new MutableBoolean(true); + widgets.add(templateSlot = Widgets.createSlot(new Point(startPoint.x + 4 - 18 * 2 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(0)).withEntriesListener(slot -> dirty.setTrue()).markInput()); + widgets.add(baseSlot = Widgets.createSlot(new Point(startPoint.x + 4 - 18 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(1)).withEntriesListener(slot -> dirty.setTrue()).markInput()); + widgets.add(additionSlot = Widgets.createSlot(new Point(startPoint.x + 4 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(2)).withEntriesListener(slot -> dirty.setTrue()).markInput()); + widgets.add(resultSlot = Widgets.createSlot(new Point(startPoint.x + 61 + offsetX, startPoint.y + 5)).entries(display.getOutputEntries().get(0)).disableBackground().markOutput()); + widgets.add(Widgets.createDrawableWidget((graphics, mouseX, mouseY, delta) -> { + if (dirty.booleanValue()) { + resultSlot.clearEntries().entries(getOutput(display, BasicDisplay.registryAccess(), templateSlot.getCurrentEntry(), baseSlot.getCurrentEntry(), additionSlot.getCurrentEntry())); + dirty.setFalse(); + } + })); } else { widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 - 22 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(0)).markInput()); widgets.add(Widgets.createSlot(new Point(startPoint.x + 4 + offsetX, startPoint.y + 5)).entries(display.getInputEntries().get(1)).markInput()); + widgets.add(Widgets.createSlot(new Point(startPoint.x + 61 + offsetX, startPoint.y + 5)).entries(display.getOutputEntries().get(0)).disableBackground().markOutput()); } - widgets.add(Widgets.createSlot(new Point(startPoint.x + 61 + offsetX, startPoint.y + 5)).entries(display.getOutputEntries().get(0)).disableBackground().markOutput()); return widgets; } @@ -80,4 +96,14 @@ public class DefaultSmithingCategory implements DisplayCategory<DefaultSmithingD public int getDisplayHeight() { return 36; } + + @ApiStatus.Experimental + private static EntryIngredient getOutput(DefaultSmithingDisplay display, RegistryAccess registryAccess, EntryStack<?> template, EntryStack<?> base, EntryStack<?> addition) { + if (display.getType() == DefaultSmithingDisplay.SmithingRecipeType.TRIM) { + EntryIngredient output = DefaultSmithingDisplay.getTrimmingOutput(registryAccess, template, base, addition); + if (!output.isEmpty()) return output; + } + + return display.getOutputEntries().get(0); + } } |
