aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials
diff options
context:
space:
mode:
authorIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-02-27 11:53:57 -0500
committerIRONM00N <64110067+IRONM00N@users.noreply.github.com>2022-02-27 11:53:57 -0500
commitb09f774d422263ce15b97d6d0804beddf856176d (patch)
treee542258481d7496b15679f3c329ef9e087c7d8fc /src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials
parent22cb02adbeb24b7ec98f843bcaba99cebe3e4f03 (diff)
downloadnotenoughupdates-b09f774d422263ce15b97d6d0804beddf856176d.tar.gz
notenoughupdates-b09f774d422263ce15b97d6d0804beddf856176d.tar.bz2
notenoughupdates-b09f774d422263ce15b97d6d0804beddf856176d.zip
feat: improve formating :)
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.java6
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/NeuTutorial.java251
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/tutorials/TutorialBase.java640
3 files changed, 499 insertions, 398 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 1cb9443f..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,7 +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 204bd5e9..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
@@ -4,117 +4,146 @@ import net.minecraft.client.Minecraft;
import net.minecraft.util.ResourceLocation;
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<JsonObject>() {{
- // 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 05b304a6..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,288 +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 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;
- }
- }
- 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 (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;
- }
- }
- 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<>();
-
- 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 j : pages) {
- pagesArray.add(new JsonPrimitive(j));
- }
- 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 (JsonObject text : texts) {
- textArray.add(text);
- }
- 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 (String text : texts) {
- lines.add(new JsonPrimitive(text));
- }
- 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 (String text : texts) {
- lines.add(new JsonPrimitive(text));
- }
- 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;
+ }
+ }
+ 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,