From 39a72e176b85a6365f4a6f95af6d38de3ed192ff Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 22 Nov 2016 22:54:35 +0100 Subject: [PATCH] Added page sorting for the booklet --- .../api/ActuallyAdditionsAPI.java | 2 +- .../api/booklet/IBookletChapter.java | 2 ++ .../api/booklet/IBookletEntry.java | 2 ++ .../api/booklet/IBookletPage.java | 2 ++ .../api/internal/IMethodHandler.java | 10 ++++++ .../mod/ActuallyAdditions.java | 2 +- .../mod/booklet/InitBooklet.java | 34 +++++++++++++++--- .../mod/booklet/chapter/BookletChapter.java | 11 ++++++ .../mod/booklet/entry/BookletEntry.java | 11 ++++++ .../booklet/entry/BookletEntryAllItems.java | 2 +- .../mod/booklet/page/BookletPage.java | 11 ++++++ .../mod/booklet/page/PageCrafting.java | 15 ++++++-- .../mod/booklet/page/PageEmpowerer.java | 5 +++ .../mod/booklet/page/PageFurnace.java | 6 +++- .../mod/booklet/page/PagePicture.java | 6 ++++ .../mod/booklet/page/PageReconstructor.java | 5 +++ .../mod/booklet/page/PageTextOnly.java | 4 +++ .../mod/misc/MethodHandler.java | 35 ++++++++++++++++--- 18 files changed, 148 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/ActuallyAdditionsAPI.java b/src/main/java/de/ellpeck/actuallyadditions/api/ActuallyAdditionsAPI.java index a74ca330b..3fe895816 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/api/ActuallyAdditionsAPI.java +++ b/src/main/java/de/ellpeck/actuallyadditions/api/ActuallyAdditionsAPI.java @@ -31,7 +31,7 @@ public final class ActuallyAdditionsAPI{ public static final String MOD_ID = "actuallyadditions"; public static final String API_ID = MOD_ID+"api"; - public static final String API_VERSION = "30"; + public static final String API_VERSION = "31"; public static final List CRUSHER_RECIPES = new ArrayList(); public static final List BALL_OF_FUR_RETURN_ITEMS = new ArrayList(); diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletChapter.java b/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletChapter.java index 194e3a5b0..5531d0e39 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletChapter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletChapter.java @@ -27,4 +27,6 @@ public interface IBookletChapter{ String getIdentifier(); int getPageIndex(IBookletPage page); + + int getSortingPriority(); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletEntry.java b/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletEntry.java index ae345e8a2..7d615ff27 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletEntry.java +++ b/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletEntry.java @@ -29,4 +29,6 @@ public interface IBookletEntry{ @SideOnly(Side.CLIENT) List getChaptersForDisplay(String searchBarText); + + int getSortingPriority(); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletPage.java b/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletPage.java index bdfe0f55e..16e6e3d31 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletPage.java +++ b/src/main/java/de/ellpeck/actuallyadditions/api/booklet/IBookletPage.java @@ -66,4 +66,6 @@ public interface IBookletPage{ IBookletPage addTextReplacement(String key, float value); IBookletPage addTextReplacement(String key, int value); + + int getSortingPriority(); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/api/internal/IMethodHandler.java b/src/main/java/de/ellpeck/actuallyadditions/api/internal/IMethodHandler.java index ad9b305b0..b9842a38e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/api/internal/IMethodHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/api/internal/IMethodHandler.java @@ -53,4 +53,14 @@ public interface IMethodHandler{ IBookletPage generateFurnacePage(int id, ItemStack input, ItemStack result); IBookletChapter generateBookletChapter(String identifier, IBookletEntry entry, ItemStack displayStack, IBookletPage... pages); + + IBookletPage generateTextPage(int id, int priority); + + IBookletPage generatePicturePage(int id, ResourceLocation resLoc, int textStartY, int priority); + + IBookletPage generateCraftingPage(int id, int priority, IRecipe... recipes); + + IBookletPage generateFurnacePage(int id, ItemStack input, ItemStack result, int priority); + + IBookletChapter generateBookletChapter(String identifier, IBookletEntry entry, ItemStack displayStack, int priority, IBookletPage... pages); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java index e0b07e210..1dbe4926f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/ActuallyAdditions.java @@ -137,7 +137,7 @@ public class ActuallyAdditions{ LensRecipeHandler.init(); EmpowererHandler.init(); - InitBooklet.init(); + InitBooklet.postInit(); proxy.postInit(event); ModUtil.LOGGER.info("PostInitialization Finished."); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/InitBooklet.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/InitBooklet.java index c3db32e80..a05ef3703 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/InitBooklet.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/InitBooklet.java @@ -45,15 +45,15 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraftforge.fluids.FluidStack; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; public final class InitBooklet{ public static BookletChapter[] chaptersIntroduction = new BookletChapter[9]; public static void preInit(){ + ActuallyAdditionsAPI.allAndSearch = new BookletEntryAllItems("allAndSearch").setImportant(); + ActuallyAdditionsAPI.entryGettingStarted = new BookletEntry("gettingStarted").setImportant(); ActuallyAdditionsAPI.entryReconstruction = new BookletEntry("reconstruction"); ActuallyAdditionsAPI.entryLaserRelays = new BookletEntry("laserRelays").setSpecial(); @@ -64,10 +64,9 @@ public final class InitBooklet{ ActuallyAdditionsAPI.entryItemsRF = new BookletEntry("itemsRF"); ActuallyAdditionsAPI.entryMisc = new BookletEntry("misc"); ActuallyAdditionsAPI.entryUpdatesAndInfos = new BookletEntry("updatesAndInfos").setSpecial(); - ActuallyAdditionsAPI.allAndSearch = new BookletEntryAllItems("allAndSearch").setImportant(); } - public static void init(){ + public static void postInit(){ initChapters(); int chapCount = 0; @@ -98,6 +97,31 @@ public final class InitBooklet{ } } + Collections.sort(ActuallyAdditionsAPI.BOOKLET_ENTRIES, new Comparator(){ + @Override + public int compare(IBookletEntry entry1, IBookletEntry entry2){ + Integer prio1 = entry1.getSortingPriority(); + Integer prio2 = entry2.getSortingPriority(); + return prio2.compareTo(prio1); + } + }); + Collections.sort(ActuallyAdditionsAPI.ALL_CHAPTERS, new Comparator(){ + @Override + public int compare(IBookletChapter chapter1, IBookletChapter chapter2){ + Integer prio1 = chapter1.getSortingPriority(); + Integer prio2 = chapter2.getSortingPriority(); + return prio2.compareTo(prio1); + } + }); + Collections.sort(ActuallyAdditionsAPI.BOOKLET_PAGES_WITH_ITEM_OR_FLUID_DATA, new Comparator(){ + @Override + public int compare(IBookletPage page1, IBookletPage page2){ + Integer prio1 = page1.getSortingPriority(); + Integer prio2 = page2.getSortingPriority(); + return prio2.compareTo(prio1); + } + }); + ModUtil.LOGGER.info("Registered a total of "+chapCount+" booklet chapters, where "+infoCount+" out of "+pageCount+" booklet pages contain information about items or fluids!"); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/chapter/BookletChapter.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/chapter/BookletChapter.java index 31094444b..fcc98acbc 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/chapter/BookletChapter.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/chapter/BookletChapter.java @@ -24,13 +24,19 @@ public class BookletChapter implements IBookletChapter{ public final IBookletEntry entry; public final ItemStack displayStack; private final String identifier; + private final int priority; public TextFormatting color; public BookletChapter(String identifier, IBookletEntry entry, ItemStack displayStack, IBookletPage... pages){ + this(identifier, entry, displayStack, 0, pages); + } + + public BookletChapter(String identifier, IBookletEntry entry, ItemStack displayStack, int priority, IBookletPage... pages){ this.pages = pages; this.identifier = identifier; this.entry = entry; this.displayStack = displayStack; + this.priority = priority; this.color = TextFormatting.RESET; this.entry.addChapter(this); @@ -79,6 +85,11 @@ public class BookletChapter implements IBookletChapter{ return -1; } + @Override + public int getSortingPriority(){ + return this.priority; + } + public BookletChapter setImportant(){ this.color = TextFormatting.DARK_GREEN; return this; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/entry/BookletEntry.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/entry/BookletEntry.java index aa7eb269f..68a3e9e29 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/entry/BookletEntry.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/entry/BookletEntry.java @@ -31,11 +31,17 @@ import java.util.Locale; public class BookletEntry implements IBookletEntry{ private final String identifier; + private final int priority; private final List chapters = new ArrayList(); private TextFormatting color; public BookletEntry(String identifier){ + this(identifier, 0); + } + + public BookletEntry(String identifier, int prio){ this.identifier = identifier; + this.priority = prio; ActuallyAdditionsAPI.addBookletEntry(this); this.color = TextFormatting.RESET; @@ -129,6 +135,11 @@ public class BookletEntry implements IBookletEntry{ } } + @Override + public int getSortingPriority(){ + return this.priority; + } + public BookletEntry setImportant(){ this.color = TextFormatting.DARK_GREEN; return this; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/entry/BookletEntryAllItems.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/entry/BookletEntryAllItems.java index 15c5a262c..0f8707a77 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/entry/BookletEntryAllItems.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/entry/BookletEntryAllItems.java @@ -18,7 +18,7 @@ import java.util.List; public class BookletEntryAllItems extends BookletEntry{ public BookletEntryAllItems(String identifier){ - super(identifier); + super(identifier, -Integer.MAX_VALUE); } @Override diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/BookletPage.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/BookletPage.java index e3951a67f..1d83ee696 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/BookletPage.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/BookletPage.java @@ -32,13 +32,19 @@ public class BookletPage implements IBookletPage{ protected final HashMap textReplacements = new HashMap(); protected final int localizationKey; + private final int priority; private final List itemsForPage = new ArrayList(); private final List fluidsForPage = new ArrayList(); protected IBookletChapter chapter; protected boolean hasNoText; public BookletPage(int localizationKey){ + this(localizationKey, 0); + } + + public BookletPage(int localizationKey, int priority){ this.localizationKey = localizationKey; + this.priority = priority; } @Override @@ -174,4 +180,9 @@ public class BookletPage implements IBookletPage{ public BookletPage addTextReplacement(String key, int value){ return this.addTextReplacement(key, Integer.toString(value)); } + + @Override + public int getSortingPriority(){ + return this.priority; + } } \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrafting.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrafting.java index cb6d98bf4..665614e8f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrafting.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageCrafting.java @@ -37,13 +37,22 @@ public class PageCrafting extends BookletPage{ private String recipeTypeLocKey; private boolean isWildcard; - public PageCrafting(int localizationKey, List recipes){ - super(localizationKey); + public PageCrafting(int localizationKey, int priority, List recipes){ + super(localizationKey, priority); this.recipes = recipes; } + public PageCrafting(int localizationKey, List recipes){ + this(localizationKey, 0, recipes); + } + public PageCrafting(int localizationKey, IRecipe... recipes){ - this(localizationKey, Arrays.asList(recipes)); + this(localizationKey, 0, recipes); + } + + + public PageCrafting(int localizationKey, int priority, IRecipe... recipes){ + this(localizationKey, priority, Arrays.asList(recipes)); } public BookletPage setWildcard(){ diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageEmpowerer.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageEmpowerer.java index ae8dec79a..f2b045fe4 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageEmpowerer.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageEmpowerer.java @@ -62,4 +62,9 @@ public class PageEmpowerer extends BookletPage{ list.add(this.recipe.output); } } + + @Override + public int getSortingPriority(){ + return 20; + } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageFurnace.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageFurnace.java index ce37f479d..65009e410 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageFurnace.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageFurnace.java @@ -25,7 +25,11 @@ public class PageFurnace extends BookletPage{ private final ItemStack output; public PageFurnace(int localizationKey, ItemStack output){ - super(localizationKey); + this(localizationKey, output, 0); + } + + public PageFurnace(int localizationKey, ItemStack output, int priority){ + super(localizationKey, priority); this.output = output; this.input = getInputForOutput(output); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PagePicture.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PagePicture.java index dba0f8506..649613097 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PagePicture.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PagePicture.java @@ -21,6 +21,12 @@ public class PagePicture extends BookletPage{ private final ResourceLocation resLoc; private final int yTextOffset; + public PagePicture(int localizationKey, ResourceLocation resLoc, int yTextOffset, int priority){ + super(localizationKey, priority); + this.resLoc = resLoc; + this.yTextOffset = yTextOffset; + } + public PagePicture(int localizationKey, ResourceLocation resLoc, int yTextOffset){ super(localizationKey); this.yTextOffset = yTextOffset; diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageReconstructor.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageReconstructor.java index 53c7b0ff5..9926f7d91 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageReconstructor.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageReconstructor.java @@ -57,4 +57,9 @@ public class PageReconstructor extends BookletPage{ list.add(this.recipe.outputStack); } } + + @Override + public int getSortingPriority(){ + return 20; + } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageTextOnly.java b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageTextOnly.java index 8e402e6e0..d12216dc7 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageTextOnly.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/booklet/page/PageTextOnly.java @@ -16,6 +16,10 @@ import net.minecraftforge.fml.relauncher.SideOnly; public class PageTextOnly extends BookletPage{ + public PageTextOnly(int localizationKey, int priority){ + super(localizationKey, priority); + } + public PageTextOnly(int localizationKey){ super(localizationKey); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java index 8a3598f95..ba048c23f 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/MethodHandler.java @@ -247,26 +247,51 @@ public class MethodHandler implements IMethodHandler{ @Override public IBookletPage generateTextPage(int id){ - return new PageTextOnly(id); + return this.generateTextPage(id, 0); } @Override public IBookletPage generatePicturePage(int id, ResourceLocation resLoc, int textStartY){ - return new PagePicture(id, resLoc, textStartY); + return this.generatePicturePage(id, resLoc, textStartY, 0); } @Override public IBookletPage generateCraftingPage(int id, IRecipe... recipes){ - return new PageCrafting(id, recipes); + return this.generateCraftingPage(id, 0, recipes); } @Override public IBookletPage generateFurnacePage(int id, ItemStack input, ItemStack result){ - return new PageFurnace(id, result); + return this.generateFurnacePage(id, input, result, 0); } @Override public IBookletChapter generateBookletChapter(String identifier, IBookletEntry entry, ItemStack displayStack, IBookletPage... pages){ - return new BookletChapter(identifier, entry, displayStack, pages); + return this.generateBookletChapter(identifier, entry, displayStack, 0, pages); + } + + @Override + public IBookletPage generateTextPage(int id, int priority){ + return new PageTextOnly(id, priority); + } + + @Override + public IBookletPage generatePicturePage(int id, ResourceLocation resLoc, int textStartY, int priority){ + return new PagePicture(id, resLoc, textStartY, priority); + } + + @Override + public IBookletPage generateCraftingPage(int id, int priority, IRecipe... recipes){ + return new PageCrafting(id, priority, recipes); + } + + @Override + public IBookletPage generateFurnacePage(int id, ItemStack input, ItemStack result, int priority){ + return new PageFurnace(id, result, priority); + } + + @Override + public IBookletChapter generateBookletChapter(String identifier, IBookletEntry entry, ItemStack displayStack, int priority, IBookletPage... pages){ + return new BookletChapter(identifier, entry, displayStack, priority, pages); } }