diff --git a/README.md b/README.md new file mode 100644 index 00000000..50fb6a39 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Athena-Client diff --git a/src/main/java/optifine/FontUtils.java b/src/main/java/optifine/FontUtils.java index 5477bec8..13efa29c 100644 --- a/src/main/java/optifine/FontUtils.java +++ b/src/main/java/optifine/FontUtils.java @@ -98,6 +98,27 @@ public class FontUtils } } + public static boolean readBoolean(final Properties props, final String key, final boolean defVal) { + final String s = props.getProperty(key); + + if (s == null) { + return defVal; + } else { + final String s1 = s.toLowerCase().trim(); + + if (!s1.equals("true") && !s1.equals("on")) { + if (!s1.equals("false") && !s1.equals("off")) { + Config.warn("Invalid value for " + key + ": " + s); + return defVal; + } else { + return false; + } + } else { + return true; + } + } + } + public static ResourceLocation getHdFontLocation(ResourceLocation p_getHdFontLocation_0_) { if (!Config.isCustomFonts()) diff --git a/src/main/java/rip/athena/client/Athena.java b/src/main/java/rip/athena/client/Athena.java index 933e4368..90c046d8 100644 --- a/src/main/java/rip/athena/client/Athena.java +++ b/src/main/java/rip/athena/client/Athena.java @@ -77,7 +77,7 @@ public class Athena { if(SocketClient.isClientRunning()) { - JOptionPane.showMessageDialog(null, "If the client is currently running, please close it before proceeding. \nOtherwise, delete the 'client.lock' file in the '.minecraft/Athena' directory."); + JOptionPane.showMessageDialog(null, "Port 1337 already in use."); System.exit(0); } diff --git a/src/main/java/rip/athena/client/gui/clickgui/Category.java b/src/main/java/rip/athena/client/gui/clickgui/Category.java index 0bdab73b..cea1bf25 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/Category.java +++ b/src/main/java/rip/athena/client/gui/clickgui/Category.java @@ -12,8 +12,7 @@ public enum Category { MACROS("MACROS", "Athena/gui/mods/cps.png"), WAYPOINTS("WAYPOINTS", "Athena/gui/menu/waypoints.png"), PROFILES("PROFILES", "Athena/gui/menu/profiles.png"), - COSMETICS("COSMETICS", "Athena/gui/menu/cosmetics.png"), - GROUPS("GROUPS", "Athena/gui/menu/groups.png"); + COSMETICS("COSMETICS", "Athena/gui/menu/cosmetics.png"); private String name; private String icon; diff --git a/src/main/java/rip/athena/client/gui/clickgui/IngameMenu.java b/src/main/java/rip/athena/client/gui/clickgui/IngameMenu.java index d19db840..500bcab5 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/IngameMenu.java +++ b/src/main/java/rip/athena/client/gui/clickgui/IngameMenu.java @@ -139,7 +139,7 @@ public class IngameMenu extends MinecraftMenuImpl implements DrawImpl { RoundedUtils.drawRoundedOutline(menu.getX(), menu.getY(), menu.getX() + menu.getWidth(), menu.getY() + menu.getHeight(), 54, 5, new Color(50, 50, 50, 255).getRGB()); RoundedUtils.drawRoundedRect(menu.getX(), menu.getY(), menu.getX() + menu.getWidth(), menu.getY() + menu.getHeight(), 54, new Color(30, 30, 30, 255).getRGB()); - FontManager.font1.drawString(Athena.INSTANCE.getClientName().toUpperCase(), menu.getX() + 60, menu.getY() + 20, MENU_HEADER_TEXT_COLOR); + rip.athena.client.utils.font.FontManager.getNunito(30).drawString(Athena.INSTANCE.getClientName().toUpperCase(), menu.getX() + 60, menu.getY() + 20, MENU_HEADER_TEXT_COLOR); DrawUtils.drawImage(new ResourceLocation("Athena/logo/Athena.png"), (int) (menu.getX() + FontManager.font1.getStringWidth(Athena.INSTANCE.getClientName().toUpperCase()) + 70), (int) (menu.getY() - 10 + FontManager.font1.getHeight(Athena.INSTANCE.getClientName().toUpperCase())), 30, 30); drawShadowDown(menu.getX(), menu.getY() + 58, menu.getWidth()); diff --git a/src/main/java/rip/athena/client/gui/clickgui/PageManager.java b/src/main/java/rip/athena/client/gui/clickgui/PageManager.java index ea4fe010..a03a3743 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/PageManager.java +++ b/src/main/java/rip/athena/client/gui/clickgui/PageManager.java @@ -34,7 +34,6 @@ public class PageManager { pages.put(Category.WAYPOINTS, new WaypointsPage(mc, menu, parent)); pages.put(Category.PROFILES, new ProfilesPage(mc, menu, parent)); pages.put(Category.COSMETICS, new CosmeticsPage(mc, menu, parent)); - pages.put(Category.GROUPS, new GroupsPage(mc, menu, parent)); } public Map getPages() { diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupBase.java b/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupBase.java deleted file mode 100644 index 8e53b3ab..00000000 --- a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupBase.java +++ /dev/null @@ -1,107 +0,0 @@ -package rip.athena.client.gui.clickgui.components.groups; - -import net.minecraft.client.Minecraft; -import rip.athena.client.font.FontManager; -import rip.athena.client.gui.framework.draw.ButtonState; -import rip.athena.client.gui.framework.draw.DrawType; -import rip.athena.client.gui.clickgui.components.profiles.ProfilesBase; -import rip.athena.client.modules.impl.other.Settings; - -import java.awt.*; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/2/2023 - */ - -public class GroupBase extends ProfilesBase { - protected static int GREEN_COLOR = new Color(2, 222, 9, 255).getRGB(); - protected static int GRAY_COLOR = new Color(164, 164, 164, 255).getRGB(); - - protected String leader; - protected int membersOnline; - protected int totalMembers; - - public GroupBase(String text, String leader, int membersOnline, int totalMembers, int x, int y, int width, int height) { - super(text, x, y, width, height); - - this.leader = leader; - this.membersOnline = membersOnline; - this.totalMembers = totalMembers; - } - - @Override - public void onRender() { - int x = this.getRenderX(); - int y = this.getRenderY(); - int mouseX = parent.getMouseX(); - int width = this.width; - - int lineColor = getColor(DrawType.LINE, ButtonState.NORMAL); - int textColor = getColor(DrawType.TEXT, ButtonState.NORMAL); - int backgroundColor = getColor(DrawType.BACKGROUND, ButtonState.NORMAL); - - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x, y, width, height, backgroundColor); - - drawHorizontalLine(x, y, width + 1, 1, lineColor); - drawVerticalLine(x, y + 1, height - 1, 1, lineColor); - drawHorizontalLine(x, y + height, width + 1, 1, lineColor); - drawVerticalLine(x + width, y + 1, height - 1, 1, lineColor); - - drawShadowUp(x, y, width + 1); - drawShadowLeft(x, y, height + 1); - drawShadowDown(x, y + height + 1, width + 1); - drawShadowRight(x + width + 1, y, height + 1); - - Minecraft.getMinecraft().fontRendererObj.drawString(text, x + width / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth(text) / 2, y + 30, textColor); - - String text = "LEADER: "; - int tWidth = getStringWidth(text); - int yAdd = 50; - int xOffset = 5; - - drawText(text, x + xOffset, y + yAdd, textColor); - drawText(leader, x + xOffset + tWidth, y + yAdd, GRAY_COLOR); - - yAdd += 10; - text = "MEMBERS ONLINE: "; - tWidth = getStringWidth(text); - drawText(text, x + xOffset, y + yAdd, textColor); - drawText(membersOnline + "", x + xOffset + tWidth, y + yAdd, GREEN_COLOR); - - yAdd += 10; - text = "CURRENT MEMBERS: "; - tWidth = getStringWidth(text); - drawText(text, x + xOffset, y + yAdd, textColor); - drawText(totalMembers + "", x + xOffset + tWidth, y + yAdd, GRAY_COLOR); - } - - @Override - public void drawText(String string, int x, int y, int color) { - if(Settings.customGuiFont) { - FontManager.baloo17.drawString(string, x, y, color); - } else { - Minecraft.getMinecraft().fontRendererObj.drawString(string, x, y, color); - } - } - - @Override - public int getStringWidth(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getStringWidth(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string); - } - } - - @Override - public int getStringHeight(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getHeight(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT; - } - } - -} diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupListEntry.java b/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupListEntry.java deleted file mode 100644 index 585b3dee..00000000 --- a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupListEntry.java +++ /dev/null @@ -1,91 +0,0 @@ -package rip.athena.client.gui.clickgui.components.groups; - -import net.minecraft.client.Minecraft; -import rip.athena.client.font.FontManager; -import rip.athena.client.gui.framework.MenuComponent; -import rip.athena.client.gui.framework.MenuPriority; -import rip.athena.client.gui.framework.draw.ButtonState; -import rip.athena.client.gui.framework.draw.DrawType; -import rip.athena.client.gui.clickgui.IngameMenu; -import rip.athena.client.modules.impl.other.Settings; - -import java.awt.*; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/2/2023 - */ - -public class GroupListEntry extends MenuComponent { - protected String text; - - public GroupListEntry(String text, int x, int y, int width, int height) { - super(x, y, width, height); - this.text = text.toUpperCase(); - - setPriority(MenuPriority.LOW); - } - - @Override - public void onInitColors() { - setColor(DrawType.TEXT, ButtonState.NORMAL, new Color(255, 255, 255, IngameMenu.MENU_ALPHA)); - - setColor(DrawType.BACKGROUND, ButtonState.NORMAL, new Color(35, 35, 35, IngameMenu.MENU_ALPHA)); - - setColor(DrawType.LINE, ButtonState.NORMAL, new Color(48, 47, 49, IngameMenu.MENU_ALPHA)); - } - - @Override - public void onRender() { - int x = this.getRenderX(); - int y = this.getRenderY(); - int mouseX = parent.getMouseX(); - int width = this.width; - - int lineColor = getColor(DrawType.LINE, ButtonState.NORMAL); - int textColor = getColor(DrawType.TEXT, ButtonState.NORMAL); - int backgroundColor = getColor(DrawType.BACKGROUND, ButtonState.NORMAL); - - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x, y, width, height, backgroundColor); - - drawHorizontalLine(x, y, width + 1, 1, lineColor); - drawVerticalLine(x, y + 1, height - 1, 1, lineColor); - drawHorizontalLine(x, y + height, width + 1, 1, lineColor); - drawVerticalLine(x + width, y + 1, height - 1, 1, lineColor); - - drawShadowUp(x, y, width + 1); - drawShadowLeft(x, y, height + 1); - drawShadowDown(x, y + height + 1, width + 1); - drawShadowRight(x + width + 1, y, height + 1); - - drawText(text, x + 15, y + height / 2 - getStringHeight(text) / 2, textColor); - } - - @Override - public void drawText(String string, int x, int y, int color) { - if(Settings.customGuiFont) { - FontManager.baloo17.drawString(string, x, y, color); - } else { - Minecraft.getMinecraft().fontRendererObj.drawString(string, x, y, color); - } - } - - @Override - public int getStringWidth(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getStringWidth(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string); - } - } - - @Override - public int getStringHeight(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getHeight(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT; - } - } -} diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupListMiniEntry.java b/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupListMiniEntry.java deleted file mode 100644 index 8936bc95..00000000 --- a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupListMiniEntry.java +++ /dev/null @@ -1,104 +0,0 @@ -package rip.athena.client.gui.clickgui.components.groups; - -import net.minecraft.client.Minecraft; -import rip.athena.client.font.FontManager; -import rip.athena.client.gui.framework.MenuComponent; -import rip.athena.client.gui.framework.MenuPriority; -import rip.athena.client.gui.framework.draw.ButtonState; -import rip.athena.client.gui.framework.draw.DrawType; -import rip.athena.client.gui.clickgui.IngameMenu; -import rip.athena.client.modules.impl.other.Settings; - -import java.awt.*; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/2/2023 - */ - -public class GroupListMiniEntry extends MenuComponent { - protected String name; - protected String value; - - public GroupListMiniEntry(String name, String value, int x, int y, int width, int height) { - super(x, y, width, height); - this.name = name.toUpperCase(); - this.value = value.toUpperCase(); - - setPriority(MenuPriority.MEDIUM); - } - - @Override - public void onInitColors() { - setColor(DrawType.TEXT, ButtonState.NORMAL, new Color(255, 255, 255, IngameMenu.MENU_ALPHA)); - setColor(DrawType.TEXT, ButtonState.POPUP, new Color(112, 112, 113, IngameMenu.MENU_ALPHA)); - - setColor(DrawType.BACKGROUND, ButtonState.NORMAL, new Color(35, 35, 35, IngameMenu.MENU_ALPHA)); - setColor(DrawType.BACKGROUND, ButtonState.POPUP, new Color(17,17, 19, IngameMenu.MENU_ALPHA)); - - setColor(DrawType.LINE, ButtonState.NORMAL, new Color(75, 74, 76, IngameMenu.MENU_ALPHA)); - setColor(DrawType.LINE, ButtonState.POPUP, new Color(48, 48, 50, IngameMenu.MENU_ALPHA)); - } - - @Override - public void onRender() { - int x = this.getRenderX(); - int y = this.getRenderY(); - int mouseX = parent.getMouseX(); - int width = this.width; - - int lineColor = getColor(DrawType.LINE, ButtonState.NORMAL); - int lineValueColor = getColor(DrawType.LINE, ButtonState.POPUP); - int textColor = getColor(DrawType.TEXT, ButtonState.POPUP); - int valueTextColor = getColor(DrawType.TEXT, ButtonState.NORMAL); - int backgroundColor = getColor(DrawType.BACKGROUND, ButtonState.NORMAL); - int valueBackgroundColor = getColor(DrawType.BACKGROUND, ButtonState.POPUP); - - int userWidth = getStringWidth(name) + 9; - - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x, y, userWidth, height, backgroundColor); - - drawHorizontalLine(x, y, userWidth + 1, 1, lineColor); - drawVerticalLine(x, y + 1, height - 1, 1, lineColor); - drawHorizontalLine(x, y + height, userWidth + 1, 1, lineColor); - drawVerticalLine(x + userWidth, y + 1, height - 1, 1, lineColor); - - drawText(name, x + userWidth / 2 - getStringWidth(name) / 2 + 2, y + height / 2 - getStringHeight(name) / 2, textColor); - - int endPos = width - userWidth; - - drawHorizontalLine(x + userWidth + 1, y, endPos, 1, lineValueColor); - drawHorizontalLine(x + userWidth + 1, y + height, endPos, 1, lineValueColor); - drawVerticalLine(x + endPos + userWidth, y + 1, height - 1, 1, lineValueColor); - - drawText(value, x + userWidth + endPos / 2 - getStringWidth(value) / 2, y + height / 2 - getStringHeight(value) / 2, valueTextColor); - } - - @Override - public void drawText(String string, int x, int y, int color) { - if(Settings.customGuiFont) { - FontManager.baloo17.drawString(string, x, y, color); - } else { - Minecraft.getMinecraft().fontRendererObj.drawString(string, x, y, color); - } - } - - @Override - public int getStringWidth(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getStringWidth(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string); - } - } - - @Override - public int getStringHeight(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getHeight(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT; - } - } -} diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupTextButton.java b/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupTextButton.java deleted file mode 100644 index 83b4b858..00000000 --- a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupTextButton.java +++ /dev/null @@ -1,56 +0,0 @@ -package rip.athena.client.gui.clickgui.components.groups; - -import net.minecraft.client.Minecraft; -import rip.athena.client.gui.framework.components.MenuButton; -import rip.athena.client.gui.framework.draw.ButtonState; -import rip.athena.client.gui.framework.draw.DrawType; -import rip.athena.client.gui.clickgui.pages.groups.GroupSubTab; - -import java.awt.*; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/2/2023 - */ - -public class GroupTextButton extends MenuButton { - public GroupTextButton(GroupSubTab category, int x, int y) { - super(category.getText(), x, y); - } - - @Override - public void onInitColors() { - setColor(DrawType.TEXT, ButtonState.NORMAL, new Color(126, 126, 126, 255)); - setColor(DrawType.TEXT, ButtonState.ACTIVE, new Color(235, 235, 235, 255)); - setColor(DrawType.TEXT, ButtonState.HOVER, new Color(160, 160, 160, 255)); - setColor(DrawType.TEXT, ButtonState.HOVERACTIVE, new Color(180, 180, 180, 255)); - setColor(DrawType.TEXT, ButtonState.DISABLED, new Color(255, 255, 255, 255)); - - super.onInitColors(); - } - - @Override - public void onRender() { - int x = this.getRenderX(); - int y = this.getRenderY(); - int width = (this.width == -1 && this.height == -1) ? (getStringWidth(text) + minOffset * 2) : this.width; - int height = (this.width == -1 && this.height == -1) ? (getStringHeight(text) + minOffset * 2) : this.height; - - int backgroundColor = getColor(DrawType.BACKGROUND, lastState); - int textColor = getColor(DrawType.TEXT, lastState); - - Minecraft.getMinecraft().fontRendererObj.drawString(text, x + (width / 2 - getStringWidth(text) / 2), y + height / 2 - (getStringHeight(text) / 2) - 3, textColor); - mouseDown = false; - } - - @Override - public int getStringWidth(String string) { - return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string); - } - - @Override - public int getStringHeight(String string) { - return Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT; - } -} diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupUserListHeader.java b/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupUserListHeader.java deleted file mode 100644 index e978f05d..00000000 --- a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupUserListHeader.java +++ /dev/null @@ -1,89 +0,0 @@ -package rip.athena.client.gui.clickgui.components.groups; - -import net.minecraft.client.Minecraft; -import rip.athena.client.font.FontManager; -import rip.athena.client.gui.framework.MenuComponent; -import rip.athena.client.gui.framework.draw.ButtonState; -import rip.athena.client.gui.framework.draw.DrawType; -import rip.athena.client.gui.clickgui.IngameMenu; -import rip.athena.client.modules.impl.other.Settings; - -import java.awt.*; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/2/2023 - */ - -public class GroupUserListHeader extends MenuComponent { - protected String text; - protected int amount; - - public GroupUserListHeader(String text, int amount, int x, int y, int width, int height) { - super(x, y, width, height); - - this.text = text; - this.amount = amount; - } - - @Override - public void onInitColors() { - setColor(DrawType.TEXT, ButtonState.NORMAL, new Color(255, 255, 255, IngameMenu.MENU_ALPHA)); - setColor(DrawType.TEXT, ButtonState.POPUP, new Color(98, 98, 99, IngameMenu.MENU_ALPHA)); - - setColor(DrawType.BACKGROUND, ButtonState.NORMAL, new Color(35, 35, 35, IngameMenu.MENU_ALPHA)); - - setColor(DrawType.LINE, ButtonState.NORMAL, new Color(15, 14, 16, IngameMenu.MENU_ALPHA)); - } - - @Override - public void onRender() { - if(parent == null) { - return; - } - - int x = this.getRenderX(); - int y = this.getRenderY(); - int mouseX = parent.getMouseX(); - - int lineColor = getColor(DrawType.LINE, ButtonState.NORMAL); - int textColor = getColor(DrawType.TEXT, ButtonState.NORMAL); - int textUsersColor = getColor(DrawType.TEXT, ButtonState.POPUP); - int backgroundColor = getColor(DrawType.BACKGROUND, ButtonState.NORMAL); - - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x, y, width, height, backgroundColor); - - drawHorizontalLine(x, y + height, width + 1, 1, lineColor); - - drawText(text, x + 30, y + height / 2 - getStringHeight(text) / 2, textColor); - drawText(amount + "", x + width - 30, y + height / 2 - getStringHeight(amount + "") / 2, textUsersColor); - } - - @Override - public void drawText(String string, int x, int y, int color) { - if(Settings.customGuiFont) { - FontManager.baloo17.drawString(string, x, y, color); - } else { - Minecraft.getMinecraft().fontRendererObj.drawString(string, x, y, color); - } - } - - @Override - public int getStringWidth(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getStringWidth(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string); - } - } - - @Override - public int getStringHeight(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getHeight(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT; - } - } -} diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupUserListUser.java b/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupUserListUser.java deleted file mode 100644 index c26729a7..00000000 --- a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupUserListUser.java +++ /dev/null @@ -1,94 +0,0 @@ -package rip.athena.client.gui.clickgui.components.groups; - -import net.minecraft.client.Minecraft; -import rip.athena.client.font.FontManager; -import rip.athena.client.gui.framework.MenuComponent; -import rip.athena.client.gui.framework.draw.ButtonState; -import rip.athena.client.gui.framework.draw.DrawType; -import rip.athena.client.gui.clickgui.IngameMenu; -import rip.athena.client.modules.impl.other.Settings; -import rip.athena.client.utils.render.DrawUtils; -import net.minecraft.util.ResourceLocation; - -import java.awt.*; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/2/2023 - */ - -public class GroupUserListUser extends MenuComponent { - protected ResourceLocation location; - protected String name; - protected String rank; - protected boolean online; - - public GroupUserListUser(ResourceLocation location, String name, String rank, boolean online, int x, int y, int width, int height) { - super(x, y, width, height); - - this.location = location; - this.name = name; - this.rank = rank + " | "; - this.online = online; - } - - @Override - public void onInitColors() { - setColor(DrawType.TEXT, ButtonState.NORMAL, new Color(255, 255, 255, IngameMenu.MENU_ALPHA)); - setColor(DrawType.TEXT, ButtonState.POPUP, new Color(98, 98, 99, IngameMenu.MENU_ALPHA)); - - setColor(DrawType.BACKGROUND, ButtonState.NORMAL, new Color(164, 164, 164, IngameMenu.MENU_ALPHA)); - setColor(DrawType.BACKGROUND, ButtonState.POPUP, new Color(0, 250, 6, IngameMenu.MENU_ALPHA)); - } - - @Override - public void onRender() { - int x = this.getRenderX(); - int y = this.getRenderY(); - int mouseX = parent.getMouseX(); - int width = this.width; - - int rankColor = getColor(DrawType.TEXT, ButtonState.NORMAL); - int textColor = getColor(DrawType.TEXT, ButtonState.POPUP); - int color = online ? getColor(DrawType.BACKGROUND, ButtonState.POPUP) : getColor(DrawType.BACKGROUND, ButtonState.NORMAL); - - drawImage(location, x + 10, y + 1, 20, 20); - - drawText(rank, x + 40, y + height / 2 - getStringHeight(rank) / 2, rankColor); - drawText(name, x + 40 + getStringWidth(rank), y + height / 2 - getStringHeight(name) / 2, textColor); - - int roundX = x + width - 25; - int roundY = y + height / 2 - 2; - - DrawUtils.drawRoundedRect(roundX, roundY, roundX + 4, roundY + 4, 3, color); - } - - @Override - public void drawText(String string, int x, int y, int color) { - if(Settings.customGuiFont) { - FontManager.baloo17.drawString(string, x, y, color); - } else { - Minecraft.getMinecraft().fontRendererObj.drawString(string, x, y, color); - } - } - - @Override - public int getStringWidth(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getStringWidth(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string); - } - } - - @Override - public int getStringHeight(String string) { - if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getHeight(string); - } else { - return Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT; - } - } - -} diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupValueList.java b/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupValueList.java deleted file mode 100644 index 002698d8..00000000 --- a/src/main/java/rip/athena/client/gui/clickgui/components/groups/GroupValueList.java +++ /dev/null @@ -1,159 +0,0 @@ -package rip.athena.client.gui.clickgui.components.groups; - -import net.minecraft.client.Minecraft; -import rip.athena.client.gui.framework.MenuPriority; -import rip.athena.client.gui.framework.components.MenuDropdown; -import rip.athena.client.gui.framework.draw.ButtonState; -import rip.athena.client.gui.framework.draw.DrawType; - -import java.awt.*; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/2/2023 - */ - -public class GroupValueList extends MenuDropdown { - protected int cursorWidth = 25; - protected String id; - - public GroupValueList(String id, String[] values, int x, int y, int height) { - super(values, x, y); - this.id = id; - this.height = height; - width += cursorWidth * 2; - width += getStringWidth(id); - } - - @Override - public void onInitColors() { - super.onInitColors(); - - setColor(DrawType.TEXT, ButtonState.NORMAL, new Color(162, 162, 162, 255)); - setColor(DrawType.TEXT, ButtonState.HOVER, new Color(182, 182, 182, 255)); - - setColor(DrawType.BACKGROUND, ButtonState.NORMAL, new Color(35, 35, 35, 255)); - setColor(DrawType.BACKGROUND, ButtonState.HOVER, new Color(24, 24, 27, 255)); - - setColor(DrawType.LINE, ButtonState.NORMAL, new Color(46, 46, 48, 255)); - setColor(DrawType.LINE, ButtonState.HOVER, new Color(53, 53, 55, 255)); - setColor(DrawType.LINE, ButtonState.POPUP, new Color(120, 120, 120, 255)); - } - - @Override - public void onPreSort() { - if(parent == null) { - return; - } - - int x = this.getRenderX(); - int y = this.getRenderY(); - int width = this.width + textOffset; - int mouseX = parent.getMouseX(); - int mouseY = parent.getMouseY(); - - ButtonState state = ButtonState.NORMAL; - - if (!disabled) { - boolean inRange = false; - - if (mouseX >= x && mouseX <= x + width + arrowOffset - 1) { - if (mouseY >= y && mouseY <= y + height + 1) { - state = ButtonState.HOVER; - - if(mouseDown) { - if(mouseX < x + cursorWidth - 1) { - if(index - 1 >= 0) { - index--; - } else { - index = values.length - 1; - } - - onAction(); - } else if(mouseX > x + width - cursorWidth - 1) { - if(index + 1 < values.length) { - index++; - } else { - index = 0; - } - - onAction(); - } - } - } - } - } else { - state = ButtonState.DISABLED; - } - - if(state == ButtonState.HOVER || state == ButtonState.HOVERACTIVE) { - setPriority(MenuPriority.HIGH); - } else { - setPriority(MenuPriority.MEDIUM); - } - - lastState = state; - } - - @Override - public void onRender() { - int x = this.getRenderX(); - int y = this.getRenderY(); - int width = this.width + textOffset + arrowOffset + 1; - int height = this.height; - - int popupColor = getColor(DrawType.LINE, ButtonState.POPUP); - int backgroundColor = getColor(DrawType.BACKGROUND, lastState); - int lineColor = getColor(DrawType.LINE, ButtonState.NORMAL); - int textColor = getColor(DrawType.TEXT, ButtonState.NORMAL); - - drawHorizontalLine(x, y, width + 1, 1, lineColor); - drawVerticalLine(x, y + 1, height - 1, 1, lineColor); - drawHorizontalLine(x, y + height, width + 1, 1, lineColor); - drawVerticalLine(x + width, y + 1, height - 1, 1, lineColor); - - int mouseX = parent.getMouseX(); - int mouseY = parent.getMouseY(); - int defBg = getColor(DrawType.BACKGROUND, ButtonState.NORMAL); - int cache = backgroundColor; - - if(mouseX > x + cursorWidth - 1) { - backgroundColor = defBg; - } - - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x, y, cursorWidth, height + 1, popupColor); - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x + 1, y + 1, cursorWidth - 2, height - 1, backgroundColor); - drawText("-", x + 3 + (cursorWidth / 2) - getStringWidth("-") / 2, y + height / 2 - getStringHeight("-") / 2, textColor); - - if(mouseX < x + width - cursorWidth - 1) { - backgroundColor = defBg; - } else { - backgroundColor = cache; - } - - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x + width - cursorWidth, y, cursorWidth, height + 1, popupColor); - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x + width - cursorWidth + 1, y + 1, cursorWidth - 2, height - 1, backgroundColor); - drawText("+", x + width - cursorWidth + 3 + (cursorWidth / 2) - getStringWidth("+") / 2, y + height / 2 - getStringHeight("+") / 2, textColor); - - String text = id + " | " + values[index].toUpperCase(); - drawText(text, x + width / 2 - getStringWidth(text) / 2, y + height / 2 - getStringHeight(text) / 2, textColor); - - mouseDown = false; - } - - @Override - public void drawText(String text, int x, int y, int color) { - Minecraft.getMinecraft().fontRendererObj.drawString(text, x, y, color); - } - - @Override - public int getStringWidth(String string) { - return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string); - } - - @Override - public int getStringHeight(String string) { - return Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT; - } -} diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/macros/FlipButton.java b/src/main/java/rip/athena/client/gui/clickgui/components/macros/FlipButton.java index 334bf545..b34d7626 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/macros/FlipButton.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/macros/FlipButton.java @@ -1,6 +1,7 @@ package rip.athena.client.gui.clickgui.components.macros; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; import rip.athena.client.font.FontManager; import rip.athena.client.gui.framework.components.MenuButton; import rip.athena.client.gui.framework.draw.ButtonState; @@ -70,7 +71,9 @@ public class FlipButton extends MenuButton { //drawVerticalLine(x, y + 1, height - 1, 1, linePopupColor); //drawHorizontalLine(x, y + height, width + 1, 1, lineColor); //drawVerticalLine(x + width, y + 1, height - 1, 1, linePopupColor); - + + GlStateManager.color(1,1,1); + x += 10; width -= 20; diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroBase.java b/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroBase.java index 99b49dc5..7bbb00c5 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroBase.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroBase.java @@ -1,6 +1,7 @@ package rip.athena.client.gui.clickgui.components.macros; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; import rip.athena.client.font.FontManager; import rip.athena.client.gui.framework.MenuComponent; import rip.athena.client.gui.framework.MenuPriority; @@ -9,6 +10,7 @@ import rip.athena.client.gui.framework.draw.DrawType; import rip.athena.client.gui.clickgui.IngameMenu; import rip.athena.client.modules.impl.other.Settings; import rip.athena.client.utils.render.DrawUtils; +import rip.athena.client.utils.render.RoundedUtils; import java.awt.*; @@ -65,8 +67,9 @@ public class MacroBase extends MenuComponent { int backgroundColor = getColor(DrawType.BACKGROUND, ButtonState.NORMAL); //rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x, y, width, height, backgroundColor); + GlStateManager.color(1,1,1); - DrawUtils.drawRoundedRect(x, y, x + width, y + height, 4.0f, backgroundColor); + RoundedUtils.drawRoundedRect(x, y, x + width, y + height, 12.0f, backgroundColor); /*drawHorizontalLine(x, y, width + 1, 1, lineColor); drawVerticalLine(x, y + 1, height - 1, 1, lineColor); @@ -80,10 +83,9 @@ public class MacroBase extends MenuComponent { //drawHorizontalLine(x, y, textWidth + 1, 1, linePopupColor); //drawVerticalLine(x, y + 1, height - 1, 1, linePopupColor); - //drawHorizontalLine(x, y + height, textWidth + 1, 1, linePopupColor); - drawVerticalLine(x + textWidth, y + 1, height - 1, 1, linePopupColor); + //drawHorizontalLine(x, y + height, textWidth + + drawText(text, x + spacing, y + height / 2 - getStringHeight(text) / 2, -1); - drawText(text, x + spacing, y + height / 2 - getStringHeight(text) / 2, textColor); } @Override diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroButton.java b/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroButton.java index f44db6d8..409619f5 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroButton.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroButton.java @@ -1,6 +1,7 @@ package rip.athena.client.gui.clickgui.components.macros; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; import rip.athena.client.font.FontManager; import rip.athena.client.gui.framework.components.MenuButton; import rip.athena.client.gui.framework.draw.ButtonState; @@ -57,6 +58,7 @@ public class MacroButton extends MenuButton { int lineColor = getColor(DrawType.LINE, lastState); int textColor = getColor(DrawType.TEXT, lastState); + GlStateManager.color(1,1,1); DrawUtils.drawRoundedRect(x, y, x + width, y + height, 4.0f, lineColor); DrawUtils.drawRoundedRect(x + 1, y + 1, x + width - 1, y + height - 1, 4.0f, new Color(35, 35, 35, 255).getRGB()); diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroSlimTextField.java b/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroSlimTextField.java index c57333b6..1ef8d375 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroSlimTextField.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/macros/MacroSlimTextField.java @@ -1,6 +1,7 @@ package rip.athena.client.gui.clickgui.components.macros; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; import rip.athena.client.font.FontManager; import rip.athena.client.gui.framework.TextPattern; import rip.athena.client.gui.framework.draw.ButtonState; @@ -64,6 +65,8 @@ public class MacroSlimTextField extends SearchTextfield { int lineColor = getColor(DrawType.LINE, lastState); int textColor = getColor(DrawType.TEXT, lastState); + GlStateManager.color(1,1,1); + //rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x, y + height - 3, width, 3, lineColor); String textToDraw = text; diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/macros/SimpleTextButton.java b/src/main/java/rip/athena/client/gui/clickgui/components/macros/SimpleTextButton.java index bab4c190..0a686906 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/macros/SimpleTextButton.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/macros/SimpleTextButton.java @@ -1,6 +1,7 @@ package rip.athena.client.gui.clickgui.components.macros; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; import rip.athena.client.font.FontManager; import rip.athena.client.gui.framework.components.MenuButton; import rip.athena.client.gui.framework.draw.ButtonState; @@ -59,6 +60,8 @@ public class SimpleTextButton extends MenuButton { int textColor = getColor(DrawType.TEXT, lastState); int linePopupColor = getColor(DrawType.LINE, ButtonState.POPUP); + GlStateManager.color(1,1,1); + //rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x, y, width, height, backgroundColor); DrawUtils.drawRoundedRect(x - 1, y - 1, x + width + 1, y + height + 1, 4.0f, lineColor); DrawUtils.drawRoundedRect(x, y, x + width, y + height, 4.0f, backgroundColor); diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/mods/CategoryButton.java b/src/main/java/rip/athena/client/gui/clickgui/components/mods/CategoryButton.java index 9d2f20e4..3256a38d 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/mods/CategoryButton.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/mods/CategoryButton.java @@ -62,7 +62,7 @@ public class CategoryButton extends MenuButton { RoundedUtils.drawRoundedRect(x + 30, y, x + width - 20, y + height, 12, new Color(25,25,25,255).getRGB()); } if(Settings.customGuiFont) { - FontManager.baloo17.drawString(text, x + 70, y + height / 2 - (getStringHeight(text) / 2), textColor); + rip.athena.client.utils.font.FontManager.getNunito(20).drawString(text, x + 70, y + height / 2 - (getStringHeight(text) / 2) + 2, textColor); } else { Minecraft.getMinecraft().fontRendererObj.drawString(text, x + (width / 2 - getStringWidth(text) / 2), y + height / 2 - (getStringHeight(text) / 2), textColor); } @@ -84,7 +84,7 @@ public class CategoryButton extends MenuButton { @Override public int getStringWidth(String string) { if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getStringWidth(string); + return (int) rip.athena.client.utils.font.FontManager.getNunito(20).width(string); } else { return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string); } @@ -93,7 +93,7 @@ public class CategoryButton extends MenuButton { @Override public int getStringHeight(String string) { if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getHeight(string); + return (int) rip.athena.client.utils.font.FontManager.getNunito(20).height(); } else { return Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT; } diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/mods/FeatureText.java b/src/main/java/rip/athena/client/gui/clickgui/components/mods/FeatureText.java index efb7477a..7b07575f 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/mods/FeatureText.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/mods/FeatureText.java @@ -37,7 +37,7 @@ public class FeatureText extends MenuLabel { @Override public void drawText(String text, int x, int y, int color) { if(Settings.customGuiFont) { - FontManager.baloo17.drawString(text, x, y, color); + rip.athena.client.utils.font.FontManager.getNunito(30).drawString(text, x, y, color); } else { Minecraft.getMinecraft().fontRendererObj.drawString(text, x, y, color); } diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModCategoryButton.java b/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModCategoryButton.java index 67768264..58ea9966 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModCategoryButton.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModCategoryButton.java @@ -71,7 +71,7 @@ public class ModCategoryButton extends MenuButton { } if(Settings.customGuiFont) { - FontManager.baloo17.drawString(text, x + (width / 2 - getStringWidth(text) / 2), y + height / 2 - (getStringHeight(text) / 2) - 3, textColor); + rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString(text, x + (width / 2 - getStringWidth(text) / 2), y + height / 2 - (getStringHeight(text) / 2) - 3, textColor); } else { Minecraft.getMinecraft().fontRendererObj.drawString(text, x + (width / 2 - getStringWidth(text) / 2), y + height / 2 - (getStringHeight(text) / 2) - 3, textColor); } @@ -95,7 +95,7 @@ public class ModCategoryButton extends MenuButton { @Override public int getStringWidth(String string) { if(Settings.customGuiFont) { - return (int) FontManager.baloo17.getStringWidth(string); + return (int) rip.athena.client.utils.font.FontManager.getProductSansRegular(20).width(string); } else { return Minecraft.getMinecraft().fontRendererObj.getStringWidth(string); } diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModScrollPane.java b/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModScrollPane.java index 2925dab8..82766a97 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModScrollPane.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModScrollPane.java @@ -10,6 +10,7 @@ import rip.athena.client.gui.framework.draw.DrawType; import net.minecraft.client.Minecraft; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; +import rip.athena.client.utils.render.DrawUtils; import java.awt.*; import java.util.Collections; @@ -55,7 +56,7 @@ public class ModScrollPane extends MenuScrollPane { final int mouseX = parent.getMouseX(); final int mouseY = parent.getMouseY(); int height = this.height; - + Collections.sort(components, (a, b) -> Integer.compare(a.getPriority().getPriority(), b.getPriority().getPriority())); int maxY = 0; diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModuleBox.java b/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModuleBox.java index cef32c2d..e721c437 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModuleBox.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/mods/ModuleBox.java @@ -179,7 +179,7 @@ public class ModuleBox extends MenuComponent { int defaultColor = getColor(DrawType.BACKGROUND, ButtonState.NORMAL); int drawColor = defaultColor; - GlStateManager.color(1, 1, 1); + GlStateManager.color(1,1,1); RoundedUtils.drawRoundedRect(x, y, x + width, y + height, 26.0f, new Color(50,50,50,255).getRGB()); RoundedUtils.drawRoundedRect(x + 1, y + 1, x + width - 1, y + height - 1, 26.0f, new Color(35,35,35,255).getRGB()); @@ -188,7 +188,8 @@ public class ModuleBox extends MenuComponent { for (String line : lines) { if(Settings.customGuiFont) { - FontManager.baloo30.drawString(line, x + (float) width / 2 - FontManager.baloo30.getStringWidth(line) / 2, yPos, textColor); + rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString(line, x + (float) width / 2 - rip.athena.client.utils.font.FontManager.getProductSansRegular(30).width(line) / 2, yPos, textColor); + //FontManager.baloo30.drawString(line, x + (float) width / 2 - FontManager.baloo30.getStringWidth(line) / 2, yPos, textColor); yPos += FontManager.baloo30.getHeight(line); } else { Minecraft.getMinecraft().fontRendererObj.drawString(line, (int) (x + (float) width / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth(line) / 2), yPos, textColor); @@ -213,7 +214,8 @@ public class ModuleBox extends MenuComponent { String text = module.isToggled() ? "ENABLED" : "DISABLED"; if(Settings.customGuiFont) { - FontManager.baloo17.drawString(text, x + (float) width / 2 - FontManager.baloo17.getStringWidth(text) / 2, y + height - 10 - 15, -1); + rip.athena.client.utils.font.FontManager.getNunito(20).drawString(text, x + (float) width / 2 - FontManager.baloo17.getStringWidth(text) / 2, y + height - 10 - 15, -1); + //FontManager.baloo17.drawString(text, x + (float) width / 2 - FontManager.baloo17.getStringWidth(text) / 2, y + height - 10 - 15, -1); } else { Minecraft.getMinecraft().fontRendererObj.drawString(text, (int) (x + (float) width / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth(text) / 2), y + height - 10 - 15, -1); } @@ -232,7 +234,7 @@ public class ModuleBox extends MenuComponent { drawShadowRight(x + width - 14 - 17 - 4 + 25, y + 14 - 4, 25);*/ //rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x + width - 14 - 17 - 4, y + 14 - 4, 25, 25, COG_BORDER); - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x + width - 14 - 17 - 3, y + 14 - 3, 23, 23, drawColor); + //rip.athena.client.gui.framework.draw.DrawImpl.drawRect(x + width - 14 - 17 - 3, y + 14 - 3, 23, 23, drawColor); drawImage(new ResourceLocation("Athena/gui/menu/settings.png"), x + width - 14 - 17, y + 14, 17, 17); } diff --git a/src/main/java/rip/athena/client/gui/clickgui/components/mods/SearchTextfield.java b/src/main/java/rip/athena/client/gui/clickgui/components/mods/SearchTextfield.java index 857bc4c7..462f8c39 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/components/mods/SearchTextfield.java +++ b/src/main/java/rip/athena/client/gui/clickgui/components/mods/SearchTextfield.java @@ -161,7 +161,7 @@ public class SearchTextfield extends MenuTextField { } if(Settings.customGuiFont) { - FontManager.baloo17.drawString(textToDraw, x + 10 + minOffset + xAdd, y + (float) height / 2 - (float) (int) FontManager.baloo17.getHeight(textToDraw) / 2, textColor); + rip.athena.client.utils.font.FontManager.getNunito(20).drawString(textToDraw, x + 10 + minOffset + xAdd, y + 2 + (float) height / 2 - (float) (int) rip.athena.client.utils.font.FontManager.getNunito(20).height() / 2, textColor); } else { Minecraft.getMinecraft().fontRendererObj.drawString(textToDraw, x + 10 + minOffset + xAdd, (int) (y + (float) height / 2 - (float) (int) Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT / 2), textColor); } diff --git a/src/main/java/rip/athena/client/gui/clickgui/pages/GroupsPage.java b/src/main/java/rip/athena/client/gui/clickgui/pages/GroupsPage.java deleted file mode 100644 index ac9a326d..00000000 --- a/src/main/java/rip/athena/client/gui/clickgui/pages/GroupsPage.java +++ /dev/null @@ -1,915 +0,0 @@ -package rip.athena.client.gui.clickgui.pages; - -import rip.athena.client.font.FontManager; -import rip.athena.client.gui.framework.Menu; -import rip.athena.client.gui.framework.MenuComponent; -import rip.athena.client.gui.framework.TextPattern; -import rip.athena.client.gui.clickgui.IngameMenu; -import rip.athena.client.gui.clickgui.Page; -import rip.athena.client.gui.clickgui.components.cosmetics.CosmeticGenericButton; -import rip.athena.client.gui.clickgui.components.groups.*; -import rip.athena.client.gui.clickgui.components.macros.MacroButton; -import rip.athena.client.gui.clickgui.components.macros.MacroTextfield; -import rip.athena.client.gui.clickgui.components.mods.*; -import rip.athena.client.gui.clickgui.pages.groups.GroupSubTab; - -import net.minecraft.client.Minecraft; -import net.minecraft.util.ResourceLocation; -import rip.athena.client.modules.impl.other.Settings; -import rip.athena.client.utils.render.AssetUtils; - -import java.awt.*; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/2/2023 - */ - -public class GroupsPage extends Page { - private final static int SUB_TAB_COLOR = new Color(35, 35, 35, 255).getRGB(); - - private final static ResourceLocation USER_ICON = AssetUtils.getResource("gui", "user.png"); - - private MacroTextfield nameNew; - private MacroTextfield nameJoin; - private MenuModColorPicker color; - private MacroButton add; - private MacroButton join; - private ModScrollPane scrollPane; - private ModScrollPane scrollPaneUsers; - - private GroupTextButton settings; - private GroupTextButton schematics; - private GroupTextButton waypoints; - private GroupTextButton admin; - - //private GroupData currentGroup; - - public GroupSubTab subTab; - - public GroupsPage(Minecraft mc, Menu menu, IngameMenu parent) { - super(mc, menu, parent); - } - - @Override - public void onInit() { - int width = 300; - int x = menu.getWidth() - width + 20; - int y = 59; - - int compWidth = width - 6 - 20 * 2; - - nameNew = new MacroTextfield(TextPattern.TEXT_AND_NUMBERS, x, y + 85, compWidth, 22, "...") ; - nameJoin = new MacroTextfield(TextPattern.TEXT_AND_NUMBERS, x, y + 300, compWidth, 22, "..."); - - int acceptWidth = compWidth - 40; - - add = new MacroButton("CREATE", x - 21 + width / 2 - acceptWidth / 2, y + 180, acceptWidth, 22, true) { - @Override - public void onAction() { - setActive(false); - - if(nameNew.getText().isEmpty()) { - return; - } - - //NetworkingClient.sendLine("CreateGroup", nameNew.getText(), color.getColor().getRGB() + ""); - - populateScrollPane(); - } - }; - - color = new MenuModColorPicker(x - 1, y + 145, compWidth + 6, 22, Color.WHITE.getRGB()); - - join = new MacroButton("JOIN", x - 21 + width / 2 - acceptWidth / 2, y + 340, acceptWidth, 20, true) { - @Override - public void onAction() { - setActive(false); - - if(nameJoin.getText().isEmpty()) { - return; - } - - //NetworkingClient.sendLine("JoinGroup", nameJoin.getText()); - - nameJoin.setText(""); - - populateScrollPane(); - } - }; - - int xPos = 165; - int spacing = 20; - - settings = new GroupTextButton(GroupSubTab.SETTINGS, xPos, y + 30 / 2 - getStringHeight(GroupSubTab.SETTINGS.getText()) / 2) { - @Override - public void onAction() { - setActive(false); - - subTab = GroupSubTab.SETTINGS; - setupGroupView(); - } - }; - - xPos += Minecraft.getMinecraft().fontRendererObj.getStringWidth(GroupSubTab.SETTINGS.getText()) + spacing; - - schematics = new GroupTextButton(GroupSubTab.SCHEMATICS, xPos, y + 30 / 2 - getStringHeight(GroupSubTab.SCHEMATICS.getText()) / 2) { - @Override - public void onAction() { - setActive(false); - - subTab = GroupSubTab.SCHEMATICS; - setupGroupView(); - } - }; - - xPos += Minecraft.getMinecraft().fontRendererObj.getStringWidth(GroupSubTab.SCHEMATICS.getText()) + spacing; - - waypoints = new GroupTextButton(GroupSubTab.WAYPOINTS, xPos, y + 30 / 2 - getStringHeight(GroupSubTab.WAYPOINTS.getText()) / 2) { - @Override - public void onAction() { - setActive(false); - - subTab = GroupSubTab.WAYPOINTS; - setupGroupView(); - } - }; - - xPos += Minecraft.getMinecraft().fontRendererObj.getStringWidth(GroupSubTab.WAYPOINTS.getText()) + spacing; - - admin = new GroupTextButton(GroupSubTab.ADMIN, xPos, y + 30 / 2 - getStringHeight(GroupSubTab.ADMIN.getText()) / 2) { - @Override - public void onAction() { - setActive(false); - - subTab = GroupSubTab.ADMIN; - setupGroupView(); - } - }; - - scrollPane = new ModScrollPane(31, 150, menu.getWidth() - width - 31 * 2, menu.getHeight() - 151, false); - scrollPaneUsers = new ModScrollPane(menu.getWidth() - width, 58 + 31, width - 1, menu.getHeight() - 58 - 31, false); - - populateScrollPane(); - } - - public void setupGroupView() { - scrollPane.setY(150); - scrollPane.setHeight(menu.getHeight() - 151); - - scrollPaneUsers.getComponents().clear(); - scrollPane.getComponents().clear(); - - if(menu.getComponents().contains(nameNew)) { - menu.getComponents().remove(nameNew); - menu.getComponents().remove(color); - menu.getComponents().remove(nameJoin); - menu.getComponents().remove(add); - menu.getComponents().remove(join); - } - - if(!menu.getComponents().contains(settings)) { - menu.addComponent(settings); - menu.addComponent(schematics); - menu.addComponent(waypoints); - - /*if(currentGroup != null && currentGroup.getOwner().equals(mc.thePlayer.getUniqueID())) { - menu.addComponent(admin); - }*/ - } - - for(MenuComponent component : menu.getComponents()) { - if(component instanceof GroupTextButton) { - GroupTextButton button = (GroupTextButton) component; - button.setActive(button.getText().equalsIgnoreCase(subTab.getText())); - } - } - - int y = 5; - int online = 0; - - /*for(UserInfo user : currentGroup.getUsers()) { - if(user.getUUID().equals(currentGroup.getOwner())) { - online++; - } - }*/ - - y += addHeader("ADMINS", online, y); - - /*for(UserInfo user : currentGroup.getUsers()) { - if(user.getUUID().equals(currentGroup.getOwner())) { - y += addUser(user.getName(), "OWNER", user.isOnline(), y); - } - }*/ - - online = 0; - - /*for(UserInfo user : currentGroup.getUsers()) { - if(user.getUUID().equals(currentGroup.getOwner())) { - continue; - } - - online++; - }*/ - - y += addHeader("MEMBERS", online, y); - - /*for(UserInfo user : currentGroup.getUsers()) { - if(user.getUUID().equals(currentGroup.getOwner())) { - continue; - } - - y += addUser(user.getName(), "MEMBER", user.isOnline(), y); - }*/ - - switch(subTab) { - case ADMIN: - initAdminPage(); - break; - - case SCHEMATICS: - initSchematicsPage(); - break; - - case SETTINGS: - initSettingsPage(); - break; - - case WAYPOINTS: - initWaypointsPage(); - break; - } - } - - private void initAdminPage() { - int x = 5; - int y = 5; - int width = scrollPane.getWidth() - 10; - int height = 25; - int spacing = 10; - - scrollPane.addComponent(new CosmeticGenericButton("CLICK TO COPY INVITE CODE", x, y, width, height, true) { - @Override - public void onAction() { - setActive(false); - - //IngameMenu.setClipboardString(currentGroup.getInviteCode()); - } - }); - - y += height + spacing; - - scrollPane.addComponent(new CosmeticGenericButton("REFRESH INVITE CODE", x, y, width, height, true) { - @Override - public void onAction() { - setActive(false); - - //NetworkingClient.sendLine("RefreshInviteCode", currentGroup.getId() + ""); - } - }); - - y += height + spacing * 2; - - scrollPane.addComponent(new FeatureText("DISCORD BOT", x, y)); - - y += spacing * 2; - - scrollPane.addComponent(new CosmeticGenericButton("CLICK HERE TO INVITE THE BOT", x, y, width, height, true) { - @Override - public void onAction() { - setActive(false); - - if(Desktop.isDesktopSupported()) { - try { - Desktop.getDesktop().browse(new URI("https://discord.com/oauth2/authorize?client_id=824093412084940881&scope=bot&permissions=3072")); - } catch (IOException e) { - e.printStackTrace(); - } catch (URISyntaxException e) { - e.printStackTrace(); - } - } - } - }); - - y += spacing + height; - - scrollPane.addComponent(new FeatureText("DISCORD CODE | CLICK BOX TO COPY", x, y)); - - y += spacing * 2; - - scrollPane.addComponent(new CosmeticGenericButton("inv code"/*currentGroup.getInviteCode()*/, x, y, width, height, true) { - @Override - public void onAction() { - setActive(false); - - //IngameMenu.setClipboardString(currentGroup.GetDiscordUnique()); - } - }); - - y += height + spacing * 2; - - scrollPane.addComponent(new FeatureText("WALL CHECKER", x, y)); - - y += spacing * 2; - - GroupValueList checkTime = new GroupValueList("CHECK TIME", new String[] {"check time"/*currentGroup.checktime*/ + "", "1", "0"}, x, y, height) { - @Override - public void onAction() { - if(getValue().equalsIgnoreCase("1")) { - //currentGroup.checktime++; - //NetworkingClient.sendLine("CheckTime", currentGroup.getId() + "", "0"); - } else if(getValue().equalsIgnoreCase("0")) { - //currentGroup.checktime--; - //NetworkingClient.sendLine("CheckTime", currentGroup.getId() + "", "1"); - } - } - }; - - scrollPane.addComponent(checkTime); - - GroupValueList checkDelay = new GroupValueList("CHECK DELAY", new String[] {"check delay"/*currentGroup.checkdelay*/ + "", "1", "0"}, x + 250, y, height) { - @Override - public void onAction() { - if(getValue().equalsIgnoreCase("1")) { - //currentGroup.checkdelay++; - //NetworkingClient.sendLine("CheckDelay", currentGroup.getId() + "", "0"); - } else if(getValue().equalsIgnoreCase("0")) { - //currentGroup.checkdelay--; - //NetworkingClient.sendLine("CheckDelay", currentGroup.getId() + "", "1"); - } - } - }; - - scrollPane.addComponent(checkDelay); - - scrollPane.addComponent(new CosmeticGenericButton("CHECK", width - 150, y, 150, height, true) { - @Override - public void onAction() { - setActive(false); - - //NetworkingClient.sendLine("WallChecker", currentGroup.getId() + "", currentGroup.wallChecker ? "0" : "1"); - } - }); - } - - private void initSchematicsPage() { - int x = 5; - int y = 5; - int width = scrollPane.getWidth() - 10; - int height = 25; - - /*for(SchemShareRequest schem : SchematicaList.getSchematics()) { - scrollPane.addComponent(new GroupListEntry(schem.getName(), x, y, width, height)); - scrollPane.addComponent(new ProfilesBlueButton("LOAD", x + width - 180, y + 5, 80, 15) { - @Override - public void onAction() { - setActive(false); - - schem.accept(); - } - }); - - scrollPane.addComponent(new MacroButton("DELETE", x + width - 90, y + 5, 80, 15, false) { - @Override - public void onAction() { - setActive(false); - - NetworkingClient.sendLine("RemoveSchematica", schem.getId() + ""); - populateScrollPane(); - } - }); - - y += height; - }*/ - } - - private void initWaypointsPage() { - int x = 5; - int y = 5; - int width = scrollPane.getWidth() - 10; - int height = 35; - - /*for(WaypointMarker waypoint : WaypointList.getWaypoints()) { - if(waypoint.getGroup() != currentGroup.getId()) { - continue; - } - - JSONObject obj = new JSONObject(waypoint.getMarker()); - String name = waypoint.getName(); - double xPos = obj.getDouble("x"); - double yPos = obj.getDouble("y"); - double zPos = obj.getDouble("z"); - - scrollPane.addComponent(new GroupListEntry(waypoint.getName(), x, y, width, height)); - - scrollPane.addComponent(new GroupListMiniEntry("X", (int)xPos + "", x + 150, y + 6, 90, 23)); - scrollPane.addComponent(new GroupListMiniEntry("Y", (int)yPos + "", x + 150 + 90 + 10, y + 6, 90, 23)); - scrollPane.addComponent(new GroupListMiniEntry("Z", (int)zPos + "", x + 150 + 90 * 2 + 10 * 2, y + 6, 90, 23)); - - scrollPane.addComponent(new MacroButton("DELETE", x + width - 90, y + 5, 80, 24, false) { - @Override - public void onAction() { - NetworkingClient.sendLine("RemoveWaypoint", waypoint.getId() + ""); - } - }); - - y += height; - }*/ - } - - private void initSettingsPage() { - /*GroupSetting settings = GroupList.getSettings(currentGroup.getName()); - - int xText = 15; - int xCheckbox = 350; - int y = 5; - int ySpacing = 20; - - //Ping - MenuModCheckbox checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setPing(isChecked()); - } - }; - - checkbox.setChecked(settings.isPing()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("PING", xText, y)); - - y += ySpacing; - - //Waypoints - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setWaypoints(isChecked()); - } - }; - - checkbox.setChecked(settings.isWaypoints()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("WAYPOINTS", xText, y)); - - y += ySpacing; - - //Chat messages - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setChatMessages(isChecked()); - } - }; - - checkbox.setChecked(settings.isChatMessages()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("CHAT MESSAGES", xText, y)); - - y += ySpacing; - - //Sign in noti - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setSignInNoti(isChecked()); - } - }; - - checkbox.setChecked(settings.isSignInNoti()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("SIGN IN/SIGN OUT MESSAGES", xText, y)); - - y += ySpacing; - - //Highlight - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setHighlight(isChecked()); - } - }; - - checkbox.setChecked(settings.isHighlight()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("HIGHLIGHT PLAYERS", xText, y)); - - y += ySpacing; - - //Hide - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setHideNametags(isChecked()); - } - }; - - checkbox.setChecked(settings.isHideNametags()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("HIDE NAMETAGS", xText, y)); - - y += ySpacing; - - //Show locations - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setShowPlayerLoctions(isChecked()); - } - }; - - checkbox.setChecked(settings.isShowPlayerLocations()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("SHOW PLAYER LOCATIONS", xText, y)); - - y += ySpacing; - - //Show mapwriter locations - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setMapWriterLocations(isChecked()); - } - }; - - checkbox.setChecked(settings.isShowMapWriterLocations()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("SHOW MAPWRITER LOCATIONS", xText, y)); - - y += ySpacing; - - //Share schematics - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setShareSchem(isChecked()); - } - }; - - checkbox.setChecked(settings.isShareSchem()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("SHARE SCHEMATICS", xText, y)); - - y += ySpacing; - - //Patchcrumbs - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setPatchcrumbs(isChecked()); - } - }; - - checkbox.setChecked(settings.isPatchcrumbs()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("PATCHCRUMBS", xText, y)); - - y += ySpacing; - - //Share map data - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setShareMapData(isChecked()); - } - }; - - checkbox.setChecked(settings.isShareMapData()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("SHARE MAP DATA", xText, y)); - - y += ySpacing; - - //Share map data - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setShareView(isChecked()); - } - }; - - checkbox.setChecked(settings.isShareView()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("SHARE TEAM VIEW", xText, y)); - - y += ySpacing; - - //Wall checker - checkbox = new MenuModCheckbox(xCheckbox, y, 15, 15) { - @Override - public void onAction() { - settings.setwallChecker(isChecked()); - } - }; - - checkbox.setChecked(settings.iswallChecker()); - scrollPane.addComponent(checkbox); - scrollPane.addComponent(new FeatureText("WALL CHECKER", xText, y)); - - scrollPane.addComponent(new FeatureText("CREATE WAYPOINT", xCheckbox + 15 + 30, 5)); - - MacroTextfield field = new MacroTextfield(TextPattern.TEXT_AND_NUMBERS, xCheckbox + 15 + 30, 25, 260, 20, "ENTER WAYPOINT NAME"); - - scrollPane.addComponent(field); - - scrollPane.addComponent(new CosmeticGenericButton("CREATE", (xCheckbox + 15 + 30) + 55, 55, 150, 20, true) { - @Override - public void onAction() { - setActive(false); - String text = field.getText(); - - JSONObject markerJSON = new JSONObject(); - markerJSON.put("x", mc.thePlayer.posX); - markerJSON.put("y", mc.thePlayer.posY); - markerJSON.put("z", mc.thePlayer.posZ); - markerJSON.put("dimension", mc.thePlayer.dimension); - markerJSON.put("server", NetworkUtils.getServer()); - - markerJSON.put("color", currentGroup.getColor()); - - NetworkingClient.sendLine("NewWaypoint", text, markerJSON.toString(), currentGroup.getId() + ""); - - populateScrollPane(); - } - }); - - scrollPane.addComponent(new FeatureText("SCHEMATICS", xCheckbox + 15 + 30, 100)); - - scrollPane.addComponent(new MacroButton("SAVE CURRENT SCHEMATIC", xCheckbox + 15 + 30, 120, 260, 20, true) { - @Override - public void onAction() { - setActive(false); - - - if(ClientProxy.schematic == null || ClientProxy.loadedFile == null) { - Athena.INSTANCE.notificationManager.showNotification("You do not have a schematic loaded.", Color.RED); - } else { - SchematicaList.shareSchem(currentGroup.getId()); - } - - populateScrollPane(); - } - }); - - scrollPane.addComponent(new MacroButton("SHARE CURRENT SCHEMATIC", xCheckbox + 15 + 30, 120 + 20 + 10, 260, 20, true) { - @Override - public void onAction() { - setActive(false); - - SchemShare.shareSchem(currentGroup.getId()); - - populateScrollPane(); - } - });*/ - } - - private int addUser(String user, String rank, boolean online, int y) { - GroupUserListUser component = new GroupUserListUser(USER_ICON, user, rank, online, 5, y, scrollPaneUsers.getWidth() - 10, 20); - scrollPaneUsers.addComponent(component); - return component.getHeight(); - } - - private int addHeader(String header, int amount, int y) { - GroupUserListHeader component = new GroupUserListHeader(header, amount, 0, y, scrollPaneUsers.getWidth(), 40); - scrollPaneUsers.addComponent(component); - return component.getHeight(); - } - - public void populateScrollPane() { - if(scrollPane == null) { - return; - } - - scrollPaneUsers.getComponents().clear(); - scrollPane.getComponents().clear(); - - scrollPane.setY(110); - scrollPane.setHeight(menu.getHeight() - 111); - - if(!menu.getComponents().contains(nameNew)) { - menu.addComponent(nameNew); - menu.addComponent(color); - menu.addComponent(nameJoin); - menu.addComponent(add); - menu.addComponent(join); - } - - if(menu.getComponents().contains(settings)) { - menu.getComponents().remove(settings); - menu.getComponents().remove(schematics); - menu.getComponents().remove(waypoints); - - if(menu.getComponents().contains(admin)) { - menu.getComponents().remove(admin); - } - } - - /*if(currentGroup != null) { - setupGroupView(); - return; - }*/ - - int spacing = 15; - int height = 110; - - int defaultX = spacing; - - int y = spacing; - int x = spacing; - - int width = 190; - - int maxWidth = scrollPane.getWidth() - spacing * 2; - - int innerSpacing = 5; - int innerWidth = width - innerSpacing * 2; - int buttonHeight = 20; - - int exitButtonSize = 18; - - /*for(GroupData group : GroupList.getGroups()) { - String groupLeader = ""; - int membersOnline = 0; - int membersTotal = 0; - - for(UserInfo user : group.getUsers()) { - if(user.getUUID().equals(group.getOwner())) { - groupLeader = user.getName(); - } - - if(user.isOnline()) { - membersOnline++; - } - - membersTotal++; - } - - scrollPane.addComponent(new GroupBase(group.getName(), groupLeader, membersOnline, membersTotal, x, y, width, height)); - - scrollPane.addComponent(new SimpleTextButton("X", x + innerWidth - exitButtonSize + innerSpacing, y + innerSpacing, exitButtonSize, exitButtonSize, false) { - @Override - public void onAction() { - setActive(false); - - if(group.getOwner().equals(mc.thePlayer.getUniqueID())) { - NetworkingClient.sendLine("DeleteGroup", group.getId() + ""); - } else { - NetworkingClient.sendLine("GroupLeave", group.getId() + ""); - } - - populateScrollPane(); - } - }); - - scrollPane.addComponent(new MacroButton("OPEN PANEL", x + innerSpacing, y + height - innerSpacing * 2 - spacing, innerWidth, buttonHeight, true) { - @Override - public void onAction() { - setActive(false); - currentGroup = group; - subTab = GroupSubTab.SETTINGS; - - setupGroupView(); - } - }); - - x += spacing + width; - - if(x + spacing + width > maxWidth) { - x = defaultX; - y += height + spacing; - } - }*/ - - /*for(Request group : GroupList.getIngoingRequests()) { - scrollPane.addComponent(new ProfilesBase(group.getLabel() + " - Invite", x, y, width, height)); - - scrollPane.addComponent(new MacroButton("ACCEPT", x + innerSpacing, y + height - buttonHeight - innerSpacing * 3 - spacing, innerWidth, buttonHeight, true) { - @Override - public void onAction() { - setActive(false); - - NetworkingClient.sendLine("AcceptGroupRequest", group.getId() + ""); - } - }); - - scrollPane.addComponent(new MacroButton("DECLINE", x + innerSpacing, y + height - innerSpacing * 2 - spacing, innerWidth, buttonHeight, false) { - @Override - public void onAction() { - setActive(false); - - NetworkingClient.sendLine("DeclineGroupRequest", group.getId() + ""); - } - }); - - x += spacing + width; - - if(x + spacing + width > maxWidth) { - x = defaultX; - y += height + spacing; - } - }*/ - } - - - @Override - public void onRender() { - int width = 300; - int x = menu.getX() + menu.getWidth() - width + 20; - int y = menu.getY() + 59; - int height = 32; - - drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(27, 27, 27, 225).getRGB()); - - if(Settings.customGuiFont) { - FontManager.vision16.drawString("WAYPOINTS", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR); - } else { - mc.fontRendererObj.drawString("WAYPOINTS", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR); - } - - - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(menu.getX() + menu.getWidth() - width, menu.getY() + 58, width, menu.getHeight() - 58, MacrosPage.MENU_SIDE_BG_COLOR); - - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(menu.getX() + menu.getWidth() - width, menu.getY() + 58, width, height + 1, ModCategoryButton.MAIN_COLOR); - drawShadowDown(menu.getX() + menu.getWidth() - width, y + height, width); - - //rip.athena.client.gui.framework.draw.DrawImpl.drawRect(menu.getX(), menu.getY() + 58, menu.getWidth() - width, height + 1, SUB_TAB_COLOR); - - //rip.athena.client.gui.framework.draw.DrawImpl.drawRect(menu.getX() + menu.getWidth() - width, menu.getY() + 58, width, menu.getHeight() - 58, MacrosPage.MENU_SIDE_BG_COLOR); - - //rip.athena.client.gui.framework.draw.DrawImpl.drawRect(menu.getX() + menu.getWidth() - width, menu.getY() + 58, width, height + 1, ModCategoryButton.MAIN_COLOR); - //drawShadowDown(menu.getX(), y - 1, menu.getWidth()); - - //if(currentGroup == null) { - //Minecraft.getMinecraft().fontRendererObj.drawString("YOUR GROUPS", menu.getX() + (menu.getWidth() - width) / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth("YOUR GROUPS") / 2, y + height / 2 - Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT / 2, IngameMenu.MENU_HEADER_TEXT_COLOR); - - //drawShadowDown(menu.getX() + menu.getWidth() - width, y + height, width); - - Minecraft.getMinecraft().fontRendererObj.drawString("CREATE A GROUP", menu.getX() + menu.getWidth() - width / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth("CREATE A GROUP") / 2, y + height / 2 - Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT / 2, IngameMenu.MENU_HEADER_TEXT_COLOR); - - y += 60; - - Minecraft.getMinecraft().fontRendererObj.drawString("GROUP NAME", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR); - - y += 65; - - Minecraft.getMinecraft().fontRendererObj.drawString("COLOR", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR); - - y += 100; - - rip.athena.client.gui.framework.draw.DrawImpl.drawRect(menu.getX() + menu.getWidth() - width, y, width, height + 1, ModCategoryButton.MAIN_COLOR); - drawShadowDown(menu.getX() + menu.getWidth() - width, y + height, width); - drawShadowUp(menu.getX() + menu.getWidth() - width, y, width); - Minecraft.getMinecraft().fontRendererObj.drawString("JOIN A GROUP", menu.getX() + menu.getWidth() - width / 2 - Minecraft.getMinecraft().fontRendererObj.getStringWidth("JOIN A GROUP") / 2, y + height / 2 - Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT / 2, IngameMenu.MENU_HEADER_TEXT_COLOR); - - y += 50; - - Minecraft.getMinecraft().fontRendererObj.drawString("GROUP JOIN ID", x, y, IngameMenu.MENU_HEADER_TEXT_COLOR); - //} else { - //Minecraft.getMinecraft().fontRendererObj.drawString(subTab.getText(), menu.getX() + 31, menu.getY() + 110, IngameMenu.MENU_HEADER_TEXT_COLOR); - //drawHorizontalLine(menu.getX() + 31, menu.getY() + 140, menu.getWidth() - width - 31 * 2, 3, IngameMenu.MENU_LINE_COLOR); - - //Minecraft.getMinecraft().fontRendererObj.drawString("USERS", menu.getX() + menu.getWidth() - width + (width / 2) - Minecraft.getMinecraft().fontRendererObj.getStringWidth("USERS") / 2, y + height / 2 - Minecraft.getMinecraft().fontRendererObj.getStringHeight("USERS") / 2, IngameMenu.MENU_HEADER_TEXT_COLOR); - //} - } - - @Override - public void onLoad() { - //currentGroup = null; - - menu.addComponent(nameNew); - menu.addComponent(color); - menu.addComponent(nameJoin); - menu.addComponent(add); - menu.addComponent(join); - menu.addComponent(scrollPane); - menu.addComponent(scrollPaneUsers); - - menu.addComponent(settings); - menu.addComponent(schematics); - menu.addComponent(waypoints); - - /*if(currentGroup != null && currentGroup.getOwner().equals(mc.thePlayer.getUniqueID())) { - menu.addComponent(admin); - }*/ - - populateScrollPane(); - } - - @Override - public void onUnload() { - - } - - @Override - public void onOpen() { - - } - - @Override - public void onClose() { - - } -} diff --git a/src/main/java/rip/athena/client/gui/clickgui/pages/MacrosPage.java b/src/main/java/rip/athena/client/gui/clickgui/pages/MacrosPage.java index ac027e1d..845e29ab 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/pages/MacrosPage.java +++ b/src/main/java/rip/athena/client/gui/clickgui/pages/MacrosPage.java @@ -1,5 +1,6 @@ package rip.athena.client.gui.clickgui.pages; +import net.minecraft.client.renderer.GlStateManager; import rip.athena.client.Athena; import rip.athena.client.font.FontManager; import rip.athena.client.gui.framework.Menu; @@ -88,7 +89,7 @@ public class MacrosPage extends Page { } }; - scrollPane = new ModScrollPane(31, 140, menu.getWidth() - width - 31 * 2, menu.getHeight() - 141, false); + scrollPane = new ModScrollPane(220, 140, menu.getWidth() - width - 131, menu.getHeight() - 141, false); populateScrollPane(); } @@ -105,9 +106,9 @@ public class MacrosPage extends Page { int width = scrollPane.getWidth() - spacing * 2; for(Macro macro : Athena.INSTANCE.getMacroManager().getMacros()) { - scrollPane.addComponent(new MacroBase(macro.getName(), x, y, width, height)); - - MacroSlimTextField field = new MacroSlimTextField(TextPattern.NONE, x + 160 + spacing, y, (width - 280 - spacing * 4 - 90), height - 5) { + scrollPane.addComponent(new MacroBase(macro.getName(), x, y, width - 90, height)); + + MacroSlimTextField field = new MacroSlimTextField(TextPattern.NONE, x + 80 + spacing, y, (width - 320 - spacing * 4 - 90), height - 5) { @Override public void onAction() { macro.setCommand(getText()); @@ -120,7 +121,7 @@ public class MacrosPage extends Page { int keybindWidth = (width - 189 - spacing * 4 - 90) / 2; - MenuModKeybind keybindElement = new MenuModKeybind(x + 220 + spacing + keybindWidth + spacing, y + 5, keybindWidth - 20, height - 10) { + MenuModKeybind keybindElement = new MenuModKeybind(x + spacing + keybindWidth + spacing + 100, y + 5, keybindWidth - 20, height - 10) { @Override public void onAction() { macro.setKey(getBind()); @@ -129,7 +130,7 @@ public class MacrosPage extends Page { keybindElement.setBind(macro.getKey()); scrollPane.addComponent(keybindElement); - FlipButton flipButton = new FlipButton(width - spacing - 80, y, 90 - 10, height) { + FlipButton flipButton = new FlipButton(width - spacing - 180, y, 90 - 10, height) { @Override public void onAction() { macro.setEnabled(isActive()); @@ -140,7 +141,7 @@ public class MacrosPage extends Page { scrollPane.addComponent(flipButton); - scrollPane.addComponent(new SimpleTextButton("X", width - spacing, y + 5, 20, 20, true) { + scrollPane.addComponent(new SimpleTextButton("X", width - spacing - 90, y + 5, 20, 20, true) { @Override public void onAction() { Athena.INSTANCE.getMacroManager().getMacros().remove(macro); @@ -159,7 +160,9 @@ public class MacrosPage extends Page { int y = menu.getY() + 59; int height = 32; - drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(27, 27, 27, 225).getRGB()); + GlStateManager.color(1,1,1); + + drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(32, 32, 32, 225).getRGB()); if(Settings.customGuiFont) { FontManager.vision16.drawString("MACROS", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR); diff --git a/src/main/java/rip/athena/client/gui/clickgui/pages/ModsPage.java b/src/main/java/rip/athena/client/gui/clickgui/pages/ModsPage.java index 437a2ba9..6e692cc5 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/pages/ModsPage.java +++ b/src/main/java/rip/athena/client/gui/clickgui/pages/ModsPage.java @@ -69,8 +69,9 @@ public class ModsPage extends Page { public void onRender() { int y = menu.getY() + 59; int height = 32; + GlStateManager.color(1,1,1); - drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(27, 27, 27, 225).getRGB()); + drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(32, 32, 32, 225).getRGB()); y += 50; @@ -85,8 +86,8 @@ public class ModsPage extends Page { if (modCategory != null) { if (Settings.customGuiFont) { - FontManager.vision16.drawString(activeModule != null ? activeModule.getName().toUpperCase() : modCategory.getText(), menu.getX() + 255, menu.getY() + 20, IngameMenu.MENU_HEADER_TEXT_COLOR); - FontManager.baloo17.drawString("Configure build-in client mods", menu.getX() + 255, menu.getY() + 35, IngameMenu.MENU_HEADER_TEXT_COLOR); + rip.athena.client.utils.font.FontManager.getProductSansRegular(30).drawString(activeModule != null ? activeModule.getName().toUpperCase() : modCategory.getText(), menu.getX() + 255, menu.getY() + 20, IngameMenu.MENU_HEADER_TEXT_COLOR); + rip.athena.client.utils.font.FontManager.getProductSansRegular(20).drawString("Configure build-in client mods", menu.getX() + 255, menu.getY() + 35, IngameMenu.MENU_HEADER_TEXT_COLOR); } else { mc.fontRendererObj.drawString(activeModule != null ? "SETTINGS | " : modCategory.getText(), menu.getX() + 255, menu.getY() + 25, IngameMenu.MENU_HEADER_TEXT_COLOR); } @@ -97,7 +98,7 @@ public class ModsPage extends Page { if (Settings.customGuiFont) { //FontManager.vision16.drawString(text, menu.getX() + 255, menu.getY() + 25, IngameMenu.MENU_HEADER_TEXT_COLOR); } else { - mc.fontRendererObj.drawString(text, menu.getX() + 255 + offset, menu.getY() + 80, MENU_HEADER_TEXT_COLOR_MOD); + //mc.fontRendererObj.drawString(text, menu.getX() + 255 + offset, menu.getY() + 80, MENU_HEADER_TEXT_COLOR_MOD); } drawShadowUp(menu.getX() + 255, menu.getY() + 110 + 25 + 2, menu.getWidth() - 286); drawShadowLeft(menu.getX() + 255 + 2, menu.getY() + 110 + 25, menu.getHeight() - 110 - 50 - 5); @@ -116,7 +117,7 @@ public class ModsPage extends Page { } } - drawHorizontalLine(menu.getX() + 255, menu.getY() + 110, menu.getWidth() - 255 - 31, 3, IngameMenu.MENU_LINE_COLOR); + drawHorizontalLine(menu.getX() + 255, menu.getY() + 110, menu.getWidth() - 255 - 31, 3, new Color(32, 32, 32, 225).getRGB()); } } diff --git a/src/main/java/rip/athena/client/gui/clickgui/pages/ProfilesPage.java b/src/main/java/rip/athena/client/gui/clickgui/pages/ProfilesPage.java index 8228e5c3..5e2c918d 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/pages/ProfilesPage.java +++ b/src/main/java/rip/athena/client/gui/clickgui/pages/ProfilesPage.java @@ -235,7 +235,7 @@ public class ProfilesPage extends Page { int y = menu.getY() + 59; int height = 32; - drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(27, 27, 27, 225).getRGB()); + drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(32, 32, 32, 225).getRGB()); if(Settings.customGuiFont) { FontManager.vision16.drawString("PROFILES", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR); diff --git a/src/main/java/rip/athena/client/gui/clickgui/pages/SettingsPage.java b/src/main/java/rip/athena/client/gui/clickgui/pages/SettingsPage.java index 361d9524..935a9e49 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/pages/SettingsPage.java +++ b/src/main/java/rip/athena/client/gui/clickgui/pages/SettingsPage.java @@ -284,7 +284,7 @@ public class SettingsPage extends Page { int y = menu.getY() + 59; int height = 32; - drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(27, 27, 27, 225).getRGB()); + drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(32, 32, 32, 225).getRGB()); /*rip.athena.client.gui.framework.draw.DrawImpl.drawRect(menu.getX(), menu.getY() + 58, width, menu.getHeight() - 58, MacrosPage.MENU_SIDE_BG_COLOR); rip.athena.client.gui.framework.draw.DrawImpl.drawRect(menu.getX(), menu.getY() + 58, width, height + 1, ModCategoryButton.MAIN_COLOR); diff --git a/src/main/java/rip/athena/client/gui/clickgui/pages/WaypointsPage.java b/src/main/java/rip/athena/client/gui/clickgui/pages/WaypointsPage.java index f8344107..a071b86b 100644 --- a/src/main/java/rip/athena/client/gui/clickgui/pages/WaypointsPage.java +++ b/src/main/java/rip/athena/client/gui/clickgui/pages/WaypointsPage.java @@ -203,7 +203,7 @@ public class WaypointsPage extends Page { int y = menu.getY() + 59; int height = 32; - drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(27, 27, 27, 225).getRGB()); + drawVerticalLine(menu.getX() + 215, y + height - 30, height + 432, 3, new Color(32, 32, 32, 225).getRGB()); if(Settings.customGuiFont) { FontManager.vision16.drawString("WAYPOINTS", menu.getX() + 235, menu.getY() + 80, IngameMenu.MENU_HEADER_TEXT_COLOR); diff --git a/src/main/java/rip/athena/client/gui/clickgui/pages/groups/GroupSubTab.java b/src/main/java/rip/athena/client/gui/clickgui/pages/groups/GroupSubTab.java deleted file mode 100644 index f2d7717a..00000000 --- a/src/main/java/rip/athena/client/gui/clickgui/pages/groups/GroupSubTab.java +++ /dev/null @@ -1,21 +0,0 @@ -package rip.athena.client.gui.clickgui.pages.groups; - -/** - * @author Athena Development - * @project Athena-Client - * @date 6/2/2023 - */ - -public enum GroupSubTab { - SETTINGS("SETTINGS"), SCHEMATICS("SCHEMATICS"), WAYPOINTS("WAYPOINTS"), ADMIN("ADMIN"); - - String text; - - GroupSubTab(String text) { - this.text = text; - } - - public String getText() { - return text; - } -} diff --git a/src/main/java/rip/athena/client/modules/impl/render/FPSMod.java b/src/main/java/rip/athena/client/modules/impl/render/FPSMod.java index c1d94136..fdfbe3bd 100644 --- a/src/main/java/rip/athena/client/modules/impl/render/FPSMod.java +++ b/src/main/java/rip/athena/client/modules/impl/render/FPSMod.java @@ -97,7 +97,8 @@ public class FPSMod extends Module { } else if(isUsingWaveChroma) { DrawUtils.drawCustomFontChromaString(FontManager.baloo17, string, (int) (posX), (int) posY + 1, false, true); } else { - FontManager.baloo17.drawString(string,(int) (posX), (int)posY + 1, color.getRGB()); + rip.athena.client.utils.font.FontManager.getPoppinsRegular(20).drawString(string,(int) (posX), (int)posY + 3, color.getRGB()); + //FontManager.baloo17.drawString(string,(int) (posX), (int)posY + 1, color.getRGB()); } } else { hud.setWidth(mc.fontRendererObj.getStringWidth(string) + 16); diff --git a/src/main/java/rip/athena/client/utils/font/Font.java b/src/main/java/rip/athena/client/utils/font/Font.java new file mode 100644 index 00000000..fdacf350 --- /dev/null +++ b/src/main/java/rip/athena/client/utils/font/Font.java @@ -0,0 +1,17 @@ +package rip.athena.client.utils.font; + +public abstract class Font { + public abstract int drawString(String text, double x, double y, int color, boolean dropShadow); + + public abstract int drawString(final String text, final double x, final double y, final int color); + + public abstract int drawStringWithShadow(final String text, final double x, final double y, final int color); + + public abstract int width(String text); + + public abstract int drawCenteredString(final String text, final double x, final double y, final int color); + + public abstract int drawRightString(final String text, final double x, final double y, final int color); + + public abstract float height(); +} diff --git a/src/main/java/rip/athena/client/utils/font/FontManager.java b/src/main/java/rip/athena/client/utils/font/FontManager.java new file mode 100644 index 00000000..76ebc3fc --- /dev/null +++ b/src/main/java/rip/athena/client/utils/font/FontManager.java @@ -0,0 +1,198 @@ +package rip.athena.client.utils.font; + +import rip.athena.client.utils.font.impl.athena.FontRenderer; +import rip.athena.client.utils.font.impl.athena.FontUtil; + +import java.util.HashMap; + +public class FontManager { + + // FOR ANYONE WHO VISITS THIS CLASS: CREATE A HASHMAP FOR EACH FONT AND BASICALLY COPY THE GIVEN METHOD + + private static final HashMap INTERNATIONAL = new HashMap<>(); + private static final HashMap MONTSERRAT_MAP = new HashMap<>(); + private static final HashMap ROBOTO_MAP = new HashMap<>(); + + private static final HashMap LIGHT_MAP = new HashMap<>(); + + private static final HashMap NUNITO = new HashMap<>(); + private static final HashMap NUNITO_BOLD = new HashMap<>(); + private static final HashMap MUSEO_SANS = new HashMap<>(); + + private static final HashMap NUNITO_LIGHT_MAP = new HashMap<>(); + + private static final HashMap POPPINS_BOLD = new HashMap<>(); + private static final HashMap POPPINS_SEMI_BOLD = new HashMap<>(); + private static final HashMap POPPINS_MEDIUM = new HashMap<>(); + private static final HashMap POPPINS_REGULAR = new HashMap<>(); + private static final HashMap POPPINS_LIGHT = new HashMap<>(); + + private static final HashMap QUICKSAND_MAP_MEDIUM = new HashMap<>(); + private static final HashMap QUICKSAND_MAP_LIGHT = new HashMap<>(); + + private static final HashMap TAHOMA_BOLD = new HashMap<>(); + private static final HashMap TAHOMA = new HashMap<>(); + + private static final HashMap ICONS_1 = new HashMap<>(); + private static final HashMap ICONS_2 = new HashMap<>(); + private static final HashMap ICONS_3 = new HashMap<>(); + + private static final HashMap DREAMSCAPE = new HashMap<>(); + private static final HashMap DREAMSCAPE_NO_AA = new HashMap<>(); + + private static final HashMap SOMATIC = new HashMap<>(); + + private static final HashMap BIKO = new HashMap<>(); + + private static final HashMap MONTSERRAT_HAIRLINE = new HashMap<>(); + + private static final HashMap PRODUCT_SANS_BOLD = new HashMap<>(); + private static final HashMap PRODUCT_SANS_REGULAR = new HashMap<>(); + private static final HashMap PRODUCT_SANS_MEDIUM = new HashMap<>(); + private static final HashMap PRODUCT_SANS_LIGHT = new HashMap<>(); + + private static final HashMap SF_UI_PRO = new HashMap<>(); + + private static final HashMap HACK = new HashMap<>(); + + // COPY THIS METHOD FOR EACH METHOD AND REPLACE FONTNAME WITH THE USED FONT FILE NAME + public static Font getMontserratMedium(final int size) { + return get(MONTSERRAT_MAP, size, "Montserrat-Medium", true, true); + } + + public static Font getMontserratHairline(final int size) { + return get(MONTSERRAT_HAIRLINE, size, "Montserrat-Hairline", true, true); + } + + public static Font getInternational(int size) { + return get(INTERNATIONAL, size, "NotoSans-Regular", true, true, false, true); + } + + public static Font getRobotoLight(final int size) { + return get(ROBOTO_MAP, size, "Roboto-Light", true, true); + } + + public static Font getLight(final int size) { + return get(LIGHT_MAP, size, "Light", true, true); + } + + public static Font getSFUIPro(final int size) { + return get(SF_UI_PRO, size, "SF-UI-Pro", true, true); + } + + public static Font getPoppinsBold(final int size) { + return get(POPPINS_BOLD, size, "Poppins-Bold", true, true); + } + + public static Font getPoppinsSemiBold(final int size) { + return get(POPPINS_SEMI_BOLD, size, "Poppins-SemiBold", true, true); + } + + public static Font getPoppinsMedium(final int size) { + return get(POPPINS_MEDIUM, size, "Poppins-Medium", true, true); + } + + public static Font getPoppinsRegular(final int size) { + return get(POPPINS_REGULAR, size, "Poppins-Regular", true, true); + } + + public static Font getPoppinsLight(final int size) { + return get(POPPINS_LIGHT, size, "Poppins-Light", true, true); + } + + public static Font getNunito(final int size) { + return get(PRODUCT_SANS_REGULAR, size, "product_sans_regular", true, true); + } + + public static Font getNunitoBold(final int size) { + return get(PRODUCT_SANS_BOLD, size, "product_sans_bold", true, true); + } + + public static Font getMuseo(final int size) { + return get(MUSEO_SANS, size, "MuseoSans_900", true, true); + } + + public static Font getNunitoLight(final int size) { + return get(PRODUCT_SANS_LIGHT, size, "product_sans_light", true, true); + } + + public static Font getQuicksandMedium(final int size) { + return get(QUICKSAND_MAP_MEDIUM, size, "Quicksand-Medium", true, true); + } + + public static Font getQuicksandLight(final int size) { + return get(QUICKSAND_MAP_LIGHT, size, "Quicksand-Light", true, true); + } + + public static Font getTahomaBold(final int size) { + return get(TAHOMA_BOLD, size, "TahomaBold", true, true); + } + + public static Font getTahoma(final int size) { + return get(TAHOMA, size, "Tahoma", true, true); + } + + public static Font getDreamscape(final int size) { + return get(DREAMSCAPE, size, "Dreamscape", true, true); + } + + public static Font getSomatic(final int size) { + return get(SOMATIC, size, "Somatic-Rounded", true, true); + } + + public static Font getDreamscapeNoAA(final int size) { + return get(DREAMSCAPE_NO_AA, size, "Dreamscape", true, false); + } + + public static Font getIconsOne(final int size) { + return get(ICONS_1, size, "Icon-1", true, true); + } + + public static Font getIconsThree(final int size) { + return get(ICONS_3, size, "Icon-3", true, true); + } + + public static Font getIconsTwo(final int size) { + return get(ICONS_2, size, "Icon-2", true, true); + } + + public static Font getBiko(final int size) { + return get(BIKO, size, "Biko_Regular", true, true); + } + + public static Font getProductSansBold(final int size) { + return get(PRODUCT_SANS_BOLD, size, "product_sans_bold", true, true); + } + + public static Font getProductSansRegular(final int size) { + return get(PRODUCT_SANS_REGULAR, size, "product_sans_regular", true, true); + } + + public static Font getProductSansMedium(final int size) { + return get(PRODUCT_SANS_MEDIUM, size, "product_sans_medium", true, true); + } + + public static Font getProductSansLight(final int size) { + return get(PRODUCT_SANS_LIGHT, size, "product_sans_light", true, true); + } + + public static Font getHack(final int size) { + return get(HACK, size, "Hack-Regular", true, true); + } + + private static Font get(HashMap map, int size, String name, boolean fractionalMetrics, boolean AA) { + return get(map, size, name, fractionalMetrics, AA, false, false); + } + + private static Font get(HashMap map, int size, String name, boolean fractionalMetrics, boolean AA, boolean otf, boolean international) { + if (!map.containsKey(size)) { + final java.awt.Font font = FontUtil.getResource("Athena/gui/font/" + name + (otf ? ".otf" : ".ttf"), size); + + if (font != null) { + map.put(size, new rip.athena.client.utils.font.impl.athena.FontRenderer(font, fractionalMetrics, AA, international)); + } + } + + return map.get(size); + } +} \ No newline at end of file diff --git a/src/main/java/rip/athena/client/utils/font/impl/athena/FontCharacter.java b/src/main/java/rip/athena/client/utils/font/impl/athena/FontCharacter.java new file mode 100644 index 00000000..993d447a --- /dev/null +++ b/src/main/java/rip/athena/client/utils/font/impl/athena/FontCharacter.java @@ -0,0 +1,29 @@ +package rip.athena.client.utils.font.impl.athena; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import net.minecraft.client.renderer.GlStateManager; +import org.lwjgl.opengl.GL11; + +@Getter +@AllArgsConstructor +public class FontCharacter { + + private final int texture; + private final float width; + private final float height; + + public void render(final float x, final float y) { + GlStateManager.bindTexture(texture); + GL11.glBegin(GL11.GL_QUADS); + GL11.glTexCoord2f(0, 0); + GL11.glVertex2f(x, y); + GL11.glTexCoord2f(0, 1); + GL11.glVertex2f(x, y + height); + GL11.glTexCoord2f(1, 1); + GL11.glVertex2f(x + width, y + height); + GL11.glTexCoord2f(1, 0); + GL11.glVertex2f(x + width, y); + GL11.glEnd(); + } +} \ No newline at end of file diff --git a/src/main/java/rip/athena/client/utils/font/impl/athena/FontRenderer.java b/src/main/java/rip/athena/client/utils/font/impl/athena/FontRenderer.java new file mode 100644 index 00000000..1699a291 --- /dev/null +++ b/src/main/java/rip/athena/client/utils/font/impl/athena/FontRenderer.java @@ -0,0 +1,291 @@ +package rip.athena.client.utils.font.impl.athena; + +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.util.MathHelper; +import org.lwjgl.BufferUtils; +import org.lwjgl.opengl.GL11; +import rip.athena.client.utils.font.FontManager; +import rip.athena.client.utils.render.DrawUtils; + +import java.awt.*; +import java.awt.font.FontRenderContext; +import java.awt.geom.AffineTransform; +import java.awt.geom.Rectangle2D; +import java.awt.image.BufferedImage; +import java.nio.ByteBuffer; + +/** + * @author Patrick, Hazsi + * @since 11/03/2021 + */ +public class FontRenderer extends rip.athena.client.utils.font.Font { + + private static final String ALPHABET = "ABCDEFGHOKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + private static final String COLOR_CODE_CHARACTERS = "0123456789abcdefklmnor"; + private static final Color TRANSPARENT_COLOR = new Color(255, 255, 255, 0); + private static final float SCALE = 0.5f; + private static final float SCALE_INVERSE = 1 / SCALE; + private static final char COLOR_INVOKER = '\247'; + private static final int[] COLOR_CODES = new int[32]; + private static final int LATIN_MAX_AMOUNT = 256; + private static final int INTERNATIONAL_MAX_AMOUNT = 65535; + private static final int MARGIN_WIDTH = 4; + private static final int MASK = 0xFF; + + private final Font font; + private final boolean fractionalMetrics; + private final float fontHeight; + private final FontCharacter[] defaultCharacters = new FontCharacter[LATIN_MAX_AMOUNT]; + private final FontCharacter[] internationalCharacters = new FontCharacter[INTERNATIONAL_MAX_AMOUNT]; + private final FontCharacter[] boldCharacters = new FontCharacter[LATIN_MAX_AMOUNT]; + private boolean antialiasing = true, international = false; + + public FontRenderer(Font font, boolean fractionalMetrics, boolean antialiasing, boolean international) { + this.antialiasing = antialiasing; + this.font = font; + this.fractionalMetrics = fractionalMetrics; + this.fontHeight = (float) (font.getStringBounds(ALPHABET, new FontRenderContext(new AffineTransform(), antialiasing, fractionalMetrics)).getHeight() / 2); + this.fillCharacters(this.defaultCharacters, Font.PLAIN); + this.fillCharacters(this.boldCharacters, Font.BOLD); + this.international = international; + + if (this.international) { + this.fillCharacters(this.internationalCharacters, Font.PLAIN); + } + } + + public FontRenderer(final Font font, final boolean fractionalMetrics, final boolean antialiasing) { + this.antialiasing = antialiasing; + this.font = font; + this.fractionalMetrics = fractionalMetrics; + this.fontHeight = (float) (font.getStringBounds(ALPHABET, new FontRenderContext(new AffineTransform(), antialiasing, fractionalMetrics)).getHeight() / 2); + this.fillCharacters(this.defaultCharacters, Font.PLAIN); + this.fillCharacters(this.boldCharacters, Font.BOLD); + } + + public FontRenderer(final Font font, final boolean fractionalMetrics) { + this.font = font; + this.fractionalMetrics = fractionalMetrics; + this.fontHeight = (float) (font.getStringBounds(ALPHABET, new FontRenderContext(new AffineTransform(), true, fractionalMetrics)).getHeight() / 2); + this.fillCharacters(this.defaultCharacters, Font.PLAIN); + this.fillCharacters(this.boldCharacters, Font.BOLD); + } + + public static void calculateColorCodes() { + for (int i = 0; i < 32; ++i) { + final int amplifier = (i >> 3 & 1) * 85; + int red = (i >> 2 & 1) * 170 + amplifier; + int green = (i >> 1 & 1) * 170 + amplifier; + int blue = (i & 1) * 170 + amplifier; + if (i == 6) { + red += 85; + } + if (i >= 16) { + red /= 4; + green /= 4; + blue /= 4; + } + COLOR_CODES[i] = (red & 255) << 16 | (green & 255) << 8 | blue & 255; + } + } + + /** + * Populate a given {@link FontCharacter} array. The process of instantiating a FontCharacter calculates the + * height and width of the character, as well as uploading the texture to OpenGL and storing the OpenGL texture + * ID for rendering later. This process must be run for every character before it is rendered, as is done in this + * method. + * + * @param characters A reference to a FontCharacter array to populate + * @param style The font style to use, as defined in {@link Font}. Acceptable values are 0 = PLAIN, 1 = BOLD, + * 2 = ITALIC. + */ + public void fillCharacters(final FontCharacter[] characters, final int style) { + final Font font = this.font.deriveFont(style); + final BufferedImage fontImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); + final Graphics2D fontGraphics = (Graphics2D) fontImage.getGraphics(); + final FontMetrics fontMetrics = fontGraphics.getFontMetrics(font); + + for (int i = 0; i < characters.length; ++i) { + final char character = (char) i; + final Rectangle2D charRectangle = fontMetrics.getStringBounds(character + "", fontGraphics); + + // Draw the character. This is cached into an OpenGL texture so that this process doesn't need to + // be repeated on every frame that the character is later rendered on. + final BufferedImage charImage = new BufferedImage(MathHelper.ceiling_float_int( + (float) charRectangle.getWidth()) + MARGIN_WIDTH * 2, MathHelper.ceiling_float_int( + (float) charRectangle.getHeight()), BufferedImage.TYPE_INT_ARGB); + + final Graphics2D charGraphics = (Graphics2D) charImage.getGraphics(); + charGraphics.setFont(font); + + // Calculate the width and height of the character + final int width = charImage.getWidth(); + final int height = charImage.getHeight(); + charGraphics.setColor(TRANSPARENT_COLOR); + charGraphics.fillRect(0, 0, width, height); + setRenderHints(charGraphics); + charGraphics.drawString(character + "", MARGIN_WIDTH, font.getSize()); + + // Generate a new OpenGL texture, and pass it along to uploadTexture() with the image of the character so + // that it can be stored as a complete OpenGL texture for later use + final int charTexture = GL11.glGenTextures(); + uploadTexture(charTexture, charImage, width, height); + + // Store the completed character back into the provided character array + characters[i] = new FontCharacter(charTexture, width, height); + } + } + + public void setRenderHints(final Graphics2D graphics) { + graphics.setColor(Color.WHITE); + if (antialiasing) { + graphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + } + graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); + graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, fractionalMetrics ? RenderingHints.VALUE_FRACTIONALMETRICS_ON : RenderingHints.VALUE_FRACTIONALMETRICS_OFF); + } + + public void uploadTexture(final int texture, final BufferedImage image, final int width, final int height) { + final int[] pixels = image.getRGB(0, 0, width, height, new int[width * height], 0, width); + final ByteBuffer byteBuffer = BufferUtils.createByteBuffer(width * height * MARGIN_WIDTH); + for (int y = 0; y < height; ++y) { + for (int x = 0; x < width; ++x) { + final int pixel = pixels[x + y * width]; + byteBuffer.put((byte) ((pixel >> 16) & MASK)); + byteBuffer.put((byte) ((pixel >> 8) & MASK)); + byteBuffer.put((byte) (pixel & MASK)); + byteBuffer.put((byte) ((pixel >> 24) & MASK)); + } + } + byteBuffer.flip(); + GlStateManager.bindTexture(texture); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); + GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, width, height, 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, byteBuffer); + } + + public int drawString(final String text, final double x, final double y, final int color) { + return drawString(text, x, y, color, false); + } + + public int drawCenteredString(final String text, final double x, final double y, final int color) { + return drawString(text, x - (width(text) >> 1), y, color, false); // whoever bitshifted this instead of diving by 2 is a fucking nerd and virgin + } + + public int drawRightString(String text, double x, double y, int color) { + return drawString(text, x - (width(text)), y, color, false); + } + + public int drawStringWithShadow(final String text, final double x, final double y, final int color) { + drawString(text, x + 0.25, y + 0.25, color, true); + return drawString(text, x, y, color, false); + } + + public void drawCenteredStringWithShadow(final String text, final float x, final float y, final int color) { + drawString(text, x - (width(text) >> 1) + 0.25, y + 0.25, new Color(color, true).getRGB(), true); + drawString(text, x - (width(text) >> 1), y, color, false); + } + + public int drawString(String text, double x, double y, final int color, final boolean shadow) { + + if (!this.international && this.requiresInternationalFont(text)) { + return FontManager.getInternational(this.font.getSize() - 1).drawString(text, x, y, color); + } + + final FontCharacter[] characterSet = this.international ? internationalCharacters : defaultCharacters; + + double givenX = x; + GL11.glPushMatrix(); + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glScalef(SCALE, SCALE, SCALE); + + x -= MARGIN_WIDTH / SCALE_INVERSE; + y -= MARGIN_WIDTH / SCALE_INVERSE; + x *= SCALE_INVERSE; + y *= SCALE_INVERSE; + y -= fontHeight / 5; + + final double startX = x; + + final int length = text.length(); + DrawUtils.glColor(shadow ? 50 : color); + + for (int i = 0; i < length; ++i) { + final char character = text.charAt(i); + + try { + if (character == '\n') { + x = startX; + y += height() * 2; + continue; + } + + final FontCharacter fontCharacter = characterSet[character]; + fontCharacter.render((float) x, (float) y); + x += fontCharacter.getWidth() - MARGIN_WIDTH * 2; + } catch (Exception exception) { + System.out.println("Character \"" + character + "\" was out of bounds " + + "(" + ((int) character) + " out of bounds for " + characterSet.length + ")"); + exception.printStackTrace(); + } + } + + GL11.glDisable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GlStateManager.bindTexture(0); + GL11.glPopAttrib(); + GL11.glPopMatrix(); + + return (int) (x - givenX); + } + + public int width(String text) { + if (!this.international && this.requiresInternationalFont(text)) { + return FontManager.getInternational(this.font.getSize()).width(text); + } + + final FontCharacter[] characterSet = this.international ? internationalCharacters : defaultCharacters; + final int length = text.length(); + char previousCharacter = '.'; + int width = 0; + + for (int i = 0; i < length; ++i) { + final char character = text.charAt(i); +// if (previousCharacter != COLOR_INVOKER) { +// if (character == COLOR_INVOKER) { +// final int index = COLOR_CODE_CHARACTERS.indexOf(text.toLowerCase().charAt(i + 1)); +// if (index < 16 || index == 21) { +// characterSet = defaultCharacters; +// } else if (index == 17) { +// characterSet = boldCharacters; +// } +// } else if (characterSet.length > character) { +// width += characterSet[character].getWidth() - MARGIN_WIDTH * 2; +// } +// } + width += characterSet[character].getWidth() - MARGIN_WIDTH * 2; + + previousCharacter = character; + } + + return width / 2; + } + + public float height() { + return fontHeight; + } + + private boolean requiresInternationalFont(String text) { + int highest = 0; + + for (int i = 0; i < text.length(); i++) { + if (text.charAt(i) > highest) highest = text.charAt(i); + } + + return highest >= 256; + } +} \ No newline at end of file diff --git a/src/main/java/rip/athena/client/utils/font/impl/athena/FontUtil.java b/src/main/java/rip/athena/client/utils/font/impl/athena/FontUtil.java new file mode 100644 index 00000000..a0ef4fdf --- /dev/null +++ b/src/main/java/rip/athena/client/utils/font/impl/athena/FontUtil.java @@ -0,0 +1,28 @@ +package rip.athena.client.utils.font.impl.athena; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; + +import java.awt.*; +import java.io.IOException; + +public class FontUtil { + + private static final IResourceManager RESOURCE_MANAGER = Minecraft.getMinecraft().getResourceManager(); + + /** + * Method which gets a font by a resource name + * + * @param resource resource name + * @param size font size + * @return font by resource + */ + public static Font getResource(final String resource, final int size) { + try { + return Font.createFont(Font.TRUETYPE_FONT, RESOURCE_MANAGER.getResource(new ResourceLocation(resource)).getInputStream()).deriveFont((float) size); + } catch (final FontFormatException | IOException ignored) { + return null; + } + } +} diff --git a/src/main/java/rip/athena/client/utils/font/impl/minecraft/FontRenderer.java b/src/main/java/rip/athena/client/utils/font/impl/minecraft/FontRenderer.java new file mode 100644 index 00000000..eb48721b --- /dev/null +++ b/src/main/java/rip/athena/client/utils/font/impl/minecraft/FontRenderer.java @@ -0,0 +1,943 @@ +package rip.athena.client.utils.font.impl.minecraft; + +import com.ibm.icu.text.ArabicShaping; +import com.ibm.icu.text.ArabicShapingException; +import com.ibm.icu.text.Bidi; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.client.renderer.texture.TextureUtil; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.client.resources.IResourceManagerReloadListener; +import net.minecraft.client.settings.GameSettings; +import net.minecraft.util.ResourceLocation; +import optifine.Config; +import optifine.CustomColors; +import optifine.FontUtils; +import org.apache.commons.io.IOUtils; +import org.lwjgl.opengl.GL11; +import rip.athena.client.utils.font.Font; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.InputStream; +import java.util.*; + +public class FontRenderer extends Font implements IResourceManagerReloadListener { + private static final ResourceLocation[] unicodePageLocations = new ResourceLocation[256]; + + /** + * Array of width of all the characters in default.png + */ + private final int[] charWidth = new int[256]; + + /** + * the height in pixels of default text + */ + public static int FONT_HEIGHT = 9; + public Random fontRandom = new Random(); + + /** + * Array of the start/end column (in upper/lower nibble) for every glyph in the /font directory. + */ + private final byte[] glyphWidth = new byte[65536]; + + /** + * Array of RGB triplets defining the 16 standard chat colors followed by 16 darker version of the same colors for + * drop shadows. + */ + private final int[] colorCode = new int[32]; + private ResourceLocation locationFontTexture; + + /** + * The RenderEngine used to load and setup glyph textures. + */ + private final TextureManager renderEngine; + + /** + * Current X coordinate at which to draw the next character. + */ + private float posX; + + /** + * Current Y coordinate at which to draw the next character. + */ + private float posY; + + /** + * If true, strings should be rendered with Unicode fonts instead of the default.png font + */ + private boolean unicodeFlag; + + /** + * If true, the Unicode Bidirectional Algorithm should be run before rendering any string. + */ + private boolean bidiFlag; + + /** + * Used to specify new red value for the current color. + */ + private float red; + + /** + * Used to specify new blue value for the current color. + */ + private float blue; + + /** + * Used to specify new green value for the current color. + */ + private float green; + + /** + * Used to specify new alpha value for the current color. + */ + private float alpha; + + /** + * Text color of the currently rendering string. + */ + private int textColor; + + /** + * Set if the "k" style (random) is active in currently rendering string + */ + private boolean randomStyle; + + /** + * Set if the "l" style (bold) is active in currently rendering string + */ + private boolean boldStyle; + + /** + * Set if the "o" style (italic) is active in currently rendering string + */ + private boolean italicStyle; + + /** + * Set if the "n" style (underlined) is active in currently rendering string + */ + private boolean underlineStyle; + + /** + * Set if the "m" style (strikethrough) is active in currently rendering string + */ + private boolean strikethroughStyle; + public GameSettings gameSettings; + public ResourceLocation locationFontTextureBase; + public float offsetBold = 1.0F; + private final float[] charWidthFloat = new float[256]; + private boolean blend = false; + //private final GlBlendState oldBlendState = new GlBlendState(); + + public FontRenderer(final GameSettings gameSettingsIn, final ResourceLocation location, final TextureManager textureManagerIn, final boolean unicode) { + this.gameSettings = gameSettingsIn; + this.locationFontTextureBase = location; + this.locationFontTexture = location; + this.renderEngine = textureManagerIn; + this.unicodeFlag = unicode; + this.locationFontTexture = FontUtils.getHdFontLocation(this.locationFontTextureBase); + this.bindTexture(this.locationFontTexture); + + for (int i = 0; i < 32; ++i) { + final int j = (i >> 3 & 1) * 85; + int k = (i >> 2 & 1) * 170 + j; + int l = (i >> 1 & 1) * 170 + j; + int i1 = (i & 1) * 170 + j; + + if (i == 6) { + k += 85; + } + + if (gameSettingsIn.anaglyph) { + final int j1 = (k * 30 + l * 59 + i1 * 11) / 100; + final int k1 = (k * 30 + l * 70) / 100; + final int l1 = (k * 30 + i1 * 70) / 100; + k = j1; + l = k1; + i1 = l1; + } + + if (i >= 16) { + k /= 4; + l /= 4; + i1 /= 4; + } + + this.colorCode[i] = (k & 255) << 16 | (l & 255) << 8 | i1 & 255; + } + + this.readGlyphSizes(); + } + + public void onResourceManagerReload(final IResourceManager resourceManager) { + this.locationFontTexture = FontUtils.getHdFontLocation(this.locationFontTextureBase); + + for (int i = 0; i < unicodePageLocations.length; ++i) { + unicodePageLocations[i] = null; + } + + this.readFontTexture(); + this.readGlyphSizes(); + } + + private void readFontTexture() { + final BufferedImage bufferedimage; + + try { + bufferedimage = TextureUtil.readBufferedImage(this.getResourceInputStream(this.locationFontTexture)); + } catch (final IOException ioexception1) { + throw new RuntimeException(ioexception1); + } + + final Properties properties = FontUtils.readFontProperties(this.locationFontTexture); + this.blend = FontUtils.readBoolean(properties, "blend", false); + final int i = bufferedimage.getWidth(); + final int j = bufferedimage.getHeight(); + final int k = i / 16; + final int l = j / 16; + final float f = (float) i / 128.0F; + final float f1 = Config.limit(f, 1.0F, 2.0F); + this.offsetBold = 1.0F / f1; + final float f2 = FontUtils.readFloat(properties, "offsetBold", -1.0F); + + if (f2 >= 0.0F) { + this.offsetBold = f2; + } + + final int[] aint = new int[i * j]; + bufferedimage.getRGB(0, 0, i, j, aint, 0, i); + + for (int i1 = 0; i1 < 256; ++i1) { + final int j1 = i1 % 16; + final int k1 = i1 / 16; + int l1 = 0; + + for (l1 = k - 1; l1 >= 0; --l1) { + final int i2 = j1 * k + l1; + boolean flag = true; + + for (int j2 = 0; j2 < l && flag; ++j2) { + final int k2 = (k1 * l + j2) * i; + final int l2 = aint[i2 + k2]; + final int i3 = l2 >> 24 & 255; + + if (i3 > 16) { + flag = false; + } + } + + if (!flag) { + break; + } + } + + if (i1 == 65) { + i1 = i1; + } + + if (i1 == 32) { + if (k <= 8) { + l1 = (int) (2.0F * f); + } else { + l1 = (int) (1.5F * f); + } + } + + this.charWidthFloat[i1] = (float) (l1 + 1) / f + 1.0F; + } + + FontUtils.readCustomCharWidths(properties, this.charWidthFloat); + + for (int j3 = 0; j3 < this.charWidth.length; ++j3) { + this.charWidth[j3] = Math.round(this.charWidthFloat[j3]); + } + } + + private void readGlyphSizes() { + InputStream inputstream = null; + + try { + inputstream = this.getResourceInputStream(new ResourceLocation("font/glyph_sizes.bin")); + inputstream.read(this.glyphWidth); + } catch (final IOException ioexception) { + throw new RuntimeException(ioexception); + } finally { + IOUtils.closeQuietly(inputstream); + } + } + + private float func_181559_a(final char p_181559_1_, final boolean p_181559_2_) { + if (p_181559_1_ != 32 && p_181559_1_ != 160) { + final int i = "\u00c0\u00c1\u00c2\u00c8\u00ca\u00cb\u00cd\u00d3\u00d4\u00d5\u00da\u00df\u00e3\u00f5\u011f\u0130\u0131\u0152\u0153\u015e\u015f\u0174\u0175\u017e\u0207\u0000\u0000\u0000\u0000\u0000\u0000\u0000 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u0000\u00c7\u00fc\u00e9\u00e2\u00e4\u00e0\u00e5\u00e7\u00ea\u00eb\u00e8\u00ef\u00ee\u00ec\u00c4\u00c5\u00c9\u00e6\u00c6\u00f4\u00f6\u00f2\u00fb\u00f9\u00ff\u00d6\u00dc\u00f8\u00a3\u00d8\u00d7\u0192\u00e1\u00ed\u00f3\u00fa\u00f1\u00d1\u00aa\u00ba\u00bf\u00ae\u00ac\u00bd\u00bc\u00a1\u00ab\u00bb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\u03b2\u0393\u03c0\u03a3\u03c3\u03bc\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u2205\u2208\u2229\u2261\u00b1\u2265\u2264\u2320\u2321\u00f7\u2248\u00b0\u2219\u00b7\u221a\u207f\u00b2\u25a0\u0000".indexOf(p_181559_1_); + return i != -1 && !this.unicodeFlag ? this.renderDefaultChar(i, p_181559_2_) : this.renderUnicodeChar(p_181559_1_, p_181559_2_); + } else { + return !this.unicodeFlag ? this.charWidthFloat[p_181559_1_] : 4.0F; + } + } + + /** + * Render a single character with the default.png font at current (posX,posY) location... + */ + private float renderDefaultChar(final int p_78266_1_, final boolean p_78266_2_) { + final int i = p_78266_1_ % 16 * 8; + final int j = p_78266_1_ / 16 * 8; + final int k = p_78266_2_ ? 1 : 0; + this.bindTexture(this.locationFontTexture); + final float f = this.charWidthFloat[p_78266_1_]; + final float f1 = 7.99F; + GL11.glBegin(GL11.GL_TRIANGLE_STRIP); + GL11.glTexCoord2f((float) i / 128.0F, (float) j / 128.0F); + GL11.glVertex3f(this.posX + (float) k, this.posY, 0.0F); + GL11.glTexCoord2f((float) i / 128.0F, ((float) j + 7.99F) / 128.0F); + GL11.glVertex3f(this.posX - (float) k, this.posY + 7.99F, 0.0F); + GL11.glTexCoord2f(((float) i + f1 - 1.0F) / 128.0F, (float) j / 128.0F); + GL11.glVertex3f(this.posX + f1 - 1.0F + (float) k, this.posY, 0.0F); + GL11.glTexCoord2f(((float) i + f1 - 1.0F) / 128.0F, ((float) j + 7.99F) / 128.0F); + GL11.glVertex3f(this.posX + f1 - 1.0F - (float) k, this.posY + 7.99F, 0.0F); + GL11.glEnd(); + return f; + } + + private ResourceLocation getUnicodePageLocation(final int p_111271_1_) { + if (unicodePageLocations[p_111271_1_] == null) { + unicodePageLocations[p_111271_1_] = new ResourceLocation(String.format("textures/font/unicode_page_%02x.png", Integer.valueOf(p_111271_1_))); + unicodePageLocations[p_111271_1_] = FontUtils.getHdFontLocation(unicodePageLocations[p_111271_1_]); + } + + return unicodePageLocations[p_111271_1_]; + } + + /** + * Load one of the /font/glyph_XX.png into a new GL texture and store the texture ID in glyphTextureName array. + */ + private void loadGlyphTexture(final int p_78257_1_) { + this.bindTexture(this.getUnicodePageLocation(p_78257_1_)); + } + + /** + * Render a single Unicode character at current (posX,posY) location using one of the /font/glyph_XX.png files... + */ + private float renderUnicodeChar(final char p_78277_1_, final boolean p_78277_2_) { + if (this.glyphWidth[p_78277_1_] == 0) { + return 0.0F; + } else { + final int i = p_78277_1_ / 256; + this.loadGlyphTexture(i); + final int j = this.glyphWidth[p_78277_1_] >>> 4; + final int k = this.glyphWidth[p_78277_1_] & 15; + final float f = (float) j; + final float f1 = (float) (k + 1); + final float f2 = (float) (p_78277_1_ % 16 * 16) + f; + final float f3 = (float) ((p_78277_1_ & 255) / 16 * 16); + final float f4 = f1 - f - 0.02F; + final float f5 = p_78277_2_ ? 1.0F : 0.0F; + GL11.glBegin(GL11.GL_TRIANGLE_STRIP); + GL11.glTexCoord2f(f2 / 256.0F, f3 / 256.0F); + GL11.glVertex3f(this.posX + f5, this.posY, 0.0F); + GL11.glTexCoord2f(f2 / 256.0F, (f3 + 15.98F) / 256.0F); + GL11.glVertex3f(this.posX - f5, this.posY + 7.99F, 0.0F); + GL11.glTexCoord2f((f2 + f4) / 256.0F, f3 / 256.0F); + GL11.glVertex3f(this.posX + f4 / 2.0F + f5, this.posY, 0.0F); + GL11.glTexCoord2f((f2 + f4) / 256.0F, (f3 + 15.98F) / 256.0F); + GL11.glVertex3f(this.posX + f4 / 2.0F - f5, this.posY + 7.99F, 0.0F); + GL11.glEnd(); + return (f1 - f) / 2.0F + 1.0F; + } + } + + /** + * Draws the specified string with a shadow. + */ + public int drawStringWithShadow(final String text, final double x, final double y, final int color) { + return this.drawString(text, x, y, color, true); + } + + /** + * Draws the specified string. + */ + public int drawString(final String text, final double x, final double y, final int color) { + return this.drawString(text, x, y, color, false); + } + + /** + * Draws the specified string. + */ + public int drawString(String text, double x, double y, int color, boolean dropShadow) { + y -= 1; + this.enableAlpha(); + + if (this.blend) { + //GlStateManager.getBlendState(this.oldBlendState); + //GlStateManager.enableBlend(); + //GlStateManager.blendFunc(770, 771); + } + + this.resetStyles(); + int i; + + if (dropShadow) { + i = this.renderString(text, (float) x + 1.0F, (float) y + 1.0F, color, true); + i = Math.max(i, this.renderString(text, (float) x, (float) y, color, false)); + } else { + i = this.renderString(text, (float) x, (float) y, color, false); + } + + if (this.blend) { + //GlStateManager.setBlendState(this.oldBlendState); + } + + return i; + } + + /** + * Apply Unicode Bidirectional Algorithm to string and return a new possibly reordered string for visual rendering. + */ + private String bidiReorder(final String p_147647_1_) { + try { + final Bidi bidi = new Bidi((new ArabicShaping(8)).shape(p_147647_1_), 127); + bidi.setReorderingMode(0); + return bidi.writeReordered(2); + } catch (final ArabicShapingException var3) { + return p_147647_1_; + } + } + + /** + * Reset all style flag fields in the class to false; called at the start of string rendering + */ + private void resetStyles() { + this.randomStyle = false; + this.boldStyle = false; + this.italicStyle = false; + this.underlineStyle = false; + this.strikethroughStyle = false; + } + + /** + * Render a single line string at the current (posX,posY) and update posX + */ + private void renderStringAtPos(final String p_78255_1_, final boolean p_78255_2_) { + for (int i = 0; i < p_78255_1_.length(); ++i) { + char c0 = p_78255_1_.charAt(i); + + if (c0 == 167 && i + 1 < p_78255_1_.length()) { + int l = "0123456789abcdefklmnor".indexOf(p_78255_1_.toLowerCase(Locale.ENGLISH).charAt(i + 1)); + + if (l < 16) { + this.randomStyle = false; + this.boldStyle = false; + this.strikethroughStyle = false; + this.underlineStyle = false; + this.italicStyle = false; + + if (l < 0) { + l = 15; + } + + if (p_78255_2_) { + l += 16; + } + + int i1 = this.colorCode[l]; + + if (Config.isCustomColors()) { + i1 = CustomColors.getTextColor(l, i1); + } + + this.textColor = i1; + this.setColor((float) (i1 >> 16) / 255.0F, (float) (i1 >> 8 & 255) / 255.0F, (float) (i1 & 255) / 255.0F, this.alpha); + } else if (l == 17) { + this.boldStyle = true; + } else if (l == 21) { + this.randomStyle = false; + this.boldStyle = false; + this.strikethroughStyle = false; + this.underlineStyle = false; + this.italicStyle = false; + this.setColor(this.red, this.blue, this.green, this.alpha); + } + + ++i; + } else { + + final float f1 = !this.unicodeFlag ? this.offsetBold : 0.5F; + final boolean flag = (c0 == 0 || this.unicodeFlag) && p_78255_2_; + + if (flag) { + this.posX -= f1; + this.posY -= f1; + } + + float f = this.func_181559_a(c0, this.italicStyle); + + if (flag) { + this.posX += f1; + this.posY += f1; + } + + if (this.boldStyle) { + this.posX += f1; + + if (flag) { + this.posX -= f1; + this.posY -= f1; + } + + this.func_181559_a(c0, this.italicStyle); + this.posX -= f1; + + if (flag) { + this.posX += f1; + this.posY += f1; + } + + f += f1; + } + + this.doDraw(f); + } + } + } + + protected void doDraw(final float p_doDraw_1_) { + + if (this.underlineStyle) { + final Tessellator tessellator1 = Tessellator.getInstance(); + final WorldRenderer worldrenderer1 = tessellator1.getWorldRenderer(); + GlStateManager.disableTexture2D(); + worldrenderer1.begin(7, DefaultVertexFormats.POSITION); + final int i = this.underlineStyle ? -1 : 0; + worldrenderer1.pos(this.posX + (float) i, this.posY + (float) this.FONT_HEIGHT, 0.0D).endVertex(); + worldrenderer1.pos(this.posX + p_doDraw_1_, this.posY + (float) this.FONT_HEIGHT, 0.0D).endVertex(); + worldrenderer1.pos(this.posX + p_doDraw_1_, this.posY + (float) this.FONT_HEIGHT - 1.0F, 0.0D).endVertex(); + worldrenderer1.pos(this.posX + (float) i, this.posY + (float) this.FONT_HEIGHT - 1.0F, 0.0D).endVertex(); + tessellator1.draw(); + GlStateManager.enableTexture2D(); + } + + this.posX += p_doDraw_1_; + } + + /** + * Render string either left or right aligned depending on bidiFlag + */ + private int renderStringAligned(final String text, int x, final int y, final int p_78274_4_, final int color, final boolean dropShadow) { + if (this.bidiFlag) { + final int i = this.width(this.bidiReorder(text)); + x = x + p_78274_4_ - i; + } + + return this.renderString(text, (float) x, (float) y, color, dropShadow); + } + + /** + * Render single line string by setting GL color, current (posX,posY), and calling renderStringAtPos() + */ + private int renderString(String text, final float x, final float y, int color, final boolean dropShadow) { + if (text == null) { + return 0; + } else { + if (this.bidiFlag) { + text = this.bidiReorder(text); + } + + if ((color & -67108864) == 0) { + color |= -16777216; + } + + if (dropShadow) { + color = (color & 16579836) >> 2 | color & -16777216; + } + + this.red = (float) (color >> 16 & 255) / 255.0F; + this.blue = (float) (color >> 8 & 255) / 255.0F; + this.green = (float) (color & 255) / 255.0F; + this.alpha = (float) (color >> 24 & 255) / 255.0F; + this.setColor(this.red, this.blue, this.green, this.alpha); + this.posX = x; + this.posY = y; + this.renderStringAtPos(text, dropShadow); + return (int) this.posX; + } + } + + /** + * Returns the width of this string. Equivalent of FontMetrics.stringWidth(String s). + */ + public int width(String text) { + if (text == null) { + return 0; + } else { + float f = 0.0F; + boolean flag = false; + + for (int i = 0; i < text.length(); ++i) { + char c0 = text.charAt(i); + float f1 = this.getCharWidthFloat(c0); + + if (f1 < 0.0F && i < text.length() - 1) { + ++i; + c0 = text.charAt(i); + + if (c0 != 108 && c0 != 76) { + if (c0 == 114 || c0 == 82) { + flag = false; + } + } else { + flag = true; + } + + f1 = 0.0F; + } + + f += f1; + + if (flag && f1 > 0.0F) { + f += this.unicodeFlag ? 1.0F : this.offsetBold; + } + } + + return Math.round(f); + } + } + + @Override + public int drawCenteredString(String text, double x, double y, int color) { + return drawString(text, x - (width(text) >> 1), y, color, false); // whoever bitshifted this instead of diving by 2 is a fucking nerd and virgin + } + + @Override + public int drawRightString(String text, double x, double y, int color) { + return drawString(text, x - (width(text)), y, color, false); + } + + @Override + public float height() { + return FONT_HEIGHT; + } + + /** + * Returns the width of this character as rendered. + */ + public int getCharWidth(final char character) { + return Math.round(this.getCharWidthFloat(character)); + } + + private float getCharWidthFloat(final char p_getCharWidthFloat_1_) { + if (p_getCharWidthFloat_1_ == 167) { + return -1.0F; + } else if (p_getCharWidthFloat_1_ != 32 && p_getCharWidthFloat_1_ != 160) { + final int i = "\u00c0\u00c1\u00c2\u00c8\u00ca\u00cb\u00cd\u00d3\u00d4\u00d5\u00da\u00df\u00e3\u00f5\u011f\u0130\u0131\u0152\u0153\u015e\u015f\u0174\u0175\u017e\u0207\u0000\u0000\u0000\u0000\u0000\u0000\u0000 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u0000\u00c7\u00fc\u00e9\u00e2\u00e4\u00e0\u00e5\u00e7\u00ea\u00eb\u00e8\u00ef\u00ee\u00ec\u00c4\u00c5\u00c9\u00e6\u00c6\u00f4\u00f6\u00f2\u00fb\u00f9\u00ff\u00d6\u00dc\u00f8\u00a3\u00d8\u00d7\u0192\u00e1\u00ed\u00f3\u00fa\u00f1\u00d1\u00aa\u00ba\u00bf\u00ae\u00ac\u00bd\u00bc\u00a1\u00ab\u00bb\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255d\u255c\u255b\u2510\u2514\u2534\u252c\u251c\u2500\u253c\u255e\u255f\u255a\u2554\u2569\u2566\u2560\u2550\u256c\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256b\u256a\u2518\u250c\u2588\u2584\u258c\u2590\u2580\u03b1\u03b2\u0393\u03c0\u03a3\u03c3\u03bc\u03c4\u03a6\u0398\u03a9\u03b4\u221e\u2205\u2208\u2229\u2261\u00b1\u2265\u2264\u2320\u2321\u00f7\u2248\u00b0\u2219\u00b7\u221a\u207f\u00b2\u25a0\u0000".indexOf(p_getCharWidthFloat_1_); + + if (p_getCharWidthFloat_1_ > 0 && i != -1 && !this.unicodeFlag) { + return this.charWidthFloat[i]; + } else if (this.glyphWidth[p_getCharWidthFloat_1_] != 0) { + int j = this.glyphWidth[p_getCharWidthFloat_1_] >>> 4; + int k = this.glyphWidth[p_getCharWidthFloat_1_] & 15; + + if (k > 7) { + k = 15; + j = 0; + } + + ++k; + return (float) ((k - j) / 2 + 1); + } else { + return 0.0F; + } + } else { + return this.charWidthFloat[32]; + } + } + + /** + * Trims a string to fit a specified Width. + */ + public String trimStringToWidth(final String text, final int width) { + return this.trimStringToWidth(text, width, false); + } + + /** + * Trims a string to a specified width, and will reverse it if par3 is set. + */ + public String trimStringToWidth(final String text, final int width, final boolean reverse) { + final StringBuilder stringbuilder = new StringBuilder(); + float f = 0.0F; + final int i = reverse ? text.length() - 1 : 0; + final int j = reverse ? -1 : 1; + boolean flag = false; + boolean flag1 = false; + + for (int k = i; k >= 0 && k < text.length() && f < (float) width; k += j) { + final char c0 = text.charAt(k); + final float f1 = this.getCharWidthFloat(c0); + + if (flag) { + flag = false; + + if (c0 != 108 && c0 != 76) { + if (c0 == 114 || c0 == 82) { + flag1 = false; + } + } else { + flag1 = true; + } + } else if (f1 < 0.0F) { + flag = true; + } else { + f += f1; + + if (flag1) { + ++f; + } + } + + if (f > (float) width) { + break; + } + + if (reverse) { + stringbuilder.insert(0, c0); + } else { + stringbuilder.append(c0); + } + } + + return stringbuilder.toString(); + } + + /** + * Remove all newline characters from the end of the string + */ + private String trimStringNewline(String text) { + while (text != null && text.endsWith("\n")) { + text = text.substring(0, text.length() - 1); + } + + return text; + } + + /** + * Splits and draws a String with wordwrap (maximum length is parameter k) + */ + public void drawSplitString(String str, final int x, final int y, final int wrapWidth, final int textColor) { + if (this.blend) { + //GlStateManager.getBlendState(this.oldBlendState); + //GlStateManager.enableBlend(); + //GlStateManager.blendFunc(770, 771); + } + + this.resetStyles(); + this.textColor = textColor; + str = this.trimStringNewline(str); + this.renderSplitString(str, x, y, wrapWidth, false); + + if (this.blend) { + //GlStateManager.setBlendState(this.oldBlendState); + } + } + + /** + * Perform actual work of rendering a multi-line string with wordwrap and with darker drop shadow color if flag is + * set + */ + private void renderSplitString(final String str, final int x, int y, final int wrapWidth, final boolean addShadow) { + for (final String s : this.listFormattedStringToWidth(str, wrapWidth)) { + this.renderStringAligned(s, x, y, wrapWidth, this.textColor, addShadow); + y += this.FONT_HEIGHT; + } + } + + /** + * Returns the width of the wordwrapped String (maximum length is parameter k) + */ + public int splitStringWidth(final String p_78267_1_, final int p_78267_2_) { + return this.FONT_HEIGHT * this.listFormattedStringToWidth(p_78267_1_, p_78267_2_).size(); + } + + /** + * Set unicodeFlag controlling whether strings should be rendered with Unicode fonts instead of the default.png + * font. + */ + public void setUnicodeFlag(final boolean unicodeFlagIn) { + this.unicodeFlag = unicodeFlagIn; + } + + /** + * Get unicodeFlag controlling whether strings should be rendered with Unicode fonts instead of the default.png + * font. + */ + public boolean getUnicodeFlag() { + return this.unicodeFlag; + } + + /** + * Set bidiFlag to control if the Unicode Bidirectional Algorithm should be run before rendering any string. + */ + public void setBidiFlag(final boolean bidiFlagIn) { + this.bidiFlag = bidiFlagIn; + } + + public List listFormattedStringToWidth(final String str, final int wrapWidth) { + return Arrays.asList(this.wrapFormattedStringToWidth(str, wrapWidth).split("\n")); + } + + /** + * Inserts newline and formatting into a string to wrap it within the specified width. + */ + String wrapFormattedStringToWidth(final String str, final int wrapWidth) { + if (str.length() <= 1) { + return str; + } else { + final int i = this.sizeStringToWidth(str, wrapWidth); + + if (str.length() <= i) { + return str; + } else { + final String s = str.substring(0, i); + final char c0 = str.charAt(i); + final boolean flag = c0 == 32 || c0 == 10; + final String s1 = getFormatFromString(s) + str.substring(i + (flag ? 1 : 0)); + return s + "\n" + this.wrapFormattedStringToWidth(s1, wrapWidth); + } + } + } + + /** + * Determines how many characters from the string will fit into the specified width. + */ + private int sizeStringToWidth(final String str, final int wrapWidth) { + final int i = str.length(); + float f = 0.0F; + int j = 0; + int k = -1; + + for (boolean flag = false; j < i; ++j) { + final char c0 = str.charAt(j); + + switch (c0) { + case '\n': + --j; + break; + + case ' ': + k = j; + + default: + f += (float) this.getCharWidth(c0); + + if (flag) { + ++f; + } + + break; + + case '\u00a7': + if (j < i - 1) { + ++j; + final char c1 = str.charAt(j); + + if (c1 != 108 && c1 != 76) { + if (c1 == 114 || c1 == 82 || isFormatColor(c1)) { + flag = false; + } + } else { + flag = true; + } + } + } + + if (c0 == 10) { + ++j; + k = j; + break; + } + + if (Math.round(f) > wrapWidth) { + break; + } + } + + return j != i && k != -1 && k < j ? k : j; + } + + /** + * Checks if the char code is a hexadecimal character, used to set colour. + */ + private static boolean isFormatColor(final char colorChar) { + return colorChar >= 48 && colorChar <= 57 || colorChar >= 97 && colorChar <= 102 || colorChar >= 65 && colorChar <= 70; + } + + /** + * Checks if the char code is O-K...lLrRk-o... used to set special formatting. + */ + private static boolean isFormatSpecial(final char formatChar) { + return formatChar >= 107 && formatChar <= 111 || formatChar >= 75 && formatChar <= 79 || formatChar == 114 || formatChar == 82; + } + + /** + * Digests a string for nonprinting formatting characters then returns a string containing only that formatting. + */ + public static String getFormatFromString(final String text) { + String s = ""; + int i = -1; + final int j = text.length(); + + while ((i = text.indexOf(167, i + 1)) != -1) { + if (i < j - 1) { + final char c0 = text.charAt(i + 1); + + if (isFormatColor(c0)) { + s = "\u00a7" + c0; + } else if (isFormatSpecial(c0)) { + s = s + "\u00a7" + c0; + } + } + } + + return s; + } + + /** + * Get bidiFlag that controls if the Unicode Bidirectional Algorithm should be run before rendering any string + */ + public boolean getBidiFlag() { + return this.bidiFlag; + } + + public int getColorCode(final char character) { + final int i = "0123456789abcdef".indexOf(character); + + if (i >= 0 && i < this.colorCode.length) { + int j = this.colorCode[i]; + + if (Config.isCustomColors()) { + j = CustomColors.getTextColor(i, j); + } + + return j; + } else { + return 16777215; + } + } + + protected void setColor(final float p_setColor_1_, final float p_setColor_2_, final float p_setColor_3_, final float p_setColor_4_) { + GlStateManager.color(p_setColor_1_, p_setColor_2_, p_setColor_3_, p_setColor_4_); + } + + protected void enableAlpha() { + GlStateManager.enableAlpha(); + } + + protected void bindTexture(final ResourceLocation p_bindTexture_1_) { + this.renderEngine.bindTexture(p_bindTexture_1_); + } + + protected InputStream getResourceInputStream(final ResourceLocation p_getResourceInputStream_1_) throws IOException { + return Minecraft.getMinecraft().getResourceManager().getResource(p_getResourceInputStream_1_).getInputStream(); + } +} diff --git a/src/main/java/rip/athena/client/utils/render/DrawUtils.java b/src/main/java/rip/athena/client/utils/render/DrawUtils.java index 88ea0ad5..ce5913f9 100644 --- a/src/main/java/rip/athena/client/utils/render/DrawUtils.java +++ b/src/main/java/rip/athena/client/utils/render/DrawUtils.java @@ -113,15 +113,26 @@ public enum DrawUtils { GL11.glColor4f((float) f1, (float) f2, (float) f3, (float) f); } + public static void glColor(final int hex) { + final float a = (hex >> 24 & 0xFF) / 255.0F; + final float r = (hex >> 16 & 0xFF) / 255.0F; + final float g = (hex >> 8 & 0xFF) / 255.0F; + final float b = (hex & 0xFF) / 255.0F; + GL11.glColor4f(r, g, b, a); + } + public static void drawImage(ResourceLocation image, int x, int y, int width, int height) { - GlStateManager.enableAlpha(); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); GlStateManager.enableBlend(); - GlStateManager.blendFunc(770, 771); + GlStateManager.enableAlpha(); + GlStateManager.alphaFunc(GL11.GL_GREATER, 0.0F); + color(-1); + OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); Minecraft.getMinecraft().getTextureManager().bindTexture(image); - GlStateManager.color(1, 1, 1); - Gui.drawModalRectWithCustomSizedTexture(x, y, 0.0F, 0.0F, width, height, width, height); + Gui.drawModalRectWithCustomSizedTexture(x, y, 0, 0, width, height, width, height); + GlStateManager.resetColor(); GlStateManager.disableBlend(); - GlStateManager.disableAlpha(); } public static int reAlpha(int color, float alpha) { diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Avergent-Regular.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Avergent-Regular.ttf new file mode 100644 index 00000000..8cb868d9 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Avergent-Regular.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Biko_Regular.otf b/src/main/resources/assets/minecraft/Athena/gui/font/Biko_Regular.otf new file mode 100644 index 00000000..da7b16e4 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Biko_Regular.otf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Comfortaa.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Comfortaa.ttf new file mode 100644 index 00000000..3ac6a777 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Comfortaa.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Dreamscape.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Dreamscape.ttf new file mode 100644 index 00000000..81bed2e6 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Dreamscape.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Hack-Regular.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Hack-Regular.ttf new file mode 100644 index 00000000..92a90cb0 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Hack-Regular.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Icon-1.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Icon-1.ttf new file mode 100644 index 00000000..f7d49b6c Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Icon-1.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Icon-2.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Icon-2.ttf new file mode 100644 index 00000000..b73fae2f Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Icon-2.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Icon-3.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Icon-3.ttf new file mode 100644 index 00000000..12ff6800 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Icon-3.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Light.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Light.ttf new file mode 100644 index 00000000..c6db4b16 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Light.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Montserrat-Hairline.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Montserrat-Hairline.ttf new file mode 100644 index 00000000..b08ab5e5 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Montserrat-Hairline.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Montserrat-Medium.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Montserrat-Medium.ttf new file mode 100644 index 00000000..0f0fd1d5 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Montserrat-Medium.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/MuseoSans_900.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/MuseoSans_900.ttf new file mode 100644 index 00000000..16bede7a Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/MuseoSans_900.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/NotoSans-Regular.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/NotoSans-Regular.ttf new file mode 100644 index 00000000..973bc2ed Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/NotoSans-Regular.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Nunito-Bold.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Nunito-Bold.ttf new file mode 100644 index 00000000..6519feb7 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Nunito-Bold.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Nunito-Light.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Nunito-Light.ttf new file mode 100644 index 00000000..8a0736c4 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Nunito-Light.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Nunito-Regular.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Nunito-Regular.ttf new file mode 100644 index 00000000..c8c90b7c Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Nunito-Regular.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Black.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Black.ttf new file mode 100644 index 00000000..71c0f995 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Black.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-BlackItalic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-BlackItalic.ttf new file mode 100644 index 00000000..7aeb58bd Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-BlackItalic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Bold.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Bold.ttf new file mode 100644 index 00000000..00559eeb Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Bold.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-BoldItalic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-BoldItalic.ttf new file mode 100644 index 00000000..e61e8e88 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-BoldItalic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraBold.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraBold.ttf new file mode 100644 index 00000000..df709360 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraBold.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraBoldItalic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraBoldItalic.ttf new file mode 100644 index 00000000..14d2b375 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraBoldItalic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraLight.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraLight.ttf new file mode 100644 index 00000000..e76ec69a Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraLight.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraLightItalic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraLightItalic.ttf new file mode 100644 index 00000000..89513d94 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ExtraLightItalic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Italic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Italic.ttf new file mode 100644 index 00000000..12b7b3c4 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Italic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Light.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Light.ttf new file mode 100644 index 00000000..bc36bcc2 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Light.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-LightItalic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-LightItalic.ttf new file mode 100644 index 00000000..9e70be6a Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-LightItalic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Medium.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Medium.ttf new file mode 100644 index 00000000..6bcdcc27 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Medium.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-MediumItalic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-MediumItalic.ttf new file mode 100644 index 00000000..be67410f Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-MediumItalic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Regular.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Regular.ttf new file mode 100644 index 00000000..9f0c71b7 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Regular.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-SemiBold.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-SemiBold.ttf new file mode 100644 index 00000000..74c726e3 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-SemiBold.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-SemiBoldItalic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-SemiBoldItalic.ttf new file mode 100644 index 00000000..3e6c9422 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-SemiBoldItalic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Thin.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Thin.ttf new file mode 100644 index 00000000..03e73661 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-Thin.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ThinItalic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ThinItalic.ttf new file mode 100644 index 00000000..e26db5dd Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Poppins-ThinItalic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Quart-Outline.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Quart-Outline.ttf new file mode 100644 index 00000000..b98fe791 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Quart-Outline.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Quart-Regular.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Quart-Regular.ttf new file mode 100644 index 00000000..113905d7 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Quart-Regular.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Quicksand-Light.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Quicksand-Light.ttf new file mode 100644 index 00000000..c7859e12 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Quicksand-Light.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Quicksand-Medium.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Quicksand-Medium.ttf new file mode 100644 index 00000000..d4b02c5c Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Quicksand-Medium.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Roboto-Light.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Roboto-Light.ttf new file mode 100644 index 00000000..3d6861b4 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Roboto-Light.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/SF-UI-Pro.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/SF-UI-Pro.ttf new file mode 100644 index 00000000..e8c7c7ec Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/SF-UI-Pro.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Somatic-Rounded.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Somatic-Rounded.ttf new file mode 100644 index 00000000..13e47021 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Somatic-Rounded.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/Tahoma.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/Tahoma.ttf new file mode 100644 index 00000000..e90e9cba Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/Tahoma.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/TahomaBold.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/TahomaBold.ttf new file mode 100644 index 00000000..016a41f8 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/TahomaBold.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_bold.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_bold.ttf new file mode 100644 index 00000000..d847195c Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_bold.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_bold_italic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_bold_italic.ttf new file mode 100644 index 00000000..129d12df Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_bold_italic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_italic.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_italic.ttf new file mode 100644 index 00000000..5fc56d4c Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_italic.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_light.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_light.ttf new file mode 100644 index 00000000..33de1c39 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_light.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_medium.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_medium.ttf new file mode 100644 index 00000000..fd818d6f Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_medium.ttf differ diff --git a/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_regular.ttf b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_regular.ttf new file mode 100644 index 00000000..c0442ee2 Binary files /dev/null and b/src/main/resources/assets/minecraft/Athena/gui/font/product_sans_regular.ttf differ diff --git a/workspace/crash-reports/crash-2023-06-07_16.39.42-client.txt b/workspace/crash-reports/crash-2023-06-07_16.39.42-client.txt new file mode 100644 index 00000000..0ed84212 --- /dev/null +++ b/workspace/crash-reports/crash-2023-06-07_16.39.42-client.txt @@ -0,0 +1,100 @@ +---- Minecraft Crash Report ---- +// This doesn't make any sense! + +Time: 6/7/23 4:39 PM +Description: Rendering screen + +java.lang.StringIndexOutOfBoundsException: String index out of range: -1 + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:193) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1431) + at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1151) + at net.minecraft.client.Minecraft.run(Minecraft.java:430) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + + +A detailed walkthrough of the error, its code path and all known details is as follows: +--------------------------------------------------------------------------------------- + +-- Head -- +Stacktrace: + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:193) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + +-- Screen render details -- +Details: + Screen name: rip.athena.client.gui.clickgui.IngameMenu + Mouse location: Scaled: (480, 252). Absolute: (960, 504) + Screen size: Scaled: (960, 505). Absolute: (1920, 1009). Scale factor of 2 + +-- Affected level -- +Details: + Level name: MpServer + All players: 1 total; [EntityPlayerSP['Player143'/23, l='MpServer', x=352.64, y=90.00, z=1158.17]] + Chunk stats: MultiplayerChunkCache: 35, 35 + Level seed: 0 + Level generator: ID 02 - largeBiomes, ver 0. Features enabled: false + Level generator options: + Level spawn location: 5.00,64.00,557.00 - World: (5,64,557), Chunk: (at 5,4,13 in 0,34; contains blocks 0,0,544 to 15,255,559), Region: (0,1; contains chunks 0,32 to 31,63, blocks 0,0,512 to 511,255,1023) + Level time: 218188 game time, 218188 day time + Level dimension: 0 + Level storage version: 0x00000 - Unknown? + Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) + Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false + Forced entities: 11 total; [EntityItem['item.item.rottenFlesh'/4546, l='MpServer', x=324.41, y=71.00, z=1195.81], EntityItem['item.item.arrow'/4548, l='MpServer', x=319.47, y=72.00, z=1180.91], EntityItem['item.item.arrow'/4549, l='MpServer', x=319.00, y=72.00, z=1179.94], EntityItem['item.item.arrow'/4613, l='MpServer', x=320.84, y=80.00, z=1148.88], EntityWitch['Witch'/6223, l='MpServer', x=304.50, y=28.00, z=1117.50], EntityZombie['Zombie'/6896, l='MpServer', x=349.50, y=24.00, z=1109.50], EntityMinecartChest['container.minecart'/4977, l='MpServer', x=305.50, y=24.06, z=1110.50], EntityZombie['Zombie'/6897, l='MpServer', x=346.59, y=24.00, z=1113.44], EntityPlayerSP['Player143'/23, l='MpServer', x=352.64, y=90.00, z=1158.17], EntityItem['item.item.arrow'/6264, l='MpServer', x=394.91, y=68.00, z=1176.94], EntityMinecartChest['container.minecart'/28, l='MpServer', x=306.50, y=28.06, z=1123.50]] + Retry entities: 0 total; [] + Server brand: vanilla + Server type: Integrated singleplayer server +Stacktrace: + at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:401) + at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2791) + at net.minecraft.client.Minecraft.run(Minecraft.java:451) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + +-- System Details -- +Details: + Minecraft Version: 1.8.8 + Operating System: Windows 10 (amd64) version 10.0 + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + Java Version: 1.8.0_202, Oracle Corporation + Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation + Memory: 127047864 bytes (121 MB) / 1017643008 bytes (970 MB) up to 3801088000 bytes (3625 MB) + JVM Flags: 0 total; + IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 99 + Launched Version: mcp + LWJGL: 2.9.4 + OpenGL: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 GL version 4.6.0 NVIDIA 532.03, NVIDIA Corporation + GL Caps: Using GL 1.3 multitexturing. +Using GL 1.3 texture combiners. +Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. +Shaders are available because OpenGL 2.1 is supported. +VBOs are available because OpenGL 1.5 is supported. + + Using VBOs: Yes + Is Modded: Very likely; Jar signature invalidated + Type: Client (map_client.txt) + Resource Packs: ! §bPotfast 5kay.zip + Current Language: English (US) + Profiler Position: N/A (disabled) + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + OptiFine Version: OptiFine_1.8.8_HD_U_H8 + Render Distance Chunks: 2 + Mipmaps: 0 + Anisotropic Filtering: 1 + Antialiasing: 0 + Multitexture: false + Shaders: null + OpenGlVersion: 4.6.0 NVIDIA 532.03 + OpenGlRenderer: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 + OpenGlVendor: NVIDIA Corporation + CpuCount: 12 \ No newline at end of file diff --git a/workspace/crash-reports/crash-2023-06-07_16.51.46-client.txt b/workspace/crash-reports/crash-2023-06-07_16.51.46-client.txt new file mode 100644 index 00000000..310092c1 --- /dev/null +++ b/workspace/crash-reports/crash-2023-06-07_16.51.46-client.txt @@ -0,0 +1,100 @@ +---- Minecraft Crash Report ---- +// Hey, that tickles! Hehehe! + +Time: 6/7/23 4:51 PM +Description: Rendering screen + +java.lang.StringIndexOutOfBoundsException: String index out of range: -1 + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:193) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1431) + at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1151) + at net.minecraft.client.Minecraft.run(Minecraft.java:430) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + + +A detailed walkthrough of the error, its code path and all known details is as follows: +--------------------------------------------------------------------------------------- + +-- Head -- +Stacktrace: + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:193) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + +-- Screen render details -- +Details: + Screen name: rip.athena.client.gui.clickgui.IngameMenu + Mouse location: Scaled: (480, 252). Absolute: (960, 504) + Screen size: Scaled: (960, 505). Absolute: (1920, 1009). Scale factor of 2 + +-- Affected level -- +Details: + Level name: MpServer + All players: 1 total; [EntityPlayerSP['Player123'/23, l='MpServer', x=349.85, y=91.73, z=1154.55]] + Chunk stats: MultiplayerChunkCache: 30, 30 + Level seed: 0 + Level generator: ID 02 - largeBiomes, ver 0. Features enabled: false + Level generator options: + Level spawn location: 5.00,64.00,557.00 - World: (5,64,557), Chunk: (at 5,4,13 in 0,34; contains blocks 0,0,544 to 15,255,559), Region: (0,1; contains chunks 0,32 to 31,63, blocks 0,0,512 to 511,255,1023) + Level time: 231229 game time, 231229 day time + Level dimension: 0 + Level storage version: 0x00000 - Unknown? + Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) + Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false + Forced entities: 6 total; [EntityZombie['Zombie'/3969, l='MpServer', x=319.50, y=72.00, z=1192.50], EntityPlayerSP['Player123'/23, l='MpServer', x=349.85, y=91.73, z=1154.55], EntitySkeleton['Skeleton'/3976, l='MpServer', x=357.35, y=73.00, z=1125.77], EntityMinecartChest['container.minecart'/26, l='MpServer', x=306.50, y=28.06, z=1123.50], EntitySkeleton['Skeleton'/4058, l='MpServer', x=331.44, y=73.00, z=1130.13], EntityCreeper['Creeper'/3964, l='MpServer', x=318.50, y=72.00, z=1191.50]] + Retry entities: 0 total; [] + Server brand: vanilla + Server type: Integrated singleplayer server +Stacktrace: + at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:401) + at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2791) + at net.minecraft.client.Minecraft.run(Minecraft.java:451) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + +-- System Details -- +Details: + Minecraft Version: 1.8.8 + Operating System: Windows 10 (amd64) version 10.0 + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + Java Version: 1.8.0_202, Oracle Corporation + Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation + Memory: 138369448 bytes (131 MB) / 1030750208 bytes (983 MB) up to 3801088000 bytes (3625 MB) + JVM Flags: 0 total; + IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 99 + Launched Version: mcp + LWJGL: 2.9.4 + OpenGL: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 GL version 4.6.0 NVIDIA 532.03, NVIDIA Corporation + GL Caps: Using GL 1.3 multitexturing. +Using GL 1.3 texture combiners. +Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. +Shaders are available because OpenGL 2.1 is supported. +VBOs are available because OpenGL 1.5 is supported. + + Using VBOs: Yes + Is Modded: Very likely; Jar signature invalidated + Type: Client (map_client.txt) + Resource Packs: ! §bPotfast 5kay.zip + Current Language: English (US) + Profiler Position: N/A (disabled) + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + OptiFine Version: OptiFine_1.8.8_HD_U_H8 + Render Distance Chunks: 2 + Mipmaps: 0 + Anisotropic Filtering: 1 + Antialiasing: 0 + Multitexture: false + Shaders: null + OpenGlVersion: 4.6.0 NVIDIA 532.03 + OpenGlRenderer: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 + OpenGlVendor: NVIDIA Corporation + CpuCount: 12 \ No newline at end of file diff --git a/workspace/crash-reports/crash-2023-06-07_16.52.09-client.txt b/workspace/crash-reports/crash-2023-06-07_16.52.09-client.txt new file mode 100644 index 00000000..3c2c836b --- /dev/null +++ b/workspace/crash-reports/crash-2023-06-07_16.52.09-client.txt @@ -0,0 +1,100 @@ +---- Minecraft Crash Report ---- +// Daisy, daisy... + +Time: 6/7/23 4:52 PM +Description: Rendering screen + +java.lang.StringIndexOutOfBoundsException: String index out of range: -1 + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:193) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1431) + at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1151) + at net.minecraft.client.Minecraft.run(Minecraft.java:430) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + + +A detailed walkthrough of the error, its code path and all known details is as follows: +--------------------------------------------------------------------------------------- + +-- Head -- +Stacktrace: + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:193) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + +-- Screen render details -- +Details: + Screen name: rip.athena.client.gui.clickgui.IngameMenu + Mouse location: Scaled: (279, 235). Absolute: (559, 538) + Screen size: Scaled: (960, 505). Absolute: (1920, 1009). Scale factor of 2 + +-- Affected level -- +Details: + Level name: MpServer + All players: 1 total; [EntityPlayerSP['Player113'/23, l='MpServer', x=349.85, y=91.73, z=1154.55]] + Chunk stats: MultiplayerChunkCache: 25, 25 + Level seed: 0 + Level generator: ID 02 - largeBiomes, ver 0. Features enabled: false + Level generator options: + Level spawn location: 5.00,64.00,557.00 - World: (5,64,557), Chunk: (at 5,4,13 in 0,34; contains blocks 0,0,544 to 15,255,559), Region: (0,1; contains chunks 0,32 to 31,63, blocks 0,0,512 to 511,255,1023) + Level time: 231262 game time, 231262 day time + Level dimension: 0 + Level storage version: 0x00000 - Unknown? + Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) + Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false + Forced entities: 7 total; [EntitySkeleton['Skeleton'/32, l='MpServer', x=331.44, y=73.00, z=1130.13], EntitySkeleton['Skeleton'/34, l='MpServer', x=357.41, y=73.00, z=1125.13], EntitySkeleton['Skeleton'/73, l='MpServer', x=335.50, y=75.00, z=1131.50], EntityPlayerSP['Player113'/23, l='MpServer', x=349.85, y=91.73, z=1154.55], EntityMinecartChest['container.minecart'/29, l='MpServer', x=306.50, y=28.06, z=1123.50], EntityCreeper['Creeper'/30, l='MpServer', x=318.50, y=72.00, z=1191.50], EntityZombie['Zombie'/31, l='MpServer', x=319.50, y=72.00, z=1192.50]] + Retry entities: 0 total; [] + Server brand: vanilla + Server type: Integrated singleplayer server +Stacktrace: + at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:401) + at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2791) + at net.minecraft.client.Minecraft.run(Minecraft.java:451) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + +-- System Details -- +Details: + Minecraft Version: 1.8.8 + Operating System: Windows 10 (amd64) version 10.0 + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + Java Version: 1.8.0_202, Oracle Corporation + Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation + Memory: 225865432 bytes (215 MB) / 869793792 bytes (829 MB) up to 3801088000 bytes (3625 MB) + JVM Flags: 0 total; + IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 99 + Launched Version: mcp + LWJGL: 2.9.4 + OpenGL: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 GL version 4.6.0 NVIDIA 532.03, NVIDIA Corporation + GL Caps: Using GL 1.3 multitexturing. +Using GL 1.3 texture combiners. +Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. +Shaders are available because OpenGL 2.1 is supported. +VBOs are available because OpenGL 1.5 is supported. + + Using VBOs: Yes + Is Modded: Very likely; Jar signature invalidated + Type: Client (map_client.txt) + Resource Packs: ! §bPotfast 5kay.zip + Current Language: English (US) + Profiler Position: N/A (disabled) + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + OptiFine Version: OptiFine_1.8.8_HD_U_H8 + Render Distance Chunks: 2 + Mipmaps: 0 + Anisotropic Filtering: 1 + Antialiasing: 0 + Multitexture: false + Shaders: null + OpenGlVersion: 4.6.0 NVIDIA 532.03 + OpenGlRenderer: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 + OpenGlVendor: NVIDIA Corporation + CpuCount: 12 \ No newline at end of file diff --git a/workspace/crash-reports/crash-2023-06-07_16.54.00-client.txt b/workspace/crash-reports/crash-2023-06-07_16.54.00-client.txt new file mode 100644 index 00000000..7d20b281 --- /dev/null +++ b/workspace/crash-reports/crash-2023-06-07_16.54.00-client.txt @@ -0,0 +1,100 @@ +---- Minecraft Crash Report ---- +// Uh... Did I do that? + +Time: 6/7/23 4:54 PM +Description: Rendering screen + +java.lang.StringIndexOutOfBoundsException: String index out of range: -1 + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:194) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1431) + at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1151) + at net.minecraft.client.Minecraft.run(Minecraft.java:430) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + + +A detailed walkthrough of the error, its code path and all known details is as follows: +--------------------------------------------------------------------------------------- + +-- Head -- +Stacktrace: + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:194) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + +-- Screen render details -- +Details: + Screen name: rip.athena.client.gui.clickgui.IngameMenu + Mouse location: Scaled: (480, 252). Absolute: (960, 504) + Screen size: Scaled: (960, 505). Absolute: (1920, 1009). Scale factor of 2 + +-- Affected level -- +Details: + Level name: MpServer + All players: 1 total; [EntityPlayerSP['Player439'/23, l='MpServer', x=341.15, y=78.00, z=1150.05]] + Chunk stats: MultiplayerChunkCache: 30, 30 + Level seed: 0 + Level generator: ID 02 - largeBiomes, ver 0. Features enabled: false + Level generator options: + Level spawn location: 5.00,64.00,557.00 - World: (5,64,557), Chunk: (at 5,4,13 in 0,34; contains blocks 0,0,544 to 15,255,559), Region: (0,1; contains chunks 0,32 to 31,63, blocks 0,0,512 to 511,255,1023) + Level time: 233055 game time, 233055 day time + Level dimension: 0 + Level storage version: 0x00000 - Unknown? + Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) + Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false + Forced entities: 9 total; [EntitySkeleton['Skeleton'/32, l='MpServer', x=322.16, y=72.00, z=1133.47], EntitySkeleton['Skeleton'/33, l='MpServer', x=345.16, y=67.00, z=1129.56], EntitySkeleton['Skeleton'/35, l='MpServer', x=331.45, y=73.00, z=1128.26], EntitySkeleton['Skeleton'/76, l='MpServer', x=351.16, y=77.00, z=1136.47], EntitySkeleton['Skeleton'/77, l='MpServer', x=337.16, y=74.00, z=1129.47], EntityMinecartChest['container.minecart'/26, l='MpServer', x=305.50, y=24.06, z=1110.88], EntitySkeleton['Skeleton'/507, l='MpServer', x=321.50, y=72.00, z=1192.50], EntityMinecartChest['container.minecart'/28, l='MpServer', x=306.50, y=28.06, z=1123.50], EntityPlayerSP['Player439'/23, l='MpServer', x=341.15, y=78.00, z=1150.05]] + Retry entities: 0 total; [] + Server brand: vanilla + Server type: Integrated singleplayer server +Stacktrace: + at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:401) + at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2791) + at net.minecraft.client.Minecraft.run(Minecraft.java:451) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + +-- System Details -- +Details: + Minecraft Version: 1.8.8 + Operating System: Windows 10 (amd64) version 10.0 + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + Java Version: 1.8.0_202, Oracle Corporation + Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation + Memory: 772751968 bytes (736 MB) / 1058537472 bytes (1009 MB) up to 3801088000 bytes (3625 MB) + JVM Flags: 0 total; + IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 99 + Launched Version: mcp + LWJGL: 2.9.4 + OpenGL: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 GL version 4.6.0 NVIDIA 532.03, NVIDIA Corporation + GL Caps: Using GL 1.3 multitexturing. +Using GL 1.3 texture combiners. +Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. +Shaders are available because OpenGL 2.1 is supported. +VBOs are available because OpenGL 1.5 is supported. + + Using VBOs: Yes + Is Modded: Very likely; Jar signature invalidated + Type: Client (map_client.txt) + Resource Packs: ! §bPotfast 5kay.zip + Current Language: English (US) + Profiler Position: N/A (disabled) + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + OptiFine Version: OptiFine_1.8.8_HD_U_H8 + Render Distance Chunks: 2 + Mipmaps: 0 + Anisotropic Filtering: 1 + Antialiasing: 0 + Multitexture: false + Shaders: null + OpenGlVersion: 4.6.0 NVIDIA 532.03 + OpenGlRenderer: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 + OpenGlVendor: NVIDIA Corporation + CpuCount: 12 \ No newline at end of file diff --git a/workspace/crash-reports/crash-2023-06-07_16.56.10-client.txt b/workspace/crash-reports/crash-2023-06-07_16.56.10-client.txt new file mode 100644 index 00000000..a3de5e79 --- /dev/null +++ b/workspace/crash-reports/crash-2023-06-07_16.56.10-client.txt @@ -0,0 +1,100 @@ +---- Minecraft Crash Report ---- +// Uh... Did I do that? + +Time: 6/7/23 4:56 PM +Description: Rendering screen + +java.lang.StringIndexOutOfBoundsException: String index out of range: -1 + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:194) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1431) + at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1151) + at net.minecraft.client.Minecraft.run(Minecraft.java:430) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + + +A detailed walkthrough of the error, its code path and all known details is as follows: +--------------------------------------------------------------------------------------- + +-- Head -- +Stacktrace: + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:194) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + +-- Screen render details -- +Details: + Screen name: rip.athena.client.gui.clickgui.IngameMenu + Mouse location: Scaled: (480, 252). Absolute: (960, 504) + Screen size: Scaled: (960, 505). Absolute: (1920, 1009). Scale factor of 2 + +-- Affected level -- +Details: + Level name: MpServer + All players: 1 total; [EntityPlayerSP['Player654'/23, l='MpServer', x=341.15, y=78.00, z=1150.05]] + Chunk stats: MultiplayerChunkCache: 25, 25 + Level seed: 0 + Level generator: ID 02 - largeBiomes, ver 0. Features enabled: false + Level generator options: + Level spawn location: 5.00,64.00,557.00 - World: (5,64,557), Chunk: (at 5,4,13 in 0,34; contains blocks 0,0,544 to 15,255,559), Region: (0,1; contains chunks 0,32 to 31,63, blocks 0,0,512 to 511,255,1023) + Level time: 235147 game time, 235147 day time + Level dimension: 0 + Level storage version: 0x00000 - Unknown? + Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) + Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false + Forced entities: 11 total; [EntitySkeleton['Skeleton'/32, l='MpServer', x=340.66, y=77.00, z=1150.91], EntitySkeleton['Skeleton'/33, l='MpServer', x=331.56, y=73.00, z=1130.06], EntityZombie['Zombie'/481, l='MpServer', x=383.50, y=70.00, z=1144.50], EntityWitch['Witch'/612, l='MpServer', x=304.50, y=28.00, z=1117.50], EntitySkeleton['Skeleton'/37, l='MpServer', x=349.09, y=69.00, z=1114.47], EntityBat['Bat'/455, l='MpServer', x=381.47, y=27.00, z=1101.59], EntityPlayerSP['Player654'/23, l='MpServer', x=341.15, y=78.00, z=1150.05], EntitySkeleton['Skeleton'/25, l='MpServer', x=349.50, y=79.00, z=1139.06], EntitySkeleton['Skeleton'/602, l='MpServer', x=379.75, y=28.00, z=1107.41], EntityMinecartChest['container.minecart'/27, l='MpServer', x=305.50, y=24.06, z=1110.88], EntityMinecartChest['container.minecart'/28, l='MpServer', x=306.50, y=28.06, z=1123.50]] + Retry entities: 0 total; [] + Server brand: vanilla + Server type: Integrated singleplayer server +Stacktrace: + at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:401) + at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2791) + at net.minecraft.client.Minecraft.run(Minecraft.java:451) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + +-- System Details -- +Details: + Minecraft Version: 1.8.8 + Operating System: Windows 10 (amd64) version 10.0 + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + Java Version: 1.8.0_202, Oracle Corporation + Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation + Memory: 500371256 bytes (477 MB) / 896532480 bytes (855 MB) up to 3801088000 bytes (3625 MB) + JVM Flags: 0 total; + IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 99 + Launched Version: mcp + LWJGL: 2.9.4 + OpenGL: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 GL version 4.6.0 NVIDIA 532.03, NVIDIA Corporation + GL Caps: Using GL 1.3 multitexturing. +Using GL 1.3 texture combiners. +Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. +Shaders are available because OpenGL 2.1 is supported. +VBOs are available because OpenGL 1.5 is supported. + + Using VBOs: Yes + Is Modded: Very likely; Jar signature invalidated + Type: Client (map_client.txt) + Resource Packs: ! §bPotfast 5kay.zip + Current Language: English (US) + Profiler Position: N/A (disabled) + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + OptiFine Version: OptiFine_1.8.8_HD_U_H8 + Render Distance Chunks: 2 + Mipmaps: 0 + Anisotropic Filtering: 1 + Antialiasing: 0 + Multitexture: false + Shaders: null + OpenGlVersion: 4.6.0 NVIDIA 532.03 + OpenGlRenderer: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 + OpenGlVendor: NVIDIA Corporation + CpuCount: 12 \ No newline at end of file diff --git a/workspace/crash-reports/crash-2023-06-07_16.58.33-client.txt b/workspace/crash-reports/crash-2023-06-07_16.58.33-client.txt new file mode 100644 index 00000000..9bb768f0 --- /dev/null +++ b/workspace/crash-reports/crash-2023-06-07_16.58.33-client.txt @@ -0,0 +1,100 @@ +---- Minecraft Crash Report ---- +// This doesn't make any sense! + +Time: 6/7/23 4:58 PM +Description: Rendering screen + +java.lang.StringIndexOutOfBoundsException: String index out of range: -1 + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:194) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1431) + at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1151) + at net.minecraft.client.Minecraft.run(Minecraft.java:430) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + + +A detailed walkthrough of the error, its code path and all known details is as follows: +--------------------------------------------------------------------------------------- + +-- Head -- +Stacktrace: + at java.lang.String.substring(String.java:1967) + at rip.athena.client.gui.clickgui.components.macros.MacroSlimTextField.onRender(MacroSlimTextField.java:109) + at rip.athena.client.gui.clickgui.components.mods.ModScrollPane.onRender(ModScrollPane.java:194) + at rip.athena.client.gui.framework.Menu.onRender(Menu.java:88) + at rip.athena.client.gui.framework.MinecraftMenuImpl.drawScreen(MinecraftMenuImpl.java:56) + at rip.athena.client.gui.clickgui.IngameMenu.drawScreen(IngameMenu.java:152) + +-- Screen render details -- +Details: + Screen name: rip.athena.client.gui.clickgui.IngameMenu + Mouse location: Scaled: (296, 229). Absolute: (593, 550) + Screen size: Scaled: (960, 505). Absolute: (1920, 1009). Scale factor of 2 + +-- Affected level -- +Details: + Level name: MpServer + All players: 1 total; [EntityPlayerSP['Player286'/23, l='MpServer', x=341.15, y=78.00, z=1150.05]] + Chunk stats: MultiplayerChunkCache: 25, 25 + Level seed: 0 + Level generator: ID 02 - largeBiomes, ver 0. Features enabled: false + Level generator options: + Level spawn location: 5.00,64.00,557.00 - World: (5,64,557), Chunk: (at 5,4,13 in 0,34; contains blocks 0,0,544 to 15,255,559), Region: (0,1; contains chunks 0,32 to 31,63, blocks 0,0,512 to 511,255,1023) + Level time: 235207 game time, 235207 day time + Level dimension: 0 + Level storage version: 0x00000 - Unknown? + Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) + Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false + Forced entities: 10 total; [EntitySkeleton['Skeleton'/36, l='MpServer', x=331.56, y=73.00, z=1130.06], EntitySkeleton['Skeleton'/38, l='MpServer', x=349.09, y=69.00, z=1114.47], EntitySkeleton['Skeleton'/24, l='MpServer', x=340.66, y=77.00, z=1150.91], EntitySkeleton['Skeleton'/25, l='MpServer', x=350.09, y=77.00, z=1136.28], EntitySkeleton['Skeleton'/41, l='MpServer', x=379.88, y=28.00, z=1107.38], EntityZombie['Zombie'/42, l='MpServer', x=383.50, y=70.00, z=1144.50], EntityPlayerSP['Player286'/23, l='MpServer', x=341.15, y=78.00, z=1150.05], EntityMinecartChest['container.minecart'/29, l='MpServer', x=305.50, y=24.06, z=1110.88], EntityWitch['Witch'/30, l='MpServer', x=304.50, y=28.00, z=1117.50], EntityMinecartChest['container.minecart'/31, l='MpServer', x=306.50, y=28.06, z=1123.50]] + Retry entities: 0 total; [] + Server brand: vanilla + Server type: Integrated singleplayer server +Stacktrace: + at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:401) + at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2791) + at net.minecraft.client.Minecraft.run(Minecraft.java:451) + at net.minecraft.client.main.Main.main(Main.java:113) + at Start.main(Start.java:11) + +-- System Details -- +Details: + Minecraft Version: 1.8.8 + Operating System: Windows 10 (amd64) version 10.0 + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + Java Version: 1.8.0_202, Oracle Corporation + Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation + Memory: 548503656 bytes (523 MB) / 828899328 bytes (790 MB) up to 3801088000 bytes (3625 MB) + JVM Flags: 0 total; + IntCache: cache: 0, tcache: 0, allocated: 13, tallocated: 99 + Launched Version: mcp + LWJGL: 2.9.4 + OpenGL: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 GL version 4.6.0 NVIDIA 532.03, NVIDIA Corporation + GL Caps: Using GL 1.3 multitexturing. +Using GL 1.3 texture combiners. +Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. +Shaders are available because OpenGL 2.1 is supported. +VBOs are available because OpenGL 1.5 is supported. + + Using VBOs: Yes + Is Modded: Very likely; Jar signature invalidated + Type: Client (map_client.txt) + Resource Packs: ! §bPotfast 5kay.zip + Current Language: English (US) + Profiler Position: N/A (disabled) + CPU: 12x AMD Ryzen 5 5600X 6-Core Processor + OptiFine Version: OptiFine_1.8.8_HD_U_H8 + Render Distance Chunks: 2 + Mipmaps: 0 + Anisotropic Filtering: 1 + Antialiasing: 0 + Multitexture: false + Shaders: null + OpenGlVersion: 4.6.0 NVIDIA 532.03 + OpenGlRenderer: NVIDIA GeForce RTX 2080 SUPER/PCIe/SSE2 + OpenGlVendor: NVIDIA Corporation + CpuCount: 12 \ No newline at end of file diff --git a/workspace/logs/2023-06-02-1.log.gz b/workspace/logs/2023-06-02-1.log.gz deleted file mode 100644 index d25b00ae..00000000 Binary files a/workspace/logs/2023-06-02-1.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-03-1.log.gz b/workspace/logs/2023-06-03-1.log.gz deleted file mode 100644 index a198f544..00000000 Binary files a/workspace/logs/2023-06-03-1.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-03-2.log.gz b/workspace/logs/2023-06-03-2.log.gz deleted file mode 100644 index 8ee1006b..00000000 Binary files a/workspace/logs/2023-06-03-2.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-03-3.log.gz b/workspace/logs/2023-06-03-3.log.gz deleted file mode 100644 index 385e2daf..00000000 Binary files a/workspace/logs/2023-06-03-3.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-03-4.log.gz b/workspace/logs/2023-06-03-4.log.gz deleted file mode 100644 index 21cc1a0d..00000000 Binary files a/workspace/logs/2023-06-03-4.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-03-5.log.gz b/workspace/logs/2023-06-03-5.log.gz deleted file mode 100644 index 3af9c718..00000000 Binary files a/workspace/logs/2023-06-03-5.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-03-6.log.gz b/workspace/logs/2023-06-03-6.log.gz deleted file mode 100644 index bc5f815a..00000000 Binary files a/workspace/logs/2023-06-03-6.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-03-7.log.gz b/workspace/logs/2023-06-03-7.log.gz deleted file mode 100644 index ebeec1e1..00000000 Binary files a/workspace/logs/2023-06-03-7.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-04-1.log.gz b/workspace/logs/2023-06-04-1.log.gz deleted file mode 100644 index 129e339a..00000000 Binary files a/workspace/logs/2023-06-04-1.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-04-2.log.gz b/workspace/logs/2023-06-04-2.log.gz deleted file mode 100644 index baca6ce0..00000000 Binary files a/workspace/logs/2023-06-04-2.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-04-3.log.gz b/workspace/logs/2023-06-04-3.log.gz deleted file mode 100644 index 5714ce58..00000000 Binary files a/workspace/logs/2023-06-04-3.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-04-4.log.gz b/workspace/logs/2023-06-04-4.log.gz deleted file mode 100644 index aabd69f8..00000000 Binary files a/workspace/logs/2023-06-04-4.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-04-5.log.gz b/workspace/logs/2023-06-04-5.log.gz deleted file mode 100644 index d59db46e..00000000 Binary files a/workspace/logs/2023-06-04-5.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-04-6.log.gz b/workspace/logs/2023-06-04-6.log.gz deleted file mode 100644 index a0004b04..00000000 Binary files a/workspace/logs/2023-06-04-6.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-04-7.log.gz b/workspace/logs/2023-06-04-7.log.gz deleted file mode 100644 index 9621faa4..00000000 Binary files a/workspace/logs/2023-06-04-7.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-05-1.log.gz b/workspace/logs/2023-06-05-1.log.gz deleted file mode 100644 index 20718d34..00000000 Binary files a/workspace/logs/2023-06-05-1.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-05-2.log.gz b/workspace/logs/2023-06-05-2.log.gz deleted file mode 100644 index d49bca35..00000000 Binary files a/workspace/logs/2023-06-05-2.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-07-1.log.gz b/workspace/logs/2023-06-07-1.log.gz deleted file mode 100644 index d23f9256..00000000 Binary files a/workspace/logs/2023-06-07-1.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-07-2.log.gz b/workspace/logs/2023-06-07-2.log.gz deleted file mode 100644 index 32216970..00000000 Binary files a/workspace/logs/2023-06-07-2.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-07-3.log.gz b/workspace/logs/2023-06-07-3.log.gz deleted file mode 100644 index 38618e44..00000000 Binary files a/workspace/logs/2023-06-07-3.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-07-4.log.gz b/workspace/logs/2023-06-07-4.log.gz deleted file mode 100644 index 7c6228d0..00000000 Binary files a/workspace/logs/2023-06-07-4.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-07-5.log.gz b/workspace/logs/2023-06-07-5.log.gz deleted file mode 100644 index f03ca3e4..00000000 Binary files a/workspace/logs/2023-06-07-5.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-07-6.log.gz b/workspace/logs/2023-06-07-6.log.gz deleted file mode 100644 index d367e8f7..00000000 Binary files a/workspace/logs/2023-06-07-6.log.gz and /dev/null differ diff --git a/workspace/logs/2023-06-07-7.log.gz b/workspace/logs/2023-06-07-7.log.gz deleted file mode 100644 index 940c73c7..00000000 Binary files a/workspace/logs/2023-06-07-7.log.gz and /dev/null differ diff --git a/workspace/logs/latest.log b/workspace/logs/latest.log deleted file mode 100644 index 95fca2ea..00000000 --- a/workspace/logs/latest.log +++ /dev/null @@ -1,143 +0,0 @@ -[07:51:27] [Client thread/INFO]: Setting user: Player901 -[07:51:27] [Client thread/INFO]: (Session ID is token:0:Player901) -[07:51:30] [Client thread/INFO]: [OptiFine] *** Reflector Forge *** -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.Attributes -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: mods.betterfoliage.client.BetterFoliageClient -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.asm.transformers.BlamingTransformer -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.ChunkWatchEvent$UnWatch -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.relauncher.CoreModManager -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.DimensionManager -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Pre -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.GuiScreenEvent$DrawScreenEvent$Post -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$CameraSetup -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.EntityViewRenderEvent$FogColors -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.EventBus -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.eventhandler.Event$Result -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.ExtendedBlockState -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.FMLClientHandler -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.common.FMLCommonHandler -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.biome.BiomeGenBase.getWaterColorMultiplier -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.addDestroyEffects -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.addHitEffects -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.canCreatureSpawn -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.canRenderInLayer -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.doesSideBlockRendering -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.getBedDirection -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.getExtendedState -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.hasTileEntity -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isAir -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isBed -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isBedFoot -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.block.Block.isSideSolid -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.canRiderInteract -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: net.minecraft.entity.Entity.captureDrops -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Field not present: net.minecraft.entity.Entity.capturedDrops -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.shouldRenderInPass -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.entity.Entity.shouldRiderSit -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.ForgeEventFactory -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeHooks -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ForgeHooksClient -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.getDurabilityForDisplay -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.getModel -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.onEntitySwing -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.shouldCauseReequipAnimation -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.Item.showDurabilityBar -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.item.ItemRecord.getRecordResource -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.ForgeModContainer -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.potion.PotionEffect.isCurativeItem -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.canRenderBreaking -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.getRenderBoundingBox -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.hasFastRenderer -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.tileentity.TileEntity.shouldRenderInPass -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.preDrawBatch -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.drawBatch -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.vertex.VertexFormatElement$EnumUsage.preDraw -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.client.renderer.vertex.VertexFormatElement$EnumUsage.postDraw -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.World.countEntities -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.World.getPerWorldStorage -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getCloudRenderer -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getSkyRenderer -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Method not present: net.minecraft.world.WorldProvider.getWeatherRenderer -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.GuiModList -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.IColoredBakedQuad -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.property.IExtendedBlockState -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.IRenderHandler -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ISmartBlockModel -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.ItemModelMesherForge -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraft.launchwrapper.Launch -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.pipeline.LightUtil -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.common.MinecraftForge -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.MinecraftForgeClient -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.model.ModelLoader -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderBlockOverlayEvent$OverlayType -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.registry.RenderingRegistry -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderItemInFrameEvent -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Pre -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Post -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Pre -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.client.event.RenderLivingEvent$Specials$Post -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.fml.client.SplashProgress -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: net.minecraftforge.event.world.WorldEvent$Load -[07:51:30] [Client thread/INFO]: [OptiFine] *** Reflector Vanilla *** -[07:51:30] [Client thread/INFO]: [OptiFine] (Reflector) Class not present: optifine.OptiFineClassTransformer -[07:51:31] [Client thread/ERROR]: [Athena] Failed to load resource outside namespace (C:\Users\remgab001\Desktop\Athena-Client\workspace\.\assets\minecraft\Athena\gui\settings.png).javax.imageio.IIOException: Can't read input file! -[07:51:31] [Client thread/ERROR]: [Athena] Failed to load resource outside namespace (C:\Users\remgab001\Desktop\Athena-Client\workspace\.\assets\minecraft\Athena\gui\user.png).javax.imageio.IIOException: Can't read input file! -[07:51:31] [Client thread/INFO]: LWJGL Version: 2.9.4 -[07:51:32] [Client thread/INFO]: [OptiFine] -[07:51:32] [Client thread/INFO]: [OptiFine] OptiFine_1.8.8_HD_U_H8 -[07:51:32] [Client thread/INFO]: [OptiFine] Build: null -[07:51:32] [Client thread/INFO]: [OptiFine] OS: Windows 10 (amd64) version 10.0 -[07:51:32] [Client thread/INFO]: [OptiFine] Java: 1.8.0_202, Oracle Corporation -[07:51:32] [Client thread/INFO]: [OptiFine] VM: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation -[07:51:32] [Client thread/INFO]: [OptiFine] LWJGL: 2.9.4 -[07:51:32] [Client thread/INFO]: [OptiFine] OpenGL: Intel(R) Iris(R) Xe Graphics, version 4.6.0 - Build 30.0.101.1298, Intel -[07:51:32] [Client thread/INFO]: [OptiFine] OpenGL Version: 4.6.0 -[07:51:32] [Client thread/INFO]: [OptiFine] OpenGL Fancy fog: Not available (GL_NV_fog_distance) -[07:51:32] [Client thread/INFO]: [OptiFine] Maximum texture size: 16384x16384 -[07:51:32] [Thread-7/INFO]: [OptiFine] Checking for new version -[07:51:32] [Client thread/INFO]: [Shaders] ShadersMod version: 2.4.12 -[07:51:32] [Client thread/INFO]: [Shaders] OpenGL Version: 4.6.0 - Build 30.0.101.1298 -[07:51:32] [Client thread/INFO]: [Shaders] Vendor: Intel -[07:51:32] [Client thread/INFO]: [Shaders] Renderer: Intel(R) Iris(R) Xe Graphics -[07:51:32] [Client thread/INFO]: [Shaders] Capabilities: 2.0 2.1 3.0 3.2 4.0 -[07:51:32] [Client thread/INFO]: [Shaders] GL_MAX_DRAW_BUFFERS: 8 -[07:51:32] [Client thread/INFO]: [Shaders] GL_MAX_COLOR_ATTACHMENTS_EXT: 8 -[07:51:32] [Client thread/INFO]: [Shaders] GL_MAX_TEXTURE_IMAGE_UNITS: 32 -[07:51:32] [Client thread/INFO]: [Shaders] Load ShadersMod configuration. -[07:51:32] [Client thread/INFO]: [Shaders] Shaders can not be loaded, Fast Render is enabled. -[07:51:32] [Client thread/INFO]: [Shaders] No shaderpack loaded. -[07:51:33] [Thread-7/INFO]: [OptiFine] Version found: I7 -[07:51:33] [Client thread/INFO]: Reloading ResourceManager: Default, ! §bPotfast 5kay.zip -[07:51:33] [Client thread/INFO]: [OptiFine] *** Reloading textures *** -[07:51:33] [Client thread/INFO]: [OptiFine] Resource packs: ! §bPotfast 5kay.zip -[07:51:33] [Sound Library Loader/INFO]: Starting up SoundSystem... -[07:51:33] [Thread-8/INFO]: Initializing LWJGL OpenAL -[07:51:33] [Thread-8/INFO]: (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org) -[07:51:34] [Thread-8/INFO]: OpenAL initialized. -[07:51:34] [Sound Library Loader/INFO]: Sound engine started -[07:51:36] [Client thread/INFO]: [OptiFine] Multitexture: false -[07:51:37] [Client thread/INFO]: Created: 2048x2048 textures-atlas -[07:51:37] [Client thread/INFO]: [OptiFine] *** Reloading custom textures *** -[07:51:37] [Client thread/INFO]: [OptiFine] Enable face culling: acacia_leaves, birch_leaves, dark_oak_leaves, jungle_leaves, oak_leaves, spruce_leaves -[07:52:27] [Server thread/INFO]: Starting integrated minecraft server version 1.8.8 -[07:52:27] [Server thread/INFO]: Generating keypair -[07:52:27] [Server thread/INFO]: Preparing start region for level 0 -[07:52:28] [Server thread/INFO]: Changing view distance to 2, from 10 -[07:52:28] [Server thread/INFO]: Player901[local:E:aed3fe6b] logged in with entity id 23 at (340.7483021356137, 81.60203261602203, 1097.8842798022954) -[07:52:28] [Server thread/INFO]: Player901 joined the game -[07:52:29] [Client thread/INFO]: [CHAT] A new §eOptiFine§f version is available: §eHD Ultra I7§f -[07:52:31] [Server thread/INFO]: Saving and pausing game... -[07:52:31] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[07:52:31] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[07:52:31] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[07:52:32] [Client thread/INFO]: Stopping! -[07:52:32] [Client thread/INFO]: [Athena] Shutting down client -[07:52:32] [Client thread/INFO]: SoundSystem shutting down... -[07:52:32] [Server thread/INFO]: Stopping server -[07:52:32] [Server thread/INFO]: Saving players -[07:52:32] [Server thread/INFO]: Saving worlds -[07:52:32] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Overworld -[07:52:32] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/Nether -[07:52:32] [Server thread/INFO]: Saving chunks for level 'Copy of mcpworldpp'/The End -[07:52:32] [Client thread/WARN]: Author: Paul Lamb, www.paulscode.com diff --git a/workspace/options.txt b/workspace/options.txt index b3ff18b6..935f3791 100644 --- a/workspace/options.txt +++ b/workspace/options.txt @@ -1,11 +1,11 @@ invertYMouse:false -mouseSensitivity:0.17605634 -fov:0.3 -gamma:1.0 +mouseSensitivity:0.15492958 +fov:0.0 +gamma:0.0 saturation:0.0 -renderDistance:2 +renderDistance:8 guiScale:2 -particles:1 +particles:0 bobView:true anaglyph3d:false maxFps:260 @@ -13,8 +13,8 @@ fboEnable:true difficulty:2 fancyGraphics:false ao:0 -renderClouds:false -resourcePacks:["! §bPotfast 5kay.zip"] +renderClouds:fast +resourcePacks:[] incompatibleResourcePacks:[] lastServer: lang:en_US @@ -26,7 +26,7 @@ chatOpacity:1.0 snooperEnabled:true fullscreen:false enableVsync:false -useVbo:true +useVbo:false hideServerAddress:false advancedItemTooltips:false pauseOnLostFocus:true @@ -36,10 +36,10 @@ overrideHeight:0 heldItemTooltips:true chatHeightFocused:1.0 chatHeightUnfocused:0.44366196 -chatScale:0.0 -chatWidth:0.36619717 +chatScale:1.0 +chatWidth:1.0 showInventoryAchievementHint:false -mipmapLevels:0 +mipmapLevels:4 streamBytesPerPixel:0.5 streamMicVolume:1.0 streamSystemVolume:1.0 @@ -52,7 +52,7 @@ streamChatEnabled:0 streamChatUserFilter:0 streamMicToggleBehavior:0 forceUnicodeFont:false -allowBlockAlternatives:false +allowBlockAlternatives:true reducedDebugInfo:false useNativeTransport:true entityShadows:true @@ -90,15 +90,15 @@ key_key.hotbar.7:8 key_key.hotbar.8:9 key_key.hotbar.9:10 key_of.key.zoom:46 -soundCategory_master:0.29801324 +soundCategory_master:0.4437086 soundCategory_music:0.0 -soundCategory_record:0.45774648 -soundCategory_weather:0.45070422 -soundCategory_block:0.45070422 -soundCategory_hostile:0.45070422 -soundCategory_neutral:0.45774648 -soundCategory_player:0.45070422 -soundCategory_ambient:0.45070422 +soundCategory_record:0.41549295 +soundCategory_weather:0.46478873 +soundCategory_block:0.4225352 +soundCategory_hostile:0.46478873 +soundCategory_neutral:0.4225352 +soundCategory_player:0.46478873 +soundCategory_ambient:0.42957747 modelPart_cape:true modelPart_jacket:true modelPart_left_sleeve:true diff --git a/workspace/optionsof.txt b/workspace/optionsof.txt index 343a8d13..4dbcbaea 100644 --- a/workspace/optionsof.txt +++ b/workspace/optionsof.txt @@ -1,43 +1,43 @@ -ofRenderDistanceChunks:2 -ofFogType:3 -ofFogStart:0.2 +ofRenderDistanceChunks:8 +ofFogType:1 +ofFogStart:0.8 ofMipmapType:0 ofOcclusionFancy:false -ofSmoothFps:true +ofSmoothFps:false ofSmoothWorld:true -ofAoLevel:0.0 -ofClouds:3 +ofAoLevel:1.0 +ofClouds:0 ofCloudsHeight:0.0 -ofTrees:1 -ofDroppedItems:1 -ofRain:3 -ofAnimatedWater:2 -ofAnimatedLava:2 -ofAnimatedFire:false -ofAnimatedPortal:false -ofAnimatedRedstone:false -ofAnimatedExplosion:false -ofAnimatedFlame:false -ofAnimatedSmoke:false -ofVoidParticles:false -ofWaterParticles:false -ofPortalParticles:false -ofPotionParticles:false -ofFireworkParticles:false -ofDrippingWaterLava:false -ofAnimatedTerrain:false -ofAnimatedTextures:false -ofRainSplash:false +ofTrees:0 +ofDroppedItems:0 +ofRain:0 +ofAnimatedWater:0 +ofAnimatedLava:0 +ofAnimatedFire:true +ofAnimatedPortal:true +ofAnimatedRedstone:true +ofAnimatedExplosion:true +ofAnimatedFlame:true +ofAnimatedSmoke:true +ofVoidParticles:true +ofWaterParticles:true +ofPortalParticles:true +ofPotionParticles:true +ofFireworkParticles:true +ofDrippingWaterLava:true +ofAnimatedTerrain:true +ofAnimatedTextures:true +ofRainSplash:true ofLagometer:false ofShowFps:false -ofAutoSaveTicks:30000 +ofAutoSaveTicks:4000 ofBetterGrass:3 -ofConnectedTextures:3 -ofWeather:false -ofSky:false -ofStars:false -ofSunMoon:false -ofVignette:1 +ofConnectedTextures:2 +ofWeather:true +ofSky:true +ofStars:true +ofSunMoon:true +ofVignette:0 ofChunkUpdates:1 ofChunkUpdatesDynamic:false ofTime:0 @@ -46,20 +46,20 @@ ofAaLevel:0 ofAfLevel:1 ofProfiler:false ofBetterSnow:false -ofSwampColors:false +ofSwampColors:true ofRandomMobs:true -ofSmoothBiomes:false -ofCustomFonts:false -ofCustomColors:false +ofSmoothBiomes:true +ofCustomFonts:true +ofCustomColors:true ofCustomItems:true -ofCustomSky:false -ofShowCapes:false +ofCustomSky:true +ofShowCapes:true ofNaturalTextures:false -ofLazyChunkLoading:false -ofDynamicFov:true +ofLazyChunkLoading:true +ofDynamicFov:false ofDynamicLights:3 ofFullscreenMode:Default -ofFastMath:true +ofFastMath:false ofFastRender:true -ofTranslucentBlocks:1 +ofTranslucentBlocks:0 key_of.key.zoom:46 diff --git a/workspace/saves/Copy of mcpworldpp/data/villages.dat b/workspace/saves/Copy of mcpworldpp/data/villages.dat index f5442084..a66887b4 100644 Binary files a/workspace/saves/Copy of mcpworldpp/data/villages.dat and b/workspace/saves/Copy of mcpworldpp/data/villages.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/data/villages_end.dat b/workspace/saves/Copy of mcpworldpp/data/villages_end.dat index f5442084..41bc4ddf 100644 Binary files a/workspace/saves/Copy of mcpworldpp/data/villages_end.dat and b/workspace/saves/Copy of mcpworldpp/data/villages_end.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/data/villages_nether.dat b/workspace/saves/Copy of mcpworldpp/data/villages_nether.dat index f5442084..41bc4ddf 100644 Binary files a/workspace/saves/Copy of mcpworldpp/data/villages_nether.dat and b/workspace/saves/Copy of mcpworldpp/data/villages_nether.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/01986ee6-ca3c-3b64-bdcd-02039da5963f.dat b/workspace/saves/Copy of mcpworldpp/playerdata/01986ee6-ca3c-3b64-bdcd-02039da5963f.dat new file mode 100644 index 00000000..3c805f61 Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/01986ee6-ca3c-3b64-bdcd-02039da5963f.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/241b8068-7327-314d-abe2-ee7690220b50.dat b/workspace/saves/Copy of mcpworldpp/playerdata/241b8068-7327-314d-abe2-ee7690220b50.dat new file mode 100644 index 00000000..b75c1472 Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/241b8068-7327-314d-abe2-ee7690220b50.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/387e1557-1e63-3242-8750-2853d61db146.dat b/workspace/saves/Copy of mcpworldpp/playerdata/387e1557-1e63-3242-8750-2853d61db146.dat new file mode 100644 index 00000000..835a52ac Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/387e1557-1e63-3242-8750-2853d61db146.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/3da1e349-17b0-38ed-a07b-1e78c8ebd956.dat b/workspace/saves/Copy of mcpworldpp/playerdata/3da1e349-17b0-38ed-a07b-1e78c8ebd956.dat new file mode 100644 index 00000000..d09123cc Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/3da1e349-17b0-38ed-a07b-1e78c8ebd956.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/408d12c9-559c-3212-bca5-d1a3fc38a0f7.dat b/workspace/saves/Copy of mcpworldpp/playerdata/408d12c9-559c-3212-bca5-d1a3fc38a0f7.dat new file mode 100644 index 00000000..b9693ac0 Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/408d12c9-559c-3212-bca5-d1a3fc38a0f7.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/44e8d65a-a4b2-3c63-9ef0-950bb5685028.dat b/workspace/saves/Copy of mcpworldpp/playerdata/44e8d65a-a4b2-3c63-9ef0-950bb5685028.dat new file mode 100644 index 00000000..1fc6e985 Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/44e8d65a-a4b2-3c63-9ef0-950bb5685028.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/5a8b675a-352f-385b-94f4-369e3f70aa83.dat b/workspace/saves/Copy of mcpworldpp/playerdata/5a8b675a-352f-385b-94f4-369e3f70aa83.dat new file mode 100644 index 00000000..f18efdbb Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/5a8b675a-352f-385b-94f4-369e3f70aa83.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/5c6d79ca-db3a-3a0a-8d04-9e811bde5c64.dat b/workspace/saves/Copy of mcpworldpp/playerdata/5c6d79ca-db3a-3a0a-8d04-9e811bde5c64.dat new file mode 100644 index 00000000..701d133a Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/5c6d79ca-db3a-3a0a-8d04-9e811bde5c64.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/66397f00-f974-3e3d-944b-5f58f7613e27.dat b/workspace/saves/Copy of mcpworldpp/playerdata/66397f00-f974-3e3d-944b-5f58f7613e27.dat new file mode 100644 index 00000000..8b72ebf0 Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/66397f00-f974-3e3d-944b-5f58f7613e27.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/81ef6cf6-107d-35d0-bf6b-c2f04f3d07c4.dat b/workspace/saves/Copy of mcpworldpp/playerdata/81ef6cf6-107d-35d0-bf6b-c2f04f3d07c4.dat new file mode 100644 index 00000000..212dda9a Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/81ef6cf6-107d-35d0-bf6b-c2f04f3d07c4.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/playerdata/ead290bb-bad9-36fc-b265-db734c4eb7d4.dat b/workspace/saves/Copy of mcpworldpp/playerdata/ead290bb-bad9-36fc-b265-db734c4eb7d4.dat new file mode 100644 index 00000000..474643d6 Binary files /dev/null and b/workspace/saves/Copy of mcpworldpp/playerdata/ead290bb-bad9-36fc-b265-db734c4eb7d4.dat differ diff --git a/workspace/saves/Copy of mcpworldpp/region/r.-1.0.mca b/workspace/saves/Copy of mcpworldpp/region/r.-1.0.mca index 85d42184..37382c04 100644 Binary files a/workspace/saves/Copy of mcpworldpp/region/r.-1.0.mca and b/workspace/saves/Copy of mcpworldpp/region/r.-1.0.mca differ diff --git a/workspace/saves/Copy of mcpworldpp/region/r.0.0.mca b/workspace/saves/Copy of mcpworldpp/region/r.0.0.mca index 40b91e19..d34564c4 100644 Binary files a/workspace/saves/Copy of mcpworldpp/region/r.0.0.mca and b/workspace/saves/Copy of mcpworldpp/region/r.0.0.mca differ diff --git a/workspace/saves/Copy of mcpworldpp/stats/01986ee6-ca3c-3b64-bdcd-02039da5963f.json b/workspace/saves/Copy of mcpworldpp/stats/01986ee6-ca3c-3b64-bdcd-02039da5963f.json new file mode 100644 index 00000000..c590b744 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/01986ee6-ca3c-3b64-bdcd-02039da5963f.json @@ -0,0 +1 @@ +{"stat.flyOneCm":2477,"stat.walkOneCm":691,"stat.jump":10,"stat.playOneMinute":24356,"stat.fallOneCm":749,"stat.leaveGame":1,"stat.timeSinceDeath":24356,"stat.sprintOneCm":472,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills"]}} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/241b8068-7327-314d-abe2-ee7690220b50.json b/workspace/saves/Copy of mcpworldpp/stats/241b8068-7327-314d-abe2-ee7690220b50.json new file mode 100644 index 00000000..06c680f2 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/241b8068-7327-314d-abe2-ee7690220b50.json @@ -0,0 +1 @@ +{"stat.flyOneCm":15059,"stat.walkOneCm":4960,"stat.drop":1,"stat.jump":62,"stat.playOneMinute":17228,"stat.leaveGame":1,"stat.timeSinceDeath":17228,"stat.sprintOneCm":3790,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills","Desert"]}} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/387e1557-1e63-3242-8750-2853d61db146.json b/workspace/saves/Copy of mcpworldpp/stats/387e1557-1e63-3242-8750-2853d61db146.json new file mode 100644 index 00000000..50436ab4 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/387e1557-1e63-3242-8750-2853d61db146.json @@ -0,0 +1 @@ +{"stat.playOneMinute":21,"stat.leaveGame":1,"stat.timeSinceDeath":21} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/3da1e349-17b0-38ed-a07b-1e78c8ebd956.json b/workspace/saves/Copy of mcpworldpp/stats/3da1e349-17b0-38ed-a07b-1e78c8ebd956.json new file mode 100644 index 00000000..559aca33 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/3da1e349-17b0-38ed-a07b-1e78c8ebd956.json @@ -0,0 +1 @@ +{"stat.flyOneCm":3492,"stat.walkOneCm":1479,"stat.jump":18,"stat.playOneMinute":13031,"stat.leaveGame":1,"stat.timeSinceDeath":13031,"stat.sprintOneCm":819,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills"]}} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/408d12c9-559c-3212-bca5-d1a3fc38a0f7.json b/workspace/saves/Copy of mcpworldpp/stats/408d12c9-559c-3212-bca5-d1a3fc38a0f7.json new file mode 100644 index 00000000..478d2f59 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/408d12c9-559c-3212-bca5-d1a3fc38a0f7.json @@ -0,0 +1 @@ +{"stat.flyOneCm":1698,"stat.walkOneCm":653,"stat.jump":8,"stat.playOneMinute":123308,"stat.leaveGame":1,"stat.timeSinceDeath":123308,"stat.sprintOneCm":279,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills"]}} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/44e8d65a-a4b2-3c63-9ef0-950bb5685028.json b/workspace/saves/Copy of mcpworldpp/stats/44e8d65a-a4b2-3c63-9ef0-950bb5685028.json new file mode 100644 index 00000000..cee31481 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/44e8d65a-a4b2-3c63-9ef0-950bb5685028.json @@ -0,0 +1 @@ +{"stat.walkOneCm":211,"stat.playOneMinute":2064,"stat.leaveGame":1,"stat.timeSinceDeath":2064,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills"]}} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/5a8b675a-352f-385b-94f4-369e3f70aa83.json b/workspace/saves/Copy of mcpworldpp/stats/5a8b675a-352f-385b-94f4-369e3f70aa83.json new file mode 100644 index 00000000..798423e7 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/5a8b675a-352f-385b-94f4-369e3f70aa83.json @@ -0,0 +1 @@ +{"stat.flyOneCm":772,"stat.walkOneCm":28,"stat.playOneMinute":1778,"stat.leaveGame":1,"stat.timeSinceDeath":1778,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills"]}} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/5c6d79ca-db3a-3a0a-8d04-9e811bde5c64.json b/workspace/saves/Copy of mcpworldpp/stats/5c6d79ca-db3a-3a0a-8d04-9e811bde5c64.json new file mode 100644 index 00000000..b0b567e7 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/5c6d79ca-db3a-3a0a-8d04-9e811bde5c64.json @@ -0,0 +1 @@ +{"stat.flyOneCm":4934,"stat.walkOneCm":5274,"stat.jump":22,"stat.playOneMinute":6858,"stat.leaveGame":1,"stat.timeSinceDeath":6858,"stat.sprintOneCm":4078,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills","Desert"]}} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/66397f00-f974-3e3d-944b-5f58f7613e27.json b/workspace/saves/Copy of mcpworldpp/stats/66397f00-f974-3e3d-944b-5f58f7613e27.json new file mode 100644 index 00000000..df597e52 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/66397f00-f974-3e3d-944b-5f58f7613e27.json @@ -0,0 +1 @@ +{"stat.walkOneCm":1649,"achievement.openInventory":2,"stat.leaveGame":2,"stat.useItem.minecraft.diamond_sword":3,"stat.useItem.minecraft.golden_apple":2,"stat.flyOneCm":519,"stat.mineBlock.minecraft.sand":5,"stat.jump":7,"stat.playOneMinute":95280,"stat.crouchOneCm":28,"stat.timeSinceDeath":95280,"stat.sprintOneCm":939,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills"]}} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/81ef6cf6-107d-35d0-bf6b-c2f04f3d07c4.json b/workspace/saves/Copy of mcpworldpp/stats/81ef6cf6-107d-35d0-bf6b-c2f04f3d07c4.json new file mode 100644 index 00000000..8a2ec478 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/81ef6cf6-107d-35d0-bf6b-c2f04f3d07c4.json @@ -0,0 +1 @@ +{"stat.flyOneCm":818,"stat.walkOneCm":513,"stat.jump":8,"stat.playOneMinute":15853,"stat.leaveGame":1,"stat.timeSinceDeath":15853,"stat.sprintOneCm":372,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills"]}} \ No newline at end of file diff --git a/workspace/saves/Copy of mcpworldpp/stats/ead290bb-bad9-36fc-b265-db734c4eb7d4.json b/workspace/saves/Copy of mcpworldpp/stats/ead290bb-bad9-36fc-b265-db734c4eb7d4.json new file mode 100644 index 00000000..a5da94f4 --- /dev/null +++ b/workspace/saves/Copy of mcpworldpp/stats/ead290bb-bad9-36fc-b265-db734c4eb7d4.json @@ -0,0 +1 @@ +{"stat.playOneMinute":51,"stat.leaveGame":1,"stat.timeSinceDeath":51,"achievement.exploreAllBiomes":{"value":0,"progress":["DesertHills"]}} \ No newline at end of file diff --git a/workspace/settings/configs/default.json b/workspace/settings/configs/default.json index c9ef3d7f..b13340d1 100644 --- a/workspace/settings/configs/default.json +++ b/workspace/settings/configs/default.json @@ -43,7 +43,7 @@ "settings": { "Static Chroma": false, "Background": true, - "Custom Font": false, + "Custom Font": true, "Wave Chroma": false, "Color": { "red": 255, @@ -55,7 +55,7 @@ "red": 0, "green": 0, "blue": 0, - "alpha": 150 + "alpha": 153 }, "Display Mode": "Modern", "Right Click Counter": false @@ -63,7 +63,7 @@ "bind": 0, "hud": {"cps": { "visible": true, - "x": 65, + "x": 71, "y": 175, "scale": 1 }}, @@ -91,13 +91,13 @@ "settings": { "Static Chroma": false, "Background": true, - "Custom Font": false, + "Custom Font": true, "Wave Chroma": false, "Background Color": { "red": 0, "green": 0, "blue": 0, - "alpha": 150 + "alpha": 153 }, "Color": { "red": 255, @@ -138,7 +138,7 @@ "bind": 0, "hud": {}, "bindtype": "Toggle", - "enabled": false + "enabled": true }, "Custom Text": { "settings": { @@ -287,7 +287,7 @@ "scale": 1 }}, "bindtype": "Toggle", - "enabled": false + "enabled": true }, "Chat": { "settings": {"Custom Font": false}, @@ -325,7 +325,20 @@ "bindtype": "Toggle", "enabled": false }, - "macros": [], + "macros": [ + { + "name": "test", + "command": "dsfsdfsdfdf", + "key": 34, + "enabled": true + }, + { + "name": "sdfsadfsdf", + "command": "sdfsdf", + "key": 33, + "enabled": true + } + ], "Coordinates": { "settings": { "Show Compass": true, @@ -479,7 +492,7 @@ "bind": 0, "hud": {}, "bindtype": "Toggle", - "enabled": false + "enabled": true }, "Pot Counter": { "settings": { diff --git a/workspace/usercache.json b/workspace/usercache.json index 7370dd69..23a3e8aa 100644 --- a/workspace/usercache.json +++ b/workspace/usercache.json @@ -1 +1,5 @@ -[{"name":"Player901","uuid":"fcaa91cc-3a77-3318-a8ae-f2f3862b7fde","expiresOn":"2023-07-08 07:52:28 +0200"},{"name":"Player86","uuid":"811b757c-1be5-33cf-864a-fb91beb14990","expiresOn":"2023-07-03 21:47:43 +0200"},{"name":"Player650","uuid":"19f51a77-b6fb-3469-a8b6-228ec5ce5961","expiresOn":"2023-07-04 21:56:20 +0200"},{"name":"Player378","uuid":"0a5e4ff0-6099-36b5-b64d-a84ffa9f1f72","expiresOn":"2023-07-04 19:57:34 +0200"},{"name":"Player897","uuid":"29b47250-4236-34ae-8b46-7341b800b727","expiresOn":"2023-07-02 22:01:45 +0200"},{"name":"Player970","uuid":"f2c5b984-5c4a-355c-800e-d2ce35cf8f1c","expiresOn":"2023-07-02 22:56:39 +0200"},{"name":"Player320","uuid":"77167de3-5df9-3c83-b06a-bed9a476e835","expiresOn":"2023-07-07 10:20:07 +0200"},{"name":"Player829","uuid":"4e1f5e28-f05f-3acf-ac65-db01d9d51f95","expiresOn":"2023-07-05 07:47:49 +0200"},{"name":"Player430","uuid":"5b6052a7-6bab-33d6-92c2-a3d77755ef06","expiresOn":"2023-07-04 22:05:05 +0200"},{"name":"Player273","uuid":"18b3a035-3e67-34ed-889e-932160306e4f","expiresOn":"2023-07-02 16:57:48 +0200"},{"name":"Player353","uuid":"1e0b9d62-e071-33ba-b82e-1c564a46e2f0","expiresOn":"2023-07-02 23:00:42 +0200"},{"name":"Player100","uuid":"b63c1160-7834-3764-9276-2fb9c5acd6ce","expiresOn":"2023-07-02 22:16:49 +0200"},{"name":"Player536","uuid":"8cfc5391-e37d-328f-a689-9b5f6c4663f5","expiresOn":"2023-07-07 10:47:53 +0200"},{"name":"Player930","uuid":"eac293da-7d7d-3c6a-94e5-fba80de0212f","expiresOn":"2023-07-02 20:52:17 +0200"},{"name":"Player106","uuid":"b31fadf2-d5d5-36b6-a9c6-26ad19735f31","expiresOn":"2023-07-05 09:49:36 +0200"},{"name":"Player758","uuid":"92f8a523-1476-36c1-a74b-ef7c8b1d0bfd","expiresOn":"2023-07-02 21:35:50 +0200"},{"name":"Player482","uuid":"a692389e-9f43-3e66-84db-bbfe94bd70db","expiresOn":"2023-07-04 18:27:43 +0200"},{"name":"Player818","uuid":"84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39","expiresOn":"2023-07-04 00:09:19 +0200"},{"name":"Player770","uuid":"78b89d61-eeb6-339b-a649-bd65ff29a266","expiresOn":"2023-07-07 10:03:52 +0200"},{"name":"Player808","uuid":"6e05ecd8-b367-3929-8021-d89bbb1d2225","expiresOn":"2023-07-04 19:36:14 +0200"},{"name":"Player547","uuid":"20c1711e-6e1a-34df-86a3-92ae832d2f9f","expiresOn":"2023-07-04 11:17:24 +0200"},{"name":"Player265","uuid":"e2fd3051-a7ee-3ec9-ae1f-a1b6240b0501","expiresOn":"2023-07-02 09:25:25 +0200"},{"name":"Player973","uuid":"dea644e0-8ac5-3c66-a811-a50bdc003ad8","expiresOn":"2023-07-04 19:50:50 +0200"},{"name":"Player745","uuid":"6b411cc5-cb23-3aef-b8b1-6cb73d96a2d5","expiresOn":"2023-07-02 21:39:54 +0200"},{"name":"Player952","uuid":"fef5996a-ff47-30bf-9025-1401c61fa24d","expiresOn":"2023-07-07 07:52:56 +0200"},{"name":"Player270","uuid":"e122e0b0-374f-3b1b-a986-63f4fefee57a","expiresOn":"2023-07-02 19:21:11 +0200"},{"name":"Player288","uuid":"3d9ab571-1ea5-360b-bc9d-77cd0b2f72a9","expiresOn":"2023-07-01 21:53:28 +0200"},{"name":"Player600","uuid":"c0f25d98-743c-364e-a2cd-82567612d750","expiresOn":"2023-07-04 19:37:54 +0200"},{"name":"Player136","uuid":"f4642d2b-29f9-34b7-8b90-e6570e856434","expiresOn":"2023-07-02 10:45:25 +0200"},{"name":"Player991","uuid":"fe171829-6121-3106-a1a5-6a3600a4ef7d","expiresOn":"2023-07-07 07:55:06 +0200"},{"name":"Player392","uuid":"61902a9a-ee57-3dbe-9983-6580939e802a","expiresOn":"2023-07-02 12:15:28 +0200"},{"name":"Player444","uuid":"b136c8aa-0654-3583-8db1-8749e12181a1","expiresOn":"2023-07-04 17:48:55 +0200"},{"name":"Player251","uuid":"c9700ac2-fb69-36ca-b322-09edfc5786fb","expiresOn":"2023-07-04 12:35:12 +0200"},{"name":"Player442","uuid":"39ce36e8-f4b8-3b30-a1f4-bfdbbc990254","expiresOn":"2023-07-04 21:57:48 +0200"},{"name":"Player855","uuid":"38ee4029-e397-3902-8d79-d6c4d51a8fef","expiresOn":"2023-07-04 22:02:10 +0200"},{"name":"Player788","uuid":"596302c2-a8ac-3ac1-b055-653042871aa0","expiresOn":"2023-07-07 09:11:44 +0200"},{"name":"Player562","uuid":"37815b4b-a277-3e88-89c9-687629f7c447","expiresOn":"2023-07-02 19:01:17 +0200"},{"name":"Player913","uuid":"90ee7131-905c-3e5a-b4c0-60424db8bd36","expiresOn":"2023-07-04 15:45:51 +0200"},{"name":"Player714","uuid":"0cad2f47-2665-3067-89f3-6434c639de1f","expiresOn":"2023-07-03 21:53:26 +0200"},{"name":"Player143","uuid":"241b8068-7327-314d-abe2-ee7690220b50","expiresOn":"2023-07-03 23:04:24 +0200"},{"name":"Player428","uuid":"e456eb14-598b-334f-9a18-0f7f93a2858c","expiresOn":"2023-07-04 22:06:08 +0200"},{"name":"Player537","uuid":"44915209-9814-3995-87c7-f4dc48b55294","expiresOn":"2023-07-07 11:16:47 +0200"},{"name":"Player421","uuid":"17b67947-156d-3518-9500-f7e04df5e64d","expiresOn":"2023-07-07 08:44:28 +0200"},{"name":"Player948","uuid":"2dd1d9e7-57ae-36c4-8b90-c235b1bdb90f","expiresOn":"2023-07-04 18:03:26 +0200"},{"name":"Player664","uuid":"b4af1ef6-4402-3592-bf8a-f26295105c46","expiresOn":"2023-07-04 17:49:17 +0200"},{"name":"Player787","uuid":"79f8754e-14dd-38b7-8860-09cab9cfb920","expiresOn":"2023-07-02 16:32:33 +0200"},{"name":"Player709","uuid":"ae379d70-8745-301c-b874-9ae51df0fbbc","expiresOn":"2023-07-04 19:43:39 +0200"},{"name":"Player439","uuid":"5a8b675a-352f-385b-94f4-369e3f70aa83","expiresOn":"2023-07-04 17:43:24 +0200"},{"name":"Player917","uuid":"99c5cfd7-706e-3304-b77d-748a9e6aeb44","expiresOn":"2023-07-04 21:52:34 +0200"},{"name":"Player116","uuid":"dfdc5dbd-4a0e-3b6a-a815-601a03741434","expiresOn":"2023-07-03 21:06:42 +0200"},{"name":"Player342","uuid":"56a50a28-2026-3b27-8279-243e3ff82a5a","expiresOn":"2023-07-04 20:04:04 +0200"},{"name":"Player710","uuid":"28507737-102c-35fd-ac17-02009db33c0a","expiresOn":"2023-07-02 09:36:13 +0200"},{"name":"Player207","uuid":"c5f2027d-c05b-3ad0-bbf1-20e3f4a553c8","expiresOn":"2023-07-04 12:26:40 +0200"},{"name":"Player910","uuid":"8610364c-1fe9-3801-96a1-4fb3dc123fc9","expiresOn":"2023-07-02 17:16:18 +0200"},{"name":"Player438","uuid":"ac813ddb-b155-3ee2-ab2a-d375fb559a6a","expiresOn":"2023-07-07 10:00:33 +0200"},{"name":"Player508","uuid":"69715e5e-1775-3a6c-8b64-1d82bcbbe688","expiresOn":"2023-07-02 16:53:31 +0200"},{"name":"Player694","uuid":"9a479c15-8100-309d-8c38-1d323bfdcf80","expiresOn":"2023-07-04 15:44:16 +0200"},{"name":"Player132","uuid":"5cc48495-676c-3721-aed2-7336730ff405","expiresOn":"2023-07-02 23:13:53 +0200"},{"name":"Player756","uuid":"393f993c-07f1-322f-8af5-e61da4aa15d9","expiresOn":"2023-07-02 11:25:49 +0200"},{"name":"Player382","uuid":"1b5803ef-dab8-3673-85ae-9a9160028e1f","expiresOn":"2023-07-02 11:38:22 +0200"},{"name":"Player953","uuid":"d75ffc85-72b0-3b94-be32-d104d89a3a6a","expiresOn":"2023-07-04 22:04:42 +0200"},{"name":"Player30","uuid":"e6ce70cd-b7cc-34be-b059-93e41d35480c","expiresOn":"2023-07-04 18:00:17 +0200"},{"name":"Player785","uuid":"122d3a74-28b3-3553-91d4-9092b640ce8e","expiresOn":"2023-07-07 10:27:11 +0200"},{"name":"Player820","uuid":"c89ac188-5207-3ca2-8ef0-ed700f7bdbef","expiresOn":"2023-07-02 23:35:15 +0200"},{"name":"Player804","uuid":"924198c2-2c42-36d7-958c-f259b1738969","expiresOn":"2023-07-02 17:08:22 +0200"},{"name":"Player338","uuid":"b5db5cb4-9b97-36ff-8827-c3d6087a4cc7","expiresOn":"2023-07-07 10:35:57 +0200"},{"name":"Player372","uuid":"b6529468-5313-3ea4-bc60-3e6ea6cabccd","expiresOn":"2023-07-01 22:10:43 +0200"},{"name":"Player257","uuid":"50e1ab02-92db-38bb-86bf-431939b828b5","expiresOn":"2023-07-02 18:17:49 +0200"},{"name":"Player306","uuid":"a08e137b-04fa-3fce-96cc-517c7a87690d","expiresOn":"2023-07-04 12:59:43 +0200"},{"name":"Player748","uuid":"05d2e66a-903f-3232-a8b0-3899ccc17800","expiresOn":"2023-07-04 18:08:21 +0200"},{"name":"Player620","uuid":"42468be1-4059-36e2-be82-cb1721e83191","expiresOn":"2023-07-02 17:19:52 +0200"},{"name":"Player368","uuid":"1c0e06f3-9808-3189-8407-cec21f7f6640","expiresOn":"2023-07-04 18:52:54 +0200"},{"name":"Player744","uuid":"aeca01bf-232e-37a2-985b-599827b3226a","expiresOn":"2023-07-02 20:19:08 +0200"},{"name":"Player535","uuid":"11827876-1185-3f24-850d-d0e7a71b9795","expiresOn":"2023-07-02 23:21:13 +0200"},{"name":"Player344","uuid":"337a131b-860d-346e-a281-649e07daeae5","expiresOn":"2023-07-02 17:36:01 +0200"},{"name":"Player734","uuid":"3f66a67c-db6c-36b7-b762-d7a40c17883b","expiresOn":"2023-07-04 20:41:07 +0200"},{"name":"Player982","uuid":"7d461d5d-f429-32b0-a043-0156fa837406","expiresOn":"2023-07-02 12:12:08 +0200"},{"name":"Player814","uuid":"777409db-46bf-31bf-844f-6d600c083d6c","expiresOn":"2023-07-02 18:05:17 +0200"},{"name":"Player312","uuid":"d566deca-6b21-32cb-af90-4edf09eeac2e","expiresOn":"2023-07-01 22:00:13 +0200"},{"name":"Player385","uuid":"1e3c9076-6029-36c6-8475-dd38d2030d5f","expiresOn":"2023-07-02 19:46:46 +0200"},{"name":"Player834","uuid":"446b6428-1dda-3773-8986-3a9e0deb6ae4","expiresOn":"2023-07-02 11:29:11 +0200"},{"name":"Player178","uuid":"b436a3b6-3bfd-34ab-a0ca-b7a09efebbdc","expiresOn":"2023-07-02 19:02:27 +0200"},{"name":"Player387","uuid":"3a8a4803-5263-381c-9fa0-2dc262c021aa","expiresOn":"2023-07-04 18:29:48 +0200"},{"name":"Player521","uuid":"88b1442b-3f7c-34cb-9b8b-19f2bae6b8af","expiresOn":"2023-07-04 15:25:46 +0200"},{"name":"Player43","uuid":"f16c07c2-b584-3cdf-b107-12544f991913","expiresOn":"2023-07-07 09:41:55 +0200"},{"name":"Player208","uuid":"a240c974-e4f5-311c-82e7-f92bb39b2584","expiresOn":"2023-07-02 23:32:08 +0200"},{"name":"Player771","uuid":"03825f5c-cf99-36d9-8f32-2c0adc70aba9","expiresOn":"2023-07-04 18:29:25 +0200"},{"name":"Player971","uuid":"f948ac75-0055-3be3-bc2b-d97345a02022","expiresOn":"2023-07-04 12:17:02 +0200"},{"name":"Player33","uuid":"80fb4b31-a429-3891-a185-827168eac297","expiresOn":"2023-07-04 15:21:41 +0200"},{"name":"Player198","uuid":"26d3a8a7-c365-3f1b-98bd-1e86d16aa724","expiresOn":"2023-07-07 09:52:56 +0200"},{"name":"Player592","uuid":"c1b94a42-98fc-3354-947f-44f786fd56fa","expiresOn":"2023-07-04 22:06:27 +0200"},{"name":"ziue","uuid":"74e89738-6c9e-4f59-83ef-d365849e6049","expiresOn":"2023-07-04 22:08:05 +0200"},{"name":"Player247","uuid":"8900053b-f4fc-363a-959f-93166c198461","expiresOn":"2023-07-04 22:07:38 +0200"},{"name":"Player196","uuid":"5763de83-e0ac-32bb-9102-41b754fdcdbe","expiresOn":"2023-07-01 21:48:18 +0200"},{"name":"Player52","uuid":"73181018-6474-36f0-8722-c7fb6befd317","expiresOn":"2023-07-07 08:48:16 +0200"},{"name":"Player504","uuid":"eb08048d-a3b9-3008-984c-fcc8bb7d8893","expiresOn":"2023-07-02 19:25:01 +0200"},{"name":"Player743","uuid":"9dc90764-797e-30c6-bac3-354c01806f0d","expiresOn":"2023-07-02 19:30:28 +0200"},{"name":"Player238","uuid":"af06bbec-ad1a-3c08-8bc5-9803d5e75131","expiresOn":"2023-07-07 10:48:40 +0200"},{"name":"Player328","uuid":"e5a660b6-9d51-36ee-858e-f73e02a3f36f","expiresOn":"2023-07-04 17:58:56 +0200"},{"name":"Player253","uuid":"326096ef-db00-3744-84c9-0b71611a13c5","expiresOn":"2023-07-02 13:53:37 +0200"},{"name":"Player7","uuid":"f9567117-2555-3219-a3d6-01de0ddd7332","expiresOn":"2023-07-02 19:26:43 +0200"},{"name":"Player933","uuid":"bfc5c6f8-886e-30ef-aac9-4df3c4277f54","expiresOn":"2023-07-07 09:53:35 +0200"},{"name":"Player494","uuid":"3e59bd01-5286-3f1f-b563-8ee24767718b","expiresOn":"2023-07-02 11:26:28 +0200"},{"name":"Player685","uuid":"4f2b9d55-5b3e-32ee-ad58-c8df44a23337","expiresOn":"2023-07-02 21:44:06 +0200"},{"name":"Player943","uuid":"2250da04-2be8-3508-9a2e-a09e550d0033","expiresOn":"2023-07-07 09:02:20 +0200"},{"name":"Player420","uuid":"f4755d8e-161a-3abe-8338-935e4189097a","expiresOn":"2023-07-02 13:03:11 +0200"},{"name":"Player548","uuid":"b89d12f3-1740-34c6-919e-a2949a3e81fe","expiresOn":"2023-07-02 12:43:12 +0200"},{"name":"Player983","uuid":"3959aa12-3a9d-3fc4-84ad-d0d3c7c6550b","expiresOn":"2023-07-02 17:07:49 +0200"},{"name":"Player367","uuid":"dcea94fd-efa4-3c29-93d8-2d56666245c7","expiresOn":"2023-07-04 17:00:07 +0200"},{"name":"Player936","uuid":"0ecc5f64-1f20-34a1-a889-f88d84dd36f3","expiresOn":"2023-07-04 13:32:46 +0200"},{"name":"Player847","uuid":"6004b361-ef29-34d2-b89c-32df237908c7","expiresOn":"2023-07-07 09:17:33 +0200"},{"name":"Player292","uuid":"e687d94c-f442-3ab7-a8a6-e1baf5dca36c","expiresOn":"2023-07-04 18:54:46 +0200"},{"name":"Player660","uuid":"fc1768ff-17ae-39e8-bef2-f3e0d98306ba","expiresOn":"2023-07-07 09:48:31 +0200"},{"name":"Player906","uuid":"f8a1463c-07b2-3433-918f-386b8accf0f1","expiresOn":"2023-07-04 17:56:13 +0200"},{"name":"Player540","uuid":"c2506432-c159-30c0-93d8-64f2a6272277","expiresOn":"2023-07-02 19:38:49 +0200"},{"name":"Player851","uuid":"ef840057-4261-321f-afc5-1f78d46c0c90","expiresOn":"2023-07-02 21:07:13 +0200"},{"name":"Player563","uuid":"1e92cadb-e057-30f8-a789-5ce10551ba1e","expiresOn":"2023-07-02 17:00:03 +0200"},{"name":"Player211","uuid":"da0854f1-946e-3e92-942a-afd6fa88ef77","expiresOn":"2023-07-01 22:05:04 +0200"},{"name":"Player204","uuid":"ac41f76c-b1dd-32f9-a5d3-3eb94da3e653","expiresOn":"2023-07-04 13:34:07 +0200"},{"name":"Player689","uuid":"e7f0f282-ec78-3bba-aaaf-9edc548f540d","expiresOn":"2023-07-07 10:11:20 +0200"},{"name":"Player124","uuid":"05d3c308-6531-310d-988c-a6164eaf800d","expiresOn":"2023-07-04 19:39:28 +0200"},{"name":"Player780","uuid":"6dc954f4-181a-3c6c-99e2-951f7202b4c5","expiresOn":"2023-07-02 19:34:11 +0200"},{"name":"Player308","uuid":"6db1171d-4fa6-31cb-b425-1896281a26e2","expiresOn":"2023-07-01 21:54:43 +0200"},{"name":"Player371","uuid":"184a029e-ad3d-3abd-8a1a-c044d35081d5","expiresOn":"2023-07-01 21:56:38 +0200"},{"name":"Player637","uuid":"3e97bd98-3fed-36a5-a2b2-bf93d544eeed","expiresOn":"2023-07-02 11:36:38 +0200"},{"name":"Player965","uuid":"2797ecaf-07ab-3788-a2f8-6002cfc50e1d","expiresOn":"2023-07-02 14:07:47 +0200"},{"name":"Player667","uuid":"336cdb69-b175-3ad2-a556-740278ca80ab","expiresOn":"2023-07-02 19:25:58 +0200"},{"name":"Player374","uuid":"80366950-5482-38de-842a-c4cdd5802ec2","expiresOn":"2023-07-04 12:25:51 +0200"},{"name":"Player773","uuid":"b7a940e4-3cde-3275-9c73-2f71fe593c98","expiresOn":"2023-07-02 12:11:14 +0200"},{"name":"Player277","uuid":"0d3f56a3-2b3f-38d6-a849-9d61b8f97a5c","expiresOn":"2023-07-02 23:03:56 +0200"},{"name":"Player90","uuid":"e5bad5ae-87fa-3676-b10f-8a571200822c","expiresOn":"2023-07-04 22:09:28 +0200"},{"name":"Player243","uuid":"6554aa36-758b-3cee-a8f7-555b71fa0c55","expiresOn":"2023-07-07 10:46:37 +0200"},{"name":"Player516","uuid":"492dc575-b72e-3d83-b2fd-33ab63727150","expiresOn":"2023-07-04 11:39:01 +0200"},{"name":"Player8","uuid":"fbf616a3-396f-3061-9319-5553e1ce264f","expiresOn":"2023-07-07 08:39:32 +0200"},{"name":"Player683","uuid":"e10ba356-0952-343e-8ccb-a3b6e69bf75e","expiresOn":"2023-07-02 23:26:36 +0200"},{"name":"Player907","uuid":"b5b2ff24-9e23-373f-97d2-19884357bdea","expiresOn":"2023-07-04 21:45:45 +0200"},{"name":"Player920","uuid":"ad8236b9-e26f-349c-902e-7100197cd86d","expiresOn":"2023-07-07 08:59:56 +0200"},{"name":"Player591","uuid":"3c7cef0c-c4d3-3eb2-a04d-c369cce398ef","expiresOn":"2023-07-03 21:38:40 +0200"},{"name":"Player122","uuid":"9f706b9c-a5d7-3950-a693-97c335e2631f","expiresOn":"2023-07-02 20:13:44 +0200"},{"name":"Player297","uuid":"04aedfc4-153f-3d65-bb99-866996994a71","expiresOn":"2023-07-02 19:10:52 +0200"},{"name":"Player711","uuid":"8878ef4a-de27-32df-b636-12a0a607ca5d","expiresOn":"2023-07-02 21:24:26 +0200"},{"name":"Player853","uuid":"93122710-9b50-34d0-8726-c7db8c850b07","expiresOn":"2023-07-02 23:23:55 +0200"},{"name":"Player569","uuid":"ae93e61c-5484-3859-844d-955ead0489d9","expiresOn":"2023-07-07 10:03:07 +0200"},{"name":"Player542","uuid":"ca200422-e977-3e4c-ad0b-8fd2f35df23f","expiresOn":"2023-07-07 10:28:06 +0200"},{"name":"Player397","uuid":"dcba42c1-27a4-3c10-af01-648a8cbd49eb","expiresOn":"2023-07-04 20:07:21 +0200"},{"name":"Player502","uuid":"1c6ab893-c8be-3ad8-a14c-5cafcb89dfd5","expiresOn":"2023-07-04 22:07:53 +0200"},{"name":"Player712","uuid":"e4358028-bc3b-38cc-b645-4d08d3b4f456","expiresOn":"2023-07-02 23:12:00 +0200"},{"name":"Player294","uuid":"132512aa-0146-35c4-8d7a-8445da21ff87","expiresOn":"2023-07-04 17:48:21 +0200"},{"name":"Player671","uuid":"41196538-4c2b-371d-b141-0e51ad033fac","expiresOn":"2023-07-02 13:23:27 +0200"},{"name":"Player370","uuid":"5db36629-721d-3a36-8728-14b3ab112351","expiresOn":"2023-07-04 12:42:11 +0200"},{"name":"Player463","uuid":"6256f6e3-2e58-3651-998e-2564a0b2a631","expiresOn":"2023-07-04 17:28:40 +0200"},{"name":"Player478","uuid":"303505c1-798d-3df3-ab8d-6c701f3fe36a","expiresOn":"2023-07-04 19:33:16 +0200"},{"name":"Player93","uuid":"04ba6478-628e-32a2-915d-0b45ca8b366b","expiresOn":"2023-07-02 21:21:03 +0200"},{"name":"Player287","uuid":"483a9f6c-d89c-3cd9-9ee4-92f25a76c0c5","expiresOn":"2023-07-04 17:37:10 +0200"},{"name":"Player790","uuid":"2f0d3d8c-afbe-358f-b8f3-786d7b0f9259","expiresOn":"2023-07-02 11:30:41 +0200"},{"name":"Player67","uuid":"24a251d3-c89c-39ba-8cae-1f7d4c0691c9","expiresOn":"2023-07-01 21:51:52 +0200"},{"name":"Player517","uuid":"3fff7d86-24d6-33b1-8ce1-9423a13c7c89","expiresOn":"2023-07-04 17:58:03 +0200"},{"name":"Player889","uuid":"a205b8da-efc6-37ad-8e1d-84c0239cdd21","expiresOn":"2023-07-04 13:07:57 +0200"},{"name":"Player293","uuid":"738c48db-b050-3c6f-9053-5a4abfe0d0a6","expiresOn":"2023-07-02 20:09:30 +0200"},{"name":"Player905","uuid":"a498be5d-0142-3d23-a17c-8823a1cd27b0","expiresOn":"2023-07-02 21:41:12 +0200"},{"name":"Player843","uuid":"45c2c1e2-9dd4-3d62-8e53-82e2b4b32b4a","expiresOn":"2023-07-04 20:02:02 +0200"},{"name":"Player38","uuid":"f189da80-d431-3f80-9126-43ccee16f040","expiresOn":"2023-07-03 22:36:28 +0200"},{"name":"Player231","uuid":"0ef61a2a-d91b-37b4-a10d-af67b917d543","expiresOn":"2023-07-02 21:33:30 +0200"},{"name":"Player669","uuid":"b5079939-0881-3d3d-a86e-56223944774f","expiresOn":"2023-07-07 12:58:20 +0200"}] \ No newline at end of file +<<<<<<< HEAD +[{"name":"Player901","uuid":"fcaa91cc-3a77-3318-a8ae-f2f3862b7fde","expiresOn":"2023-07-08 07:52:28 +0200"},{"name":"Player86","uuid":"811b757c-1be5-33cf-864a-fb91beb14990","expiresOn":"2023-07-03 21:47:43 +0200"},{"name":"Player650","uuid":"19f51a77-b6fb-3469-a8b6-228ec5ce5961","expiresOn":"2023-07-04 21:56:20 +0200"},{"name":"Player378","uuid":"0a5e4ff0-6099-36b5-b64d-a84ffa9f1f72","expiresOn":"2023-07-04 19:57:34 +0200"},{"name":"Player897","uuid":"29b47250-4236-34ae-8b46-7341b800b727","expiresOn":"2023-07-02 22:01:45 +0200"},{"name":"Player970","uuid":"f2c5b984-5c4a-355c-800e-d2ce35cf8f1c","expiresOn":"2023-07-02 22:56:39 +0200"},{"name":"Player320","uuid":"77167de3-5df9-3c83-b06a-bed9a476e835","expiresOn":"2023-07-07 10:20:07 +0200"},{"name":"Player829","uuid":"4e1f5e28-f05f-3acf-ac65-db01d9d51f95","expiresOn":"2023-07-05 07:47:49 +0200"},{"name":"Player430","uuid":"5b6052a7-6bab-33d6-92c2-a3d77755ef06","expiresOn":"2023-07-04 22:05:05 +0200"},{"name":"Player273","uuid":"18b3a035-3e67-34ed-889e-932160306e4f","expiresOn":"2023-07-02 16:57:48 +0200"},{"name":"Player353","uuid":"1e0b9d62-e071-33ba-b82e-1c564a46e2f0","expiresOn":"2023-07-02 23:00:42 +0200"},{"name":"Player100","uuid":"b63c1160-7834-3764-9276-2fb9c5acd6ce","expiresOn":"2023-07-02 22:16:49 +0200"},{"name":"Player536","uuid":"8cfc5391-e37d-328f-a689-9b5f6c4663f5","expiresOn":"2023-07-07 10:47:53 +0200"},{"name":"Player930","uuid":"eac293da-7d7d-3c6a-94e5-fba80de0212f","expiresOn":"2023-07-02 20:52:17 +0200"},{"name":"Player106","uuid":"b31fadf2-d5d5-36b6-a9c6-26ad19735f31","expiresOn":"2023-07-05 09:49:36 +0200"},{"name":"Player758","uuid":"92f8a523-1476-36c1-a74b-ef7c8b1d0bfd","expiresOn":"2023-07-02 21:35:50 +0200"},{"name":"Player482","uuid":"a692389e-9f43-3e66-84db-bbfe94bd70db","expiresOn":"2023-07-04 18:27:43 +0200"},{"name":"Player818","uuid":"84e9e4f6-df8d-3fc9-b2c7-0eb3b9531d39","expiresOn":"2023-07-04 00:09:19 +0200"},{"name":"Player770","uuid":"78b89d61-eeb6-339b-a649-bd65ff29a266","expiresOn":"2023-07-07 10:03:52 +0200"},{"name":"Player808","uuid":"6e05ecd8-b367-3929-8021-d89bbb1d2225","expiresOn":"2023-07-04 19:36:14 +0200"},{"name":"Player547","uuid":"20c1711e-6e1a-34df-86a3-92ae832d2f9f","expiresOn":"2023-07-04 11:17:24 +0200"},{"name":"Player265","uuid":"e2fd3051-a7ee-3ec9-ae1f-a1b6240b0501","expiresOn":"2023-07-02 09:25:25 +0200"},{"name":"Player973","uuid":"dea644e0-8ac5-3c66-a811-a50bdc003ad8","expiresOn":"2023-07-04 19:50:50 +0200"},{"name":"Player745","uuid":"6b411cc5-cb23-3aef-b8b1-6cb73d96a2d5","expiresOn":"2023-07-02 21:39:54 +0200"},{"name":"Player952","uuid":"fef5996a-ff47-30bf-9025-1401c61fa24d","expiresOn":"2023-07-07 07:52:56 +0200"},{"name":"Player270","uuid":"e122e0b0-374f-3b1b-a986-63f4fefee57a","expiresOn":"2023-07-02 19:21:11 +0200"},{"name":"Player288","uuid":"3d9ab571-1ea5-360b-bc9d-77cd0b2f72a9","expiresOn":"2023-07-01 21:53:28 +0200"},{"name":"Player600","uuid":"c0f25d98-743c-364e-a2cd-82567612d750","expiresOn":"2023-07-04 19:37:54 +0200"},{"name":"Player136","uuid":"f4642d2b-29f9-34b7-8b90-e6570e856434","expiresOn":"2023-07-02 10:45:25 +0200"},{"name":"Player991","uuid":"fe171829-6121-3106-a1a5-6a3600a4ef7d","expiresOn":"2023-07-07 07:55:06 +0200"},{"name":"Player392","uuid":"61902a9a-ee57-3dbe-9983-6580939e802a","expiresOn":"2023-07-02 12:15:28 +0200"},{"name":"Player444","uuid":"b136c8aa-0654-3583-8db1-8749e12181a1","expiresOn":"2023-07-04 17:48:55 +0200"},{"name":"Player251","uuid":"c9700ac2-fb69-36ca-b322-09edfc5786fb","expiresOn":"2023-07-04 12:35:12 +0200"},{"name":"Player442","uuid":"39ce36e8-f4b8-3b30-a1f4-bfdbbc990254","expiresOn":"2023-07-04 21:57:48 +0200"},{"name":"Player855","uuid":"38ee4029-e397-3902-8d79-d6c4d51a8fef","expiresOn":"2023-07-04 22:02:10 +0200"},{"name":"Player788","uuid":"596302c2-a8ac-3ac1-b055-653042871aa0","expiresOn":"2023-07-07 09:11:44 +0200"},{"name":"Player562","uuid":"37815b4b-a277-3e88-89c9-687629f7c447","expiresOn":"2023-07-02 19:01:17 +0200"},{"name":"Player913","uuid":"90ee7131-905c-3e5a-b4c0-60424db8bd36","expiresOn":"2023-07-04 15:45:51 +0200"},{"name":"Player714","uuid":"0cad2f47-2665-3067-89f3-6434c639de1f","expiresOn":"2023-07-03 21:53:26 +0200"},{"name":"Player143","uuid":"241b8068-7327-314d-abe2-ee7690220b50","expiresOn":"2023-07-03 23:04:24 +0200"},{"name":"Player428","uuid":"e456eb14-598b-334f-9a18-0f7f93a2858c","expiresOn":"2023-07-04 22:06:08 +0200"},{"name":"Player537","uuid":"44915209-9814-3995-87c7-f4dc48b55294","expiresOn":"2023-07-07 11:16:47 +0200"},{"name":"Player421","uuid":"17b67947-156d-3518-9500-f7e04df5e64d","expiresOn":"2023-07-07 08:44:28 +0200"},{"name":"Player948","uuid":"2dd1d9e7-57ae-36c4-8b90-c235b1bdb90f","expiresOn":"2023-07-04 18:03:26 +0200"},{"name":"Player664","uuid":"b4af1ef6-4402-3592-bf8a-f26295105c46","expiresOn":"2023-07-04 17:49:17 +0200"},{"name":"Player787","uuid":"79f8754e-14dd-38b7-8860-09cab9cfb920","expiresOn":"2023-07-02 16:32:33 +0200"},{"name":"Player709","uuid":"ae379d70-8745-301c-b874-9ae51df0fbbc","expiresOn":"2023-07-04 19:43:39 +0200"},{"name":"Player439","uuid":"5a8b675a-352f-385b-94f4-369e3f70aa83","expiresOn":"2023-07-04 17:43:24 +0200"},{"name":"Player917","uuid":"99c5cfd7-706e-3304-b77d-748a9e6aeb44","expiresOn":"2023-07-04 21:52:34 +0200"},{"name":"Player116","uuid":"dfdc5dbd-4a0e-3b6a-a815-601a03741434","expiresOn":"2023-07-03 21:06:42 +0200"},{"name":"Player342","uuid":"56a50a28-2026-3b27-8279-243e3ff82a5a","expiresOn":"2023-07-04 20:04:04 +0200"},{"name":"Player710","uuid":"28507737-102c-35fd-ac17-02009db33c0a","expiresOn":"2023-07-02 09:36:13 +0200"},{"name":"Player207","uuid":"c5f2027d-c05b-3ad0-bbf1-20e3f4a553c8","expiresOn":"2023-07-04 12:26:40 +0200"},{"name":"Player910","uuid":"8610364c-1fe9-3801-96a1-4fb3dc123fc9","expiresOn":"2023-07-02 17:16:18 +0200"},{"name":"Player438","uuid":"ac813ddb-b155-3ee2-ab2a-d375fb559a6a","expiresOn":"2023-07-07 10:00:33 +0200"},{"name":"Player508","uuid":"69715e5e-1775-3a6c-8b64-1d82bcbbe688","expiresOn":"2023-07-02 16:53:31 +0200"},{"name":"Player694","uuid":"9a479c15-8100-309d-8c38-1d323bfdcf80","expiresOn":"2023-07-04 15:44:16 +0200"},{"name":"Player132","uuid":"5cc48495-676c-3721-aed2-7336730ff405","expiresOn":"2023-07-02 23:13:53 +0200"},{"name":"Player756","uuid":"393f993c-07f1-322f-8af5-e61da4aa15d9","expiresOn":"2023-07-02 11:25:49 +0200"},{"name":"Player382","uuid":"1b5803ef-dab8-3673-85ae-9a9160028e1f","expiresOn":"2023-07-02 11:38:22 +0200"},{"name":"Player953","uuid":"d75ffc85-72b0-3b94-be32-d104d89a3a6a","expiresOn":"2023-07-04 22:04:42 +0200"},{"name":"Player30","uuid":"e6ce70cd-b7cc-34be-b059-93e41d35480c","expiresOn":"2023-07-04 18:00:17 +0200"},{"name":"Player785","uuid":"122d3a74-28b3-3553-91d4-9092b640ce8e","expiresOn":"2023-07-07 10:27:11 +0200"},{"name":"Player820","uuid":"c89ac188-5207-3ca2-8ef0-ed700f7bdbef","expiresOn":"2023-07-02 23:35:15 +0200"},{"name":"Player804","uuid":"924198c2-2c42-36d7-958c-f259b1738969","expiresOn":"2023-07-02 17:08:22 +0200"},{"name":"Player338","uuid":"b5db5cb4-9b97-36ff-8827-c3d6087a4cc7","expiresOn":"2023-07-07 10:35:57 +0200"},{"name":"Player372","uuid":"b6529468-5313-3ea4-bc60-3e6ea6cabccd","expiresOn":"2023-07-01 22:10:43 +0200"},{"name":"Player257","uuid":"50e1ab02-92db-38bb-86bf-431939b828b5","expiresOn":"2023-07-02 18:17:49 +0200"},{"name":"Player306","uuid":"a08e137b-04fa-3fce-96cc-517c7a87690d","expiresOn":"2023-07-04 12:59:43 +0200"},{"name":"Player748","uuid":"05d2e66a-903f-3232-a8b0-3899ccc17800","expiresOn":"2023-07-04 18:08:21 +0200"},{"name":"Player620","uuid":"42468be1-4059-36e2-be82-cb1721e83191","expiresOn":"2023-07-02 17:19:52 +0200"},{"name":"Player368","uuid":"1c0e06f3-9808-3189-8407-cec21f7f6640","expiresOn":"2023-07-04 18:52:54 +0200"},{"name":"Player744","uuid":"aeca01bf-232e-37a2-985b-599827b3226a","expiresOn":"2023-07-02 20:19:08 +0200"},{"name":"Player535","uuid":"11827876-1185-3f24-850d-d0e7a71b9795","expiresOn":"2023-07-02 23:21:13 +0200"},{"name":"Player344","uuid":"337a131b-860d-346e-a281-649e07daeae5","expiresOn":"2023-07-02 17:36:01 +0200"},{"name":"Player734","uuid":"3f66a67c-db6c-36b7-b762-d7a40c17883b","expiresOn":"2023-07-04 20:41:07 +0200"},{"name":"Player982","uuid":"7d461d5d-f429-32b0-a043-0156fa837406","expiresOn":"2023-07-02 12:12:08 +0200"},{"name":"Player814","uuid":"777409db-46bf-31bf-844f-6d600c083d6c","expiresOn":"2023-07-02 18:05:17 +0200"},{"name":"Player312","uuid":"d566deca-6b21-32cb-af90-4edf09eeac2e","expiresOn":"2023-07-01 22:00:13 +0200"},{"name":"Player385","uuid":"1e3c9076-6029-36c6-8475-dd38d2030d5f","expiresOn":"2023-07-02 19:46:46 +0200"},{"name":"Player834","uuid":"446b6428-1dda-3773-8986-3a9e0deb6ae4","expiresOn":"2023-07-02 11:29:11 +0200"},{"name":"Player178","uuid":"b436a3b6-3bfd-34ab-a0ca-b7a09efebbdc","expiresOn":"2023-07-02 19:02:27 +0200"},{"name":"Player387","uuid":"3a8a4803-5263-381c-9fa0-2dc262c021aa","expiresOn":"2023-07-04 18:29:48 +0200"},{"name":"Player521","uuid":"88b1442b-3f7c-34cb-9b8b-19f2bae6b8af","expiresOn":"2023-07-04 15:25:46 +0200"},{"name":"Player43","uuid":"f16c07c2-b584-3cdf-b107-12544f991913","expiresOn":"2023-07-07 09:41:55 +0200"},{"name":"Player208","uuid":"a240c974-e4f5-311c-82e7-f92bb39b2584","expiresOn":"2023-07-02 23:32:08 +0200"},{"name":"Player771","uuid":"03825f5c-cf99-36d9-8f32-2c0adc70aba9","expiresOn":"2023-07-04 18:29:25 +0200"},{"name":"Player971","uuid":"f948ac75-0055-3be3-bc2b-d97345a02022","expiresOn":"2023-07-04 12:17:02 +0200"},{"name":"Player33","uuid":"80fb4b31-a429-3891-a185-827168eac297","expiresOn":"2023-07-04 15:21:41 +0200"},{"name":"Player198","uuid":"26d3a8a7-c365-3f1b-98bd-1e86d16aa724","expiresOn":"2023-07-07 09:52:56 +0200"},{"name":"Player592","uuid":"c1b94a42-98fc-3354-947f-44f786fd56fa","expiresOn":"2023-07-04 22:06:27 +0200"},{"name":"ziue","uuid":"74e89738-6c9e-4f59-83ef-d365849e6049","expiresOn":"2023-07-04 22:08:05 +0200"},{"name":"Player247","uuid":"8900053b-f4fc-363a-959f-93166c198461","expiresOn":"2023-07-04 22:07:38 +0200"},{"name":"Player196","uuid":"5763de83-e0ac-32bb-9102-41b754fdcdbe","expiresOn":"2023-07-01 21:48:18 +0200"},{"name":"Player52","uuid":"73181018-6474-36f0-8722-c7fb6befd317","expiresOn":"2023-07-07 08:48:16 +0200"},{"name":"Player504","uuid":"eb08048d-a3b9-3008-984c-fcc8bb7d8893","expiresOn":"2023-07-02 19:25:01 +0200"},{"name":"Player743","uuid":"9dc90764-797e-30c6-bac3-354c01806f0d","expiresOn":"2023-07-02 19:30:28 +0200"},{"name":"Player238","uuid":"af06bbec-ad1a-3c08-8bc5-9803d5e75131","expiresOn":"2023-07-07 10:48:40 +0200"},{"name":"Player328","uuid":"e5a660b6-9d51-36ee-858e-f73e02a3f36f","expiresOn":"2023-07-04 17:58:56 +0200"},{"name":"Player253","uuid":"326096ef-db00-3744-84c9-0b71611a13c5","expiresOn":"2023-07-02 13:53:37 +0200"},{"name":"Player7","uuid":"f9567117-2555-3219-a3d6-01de0ddd7332","expiresOn":"2023-07-02 19:26:43 +0200"},{"name":"Player933","uuid":"bfc5c6f8-886e-30ef-aac9-4df3c4277f54","expiresOn":"2023-07-07 09:53:35 +0200"},{"name":"Player494","uuid":"3e59bd01-5286-3f1f-b563-8ee24767718b","expiresOn":"2023-07-02 11:26:28 +0200"},{"name":"Player685","uuid":"4f2b9d55-5b3e-32ee-ad58-c8df44a23337","expiresOn":"2023-07-02 21:44:06 +0200"},{"name":"Player943","uuid":"2250da04-2be8-3508-9a2e-a09e550d0033","expiresOn":"2023-07-07 09:02:20 +0200"},{"name":"Player420","uuid":"f4755d8e-161a-3abe-8338-935e4189097a","expiresOn":"2023-07-02 13:03:11 +0200"},{"name":"Player548","uuid":"b89d12f3-1740-34c6-919e-a2949a3e81fe","expiresOn":"2023-07-02 12:43:12 +0200"},{"name":"Player983","uuid":"3959aa12-3a9d-3fc4-84ad-d0d3c7c6550b","expiresOn":"2023-07-02 17:07:49 +0200"},{"name":"Player367","uuid":"dcea94fd-efa4-3c29-93d8-2d56666245c7","expiresOn":"2023-07-04 17:00:07 +0200"},{"name":"Player936","uuid":"0ecc5f64-1f20-34a1-a889-f88d84dd36f3","expiresOn":"2023-07-04 13:32:46 +0200"},{"name":"Player847","uuid":"6004b361-ef29-34d2-b89c-32df237908c7","expiresOn":"2023-07-07 09:17:33 +0200"},{"name":"Player292","uuid":"e687d94c-f442-3ab7-a8a6-e1baf5dca36c","expiresOn":"2023-07-04 18:54:46 +0200"},{"name":"Player660","uuid":"fc1768ff-17ae-39e8-bef2-f3e0d98306ba","expiresOn":"2023-07-07 09:48:31 +0200"},{"name":"Player906","uuid":"f8a1463c-07b2-3433-918f-386b8accf0f1","expiresOn":"2023-07-04 17:56:13 +0200"},{"name":"Player540","uuid":"c2506432-c159-30c0-93d8-64f2a6272277","expiresOn":"2023-07-02 19:38:49 +0200"},{"name":"Player851","uuid":"ef840057-4261-321f-afc5-1f78d46c0c90","expiresOn":"2023-07-02 21:07:13 +0200"},{"name":"Player563","uuid":"1e92cadb-e057-30f8-a789-5ce10551ba1e","expiresOn":"2023-07-02 17:00:03 +0200"},{"name":"Player211","uuid":"da0854f1-946e-3e92-942a-afd6fa88ef77","expiresOn":"2023-07-01 22:05:04 +0200"},{"name":"Player204","uuid":"ac41f76c-b1dd-32f9-a5d3-3eb94da3e653","expiresOn":"2023-07-04 13:34:07 +0200"},{"name":"Player689","uuid":"e7f0f282-ec78-3bba-aaaf-9edc548f540d","expiresOn":"2023-07-07 10:11:20 +0200"},{"name":"Player124","uuid":"05d3c308-6531-310d-988c-a6164eaf800d","expiresOn":"2023-07-04 19:39:28 +0200"},{"name":"Player780","uuid":"6dc954f4-181a-3c6c-99e2-951f7202b4c5","expiresOn":"2023-07-02 19:34:11 +0200"},{"name":"Player308","uuid":"6db1171d-4fa6-31cb-b425-1896281a26e2","expiresOn":"2023-07-01 21:54:43 +0200"},{"name":"Player371","uuid":"184a029e-ad3d-3abd-8a1a-c044d35081d5","expiresOn":"2023-07-01 21:56:38 +0200"},{"name":"Player637","uuid":"3e97bd98-3fed-36a5-a2b2-bf93d544eeed","expiresOn":"2023-07-02 11:36:38 +0200"},{"name":"Player965","uuid":"2797ecaf-07ab-3788-a2f8-6002cfc50e1d","expiresOn":"2023-07-02 14:07:47 +0200"},{"name":"Player667","uuid":"336cdb69-b175-3ad2-a556-740278ca80ab","expiresOn":"2023-07-02 19:25:58 +0200"},{"name":"Player374","uuid":"80366950-5482-38de-842a-c4cdd5802ec2","expiresOn":"2023-07-04 12:25:51 +0200"},{"name":"Player773","uuid":"b7a940e4-3cde-3275-9c73-2f71fe593c98","expiresOn":"2023-07-02 12:11:14 +0200"},{"name":"Player277","uuid":"0d3f56a3-2b3f-38d6-a849-9d61b8f97a5c","expiresOn":"2023-07-02 23:03:56 +0200"},{"name":"Player90","uuid":"e5bad5ae-87fa-3676-b10f-8a571200822c","expiresOn":"2023-07-04 22:09:28 +0200"},{"name":"Player243","uuid":"6554aa36-758b-3cee-a8f7-555b71fa0c55","expiresOn":"2023-07-07 10:46:37 +0200"},{"name":"Player516","uuid":"492dc575-b72e-3d83-b2fd-33ab63727150","expiresOn":"2023-07-04 11:39:01 +0200"},{"name":"Player8","uuid":"fbf616a3-396f-3061-9319-5553e1ce264f","expiresOn":"2023-07-07 08:39:32 +0200"},{"name":"Player683","uuid":"e10ba356-0952-343e-8ccb-a3b6e69bf75e","expiresOn":"2023-07-02 23:26:36 +0200"},{"name":"Player907","uuid":"b5b2ff24-9e23-373f-97d2-19884357bdea","expiresOn":"2023-07-04 21:45:45 +0200"},{"name":"Player920","uuid":"ad8236b9-e26f-349c-902e-7100197cd86d","expiresOn":"2023-07-07 08:59:56 +0200"},{"name":"Player591","uuid":"3c7cef0c-c4d3-3eb2-a04d-c369cce398ef","expiresOn":"2023-07-03 21:38:40 +0200"},{"name":"Player122","uuid":"9f706b9c-a5d7-3950-a693-97c335e2631f","expiresOn":"2023-07-02 20:13:44 +0200"},{"name":"Player297","uuid":"04aedfc4-153f-3d65-bb99-866996994a71","expiresOn":"2023-07-02 19:10:52 +0200"},{"name":"Player711","uuid":"8878ef4a-de27-32df-b636-12a0a607ca5d","expiresOn":"2023-07-02 21:24:26 +0200"},{"name":"Player853","uuid":"93122710-9b50-34d0-8726-c7db8c850b07","expiresOn":"2023-07-02 23:23:55 +0200"},{"name":"Player569","uuid":"ae93e61c-5484-3859-844d-955ead0489d9","expiresOn":"2023-07-07 10:03:07 +0200"},{"name":"Player542","uuid":"ca200422-e977-3e4c-ad0b-8fd2f35df23f","expiresOn":"2023-07-07 10:28:06 +0200"},{"name":"Player397","uuid":"dcba42c1-27a4-3c10-af01-648a8cbd49eb","expiresOn":"2023-07-04 20:07:21 +0200"},{"name":"Player502","uuid":"1c6ab893-c8be-3ad8-a14c-5cafcb89dfd5","expiresOn":"2023-07-04 22:07:53 +0200"},{"name":"Player712","uuid":"e4358028-bc3b-38cc-b645-4d08d3b4f456","expiresOn":"2023-07-02 23:12:00 +0200"},{"name":"Player294","uuid":"132512aa-0146-35c4-8d7a-8445da21ff87","expiresOn":"2023-07-04 17:48:21 +0200"},{"name":"Player671","uuid":"41196538-4c2b-371d-b141-0e51ad033fac","expiresOn":"2023-07-02 13:23:27 +0200"},{"name":"Player370","uuid":"5db36629-721d-3a36-8728-14b3ab112351","expiresOn":"2023-07-04 12:42:11 +0200"},{"name":"Player463","uuid":"6256f6e3-2e58-3651-998e-2564a0b2a631","expiresOn":"2023-07-04 17:28:40 +0200"},{"name":"Player478","uuid":"303505c1-798d-3df3-ab8d-6c701f3fe36a","expiresOn":"2023-07-04 19:33:16 +0200"},{"name":"Player93","uuid":"04ba6478-628e-32a2-915d-0b45ca8b366b","expiresOn":"2023-07-02 21:21:03 +0200"},{"name":"Player287","uuid":"483a9f6c-d89c-3cd9-9ee4-92f25a76c0c5","expiresOn":"2023-07-04 17:37:10 +0200"},{"name":"Player790","uuid":"2f0d3d8c-afbe-358f-b8f3-786d7b0f9259","expiresOn":"2023-07-02 11:30:41 +0200"},{"name":"Player67","uuid":"24a251d3-c89c-39ba-8cae-1f7d4c0691c9","expiresOn":"2023-07-01 21:51:52 +0200"},{"name":"Player517","uuid":"3fff7d86-24d6-33b1-8ce1-9423a13c7c89","expiresOn":"2023-07-04 17:58:03 +0200"},{"name":"Player889","uuid":"a205b8da-efc6-37ad-8e1d-84c0239cdd21","expiresOn":"2023-07-04 13:07:57 +0200"},{"name":"Player293","uuid":"738c48db-b050-3c6f-9053-5a4abfe0d0a6","expiresOn":"2023-07-02 20:09:30 +0200"},{"name":"Player905","uuid":"a498be5d-0142-3d23-a17c-8823a1cd27b0","expiresOn":"2023-07-02 21:41:12 +0200"},{"name":"Player843","uuid":"45c2c1e2-9dd4-3d62-8e53-82e2b4b32b4a","expiresOn":"2023-07-04 20:02:02 +0200"},{"name":"Player38","uuid":"f189da80-d431-3f80-9126-43ccee16f040","expiresOn":"2023-07-03 22:36:28 +0200"},{"name":"Player231","uuid":"0ef61a2a-d91b-37b4-a10d-af67b917d543","expiresOn":"2023-07-02 21:33:30 +0200"},{"name":"Player669","uuid":"b5079939-0881-3d3d-a86e-56223944774f","expiresOn":"2023-07-07 12:58:20 +0200"}] +======= +[{"name":"Player436","uuid":"01986ee6-ca3c-3b64-bdcd-02039da5963f","expiresOn":"2023-07-07 21:59:32 +0200"},{"name":"Player414","uuid":"408d12c9-559c-3212-bca5-d1a3fc38a0f7","expiresOn":"2023-07-07 17:05:56 +0200"},{"name":"Player789","uuid":"81ef6cf6-107d-35d0-bf6b-c2f04f3d07c4","expiresOn":"2023-07-07 18:50:02 +0200"},{"name":"Player143","uuid":"241b8068-7327-314d-abe2-ee7690220b50","expiresOn":"2023-07-07 16:25:00 +0200"},{"name":"Player279","uuid":"5c6d79ca-db3a-3a0a-8d04-9e811bde5c64","expiresOn":"2023-07-07 16:59:26 +0200"},{"name":"Player839","uuid":"66397f00-f974-3e3d-944b-5f58f7613e27","expiresOn":"2023-07-07 20:54:06 +0200"},{"name":"Player286","uuid":"ead290bb-bad9-36fc-b265-db734c4eb7d4","expiresOn":"2023-07-07 16:58:30 +0200"},{"name":"Player113","uuid":"387e1557-1e63-3242-8750-2853d61db146","expiresOn":"2023-07-07 16:52:08 +0200"},{"name":"Player654","uuid":"44e8d65a-a4b2-3c63-9ef0-950bb5685028","expiresOn":"2023-07-07 16:54:25 +0200"},{"name":"Player123","uuid":"3da1e349-17b0-38ed-a07b-1e78c8ebd956","expiresOn":"2023-07-07 16:40:27 +0200"},{"name":"Player439","uuid":"5a8b675a-352f-385b-94f4-369e3f70aa83","expiresOn":"2023-07-07 16:52:30 +0200"}] +>>>>>>> 4d90bcee11f7db413edf86afe5d05bfaa26ba40c