public final String getText() { if (this.hasNoText) { return null; } String base = StringUtil.localize( "booklet." + ModUtil.MOD_ID_LOWER + ".chapter." + this.chapter.getUnlocalizedName() + ".text." + this.id) .replaceAll("<imp>", EnumChatFormatting.DARK_GREEN + "") .replaceAll("<item>", EnumChatFormatting.BLUE + "") .replaceAll("<r>", EnumChatFormatting.BLACK + "") .replaceAll("<n>", "\n") .replaceAll("<i>", EnumChatFormatting.ITALIC + "") .replaceAll("<rs>", EnumChatFormatting.RESET + ""); for (Object o : this.textReplacements.entrySet()) { Map.Entry e = (Map.Entry) o; base = base.replaceAll((String) e.getKey(), (String) e.getValue()); } return base; }
/** * Draws the Title of the current chapter, current index entry or just "Actually Additions" if * neither is present */ public static void drawTitle(GuiBooklet booklet) { // Upper title booklet.drawTexturedModalRect( booklet.guiLeft + booklet.xSize / 2 - 142 / 2, booklet.guiTop - 12, 0, 240, 142, 12); // Lower title booklet.drawTexturedModalRect( booklet.guiLeft + booklet.xSize / 2 - 142 / 2, booklet.guiTop + booklet.ySize, 0, 243, 142, 13); String strg = booklet.currentChapter == null ? (booklet.currentIndexEntry == null ? StringUtil.localize("itemGroup." + ModUtil.MOD_ID_LOWER) : booklet.currentIndexEntry.getLocalizedName()) : booklet.currentChapter.getLocalizedName(); booklet.drawCenteredString( booklet.getFontRenderer(), strg, booklet.guiLeft + booklet.xSize / 2, booklet.guiTop - 9, StringUtil.DECIMAL_COLOR_WHITE); }
@SuppressWarnings("unchecked") @Override public void render( GuiBooklet gui, int mouseX, int mouseY, int ticksElapsed, boolean mousePressed) { ItemStack input = this.input != null ? this.input : this.getInputForOutput(this.result); if (input == null) { gui.mc.fontRenderer.drawSplitString( EnumChatFormatting.DARK_RED + StringUtil.localize("booklet." + ModUtil.MOD_ID_LOWER + ".recipeDisabled"), gui.guiLeft + 14, gui.guiTop + 15, 115, 0); } else { String strg = "Furnace Recipe"; gui.mc.fontRenderer.drawString( strg, gui.guiLeft + gui.xSize / 2 - gui.mc.fontRenderer.getStringWidth(strg) / 2, gui.guiTop + 10, 0); } String text = gui.currentPage.getText(); if (text != null && !text.isEmpty()) { gui.mc.fontRenderer.drawSplitString(text, gui.guiLeft + 14, gui.guiTop + 100, 115, 0); } if (input != null) { for (int i = 0; i < 2; i++) { for (int x = 0; x < 2; x++) { ItemStack stack = x == 0 ? input : this.result; if (stack.getItemDamage() == Util.WILDCARD) { stack.setItemDamage(0); } boolean tooltip = i == 1; int xShow = gui.guiLeft + 37 + 1 + x * 42; int yShow = gui.guiTop + 20 + 21; if (!tooltip) { renderItem(gui, stack, xShow, yShow, 1.0F); } else { if (mouseX >= xShow && mouseX <= xShow + 16 && mouseY >= yShow && mouseY <= yShow + 16) { this.renderTooltipAndTransfer(gui, stack, mouseX, mouseY, x == 0, mousePressed); } } } } } }
@SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) protected void renderTooltipAndTransfer( GuiBooklet gui, ItemStack stack, int x, int y, boolean checkAndTransfer, boolean mousePressed) { boolean flagBefore = gui.mc.fontRenderer.getUnicodeFlag(); gui.mc.fontRenderer.setUnicodeFlag(false); 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, EnumChatFormatting.GRAY + (String) list.get(k)); } } if (checkAndTransfer) { BookletPage page = BookletUtils.getFirstPageForStack(stack); if (page != null && page != this) { list.add( EnumChatFormatting.GOLD + StringUtil.localize("booklet." + ModUtil.MOD_ID_LOWER + ".clickToSeeRecipe")); if (mousePressed) { BookletUtils.openIndexEntry( gui, page.getChapter().entry, InitBooklet.entries.indexOf(page.getChapter().entry) / GuiBooklet.CHAPTER_BUTTONS_AMOUNT + 1, true); BookletUtils.openChapter(gui, page.getChapter(), page); Minecraft.getMinecraft() .getSoundHandler() .playSound( PositionedSoundRecord.func_147674_a( new ResourceLocation("gui.button.press"), 1.0F)); } } } gui.drawHoveringText(list, x, y); gui.mc.fontRenderer.setUnicodeFlag(flagBefore); }
/** * Draws an Achievement Info if the page has items that trigger achievements * * @param pre If the hover info texts or the icon should be drawn */ public static void drawAchievementInfo(GuiBooklet booklet, boolean pre, int mouseX, int mouseY) { if (booklet.currentChapter == null) { return; } ArrayList<String> infoList = null; for (BookletPage page : booklet.currentChapter.pages) { if (page != null && page.getItemStacksForPage() != null) { for (ItemStack stack : page.getItemStacksForPage()) { for (Achievement achievement : InitAchievements.achievementList) { if (stack != null && achievement.theItemStack != null && achievement.theItemStack.isItemEqual(stack)) { if (pre) { booklet.mc.getTextureManager().bindTexture(GuiBooklet.resLoc); booklet.drawTexturedModalRect( booklet.guiLeft + booklet.xSize + 1, booklet.guiTop - 18, 166, 154, 22, 21); return; } else { if (mouseX >= booklet.guiLeft + booklet.xSize + 1 && mouseX < booklet.guiLeft + booklet.xSize + 1 + 22 && mouseY >= booklet.guiTop - 18 && mouseY < booklet.guiTop - 18 + 21) { if (infoList == null) { infoList = new ArrayList<String>(); infoList.add(EnumChatFormatting.GOLD + "Achievements related to this chapter:"); } infoList.add("-" + StringUtil.localize(achievement.statId)); infoList.add(EnumChatFormatting.GRAY + "(" + achievement.getDescription() + ")"); } } } } } } } if (infoList != null) { booklet.drawHoveringText(infoList, mouseX, mouseY); } }
/** Draws all of the hovering texts for the buttons that need explanation in the booklet */ @SuppressWarnings("unchecked") public static void doHoverTexts(GuiBooklet booklet, int mouseX, int mouseY) { // Achievements Hover Text if (booklet.buttonAchievements.func_146115_a()) { booklet.drawHoveringText( Collections.singletonList(EnumChatFormatting.GOLD + "Show Achievements"), mouseX, mouseY); } // Config Hover Text else if (booklet.buttonConfig.func_146115_a()) { ArrayList list = new ArrayList(); list.add(EnumChatFormatting.GOLD + "Show Configuration GUI"); list.addAll( booklet .getFontRenderer() .listFormattedStringToWidth( "It is highly recommended that you restart your game after changing anything as that prevents possible bugs occuring!", GuiBooklet.TOOLTIP_SPLIT_LENGTH)); booklet.drawHoveringText(list, mouseX, mouseY); } // Twitter Hover Text else if (booklet.buttonTwitter.func_146115_a()) { booklet.drawHoveringText( Collections.singletonList( EnumChatFormatting.GOLD + "Open @ActAddMod on Twitter in Browser"), mouseX, mouseY); } // Forum Hover Text else if (booklet.buttonForum.func_146115_a()) { booklet.drawHoveringText( Collections.singletonList( EnumChatFormatting.GOLD + "Open Minecraft Forum Post in Browser"), mouseX, mouseY); } // Update Checker Hover Text else if (booklet.buttonUpdate.func_146115_a()) { ArrayList list = new ArrayList(); if (UpdateChecker.checkFailed) { list.add( IChatComponent.Serializer.func_150699_a( StringUtil.localize("info." + ModUtil.MOD_ID_LOWER + ".update.failed")) .getFormattedText()); } else if (UpdateChecker.needsUpdateNotify) { list.add( IChatComponent.Serializer.func_150699_a( StringUtil.localize("info." + ModUtil.MOD_ID_LOWER + ".update.generic")) .getFormattedText()); list.add( IChatComponent.Serializer.func_150699_a( StringUtil.localizeFormatted( "info." + ModUtil.MOD_ID_LOWER + ".update.versionCompare", ModUtil.VERSION, UpdateChecker.updateVersion)) .getFormattedText()); list.add(StringUtil.localize("info." + ModUtil.MOD_ID_LOWER + ".update.buttonOptions")); } booklet.drawHoveringText(list, mouseX, mouseY); } else { for (GuiButton button : booklet.bookmarkButtons) { if (button instanceof BookmarkButton && button.func_146115_a()) { ((BookmarkButton) button).drawHover(mouseX, mouseY); } } } }