From 03d73b82fbbe854f0a9c57dab6f454fc9a529eb2 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 23 Jan 2015 11:34:23 -0600 Subject: [PATCH] Fixed more Lexicon stuff. --- .../mods/botania/handlers/Lexicon.java | 77 ++++++++++++++++++- .../mods/botania/lexicon/AddPage.java | 2 - .../mods/botania/lexicon/RemovePage.java | 10 +-- 3 files changed, 80 insertions(+), 9 deletions(-) diff --git a/src/main/java/modtweaker/mods/botania/handlers/Lexicon.java b/src/main/java/modtweaker/mods/botania/handlers/Lexicon.java index fdc0b87..7fcfc22 100644 --- a/src/main/java/modtweaker/mods/botania/handlers/Lexicon.java +++ b/src/main/java/modtweaker/mods/botania/handlers/Lexicon.java @@ -65,6 +65,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } if(BotaniaAPI.getBrewFromKey(brew)==null) { MineTweakerAPI.getLogger().logError("Cannot find brew "+brew); @@ -83,6 +88,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } if(outputs.length!=inputs.length) { MineTweakerAPI.getLogger().logError("Length of input and output must match"); @@ -105,6 +115,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } if(outputs.length!=inputs.length) { MineTweakerAPI.getLogger().logError("Length of input and output must match"); @@ -127,6 +142,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } if(!EntityList.stringToClassMapping.containsKey(entity)) { MineTweakerAPI.getLogger().logError("No such entity "+entity); @@ -144,6 +164,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } LexiconPage page=new PageImage(name, resource); MineTweakerAPI.apply(new AddPage(name,lexiconEntry,page,page_number)); } @@ -156,6 +181,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } LexiconPage page=new PageLoreText(name); MineTweakerAPI.apply(new AddPage(name,lexiconEntry,page,page_number)); } @@ -168,6 +198,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } if(outputs.length!=inputs.length || outputs.length!=mana.length) { MineTweakerAPI.getLogger().logError("Length of input and output must match"); @@ -190,6 +225,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } if(outputs.length!=inputs.length || outputs.length!=mana.length) { MineTweakerAPI.getLogger().logError("Length of input and output must match"); @@ -214,6 +254,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } if(outputs.length!=inputs.length || outputs.length!=mana.length) { MineTweakerAPI.getLogger().logError("Length of input and output must match"); @@ -238,6 +283,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } if(outputs.length!=inputs.length) { MineTweakerAPI.getLogger().logError("Length of input and output must match"); @@ -260,6 +310,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } if(outputs.length!=inputs.length || outputs.length!=mana.length) { MineTweakerAPI.getLogger().logError("Length of input and output must match"); @@ -282,6 +337,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } LexiconPage page=new PageText(name); MineTweakerAPI.apply(new AddPage(name,lexiconEntry,page,page_number)); } @@ -294,6 +354,11 @@ public class Lexicon { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } + if(page_number>=lexiconEntry.pages.size()) + { + MineTweakerAPI.getLogger().logError("Page Number " + page_number + " out of bounds for "+entry); + return; + } MineTweakerAPI.apply(new RemovePage(lexiconEntry,page_number)); } @@ -312,18 +377,28 @@ public class Lexicon { @ZenMethod public static void removeEntry(String entry) { LexiconEntry lexiconEntry=BotaniaHelper.findEntry(entry); + if(lexiconEntry==null) + { + MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); + return; + } MineTweakerAPI.apply(new RemoveEntry(lexiconEntry)); } @ZenMethod public static void setEntryKnowledgeType(String entry, String knowledgeType) { LexiconEntry lexiconEntry=BotaniaHelper.findEntry(entry); + KnowledgeType type=BotaniaHelper.findKnowledgeType(knowledgeType); if(lexiconEntry==null) { MineTweakerAPI.getLogger().logError("Cannot find lexicon entry "+entry); return; } - KnowledgeType type=BotaniaHelper.findKnowledgeType(knowledgeType); + if(type==null) + { + MineTweakerAPI.getLogger().logError("Cannot find knowledge type "+knowledgeType); + return; + } MineTweakerAPI.apply(new SetEntryKnowledgeType(lexiconEntry,type)); } diff --git a/src/main/java/modtweaker/mods/botania/lexicon/AddPage.java b/src/main/java/modtweaker/mods/botania/lexicon/AddPage.java index 4c82259..54bc68b 100644 --- a/src/main/java/modtweaker/mods/botania/lexicon/AddPage.java +++ b/src/main/java/modtweaker/mods/botania/lexicon/AddPage.java @@ -20,8 +20,6 @@ public class AddPage implements IUndoableAction { @Override public void apply() { - if(Entry==null) - throw new NullPointerException("Entry not found"); Entry.pages.add(page_number, page); } diff --git a/src/main/java/modtweaker/mods/botania/lexicon/RemovePage.java b/src/main/java/modtweaker/mods/botania/lexicon/RemovePage.java index 5846a22..61572d4 100644 --- a/src/main/java/modtweaker/mods/botania/lexicon/RemovePage.java +++ b/src/main/java/modtweaker/mods/botania/lexicon/RemovePage.java @@ -6,7 +6,6 @@ import minetweaker.IUndoableAction; public class RemovePage implements IUndoableAction { - String Name; int page_number; LexiconEntry Entry; LexiconPage page; @@ -19,23 +18,22 @@ public class RemovePage implements IUndoableAction { @Override public void apply() { this.page=Entry.pages.get(page_number); - this.Name=this.page.getUnlocalizedName(); - Entry.pages.remove(page_number); + Entry.pages.remove(page); } @Override public boolean canUndo() { - return Name != null && Entry != null && page != null; + return Entry != null && page != null; } @Override public String describe() { - return "Adding Lexicon Page: " + Name; + return "Removing Lexicon Page: " + Entry.pages.get(page_number).getUnlocalizedName(); } @Override public String describeUndo() { - return "Removing Lexicon Page: " + Name; + return "Adding Lexicon Page: " + page.getUnlocalizedName(); } @Override