aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-08-11 23:28:33 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-08-11 23:28:33 +0800
commit28025895e0da1e6079264dbfe951e7fd9bf069d8 (patch)
treebd28e2f6bf02a2806c4b7802fac912ed43444e43 /src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
parent019aa13875ca639dda2f34c66e3160f72b923cfd (diff)
downloadRoughlyEnoughItems-28025895e0da1e6079264dbfe951e7fd9bf069d8.tar.gz
RoughlyEnoughItems-28025895e0da1e6079264dbfe951e7fd9bf069d8.tar.bz2
RoughlyEnoughItems-28025895e0da1e6079264dbfe951e7fd9bf069d8.zip
Scrollable Entry List?
Diffstat (limited to 'src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java')
-rw-r--r--src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
new file mode 100644
index 000000000..327a0111e
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/impl/EntryRegistryImpl.java
@@ -0,0 +1,66 @@
+/*
+ * Roughly Enough Items by Danielshe.
+ * Licensed under the MIT License.
+ */
+
+package me.shedaniel.rei.impl;
+
+import com.google.common.collect.Lists;
+import me.shedaniel.rei.api.Entry;
+import me.shedaniel.rei.api.EntryRegistry;
+import net.minecraft.fluid.Fluid;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.Items;
+import net.minecraft.util.DefaultedList;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.TreeSet;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.stream.Collectors;
+
+public class EntryRegistryImpl implements EntryRegistry {
+
+ private final CopyOnWriteArrayList<Entry> entries = Lists.newCopyOnWriteArrayList();
+
+ @Override
+ public List<Entry> getEntryList() {
+ return Collections.unmodifiableList(entries);
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public List<Entry> getModifiableEntryList() {
+ return entries;
+ }
+
+ @Override
+ public ItemStack[] getAllStacksFromItem(Item item) {
+ DefaultedList<ItemStack> list = DefaultedList.create();
+ list.add(item.getStackForRender());
+ item.appendStacks(item.getGroup(), list);
+ TreeSet<ItemStack> stackSet = list.stream().collect(Collectors.toCollection(() -> new TreeSet<ItemStack>((p1, p2) -> ItemStack.areEqualIgnoreDamage(p1, p2) ? 0 : 1)));
+ return Lists.newArrayList(stackSet).toArray(new ItemStack[0]);
+ }
+
+ @Override
+ public void registerItemStack(Item afterItem, ItemStack stack) {
+ if (!stack.isEmpty() && !alreadyContain(stack))
+ if (afterItem == null || afterItem.equals(Items.AIR))
+ entries.add(Entry.create(stack));
+ else {
+ int last = entries.size();
+ for (int i = 0; i < entries.size(); i++)
+ if (entries.get(i).getEntryType() == Entry.Type.ITEM && entries.get(i).getItemStack().getItem().equals(afterItem))
+ last = i + 1;
+ entries.add(last, Entry.create(stack));
+ }
+ }
+
+ @Override
+ public void registerFluid(Fluid fluid) {
+ entries.add(Entry.create(fluid));
+ }
+
+}