diff options
Diffstat (limited to 'src/main/java')
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 |
