From ecf4a6bf7c625bb975d6b7ac9f2b02d375fe2ccd Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sun, 30 Aug 2015 01:19:03 +0200 Subject: [PATCH] Added more lexicon entries and stuff and things --- .../actuallyadditions/booklet/GuiBooklet.java | 23 +++++---- .../booklet/InitBooklet.java | 8 +-- .../booklet/page/BookletPage.java | 12 +++-- .../booklet/page/PageCrafting.java | 2 +- .../booklet/page/PageText.java | 7 --- .../crafting/BlockCrafting.java | 14 +++++ .../crafting/ItemCrafting.java | 11 ++++ .../crafting/MiscCrafting.java | 15 ++++-- .../actuallyadditions/event/TooltipEvent.java | 11 ++-- .../inventory/gui/GuiInputter.java | 5 +- .../inventory/gui/GuiSmileyCloud.java | 3 +- .../actuallyadditions/util/StringUtil.java | 22 -------- .../assets/actuallyadditions/lang/en_US.lang | 48 ++++++++++++------ .../textures/gui/guiBooklet.png | Bin 18802 -> 18415 bytes 14 files changed, 106 insertions(+), 75 deletions(-) diff --git a/src/main/java/ellpeck/actuallyadditions/booklet/GuiBooklet.java b/src/main/java/ellpeck/actuallyadditions/booklet/GuiBooklet.java index 5f3717b53..840cc5786 100644 --- a/src/main/java/ellpeck/actuallyadditions/booklet/GuiBooklet.java +++ b/src/main/java/ellpeck/actuallyadditions/booklet/GuiBooklet.java @@ -24,6 +24,7 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; @@ -57,6 +58,8 @@ public class GuiBooklet extends GuiScreen{ private static final int BUTTON_RETURN_ID = 2; private static final int CHAPTER_BUTTONS_START = 3; + private static final int BUTTONS_PER_PAGE = 15; + public GuiBooklet(){ this.xSize = 146; this.ySize = 180; @@ -114,7 +117,7 @@ public class GuiBooklet extends GuiScreen{ this.buttonList.add(new TexturedButton(BUTTON_BACK_ID, this.guiLeft-18, this.guiTop+this.ySize+2, 146, 0, 18, 10)); this.buttonList.add(new TexturedButton(BUTTON_RETURN_ID, this.guiLeft+this.xSize/2-7, this.guiTop+this.ySize+2, 182, 0, 15, 10)); - for(int i = 0; i < 12; i++){ + for(int i = 0; i < BUTTONS_PER_PAGE; i++){ this.buttonList.add(new IndexButton(this.unicodeRenderer, CHAPTER_BUTTONS_START+i, guiLeft+13, guiTop+15+(i*11), 120, 10, "")); } @@ -259,7 +262,7 @@ public class GuiBooklet extends GuiScreen{ if(this.currentIndexEntry != null){ if(this.currentChapter == null){ if(actualButton < this.currentIndexEntry.chapters.size()){ - BookletChapter chap = currentIndexEntry.chapters.get(actualButton+(12*this.pageOpenInIndex-12)); + BookletChapter chap = currentIndexEntry.chapters.get(actualButton+(BUTTONS_PER_PAGE*this.pageOpenInIndex-BUTTONS_PER_PAGE)); this.openChapter(chap, chap.pages[0]); } } @@ -296,7 +299,7 @@ public class GuiBooklet extends GuiScreen{ this.currentChapter = null; this.currentIndexEntry = entry; - this.indexPageAmount = entry == null ? 1 : entry.chapters.size()/12+1; + this.indexPageAmount = entry == null ? 1 : entry.chapters.size()/BUTTONS_PER_PAGE+1; this.pageOpenInIndex = entry == null ? 1 : (this.indexPageAmount <= page ? this.indexPageAmount : page); this.getButton(BUTTON_RETURN_ID).visible = entry != null; @@ -306,17 +309,17 @@ public class GuiBooklet extends GuiScreen{ for(int i = 0; i < 12; i++){ GuiButton button = this.getButton(CHAPTER_BUTTONS_START+i); if(entry == null){ - boolean entryExists = InitBooklet.entries.size() > i+(12*this.pageOpenInIndex-12); + boolean entryExists = InitBooklet.entries.size() > i+(BUTTONS_PER_PAGE*this.pageOpenInIndex-BUTTONS_PER_PAGE); button.visible = entryExists; if(entryExists){ - button.displayString = InitBooklet.entries.get(i+(12*this.pageOpenInIndex-12)).getLocalizedName(); + button.displayString = InitBooklet.entries.get(i+(BUTTONS_PER_PAGE*this.pageOpenInIndex-BUTTONS_PER_PAGE)).getLocalizedName(); } } else{ - boolean entryExists = entry.chapters.size() > i+(12*this.pageOpenInIndex-12); + boolean entryExists = entry.chapters.size() > i+(BUTTONS_PER_PAGE*this.pageOpenInIndex-BUTTONS_PER_PAGE); button.visible = entryExists; if(entryExists){ - button.displayString = entry.chapters.get(i+(12*this.pageOpenInIndex-12)).getLocalizedName(); + button.displayString = entry.chapters.get(i+(BUTTONS_PER_PAGE*this.pageOpenInIndex-BUTTONS_PER_PAGE)).getLocalizedName(); } } } @@ -333,9 +336,9 @@ public class GuiBooklet extends GuiScreen{ this.currentPage = page != null && this.hasPage(chapter, page) ? page : chapter.pages[0]; 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 = this.getPrevPage(chapter, this.currentPage) != null; - for(int i = 0; i < 12; i++){ + for(int i = 0; i < BUTTONS_PER_PAGE; i++){ GuiButton button = this.getButton(CHAPTER_BUTTONS_START+i); button.visible = false; } @@ -373,7 +376,7 @@ public class GuiBooklet extends GuiScreen{ color = 38144; } - this.renderer.drawString((this.field_146123_n ? StringUtil.UNDERLINE : "")+this.displayString, this.xPosition, this.yPosition+(this.height-8)/2, color); + this.renderer.drawString((this.field_146123_n ? EnumChatFormatting.UNDERLINE : "")+this.displayString, this.xPosition, this.yPosition+(this.height-8)/2, color); } } } diff --git a/src/main/java/ellpeck/actuallyadditions/booklet/InitBooklet.java b/src/main/java/ellpeck/actuallyadditions/booklet/InitBooklet.java index decd1ad66..9fa3b1557 100644 --- a/src/main/java/ellpeck/actuallyadditions/booklet/InitBooklet.java +++ b/src/main/java/ellpeck/actuallyadditions/booklet/InitBooklet.java @@ -30,13 +30,15 @@ public class InitBooklet{ public static BookletIndexEntry entryFunctionalNonRF = new BookletIndexEntry("functionalNoRF"); public static BookletIndexEntry entryMisc = new BookletIndexEntry("misc"); - public static BookletEntryAllSearch allAndSearch = new BookletEntryAllSearch("allAndSearch"); + public static BookletIndexEntry allAndSearch = new BookletEntryAllSearch("allAndSearch"); static{ new BookletChapter("breaker", entryFunctionalNonRF, new PageCrafting(1, BlockCrafting.recipeBreaker), new PageCrafting(2, BlockCrafting.recipePlacer), new PageCrafting(3, BlockCrafting.recipeLiquidPlacer), new PageCrafting(4, BlockCrafting.recipeLiquidCollector)); - new BookletChapter("phantomfaces", entryFunctionalNonRF, new PageText(1), new PageCrafting(2, BlockCrafting.recipePhantomface), new PageCrafting(3, BlockCrafting.recipeLiquiface), new PageCrafting(4, BlockCrafting.recipeEnergyface), new PageCrafting(5, ItemCrafting.recipePhantomConnector)); - new BookletChapter("phantomBreaker", entryFunctionalNonRF, new PageText(1), new PageCrafting(2, BlockCrafting.recipePhantomPlacer), new PageCrafting(3, BlockCrafting.recipePhantomBreaker), new PageCrafting(4, ItemCrafting.recipePhantomConnector)); + new BookletChapter("phantomfaces", entryFunctionalNonRF, new PageText(1), new PageCrafting(2, BlockCrafting.recipePhantomface), new PageCrafting(3, BlockCrafting.recipeLiquiface), new PageCrafting(4, BlockCrafting.recipeEnergyface), new PageCrafting(5, ItemCrafting.recipePhantomConnector), new PageCrafting(6, BlockCrafting.recipePhantomBooster)); + new BookletChapter("phantomBreaker", entryFunctionalNonRF, new PageText(1), new PageCrafting(2, BlockCrafting.recipePhantomPlacer), new PageCrafting(3, BlockCrafting.recipePhantomBreaker)); + new BookletChapter("esd", entryFunctionalNonRF, new PageText(1), new PageCrafting(2, BlockCrafting.recipeESD), new PageCrafting(3, BlockCrafting.recipeAdvancedESD)); + new BookletChapter("craftingIngs", entryMisc, new PageText(1), new PageCrafting(2, ItemCrafting.recipeCoil), new PageCrafting(3, ItemCrafting.recipeCoilAdvanced), new PageCrafting(4, BlockCrafting.recipeCase), new PageCrafting(5, BlockCrafting.recipeStoneCase), new PageCrafting(6, BlockCrafting.recipeEnderPearlBlock), new PageCrafting(7, BlockCrafting.recipeEnderCase)); new BookletChapter("cloud", entryMisc, new PageText(1), new PageCrafting(2, BlockCrafting.recipeSmileyCloud)); new BookletChapter("foods", entryMisc, new PageCrafting(1, FoodCrafting.recipePizza), new PageFurnace(2, new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE_BREAD.ordinal())), new PageCrafting(3, FoodCrafting.recipeHamburger), new PageCrafting(4, FoodCrafting.recipeBigCookie), new PageCrafting(5, FoodCrafting.recipeSubSandwich), new PageCrafting(6, FoodCrafting.recipeFrenchFry), new PageCrafting(7, FoodCrafting.recipeFrenchFries), new PageCrafting(8, FoodCrafting.recipeFishNChips), new PageCrafting(9, FoodCrafting.recipeCheese), new PageCrafting(10, FoodCrafting.recipePumpkinStew), new PageCrafting(11, FoodCrafting.recipeCarrotJuice), new PageCrafting(12, FoodCrafting.recipeSpaghetti), new PageCrafting(13, FoodCrafting.recipeNoodle), new PageCrafting(14, FoodCrafting.recipeChocolate), new PageCrafting(15, FoodCrafting.recipeChocolateCake), new PageCrafting(16, FoodCrafting.recipeToast), new PageFurnace(17, new ItemStack(InitItems.itemFoods, 1, TheFoods.BAGUETTE.ordinal()))); } diff --git a/src/main/java/ellpeck/actuallyadditions/booklet/page/BookletPage.java b/src/main/java/ellpeck/actuallyadditions/booklet/page/BookletPage.java index 7b0b9f669..45501eced 100644 --- a/src/main/java/ellpeck/actuallyadditions/booklet/page/BookletPage.java +++ b/src/main/java/ellpeck/actuallyadditions/booklet/page/BookletPage.java @@ -13,8 +13,13 @@ package ellpeck.actuallyadditions.booklet.page; import ellpeck.actuallyadditions.booklet.BookletChapter; import ellpeck.actuallyadditions.booklet.GuiBooklet; import ellpeck.actuallyadditions.booklet.InitBooklet; +import ellpeck.actuallyadditions.util.ModUtil; import ellpeck.actuallyadditions.util.StringUtil; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import org.lwjgl.input.Mouse; import java.util.List; @@ -45,7 +50,7 @@ public class BookletPage implements IBookletPage{ @Override public String getText(){ - return null; + return StringUtil.localize("booklet."+ModUtil.MOD_ID_LOWER+".chapter."+this.chapter.getUnlocalizedName()+".text."+this.id).replaceAll("", EnumChatFormatting.DARK_GREEN+"").replaceAll("", EnumChatFormatting.BLUE+"").replaceAll("", EnumChatFormatting.BLACK+""); } @Override @@ -72,17 +77,18 @@ public class BookletPage implements IBookletPage{ list.set(k, stack.getRarity().rarityColor+(String)list.get(k)); } else{ - list.set(k, StringUtil.GRAY+list.get(k)); + list.set(k, EnumChatFormatting.GRAY+(String)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!"); + list.add(EnumChatFormatting.GOLD+"Click to see Recipe!"); if(Mouse.isButtonDown(0)){ gui.openChapter(page.getChapter(), page); + Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); } break; } diff --git a/src/main/java/ellpeck/actuallyadditions/booklet/page/PageCrafting.java b/src/main/java/ellpeck/actuallyadditions/booklet/page/PageCrafting.java index 9a42d7f09..e2f4f52f7 100644 --- a/src/main/java/ellpeck/actuallyadditions/booklet/page/PageCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/booklet/page/PageCrafting.java @@ -57,7 +57,7 @@ public class PageCrafting extends BookletPage{ gui.unicodeRenderer.drawSplitString(StringUtil.localize("booklet."+ModUtil.MOD_ID_LOWER+".recipeDisabled"), gui.guiLeft+14, gui.guiTop+15, 115, 0); } - gui.unicodeRenderer.drawSplitString(gui.currentPage.getText(), gui.guiLeft+14, gui.guiTop+112, 115, 0); + gui.unicodeRenderer.drawSplitString(gui.currentPage.getText(), gui.guiLeft+14, gui.guiTop+100, 115, 0); if(this.recipe != null){ diff --git a/src/main/java/ellpeck/actuallyadditions/booklet/page/PageText.java b/src/main/java/ellpeck/actuallyadditions/booklet/page/PageText.java index 08689070e..ff10121ea 100644 --- a/src/main/java/ellpeck/actuallyadditions/booklet/page/PageText.java +++ b/src/main/java/ellpeck/actuallyadditions/booklet/page/PageText.java @@ -11,8 +11,6 @@ package ellpeck.actuallyadditions.booklet.page; import ellpeck.actuallyadditions.booklet.GuiBooklet; -import ellpeck.actuallyadditions.util.ModUtil; -import ellpeck.actuallyadditions.util.StringUtil; public class PageText extends BookletPage{ @@ -20,11 +18,6 @@ public class PageText extends BookletPage{ super(id); } - @Override - public String getText(){ - return StringUtil.localize("booklet."+ModUtil.MOD_ID_LOWER+".chapter."+this.chapter.getUnlocalizedName()+".text."+this.id); - } - @Override public void render(GuiBooklet gui, int mouseX, int mouseY){ gui.unicodeRenderer.drawSplitString(gui.currentPage.getText(), gui.guiLeft+14, gui.guiTop+11, 115, 0); diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java index 45016a7d5..b1d439bba 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/BlockCrafting.java @@ -38,6 +38,13 @@ public class BlockCrafting{ public static IRecipe recipePlacer; public static IRecipe recipeLiquidPlacer; public static IRecipe recipeLiquidCollector; + public static IRecipe recipeCase; + public static IRecipe recipeStoneCase; + public static IRecipe recipeEnderCase; + public static IRecipe recipeEnderPearlBlock; + public static IRecipe recipeESD; + public static IRecipe recipeAdvancedESD; + public static IRecipe recipePhantomBooster; public static void init(){ @@ -81,6 +88,7 @@ public class BlockCrafting{ 'W', "plankWood", 'R', "logWood", 'S', "stickWood")); + recipeCase = Util.lastIRecipe(); } //Ender Casing @@ -90,6 +98,7 @@ public class BlockCrafting{ 'W', new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.ENDERPEARL_BLOCK.ordinal()), 'R', new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.QUARTZ.ordinal()), 'S', Blocks.obsidian)); + recipeEnderCase = Util.lastIRecipe(); } //Phantom Booster @@ -99,6 +108,7 @@ public class BlockCrafting{ 'R', "dustRedstone", 'D', "gemDiamond", 'C', new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.ENDER_CASING.ordinal()))); + recipePhantomBooster = Util.lastIRecipe(); } //Coffee Machine @@ -261,6 +271,7 @@ public class BlockCrafting{ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.ENDERPEARL_BLOCK.ordinal()), "EE", "EE", 'E', Items.ender_pearl)); + recipeEnderPearlBlock = Util.lastIRecipe(); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(Items.ender_pearl, 4), new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.ENDERPEARL_BLOCK.ordinal()))); @@ -271,6 +282,7 @@ public class BlockCrafting{ 'W', "cobblestone", 'R', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.QUARTZ.ordinal()), 'S', "stickWood")); + recipeStoneCase = Util.lastIRecipe(); } //Quartz Block @@ -336,12 +348,14 @@ public class BlockCrafting{ 'W', "plankWood", 'C', new ItemStack(InitBlocks.blockMisc, 1, TheMiscBlocks.WOOD_CASING.ordinal()), 'H', new ItemStack(Blocks.hopper))); + recipeESD = Util.lastIRecipe(); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitBlocks.blockInputterAdvanced), InitBlocks.blockInputter, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.COIL_ADVANCED.ordinal()), new ItemStack(InitItems.itemMisc, 1, TheMiscItems.QUARTZ.ordinal()), "dustRedstone")); + recipeAdvancedESD = Util.lastIRecipe(); } //Crusher diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java index 86c524f6e..5dff36794 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/ItemCrafting.java @@ -33,9 +33,18 @@ import net.minecraftforge.oredict.ShapelessOreRecipe; public class ItemCrafting{ public static IRecipe recipePhantomConnector; + public static IRecipe recipeCoil; + public static IRecipe recipeCoilAdvanced; + public static void init(){ + //Booklet + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemLexicon), new ItemStack(InitItems.itemCanolaSeed), new ItemStack(Items.paper))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemLexicon), new ItemStack(InitItems.itemCoffeeSeed), new ItemStack(Items.paper))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemLexicon), new ItemStack(InitItems.itemRiceSeed), new ItemStack(Items.paper))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemLexicon), new ItemStack(InitItems.itemFlaxSeed), new ItemStack(Items.paper))); + //Rice Stuff if(ConfigCrafting.RICE_GADGETS.isEnabled()){ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Items.paper, 3), @@ -245,6 +254,7 @@ public class ItemCrafting{ " R ", "RIR", " R ", 'I', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.QUARTZ.ordinal()), 'R', "dustRedstone")); + recipeCoil = Util.lastIRecipe(); } //Cup @@ -267,6 +277,7 @@ public class ItemCrafting{ " G ", "GCG", " G ", 'C', new ItemStack(InitItems.itemMisc, 1, TheMiscItems.COIL.ordinal()), 'G', "ingotGold")); + recipeCoilAdvanced = Util.lastIRecipe(); } //Ender Pearl diff --git a/src/main/java/ellpeck/actuallyadditions/crafting/MiscCrafting.java b/src/main/java/ellpeck/actuallyadditions/crafting/MiscCrafting.java index debe77b3e..a9d543091 100644 --- a/src/main/java/ellpeck/actuallyadditions/crafting/MiscCrafting.java +++ b/src/main/java/ellpeck/actuallyadditions/crafting/MiscCrafting.java @@ -25,33 +25,38 @@ public class MiscCrafting{ public static void init(){ //Dough - if(ConfigCrafting.DOUGH.isEnabled()) + if(ConfigCrafting.DOUGH.isEnabled()){ GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemMisc, 2, TheMiscItems.DOUGH.ordinal()), "cropWheat", "cropWheat")); + } //Rice Dough - if(ConfigCrafting.RICE_DOUGH.isEnabled()) + if(ConfigCrafting.RICE_DOUGH.isEnabled()){ GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemMisc, 2, TheMiscItems.RICE_DOUGH.ordinal()), new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE.ordinal()), new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE.ordinal()), new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE.ordinal()))); + } //Paper Cone - if(ConfigCrafting.PAPER_CONE.isEnabled()) + if(ConfigCrafting.PAPER_CONE.isEnabled()){ GameRegistry.addRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.PAPER_CONE.ordinal()), "P P", " P ", 'P', new ItemStack(Items.paper)); + } //Knife Handle - if(ConfigCrafting.KNIFE_HANDLE.isEnabled()) + if(ConfigCrafting.KNIFE_HANDLE.isEnabled()){ GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_HANDLE.ordinal()), "stickWood", new ItemStack(Items.leather))); + } //Knife Blade - if(ConfigCrafting.KNIFE_BLADE.isEnabled()) + if(ConfigCrafting.KNIFE_BLADE.isEnabled()){ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.KNIFE_BLADE.ordinal()), "K", "K", "F", 'K', "ingotIron", 'F', new ItemStack(Items.flint))); + } } } diff --git a/src/main/java/ellpeck/actuallyadditions/event/TooltipEvent.java b/src/main/java/ellpeck/actuallyadditions/event/TooltipEvent.java index 594a4f899..7d12822ed 100644 --- a/src/main/java/ellpeck/actuallyadditions/event/TooltipEvent.java +++ b/src/main/java/ellpeck/actuallyadditions/event/TooltipEvent.java @@ -16,6 +16,7 @@ import ellpeck.actuallyadditions.util.KeyUtil; import ellpeck.actuallyadditions.util.ModUtil; import ellpeck.actuallyadditions.util.StringUtil; import net.minecraft.item.Item; +import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.oredict.OreDictionary; @@ -23,15 +24,15 @@ import java.util.regex.Pattern; public class TooltipEvent{ - private static final String TEXT_PRE = StringUtil.GRAY+" "; - private static final String HEADER_PRE = StringUtil.LIGHT_GRAY+" -"; + private static final String TEXT_PRE = EnumChatFormatting.DARK_GRAY+" "; + private static final String HEADER_PRE = EnumChatFormatting.GRAY+" -"; @SubscribeEvent public void onTooltipEvent(ItemTooltipEvent event){ if(event.itemStack.getItem() != null){ if(ConfigBoolValues.CTRL_EXTRA_INFO.isEnabled()){ if(KeyUtil.isControlPressed()){ - event.toolTip.add(StringUtil.GRAY+StringUtil.ITALIC+StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".extraInfo.desc")+":"); + event.toolTip.add(EnumChatFormatting.DARK_GRAY+""+EnumChatFormatting.ITALIC+StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".extraInfo.desc")+":"); //OreDict Names int[] oreIDs = OreDictionary.getOreIDs(event.itemStack); @@ -65,12 +66,12 @@ public class TooltipEvent{ //Disabling Info for(String str : StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".disablingInfo.desc").split(Pattern.quote("|"))){ - event.toolTip.add(StringUtil.ITALIC+str); + event.toolTip.add(EnumChatFormatting.ITALIC+str); } } else{ if(ConfigBoolValues.CTRL_INFO_FOR_EXTRA_INFO.isEnabled()){ - event.toolTip.add(StringUtil.GRAY+StringUtil.ITALIC+StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".ctrlForMoreInfo.desc")); + event.toolTip.add(EnumChatFormatting.DARK_GRAY+""+EnumChatFormatting.ITALIC+StringUtil.localize("tooltip."+ModUtil.MOD_ID_LOWER+".ctrlForMoreInfo.desc")); } } } diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiInputter.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiInputter.java index e5297d71b..9d4f5b710 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiInputter.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiInputter.java @@ -27,6 +27,7 @@ import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import org.lwjgl.input.Keyboard; @@ -227,14 +228,14 @@ public class GuiInputter extends GuiContainer{ String text1 = this.tileInputter.isPullWhitelist ? StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".gui.whitelist") : StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".gui.blacklist"); if(x >= guiLeft+3 && y >= guiTop+16 && x <= guiLeft+18 && y <= guiTop+31){ ArrayList list = new ArrayList(); - list.add(StringUtil.BOLD+text1); + list.add(EnumChatFormatting.BOLD+text1); list.addAll(Arrays.asList(strings)); this.func_146283_a(list, x, y); } String text2 = this.tileInputter.isPutWhitelist ? StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".gui.whitelist") : StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".gui.blacklist"); if(x >= guiLeft+157 && y >= guiTop+16 && x <= guiLeft+172 && y <= guiTop+31){ ArrayList list = new ArrayList(); - list.add(StringUtil.BOLD+text2); + list.add(EnumChatFormatting.BOLD+text2); list.addAll(Arrays.asList(strings)); this.func_146283_a(list, x, y); } diff --git a/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiSmileyCloud.java b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiSmileyCloud.java index 68b6c8b74..55c14c09d 100644 --- a/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiSmileyCloud.java +++ b/src/main/java/ellpeck/actuallyadditions/inventory/gui/GuiSmileyCloud.java @@ -23,6 +23,7 @@ import ellpeck.actuallyadditions.util.StringUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import org.lwjgl.input.Keyboard; @@ -55,7 +56,7 @@ public class GuiSmileyCloud extends GuiContainer{ @Override public void drawGuiContainerForegroundLayer(int x, int y){ - String name = cloud.name == null || cloud.name.isEmpty() ? "" : StringUtil.ORANGE+cloud.name+StringUtil.RESET+" "+StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".gui.the")+" "; + String name = cloud.name == null || cloud.name.isEmpty() ? "" : EnumChatFormatting.GOLD+cloud.name+EnumChatFormatting.RESET+" "+StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".gui.the")+" "; String localizedName = name+StringUtil.localize("container."+ModUtil.MOD_ID_LOWER+".cloud.name"); this.fontRendererObj.drawString(localizedName, xSize/2-this.fontRendererObj.getStringWidth(localizedName)/2, -10, StringUtil.DECIMAL_COLOR_WHITE); } diff --git a/src/main/java/ellpeck/actuallyadditions/util/StringUtil.java b/src/main/java/ellpeck/actuallyadditions/util/StringUtil.java index be13614f9..9e91ac5e7 100644 --- a/src/main/java/ellpeck/actuallyadditions/util/StringUtil.java +++ b/src/main/java/ellpeck/actuallyadditions/util/StringUtil.java @@ -16,28 +16,6 @@ import java.util.Objects; public class StringUtil{ - public static final String BLACK = (char)167 + "0"; - public static final String BLUE = (char)167 + "1"; - public static final String GREEN = (char)167 + "2"; - public static final String TEAL = (char)167 + "3"; - public static final String RED = (char)167 + "4"; - public static final String PURPLE = (char)167 + "5"; - public static final String ORANGE = (char)167 + "6"; - public static final String LIGHT_GRAY = (char)167 + "7"; - public static final String GRAY = (char)167 + "8"; - public static final String LIGHT_BLUE = (char)167 + "9"; - public static final String BRIGHT_GREEN = (char)167 + "a"; - public static final String BRIGHT_BLUE = (char)167 + "b"; - public static final String LIGHT_RED = (char)167 + "c"; - public static final String PINK = (char)167 + "d"; - public static final String YELLOW = (char)167 + "e"; - public static final String WHITE = (char)167 + "f"; - public static final String BOLD = (char)167 + "l"; - public static final String UNDERLINE = (char)167 + "n"; - public static final String ITALIC = (char)167 + "o"; - public static final String OBFUSCATED = (char)167 + "k"; - public static final String RESET = (char)167 + "r"; - public static final int DECIMAL_COLOR_WHITE = 16777215; public static final int DECIMAL_COLOR_GRAY_TEXT = 4210752; diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index db3fe8849..6e8a267b8 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -362,6 +362,8 @@ achievement.actuallyadditions.craftPhantomEnergyface.desc=Craft a Phantom Energy achievement.actuallyadditions.openTreasureChest=You almost drowned!! achievement.actuallyadditions.openTreasureChest.desc=Open a Treasure Chest underwater +item.actuallyadditions.itemBooklet.name=Actually Additions Information Manual + booklet.actuallyadditions.indexEntry.misc.name=Miscellaneous booklet.actuallyadditions.indexEntry.functionalNoRF.name=Functional Blocks (No RF use) booklet.actuallyadditions.indexEntry.allAndSearch.name=All Items and Search @@ -388,24 +390,38 @@ booklet.actuallyadditions.chapter.foods.text.16=It's Toast. What more could I sa booklet.actuallyadditions.chapter.foods.text.17=Dough gets cooked into Baguette in a Furnace and can then join the french fries on their mission to achieve something or another. booklet.actuallyadditions.chapter.cloud.name=Smiley Cloud -booklet.actuallyadditions.chapter.cloud.text.1=A Smiley Cloud is a neat little block that you can put down in the world. When in place, it will hover around across the ground, though staying on the block you placed it in. When right-clicking the cloud, it will open a GUI that enables you to change its name, and thus, its appearance if you do it right. On the next page, you can find some examples you can try out. -booklet.actuallyadditions.chapter.cloud.text.2=The Crafting Recipe is shown above. If you want to know what certain name changes do, try naming a cloud "Ellpeck", "Glenthor" or "AcidBlues". +booklet.actuallyadditions.chapter.cloud.text.1=A Smiley Cloud is a neat little block that you can put down in the world. When in place, it will hover around across the ground, though staying on the block you placed it in. When right-clicking the cloud, it will open a GUI that enables you to change its name, and thus, its appearance if you do it right. On the next page, you can find some examples you can try out. +booklet.actuallyadditions.chapter.cloud.text.2=The Crafting Recipe is shown above. If you want to know what certain name changes do, try naming a cloud "Ellpeck", "Glenthor" or "AcidBlues". booklet.actuallyadditions.chapter.phantomfaces.name=Phantomfaces -booklet.actuallyadditions.chapter.phantomfaces.text.1=A Phantomface is a block that you can connect to any inventory by using a Phantom Connector. When connected, the phantomface will act as if it was the corresponding inventory, accepting Items from pipes and hoppers and having items be able to get pulled out of the face (the same applies for energyfaces with RF and liquifaces with fluids.) a Phantomfaces has a default range of 15 blocks that can be enlarged with Phantom Boosters. -booklet.actuallyadditions.chapter.phantomfaces.text.2=The normal Phantomface can connect to inventories like chests and furnaces, transfering Items into and out of them. -booklet.actuallyadditions.chapter.phantomfaces.text.3=The Phantom Liquiface can connect to tanks and such, allowing all types of liquids to be pumped through. Giving it a Redstone Signal will cause it to auto-output. -booklet.actuallyadditions.chapter.phantomfaces.text.4=The Phantom Energyface can connect to things like generators and crushers, allowing for RF to flow through them into and out of machines. -booklet.actuallyadditions.chapter.phantomfaces.text.5=Shift-Right-Click this onto any inventory and then on the Phantom Device to connect the two. +booklet.actuallyadditions.chapter.phantomfaces.text.1=A Phantomface is a block that you can connect to any inventory by using a Phantom Connector. When connected, the Phantomface will act as if it was the corresponding inventory, accepting Items from pipes and hoppers and having items be able to get pulled out of the face (the same applies for energyfaces with RF and liquifaces with fluids.) a Phantomfaces has a default range of 15 blocks that can be enlarged with Phantom Boosters. +booklet.actuallyadditions.chapter.phantomfaces.text.2=The normal Phantomface can connect to inventories like chests and furnaces, transfering Items into and out of them. +booklet.actuallyadditions.chapter.phantomfaces.text.3=The Phantom Liquiface can connect to tanks and such, allowing all types of liquids to be pumped through. Giving it a Redstone Signal will cause it to auto-output. +booklet.actuallyadditions.chapter.phantomfaces.text.4=The Phantom Energyface can connect to things like generators and crushers, allowing for RF to flow through them into and out of machines. +booklet.actuallyadditions.chapter.phantomfaces.text.5=Shift-Right-Click this onto any inventory and then on the Phantom Device to connect the two. +booklet.actuallyadditions.chapter.phantomfaces.text.6=The Phantom Booster boosts the range of all Phantom Devices. A Phantom device can have 3 at most stacked atop it, with every booster doubling the range the Phantom Device has. -booklet.actuallyadditions.chapter.phantomBreaker.name=&4Phantom&0 Breakers & Placers -booklet.actuallyadditions.chapter.phantomBreaker.text.1=Phantom Breakers and Placers have very similar mechanics to Phantomfaces: They can be connected to Blocks via Phantom Connectors and interact with the environment. Phantom Breakers and Placers only have a range of 3 blocks, however, in which they can destroy and place blocks in connected places. Shift-right-clicking will supply you with information about the connection, right-clicking normally will open its interface. -booklet.actuallyadditions.chapter.phantomBreaker.text.2=The Phantom Placer places Blocks that you supply it with. -booklet.actuallyadditions.chapter.phantomBreaker.text.3=The Phantom Placer breaks blocks and stores them in its internal inventory. -booklet.actuallyadditions.chapter.phantomBreaker.text.4=Shift-Right-Click this onto any inventory and then on the Phantom Device to connect the two. +booklet.actuallyadditions.chapter.phantomBreaker.name=Phantom Breakers & Placers +booklet.actuallyadditions.chapter.phantomBreaker.text.1=Phantom Breakers and Placers have similar mechanics to Phantomfaces: They can be connected via Phantom Connectors. Phantom Breakers and Placers have a range of 3 blocks, in which they can destroy and place blocks in connected places. Shift-right-clicking supplies you with information about the connection, right-clicking normally will open its interface. See the Phantomface Page for more information on Phantom Connectors and Phantom Boosters. +booklet.actuallyadditions.chapter.phantomBreaker.text.2=The Phantom Placer places Blocks that you supply it with. +booklet.actuallyadditions.chapter.phantomBreaker.text.3=The Phantom Breaker breaks blocks and stores them in its internal inventory. booklet.actuallyadditions.chapter.breaker.name=(Fluid) Placers & Breakers -booklet.actuallyadditions.chapter.breaker.text.1=The Breaker breaks Blocks in front of it and stores them in its internal inventory. That's it. -booklet.actuallyadditions.chapter.breaker.text.2=The Placer places Blocks that it has stored in its internal inventory in the world. Amazing. -booklet.actuallyadditions.chapter.breaker.text.3=The Fluid Placer places liquids that you supply it with, if they have a block, in the world. -booklet.actuallyadditions.chapter.breaker.text.4=The Fluid Collector collects liquids in front of it and stores them in its tank. \ No newline at end of file +booklet.actuallyadditions.chapter.breaker.text.1=The Breaker breaks Blocks in front of it and stores them in its internal inventory. That's it. +booklet.actuallyadditions.chapter.breaker.text.2=The Placer places Blocks that it has stored in its internal inventory in the world. Amazing. +booklet.actuallyadditions.chapter.breaker.text.3=The Fluid Placer places liquids that you supply it with, if they have a block, in the world. +booklet.actuallyadditions.chapter.breaker.text.4=The Fluid Collector collects liquids in front of it and stores them in its tank. + +booklet.actuallyadditions.chapter.craftingIngs.name=Crafting Ingredients +booklet.actuallyadditions.chapter.craftingIngs.text.1=There is a lot of Items in Actually Additions that need certain low-tier, basic items to be able to be crafted. Here is all of the items that don't have a purpose on their own, but are used in several crafting recipes making them really necessary and useful. +booklet.actuallyadditions.chapter.craftingIngs.text.2=The Coil is a low-tier item used for machines. +booklet.actuallyadditions.chapter.craftingIngs.text.3=The Advanced Coil is a higher tier item used for more advanced machines. +booklet.actuallyadditions.chapter.craftingIngs.text.4=The Wood Casing is a low-tier block used for machines. +booklet.actuallyadditions.chapter.craftingIngs.text.5=The Stone Casing is a middle-tier block used for machines. +booklet.actuallyadditions.chapter.craftingIngs.text.6=The Ender Pearl Block doesn't do anything on its own, but is used for Phantomfaces and the Ender Casing. +booklet.actuallyadditions.chapter.craftingIngs.text.7=The Ender Casing is a high-tier block used for machines. + +booklet.actuallyadditions.chapter.esd.name=ESDs +booklet.actuallyadditions.chapter.esd.text.1=The ESD is a block that basically works like an extremely advanced hopper. You can configure the sides and the exact range of slots to put into and pull from. When hovering over the parts of the ESD's GUI, you can see more in-depth info about it. +booklet.actuallyadditions.chapter.esd.text.2=The normal ESD doesn't have a specific item filter. It'll just pull and put everything it finds. +booklet.actuallyadditions.chapter.esd.text.3=The Advanced ESD has a filter, so that you can specify what to pull and put. \ No newline at end of file diff --git a/src/main/resources/assets/actuallyadditions/textures/gui/guiBooklet.png b/src/main/resources/assets/actuallyadditions/textures/gui/guiBooklet.png index 71c88d5b4bcfe79dd42cb8f67325ef39370efa55..5d05a8fe3fc459e1b05826aad67771fb377fadf3 100644 GIT binary patch literal 18415 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 literal 18802 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 WCD_d`h5^q