diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-07-15 15:36:25 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-07-15 15:36:25 +0800 |
| commit | 7d1e39007a1e7de6fd0381fa1e21cf9b6e927f97 (patch) | |
| tree | fc4634e051a672d5a0a3d937354e28ce342e00c3 /src/main/java/me/shedaniel/rei/plugin/composting | |
| parent | c55a37bc522f0996862017031ff0322756f7b0a6 (diff) | |
| download | RoughlyEnoughItems-7d1e39007a1e7de6fd0381fa1e21cf9b6e927f97.tar.gz RoughlyEnoughItems-7d1e39007a1e7de6fd0381fa1e21cf9b6e927f97.tar.bz2 RoughlyEnoughItems-7d1e39007a1e7de6fd0381fa1e21cf9b6e927f97.zip | |
Rewrite composting code and add registerCategories
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/plugin/composting')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java | 29 | ||||
| -rw-r--r-- | src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java | 26 |
2 files changed, 22 insertions, 33 deletions
diff --git a/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java b/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java index afae0a5a0..503bb877a 100644 --- a/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java @@ -33,20 +33,20 @@ import me.shedaniel.rei.api.widgets.Widgets; import me.shedaniel.rei.gui.entries.RecipeEntry; import me.shedaniel.rei.gui.widget.Widget; import me.shedaniel.rei.plugin.DefaultPlugin; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.ItemConvertible; import net.minecraft.text.TranslatableText; +import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; +import java.util.*; +@Environment(EnvType.CLIENT) public class DefaultCompostingCategory implements RecipeCategory<DefaultCompostingDisplay> { @Override @@ -84,20 +84,17 @@ public class DefaultCompostingCategory implements RecipeCategory<DefaultComposti List<Widget> widgets = Lists.newArrayList(); Point startingPoint = new Point(bounds.x + bounds.width - 55, bounds.y + 110); widgets.add(Widgets.createFilledRectangle(bounds, REIHelper.getInstance().isDarkThemeEnabled() ? -13750738 : -3750202)); - List<EntryStack> stacks = new LinkedList<>(display.getItemsByOrder()); + List<EntryStack> stacks = new ArrayList<>(display.getRequiredEntries().get(0)); int i = 0; for (int y = 0; y < 6; y++) for (int x = 0; x < 8; x++) { - int finalI = i; - EntryStack entryStack = stacks.size() > i ? stacks.get(finalI) : EntryStack.empty(); - if (entryStack.getType() != EntryStack.Type.EMPTY) - for (Map.Entry<ItemConvertible, Float> entry : display.getInputMap().entrySet()) { - if (entry.getKey().asItem().equals(entryStack.getItem())) { - entryStack = entryStack.setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, s -> Collections.singletonList(new TranslatableText("text.rei.composting.chance", MathHelper.fastFloor(entry.getValue() * 100)))); - break; - } - } - widgets.add(Widgets.createSlot(new Point(bounds.getCenterX() - 72 + x * 18, bounds.y + 3 + y * 18)).entry(entryStack).markInput()); + EntryStack[] entryStack = {stacks.size() > i ? stacks.get(i) : EntryStack.empty()}; + if (!entryStack[0].isEmpty()) { + display.getInputMap().entrySet().parallelStream().filter(entry -> entry.getKey() != null && Objects.equals(entry.getKey().asItem(), entryStack[0].getItem())).findAny().map(Map.Entry::getValue).ifPresent(chance -> { + entryStack[0] = entryStack[0].setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, s -> Collections.singletonList(new TranslatableText("text.rei.composting.chance", MathHelper.fastFloor(chance * 100)).formatted(Formatting.YELLOW))); + }); + } + widgets.add(Widgets.createSlot(new Point(bounds.getCenterX() - 72 + x * 18, bounds.y + 3 + y * 18)).entry(entryStack[0]).markInput()); i++; } widgets.add(Widgets.createArrow(new Point(startingPoint.x - 1, startingPoint.y + 7))); diff --git a/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java index c2bc3b22a..fd2d99142 100644 --- a/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java @@ -26,28 +26,29 @@ package me.shedaniel.rei.plugin.composting; import me.shedaniel.rei.api.EntryStack; import me.shedaniel.rei.api.RecipeDisplay; import me.shedaniel.rei.plugin.DefaultPlugin; +import me.shedaniel.rei.utils.CollectionUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.item.ItemConvertible; import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Map; @Environment(EnvType.CLIENT) public class DefaultCompostingDisplay implements RecipeDisplay { - - private List<EntryStack> order, allItems; + private List<EntryStack> order; private Map<ItemConvertible, Float> inputMap; private List<EntryStack> output; private int page; - public DefaultCompostingDisplay(int page, List<ItemConvertible> order, Map<ItemConvertible, Float> inputMap, List<ItemConvertible> allItems, ItemStack[] output) { + public DefaultCompostingDisplay(int page, List<ItemConvertible> order, Map<ItemConvertible, Float> inputMap, ItemStack output) { this.page = page; this.order = EntryStack.ofItems(order); this.inputMap = inputMap; - this.output = EntryStack.ofItemStacks(Arrays.asList(output)); - this.allItems = EntryStack.ofItems(allItems); + this.output = EntryStack.ofItemStacks(Collections.singletonList(output)); } public int getPage() { @@ -56,11 +57,7 @@ public class DefaultCompostingDisplay implements RecipeDisplay { @Override public List<List<EntryStack>> getInputEntries() { - List<List<EntryStack>> lists = new ArrayList<>(); - for (EntryStack allItem : allItems) { - lists.add(Collections.singletonList(allItem)); - } - return lists; + return CollectionUtils.map(order, Collections::singletonList); } public Map<ItemConvertible, Float> getInputMap() { @@ -79,11 +76,6 @@ public class DefaultCompostingDisplay implements RecipeDisplay { @Override public List<List<EntryStack>> getRequiredEntries() { - return Collections.singletonList(allItems); - } - - public List<EntryStack> getItemsByOrder() { - return order; + return Collections.singletonList(order); } - } |
