aboutsummaryrefslogtreecommitdiff
path: root/default-plugin/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'default-plugin/src/main/java')
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java7
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java19
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCompostingDisplay.java25
3 files changed, 33 insertions, 18 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 cdb3fd883..d4c1877b3 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
@@ -261,11 +261,10 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
if (ComposterBlock.COMPOSTABLES.isEmpty()) {
ComposterBlock.bootStrap();
}
- int page = 0;
- Iterator<List<Object2FloatMap.Entry<ItemLike>>> iterator = Iterators.partition(ComposterBlock.COMPOSTABLES.object2FloatEntrySet().stream().sorted(Map.Entry.comparingByValue()).iterator(), 35);
+ Iterator<List<EntryIngredient>> iterator = Iterators.partition(ComposterBlock.COMPOSTABLES.object2FloatEntrySet().stream().sorted(Map.Entry.comparingByValue()).map(entry -> EntryIngredients.of(entry.getKey())).iterator(), 35);
while (iterator.hasNext()) {
- List<Object2FloatMap.Entry<ItemLike>> entries = iterator.next();
- registry.add(DefaultCompostingDisplay.of(entries, Collections.singletonList(EntryIngredients.of(new ItemStack(Items.BONE_MEAL))), page++));
+ List<EntryIngredient> entries = iterator.next();
+ registry.add(new DefaultCompostingDisplay(entries, Collections.singletonList(EntryIngredients.of(new ItemStack(Items.BONE_MEAL)))));
}
DummyAxeItem.getStrippedBlocksMap().entrySet().stream().sorted(Comparator.comparing(b -> Registry.BLOCK.getKey(b.getKey()))).forEach(set -> {
registry.add(new DefaultStrippingDisplay(EntryStacks.of(set.getKey()), EntryStacks.of(set.getValue())));
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java
index ab65b6ccc..4962c4394 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/categories/DefaultCompostingCategory.java
@@ -34,7 +34,6 @@ 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.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.DefaultCompostingDisplay;
@@ -44,13 +43,13 @@ import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.network.chat.Component;
import net.minecraft.util.Mth;
+import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.ComposterBlock;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
@Environment(EnvType.CLIENT)
public class DefaultCompostingCategory implements DisplayCategory<DefaultCompostingDisplay> {
@@ -95,15 +94,15 @@ public class DefaultCompostingCategory implements DisplayCategory<DefaultCompost
int i = 0;
for (int y = 0; y < 5; y++)
for (int x = 0; x < 7; x++) {
- EntryIngredient entryStack = stacks.size() > i ? stacks.get(i) : EntryIngredient.empty();
- if (!entryStack.isEmpty()) {
- ComposterBlock.COMPOSTABLES.object2FloatEntrySet().stream().filter(entry -> entry.getKey() != null && Objects.equals(entry.getKey().asItem(), entryStack.get(0).getValue())).findAny().map(Map.Entry::getValue).ifPresent(chance -> {
- for (EntryStack<?> stack : entryStack) {
- stack.tooltip(Component.translatable("text.rei.composting.chance", Mth.fastFloor(chance * 100)).withStyle(ChatFormatting.YELLOW));
- }
- });
+ EntryIngredient entryIngredient = stacks.size() > i ? stacks.get(i) : EntryIngredient.empty();
+ if (!entryIngredient.isEmpty()) {
+ ItemStack firstStack = (ItemStack) entryIngredient.get(0).getValue();
+ float chance = ComposterBlock.COMPOSTABLES.getFloat(firstStack.getItem());
+ if (chance > 0.0f) {
+ entryIngredient = entryIngredient.map(stack -> stack.copy().tooltip(Component.translatable("text.rei.composting.chance", Mth.clamp(Mth.fastFloor(chance * 100), 0, 100)).withStyle(ChatFormatting.YELLOW)));
+ }
}
- widgets.add(Widgets.createSlot(new Point(bounds.getCenterX() - 72 + 9 + x * 18, bounds.y + 12 + y * 18)).entries(entryStack).markInput());
+ widgets.add(Widgets.createSlot(new Point(bounds.getCenterX() - 72 + 9 + x * 18, bounds.y + 12 + y * 18)).entries(entryIngredient).markInput());
i++;
}
widgets.add(Widgets.createArrow(new Point(startingPoint.x - 1 - 5, startingPoint.y + 7 - 5)));
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCompostingDisplay.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCompostingDisplay.java
index 4862c27c8..bbf31cb38 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCompostingDisplay.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/common/displays/DefaultCompostingDisplay.java
@@ -24,6 +24,8 @@
package me.shedaniel.rei.plugin.common.displays;
import it.unimi.dsi.fastutil.objects.Object2FloatMap;
+import org.jetbrains.annotations.ApiStatus;
+
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;
@@ -36,8 +38,11 @@ import java.util.Arrays;
import java.util.List;
public class DefaultCompostingDisplay extends BasicDisplay {
- private int page;
-
+ private static int pages;
+
+ private final int page;
+
+ @Deprecated(forRemoval = true)
public static DefaultCompostingDisplay of(List<Object2FloatMap.Entry<ItemLike>> inputs, List<EntryIngredient> output, int page) {
EntryIngredient[] inputIngredients = new EntryIngredient[inputs.size()];
int i = 0;
@@ -47,19 +52,31 @@ public class DefaultCompostingDisplay extends BasicDisplay {
}
return new DefaultCompostingDisplay(Arrays.asList(inputIngredients), output, page);
}
-
+
+ @ApiStatus.Internal
public DefaultCompostingDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs, CompoundTag tag) {
this(inputs, outputs, tag.getInt("page"));
}
-
+
+ public DefaultCompostingDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs) {
+ super(inputs, outputs);
+ this.page = pages++;
+ }
+
+ @ApiStatus.Internal
public DefaultCompostingDisplay(List<EntryIngredient> inputs, List<EntryIngredient> outputs, int page) {
super(inputs, outputs);
this.page = page;
+ if (pages <= page) pages = page + 1;
}
public int getPage() {
return page;
}
+
+ public static int getPages() {
+ return pages;
+ }
@Override
public CategoryIdentifier<?> getCategoryIdentifier() {