package joshie.progression.criteria.triggers; import joshie.progression.api.ProgressionAPI; import joshie.progression.api.criteria.ITrigger; import joshie.progression.api.criteria.ProgressionRule; import joshie.progression.api.special.DisplayMode; import joshie.progression.api.special.ICustomDescription; import joshie.progression.api.special.ICustomWidth; import joshie.progression.helpers.ChatHelper; import net.minecraft.client.gui.Gui; import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @ProgressionRule(name="openContainer", color=0xFFFFFF00, meta="onGUIChange") public class TriggerChangeGui extends TriggerBaseBoolean implements ICustomDescription, ICustomWidth { private static boolean DEBUG = false; @SideOnly(Side.CLIENT) private static Gui lastGui; public String className = "joshie.progression.gui.core.GuiCore"; public String description = "Open the Progression Book"; public int displayWidth = 75; @Override public ITrigger copy() { TriggerChangeGui trigger = new TriggerChangeGui(); trigger.className = className; trigger.description = description; trigger.displayWidth = displayWidth; return copyBoolean(trigger); } @Override public String getDescription() { return description; } @Override public int getWidth(DisplayMode mode) { return mode == DisplayMode.EDIT ? 100 : displayWidth; } @SideOnly(Side.CLIENT) @SubscribeEvent public void onEvent(GuiOpenEvent event) { if (lastGui != event.getGui()) { lastGui = event.getGui(); if (event.getGui() == null) return; //NO NULLS! ProgressionAPI.registry.fireTriggerClientside(getProvider().getUnlocalisedName(), event.getGui().getClass().getCanonicalName().toString()); } //If debuger is enabled, display the class name for the gui if (DEBUG) { if (event.getGui() == null) return; //NO NULLS! ChatHelper.displayChatAndLog(event.getGui().getClass().getCanonicalName().toString()); } } public static boolean toggleDebug() { DEBUG = !DEBUG; return DEBUG; } @Override protected boolean isTrue(Object... data) { String name = (String) data[0]; return name.equals(className); } }