Skip to content

Commit

Permalink
Fix some minor OpenGL rendering issues
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Aug 7, 2017
1 parent 6fb57a2 commit 99e6a96
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 83 deletions.
64 changes: 17 additions & 47 deletions src/main/java/mezz/jei/gui/overlay/IngredientGrid.java
Expand Up @@ -20,12 +20,12 @@
import mezz.jei.input.IClickedIngredient;
import mezz.jei.input.IPaged;
import mezz.jei.input.IShowsRecipeFocuses;
import mezz.jei.input.MouseHelper;
import mezz.jei.network.packets.PacketDeletePlayerItem;
import mezz.jei.network.packets.PacketJei;
import mezz.jei.render.GuiIngredientFast;
import mezz.jei.render.GuiIngredientFastList;
import mezz.jei.runtime.JeiRuntime;
import mezz.jei.startup.StackHelper;
import mezz.jei.util.Translator;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
Expand All @@ -34,7 +34,6 @@
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;

/**
* An ingredient grid displays a rectangular area of clickable recipe ingredients.
Expand All @@ -48,9 +47,6 @@ public abstract class IngredientGrid implements IShowsRecipeFocuses, IPaged {
private Rectangle area = new Rectangle();
protected final GuiIngredientFastList guiIngredientList;

@Nullable
private GuiIngredientFast hovered;

public IngredientGrid(IIngredientRegistry ingredientRegistry) {
this.guiIngredientList = new GuiIngredientFastList(ingredientRegistry);
}
Expand Down Expand Up @@ -134,59 +130,32 @@ public Rectangle getArea() {
public void draw(Minecraft minecraft, int mouseX, int mouseY) {
GlStateManager.disableBlend();

if (shouldShowDeleteItemTooltip(minecraft)) {
hovered = guiIngredientList.render(minecraft, false, mouseX, mouseY);
} else {
boolean mouseOver = isMouseOver(mouseX, mouseY);
hovered = guiIngredientList.render(minecraft, mouseOver, mouseX, mouseY);
}

drawHighlightedIngredients();
guiIngredientList.render(minecraft);

if (hovered != null) {
hovered.drawHovered(minecraft);
if (!shouldShowDeleteItemTooltip(minecraft) && isMouseOver(mouseX, mouseY)) {
GuiIngredientFast hovered = guiIngredientList.getHovered(mouseX, mouseY);
if (hovered != null) {
hovered.drawHighlight();
}
}

GlStateManager.enableAlpha();
}

private void drawHighlightedIngredients() {
JeiRuntime runtime = Internal.getRuntime();
if (runtime == null) {
return;
}

NonNullList<ItemStack> highlightedStacks = runtime.getItemListOverlay().getHighlightedStacks();
if (highlightedStacks.isEmpty()) {
return;
}

StackHelper helper = Internal.getHelpers().getStackHelper();
for (GuiIngredientFast guiItemStack : guiIngredientList.getAllGuiIngredients()) {
IIngredientListElement element = guiItemStack.getElement();
if (element != null) {
Object ingredient = element.getIngredient();
if (ingredient instanceof ItemStack) {
if (helper.containsStack(highlightedStacks, (ItemStack) ingredient) != null) {
guiItemStack.drawHighlight();
}
public void drawTooltips(Minecraft minecraft, int mouseX, int mouseY) {
if (isMouseOver(mouseX, mouseY)) {
if (shouldShowDeleteItemTooltip(minecraft)) {
String deleteItem = Translator.translateToLocal("jei.tooltip.delete.item");
TooltipRenderer.drawHoveringText(minecraft, deleteItem, mouseX, mouseY);
} else {
GuiIngredientFast hovered = guiIngredientList.getHovered(mouseX, mouseY);
if (hovered != null) {
hovered.drawTooltip(minecraft, mouseX, mouseY);
}
}
}
}

public void drawTooltips(Minecraft minecraft, int mouseX, int mouseY) {
boolean mouseOver = isMouseOver(mouseX, mouseY);
if (mouseOver && shouldShowDeleteItemTooltip(minecraft)) {
String deleteItem = Translator.translateToLocal("jei.tooltip.delete.item");
TooltipRenderer.drawHoveringText(minecraft, deleteItem, mouseX, mouseY);
}

if (hovered != null) {
hovered.drawTooltip(minecraft, mouseX, mouseY);
}
}

private static boolean shouldShowDeleteItemTooltip(Minecraft minecraft) {
if (Config.isDeleteItemsInCheatModeActive()) {
EntityPlayer player = minecraft.player;
Expand Down Expand Up @@ -225,6 +194,7 @@ public boolean handleMouseClicked(int mouseX, int mouseY) {

@Nullable
public IIngredientListElement getElementUnderMouse() {
GuiIngredientFast hovered = guiIngredientList.getHovered(MouseHelper.getX(), MouseHelper.getY());
if (hovered != null) {
IIngredientListElement element = hovered.getElement();
if (element != null) {
Expand Down
Expand Up @@ -21,6 +21,7 @@ public class ItemStackRenderer implements IIngredientRenderer<ItemStack> {
@Override
public void render(Minecraft minecraft, int xPosition, int yPosition, @Nullable ItemStack ingredient) {
if (ingredient != null) {
GlStateManager.enableDepth();
RenderHelper.enableGUIStandardItemLighting();
FontRenderer font = getFontRenderer(minecraft, ingredient);
minecraft.getRenderItem().renderItemAndEffectIntoGUI(null, ingredient, xPosition, yPosition);
Expand Down
10 changes: 0 additions & 10 deletions src/main/java/mezz/jei/render/GuiIngredientFast.java
Expand Up @@ -250,16 +250,6 @@ public static FontRenderer getFontRenderer(Minecraft minecraft, ItemStack itemSt
return fontRenderer;
}

public void drawHovered(Minecraft minecraft) {
if (element == null) {
return;
}

renderSlow();
renderOverlay(minecraft);
drawHighlight();
}

/**
* Matches the highlight code in {@link GuiContainer#drawScreen(int, int, float)}
*/
Expand Down
34 changes: 8 additions & 26 deletions src/main/java/mezz/jei/render/GuiIngredientFastList.java
Expand Up @@ -128,7 +128,7 @@ public ClickedIngredient<?> getIngredientUnderMouse(int mouseX, int mouseY) {
}

