From 954740c1e45105565368848bc24cc13841eea6e2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jan 2015 15:25:26 -0600 Subject: [PATCH 1/2] Added a function to the API to remove recipe mappings and added sanity checks to the lexicon --- .../botania/api/lexicon/LexiconRecipeMappings.java | 3 +++ src/main/java/vazkii/botania/api/package-info.java | 2 +- .../botania/client/gui/lexicon/GuiLexicon.java | 12 ++++++++++++ .../botania/client/gui/lexicon/GuiLexiconEntry.java | 8 ++++++++ .../botania/client/gui/lexicon/GuiLexiconIndex.java | 8 ++++++++ 5 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main/java/vazkii/botania/api/lexicon/LexiconRecipeMappings.java b/src/main/java/vazkii/botania/api/lexicon/LexiconRecipeMappings.java index 49b2a133e..2bb3c1105 100644 --- a/src/main/java/vazkii/botania/api/lexicon/LexiconRecipeMappings.java +++ b/src/main/java/vazkii/botania/api/lexicon/LexiconRecipeMappings.java @@ -40,6 +40,9 @@ public final class LexiconRecipeMappings { map(stack, entry, page, false); } + public static void remove(ItemStack stack) { + mappings.remove(stackToString(stack)); + } public static EntryData getDataForStack(ItemStack stack) { return mappings.get(stackToString(stack)); diff --git a/src/main/java/vazkii/botania/api/package-info.java b/src/main/java/vazkii/botania/api/package-info.java index 4cfcad846..2db13b135 100644 --- a/src/main/java/vazkii/botania/api/package-info.java +++ b/src/main/java/vazkii/botania/api/package-info.java @@ -1,4 +1,4 @@ -@API(owner = "Botania", apiVersion = "29", provides = "BotaniaAPI") +@API(owner = "Botania", apiVersion = "30", provides = "BotaniaAPI") package vazkii.botania.api; import cpw.mods.fml.common.API; diff --git a/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexicon.java b/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexicon.java index f19689616..a9f046f85 100644 --- a/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexicon.java +++ b/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexicon.java @@ -309,4 +309,16 @@ public class GuiLexicon extends GuiScreen { super.keyTyped(par1, par2); } + public static boolean isValidLexiconGui(GuiLexicon gui) { + if(gui.isCategoryIndex()) + return true; + if(gui.isIndex()) { + GuiLexiconIndex indexGui=(GuiLexiconIndex)gui; + return BotaniaAPI.getAllCategories().contains(indexGui.category); + } + GuiLexiconEntry entryGui=(GuiLexiconEntry)gui; + if(!BotaniaAPI.getAllEntries().contains(entryGui.entry)) + return false; + return entryGui.page < entryGui.entry.pages.size(); + } } diff --git a/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexiconEntry.java b/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexiconEntry.java index 43cb3e246..b9262f6cb 100644 --- a/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexiconEntry.java +++ b/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexiconEntry.java @@ -59,7 +59,15 @@ public class GuiLexiconEntry extends GuiLexicon implements IGuiLexiconEntry, IPa buttonList.add(rightButton = new GuiButtonPage(2, left + guiWidth - 18, top + guiHeight - 10, true)); buttonList.add(shareButton = new GuiButtonShare(3, left + guiWidth - 6, top - 2)); + if(!GuiLexicon.isValidLexiconGui(this)) { + currentOpenLexicon = new GuiLexicon(); + mc.displayGuiScreen(currentOpenLexicon); + ClientTickHandler.notifyPageChange(); + return; + } + LexiconPage page = entry.pages.get(this.page); + page.onOpened(this); updatePageButtons(); } diff --git a/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexiconIndex.java b/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexiconIndex.java index 03b019dd3..6de2deffd 100644 --- a/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexiconIndex.java +++ b/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexiconIndex.java @@ -73,6 +73,14 @@ public class GuiLexiconIndex extends GuiLexicon implements IParented { @Override public void initGui() { super.initGui(); + + if(!GuiLexicon.isValidLexiconGui(this)) { + currentOpenLexicon = new GuiLexicon(); + mc.displayGuiScreen(currentOpenLexicon); + ClientTickHandler.notifyPageChange(); + return; + } + buttonList.add(backButton = new GuiButtonBack(12, left + guiWidth / 2 - 8, top + guiHeight + 2)); buttonList.add(leftButton = new GuiButtonPage(13, left, top + guiHeight - 10, false)); buttonList.add(rightButton = new GuiButtonPage(14, left + guiWidth - 18, top + guiHeight - 10, true)); From c4c6d424065a8c5415429fb793d7c92f5db808b6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 21 Jan 2015 20:03:09 -0600 Subject: [PATCH 2/2] Forgot about the lexicon index. Fixed it. --- src/main/java/vazkii/botania/client/gui/lexicon/GuiLexicon.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexicon.java b/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexicon.java index a9f046f85..6979ba37b 100644 --- a/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexicon.java +++ b/src/main/java/vazkii/botania/client/gui/lexicon/GuiLexicon.java @@ -314,6 +314,8 @@ public class GuiLexicon extends GuiScreen { return true; if(gui.isIndex()) { GuiLexiconIndex indexGui=(GuiLexiconIndex)gui; + if(indexGui.category==null) + return true; return BotaniaAPI.getAllCategories().contains(indexGui.category); } GuiLexiconEntry entryGui=(GuiLexiconEntry)gui;