aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java10
-rw-r--r--src/main/java/me/shedaniel/rei/api/Entry.java32
-rw-r--r--src/main/java/me/shedaniel/rei/api/EntryRegistry.java (renamed from src/main/java/me/shedaniel/rei/api/ItemRegistry.java)11
-rw-r--r--src/main/java/me/shedaniel/rei/api/Renderer.java10
-rw-r--r--src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java6
-rw-r--r--src/main/java/me/shedaniel/rei/client/ConfigObjectImpl.java15
-rw-r--r--src/main/java/me/shedaniel/rei/client/EntryRegistryImpl.java (renamed from src/main/java/me/shedaniel/rei/client/ItemRegistryImpl.java)31
-rw-r--r--src/main/java/me/shedaniel/rei/client/FluidEntry.java33
-rw-r--r--src/main/java/me/shedaniel/rei/client/ItemStackEntry.java33
-rw-r--r--src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java6
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java43
-rw-r--r--src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java2
-rw-r--r--src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java2
-rw-r--r--src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java54
-rw-r--r--src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java27
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/EntryListOverlay.java (renamed from src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java)121
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java43
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java22
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java2
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/brewing/DefaultBrewingCategory.java10
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/composting/DefaultCompostingCategory.java4
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/smelting/DefaultSmeltingCategory.java2
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/smoking/DefaultSmokingCategory.java2
23 files changed, 387 insertions, 134 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index 0f882570a..b5e259553 100644
--- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
@@ -13,7 +13,7 @@ import me.shedaniel.rei.api.*;
import me.shedaniel.rei.api.plugins.REIPluginV0;
import me.shedaniel.rei.client.*;
import me.shedaniel.rei.gui.ContainerScreenOverlay;
-import me.shedaniel.rei.gui.widget.ItemListOverlay;
+import me.shedaniel.rei.gui.widget.EntryListOverlay;
import me.shedaniel.rei.listeners.RecipeBookButtonWidgetHooks;
import me.shedaniel.rei.listeners.RecipeBookGuiHooks;
import net.fabricmc.api.ClientModInitializer;
@@ -57,7 +57,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
public static final Logger LOGGER;
private static final RecipeHelper RECIPE_HELPER = new RecipeHelperImpl();
- private static final ItemRegistry ITEM_REGISTRY = new ItemRegistryImpl();
+ private static final EntryRegistry ENTRY_REGISTRY = new EntryRegistryImpl();
private static final DisplayHelper DISPLAY_HELPER = new DisplayHelperImpl();
private static final Map<Identifier, REIPluginEntry> plugins = Maps.newHashMap();
private static final ExecutorService SYNC_RECIPES = Executors.newSingleThreadScheduledExecutor(r -> new Thread(r, "REI-SyncRecipes"));
@@ -75,8 +75,8 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
return configManager;
}
- public static ItemRegistry getItemRegisterer() {
- return ITEM_REGISTRY;
+ public static EntryRegistry getEntryRegistry() {
+ return ENTRY_REGISTRY;
}
public static DisplayHelper getDisplayHelper() {
@@ -143,7 +143,7 @@ public class RoughlyEnoughItemsCore implements ClientModInitializer {
ClientSidePacketRegistry.INSTANCE.register(RoughlyEnoughItemsNetwork.CREATE_ITEMS_MESSAGE_PACKET, (packetContext, packetByteBuf) -> {
ItemStack stack = packetByteBuf.readItemStack();
String player = packetByteBuf.readString(32767);
- packetContext.getPlayer().addChatMessage(new LiteralText(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", ItemListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getCount() + "").replaceAll("\\{player_name}", player)), false);
+ packetContext.getPlayer().addChatMessage(new LiteralText(I18n.translate("text.rei.cheat_items").replaceAll("\\{item_name}", EntryListOverlay.tryGetItemStackName(stack.copy())).replaceAll("\\{item_count}", stack.copy().getCount() + "").replaceAll("\\{player_name}", player)), false);
});
ClientSidePacketRegistry.INSTANCE.register(RoughlyEnoughItemsNetwork.NOT_ENOUGH_ITEMS_PACKET, (packetContext, packetByteBuf) -> {
Screen currentScreen = MinecraftClient.getInstance().currentScreen;
diff --git a/src/main/java/me/shedaniel/rei/api/Entry.java b/src/main/java/me/shedaniel/rei/api/Entry.java
new file mode 100644
index 000000000..148c0c242
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/api/Entry.java
@@ -0,0 +1,32 @@
+package me.shedaniel.rei.api;
+
+import me.shedaniel.rei.client.FluidEntry;
+import me.shedaniel.rei.client.ItemStackEntry;
+import net.minecraft.fluid.Fluid;
+import net.minecraft.item.ItemStack;
+
+import javax.annotation.Nullable;
+
+public interface Entry {
+ @SuppressWarnings("deprecation")
+ static Entry create(ItemStack itemStack) {
+ return new ItemStackEntry(itemStack);
+ }
+
+ @SuppressWarnings("deprecation")
+ static Entry create(Fluid fluid) {
+ return new FluidEntry(fluid);
+ }
+
+ Type getEntryType();
+
+ @Nullable
+ ItemStack getItemStack();
+
+ @Nullable
+ Fluid getFluid();
+
+ public static enum Type {
+ ITEM, FLUID
+ }
+}
diff --git a/src/main/java/me/shedaniel/rei/api/ItemRegistry.java b/src/main/java/me/shedaniel/rei/api/EntryRegistry.java
index 5c55ae3ac..effd1c8a4 100644
--- a/src/main/java/me/shedaniel/rei/api/ItemRegistry.java
+++ b/src/main/java/me/shedaniel/rei/api/EntryRegistry.java
@@ -5,19 +5,20 @@
package me.shedaniel.rei.api;
+import net.minecraft.fluid.Fluid;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import java.util.List;
-public interface ItemRegistry {
+public interface EntryRegistry {
/**
* Gets the current unmodifiable item list
*
* @return an unmodifiable item list
*/
- List<ItemStack> getItemList();
+ List<Entry> getEntryList();
/**
* Gets the current modifiable item list
@@ -25,7 +26,7 @@ public interface ItemRegistry {
* @return an modifiable item list
*/
@Deprecated
- List<ItemStack> getModifiableItemList();
+ List<Entry> getModifiableEntryList();
/**
* Gets all possible stacks from an item
@@ -43,6 +44,8 @@ public interface ItemRegistry {
*/
void registerItemStack(Item afterItem, ItemStack stack);
+ void registerFluid(Fluid fluid);
+
/**
* Registers multiple stacks to the item list
*
@@ -73,7 +76,7 @@ public interface ItemRegistry {
* @return whether the stack has been registered
*/
default boolean alreadyContain(ItemStack stack) {
- return getItemList().stream().anyMatch(stack1 -> ItemStack.areEqualIgnoreDamage(stack, stack1));
+ return getEntryList().stream().filter(entry -> entry.getEntryType() == Entry.Type.ITEM).anyMatch(entry -> ItemStack.areEqualIgnoreDamage(stack, entry.getItemStack()));
}
}
diff --git a/src/main/java/me/shedaniel/rei/api/Renderer.java b/src/main/java/me/shedaniel/rei/api/Renderer.java
index 87c3ef174..322e45106 100644
--- a/src/main/java/me/shedaniel/rei/api/Renderer.java
+++ b/src/main/java/me/shedaniel/rei/api/Renderer.java
@@ -6,9 +6,11 @@
package me.shedaniel.rei.api;
import me.shedaniel.rei.gui.renderers.EmptyRenderer;
+import me.shedaniel.rei.gui.renderers.FluidRenderer;
import me.shedaniel.rei.gui.renderers.ItemStackRenderer;
import me.shedaniel.rei.gui.renderers.SimpleRecipeRenderer;
import net.minecraft.client.gui.DrawableHelper;
+import net.minecraft.fluid.Fluid;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.MathHelper;
@@ -60,6 +62,14 @@ public abstract class Renderer extends DrawableHelper {
public static ItemStackRenderer fromItemStack(ItemStack stack) {
return fromItemStackSupplier(() -> stack);
}
+ public static FluidRenderer fromFluid(Fluid fluid) {
+ return new FluidRenderer() {
+ @Override
+ public Fluid getFluid() {
+ return fluid;
+ }
+ };
+ }
/**
* Gets an item stack renderer by an item stack
diff --git a/src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java b/src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java
index 3b71a30f5..3a728adb7 100644
--- a/src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java
+++ b/src/main/java/me/shedaniel/rei/api/plugins/REIPluginV0.java
@@ -6,7 +6,7 @@
package me.shedaniel.rei.api.plugins;
import me.shedaniel.rei.api.DisplayHelper;
-import me.shedaniel.rei.api.ItemRegistry;
+import me.shedaniel.rei.api.EntryRegistry;
import me.shedaniel.rei.api.REIPluginEntry;
import me.shedaniel.rei.api.RecipeHelper;
import net.fabricmc.loader.api.SemanticVersion;
@@ -25,9 +25,9 @@ public interface REIPluginV0 extends REIPluginEntry {
/**
* Registers items on the item panel
*
- * @param itemRegistry the helper class
+ * @param entryRegistry the helper class
*/
- default void registerItems(ItemRegistry itemRegistry) {
+ default void registerItems(EntryRegistry entryRegistry) {
}
/**
diff --git a/src/main/java/me/shedaniel/rei/client/ConfigObjectImpl.java b/src/main/java/me/shedaniel/rei/client/ConfigObjectImpl.java
index 8fac22090..a4f308bca 100644
--- a/src/main/java/me/shedaniel/rei/client/ConfigObjectImpl.java
+++ b/src/main/java/me/shedaniel/rei/client/ConfigObjectImpl.java
@@ -165,11 +165,11 @@ public class ConfigObjectImpl implements ConfigObject {
.withName("registerRecipesInAnotherThread")
.build();
- private ConfigValue<RelativePoint> choosePageDialogPoint = ConfigValue.builder(RelativePoint.class)
- .withParent(technical)
- .withDefaultValue(new RelativePoint(.5, .5))
- .withName("choosePageDialogPoint")
- .build();
+ // private ConfigValue<RelativePoint> choosePageDialogPoint = ConfigValue.builder(RelativePoint.class)
+ // .withParent(technical)
+ // .withDefaultValue(new RelativePoint(.5, .5))
+ // .withName("choosePageDialogPoint")
+ // .build();
public ConfigObjectImpl() throws FiberException {
@@ -297,11 +297,12 @@ public class ConfigObjectImpl implements ConfigObject {
@Override
public RelativePoint getChoosePageDialogPoint() {
- return choosePageDialogPoint.getValue();
+ // return choosePageDialogPoint.getValue();
+ return new RelativePoint(.5, .5);
}
@Override
public void setChoosePageDialogPoint(RelativePoint choosePageDialogPoint) {
- this.choosePageDialogPoint.setValue(choosePageDialogPoint);
+ // this.choosePageDialogPoint.setValue(choosePageDialogPoint);
}
}
diff --git a/src/main/java/me/shedaniel/rei/client/ItemRegistryImpl.java b/src/main/java/me/shedaniel/rei/client/EntryRegistryImpl.java
index 81bdffad1..9e4f72ff3 100644
--- a/src/main/java/me/shedaniel/rei/client/ItemRegistryImpl.java
+++ b/src/main/java/me/shedaniel/rei/client/EntryRegistryImpl.java
@@ -6,7 +6,9 @@
package me.shedaniel.rei.client;
import com.google.common.collect.Lists;
-import me.shedaniel.rei.api.ItemRegistry;
+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;
@@ -18,19 +20,19 @@ import java.util.TreeSet;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
-public class ItemRegistryImpl implements ItemRegistry {
+public class EntryRegistryImpl implements EntryRegistry {
- private final CopyOnWriteArrayList<ItemStack> itemList = Lists.newCopyOnWriteArrayList();
+ private final CopyOnWriteArrayList<Entry> entries = Lists.newCopyOnWriteArrayList();
@Override
- public List<ItemStack> getItemList() {
- return Collections.unmodifiableList(itemList);
+ public List<Entry> getEntryList() {
+ return Collections.unmodifiableList(entries);
}
@SuppressWarnings("deprecation")
@Override
- public List<ItemStack> getModifiableItemList() {
- return itemList;
+ public List<Entry> getModifiableEntryList() {
+ return entries;
}
@Override
@@ -46,14 +48,19 @@ public class ItemRegistryImpl implements ItemRegistry {
public void registerItemStack(Item afterItem, ItemStack stack) {
if (!stack.isEmpty() && !alreadyContain(stack))
if (afterItem == null || afterItem.equals(Items.AIR))
- itemList.add(stack);
+ entries.add(Entry.create(stack));
else {
- int last = itemList.size();
- for (int i = 0; i < itemList.size(); i++)
- if (itemList.get(i).getItem().equals(afterItem))
+ 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;
- itemList.add(last, stack);
+ entries.add(last, Entry.create(stack));
}
}
+ @Override
+ public void registerFluid(Fluid fluid) {
+ entries.add(Entry.create(fluid));
+ }
+
}
diff --git a/src/main/java/me/shedaniel/rei/client/FluidEntry.java b/src/main/java/me/shedaniel/rei/client/FluidEntry.java
new file mode 100644
index 000000000..27c37fae2
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/client/FluidEntry.java
@@ -0,0 +1,33 @@
+package me.shedaniel.rei.client;
+
+import me.shedaniel.rei.api.Entry;
+import net.minecraft.fluid.Fluid;
+import net.minecraft.item.ItemStack;
+
+import javax.annotation.Nullable;
+
+public class FluidEntry implements Entry {
+ private Fluid fluid;
+
+ @Deprecated
+ public FluidEntry(Fluid fluid) {
+ this.fluid = fluid;
+ }
+
+ @Override
+ public Type getEntryType() {
+ return Type.FLUID;
+ }
+
+ @Nullable
+ @Override
+ public ItemStack getItemStack() {
+ return null;
+ }
+
+ @Nullable
+ @Override
+ public Fluid getFluid() {
+ return fluid;
+ }
+}
diff --git a/src/main/java/me/shedaniel/rei/client/ItemStackEntry.java b/src/main/java/me/shedaniel/rei/client/ItemStackEntry.java
new file mode 100644
index 000000000..49855fb7d
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/client/ItemStackEntry.java
@@ -0,0 +1,33 @@
+package me.shedaniel.rei.client;
+
+import me.shedaniel.rei.api.Entry;
+import net.minecraft.fluid.Fluid;
+import net.minecraft.item.ItemStack;
+
+import javax.annotation.Nullable;
+
+public class ItemStackEntry implements Entry {
+ private ItemStack itemStack;
+
+ @Deprecated
+ public ItemStackEntry(ItemStack itemStack) {
+ this.itemStack = itemStack;
+ }
+
+ @Override
+ public Type getEntryType() {
+ return Type.ITEM;
+ }
+
+ @Nullable
+ @Override
+ public ItemStack getItemStack() {
+ return itemStack;
+ }
+
+ @Nullable
+ @Override
+ public Fluid getFluid() {
+ return null;
+ }
+}
diff --git a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
index 74322ce44..92f7299ff 100644
--- a/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
+++ b/src/main/java/me/shedaniel/rei/client/RecipeHelperImpl.java
@@ -241,7 +241,7 @@ public class RecipeHelperImpl implements RecipeHelper {
});
RoughlyEnoughItemsCore.LOGGER.info("[REI] Loading %d plugins: %s", plugins.size(), plugins.stream().map(REIPluginEntry::getPluginIdentifier).map(Identifier::toString).collect(Collectors.joining(", ")));
Collections.reverse(plugins);
- RoughlyEnoughItemsCore.getItemRegisterer().getModifiableItemList().clear();
+ RoughlyEnoughItemsCore.getEntryRegistry().getModifiableEntryList().clear();
Version reiVersion = FabricLoader.getInstance().getModContainer("roughlyenoughitems").get().getMetadata().getVersion();
if (!(reiVersion instanceof SemanticVersion))
RoughlyEnoughItemsCore.LOGGER.warn("[REI] Roughly Enough Items is not using semantic versioning, will be ignoring plugins' minimum versions!");
@@ -257,7 +257,7 @@ public class RecipeHelperImpl implements RecipeHelper {
((REIPluginV0) plugin).registerRecipeDisplays(this);
((REIPluginV0) plugin).registerBounds(RoughlyEnoughItemsCore.getDisplayHelper());
((REIPluginV0) plugin).registerOthers(this);
- ((REIPluginV0) plugin).registerItems(RoughlyEnoughItemsCore.getItemRegisterer());
+ ((REIPluginV0) plugin).registerItems(RoughlyEnoughItemsCore.getEntryRegistry());
} else {
throw new IllegalStateException("Invaild Plugin Class!");
}
@@ -293,7 +293,7 @@ public class RecipeHelperImpl implements RecipeHelper {
ScreenHelper.getOptionalOverlay().ifPresent(overlay -> overlay.shouldReInit = true);
long usedTime = System.currentTimeMillis() - startTime;
- RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered %d stack entries, %d recipes displays, %d bounds handler, %d visibility handlers and %d categories (%s) in %d ms.", RoughlyEnoughItemsCore.getItemRegisterer().getItemList().size(), recipeCount.get(), RoughlyEnoughItemsCore.getDisplayHelper().getAllBoundsHandlers().size(), getDisplayVisibilityHandlers().size(), categories.size(), String.join(", ", categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.toList())), usedTime);
+ RoughlyEnoughItemsCore.LOGGER.info("[REI] Registered %d stack entries, %d recipes displays, %d bounds handler, %d visibility handlers and %d categories (%s) in %d ms.", RoughlyEnoughItemsCore.getEntryRegistry().getEntryList().size(), recipeCount.get(), RoughlyEnoughItemsCore.getDisplayHelper().getAllBoundsHandlers().size(), getDisplayVisibilityHandlers().size(), categories.size(), String.join(", ", categories.stream().map(RecipeCategory::getCategoryName).collect(Collectors.toList())), usedTime);
}
@Override
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
index 4a9c5258a..d81871eca 100644
--- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
@@ -11,6 +11,7 @@ import me.shedaniel.cloth.api.ClientUtils;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.ClientHelper;
import me.shedaniel.rei.api.DisplayHelper;
+import me.shedaniel.rei.api.Entry;
import me.shedaniel.rei.api.RecipeHelper;
import me.shedaniel.rei.client.RecipeHelperImpl;
import me.shedaniel.rei.client.ScreenHelper;
@@ -19,8 +20,6 @@ import me.shedaniel.rei.gui.widget.*;
import me.shedaniel.rei.listeners.ContainerScreenHooks;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
-import net.minecraft.client.gui.AbstractParentElement;
-import net.minecraft.client.gui.Drawable;
import net.minecraft.client.gui.Element;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen;
@@ -49,7 +48,7 @@ public class ContainerScreenOverlay extends Widget {
private static final List<QueuedTooltip> QUEUED_TOOLTIPS = Lists.newArrayList();
public static String searchTerm = "";
private static int page = 0;
- private static ItemListOverlay itemListOverlay;
+ private static EntryListOverlay entryListOverlay;
private final List<Widget> widgets = Lists.newLinkedList();
public boolean shouldReInit = false;
private Rectangle rectangle;
@@ -57,8 +56,8 @@ public class ContainerScreenOverlay extends Widget {
private CraftableToggleButtonWidget toggleButtonWidget;
private ButtonWidget buttonLeft, buttonRight;
- public static ItemListOverlay getItemListOverlay() {
- return itemListOverlay;
+ public static EntryListOverlay getEntryListOverlay() {
+ return entryListOverlay;
}
public void init() {
@@ -72,8 +71,8 @@ public class ContainerScreenOverlay extends Widget {
this.window = MinecraftClient.getInstance().window;
DisplayHelper.DisplayBoundsHandler boundsHandler = RoughlyEnoughItemsCore.getDisplayHelper().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass());
this.rectangle = RoughlyEnoughItemsCore.getConfigManager().getConfig().isLeftHandSidePanel() ? boundsHandler.getLeftBounds(MinecraftClient.getInstance().currentScreen) : boundsHandler.getRightBounds(MinecraftClient.getInstance().currentScreen);
- widgets.add(itemListOverlay = new ItemListOverlay(page));
- itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
+ widgets.add(entryListOverlay = new EntryListOverlay(page));
+ entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
widgets.add(buttonLeft = new ButtonWidget(rectangle.x, rectangle.y + 5, 16, 16, new TranslatableText("text.rei.left_arrow")) {
@Override
@@ -81,7 +80,7 @@ public class ContainerScreenOverlay extends Widget {
page--;
if (page < 0)
page = getTotalPage();
- itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
+ entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
}
@Override
@@ -100,7 +99,7 @@ public class ContainerScreenOverlay extends Widget {
page++;
if (page > getTotalPage())
page = 0;
- itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
+ entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
}
@Override
@@ -232,7 +231,7 @@ public class ContainerScreenOverlay extends Widget {
public void onLabelClicked() {
MinecraftClient.getInstance().getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F));
page = 0;
- itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
+ entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
}
@Override
@@ -248,14 +247,14 @@ public class ContainerScreenOverlay extends Widget {
ScreenHelper.searchField.setText(searchTerm);
ScreenHelper.searchField.setChangedListener(s -> {
searchTerm = s;
- itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true);
+ entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true);
});
if (RoughlyEnoughItemsCore.getConfigManager().getConfig().isCraftableFilterEnabled())
this.widgets.add(toggleButtonWidget = new CraftableToggleButtonWidget(getCraftableToggleArea()) {
@Override
public void onPressed() {
RoughlyEnoughItemsCore.getConfigManager().toggleCraftableOnly();
- itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true);
+ entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true);
}
@Override
@@ -266,7 +265,7 @@ public class ContainerScreenOverlay extends Widget {
});
else
toggleButtonWidget = null;
- this.itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
+ this.entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, false);
}
private Weather getNextWeather() {
@@ -358,16 +357,18 @@ public class ContainerScreenOverlay extends Widget {
else if (RoughlyEnoughItemsCore.getConfigManager().isCraftableOnlyEnabled() && ((currentStacks.size() != ScreenHelper.inventoryStacks.size()) || !hasSameListContent(new LinkedList<>(ScreenHelper.inventoryStacks), currentStacks))) {
ScreenHelper.inventoryStacks = currentStacks;
DisplayHelper.DisplayBoundsHandler<?> boundsHandler = RoughlyEnoughItemsCore.getDisplayHelper().getResponsibleBoundsHandler(MinecraftClient.getInstance().currentScreen.getClass());
- itemListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true);
+ entryListOverlay.updateList(boundsHandler, boundsHandler.getItemListArea(rectangle), page, searchTerm, true);
}
- if (MinecraftClient.getInstance().currentScreen instanceof AbstractContainerScreen && SearchFieldWidget.isSearching) {
+ if (SearchFieldWidget.isSearching) {
GuiLighting.disable();
blitOffset = 200;
- ContainerScreenHooks hooks = (ContainerScreenHooks) MinecraftClient.getInstance().currentScreen;
- int left = hooks.rei_getContainerLeft(), top = hooks.rei_getContainerTop();
- for (Slot slot : ((AbstractContainerScreen<?>) MinecraftClient.getInstance().currentScreen).getContainer().slotList)
- if (!slot.hasStack() || !itemListOverlay.filterItem(slot.getStack(), itemListOverlay.getLastSearchArgument()))
- fillGradient(left + slot.xPosition, top + slot.yPosition, left + slot.xPosition + 16, top + slot.yPosition + 16, -601874400, -601874400);
+ if (MinecraftClient.getInstance().currentScreen instanceof AbstractContainerScreen) {
+ ContainerScreenHooks hooks = (ContainerScreenHooks) MinecraftClient.getInstance().currentScreen;
+ int left = hooks.rei_getContainerLeft(), top = hooks.rei_getContainerTop();
+ for (Slot slot : ((AbstractContainerScreen<?>) MinecraftClient.getInstance().currentScreen).getContainer().slotList)
+ if (!slot.hasStack() || !entryListOverlay.filterEntry(Entry.create(slot.getStack()), entryListOverlay.getLastSearchArgument()))
+ fillGradient(left + slot.xPosition, top + slot.yPosition, left + slot.xPosition + 16, top + slot.yPosition + 16, -601874400, -601874400);
+ }
blitOffset = 0;
}
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
@@ -461,7 +462,7 @@ public class ContainerScreenOverlay extends Widget {
}
private int getTotalPage() {
- return itemListOverlay.getTotalPage();
+ return entryListOverlay.getTotalPage();
}
@Override
diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
index bfe92d0d0..1863495bc 100644
--- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
+++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
@@ -301,7 +301,7 @@ public class RecipeViewingScreen extends Screen {
for (List<ItemStack> workingStation : workingStations) {
preWidgets.add(new SlotWidget(xx, yy, Renderer.fromItemStacks(workingStation), true, true, true) {
@Override
- protected List<String> getExtraToolTips(ItemStack stack) {
+ protected List<String> getExtraItemToolTips(ItemStack stack) {
return list;
}
});
diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
index 887915a50..1e3af26b3 100644
--- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
+++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
@@ -109,7 +109,7 @@ public class VillagerRecipeViewingScreen extends Screen {
for (List<ItemStack> workingStation : workingStations) {
widgets.add(new SlotWidget(xx, yy, Renderer.fromItemStacks(workingStation), true, true, true) {
@Override
- protected List<String> getExtraToolTips(ItemStack stack) {
+ protected List<String> getExtraItemToolTips(ItemStack stack) {
return list;
}
});
diff --git a/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java b/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java
new file mode 100644
index 000000000..2a777afad
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/gui/renderers/FluidRenderer.java
@@ -0,0 +1,54 @@
+package me.shedaniel.rei.gui.renderers;
+
+import com.google.common.collect.Lists;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
+import me.shedaniel.rei.api.ClientHelper;
+import me.shedaniel.rei.api.Renderer;
+import me.shedaniel.rei.client.ScreenHelper;
+import me.shedaniel.rei.gui.widget.EntryListOverlay;
+import me.shedaniel.rei.gui.widget.QueuedTooltip;
+import net.minecraft.fluid.Fluid;
+import net.minecraft.util.registry.Registry;
+
+import java.util.Collections;
+import java.util.List;
+
+public abstract class FluidRenderer extends Renderer {
+ public boolean drawTooltip = false;
+
+ @Override
+ public void render(int x, int y, double mouseX, double mouseY, float delta) {
+ int l = x - 8, i1 = y - 6;
+ // TODO: Render Fluid
+ if (drawTooltip && mouseX >= x - 8 && mouseX <= x + 8 && mouseY >= y - 6 && mouseY <= y + 10)
+ queueTooltip(getFluid(), delta);
+ this.drawTooltip = false;
+ }
+
+ protected void queueTooltip(Fluid fluid, float delta) {
+ ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltip(fluid)));
+ }
+
+ private List<String> getTooltip(Fluid fluid) {
+ List<String> toolTip = Lists.newArrayList(EntryListOverlay.tryGetFluidName(fluid));
+ if (RoughlyEnoughItemsCore.getConfigManager().getConfig().shouldAppendModNames()) {
+ final String modString = ClientHelper.getInstance().getFormattedModFromIdentifier(Registry.FLUID.getId(fluid));
+ toolTip.addAll(getExtraToolTips(fluid));
+ boolean alreadyHasMod = false;
+ for (String s : toolTip)
+ if (s.equalsIgnoreCase(modString)) {
+ alreadyHasMod = true;
+ break;
+ }
+ if (!alreadyHasMod)
+ toolTip.add(modString);
+ }
+ return toolTip;
+ }
+
+ protected List<String> getExtr