2016-11-10 19:50:01 +01:00
/ *
* This file ( " GuiMainPage.java " ) is part of the Actually Additions mod for Minecraft .
* It is created and owned by Ellpeck and distributed
* under the Actually Additions License to be found at
* http : //ellpeck.de/actaddlicense
* View the source code at https : //github.com/Ellpeck/ActuallyAdditions
*
* © 2015 - 2016 Ellpeck
* /
package de.ellpeck.actuallyadditions.mod.booklet.gui ;
import de.ellpeck.actuallyadditions.api.ActuallyAdditionsAPI ;
import de.ellpeck.actuallyadditions.api.booklet.IBookletEntry ;
2016-11-12 15:09:30 +01:00
import de.ellpeck.actuallyadditions.mod.booklet.InitBooklet ;
2016-11-10 19:50:01 +01:00
import de.ellpeck.actuallyadditions.mod.booklet.button.EntryButton ;
2016-11-17 17:36:00 +01:00
import de.ellpeck.actuallyadditions.mod.booklet.misc.GuiAAAchievements ;
import de.ellpeck.actuallyadditions.mod.config.GuiConfiguration ;
2016-11-12 15:09:30 +01:00
import de.ellpeck.actuallyadditions.mod.data.PlayerData ;
import de.ellpeck.actuallyadditions.mod.data.PlayerData.PlayerSave ;
2016-11-17 17:36:00 +01:00
import de.ellpeck.actuallyadditions.mod.inventory.gui.TexturedButton ;
2016-11-12 15:09:30 +01:00
import de.ellpeck.actuallyadditions.mod.network.PacketHandlerHelper ;
import de.ellpeck.actuallyadditions.mod.util.ModUtil ;
import de.ellpeck.actuallyadditions.mod.util.StringUtil ;
import de.ellpeck.actuallyadditions.mod.util.Util ;
import net.minecraft.client.Minecraft ;
2016-11-10 21:07:15 +01:00
import net.minecraft.client.gui.GuiButton ;
2016-11-10 19:50:01 +01:00
import net.minecraft.client.gui.GuiScreen ;
2016-11-10 23:37:40 +01:00
import net.minecraft.item.ItemStack ;
2016-11-12 15:09:30 +01:00
import net.minecraft.util.math.MathHelper ;
import net.minecraft.util.text.TextFormatting ;
2016-11-10 22:06:58 +01:00
import net.minecraftforge.fml.relauncher.Side ;
import net.minecraftforge.fml.relauncher.SideOnly ;
2016-11-10 19:50:01 +01:00
2016-11-10 21:07:15 +01:00
import java.io.IOException ;
2016-11-17 17:36:00 +01:00
import java.util.ArrayList ;
2016-11-17 16:25:47 +01:00
import java.util.List ;
2016-11-10 21:07:15 +01:00
2016-11-10 22:06:58 +01:00
@SideOnly ( Side . CLIENT )
2016-11-10 19:50:01 +01:00
public class GuiMainPage extends GuiBooklet {
2016-11-17 16:25:47 +01:00
private static final String [ ] QUOTES = new String [ ] {
" Actually Additions, to me, is quite magical in a way.@Saphrym " ,
" Actually quite cool. Lots of nice little additions.@Direwolf20 " ,
" Mod Dev quite rude and arrogant@Bubb1e0seven " ,
" A whimsical breath of fresh air in a stuffy tech-mod world.@mezz " ,
" User-friendly :3@TheMeeep " ,
" A lot of stuff, some of it really good.@Narubion " ,
" I like the bookmarks.@Vazkii " ,
" It's got some stuff I guess.@Ellpeck " ,
" Actually Additions should be included in every new modpack that includes any form of tech.@KarillEndusa " ,
" A mod that basically lets you do what ever the heck you want.@Joshwoo70 " ,
2016-11-17 17:36:00 +01:00
" TINY TORCHES!! BABY TORCHES!! Somebody actually finally did it!!@Soaryn " ,
" Balanced mod wich makes things different - in a good way.@garantiertnicht " ,
" The mod everyone needs, but not everyone knows@Brewpl " ,
2016-11-17 18:00:26 +01:00
" The in-game documentation is the best I’ ve seen. I especially love the JEI integration. Even a derp like me can figure it out.@dannydjdk " ,
2016-12-04 13:05:14 +01:00
" The second best mod I've ever used.@mmaas44 " ,
" The Fermenting Barrel is one of my favorite textures.@amadornes " ,
" Smiley Clouds is the reason for fascism in 2016.@raoulvdberge " ,
" The worms are an awesome idea!@greenking " ,
" Can I use that mod in my pack?@Ibraheem " ,
" Hello, love the mod.@SuntannedDuck2 " ,
" Quick! Have all the fun before they nerf it!@JuddMan03 " ,
" I have a feeling Actually Additions is also like Extra Utilities with Random things smashed together why is it...@lesslighter " ,
" Leaf eater... munchdew... hummm@EiOs " ,
" There is no such thing as canola seeds.@AlBoVa " ,
" This mod is cancer, BRUTAL EXPENSIVE POWER usage..Just, cancer.@KoJo "
2016-11-17 16:25:47 +01:00
} ;
2016-11-17 17:36:00 +01:00
private TexturedButton achievementButton ;
private TexturedButton configButton ;
2016-11-12 15:09:30 +01:00
private GuiButton tutorialButton ;
private boolean showTutorial ;
2016-11-17 16:25:47 +01:00
private String bookletName ;
private List < String > quote ;
private String quoteGuy ;
2016-11-10 21:07:15 +01:00
public GuiMainPage ( GuiScreen previousScreen ) {
super ( previousScreen , null ) ;
2016-11-10 19:50:01 +01:00
}
@Override
public void initGui ( ) {
super . initGui ( ) ;
2016-11-12 15:09:30 +01:00
int flavor = 1 ;
2016-11-26 21:32:27 +01:00
if ( this . mc . world . rand . nextFloat ( ) < = 0 . 1 ) {
flavor = MathHelper . getInt ( this . mc . world . rand , 2 , 7 ) ;
2016-11-12 15:09:30 +01:00
}
this . bookletName = " info. " + ModUtil . MOD_ID + " .booklet.manualName.1. " + flavor ;
2016-11-26 21:32:27 +01:00
String usedQuote = QUOTES [ this . mc . world . rand . nextInt ( QUOTES . length ) ] ;
2016-11-17 16:25:47 +01:00
String [ ] quoteSplit = usedQuote . split ( " @ " ) ;
if ( quoteSplit . length = = 2 ) {
this . quote = this . fontRendererObj . listFormattedStringToWidth ( quoteSplit [ 0 ] , 120 ) ;
this . quoteGuy = quoteSplit [ 1 ] ;
}
2016-11-20 14:51:21 +01:00
List < String > configText = new ArrayList < String > ( ) ;
configText . add ( TextFormatting . GOLD + " Open Config GUI " ) ;
configText . addAll ( this . fontRendererObj . listFormattedStringToWidth ( " Press this to configure " + ModUtil . NAME + " in-game. \ nSome changes will require a game restart! " , 200 ) ) ;
this . configButton = new TexturedButton ( RES_LOC_GADGETS , - 388 , this . guiLeft + 16 , this . guiTop + this . ySize - 30 , 188 , 14 , 16 , 16 , configText ) ;
this . buttonList . add ( this . configButton ) ;
List < String > achievementText = new ArrayList < String > ( ) ;
achievementText . add ( TextFormatting . GOLD + " Open Achievements " ) ;
achievementText . addAll ( this . fontRendererObj . listFormattedStringToWidth ( " Press this to open the " + ModUtil . NAME + " Achievements. " , 200 ) ) ;
this . achievementButton = new TexturedButton ( RES_LOC_GADGETS , - 389 , this . guiLeft + 36 , this . guiTop + this . ySize - 30 , 204 , 14 , 16 , 16 , achievementText ) ;
this . buttonList . add ( this . achievementButton ) ;
2016-11-26 21:32:27 +01:00
PlayerSave data = PlayerData . getDataFromPlayer ( this . mc . player ) ;
2016-11-12 15:09:30 +01:00
if ( ! data . didBookTutorial ) {
this . showTutorial = true ;
this . tutorialButton = new GuiButton ( 666666 , this . guiLeft + 140 / 2 - 50 , this . guiTop + 146 , 100 , 20 , " Please click me <3 " ) ;
this . buttonList . add ( this . tutorialButton ) ;
2016-11-20 14:51:21 +01:00
this . configButton . visible = false ;
this . achievementButton . visible = false ;
2016-11-17 20:27:33 +01:00
}
2016-11-17 17:36:00 +01:00
2016-11-12 15:09:30 +01:00
for ( int i = 0 ; i < BUTTONS_PER_PAGE ; i + + ) {
if ( ActuallyAdditionsAPI . BOOKLET_ENTRIES . size ( ) > i ) {
IBookletEntry entry = ActuallyAdditionsAPI . BOOKLET_ENTRIES . get ( i ) ;
this . buttonList . add ( new EntryButton ( i , this . guiLeft + 156 , this . guiTop + 11 + i * 13 , 115 , 10 , " - " + entry . getLocalizedNameWithFormatting ( ) , null ) ) ;
}
else {
return ;
2016-11-10 19:50:01 +01:00
}
2016-11-12 15:09:30 +01:00
}
2016-11-10 19:50:01 +01:00
}
2016-11-10 21:07:15 +01:00
@Override
protected void actionPerformed ( GuiButton button ) throws IOException {
if ( button instanceof EntryButton ) {
if ( ActuallyAdditionsAPI . BOOKLET_ENTRIES . size ( ) > button . id ) {
IBookletEntry entry = ActuallyAdditionsAPI . BOOKLET_ENTRIES . get ( button . id ) ;
if ( entry ! = null ) {
2016-11-12 12:26:36 +01:00
this . mc . displayGuiScreen ( new GuiEntry ( this . previousScreen , this , entry , 0 , " " , false ) ) ;
2016-11-10 21:07:15 +01:00
}
}
}
2016-11-17 17:36:00 +01:00
else if ( button = = this . achievementButton ) {
2016-11-26 21:32:27 +01:00
GuiScreen achievements = new GuiAAAchievements ( this , this . mc . player . getStatFileWriter ( ) ) ;
2016-11-17 17:36:00 +01:00
this . mc . displayGuiScreen ( achievements ) ;
}
else if ( button = = this . configButton ) {
GuiScreen config = new GuiConfiguration ( this ) ;
this . mc . displayGuiScreen ( config ) ;
}
2016-11-12 15:09:30 +01:00
else if ( this . showTutorial & & button = = this . tutorialButton ) {
if ( this . hasBookmarkButtons ( ) ) {
if ( ! isShiftKeyDown ( ) ) {
for ( int i = 0 ; i < InitBooklet . chaptersIntroduction . length ; i + + ) {
this . bookmarkButtons [ i ] . assignedPage = InitBooklet . chaptersIntroduction [ i ] . getAllPages ( ) [ 0 ] ;
}
}
this . showTutorial = false ;
this . tutorialButton . visible = false ;
2016-11-20 14:51:21 +01:00
this . configButton . visible = true ;
this . achievementButton . visible = true ;
2016-11-26 21:32:27 +01:00
PlayerSave data = PlayerData . getDataFromPlayer ( this . mc . player ) ;
2016-11-12 15:09:30 +01:00
data . didBookTutorial = true ;
2016-11-26 21:32:27 +01:00
PacketHandlerHelper . sendPlayerDataPacket ( this . mc . player , true , false ) ;
2016-11-12 15:09:30 +01:00
}
}
2016-11-10 21:07:15 +01:00
else {
super . actionPerformed ( button ) ;
}
}
2016-11-10 23:37:40 +01:00
2016-11-12 15:09:30 +01:00
@Override
public void drawScreenPre ( int mouseX , int mouseY , float partialTicks ) {
super . drawScreenPre ( mouseX , mouseY , partialTicks ) ;
String strg = TextFormatting . DARK_GREEN + StringUtil . localize ( this . bookletName ) ;
this . fontRendererObj . drawString ( strg , this . guiLeft + 72 - this . fontRendererObj . getStringWidth ( strg ) / 2 - 3 , this . guiTop + 19 , 0 ) ;
strg = TextFormatting . DARK_GREEN + StringUtil . localize ( " info. " + ModUtil . MOD_ID + " .booklet.manualName.2 " ) ;
this . fontRendererObj . drawString ( strg , this . guiLeft + 72 - this . fontRendererObj . getStringWidth ( strg ) / 2 - 3 , this . guiTop + 19 + this . fontRendererObj . FONT_HEIGHT , 0 ) ;
String versionStrg ;
2016-11-26 21:32:27 +01:00
String playerName = Minecraft . getMinecraft ( ) . player . getName ( ) ;
2016-11-12 15:09:30 +01:00
if ( Util . isDevVersion ( ) ) {
versionStrg = " Dev's Edition " ;
}
else {
String modVersion = Util . getMajorModVersion ( ) ;
if ( playerName . equalsIgnoreCase ( " dqmhose " ) ) {
versionStrg = " Pants Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " TwoOfEight " ) | | playerName . equalsIgnoreCase ( " BootyToast " ) ) {
versionStrg = " Illustrator's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " KittyVanCat " ) ) {
versionStrg = " Cat's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " canitzp " ) ) {
versionStrg = " P's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " Ellpeck " ) ) {
versionStrg = " Editor's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " direwolf20 " ) ) {
versionStrg = " Edition 20 " ;
}
else if ( playerName . equalsIgnoreCase ( " dannydjdk " ) | | playerName . equalsIgnoreCase ( " andrew_period " ) ) {
versionStrg = " Derp's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " mezz " ) ) {
versionStrg = " Just Enough Editions " ;
}
2016-12-04 13:05:14 +01:00
else if ( playerName . equalsIgnoreCase ( " amadornes " ) ) {
versionStrg = " Beard's Edition " ;
}
2016-12-04 13:11:45 +01:00
else if ( playerName . equalsIgnoreCase ( " raoul " ) ) {
2016-12-04 13:05:14 +01:00
versionStrg = " Giraffe's Edition " ;
}
2016-11-12 15:09:30 +01:00
else {
versionStrg = StringUtil . localize ( " info. " + ModUtil . MOD_ID + " .booklet.edition " ) + " " + modVersion ;
}
}
strg = TextFormatting . GOLD + TextFormatting . ITALIC . toString ( ) + " - " + versionStrg + " - " ;
this . fontRendererObj . drawString ( strg , this . guiLeft + 72 - this . fontRendererObj . getStringWidth ( strg ) / 2 - 3 , this . guiTop + 40 , 0 ) ;
if ( this . showTutorial ) {
String text = TextFormatting . BLUE + " It looks like this is the first time you are using this manual. \ nIf you click the button below, some useful bookmarks will be stored at the bottom of the GUI. You should definitely check them out to get started with " + ModUtil . NAME + " ! \ nIf you don't want this, shift-click the button. " ;
this . renderSplitScaledAsciiString ( text , this . guiLeft + 11 , this . guiTop + 55 , 0 , false , 0 . 75F , 120 ) ;
}
2016-11-17 16:25:47 +01:00
else if ( this . quote ! = null & & ! this . quote . isEmpty ( ) & & this . quoteGuy ! = null ) {
int quoteSize = this . quote . size ( ) ;
for ( int i = 0 ; i < quoteSize ; i + + ) {
this . renderScaledAsciiString ( TextFormatting . ITALIC + this . quote . get ( i ) , this . guiLeft + 25 , this . guiTop + 90 + ( i * 8 ) , 0 , false , 0 . 75F ) ;
}
this . renderScaledAsciiString ( " - " + this . quoteGuy , this . guiLeft + 60 , this . guiTop + 93 + quoteSize * 8 , 0 , false , 0 . 8F ) ;
}
2016-11-12 15:09:30 +01:00
}
2016-11-10 23:37:40 +01:00
@Override
2016-11-11 18:55:32 +01:00
public void addOrModifyItemRenderer ( ItemStack renderedStack , int x , int y , float scale , boolean shouldTryTransfer ) {
2016-11-10 23:37:40 +01:00
}
2016-11-10 19:50:01 +01:00
}