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
*
2017-01-01 16:23:26 +01:00
* © 2015 - 2017 Ellpeck
2016-11-10 19:50:01 +01:00
* /
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 ;
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 " ,
2016-12-10 18:08:55 +01:00
" Actually Additions should be included in every new modpack that includes any form of tech.@YasminEndusa " ,
2016-11-17 16:25:47 +01:00
" 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 " ,
2017-01-13 23:53:40 +01:00
" This mod is cancer, BRUTAL EXPENSIVE POWER usage..Just, cancer.@KoJo " ,
2017-02-08 18:45:44 +01:00
" Spaghetti is spaghetti, and noodles are noodles.@robsonld04 " ,
" The Actually Additions name is actually true. It's actually great!@asiekierka " ,
" Such a great mod@jsdeveloper " ,
" That mod is kind of funny.@Anonymous " ,
" Actually Additions is a lot of fun.@Anonymous " ,
" Is Actually Additions still fugly?@Anonymous " ,
" I like it, but it's so small.@Anonymous " ,
" It has a couple of blocks I like, but overall it's just a mess.@Anonymous " ,
" Direwolf's 1.10 playthrough is just him shilling Actually Additions@Anonymous " ,
" We thought about sending the author a bunch of pizzas to his adress@Anonymous " ,
" It's op as heck.@billofbong0 " ,
" Actually AdditionsってマイクラMODすごく良いのに日本人で遊んでる人あんまいないっぽい@stay_uk " ,
" Actually Additions is OP. Not like my favorite combination of mods, Project E + Magic Crops + Draconic Evolution.@Anonymous " ,
" To be perfectly honest, I never actually realized how much content Actually Additions has before.@Ellpeck " ,
" I don't blame you, I actually downgraded to Actually Additions.@PvtSeaCow " ,
" It is lonely because there is no device to fly items with the laser in the 1.7.10 version.@Google Translate " ,
" 始めまして。日本人です。このMODは本当に素晴らしい! ただ、1.7.10ヴァージョンだと、レーザーでアイテムを飛ばす装置がないので寂しいです。@Anonymous " ,
" Some verses found in older translations, such as the KJV were actually additions made by later copyists.@Pat_Joel " ,
" I can't place filters into Laser Relays, but the mod is very cool.@LP_Jakob "
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 ;
2016-12-23 21:38:39 +01:00
private String bookletEdition ;
2016-11-17 16:25:47 +01:00
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-12-23 21:38:39 +01:00
String playerName = this . mc . player . getName ( ) ;
if ( playerName . equalsIgnoreCase ( " dqmhose " ) ) {
this . bookletEdition = " Pants Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " TwoOfEight " ) | | playerName . equalsIgnoreCase ( " BootyToast " ) ) {
this . bookletEdition = " Illustrator's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " KittyVanCat " ) ) {
this . bookletEdition = " Cat's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " canitzp " ) ) {
this . bookletEdition = " P's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " direwolf20 " ) ) {
this . bookletEdition = " Edition 20 " ;
}
else if ( playerName . equalsIgnoreCase ( " dannydjdk " ) | | playerName . equalsIgnoreCase ( " andrew_period " ) ) {
this . bookletEdition = " Derp's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " mezz " ) ) {
this . bookletEdition = " Just Enough Editions " ;
}
else if ( playerName . equalsIgnoreCase ( " amadornes " ) ) {
this . bookletEdition = " Beard's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " raoul " ) ) {
this . bookletEdition = " Giraffe's Edition " ;
}
else if ( playerName . equalsIgnoreCase ( " ellpeck " ) | | playerName . equalsIgnoreCase ( " profprospector " ) ) {
String [ ] colors = new String [ 15 ] ;
for ( int i = 0 ; i < colors . length ; i + + ) {
colors [ i ] = TextFormatting . fromColorIndex ( this . mc . world . rand . nextInt ( 15 ) ) . toString ( ) + TextFormatting . ITALIC ;
}
this . bookletEdition = String . format ( " %sC%so%sl%so%sr%sf%su%sl %sE%sd%si%st%si%so%sn " , ( Object [ ] ) colors ) ;
}
2016-12-28 15:23:30 +01:00
else if ( playerName . equalsIgnoreCase ( " oitsjustjose " ) ) {
this . bookletEdition = " oitsjustanedition " ;
}
2016-12-28 15:31:14 +01:00
else if ( playerName . equalsIgnoreCase ( " xbony2 " ) ) {
this . bookletEdition = " Naughty Edition " ;
}
2016-12-31 18:10:36 +01:00
else if ( playerName . equalsIgnoreCase ( " themattabase " ) ) {
this . bookletEdition = " Withered Edition " ;
}
2017-01-13 23:53:40 +01:00
else if ( playerName . equalsIgnoreCase ( " robsonld04 " ) ) {
this . bookletEdition = " Modpack Edition " ;
}
2017-02-04 18:34:19 +01:00
else if ( playerName . equalsIgnoreCase ( " snowshock35 " ) ) {
this . bookletEdition = " Edition 35 " ;
}
2017-02-08 18:45:44 +01:00
else if ( playerName . equalsIgnoreCase ( " asiekierka " ) ) {
this . bookletEdition = " ‽ Edition " ;
}
2016-12-23 21:38:39 +01:00
else {
if ( Util . isDevVersion ( ) ) {
this . bookletEdition = " Dev's Edition " ;
}
else {
this . bookletEdition = StringUtil . localize ( " info. " + ModUtil . MOD_ID + " .booklet.edition " ) + " " + Util . getMajorModVersion ( ) ;
}
}
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 ) ;
2016-12-07 15:25:04 +01:00
this . buttonList . add ( new EntryButton ( this , i , this . guiLeft + 156 , this . guiTop + 11 + i * 13 , 115 , 10 , " - " + entry . getLocalizedNameWithFormatting ( ) , null ) ) ;
2016-11-12 15:09:30 +01:00
}
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 ;
2017-02-13 15:23:28 +01:00
PacketHandlerHelper . sendPlayerDataToServer ( true , 1 ) ;
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 ) ;
2016-12-23 21:38:39 +01:00
strg = TextFormatting . GOLD + TextFormatting . ITALIC . toString ( ) + this . bookletEdition ;
2016-11-12 15:09:30 +01:00
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. " ;
2016-12-07 15:25:04 +01:00
this . renderSplitScaledAsciiString ( text , this . guiLeft + 11 , this . guiTop + 55 , 0 , false , this . getMediumFontSize ( ) , 120 ) ;
2016-11-12 15:09:30 +01:00
}
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 + + ) {
2016-12-07 15:25:04 +01:00
this . renderScaledAsciiString ( TextFormatting . ITALIC + this . quote . get ( i ) , this . guiLeft + 25 , this . guiTop + 90 + ( i * 8 ) , 0 , false , this . getMediumFontSize ( ) ) ;
2016-11-17 16:25:47 +01:00
}
2016-12-07 15:25:04 +01:00
this . renderScaledAsciiString ( " - " + this . quoteGuy , this . guiLeft + 60 , this . guiTop + 93 + quoteSize * 8 , 0 , false , this . getLargeFontSize ( ) ) ;
2016-11-17 16:25:47 +01:00
}
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
}