Skip to content

Commit

Permalink
Fix #582 Item List Visibility Toggle requries opening a new gui
Browse files Browse the repository at this point in the history
  • Loading branch information
mezz committed Nov 6, 2016
1 parent db5c845 commit f5e2d93
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 8 deletions.
19 changes: 15 additions & 4 deletions src/main/java/mezz/jei/GuiEventHandler.java
Expand Up @@ -3,12 +3,14 @@
import javax.annotation.Nullable;

import mezz.jei.config.Config;
import mezz.jei.config.OverlayToggleEvent;
import mezz.jei.gui.ItemListOverlay;
import mezz.jei.gui.ItemListOverlayInternal;
import mezz.jei.gui.TooltipRenderer;
import mezz.jei.gui.recipes.RecipesGui;
import mezz.jei.input.InputHandler;
import mezz.jei.util.Translator;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraftforge.client.event.GuiOpenEvent;
Expand All @@ -30,12 +32,21 @@ public GuiEventHandler(JeiRuntime runtime) {
}

@SubscribeEvent
public void onGuiInit(GuiScreenEvent.InitGuiEvent.Post event) {
ItemListOverlay itemListOverlay = runtime.getItemListOverlay();
public void onOverlayToggle(OverlayToggleEvent event) {
GuiScreen currentScreen = Minecraft.getMinecraft().currentScreen;
onNewScreen(currentScreen);
}

@SubscribeEvent
public void onGuiInit(GuiScreenEvent.InitGuiEvent.Post event) {
GuiScreen gui = event.getGui();
if (gui instanceof GuiContainer || gui instanceof RecipesGui) {
ItemListOverlayInternal itemListOverlayInternal = itemListOverlay.create(gui);
onNewScreen(gui);
}

private void onNewScreen(@Nullable GuiScreen screen) {
if (screen instanceof GuiContainer || screen instanceof RecipesGui) {
ItemListOverlay itemListOverlay = runtime.getItemListOverlay();
ItemListOverlayInternal itemListOverlayInternal = itemListOverlay.create(screen);
inputHandler = new InputHandler(runtime, itemListOverlayInternal);
} else {
inputHandler = null;
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/mezz/jei/config/Config.java
Expand Up @@ -14,6 +14,7 @@
import mezz.jei.util.Translator;
import mezz.jei.util.color.ColorGetter;
import mezz.jei.util.color.ColorNamer;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
Expand Down Expand Up @@ -82,6 +83,8 @@ public static void toggleOverlayEnabled() {
worldConfig.save();
}
}

MinecraftForge.EVENT_BUS.post(new OverlayToggleEvent(overlayEnabled));
}

public static boolean isCheatItemsEnabled() {
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/mezz/jei/config/OverlayToggleEvent.java
@@ -0,0 +1,15 @@
package mezz.jei.config;

import net.minecraftforge.fml.common.eventhandler.Event;

public class OverlayToggleEvent extends Event {
private final boolean overlayEnabled;

public OverlayToggleEvent(boolean overlayEnabled) {
this.overlayEnabled = overlayEnabled;
}

public boolean isOverlayEnabled() {
return overlayEnabled;
}
}
6 changes: 2 additions & 4 deletions src/main/java/mezz/jei/gui/ItemListOverlay.java
Expand Up @@ -33,21 +33,19 @@ public ItemListOverlay(ItemFilter itemFilter, List<IAdvancedGuiHandler<?>> advan

@Nullable
public ItemListOverlayInternal create(GuiScreen guiScreen) {
close();

if (Config.isOverlayEnabled()) {
GuiProperties guiProperties = GuiProperties.create(guiScreen);
if (guiProperties != null) {
final int columns = ItemListOverlayInternal.getColumns(guiProperties);
if (columns >= 4) {
if (internal != null) {
close();
}
internal = new ItemListOverlayInternal(this, ingredientRegistry, guiScreen, guiProperties);
return internal;
}
}
}

close();
return null;
}

Expand Down

0 comments on commit f5e2d93

Please sign in to comment.