@Nullable
private GuiIngredientFast getHovered(int mouseX, int mouseY) {
public GuiIngredientFast getHovered(int mouseX, int mouseY) {
for (GuiIngredientFast guiItemStack : renderAll) {
if (guiItemStack.isMouseOver(mouseX, mouseY)) {
return guiItemStack;
Expand All @@ -138,15 +138,9 @@ private GuiIngredientFast getHovered(int mouseX, int mouseY) {
}

/**
* renders all ItemStacks and returns hovered gui item stack for later render pass
* renders all ItemStacks
*/
@Nullable
public GuiIngredientFast render(Minecraft minecraft, boolean isMouseOver, int mouseX, int mouseY) {
GuiIngredientFast hovered = null;
if (isMouseOver) {
hovered = getHovered(mouseX, mouseY);
}

public void render(Minecraft minecraft) {
RenderHelper.enableGUIStandardItemLighting();

RenderItem renderItem = minecraft.getRenderItem();
Expand All @@ -165,17 +159,13 @@ public GuiIngredientFast render(Minecraft minecraft, boolean isMouseOver, int mo
// 3d Items
GlStateManager.enableLighting();
for (GuiIngredientFast guiItemStack : renderItems3d) {
if (hovered != guiItemStack) {
guiItemStack.renderItemAndEffectIntoGUI();
}
guiItemStack.renderItemAndEffectIntoGUI();
}

// 2d Items
GlStateManager.disableLighting();
for (GuiIngredientFast guiItemStack : renderItems2d) {
if (hovered != guiItemStack) {
guiItemStack.renderItemAndEffectIntoGUI();
}
guiItemStack.renderItemAndEffectIntoGUI();
}

GlStateManager.disableAlpha();
Expand All @@ -190,26 +180,18 @@ public GuiIngredientFast render(Minecraft minecraft, boolean isMouseOver, int mo

// overlays
for (GuiIngredientFast guiItemStack : renderItems3d) {
if (hovered != guiItemStack) {
guiItemStack.renderOverlay(minecraft);
}
guiItemStack.renderOverlay(minecraft);
}

for (GuiIngredientFast guiItemStack : renderItems2d) {
if (hovered != guiItemStack) {
guiItemStack.renderOverlay(minecraft);
}
guiItemStack.renderOverlay(minecraft);
}

// other rendering
for (GuiIngredientFast guiItemStack : renderOther) {
if (hovered != guiItemStack) {
guiItemStack.renderSlow();
}
guiItemStack.renderSlow();
}

RenderHelper.disableStandardItemLighting();

return hovered;
}
}

0 comments on commit 99e6a96

Please sign in to comment.