Added page sorting for the booklet

This commit is contained in:
Ellpeck 2016-11-22 22:54:35 +01:00
parent b57da71627
commit 39a72e176b
18 changed files with 148 additions and 17 deletions

View file

@ -31,7 +31,7 @@ public final class ActuallyAdditionsAPI{
public static final String MOD_ID = "actuallyadditions"; public static final String MOD_ID = "actuallyadditions";
public static final String API_ID = MOD_ID+"api"; 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<CrusherRecipe> CRUSHER_RECIPES = new ArrayList<CrusherRecipe>(); public static final List<CrusherRecipe> CRUSHER_RECIPES = new ArrayList<CrusherRecipe>();
public static final List<BallOfFurReturn> BALL_OF_FUR_RETURN_ITEMS = new ArrayList<BallOfFurReturn>(); public static final List<BallOfFurReturn> BALL_OF_FUR_RETURN_ITEMS = new ArrayList<BallOfFurReturn>();

View file

@ -27,4 +27,6 @@ public interface IBookletChapter{
String getIdentifier(); String getIdentifier();
int getPageIndex(IBookletPage page); int getPageIndex(IBookletPage page);
int getSortingPriority();
} }

View file

@ -29,4 +29,6 @@ public interface IBookletEntry{
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
List<IBookletChapter> getChaptersForDisplay(String searchBarText); List<IBookletChapter> getChaptersForDisplay(String searchBarText);
int getSortingPriority();
} }

View file

@ -66,4 +66,6 @@ public interface IBookletPage{
IBookletPage addTextReplacement(String key, float value); IBookletPage addTextReplacement(String key, float value);
IBookletPage addTextReplacement(String key, int value); IBookletPage addTextReplacement(String key, int value);
int getSortingPriority();
} }

View file

@ -53,4 +53,14 @@ public interface IMethodHandler{
IBookletPage generateFurnacePage(int id, ItemStack input, ItemStack result); IBookletPage generateFurnacePage(int id, ItemStack input, ItemStack result);
IBookletChapter generateBookletChapter(String identifier, IBookletEntry entry, ItemStack displayStack, IBookletPage... pages); 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);
} }

View file

