Added some fancy recipe auto-scrolling for multiple recipes on the same page

This commit is contained in:
Ellpeck 2015-09-29 17:42:04 +02:00
parent 582b988545
commit 2aa2e547c8
9 changed files with 47 additions and 16 deletions

View file

@ -87,6 +87,10 @@ public class GuiBooklet extends GuiScreen{
super.updateScreen();
this.searchField.updateCursorCounter();
if(this.currentIndexEntry != null && this.currentChapter != null && this.currentPage != null){
this.currentPage.updateScreen(this.ticksElapsed);
}
boolean buttonThere = UpdateChecker.doneChecking && UpdateChecker.updateVersion > UpdateChecker.clientVersion;
this.getButton(BUTTON_UPDATE_ID).visible = buttonThere;
if(buttonThere){

View file

@ -74,7 +74,7 @@ public class InitBooklet{
new BookletChapter("greenhouseGlass", entryFunctionalNonRF, new ItemStack(InitBlocks.blockGreenhouseGlass), new PageTextOnly(1), new PageCrafting(2, BlockCrafting.recipeGlass).setNoText());
new BookletChapter("fishingNet", entryFunctionalNonRF, new ItemStack(InitBlocks.blockFishingNet), new PageTextOnly(1), new PageCrafting(2, BlockCrafting.recipeFisher).setNoText());
new BookletChapter("feeder", entryFunctionalNonRF, new ItemStack(InitBlocks.blockFeeder), new PageTextOnly(1), new PageCrafting(2, BlockCrafting.recipeFeeder).setNoText());
new BookletChapter("compost", entryFunctionalNonRF, new ItemStack(InitBlocks.blockCompost), new PageTextOnly(1).setStack(new ItemStack(InitItems.itemFertilizer)).addTextReplacement("<num>", ConfigIntValues.COMPOST_AMOUNT.getValue()), new PageCrafting(2, BlockCrafting.recipeCompost).setNoText(), new PageCrafting(3, ItemCrafting.recipeMashedFood));
new BookletChapter("compost", entryFunctionalNonRF, new ItemStack(InitBlocks.blockCompost), new PageTextOnly(1).setStack(new ItemStack(InitItems.itemFertilizer)).addTextReplacement("<num>", ConfigIntValues.COMPOST_AMOUNT.getValue()), new PageCrafting(2, BlockCrafting.recipeCompost).setNoText(), new PageCrafting(3, ItemCrafting.recipesMashedFood));
new BookletChapter("crate", entryFunctionalNonRF, new ItemStack(InitBlocks.blockGiantChest), new PageCrafting(1, BlockCrafting.recipeCrate));
//RF Using Blocks

View file

@ -93,6 +93,10 @@ public class BookletPage{
return null;
}
public void updateScreen(int ticksElapsed){
}
@SuppressWarnings("unchecked")
protected void renderTooltipAndTransfer(GuiBooklet gui, ItemStack stack, int x, int y, boolean checkAndTransfer, boolean mouseClick){
List list = stack.getTooltip(gui.mc.thePlayer, gui.mc.gameSettings.advancedItemTooltips);

View file

@ -28,31 +28,56 @@ import java.util.ArrayList;
public class PageCrafting extends BookletPage{
private final IRecipe recipe;
private final IRecipe[] recipes;
private int recipePos;
public PageCrafting(int id, IRecipe recipe){
public PageCrafting(int id, IRecipe... recipes){
super(id);
this.recipe = recipe;
this.recipes = recipes;
InitBooklet.pagesWithItemStackData.add(this);
}
public PageCrafting(int id, ArrayList<IRecipe> recipes){
this(id, recipes.toArray(new IRecipe[recipes.size()]));
}
@Override
public ItemStack[] getItemStacksForPage(){
return this.recipe == null ? null : new ItemStack[]{this.recipe.getRecipeOutput()};
ItemStack[] stacks = new ItemStack[this.recipes.length];
for(int i = 0; i < stacks.length; i++){
if(this.recipes[i] != null){
stacks[i] = this.recipes[i].getRecipeOutput();
}
}
return stacks;
}
@Override
public void renderPre(GuiBooklet gui, int mouseX, int mouseY, boolean mouseClick, int ticksElapsed){
if(this.recipe != null){
if(this.recipes[this.recipePos] != null){
gui.mc.getTextureManager().bindTexture(GuiBooklet.resLoc);
gui.drawTexturedModalRect(gui.guiLeft+27, gui.guiTop+20, 146, 20, 99, 60);
}
}
@Override
public void updateScreen(int ticksElapsed){
if(ticksElapsed%30 == 0){
if(this.recipePos+1 >= this.recipes.length){
this.recipePos = 0;
}
else{
this.recipePos++;
}
}
}
@SuppressWarnings("unchecked")
@Override
public void render(GuiBooklet gui, int mouseX, int mouseY, boolean mouseClick, int ticksElapsed){
if(this.recipe == null){
IRecipe recipe = this.recipes[this.recipePos];
if(recipe == null){
gui.unicodeRenderer.drawSplitString(EnumChatFormatting.DARK_RED+StringUtil.localize("booklet."+ModUtil.MOD_ID_LOWER+".recipeDisabled"), gui.guiLeft+14, gui.guiTop+15, 115, 0);
}
else{
@ -65,7 +90,7 @@ public class PageCrafting extends BookletPage{
gui.unicodeRenderer.drawSplitString(text, gui.guiLeft+14, gui.guiTop+90, 115, 0);
}
if(this.recipe != null){
if(recipe != null){
ItemStack[] stacks = new ItemStack[9];
int width = 3;

View file

@ -39,7 +39,7 @@ public class PageCrusherRecipe extends BookletPage{
@Override
public ItemStack[] getItemStacksForPage(){
return new ItemStack[]{this.recipe == null ? null : this.recipe.firstOutput};
return this.recipe == null ? new ItemStack[0] : new ItemStack[]{this.recipe.firstOutput};
}
@SuppressWarnings("unchecked")

View file

@ -38,7 +38,7 @@ public class PageFurnace extends BookletPage{
@Override
public ItemStack[] getItemStacksForPage(){
return new ItemStack[]{this.result};
return this.result == null ? new ItemStack[0] : new ItemStack[]{this.result};
}
@Override

View file

@ -32,7 +32,7 @@ public class PageTextOnly extends BookletPage{
@Override
public ItemStack[] getItemStacksForPage(){
return new ItemStack[]{this.stack};
return this.stack == null ? new ItemStack[0] : new ItemStack[]{this.stack};
}
@Override

View file

@ -40,7 +40,7 @@ public class ItemCrafting{
public static IRecipe recipeBook;
public static IRecipe recipeTinyCoal;
public static IRecipe recipeTinyChar;
public static IRecipe recipeMashedFood;
public static ArrayList<IRecipe> recipesMashedFood = new ArrayList<IRecipe>();
public static IRecipe recipeDrill;
public static IRecipe recipeDrillSpeedI;
public static IRecipe recipeDrillSpeedII;
@ -478,9 +478,7 @@ public class ItemCrafting{
if(!isBlacklisted(item)){
ItemStack ingredient = new ItemStack((Item)item, 1, Util.WILDCARD);
GameRegistry.addShapelessRecipe(new ItemStack(InitItems.itemMisc, 8, TheMiscItems.MASHED_FOOD.ordinal()), ingredient, ingredient, ingredient, ingredient, new ItemStack(InitItems.itemKnife, 1, Util.WILDCARD));
if(recipeMashedFood == null){
recipeMashedFood = Util.lastIRecipe();
}
recipesMashedFood.add(Util.lastIRecipe());
}
}
}

View file

@ -450,7 +450,7 @@ booklet.actuallyadditions.chapter.feeder.text.1=The <item>Feeder<r> is a good al
booklet.actuallyadditions.chapter.compost.name=Compost and Fertilizer
booklet.actuallyadditions.chapter.compost.text.1=The <item>Compost<r> is used to make <item>Fertilizier<r> from <item>Mashed Food<r>. <item>Fertilizer<r> acts just like Bone Meal, but can be crafted in a much simpler manner just by crafting <item>Mashed Food<r> and then putting <num> of those inside of a <item>Compost<r> and waiting for a bit. When the mashed food is composted, just take it out by right-clicking again.
booklet.actuallyadditions.chapter.compost.text.3=<item>Mashed Food<r> can be crafted from <imp>any time of food or plantable item<r>.
booklet.actuallyadditions.chapter.compost.text.3=<item>Mashed Food<r> can be crafted from <imp>any type of food or plantable item<r>.
booklet.actuallyadditions.chapter.crate.name=Storage Crates
booklet.actuallyadditions.chapter.crate.text.1=<item>Storage Crates<r> are big. <imp>Really big<r>. They hold tons of items, more than 4 chests worth of them. <n><n><i>"F-in' gigantic"<rs><n> -Some Magazine