Change crafting monitor task tooltip.
This commit is contained in:
@@ -89,6 +89,11 @@ public interface ICraftingTask {
|
|||||||
*/
|
*/
|
||||||
boolean isValid();
|
boolean isValid();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the time in ms when this task has started
|
||||||
|
*/
|
||||||
|
long getExecutionStarted();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the missing items
|
* @return the missing items
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.api.network.grid;
|
package com.raoulvdberge.refinedstorage.api.network.grid;
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
||||||
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -18,9 +19,15 @@ public interface IGridTab {
|
|||||||
List<IFilter> getFilters();
|
List<IFilter> getFilters();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the name
|
* Draws the tooltip of this tab at the given position.
|
||||||
|
*
|
||||||
|
* @param x the x position
|
||||||
|
* @param y the y position
|
||||||
|
* @param screenWidth the screen width
|
||||||
|
* @param screenHeight the screen height
|
||||||
|
* @param fontRenderer the font renderer
|
||||||
*/
|
*/
|
||||||
String getName();
|
void drawTooltip(int x, int y, int screenWidth, int screenHeight, FontRenderer fontRenderer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the icon
|
* @return the icon
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
private static final String NBT_TICKS = "Ticks";
|
private static final String NBT_TICKS = "Ticks";
|
||||||
private static final String NBT_ID = "Id";
|
private static final String NBT_ID = "Id";
|
||||||
private static final String NBT_MISSING = "Missing";
|
private static final String NBT_MISSING = "Missing";
|
||||||
|
private static final String NBT_EXECUTION_STARTED = "ExecutionStarted";
|
||||||
|
|
||||||
private INetwork network;
|
private INetwork network;
|
||||||
private ItemStack requested;
|
private ItemStack requested;
|
||||||
@@ -59,6 +60,7 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
private Set<ICraftingPattern> patternsUsed = new HashSet<>();
|
private Set<ICraftingPattern> patternsUsed = new HashSet<>();
|
||||||
private int ticks = 0;
|
private int ticks = 0;
|
||||||
private long calculationStarted;
|
private long calculationStarted;
|
||||||
|
private long executionStarted = -1;
|
||||||
private UUID id = UUID.randomUUID();
|
private UUID id = UUID.randomUUID();
|
||||||
|
|
||||||
private IStackList<ItemStack> toTake = API.instance().createItemStackList();
|
private IStackList<ItemStack> toTake = API.instance().createItemStackList();
|
||||||
@@ -104,6 +106,10 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
|
|
||||||
this.missing.add(missingItem);
|
this.missing.add(missingItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tag.hasKey(NBT_EXECUTION_STARTED)) {
|
||||||
|
this.executionStarted = tag.getLong(NBT_EXECUTION_STARTED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -297,6 +303,10 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean update() {
|
public boolean update() {
|
||||||
|
if (executionStarted == -1) {
|
||||||
|
executionStarted = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
boolean allCompleted = true;
|
boolean allCompleted = true;
|
||||||
|
|
||||||
if (ticks % getTickInterval(pattern.getContainer().getSpeedUpgradeCount()) == 0) {
|
if (ticks % getTickInterval(pattern.getContainer().getSpeedUpgradeCount()) == 0) {
|
||||||
@@ -513,6 +523,11 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getExecutionStarted() {
|
||||||
|
return executionStarted;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IStackList<ItemStack> getMissing() {
|
public IStackList<ItemStack> getMissing() {
|
||||||
return missing;
|
return missing;
|
||||||
@@ -531,6 +546,7 @@ public class CraftingTask implements ICraftingTask {
|
|||||||
tag.setTag(NBT_INSERTER, inserter.writeToNbt());
|
tag.setTag(NBT_INSERTER, inserter.writeToNbt());
|
||||||
tag.setInteger(NBT_TICKS, ticks);
|
tag.setInteger(NBT_TICKS, ticks);
|
||||||
tag.setUniqueId(NBT_ID, id);
|
tag.setUniqueId(NBT_ID, id);
|
||||||
|
tag.setLong(NBT_EXECUTION_STARTED, executionStarted);
|
||||||
|
|
||||||
NBTTagList steps = new NBTTagList();
|
NBTTagList steps = new NBTTagList();
|
||||||
for (CraftingStep step : this.steps) {
|
for (CraftingStep step : this.steps) {
|
||||||
|
|||||||
@@ -2,8 +2,11 @@ package com.raoulvdberge.refinedstorage.apiimpl.network.grid;
|
|||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGridTab;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGridTab;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
import com.raoulvdberge.refinedstorage.api.util.IFilter;
|
||||||
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.fml.client.config.GuiUtils;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GridTab implements IGridTab {
|
public class GridTab implements IGridTab {
|
||||||
@@ -23,8 +26,10 @@ public class GridTab implements IGridTab {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public void drawTooltip(int x, int y, int screenWidth, int screenHeight, FontRenderer fontRenderer) {
|
||||||
return name;
|
if (!name.trim().equals("")) {
|
||||||
|
GuiUtils.drawHoveringText(Collections.singletonList(name), x, y, screenWidth, screenHeight, -1, fontRenderer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -92,6 +92,14 @@ public abstract class GuiBase extends GuiContainer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getScreenWidth() {
|
||||||
|
return screenWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getScreenHeight() {
|
||||||
|
return screenHeight;
|
||||||
|
}
|
||||||
|
|
||||||
public Scrollbar getScrollbar() {
|
public Scrollbar getScrollbar() {
|
||||||
return scrollbar;
|
return scrollbar;
|
||||||
}
|
}
|
||||||
@@ -374,7 +382,7 @@ public abstract class GuiBase extends GuiContainer {
|
|||||||
|
|
||||||
public void drawTooltip(@Nonnull ItemStack stack, int x, int y, List<String> lines) {
|
public void drawTooltip(@Nonnull ItemStack stack, int x, int y, List<String> lines) {
|
||||||
GlStateManager.disableLighting();
|
GlStateManager.disableLighting();
|
||||||
GuiUtils.drawHoveringText(stack, lines, x, y, width - guiLeft, height, -1, fontRenderer);
|
GuiUtils.drawHoveringText(stack, lines, x, y, screenWidth, screenHeight, -1, fontRenderer);
|
||||||
GlStateManager.enableLighting();
|
GlStateManager.enableLighting();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.raoulvdberge.refinedstorage.gui;
|
package com.raoulvdberge.refinedstorage.gui;
|
||||||
|
|
||||||
import com.google.common.base.Optional;
|
import com.google.common.base.Optional;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.craftingmonitor.ICraftingMonitorElement;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IGrid;
|
||||||
@@ -15,6 +16,8 @@ import com.raoulvdberge.refinedstorage.gui.control.SideButtonRedstoneMode;
|
|||||||
import com.raoulvdberge.refinedstorage.gui.control.TabList;
|
import com.raoulvdberge.refinedstorage.gui.control.TabList;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel;
|
import com.raoulvdberge.refinedstorage.network.MessageCraftingMonitorCancel;
|
||||||
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
import com.raoulvdberge.refinedstorage.tile.craftingmonitor.ICraftingMonitor;
|
||||||
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.client.renderer.GlStateManager;
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
import net.minecraft.client.renderer.RenderHelper;
|
import net.minecraft.client.renderer.RenderHelper;
|
||||||
@@ -45,12 +48,14 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
|
|||||||
private UUID id;
|
private UUID id;
|
||||||
private ItemStack requested;
|
private ItemStack requested;
|
||||||
private int qty;
|
private int qty;
|
||||||
|
private long executionStarted;
|
||||||
private List<ICraftingMonitorElement> elements;
|
private List<ICraftingMonitorElement> elements;
|
||||||
|
|
||||||
public CraftingMonitorTask(UUID id, ItemStack requested, int qty, List<ICraftingMonitorElement> elements) {
|
public CraftingMonitorTask(UUID id, ItemStack requested, int qty, long executionStarted, List<ICraftingMonitorElement> elements) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.requested = requested;
|
this.requested = requested;
|
||||||
this.qty = qty;
|
this.qty = qty;
|
||||||
|
this.executionStarted = executionStarted;
|
||||||
this.elements = elements;
|
this.elements = elements;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,8 +65,18 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public void drawTooltip(int x, int y, int screenWidth, int screenHeight, FontRenderer fontRenderer) {
|
||||||
return qty + "x " + requested.getDisplayName();
|
List<String> textLines = Lists.newArrayList(requested.getDisplayName());
|
||||||
|
List<String> smallTextLines = Lists.newArrayList();
|
||||||
|
|
||||||
|
int totalSecs = (int) (System.currentTimeMillis() - executionStarted) / 1000;
|
||||||
|
int minutes = (totalSecs % 3600) / 60;
|
||||||
|
int seconds = totalSecs % 60;
|
||||||
|
|
||||||
|
smallTextLines.add(I18n.format("gui.refinedstorage:crafting_monitor.tooltip.requested", qty));
|
||||||
|
smallTextLines.add(String.format("%02d:%02d", minutes, seconds));
|
||||||
|
|
||||||
|
RenderUtils.drawTooltipWithSmallText(textLines, smallTextLines, true, ItemStack.EMPTY, x, y, screenWidth, screenHeight, fontRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -89,6 +104,7 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
|
|||||||
super(container, 176, 230);
|
super(container, 176, 230);
|
||||||
|
|
||||||
this.craftingMonitor = craftingMonitor;
|
this.craftingMonitor = craftingMonitor;
|
||||||
|
|
||||||
this.tabs = new TabList(this, () -> tasks, () -> (int) Math.floor((float) Math.max(0, tasks.size() - 1) / (float) ICraftingMonitor.TABS_PER_PAGE), craftingMonitor::getTabPage, () -> {
|
this.tabs = new TabList(this, () -> tasks, () -> (int) Math.floor((float) Math.max(0, tasks.size() - 1) / (float) ICraftingMonitor.TABS_PER_PAGE), craftingMonitor::getTabPage, () -> {
|
||||||
IGridTab tab = getCurrentTab();
|
IGridTab tab = getCurrentTab();
|
||||||
|
|
||||||
@@ -98,6 +114,7 @@ public class GuiCraftingMonitor extends GuiBase implements IResizableDisplay {
|
|||||||
|
|
||||||
return tasks.indexOf(tab);
|
return tasks.indexOf(tab);
|
||||||
}, ICraftingMonitor.TABS_PER_PAGE);
|
}, ICraftingMonitor.TABS_PER_PAGE);
|
||||||
|
|
||||||
this.tabs.addListener(new TabList.ITabListListener() {
|
this.tabs.addListener(new TabList.ITabListListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSelectionChanged(int tab) {
|
public void onSelectionChanged(int tab) {
|
||||||
|
|||||||
@@ -144,8 +144,8 @@ public class TabList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void drawTooltip(FontRenderer fontRenderer, int mouseX, int mouseY) {
|
public void drawTooltip(FontRenderer fontRenderer, int mouseX, int mouseY) {
|
||||||
if (tabHovering >= 0 && tabHovering < tabs.get().size() && !tabs.get().get(tabHovering).getName().equalsIgnoreCase("")) {
|
if (tabHovering >= 0 && tabHovering < tabs.get().size()) {
|
||||||
gui.drawTooltip(mouseX, mouseY, tabs.get().get(tabHovering).getName());
|
tabs.get().get(tabHovering).drawTooltip(mouseX, mouseY, gui.getScreenWidth(), gui.getScreenHeight(), fontRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pages.get() > 0) {
|
if (pages.get() > 0) {
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ import com.raoulvdberge.refinedstorage.tile.grid.portable.TilePortableGrid;
|
|||||||
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
import com.raoulvdberge.refinedstorage.util.RenderUtils;
|
||||||
import com.raoulvdberge.refinedstorage.util.TimeUtils;
|
import com.raoulvdberge.refinedstorage.util.TimeUtils;
|
||||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||||
import net.minecraft.client.gui.FontRenderer;
|
|
||||||
import net.minecraft.client.gui.GuiButton;
|
import net.minecraft.client.gui.GuiButton;
|
||||||
import net.minecraft.client.gui.GuiScreen;
|
import net.minecraft.client.gui.GuiScreen;
|
||||||
import net.minecraft.client.renderer.GlStateManager;
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
@@ -34,11 +33,7 @@ import net.minecraft.client.resources.I18n;
|
|||||||
import net.minecraft.init.SoundEvents;
|
import net.minecraft.init.SoundEvents;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
|
||||||
import net.minecraftforge.client.event.RenderTooltipEvent;
|
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
|
||||||
import net.minecraftforge.fml.client.config.GuiCheckBox;
|
import net.minecraftforge.fml.client.config.GuiCheckBox;
|
||||||
import net.minecraftforge.fml.client.config.GuiUtils;
|
|
||||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -377,154 +372,21 @@ public class GuiGrid extends GuiBase implements IResizableDisplay {
|
|||||||
tabs.drawTooltip(fontRenderer, mouseX, mouseY);
|
tabs.drawTooltip(fontRenderer, mouseX, mouseY);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copied with some tweaks from GuiUtils#drawHoveringText(@Nonnull final ItemStack stack, List<String> textLines, int mouseX, int mouseY, int screenWidth, int screenHeight, int maxTextWidth, FontRenderer font)
|
private void drawGridTooltip(IGridStack gridStack, int mouseX, int mouseY) {
|
||||||
public void drawGridTooltip(IGridStack gridStack, int mouseX, int mouseY) {
|
|
||||||
// RS BEGIN
|
|
||||||
List<String> textLines = Lists.newArrayList(gridStack.getTooltip().split("\n"));
|
List<String> textLines = Lists.newArrayList(gridStack.getTooltip().split("\n"));
|
||||||
|
List<String> smallTextLines = Lists.newArrayList();
|
||||||
|
|
||||||
if (RS.INSTANCE.config.detailedTooltip) {
|
if (!(gridStack instanceof GridStackItem) || !((GridStackItem) gridStack).doesDisplayCraftText()) {
|
||||||
if (!(gridStack instanceof GridStackItem) || !((GridStackItem) gridStack).doesDisplayCraftText()) {
|
smallTextLines.add(I18n.format("misc.refinedstorage:total", gridStack.getFormattedFullQuantity()));
|
||||||
textLines.add("");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (gridStack.getTrackerEntry() != null) {
|
if (gridStack.getTrackerEntry() != null) {
|
||||||
textLines.add("");
|
smallTextLines.add(TimeUtils.getAgo(gridStack.getTrackerEntry().getTime(), gridStack.getTrackerEntry().getName()));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack stack = gridStack instanceof GridStackItem ? ((GridStackItem) gridStack).getStack() : ItemStack.EMPTY;
|
ItemStack stack = gridStack instanceof GridStackItem ? ((GridStackItem) gridStack).getStack() : ItemStack.EMPTY;
|
||||||
// RS END
|
|
||||||
|
|
||||||
if (!textLines.isEmpty()) {
|
RenderUtils.drawTooltipWithSmallText(textLines, smallTextLines, RS.INSTANCE.config.detailedTooltip, stack, mouseX, mouseY, screenWidth, screenHeight, fontRenderer);
|
||||||
RenderTooltipEvent.Pre event = new RenderTooltipEvent.Pre(stack, textLines, mouseX, mouseY, screenWidth, screenHeight, -1, fontRenderer);
|
|
||||||
if (MinecraftForge.EVENT_BUS.post(event)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
mouseX = event.getX();
|
|
||||||
mouseY = event.getY();
|
|
||||||
screenWidth = event.getScreenWidth();
|
|
||||||
screenHeight = event.getScreenHeight();
|
|
||||||
FontRenderer font = event.getFontRenderer();
|
|
||||||
|
|
||||||
// RS BEGIN
|
|
||||||
float textScale = font.getUnicodeFlag() ? 1F : 0.7F;
|
|
||||||
// RS END
|
|
||||||
|
|
||||||
GlStateManager.disableRescaleNormal();
|
|
||||||
RenderHelper.disableStandardItemLighting();
|
|
||||||
GlStateManager.disableLighting();
|
|
||||||
GlStateManager.disableDepth();
|
|
||||||
int tooltipTextWidth = 0;
|
|
||||||
|
|
||||||
for (String textLine : textLines) {
|
|
||||||
int textLineWidth = font.getStringWidth(textLine);
|
|
||||||
|
|
||||||
if (textLineWidth > tooltipTextWidth) {
|
|
||||||
tooltipTextWidth = textLineWidth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// RS BEGIN
|
|
||||||
if (RS.INSTANCE.config.detailedTooltip) {
|
|
||||||
int size;
|
|
||||||
|
|
||||||
if (!(gridStack instanceof GridStackItem) || !((GridStackItem) gridStack).doesDisplayCraftText()) {
|
|
||||||
size = (int) (font.getStringWidth(I18n.format("misc.refinedstorage:total", gridStack.getFormattedFullQuantity())) * textScale);
|
|
||||||
|
|
||||||
if (size > tooltipTextWidth) {
|
|
||||||
tooltipTextWidth = size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gridStack.getTrackerEntry() != null) {
|
|
||||||
size = (int) (font.getStringWidth(TimeUtils.getAgo(gridStack.getTrackerEntry().getTime(), gridStack.getTrackerEntry().getName())) * textScale);
|
|
||||||
|
|
||||||
if (size > tooltipTextWidth) {
|
|
||||||
tooltipTextWidth = size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// RS END
|
|
||||||
|
|
||||||
int titleLinesCount = 1;
|
|
||||||
int tooltipX = mouseX + 12;
|
|
||||||
|
|
||||||
int tooltipY = mouseY - 12;
|
|
||||||
int tooltipHeight = 8;
|
|
||||||
|
|
||||||
if (textLines.size() > 1) {
|
|
||||||
tooltipHeight += (textLines.size() - 1) * 10;
|
|
||||||
if (textLines.size() > titleLinesCount) {
|
|
||||||
tooltipHeight += 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tooltipY + tooltipHeight + 6 > screenHeight) {
|
|
||||||
tooltipY = screenHeight - tooltipHeight - 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
final int zLevel = 300;
|
|
||||||
final int backgroundColor = 0xF0100010;
|
|
||||||
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 4, tooltipX + tooltipTextWidth + 3, tooltipY - 3, backgroundColor, backgroundColor);
|
|
||||||
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY + tooltipHeight + 3, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 4, backgroundColor, backgroundColor);
|
|
||||||
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
|
|
||||||
GuiUtils.drawGradientRect(zLevel, tooltipX - 4, tooltipY - 3, tooltipX - 3, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
|
|
||||||
GuiUtils.drawGradientRect(zLevel, tooltipX + tooltipTextWidth + 3, tooltipY - 3, tooltipX + tooltipTextWidth + 4, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
|
|
||||||
final int borderColorStart = 0x505000FF;
|
|
||||||
final int borderColorEnd = (borderColorStart & 0xFEFEFE) >> 1 | borderColorStart & 0xFF000000;
|
|
||||||
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 3 + 1, tooltipX - 3 + 1, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd);
|
|
||||||
GuiUtils.drawGradientRect(zLevel, tooltipX + tooltipTextWidth + 2, tooltipY - 3 + 1, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd);
|
|
||||||
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, tooltipY - 3 + 1, borderColorStart, borderColorStart);
|
|
||||||
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY + tooltipHeight + 2, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, borderColorEnd, borderColorEnd);
|
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.post(new RenderTooltipEvent.PostBackground(stack, textLines, tooltipX, tooltipY, font, tooltipTextWidth, tooltipHeight));
|
|
||||||
int tooltipTop = tooltipY;
|
|
||||||
|
|
||||||
for (int lineNumber = 0; lineNumber < textLines.size(); ++lineNumber) {
|
|
||||||
String line = textLines.get(lineNumber);
|
|
||||||
font.drawStringWithShadow(line, (float) tooltipX, (float) tooltipY, -1);
|
|
||||||
|
|
||||||
if (lineNumber + 1 == titleLinesCount) {
|
|
||||||
tooltipY += 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltipY += 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
MinecraftForge.EVENT_BUS.post(new RenderTooltipEvent.PostText(stack, textLines, tooltipX, tooltipTop, font, tooltipTextWidth, tooltipHeight));
|
|
||||||
|
|
||||||
// RS BEGIN
|
|
||||||
if (RS.INSTANCE.config.detailedTooltip) {
|
|
||||||
GlStateManager.pushMatrix();
|
|
||||||
GlStateManager.scale(textScale, textScale, 1);
|
|
||||||
|
|
||||||
if (!(gridStack instanceof GridStackItem) || !((GridStackItem) gridStack).doesDisplayCraftText()) {
|
|
||||||
font.drawStringWithShadow(
|
|
||||||
TextFormatting.GRAY + I18n.format("misc.refinedstorage:total", gridStack.getFormattedFullQuantity()),
|
|
||||||
RenderUtils.getOffsetOnScale(tooltipX, textScale),
|
|
||||||
RenderUtils.getOffsetOnScale(tooltipTop + tooltipHeight - (gridStack.getTrackerEntry() != null ? 15 : 6) - (font.getUnicodeFlag() ? 2 : 0), textScale),
|
|
||||||
-1
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (gridStack.getTrackerEntry() != null) {
|
|
||||||
font.drawStringWithShadow(
|
|
||||||
TextFormatting.GRAY + TimeUtils.getAgo(gridStack.getTrackerEntry().getTime(), gridStack.getTrackerEntry().getName()),
|
|
||||||
RenderUtils.getOffsetOnScale(tooltipX, textScale),
|
|
||||||
RenderUtils.getOffsetOnScale(tooltipTop + tooltipHeight - 6 - (font.getUnicodeFlag() ? 2 : 0), textScale),
|
|
||||||
-1
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
GlStateManager.popMatrix();
|
|
||||||
}
|
|
||||||
// RS END
|
|
||||||
|
|
||||||
GlStateManager.enableLighting();
|
|
||||||
GlStateManager.enableDepth();
|
|
||||||
RenderHelper.enableStandardItemLighting();
|
|
||||||
GlStateManager.enableRescaleNormal();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -6,16 +6,12 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.StorageTrackerEntry;
|
|||||||
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
import com.raoulvdberge.refinedstorage.gui.GuiBase;
|
||||||
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import net.minecraft.client.Minecraft;
|
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
import net.minecraft.client.util.ITooltipFlag;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.text.TextFormatting;
|
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class GridStackItem implements IGridStack {
|
public class GridStackItem implements IGridStack {
|
||||||
@@ -103,18 +99,7 @@ public class GridStackItem implements IGridStack {
|
|||||||
@Override
|
@Override
|
||||||
public String getTooltip() {
|
public String getTooltip() {
|
||||||
try {
|
try {
|
||||||
List<String> lines = stack.getTooltip(Minecraft.getMinecraft().player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL);
|
return StackUtils.getItemTooltip(stack).stream().collect(Collectors.joining("\n"));
|
||||||
|
|
||||||
// From GuiScreen#renderToolTip
|
|
||||||
for (int i = 0; i < lines.size(); ++i) {
|
|
||||||
if (i == 0) {
|
|
||||||
lines.set(i, stack.getRarity().rarityColor + lines.get(i));
|
|
||||||
} else {
|
|
||||||
lines.set(i, TextFormatting.GRAY + lines.get(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return lines.stream().collect(Collectors.joining("\n"));
|
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public class ItemFilter extends ItemBase {
|
|||||||
public String getItemStackDisplayName(ItemStack stack) {
|
public String getItemStackDisplayName(ItemStack stack) {
|
||||||
String name = getName(stack);
|
String name = getName(stack);
|
||||||
|
|
||||||
if (!name.equalsIgnoreCase("")) {
|
if (!name.trim().equals("")) {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler
|
|||||||
UUID id = UUID.fromString(ByteBufUtils.readUTF8String(buf));
|
UUID id = UUID.fromString(ByteBufUtils.readUTF8String(buf));
|
||||||
ItemStack requested = ByteBufUtils.readItemStack(buf);
|
ItemStack requested = ByteBufUtils.readItemStack(buf);
|
||||||
int qty = buf.readInt();
|
int qty = buf.readInt();
|
||||||
|
long executionStarted = buf.readLong();
|
||||||
|
|
||||||
List<ICraftingMonitorElement> elements = new ArrayList<>();
|
List<ICraftingMonitorElement> elements = new ArrayList<>();
|
||||||
|
|
||||||
int elementCount = buf.readInt();
|
int elementCount = buf.readInt();
|
||||||
@@ -51,7 +53,7 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.add(new GuiCraftingMonitor.CraftingMonitorTask(id, requested, qty, elements));
|
tasks.add(new GuiCraftingMonitor.CraftingMonitorTask(id, requested, qty, executionStarted, elements));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,6 +65,7 @@ public class MessageCraftingMonitorElements implements IMessage, IMessageHandler
|
|||||||
ByteBufUtils.writeUTF8String(buf, task.getId().toString());
|
ByteBufUtils.writeUTF8String(buf, task.getId().toString());
|
||||||
ByteBufUtils.writeItemStack(buf, task.getRequested());
|
ByteBufUtils.writeItemStack(buf, task.getRequested());
|
||||||
buf.writeInt(task.getQuantity());
|
buf.writeInt(task.getQuantity());
|
||||||
|
buf.writeLong(task.getExecutionStarted());
|
||||||
|
|
||||||
List<ICraftingMonitorElement> elements = task.getCraftingMonitorElements();
|
List<ICraftingMonitorElement> elements = task.getCraftingMonitorElements();
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,10 @@ package com.raoulvdberge.refinedstorage.util;
|
|||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.gui.FontRenderer;
|
||||||
import net.minecraft.client.renderer.BufferBuilder;
|
import net.minecraft.client.renderer.BufferBuilder;
|
||||||
import net.minecraft.client.renderer.GlStateManager;
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
|
import net.minecraft.client.renderer.RenderHelper;
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
@@ -18,10 +20,15 @@ import net.minecraft.util.math.AxisAlignedBB;
|
|||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
import net.minecraft.util.text.TextFormatting;
|
||||||
|
import net.minecraftforge.client.event.RenderTooltipEvent;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.common.model.TRSRTransformation;
|
import net.minecraftforge.common.model.TRSRTransformation;
|
||||||
import net.minecraftforge.fluids.Fluid;
|
import net.minecraftforge.fluids.Fluid;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import net.minecraftforge.fml.client.config.GuiUtils;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
import javax.vecmath.Matrix4f;
|
import javax.vecmath.Matrix4f;
|
||||||
import javax.vecmath.Vector3f;
|
import javax.vecmath.Vector3f;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -325,4 +332,136 @@ public final class RenderUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copied with some tweaks from GuiUtils#drawHoveringText(@Nonnull final ItemStack stack, List<String> textLines, int mouseX, int mouseY, int screenWidth, int screenHeight, int maxTextWidth, FontRenderer font)
|
||||||
|
public static void drawTooltipWithSmallText(List<String> textLines, List<String> smallTextLines, boolean showSmallText, @Nonnull ItemStack stack, int mouseX, int mouseY, int screenWidth, int screenHeight, FontRenderer fontRenderer) {
|
||||||
|
// RS BEGIN
|
||||||
|
if (showSmallText) {
|
||||||
|
for (int i = 0; i < smallTextLines.size(); ++i) {
|
||||||
|
textLines.add("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// RS END
|
||||||
|
|
||||||
|
if (!textLines.isEmpty()) {
|
||||||
|
RenderTooltipEvent.Pre event = new RenderTooltipEvent.Pre(stack, textLines, mouseX, mouseY, screenWidth, screenHeight, -1, fontRenderer);
|
||||||
|
if (MinecraftForge.EVENT_BUS.post(event)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mouseX = event.getX();
|
||||||
|
mouseY = event.getY();
|
||||||
|
|
||||||
|
screenWidth = event.getScreenWidth();
|
||||||
|
screenHeight = event.getScreenHeight();
|
||||||
|
|
||||||
|
FontRenderer font = event.getFontRenderer();
|
||||||
|
|
||||||
|
// RS BEGIN
|
||||||
|
float textScale = font.getUnicodeFlag() ? 1F : 0.7F;
|
||||||
|
// RS END
|
||||||
|
|
||||||
|
GlStateManager.disableRescaleNormal();
|
||||||
|
RenderHelper.disableStandardItemLighting();
|
||||||
|
GlStateManager.disableLighting();
|
||||||
|
GlStateManager.disableDepth();
|
||||||
|
int tooltipTextWidth = 0;
|
||||||
|
|
||||||
|
for (String textLine : textLines) {
|
||||||
|
int textLineWidth = font.getStringWidth(textLine);
|
||||||
|
|
||||||
|
if (textLineWidth > tooltipTextWidth) {
|
||||||
|
tooltipTextWidth = textLineWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// RS BEGIN
|
||||||
|
if (showSmallText) {
|
||||||
|
int size;
|
||||||
|
|
||||||
|
for (String smallText : smallTextLines) {
|
||||||
|
size = (int) (font.getStringWidth(smallText) * textScale);
|
||||||
|
|
||||||
|
if (size > tooltipTextWidth) {
|
||||||
|
tooltipTextWidth = size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// RS END
|
||||||
|
|
||||||
|
int titleLinesCount = 1;
|
||||||
|
int tooltipX = mouseX + 12;
|
||||||
|
|
||||||
|
int tooltipY = mouseY - 12;
|
||||||
|
int tooltipHeight = 8;
|
||||||
|
|
||||||
|
if (textLines.size() > 1) {
|
||||||
|
tooltipHeight += (textLines.size() - 1) * 10;
|
||||||
|
if (textLines.size() > titleLinesCount) {
|
||||||
|
tooltipHeight += 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tooltipY + tooltipHeight + 6 > screenHeight) {
|
||||||
|
tooltipY = screenHeight - tooltipHeight - 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
final int zLevel = 300;
|
||||||
|
final int backgroundColor = 0xF0100010;
|
||||||
|
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 4, tooltipX + tooltipTextWidth + 3, tooltipY - 3, backgroundColor, backgroundColor);
|
||||||
|
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY + tooltipHeight + 3, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 4, backgroundColor, backgroundColor);
|
||||||
|
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
|
||||||
|
GuiUtils.drawGradientRect(zLevel, tooltipX - 4, tooltipY - 3, tooltipX - 3, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
|
||||||
|
GuiUtils.drawGradientRect(zLevel, tooltipX + tooltipTextWidth + 3, tooltipY - 3, tooltipX + tooltipTextWidth + 4, tooltipY + tooltipHeight + 3, backgroundColor, backgroundColor);
|
||||||
|
final int borderColorStart = 0x505000FF;
|
||||||
|
final int borderColorEnd = (borderColorStart & 0xFEFEFE) >> 1 | borderColorStart & 0xFF000000;
|
||||||
|
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 3 + 1, tooltipX - 3 + 1, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd);
|
||||||
|
GuiUtils.drawGradientRect(zLevel, tooltipX + tooltipTextWidth + 2, tooltipY - 3 + 1, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3 - 1, borderColorStart, borderColorEnd);
|
||||||
|
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY - 3, tooltipX + tooltipTextWidth + 3, tooltipY - 3 + 1, borderColorStart, borderColorStart);
|
||||||
|
GuiUtils.drawGradientRect(zLevel, tooltipX - 3, tooltipY + tooltipHeight + 2, tooltipX + tooltipTextWidth + 3, tooltipY + tooltipHeight + 3, borderColorEnd, borderColorEnd);
|
||||||
|
|
||||||
|
MinecraftForge.EVENT_BUS.post(new RenderTooltipEvent.PostBackground(stack, textLines, tooltipX, tooltipY, font, tooltipTextWidth, tooltipHeight));
|
||||||
|
int tooltipTop = tooltipY;
|
||||||
|
|
||||||
|
for (int lineNumber = 0; lineNumber < textLines.size(); ++lineNumber) {
|
||||||
|
String line = textLines.get(lineNumber);
|
||||||
|
font.drawStringWithShadow(line, (float) tooltipX, (float) tooltipY, -1);
|
||||||
|
|
||||||
|
if (lineNumber + 1 == titleLinesCount) {
|
||||||
|
tooltipY += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltipY += 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
MinecraftForge.EVENT_BUS.post(new RenderTooltipEvent.PostText(stack, textLines, tooltipX, tooltipTop, font, tooltipTextWidth, tooltipHeight));
|
||||||
|
|
||||||
|
// RS BEGIN
|
||||||
|
if (showSmallText) {
|
||||||
|
GlStateManager.pushMatrix();
|
||||||
|
GlStateManager.scale(textScale, textScale, 1);
|
||||||
|
|
||||||
|
int y = tooltipTop + tooltipHeight - 6;
|
||||||
|
|
||||||
|
for (int i = smallTextLines.size() - 1; i >= 0; --i) {
|
||||||
|
font.drawStringWithShadow(
|
||||||
|
TextFormatting.GRAY + smallTextLines.get(i),
|
||||||
|
RenderUtils.getOffsetOnScale(tooltipX, textScale),
|
||||||
|
RenderUtils.getOffsetOnScale(y - (font.getUnicodeFlag() ? 2 : 0), textScale),
|
||||||
|
-1
|
||||||
|
);
|
||||||
|
|
||||||
|
y -= 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
GlStateManager.popMatrix();
|
||||||
|
}
|
||||||
|
// RS END
|
||||||
|
|
||||||
|
GlStateManager.enableLighting();
|
||||||
|
GlStateManager.enableDepth();
|
||||||
|
RenderHelper.enableStandardItemLighting();
|
||||||
|
GlStateManager.enableRescaleNormal();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import com.raoulvdberge.refinedstorage.api.storage.disk.IStorageDiskProvider;
|
|||||||
import com.raoulvdberge.refinedstorage.api.util.IStackList;
|
import com.raoulvdberge.refinedstorage.api.util.IStackList;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.client.util.ITooltipFlag;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
@@ -14,6 +16,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
import net.minecraftforge.fluids.Fluid;
|
import net.minecraftforge.fluids.Fluid;
|
||||||
@@ -31,6 +34,7 @@ import org.apache.commons.lang3.tuple.Pair;
|
|||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
@@ -292,4 +296,19 @@ public final class StackUtils {
|
|||||||
|
|
||||||
return Pair.of(null, null);
|
return Pair.of(null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<String> getItemTooltip(ItemStack stack) {
|
||||||
|
List<String> lines = stack.getTooltip(Minecraft.getMinecraft().player, Minecraft.getMinecraft().gameSettings.advancedItemTooltips ? ITooltipFlag.TooltipFlags.ADVANCED : ITooltipFlag.TooltipFlags.NORMAL);
|
||||||
|
|
||||||
|
// From GuiScreen#getItemToolTip
|
||||||
|
for (int i = 0; i < lines.size(); ++i) {
|
||||||
|
if (i == 0) {
|
||||||
|
lines.set(i, stack.getRarity().rarityColor + lines.get(i));
|
||||||
|
} else {
|
||||||
|
lines.set(i, TextFormatting.GRAY + lines.get(i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return lines;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ gui.refinedstorage:interface.import=Interface Import
|
|||||||
gui.refinedstorage:interface.export=Interface Export
|
gui.refinedstorage:interface.export=Interface Export
|
||||||
gui.refinedstorage:crafting_monitor=Crafting Monitor
|
gui.refinedstorage:crafting_monitor=Crafting Monitor
|
||||||
gui.refinedstorage:wireless_crafting_monitor=Wireless Crafting Monitor
|
gui.refinedstorage:wireless_crafting_monitor=Wireless Crafting Monitor
|
||||||
|
gui.refinedstorage:crafting_monitor.tooltip.requested=%d requested
|
||||||
gui.refinedstorage:crafting_monitor.fluids_taking=Fluids taking
|
gui.refinedstorage:crafting_monitor.fluids_taking=Fluids taking
|
||||||
gui.refinedstorage:crafting_monitor.items_crafting=Items crafting
|
gui.refinedstorage:crafting_monitor.items_crafting=Items crafting
|
||||||
gui.refinedstorage:crafting_monitor.items_processing=Items processing
|
gui.refinedstorage:crafting_monitor.items_processing=Items processing
|
||||||
|
|||||||
Reference in New Issue
Block a user