@ -137,7 +137,7 @@ public class ActuallyAdditions{
LensRecipeHandler.init(); LensRecipeHandler.init();
EmpowererHandler.init(); EmpowererHandler.init();
InitBooklet.init(); InitBooklet.postInit();
proxy.postInit(event); proxy.postInit(event);
ModUtil.LOGGER.info("PostInitialization Finished."); ModUtil.LOGGER.info("PostInitialization Finished.");

View file

@ -45,15 +45,15 @@ import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
public final class InitBooklet{ public final class InitBooklet{
public static BookletChapter[] chaptersIntroduction = new BookletChapter[9]; public static BookletChapter[] chaptersIntroduction = new BookletChapter[9];
public static void preInit(){ public static void preInit(){
ActuallyAdditionsAPI.allAndSearch = new BookletEntryAllItems("allAndSearch").setImportant();
ActuallyAdditionsAPI.entryGettingStarted = new BookletEntry("gettingStarted").setImportant(); ActuallyAdditionsAPI.entryGettingStarted = new BookletEntry("gettingStarted").setImportant();
ActuallyAdditionsAPI.entryReconstruction = new BookletEntry("reconstruction"); ActuallyAdditionsAPI.entryReconstruction = new BookletEntry("reconstruction");
ActuallyAdditionsAPI.entryLaserRelays = new BookletEntry("laserRelays").setSpecial(); ActuallyAdditionsAPI.entryLaserRelays = new BookletEntry("laserRelays").setSpecial();
@ -64,10 +64,9 @@ public final class InitBooklet{
ActuallyAdditionsAPI.entryItemsRF = new BookletEntry("itemsRF"); ActuallyAdditionsAPI.entryItemsRF = new BookletEntry("itemsRF");
ActuallyAdditionsAPI.entryMisc = new BookletEntry("misc"); ActuallyAdditionsAPI.entryMisc = new BookletEntry("misc");
ActuallyAdditionsAPI.entryUpdatesAndInfos = new BookletEntry("updatesAndInfos").setSpecial(); ActuallyAdditionsAPI.entryUpdatesAndInfos = new BookletEntry("updatesAndInfos").setSpecial();
ActuallyAdditionsAPI.allAndSearch = new BookletEntryAllItems("allAndSearch").setImportant();
} }
public static void init(){ public static void postInit(){
initChapters(); initChapters();
int chapCount = 0; int chapCount = 0;
@ -98,6 +97,31 @@ public final class InitBooklet{
} }
} }
Collections.sort(ActuallyAdditionsAPI.BOOKLET_ENTRIES, new Comparator<IBookletEntry>(){
@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<IBookletChapter>(){
@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<IBookletPage>(){
@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!"); ModUtil.LOGGER.info("Registered a total of "+chapCount+" booklet chapters, where "+infoCount+" out of "+pageCount+" booklet pages contain information about items or fluids!");
} }

View file

@ -24,13 +24,19 @@ public class BookletChapter implements IBookletChapter{
public final IBookletEntry entry; public final IBookletEntry entry;
public final ItemStack displayStack; public final ItemStack displayStack;
private final String identifier; private final String identifier;
private final int priority;
public TextFormatting color; public TextFormatting color;
public BookletChapter(String identifier, IBookletEntry entry, ItemStack displayStack, IBookletPage... pages){ 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.pages = pages;
this.identifier = identifier; this.identifier = identifier;
this.entry = entry; this.entry = entry;
this.displayStack = displayStack; this.displayStack = displayStack;
this.priority = priority;
this.color = TextFormatting.RESET; this.color = TextFormatting.RESET;
this.entry.addChapter(this); this.entry.addChapter(this);
@ -79,6 +85,11 @@ public class BookletChapter implements IBookletChapter{
return -1; return -1;
} }
@Override
public int getSortingPriority(){
return this.priority;
}
public BookletChapter setImportant(){ public BookletChapter setImportant(){
this.color = TextFormatting.DARK_GREEN; this.color = TextFormatting.DARK_GREEN;
return this; return this;

View file

@ -31,11 +31,17 @@ import java.util.Locale;
public class BookletEntry implements IBookletEntry{ public class BookletEntry implements IBookletEntry{
private final String identifier; private final String identifier;
private final int priority;
private final List<IBookletChapter> chapters = new ArrayList<IBookletChapter>(); private final List<IBookletChapter> chapters = new ArrayList<IBookletChapter>();
private TextFormatting color; private TextFormatting color;
public BookletEntry(String identifier){ public BookletEntry(String identifier){
this(identifier, 0);
}
public BookletEntry(String identifier, int prio){
this.identifier = identifier; this.identifier = identifier;
this.priority = prio;
ActuallyAdditionsAPI.addBookletEntry(this); ActuallyAdditionsAPI.addBookletEntry(this);
this.color = TextFormatting.RESET; this.color = TextFormatting.RESET;
@ -129,6 +135,11 @@ public class BookletEntry implements IBookletEntry{
} }
} }
@Override
public int getSortingPriority(){
return this.priority;
}
public BookletEntry setImportant(){ public BookletEntry setImportant(){
this.color = TextFormatting.DARK_GREEN; this.color = TextFormatting.DARK_GREEN;
return this; return this;

View file

@ -18,7 +18,7 @@ import java.util.List;
public class BookletEntryAllItems extends BookletEntry{ public class BookletEntryAllItems extends BookletEntry{
public BookletEntryAllItems(String identifier){ public BookletEntryAllItems(String identifier){
super(identifier); super(identifier, -Integer.MAX_VALUE);
} }
@Override @Override

View file

@ -32,13 +32,19 @@ public class BookletPage implements IBookletPage{
protected final HashMap<String, String> textReplacements = new HashMap<String, String>(); protected final HashMap<String, String> textReplacements = new HashMap<String, String>();
protected final int localizationKey; protected final int localizationKey;
private final int priority;
private final List<ItemStack> itemsForPage = new ArrayList<ItemStack>(); private final List<ItemStack> itemsForPage = new ArrayList<ItemStack>();
private final List<FluidStack> fluidsForPage = new ArrayList<FluidStack>(); private final List<FluidStack> fluidsForPage = new ArrayList<FluidStack>();
protected IBookletChapter chapter; protected IBookletChapter chapter;
protected boolean hasNoText; protected boolean hasNoText;
public BookletPage(int localizationKey){ public BookletPage(int localizationKey){
this(localizationKey, 0);
}
public BookletPage(int localizationKey, int priority){
this.localizationKey = localizationKey; this.localizationKey = localizationKey;
this.priority = priority;
} }
@Override @Override
@ -174,4 +180,9 @@ public class BookletPage implements IBookletPage{
public BookletPage addTextReplacement(String key, int value){ public BookletPage addTextReplacement(String key, int value){
return this.addTextReplacement(key, Integer.toString(value)); return this.addTextReplacement(key, Integer.toString(value));
} }
@Override
public int getSortingPriority(){
return this.priority;
}
} }

View file

@ -37,13 +37,22 @@ public class PageCrafting extends BookletPage{
private String recipeTypeLocKey; private String recipeTypeLocKey;
private boolean isWildcard; private boolean isWildcard;
public PageCrafting(int localizationKey, List<IRecipe> recipes){ public PageCrafting(int localizationKey, int priority, List<IRecipe> recipes){
super(localizationKey); super(localizationKey, priority);
this.recipes = recipes; this.recipes = recipes;
} }
public PageCrafting(int localizationKey, List<IRecipe> recipes){
this(localizationKey, 0, recipes);
}
public PageCrafting(int localizationKey, IRecipe... 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(){ public BookletPage setWildcard(){

View file

@ -62,4 +62,9 @@ public class PageEmpowerer extends BookletPage{
list.add(this.recipe.output); list.add(this.recipe.output);
} }
} }
@Override
public int getSortingPriority(){
return 20;
}
} }

View file

@ -25,7 +25,11 @@ public class PageFurnace extends BookletPage{
private final ItemStack output; private final ItemStack output;
public PageFurnace(int localizationKey, 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.output = output;
this.input = getInputForOutput(output); this.input = getInputForOutput(output);
} }

View file

@ -21,6 +21,12 @@ public class PagePicture extends BookletPage{
private final ResourceLocation resLoc; private final ResourceLocation resLoc;
private final int yTextOffset; 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){ public PagePicture(int localizationKey, ResourceLocation resLoc, int yTextOffset){
super(localizationKey); super(localizationKey);
this.yTextOffset = yTextOffset; this.yTextOffset = yTextOffset;

View file

@ -57,4 +57,9 @@ public class PageReconstructor extends BookletPage{
list.add(this.recipe.outputStack); list.add(this.recipe.outputStack);
} }
} }
@Override
public int getSortingPriority(){
return 20;
}
} }

View file

@ -16,6 +16,10 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class PageTextOnly extends BookletPage{ public class PageTextOnly extends BookletPage{
public PageTextOnly(int localizationKey, int priority){
super(localizationKey, priority);
}
public PageTextOnly(int localizationKey){ public PageTextOnly(int localizationKey){
super(localizationKey); super(localizationKey);
} }

View file

@ -247,26 +247,51 @@ public class MethodHandler implements IMethodHandler{
@Override @Override
public IBookletPage generateTextPage(int id){ public IBookletPage generateTextPage(int id){
return new PageTextOnly(id); return this.generateTextPage(id, 0);
} }
@Override @Override
public IBookletPage generatePicturePage(int id, ResourceLocation resLoc, int textStartY){ public IBookletPage generatePicturePage(int id, ResourceLocation resLoc, int textStartY){
return new PagePicture(id, resLoc, textStartY); return this.generatePicturePage(id, resLoc, textStartY, 0);
} }
@Override @Override
public IBookletPage generateCraftingPage(int id, IRecipe... recipes){ public IBookletPage generateCraftingPage(int id, IRecipe... recipes){
return new PageCrafting(id, recipes); return this.generateCraftingPage(id, 0, recipes);
} }
@Override @Override
public IBookletPage generateFurnacePage(int id, ItemStack input, ItemStack result){ public IBookletPage generateFurnacePage(int id, ItemStack input, ItemStack result){
return new PageFurnace(id, result); return this.generateFurnacePage(id, input, result, 0);
} }
@Override @Override
public IBookletChapter generateBookletChapter(String identifier, IBookletEntry entry, ItemStack displayStack, IBookletPage... pages){ 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);
} }
} }