mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-26 16:58:34 +01:00
When an item that is used in a crafting recipe has its own page, clicking on the item will open that page
This commit is contained in:
parent
6a2af50620
commit
4e4fc76f2c
7 changed files with 95 additions and 13 deletions
|
@ -28,6 +28,7 @@ import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public class GuiBooklet extends GuiScreen{
|
public class GuiBooklet extends GuiScreen{
|
||||||
|
@ -72,7 +73,7 @@ public class GuiBooklet extends GuiScreen{
|
||||||
if(key != 1 && this.searchField.isFocused()){
|
if(key != 1 && this.searchField.isFocused()){
|
||||||
this.searchField.textboxKeyTyped(theChar, key);
|
this.searchField.textboxKeyTyped(theChar, key);
|
||||||
|
|
||||||
if(this.currentIndexEntry == InitBooklet.allAndSearch){
|
if(this.currentIndexEntry instanceof BookletEntryAllSearch){
|
||||||
BookletEntryAllSearch currentEntry = (BookletEntryAllSearch)this.currentIndexEntry;
|
BookletEntryAllSearch currentEntry = (BookletEntryAllSearch)this.currentIndexEntry;
|
||||||
if(this.searchField.getText() != null && !this.searchField.getText().isEmpty()){
|
if(this.searchField.getText() != null && !this.searchField.getText().isEmpty()){
|
||||||
currentEntry.chapters.clear();
|
currentEntry.chapters.clear();
|
||||||
|
@ -122,7 +123,6 @@ public class GuiBooklet extends GuiScreen{
|
||||||
this.searchField = new GuiTextField(this.unicodeRenderer, guiLeft+148, guiTop+162, 66, 10);
|
this.searchField = new GuiTextField(this.unicodeRenderer, guiLeft+148, guiTop+162, 66, 10);
|
||||||
this.searchField.setMaxStringLength(30);
|
this.searchField.setMaxStringLength(30);
|
||||||
this.searchField.setEnableBackgroundDrawing(false);
|
this.searchField.setEnableBackgroundDrawing(false);
|
||||||
this.searchField.setVisible(false);
|
|
||||||
|
|
||||||
this.currentPage = null;
|
this.currentPage = null;
|
||||||
this.currentChapter = null;
|
this.currentChapter = null;
|
||||||
|
@ -140,13 +140,17 @@ public class GuiBooklet extends GuiScreen{
|
||||||
super.renderToolTip(stack, x, y);
|
super.renderToolTip(stack, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void drawHoveringText(List list, int x, int y){
|
||||||
|
super.func_146283_a(list, x, y);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawScreen(int x, int y, float f){
|
public void drawScreen(int x, int y, float f){
|
||||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
this.mc.getTextureManager().bindTexture(resLoc);
|
this.mc.getTextureManager().bindTexture(resLoc);
|
||||||
this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
|
this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize);
|
||||||
|
|
||||||
if(this.currentIndexEntry == InitBooklet.allAndSearch && this.currentChapter == null){
|
if(this.currentIndexEntry instanceof BookletEntryAllSearch && this.currentChapter == null){
|
||||||
this.drawTexturedModalRect(this.guiLeft+146, this.guiTop+160, 146, 80, 70, 14);
|
this.drawTexturedModalRect(this.guiLeft+146, this.guiTop+160, 146, 80, 70, 14);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,7 +258,8 @@ public class GuiBooklet extends GuiScreen{
|
||||||
if(this.currentIndexEntry != null){
|
if(this.currentIndexEntry != null){
|
||||||
if(this.currentChapter == null){
|
if(this.currentChapter == null){
|
||||||
if(actualButton < this.currentIndexEntry.chapters.size()){
|
if(actualButton < this.currentIndexEntry.chapters.size()){
|
||||||
this.openChapter(currentIndexEntry.chapters.get(actualButton+(12*this.pageOpenInIndex-12)));
|
BookletChapter chap = currentIndexEntry.chapters.get(actualButton+(12*this.pageOpenInIndex-12));
|
||||||
|
this.openChapter(chap, chap.pages[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -278,10 +283,10 @@ public class GuiBooklet extends GuiScreen{
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private void openIndexEntry(BookletIndexEntry entry, int page, boolean resetTextField){
|
private void openIndexEntry(BookletIndexEntry entry, int page, boolean resetTextField){
|
||||||
if(resetTextField){
|
if(resetTextField){
|
||||||
this.searchField.setVisible(entry == InitBooklet.allAndSearch);
|
this.searchField.setVisible(entry instanceof BookletEntryAllSearch);
|
||||||
this.searchField.setFocused(entry == InitBooklet.allAndSearch);
|
this.searchField.setFocused(entry instanceof BookletEntryAllSearch);
|
||||||
this.searchField.setText("");
|
this.searchField.setText("");
|
||||||
if(entry == InitBooklet.allAndSearch){
|
if(entry instanceof BookletEntryAllSearch){
|
||||||
entry.chapters = (ArrayList<BookletChapter>)((BookletEntryAllSearch)entry).allChapters.clone();
|
entry.chapters = (ArrayList<BookletChapter>)((BookletEntryAllSearch)entry).allChapters.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -316,7 +321,7 @@ public class GuiBooklet extends GuiScreen{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openChapter(BookletChapter chapter){
|
public void openChapter(BookletChapter chapter, IBookletPage page){
|
||||||
if(chapter == null) return;
|
if(chapter == null) return;
|
||||||
|
|
||||||
this.searchField.setVisible(false);
|
this.searchField.setVisible(false);
|
||||||
|
@ -324,9 +329,9 @@ public class GuiBooklet extends GuiScreen{
|
||||||
this.searchField.setText("");
|
this.searchField.setText("");
|
||||||
|
|
||||||
this.currentChapter = chapter;
|
this.currentChapter = chapter;
|
||||||
this.currentPage = currentChapter.pages[0];
|
this.currentPage = page != null && this.hasPage(chapter, page) ? page : chapter.pages[0];
|
||||||
|
|
||||||
this.getButton(BUTTON_FORWARD_ID).visible = this.getNextPage(chapter, currentPage) != null;
|
this.getButton(BUTTON_FORWARD_ID).visible = this.getNextPage(chapter, this.currentPage) != null;
|
||||||
this.getButton(BUTTON_BACK_ID).visible = false;
|
this.getButton(BUTTON_BACK_ID).visible = false;
|
||||||
|
|
||||||
for(int i = 0; i < 12; i++){
|
for(int i = 0; i < 12; i++){
|
||||||
|
@ -335,6 +340,15 @@ public class GuiBooklet extends GuiScreen{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean hasPage(BookletChapter chapter, IBookletPage page){
|
||||||
|
for(IBookletPage aPage : chapter.pages){
|
||||||
|
if(aPage == page){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private static class IndexButton extends GuiButton{
|
private static class IndexButton extends GuiButton{
|
||||||
|
|
||||||
private FontRenderer renderer;
|
private FontRenderer renderer;
|
||||||
|
|
|
@ -10,15 +10,21 @@
|
||||||
|
|
||||||
package ellpeck.actuallyadditions.inventory.gui.booklet;
|
package ellpeck.actuallyadditions.inventory.gui.booklet;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public interface IBookletPage{
|
public interface IBookletPage{
|
||||||
|
|
||||||
int getID();
|
int getID();
|
||||||
|
|
||||||
void setChapter(BookletChapter chapter);
|
void setChapter(BookletChapter chapter);
|
||||||
|
|
||||||
|
BookletChapter getChapter();
|
||||||
|
|
||||||
String getText();
|
String getText();
|
||||||
|
|
||||||
void renderPre(GuiBooklet gui, int mouseX, int mouseY);
|
void renderPre(GuiBooklet gui, int mouseX, int mouseY);
|
||||||
|
|
||||||
void render(GuiBooklet gui, int mouseX, int mouseY);
|
void render(GuiBooklet gui, int mouseX, int mouseY);
|
||||||
|
|
||||||
|
ItemStack getItemStackForPage();
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.util.ArrayList;
|
||||||
public class InitBooklet{
|
public class InitBooklet{
|
||||||
|
|
||||||
public static ArrayList<BookletIndexEntry> entries = new ArrayList<BookletIndexEntry>();
|
public static ArrayList<BookletIndexEntry> entries = new ArrayList<BookletIndexEntry>();
|
||||||
|
public static ArrayList<IBookletPage> pagesWithItemStackData = new ArrayList<IBookletPage>();
|
||||||
|
|
||||||
public static BookletIndexEntry entryFunctionalNonRF = new BookletIndexEntry("functionalNoRF");
|
public static BookletIndexEntry entryFunctionalNonRF = new BookletIndexEntry("functionalNoRF");
|
||||||
public static BookletIndexEntry entryMisc = new BookletIndexEntry("misc");
|
public static BookletIndexEntry entryMisc = new BookletIndexEntry("misc");
|
||||||
|
|
|
@ -32,6 +32,12 @@ public class PageCrafting extends PageText{
|
||||||
public PageCrafting(int id, IRecipe recipe){
|
public PageCrafting(int id, IRecipe recipe){
|
||||||
super(id);
|
super(id);
|
||||||
this.recipe = recipe;
|
this.recipe = recipe;
|
||||||
|
InitBooklet.pagesWithItemStackData.add(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStackForPage(){
|
||||||
|
return this.recipe == null ? null : this.recipe.getRecipeOutput();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -109,7 +115,7 @@ public class PageCrafting extends PageText{
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if(mouseX >= xShow && mouseX <= xShow+16 && mouseY >= yShow && mouseY <= yShow+16){
|
if(mouseX >= xShow && mouseX <= xShow+16 && mouseY >= yShow && mouseY <= yShow+16){
|
||||||
gui.renderToolTip(stack, mouseX, mouseY);
|
this.renderTooltipAndTransfer(gui, stack, mouseX, mouseY, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ public class PageCrusherRecipe extends PageText{
|
||||||
public PageCrusherRecipe(int id, ItemStack input){
|
public PageCrusherRecipe(int id, ItemStack input){
|
||||||
super(id);
|
super(id);
|
||||||
this.input = input;
|
this.input = input;
|
||||||
|
InitBooklet.pagesWithItemStackData.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,6 +35,11 @@ public class PageCrusherRecipe extends PageText{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStackForPage(){
|
||||||
|
return CrusherRecipeManualRegistry.getOutput(this.input, false);
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public void render(GuiBooklet gui, int mouseX, int mouseY){
|
public void render(GuiBooklet gui, int mouseX, int mouseY){
|
||||||
|
@ -66,7 +72,7 @@ public class PageCrusherRecipe extends PageText{
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if(mouseX >= xShow && mouseX <= xShow+16 && mouseY >= yShow && mouseY <= yShow+16){
|
if(mouseX >= xShow && mouseX <= xShow+16 && mouseY >= yShow && mouseY <= yShow+16){
|
||||||
gui.renderToolTip(stack, mouseX, mouseY);
|
this.renderTooltipAndTransfer(gui, stack, mouseX, mouseY, j == 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,12 @@ public class PageFurnace extends PageText{
|
||||||
public PageFurnace(int id, ItemStack result){
|
public PageFurnace(int id, ItemStack result){
|
||||||
super(id);
|
super(id);
|
||||||
this.result = result;
|
this.result = result;
|
||||||
|
InitBooklet.pagesWithItemStackData.add(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStackForPage(){
|
||||||
|
return this.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -61,7 +67,7 @@ public class PageFurnace extends PageText{
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if(mouseX >= xShow && mouseX <= xShow+16 && mouseY >= yShow && mouseY <= yShow+16){
|
if(mouseX >= xShow && mouseX <= xShow+16 && mouseY >= yShow && mouseY <= yShow+16){
|
||||||
gui.renderToolTip(stack, mouseX, mouseY);
|
this.renderTooltipAndTransfer(gui, stack, mouseX, mouseY, x == 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,10 @@ package ellpeck.actuallyadditions.inventory.gui.booklet;
|
||||||
|
|
||||||
import ellpeck.actuallyadditions.util.ModUtil;
|
import ellpeck.actuallyadditions.util.ModUtil;
|
||||||
import ellpeck.actuallyadditions.util.StringUtil;
|
import ellpeck.actuallyadditions.util.StringUtil;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import org.lwjgl.input.Mouse;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class PageText implements IBookletPage{
|
public class PageText implements IBookletPage{
|
||||||
|
|
||||||
|
@ -32,6 +36,11 @@ public class PageText implements IBookletPage{
|
||||||
this.chapter = chapter;
|
this.chapter = chapter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BookletChapter getChapter(){
|
||||||
|
return this.chapter;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getText(){
|
public String getText(){
|
||||||
return StringUtil.localize("booklet."+ModUtil.MOD_ID_LOWER+".chapter."+this.chapter.getUnlocalizedName()+".text."+this.id);
|
return StringUtil.localize("booklet."+ModUtil.MOD_ID_LOWER+".chapter."+this.chapter.getUnlocalizedName()+".text."+this.id);
|
||||||
|
@ -46,4 +55,38 @@ public class PageText implements IBookletPage{
|
||||||
public void render(GuiBooklet gui, int mouseX, int mouseY){
|
public void render(GuiBooklet gui, int mouseX, int mouseY){
|
||||||
gui.unicodeRenderer.drawSplitString(gui.currentPage.getText(), gui.guiLeft+14, gui.guiTop+11, 115, 0);
|
gui.unicodeRenderer.drawSplitString(gui.currentPage.getText(), gui.guiLeft+14, gui.guiTop+11, 115, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getItemStackForPage(){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
protected void renderTooltipAndTransfer(GuiBooklet gui, ItemStack stack, int x, int y, boolean checkAndTransfer){
|
||||||
|
List list = stack.getTooltip(gui.mc.thePlayer, gui.mc.gameSettings.advancedItemTooltips);
|
||||||
|
|
||||||
|
for(int k = 0; k < list.size(); ++k){
|
||||||
|
if(k == 0){
|
||||||
|
list.set(k, stack.getRarity().rarityColor+(String)list.get(k));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
list.set(k, StringUtil.GRAY+list.get(k));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(checkAndTransfer){
|
||||||
|
for(IBookletPage page : InitBooklet.pagesWithItemStackData){
|
||||||
|
if(page.getItemStackForPage() != null && page.getItemStackForPage().isItemEqual(stack)){
|
||||||
|
list.add(StringUtil.ORANGE+"Click to see Recipe!");
|
||||||
|
|
||||||
|
if(Mouse.isButtonDown(0)){
|
||||||
|
gui.openChapter(page.getChapter(), page);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gui.drawHoveringText(list, x, y);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue