aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials
diff options
context:
space:
mode:
authorMoulberry <jjenour@student.unimelb.edu.au>2022-03-03 11:03:58 +0800
committerGitHub <noreply@github.com>2022-03-03 11:03:58 +0800
commit7c6d37b2eb758a13b342b906f0aef88b940bc52a (patch)
tree9602a014425b859e3aba98f31f93d6de04521356 /src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials
parentb11742988dec635b5c5da7c2363803cbfafb37b1 (diff)
parentdb59eba3fd9121c7c0a88363994876c5b582c08c (diff)
downloadnotenoughupdates-7c6d37b2eb758a13b342b906f0aef88b940bc52a.tar.gz
notenoughupdates-7c6d37b2eb758a13b342b906f0aef88b940bc52a.tar.bz2
notenoughupdates-7c6d37b2eb758a13b342b906f0aef88b940bc52a.zip
Merge pull request #248 from NotEnoughUpdates/master
NEU 2.1 🙂
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuConfigTutorial.java8
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuTutorial.java258
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/TutorialBase.java650
3 files changed, 499 insertions, 417 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuConfigTutorial.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuConfigTutorial.java
index c4d0115f..938f3f98 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuConfigTutorial.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuConfigTutorial.java
@@ -1,9 +1,7 @@
package io.github.moulberry.notenoughupdates.miscgui.tutorials;
public class NeuConfigTutorial extends TutorialBase {
-
- static {
- title = "NEU Config Tutorial";
- }
-
+ static {
+ title = "NEU Config Tutorial";
+ }
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuTutorial.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuTutorial.java
index 454c8788..24c6bb7f 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuTutorial.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuTutorial.java
@@ -1,127 +1,149 @@
package io.github.moulberry.notenoughupdates.miscgui.tutorials;
-import io.github.moulberry.notenoughupdates.util.Utils;
import net.minecraft.client.Minecraft;
-import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;
-import org.lwjgl.util.vector.Vector2f;
-
-import java.util.ArrayList;
-import java.util.HashMap;
public class NeuTutorial extends TutorialBase {
+ static {
+ title = "NEU Tutorial";
+ }
- static {
- title = "NEU Tutorial";
- }
-
- @Override
- public void setWorldAndResolution(Minecraft mc, int width, int height) {
- super.setWorldAndResolution(mc, width, height);
- screenshots = new ResourceLocation[18];
- for (int i = 0; i <= 17; i++) {
- screenshots[i] = new ResourceLocation("notenoughupdates:ss_small/ss" + (i + 1) + "-0.jpg");
- }
- }
+ @Override
+ public void setWorldAndResolution(Minecraft mc, int width, int height) {
+ super.setWorldAndResolution(mc, width, height);
+ screenshots = new ResourceLocation[18];
+ for (int i = 0; i <= 17; i++) {
+ screenshots[i] = new ResourceLocation("notenoughupdates:ss_small/ss" + (i + 1) + "-0.jpg");
+ }
+ }
-// static {
-//
-// texts[0].put(new Vector2f(0.73f, 0.60f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"Here you will find a list of (most) skyblock items",
-// EnumChatFormatting.GRAY+"The itemlist can be accessed by opening your inventory or most menus while on skyblock"));
-// texts[1].put(new Vector2f(0.73f, 0.16f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"These are the page controls for the itemlist",
-// EnumChatFormatting.GRAY+"Clicking these controls will bring you to other pages of the itemlist"));
-// texts[2].put(new Vector2f(0.73f, 1.05f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"These are the sorting controls for the itemlist",
-// EnumChatFormatting.GRAY+"The buttons on the left control the ordering of the items",
-// EnumChatFormatting.GRAY+"The buttons on the right can be used to filter a certain type of item"));
-// texts[3].put(new Vector2f(0.39f, 1.04f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"This is the search bar for the itemlist",
-// EnumChatFormatting.GRAY+"Double-click the bar to enable inventory search mode",
-// EnumChatFormatting.GRAY+"The button on the left opens up the mod settings",
-// EnumChatFormatting.GRAY+"The button on the right displays this tutorial"));
-// texts[4].put(new Vector2f(0.39f, 0.99f), Utils.createList(
-// EnumChatFormatting.GOLD+"QuickCommands",
-// EnumChatFormatting.GRAY+"These are the QuickCommands",
-// EnumChatFormatting.GRAY+"They let you warp around or access certain menus more easily"));
-// texts[5].put(new Vector2f(0.7f, 0.71f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"Hover over an item in the list to display it's lore",
-// EnumChatFormatting.GRAY+"Left clicking some items will display the recipe for that item",
-// EnumChatFormatting.GRAY+"Right clicking some items will display a wiki page for that item",
-// EnumChatFormatting.GRAY+"'F' will favourite an item, putting it to the top of the itemlist"));
-// texts[6].put(new Vector2f(0.17f, 0.21f), Utils.createList(
-// EnumChatFormatting.GOLD+"Collection Log",
-// EnumChatFormatting.GRAY+"This is the collection log. It can be accessed using the /neucl command, or via the QuickCommand",
-// EnumChatFormatting.GRAY+"The collection log keeps track of all items that enter your inventory while you are playing skyblock",
-// EnumChatFormatting.GRAY+"If you are a completionist, this feature is for you"));
-// texts[7].put(new Vector2f(0.05f, 0.13f), Utils.createList(
-// EnumChatFormatting.GOLD+"Collection Log",
-// EnumChatFormatting.GRAY+"Clicking on 'Filter' will change the items that",
-// EnumChatFormatting.GRAY+"appear in the list"));
-// texts[8].put(new Vector2f(0.35f, 0.74f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"This is the NEU Auction House (NeuAH)",
-// EnumChatFormatting.GRAY+"This AH can be accessed from anywhere using the /neuah command, or via the QuickCommand",
-// EnumChatFormatting.GRAY+"The items here refresh automatically, so there is no need to close the GUI to see the latest auctions",
-// EnumChatFormatting.GRAY+"Sometimes, you might have to wait until the list is populated with items from the API"));
-// texts[9].put(new Vector2f(0.41f, 0.40f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"These tabs control the items that appear in NeuAH",
-// EnumChatFormatting.GRAY+"You can find the main categories on the top of the GUI and subcategories appear on the side of the GUI once a main category is selected"));
-// texts[10].put(new Vector2f(0.57f, 0.38f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"Search for items using the search bar at the top",
-// EnumChatFormatting.GRAY+"Boolean operators such as &, | or ! work here."));
-// texts[10].put(new Vector2f(0.40f, 0.72f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"This toolbar contains many useful features",
-// EnumChatFormatting.GRAY+"which control the sorting and ordering of",
-// EnumChatFormatting.GRAY+"the auction house, similar to the normal AH"));
-// texts[11].put(new Vector2f(0.55f, 0.72f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"Clicking on an item will bring up the auction view",
-// EnumChatFormatting.GRAY+"Here you can viewer the buyer/seller and place bids or make purchases",
-// EnumChatFormatting.GRAY+"Trying to purchase an item will result in a confirmation GUI similar to the normal AH"));
-// texts[12].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"Access the profile viewer using /neuprofile (ign) or /pv (ign)",
-// EnumChatFormatting.GRAY+"This is the main page of the profile viewer",
-// EnumChatFormatting.GRAY+"This page contains basic information like stats and skill levels"));
-// texts[12].put(new Vector2f(0.72f, 0.55f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"Click the button on the left to switch profiles and use the bar on the right to switch players"));
-// texts[13].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"This is the extra info page of the profile viewer",
-// EnumChatFormatting.GRAY+"This page contains all the small bits of information about a player that don't fit anywhere else"));
-// texts[14].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"This is the inventories page of the profile viewer",
-// EnumChatFormatting.GRAY+"Click on the inventory icons in the top-left or use your keyboard to switch the inventory type",
-// EnumChatFormatting.GRAY+"The bar on the bottom-left searches the current inventory for matching items"));
-// texts[15].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"This is the collections page of the profile viewer",
-// EnumChatFormatting.GRAY+"Click on the icons on the left or use the keyboard shortcut to switch collection type"));
-// texts[16].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"This is the pets page of the profile viewer",
-// EnumChatFormatting.GRAY+"Click to select the pet on the left",
-// EnumChatFormatting.GRAY+"The selected pet's stats will display on the right"));
-// texts[17].put(new Vector2f(0.27f, 0.40f), Utils.createList(
-// EnumChatFormatting.GOLD+"Overlay",
-// EnumChatFormatting.GRAY+"Rearrange certain GUI elements of the main overlay using /neuoverlay",
-// EnumChatFormatting.GRAY+"If you accidentally move them off screen, use the button in the top left to reset the GUI"));
-// }
-//
-// static {
-// buttons = new ArrayList<>();
-// buttons.add(createNewButton(0.27f, 0.40f, new int[]{1, 2},"TESTSHIT", "neu"));
-// }
+ //static {
+ // texts[0].put(new Vector2f(0.73f, 0.60f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Itemlist",
+ // EnumChatFormatting.GRAY + "Here you will find a list of (most) skyblock items",
+ // EnumChatFormatting.GRAY + "The itemlist can be accessed by opening your inventory or most menus while on skyblock"
+ // ));
+ // texts[1].put(new Vector2f(0.73f, 0.16f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Itemlist",
+ // EnumChatFormatting.GRAY + "These are the page controls for the itemlist",
+ // EnumChatFormatting.GRAY + "Clicking these controls will bring you to other pages of the itemlist"
+ // ));
+ // texts[2].put(new Vector2f(0.73f, 1.05f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Itemlist",
+ // EnumChatFormatting.GRAY + "These are the sorting controls for the itemlist",
+ // EnumChatFormatting.GRAY + "The buttons on the left control the ordering of the items",
+ // EnumChatFormatting.GRAY + "The buttons on the right can be used to filter a certain type of item"
+ // ));
+ // texts[3].put(new Vector2f(0.39f, 1.04f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Itemlist",
+ // EnumChatFormatting.GRAY + "This is the search bar for the itemlist",
+ // EnumChatFormatting.GRAY + "Double-click the bar to enable inventory search mode",
+ // EnumChatFormatting.GRAY + "The button on the left opens up the mod settings",
+ // EnumChatFormatting.GRAY + "The button on the right displays this tutorial"
+ // ));
+ // texts[4].put(new Vector2f(0.39f, 0.99f), Utils.createList(
+ // EnumChatFormatting.GOLD + "QuickCommands",
+ // EnumChatFormatting.GRAY + "These are the QuickCommands",
+ // EnumChatFormatting.GRAY + "They let you warp around or access certain menus more easily"
+ // ));
+ // texts[5].put(new Vector2f(0.7f, 0.71f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Itemlist",
+ // EnumChatFormatting.GRAY + "Hover over an item in the list to display it's lore",
+ // EnumChatFormatting.GRAY + "Left clicking some items will display the recipe for that item",
+ // EnumChatFormatting.GRAY + "Right clicking some items will display a wiki page for that item",
+ // EnumChatFormatting.GRAY + "'F' will favourite an item, putting it to the top of the itemlist"
+ // ));
+ // texts[6].put(new Vector2f(0.17f, 0.21f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Collection Log",
+ // EnumChatFormatting.GRAY +
+ // "This is the collection log. It can be accessed using the /neucl command, or via the QuickCommand",
+ // EnumChatFormatting.GRAY +
+ // "The collection log keeps track of all items that enter your inventory while you are playing skyblock",
+ // EnumChatFormatting.GRAY + "If you are a completionist, this feature is for you"
+ // ));
+ // texts[7].put(new Vector2f(0.05f, 0.13f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Collection Log",
+ // EnumChatFormatting.GRAY + "Clicking on 'Filter' will change the items that",
+ // EnumChatFormatting.GRAY + "appear in the list"
+ // ));
+ // texts[8].put(new Vector2f(0.35f, 0.74f), Utils.createList(
+ // EnumChatFormatting.GOLD + "NeuAH",
+ // EnumChatFormatting.GRAY + "This is the NEU Auction House (NeuAH)",
+ // EnumChatFormatting.GRAY +
+ // "This AH can be accessed from anywhere using the /neuah command, or via the QuickCommand",
+ // EnumChatFormatting.GRAY +
+ // "The items here refresh automatically, so there is no need to close the GUI to see the latest auctions",
+ // EnumChatFormatting.GRAY + "Sometimes, you might have to wait until the list is populated with items from the API"
+ // ));
+ // texts[9].put(new Vector2f(0.41f, 0.40f), Utils.createList(
+ // EnumChatFormatting.GOLD + "NeuAH",
+ // EnumChatFormatting.GRAY + "These tabs control the items that appear in NeuAH",
+ // EnumChatFormatting.GRAY +
+ // "You can find the main categories on the top of the GUI and subcategories appear on the side of the GUI once a main category is selected"
+ // ));
+ // texts[10].put(new Vector2f(0.57f, 0.38f), Utils.createList(
+ // EnumChatFormatting.GOLD + "NeuAH",
+ // EnumChatFormatting.GRAY + "Search for items using the search bar at the top",
+ // EnumChatFormatting.GRAY + "Boolean operators such as &, | or ! work here."
+ // ));
+ // texts[10].put(new Vector2f(0.40f, 0.72f), Utils.createList(
+ // EnumChatFormatting.GOLD + "NeuAH",
+ // EnumChatFormatting.GRAY + "This toolbar contains many useful features",
+ // EnumChatFormatting.GRAY + "which control the sorting and ordering of",
+ // EnumChatFormatting.GRAY + "the auction house, similar to the normal AH"
+ // ));
+ // texts[11].put(new Vector2f(0.55f, 0.72f), Utils.createList(
+ // EnumChatFormatting.GOLD + "NeuAH",
+ // EnumChatFormatting.GRAY + "Clicking on an item will bring up the auction view",
+ // EnumChatFormatting.GRAY + "Here you can viewer the buyer/seller and place bids or make purchases",
+ // EnumChatFormatting.GRAY + "Trying to purchase an item will result in a confirmation GUI similar to the normal AH"
+ // ));
+ // texts[12].put(new Vector2f(0.28f, 0.82f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Profile Viewer",
+ // EnumChatFormatting.GRAY + "Access the profile viewer using /neuprofile (ign) or /pv (ign)",
+ // EnumChatFormatting.GRAY + "This is the main page of the profile viewer",
+ // EnumChatFormatting.GRAY + "This page contains basic information like stats and skill levels"
+ // ));
+ // texts[12].put(new Vector2f(0.72f, 0.55f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Profile Viewer",
+ // EnumChatFormatting.GRAY +
+ // "Click the button on the left to switch profiles and use the bar on the right to switch players"
+ // ));
+ // texts[13].put(new Vector2f(0.28f, 0.82f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Profile Viewer",
+ // EnumChatFormatting.GRAY + "This is the extra info page of the profile viewer",
+ // EnumChatFormatting.GRAY +
+ // "This page contains all the small bits of information about a player that don't fit anywhere else"
+ // ));
+ // texts[14].put(new Vector2f(0.28f, 0.82f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Profile Viewer",
+ // EnumChatFormatting.GRAY + "This is the inventories page of the profile viewer",
+ // EnumChatFormatting.GRAY +
+ // "Click on the inventory icons in the top-left or use your keyboard to switch the inventory type",
+ // EnumChatFormatting.GRAY + "The bar on the bottom-left searches the current inventory for matching items"
+ // ));
+ // texts[15].put(new Vector2f(0.28f, 0.82f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Profile Viewer",
+ // EnumChatFormatting.GRAY + "This is the collections page of the profile viewer",
+ // EnumChatFormatting.GRAY + "Click on the icons on the left or use the keyboard shortcut to switch collection type"
+ // ));
+ // texts[16].put(new Vector2f(0.28f, 0.82f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Profile Viewer",
+ // EnumChatFormatting.GRAY + "This is the pets page of the profile viewer",
+ // EnumChatFormatting.GRAY + "Click to select the pet on the left",
+ // EnumChatFormatting.GRAY + "The selected pet's stats will display on the right"
+ // ));
+ // texts[17].put(new Vector2f(0.27f, 0.40f), Utils.createList(
+ // EnumChatFormatting.GOLD + "Overlay",
+ // EnumChatFormatting.GRAY + "Rearrange certain GUI elements of the main overlay using /neuoverlay",
+ // EnumChatFormatting.GRAY +
+ // "If you accidentally move them off screen, use the button in the top left to reset the GUI"
+ // ));
+ //}
+ //
+ //static {
+ // buttons = new ArrayList<JsonObject>() {{
+ // add(createNewButton(0.27f, 0.40f, new int[]{1, 2}, "TESTSHIT", "neu"));
+ // }};
+ //}
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/TutorialBase.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/TutorialBase.java
index 215f210c..433bb996 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/TutorialBase.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/TutorialBase.java
@@ -22,298 +22,360 @@ import java.util.List;
import static io.github.moulberry.notenoughupdates.miscgui.GuiEnchantColour.custom_ench_colour;
public class TutorialBase extends GuiScreen {
-
- private int guiLeft = 0;
- private int guiTop = 0;
- private int sizeX = 0;
- private int sizeY = 0;
-
- protected static String title;
-
- private int page = 0;
- private ResourceLocation screenshotBorder = new ResourceLocation("notenoughupdates:ss_border.jpg");
-
- protected ResourceLocation[] screenshots = null;
-
- int scaleFactor = 0;
-
-
-
- @Override
- public void setWorldAndResolution(Minecraft mc, int width, int height) {
- super.setWorldAndResolution(mc, width, height);
- }
-
- @Override
- protected void keyTyped(char typedChar, int keyCode) throws IOException {
- Keyboard.enableRepeatEvents(true);
- super.keyTyped(typedChar, keyCode);
- if(keyCode == Keyboard.KEY_LEFT) {
- page--;
- } else if(keyCode == Keyboard.KEY_RIGHT) {
- page++;
- }
- }
-
- @Override
- public void drawScreen(int mouseX, int mouseY, float partialTicks) {
- super.drawScreen(mouseX, mouseY, partialTicks);
-
- drawDefaultBackground();
-
- ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
- scaleFactor = scaledResolution.getScaleFactor();
-
- sizeX = width/2+40/scaleFactor;
- sizeY = height/2+40/scaleFactor;
- guiLeft = width/4-20/scaleFactor;
- guiTop = height/4-20/scaleFactor;
-
- Minecraft.getMinecraft().getTextureManager().bindTexture(screenshotBorder);
- Utils.drawTexturedRect(guiLeft, guiTop, sizeX, sizeY);
-
- page = Math.max(0, Math.min(17, page));
-
- Minecraft.getMinecraft().getTextureManager().bindTexture(screenshots[page]);
- Utils.drawTexturedRect(guiLeft+20f/scaleFactor, guiTop+20f/scaleFactor, sizeX-40f/scaleFactor, sizeY-40f/scaleFactor);
-
- Utils.drawStringCentered(EnumChatFormatting.GOLD+title+" - Page "+(page+1)+"/"+(texts.size())+" - Use arrow keys", Minecraft.getMinecraft().fontRendererObj,
- width/2, guiTop+8, true, 0);
- if(scaleFactor != 2) Utils.drawStringCentered(EnumChatFormatting.GOLD+"Use GUI Scale normal for better reading experience", Minecraft.getMinecraft().fontRendererObj,
- width/2, guiTop+18, true, 0);
- JsonArray pageTexts = texts.get(page);
- for (int i = 0; i < pageTexts.size(); i++) {
- JsonObject textElement = pageTexts.get(i).getAsJsonObject();
- float oldX = textElement.get("x").getAsFloat();
- float oldY = textElement.get("y").getAsFloat();
-
-// List<String> text = entry.getValue();
- JsonArray textArray = textElement.getAsJsonArray("lines");
- List<String> text = new ArrayList<>();
- for (int j = 0; j < textArray.size(); j++) {
- text.add(textArray.get(j).getAsString());
- }
-
-
- float x = guiLeft+20f/scaleFactor+(sizeX-40f/scaleFactor)*oldX;
- float y = guiTop+20f/scaleFactor+(sizeY-40f/scaleFactor)*oldY;
-
- Utils.drawHoveringText(text, (int)x, (int)y+12, 100000, 100000, 200, Minecraft.getMinecraft().fontRendererObj);
- }
-
- drawButtons();
- }
-
- protected void drawButtons(){
-
- for (int i = 0; i < buttons.size(); i++) {
- JsonObject button = buttons.get(i);
- JsonArray pages = button.get("pages").getAsJsonArray();
- boolean drawButton = false;
- for (int i1 = 0; i1 < pages.size(); i1++) {
- if(pages.get(i1).getAsInt() == page){
- drawButton = true;
- break;
- }
- }
- if(!drawButton){
- continue;
- }
- float x = button.get("x").getAsFloat();
- float y = button.get("y").getAsFloat();
- String text = button.get("text").getAsString();
-// String command = button.get("command").getAsString();
- Minecraft.getMinecraft().getTextureManager().bindTexture(custom_ench_colour);
- GlStateManager.color(1, 1, 1, 1);
- Utils.drawTexturedRect(guiLeft+20f/scaleFactor+(sizeX-40f/scaleFactor)*x, guiTop+20f/scaleFactor+(sizeY-40f/scaleFactor)*y, 88, 20, 64/217f, 152/217f, 48/78f, 68/78f, GL11.GL_NEAREST);
- Utils.drawStringCenteredScaledMaxWidth(text, fontRendererObj, (guiLeft+20f/scaleFactor+(sizeX-40f/scaleFactor)*x)+44, (guiTop+20f/scaleFactor+(sizeY-40f/scaleFactor)*y)+10, false, 86, 4210752);
-
-
- }
- }
-
- @Override
- protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException {
- super.mouseClicked(mouseX, mouseY, mouseButton);
- int width= 88;
- int height = 20;
-
- for (int i = 0; i < buttons.size(); i++) {
- JsonObject button = buttons.get(i);
- JsonArray pages = button.get("pages").getAsJsonArray();
- boolean drawButton = false;
- for (int i1 = 0; i1 < pages.size(); i1++) {
- if(pages.get(i1).getAsInt() == page){
- drawButton = true;
- break;
- }
- }
- if(!drawButton){
- continue;
- }
- float x = button.get("x").getAsFloat();
- float y = button.get("y").getAsFloat();
- //String text = button.get("text").getAsString();
- float realX = guiLeft+20f/scaleFactor+(sizeX-40f/scaleFactor)*x;
- float realY = guiTop+20f/scaleFactor+(sizeY-40f/scaleFactor)*y;
- if(mouseX > realX && mouseX < realX+width && mouseY > realY && mouseY < realY+height){
- String command = button.get("command").getAsString();
- NotEnoughUpdates.INSTANCE.openGui = null;
- ClientCommandHandler.instance.executeCommand(Minecraft.getMinecraft().thePlayer, "/"+command);
- return;
- }
- }
- }
-
-
-
-
-
- protected static List<JsonArray> texts = new ArrayList<JsonArray>();
-
- protected static List<JsonObject> buttons = new ArrayList<>();
-
- protected static JsonObject createNewButton(float x, float y, int[] pages, String text, String command){
- JsonObject button = new JsonObject();
- JsonArray pagesArray = new JsonArray();
- for (int i = 0; i < pages.length; i++) {
- pagesArray.add(new JsonPrimitive(pages[i]));
- }
- button.add("pages",pagesArray);
- button.add("x", new JsonPrimitive(x));
- button.add("y", new JsonPrimitive(y));
- button.add("text", new JsonPrimitive(text));
- button.add("command", new JsonPrimitive(command));
- return button;
- }
-
- protected static JsonArray createNewTexts(JsonObject... texts){
- JsonArray textArray = new JsonArray();
- for (int i = 0; i < texts.length; i++) {
- textArray.add(texts[i]);
- }
- return textArray;
- }
-
- protected static JsonObject createNewText(float x, float y, String... texts){
- JsonObject tooltip = new JsonObject();
- tooltip.add("x", new JsonPrimitive(x));
- tooltip.add("y", new JsonPrimitive(y));
- JsonArray lines = new JsonArray();
- for (int i = 0; i < texts.length; i++) {
- lines.add(new JsonPrimitive(texts[i]));
- }
- tooltip.add("lines", lines);
- return tooltip;
- }
-
- protected static JsonObject createNewText(float x, float y, List<String> texts){
- JsonObject tooltip = new JsonObject();
- tooltip.add("x", new JsonPrimitive(x));
- tooltip.add("y", new JsonPrimitive(y));
- JsonArray lines = new JsonArray();
- for (int i = 0; i < texts.size(); i++) {
- lines.add(new JsonPrimitive(texts.get(i)));
- }
- tooltip.add("lines", lines);
- return tooltip;
- }
-
-// static {
-// for(int i=0; i<18; i++) {
-// texts[i] = new HashMap<>();
-// }
-// texts[0].put(new Vector2f(0.73f, 0.60f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"Here you will find a list of (most) skyblock items",
-// EnumChatFormatting.GRAY+"The itemlist can be accessed by opening your inventory or most menus while on skyblock"));
-// texts[1].put(new Vector2f(0.73f, 0.16f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"These are the page controls for the itemlist",
-// EnumChatFormatting.GRAY+"Clicking these controls will bring you to other pages of the itemlist"));
-// texts[2].put(new Vector2f(0.73f, 1.05f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"These are the sorting controls for the itemlist",
-// EnumChatFormatting.GRAY+"The buttons on the left control the ordering of the items",
-// EnumChatFormatting.GRAY+"The buttons on the right can be used to filter a certain type of item"));
-// texts[3].put(new Vector2f(0.39f, 1.04f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"This is the search bar for the itemlist",
-// EnumChatFormatting.GRAY+"Double-click the bar to enable inventory search mode",
-// EnumChatFormatting.GRAY+"The button on the left opens up the mod settings",
-// EnumChatFormatting.GRAY+"The button on the right displays this tutorial"));
-// texts[4].put(new Vector2f(0.39f, 0.99f), Utils.createList(
-// EnumChatFormatting.GOLD+"QuickCommands",
-// EnumChatFormatting.GRAY+"These are the QuickCommands",
-// EnumChatFormatting.GRAY+"They let you warp around or access certain menus more easily"));
-// texts[5].put(new Vector2f(0.7f, 0.71f), Utils.createList(
-// EnumChatFormatting.GOLD+"Itemlist",
-// EnumChatFormatting.GRAY+"Hover over an item in the list to display it's lore",
-// EnumChatFormatting.GRAY+"Left clicking some items will display the recipe for that item",
-// EnumChatFormatting.GRAY+"Right clicking some items will display a wiki page for that item",
-// EnumChatFormatting.GRAY+"'F' will favourite an item, putting it to the top of the itemlist"));
-// texts[6].put(new Vector2f(0.17f, 0.21f), Utils.createList(
-// EnumChatFormatting.GOLD+"Collection Log",
-// EnumChatFormatting.GRAY+"This is the collection log. It can be accessed using the /neucl command, or via the QuickCommand",
-// EnumChatFormatting.GRAY+"The collection log keeps track of all items that enter your inventory while you are playing skyblock",
-// EnumChatFormatting.GRAY+"If you are a completionist, this feature is for you"));
-// texts[7].put(new Vector2f(0.05f, 0.13f), Utils.createList(
-// EnumChatFormatting.GOLD+"Collection Log",
-// EnumChatFormatting.GRAY+"Clicking on 'Filter' will change the items that",
-// EnumChatFormatting.GRAY+"appear in the list"));
-// texts[8].put(new Vector2f(0.35f, 0.74f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"This is the NEU Auction House (NeuAH)",
-// EnumChatFormatting.GRAY+"This AH can be accessed from anywhere using the /neuah command, or via the QuickCommand",
-// EnumChatFormatting.GRAY+"The items here refresh automatically, so there is no need to close the GUI to see the latest auctions",
-// EnumChatFormatting.GRAY+"Sometimes, you might have to wait until the list is populated with items from the API"));
-// texts[9].put(new Vector2f(0.41f, 0.40f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"These tabs control the items that appear in NeuAH",
-// EnumChatFormatting.GRAY+"You can find the main categories on the top of the GUI and subcategories appear on the side of the GUI once a main category is selected"));
-// texts[10].put(new Vector2f(0.57f, 0.38f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"Search for items using the search bar at the top",
-// EnumChatFormatting.GRAY+"Boolean operators such as &, | or ! work here."));
-// texts[10].put(new Vector2f(0.40f, 0.72f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"This toolbar contains many useful features",
-// EnumChatFormatting.GRAY+"which control the sorting and ordering of",
-// EnumChatFormatting.GRAY+"the auction house, similar to the normal AH"));
-// texts[11].put(new Vector2f(0.55f, 0.72f), Utils.createList(
-// EnumChatFormatting.GOLD+"NeuAH",
-// EnumChatFormatting.GRAY+"Clicking on an item will bring up the auction view",
-// EnumChatFormatting.GRAY+"Here you can viewer the buyer/seller and place bids or make purchases",
-// EnumChatFormatting.GRAY+"Trying to purchase an item will result in a confirmation GUI similar to the normal AH"));
-// texts[12].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"Access the profile viewer using /neuprofile (ign) or /pv (ign)",
-// EnumChatFormatting.GRAY+"This is the main page of the profile viewer",
-// EnumChatFormatting.GRAY+"This page contains basic information like stats and skill levels"));
-// texts[12].put(new Vector2f(0.72f, 0.55f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"Click the button on the left to switch profiles and use the bar on the right to switch players"));
-// texts[13].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"This is the extra info page of the profile viewer",
-// EnumChatFormatting.GRAY+"This page contains all the small bits of information about a player that don't fit anywhere else"));
-// texts[14].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"This is the inventories page of the profile viewer",
-// EnumChatFormatting.GRAY+"Click on the inventory icons in the top-left or use your keyboard to switch the inventory type",
-// EnumChatFormatting.GRAY+"The bar on the bottom-left searches the current inventory for matching items"));
-// texts[15].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"This is the collections page of the profile viewer",
-// EnumChatFormatting.GRAY+"Click on the icons on the left or use the keyboard shortcut to switch collection type"));
-// texts[16].put(new Vector2f(0.28f, 0.82f), Utils.createList(
-// EnumChatFormatting.GOLD+"Profile Viewer",
-// EnumChatFormatting.GRAY+"This is the pets page of the profile viewer",
-// EnumChatFormatting.GRAY+"Click to select the pet on the left",
-// EnumChatFormatting.GRAY+"The selected pet's stats will display on the right"));
-// texts[17].put(new Vector2f(0.27f, 0.40f), Utils.createList(
-// EnumChatFormatting.GOLD+"Overlay",
-// EnumChatFormatting.GRAY+"Rearrange certain GUI elements of the main overlay using /neuoverlay",
-// EnumChatFormatting.GRAY+"If you accidentally move them off screen, use the button in the top left to reset the GUI"));
-// }
+ private int guiLeft = 0;
+ private int guiTop = 0;
+ private int sizeX = 0;
+ private int sizeY = 0;
+
+ protected static String title;
+
+ private int page = 0;
+ private final ResourceLocation screenshotBorder = new ResourceLocation("notenoughupdates:ss_border.jpg");
+
+ protected ResourceLocation[] screenshots = null;
+
+ int scaleFactor = 0;
+
+ @Override
+ public void setWorldAndResolution(Minecraft mc, int width, int height) {
+ super.setWorldAndResolution(mc, width, height);
+ }
+
+ @Override
+ protected void keyTyped(char typedChar, int keyCode) throws IOException {
+ Keyboard.enableRepeatEvents(true);
+ super.keyTyped(typedChar, keyCode);
+ if (keyCode == Keyboard.KEY_LEFT) {
+ page--;
+ } else if (keyCode == Keyboard.KEY_RIGHT) {
+ page++;
+ }
+ }
+
+ @Override
+ public void drawScreen(int mouseX, int mouseY, float partialTicks) {
+ super.drawScreen(mouseX, mouseY, partialTicks);
+
+ drawDefaultBackground();
+
+ ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
+ scaleFactor = scaledResolution.getScaleFactor();
+
+ sizeX = width / 2 + 40 / scaleFactor;
+ sizeY = height / 2 + 40 / scaleFactor;
+ guiLeft = width / 4 - 20 / scaleFactor;
+ guiTop = height / 4 - 20 / scaleFactor;
+
+ Minecraft.getMinecraft().getTextureManager().bindTexture(screenshotBorder);
+ Utils.drawTexturedRect(guiLeft, guiTop, sizeX, sizeY);
+
+ page = Math.max(0, Math.min(17, page));
+
+ Minecraft.getMinecraft().getTextureManager().bindTexture(screenshots[page]);
+ Utils.drawTexturedRect(
+ guiLeft + 20f / scaleFactor,
+ guiTop + 20f / scaleFactor,
+ sizeX - 40f / scaleFactor,
+ sizeY - 40f / scaleFactor
+ );
+
+ Utils.drawStringCentered(
+ EnumChatFormatting.GOLD + title + " - Page " + (page + 1) + "/" + (texts.size()) + " - Use arrow keys",
+ Minecraft.getMinecraft().fontRendererObj,
+ width / 2,
+ guiTop + 8,
+ true,
+ 0
+ );
+ if (scaleFactor != 2)
+ Utils.drawStringCentered(
+ EnumChatFormatting.GOLD + "Use GUI Scale normal for better reading experience",
+ Minecraft.getMinecraft().fontRendererObj,
+ width / 2,
+ guiTop + 18,
+ true,
+ 0
+ );
+ JsonArray pageTexts = texts.get(page);
+ for (int i = 0; i < pageTexts.size(); i++) {
+ JsonObject textElement = pageTexts.get(i).getAsJsonObject();
+ float oldX = textElement.get("x").getAsFloat();
+ float oldY = textElement.get("y").getAsFloat();
+
+ // List<String> text = entry.getValue();
+ JsonArray textArray = textElement.getAsJsonArray("lines");
+ List<String> text = new ArrayList<>();
+ for (int j = 0; j < textArray.size(); j++) {
+ text.add(textArray.get(j).getAsString());
+ }
+
+ float x = guiLeft + 20f / scaleFactor + (sizeX - 40f / scaleFactor) * oldX;
+ float y = guiTop + 20f / scaleFactor + (sizeY - 40f / scaleFactor) * oldY;
+
+ Utils.drawHoveringText(
+ text,
+ (int) x,
+ (int) y + 12,
+ 100000,
+ 100000,
+ 200,
+ Minecraft.getMinecraft().fontRendererObj
+ );
+ }
+
+ drawButtons();
+ }
+
+ protected void drawButtons() {
+
+ for (JsonObject button : buttons) {
+ JsonArray pages = button.get("pages").getAsJsonArray();
+ boolean drawButton = false;
+ for (int i1 = 0; i1 < pages.size(); i1++) {
+ if (pages.get(i1).getAsInt() == page) {
+ drawButton = true;
+ break;