aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-07-15 15:36:25 +0800
committershedaniel <daniel@shedaniel.me>2020-07-15 15:36:25 +0800
commit7d1e39007a1e7de6fd0381fa1e21cf9b6e927f97 (patch)
treefc4634e051a672d5a0a3d937354e28ce342e00c3 /src/main/java/me
parentc55a37bc522f0996862017031ff0322756f7b0a6 (diff)
downloadRoughlyEnoughItems-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')
-rw-r--r--src/main/java/me/shedaniel/rei/api/RecipeHelper.java12
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java31
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java29
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingDisplay.java26
4 files changed, 50 insertions, 48 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java
index 26f17e81f..04b699b5a 100644
--- a/src/main/java/me/shedaniel/rei/api/RecipeHelper.java
+++ b/src/main/java/me/shedaniel/rei/api/RecipeHelper.java
@@ -82,6 +82,18 @@ public interface RecipeHelper {
*/
void registerCategory(RecipeCategory<?> category);
+ default void registerCategories(Iterable<RecipeCategory<?>> categories) {
+ for (RecipeCategory<?> category : categories) {
+ registerCategory(category);
+ }
+ }
+
+ default void registerCategories(RecipeCategory<?>... categories) {
+ for (RecipeCategory<?> category : categories) {
+ registerCategory(category);
+ }
+ }
+
/**
* Registers the working stations of a category
*
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
index f54bf8ba9..460a5d119 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java
@@ -195,19 +195,20 @@ public class DefaultPlugin implements REIPluginV0 {
if (!ConfigObject.getInstance().isLoadingDefaultPlugin()) {
return;
}
- recipeHelper.registerCategory(new DefaultCraftingCategory());
- recipeHelper.registerCategory(new DefaultCookingCategory(SMELTING, EntryStack.create(Items.FURNACE), "category.rei.smelting"));
- recipeHelper.registerCategory(new DefaultCookingCategory(SMOKING, EntryStack.create(Items.SMOKER), "category.rei.smoking"));
- recipeHelper.registerCategory(new DefaultCookingCategory(BLASTING, EntryStack.create(Items.BLAST_FURNACE), "category.rei.blasting"));
- recipeHelper.registerCategory(new DefaultCampfireCategory());
- recipeHelper.registerCategory(new DefaultStoneCuttingCategory());
- recipeHelper.registerCategory(new DefaultFuelCategory());
- recipeHelper.registerCategory(new DefaultBrewingCategory());
- recipeHelper.registerCategory(new DefaultCompostingCategory());
- recipeHelper.registerCategory(new DefaultStrippingCategory());
- recipeHelper.registerCategory(new DefaultSmithingCategory());
- recipeHelper.registerCategory(new DefaultBeaconBaseCategory());
- recipeHelper.registerCategory(new DefaultInformationCategory());
+ recipeHelper.registerCategories(
+ new DefaultCraftingCategory(),
+ new DefaultCookingCategory(SMELTING, EntryStack.create(Items.FURNACE), "category.rei.smelting"),
+ new DefaultCookingCategory(SMOKING, EntryStack.create(Items.SMOKER), "category.rei.smoking"),
+ new DefaultCookingCategory(BLASTING, EntryStack.create(Items.BLAST_FURNACE), "category.rei.blasting"), new DefaultCampfireCategory(),
+ new DefaultStoneCuttingCategory(),
+ new DefaultFuelCategory(),
+ new DefaultBrewingCategory(),
+ new DefaultCompostingCategory(),
+ new DefaultStrippingCategory(),
+ new DefaultSmithingCategory(),
+ new DefaultBeaconBaseCategory(),
+ new DefaultInformationCategory()
+ );
}
@Override
@@ -250,14 +251,14 @@ public class DefaultPlugin implements REIPluginV0 {
if (entry.getFloatValue() > 0)
map.put(entry.getKey(), entry.getFloatValue());
}
- List<ItemConvertible> stacks = new LinkedList<>(map.keySet());
+ List<ItemConvertible> stacks = Lists.newArrayList(map.keySet());
stacks.sort(Comparator.comparing(map::get));
for (int i = 0; i < stacks.size(); i += MathHelper.clamp(48, 1, stacks.size() - i)) {
List<ItemConvertible> thisStacks = Lists.newArrayList();
for (int j = i; j < i + 48; j++)
if (j < stacks.size())
thisStacks.add(stacks.get(j));
- recipeHelper.registerDisplay(new DefaultCompostingDisplay(MathHelper.floor(i / 48f), thisStacks, map, Lists.newArrayList(map.keySet()), new ItemStack[]{new ItemStack(Items.BONE_MEAL)}));
+ recipeHelper.registerDisplay(new DefaultCompostingDisplay(MathHelper.floor(i / 48f), thisStacks, map, new ItemStack(Items.BONE_MEAL)));
}
DummyAxeItem.getStrippedBlocksMap().entrySet().stream().sorted(Comparator.comparing(b -> Registry.BLOCK.getId(b.getKey()))).forEach(set -> {
recipeHelper.registerDisplay(new DefaultStrippingDisplay(EntryStack.create(set.getKey()), EntryStack.create(set.getValue())));
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);
}
-
}