Lunar Client main menu

This commit is contained in:
PeytonPlayz595 2023-10-29 19:29:12 +00:00
parent 96d903592a
commit fb673a061d
21 changed files with 108146 additions and 107722 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,49 @@
package net.PeytonPlayz585.shadow.gui.button;
import net.minecraft.util.MathHelper;
public class ClientMathUtils {
private static final double[] a = new double[65536];
private static final double[] b = new double[360];
static {
int i;
for (i = 0; i < 65536; i++)
a[i] = Math.sin(i * Math.PI * 2.0D / 65536.0D);
for (i = 0; i < 360; i++)
b[i] = Math.sin(Math.toRadians(i));
}
public static double getAngle(int paramInt) {
paramInt %= 360;
return b[paramInt];
}
public static double getRightAngle(int paramInt) {
paramInt += 90;
paramInt %= 360;
return b[paramInt];
}
private static float snapToStep(float value, float valueStep) {
if (valueStep > 0.0F)
value = valueStep * Math.round(value / valueStep);
return value;
}
public static float normalizeValue(float p_148266_1_, float valueMin, float valueMax, float valueStep) {
return MathHelper.clamp_float((snapToStepClamp(p_148266_1_, valueMin, valueMax, valueStep) - valueMin) / (valueMax - valueMin), 0.0F, 1.0F);
}
private static float snapToStepClamp(float value, float valueMin, float valueMax, float valueStep) {
value = snapToStep(value, valueStep);
return MathHelper.clamp_float(value, valueMin, valueMax);
}
public static float denormalizeValue(float value, float valueMin, float valueMax, float valueStep) {
return snapToStepClamp(valueMin + (valueMax - valueMin) * MathHelper.clamp_float(value, 0.0F, 1.0F), valueMin, valueMax, valueStep);
}
}

View File

@ -0,0 +1,88 @@
package net.PeytonPlayz585.shadow.gui.button;
public class Color {
private int rgb;
public static final Color BLACK = new Color(0, 0, 0);
public static final Color WHITE = new Color(255, 255, 255);
public Color(int r, int g, int b) {
this.rgb = ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
}
public Color(int r, int g, int b, int a) {
this.rgb = ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
}
public int getRed() {
return (rgb >> 16) & 0xFF;
}
public int getGreen() {
return (rgb >> 8) & 0xFF;
}
public int getBlue() {
return rgb & 0xFF;
}
public int getRGB() {
return rgb;
}
public int getAlpha() {
return (rgb >> 24) & 0xFF;
}
public static Color decode(String nm) throws NumberFormatException {
nm = nm.trim();
if (nm.charAt(0) == '#') {
nm = nm.substring(1);
}
int colorValue = Integer.parseInt(nm, 16);
return new Color((colorValue >> 16) & 0xFF, (colorValue >> 8) & 0xFF, colorValue & 0xFF);
}
public Color brighter() {
int r = getRed();
int g = getGreen();
int b = getBlue();
int i = (int) (1.0 / (1.0 - 0.7));
if (r == 0 && g == 0 && b == 0) {
return new Color(i, i, i);
}
if (r > 0 && r < i) {
r = i;
}
if (g > 0 && g < i) {
g = i;
}
if (b > 0 && b < i) {
b = i;
}
return new Color(Math.min((int) (r / 0.7), 255), Math.min((int) (g / 0.7), 255),
Math.min((int) (b / 0.7), 255));
}
public Color darker() {
return new Color(Math.max((int) (getRed() * 0.7), 0), Math.max((int) (getGreen() * 0.7), 0),
Math.max((int) (getBlue() * 0.7), 0));
}
public boolean equals(Object obj) {
if (obj instanceof Color) {
return ((Color) obj).getRGB() == rgb;
}
return false;
}
public String toString() {
return "Color[r=" + getRed() + ",g=" + getGreen() + ",b=" + getBlue() + "]";
}
}

View File

@ -0,0 +1,162 @@
package net.PeytonPlayz585.shadow.gui.button;
import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
import net.lax1dude.eaglercraft.v1_8.opengl.GlStateManager;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.renderer.Tessellator;
import net.lax1dude.eaglercraft.v1_8.opengl.WorldRenderer;
import net.lax1dude.eaglercraft.v1_8.opengl.EaglercraftGPU;
public class MainButton extends GuiButton {
public int hoverFade = 0;
public MainButton(int id, int x, int y, String buttonText) {
this(id, x, y, 132, 11, buttonText);
}
public MainButton(int buttonId, int x, int y, int widthIn, int heightIn, String buttonText) {
super(buttonId, x, y, widthIn, heightIn, buttonText);
}
@Override
public void drawButton(Minecraft mc, int mouseX, int mouseY) {
boolean hovered = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height;
if (hovered) {
if (hoverFade < 40) hoverFade += 10;
} else {
if (hoverFade > 0) hoverFade -= 10;
}
GlStateManager.color(1.0F, 1.0F, 1.0F);
drawRoundedRect(this.xPosition - 1, this.yPosition - 1, this.width + 2, this.height + 2, 2, new Color(30, 30, 30, 60));
drawRoundedRect(this.xPosition, this.yPosition, this.width, this.height, 2, new Color(255, 255, 255, 38 + hoverFade));
Color color = new Color(255, 255, 255, 30);
drawRoundedOutline(this.xPosition, this.yPosition, this.xPosition + this.width, this.yPosition + this.height, 2, 3, color.getRGB());
Minecraft.getMinecraft().currentScreen.drawCenteredString(Minecraft.getMinecraft().fontRendererObj, this.displayString, (int)(this.xPosition + this.width / 2 + 0.5F), (int)(this.yPosition + (this.height - 4) / 2 + 0.5F), new Color(30, 30, 30, 50).getRGB());
Minecraft.getMinecraft().currentScreen.drawCenteredString(Minecraft.getMinecraft().fontRendererObj, this.displayString, this.xPosition + this.width / 2, this.yPosition + (this.height - 4) / 2, 10526880);
}
public static void drawRoundedRect(int x, int y, int width, int height, int cornerRadius, Color color) {
Gui.drawRect(x, y + cornerRadius, x + cornerRadius, y + height - cornerRadius, color.getRGB());
Gui.drawRect(x + cornerRadius, y, x + width - cornerRadius, y + height, color.getRGB());
Gui.drawRect(x + width - cornerRadius, y + cornerRadius, x + width, y + height - cornerRadius, color.getRGB());
drawArc(x + cornerRadius, y + cornerRadius, cornerRadius, 0, 90, color);
drawArc(x + width - cornerRadius, y + cornerRadius, cornerRadius, 270, 360, color);
drawArc(x + width - cornerRadius, y + height - cornerRadius, cornerRadius, 180, 270, color);
drawArc(x + cornerRadius, y + height - cornerRadius, cornerRadius, 90, 180, color);
}
public static void drawArc(int x, int y, int radius, int startAngle, int endAngle, Color color) {
GlStateManager.pushMatrix();
GlStateManager.enableAlpha();
GlStateManager.blendFunc(770, 771);
GlStateManager.color((float) color.getRed() / 255, (float) color.getGreen() / 255, (float) color.getBlue() / 255, (float) color.getAlpha() / 255);
WorldRenderer worldRenderer = Tessellator.getInstance().getWorldRenderer();
worldRenderer.begin(6, DefaultVertexFormats.POSITION);
worldRenderer.pos(x, y, 0).endVertex();
for (int i = (int) (startAngle / 360.0 * 100); i <= (int) (endAngle / 360.0 * 100); i++) {
double angle = (Math.PI * 2 * i / 100) + Math.toRadians(180);
worldRenderer.pos(x + Math.sin(angle) * radius, y + Math.cos(angle) * radius, 0).endVertex();
}
Tessellator.getInstance().draw();
GlStateManager.disableAlpha();;
GlStateManager.popMatrix();
}
public static void drawRoundedOutline(int x, int y, int x2, int y2, float radius, float width, int color) {
Tessellator tessellator = Tessellator.getInstance();
WorldRenderer renderer = tessellator.getWorldRenderer();
float f1 = (color >> 24 & 0xFF) / 255.0F;
float f2 = (color >> 16 & 0xFF) / 255.0F;
float f3 = (color >> 8 & 0xFF) / 255.0F;
float f4 = (color & 0xFF) / 255.0F;
renderer.color(f2, f3, f4, f1);
drawRoundedOutline(x, y, x2, y2, radius, width);
}
public static void drawRoundedOutline(float x, float y, float x2, float y2, float radius, float width) {
int i = 18;
int j = 90 / i;
Tessellator tessellator = Tessellator.getInstance();
WorldRenderer worldRenderer = tessellator.getWorldRenderer();
GlStateManager.disableTexture2D();
GlStateManager.enableBlend();
GlStateManager.disableCull();
GlStateManager.enableColorMaterial();
GlStateManager.blendFunc(770, 771);
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
if (width != 1.0F) {
EaglercraftGPU.glLineWidth(width);
}
worldRenderer.begin(Tessellator.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
worldRenderer.pos(x + radius, y, 0.0F).endVertex();
worldRenderer.pos(x2 - radius, y, 0.0F).endVertex();
tessellator.draw();
worldRenderer.begin(Tessellator.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
worldRenderer.pos(x2, y + radius, 0.0F).endVertex();
worldRenderer.pos(x2, y2 - radius, 0.0F).endVertex();
tessellator.draw();
worldRenderer.begin(Tessellator.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
worldRenderer.pos(x2 - radius, y2 - 0.1F, 0.0F).endVertex();
worldRenderer.pos(x + radius, y2 - 0.1F, 0.0F).endVertex();
tessellator.draw();
worldRenderer.begin(Tessellator.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
worldRenderer.pos(x + 0.1F, y2 - radius, 0.0F).endVertex();
worldRenderer.pos(x + 0.1F, y + radius, 0.0F).endVertex();
tessellator.draw();
float f1 = x2 - radius;
float f2 = y + radius;
worldRenderer.begin(Tessellator.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
int k;
for (k = 0; k <= i; k++) {
int m = 90 - k * j;
worldRenderer.pos((float) (f1 + radius * ClientMathUtils.getRightAngle(m)), (float) (f2 - radius * ClientMathUtils.getAngle(m)), 0.0F).endVertex();
}
tessellator.draw();
f1 = x2 - radius;
f2 = y2 - radius;
worldRenderer.begin(Tessellator.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
for (k = 0; k <= i; k++) {
int m = k * j + 270;
worldRenderer.pos((float) (f1 + radius * ClientMathUtils.getRightAngle(m)), (float) (f2 - radius * ClientMathUtils.getAngle(m)), 0.0F).endVertex();
}
tessellator.draw();
worldRenderer.begin(Tessellator.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
f1 = x + radius;
f2 = y2 - radius;
for (k = 0; k <= i; k++) {
int m = k * j + 90;
worldRenderer.pos((float) (f1 + radius * ClientMathUtils.getRightAngle(m)), (float) (f2 + radius * ClientMathUtils.getAngle(m)), 0.0F).endVertex();
}
tessellator.draw();
worldRenderer.begin(Tessellator.GL_LINE_STRIP, DefaultVertexFormats.POSITION);
f1 = x + radius;
f2 = y + radius;
for (k = 0; k <= i; k++) {
int m = 270 - k * j;
worldRenderer.pos((float) (f1 + radius * ClientMathUtils.getRightAngle(m)), (float) (f2 + radius * ClientMathUtils.getAngle(m)), 0.0F).endVertex();
}
tessellator.draw();
if (width != 1.0F) {
EaglercraftGPU.glLineWidth(1.0F);
}
GlStateManager.enableCull();
GlStateManager.disableBlend();
GlStateManager.disableColorMaterial();
GlStateManager.enableTexture2D();
}
}

View File

@ -10,6 +10,7 @@ import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import net.PeytonPlayz585.shadow.gui.button.MainButton;
import net.PeytonPlayz585.shadow.gui.GuiSecretMainMenu; import net.PeytonPlayz585.shadow.gui.GuiSecretMainMenu;
import net.lax1dude.eaglercraft.v1_8.EagRuntime; import net.lax1dude.eaglercraft.v1_8.EagRuntime;
import net.lax1dude.eaglercraft.v1_8.EaglerInputStream; import net.lax1dude.eaglercraft.v1_8.EaglerInputStream;
@ -82,12 +83,12 @@ public class GuiMainMenu extends GuiScreen implements GuiYesNoCallback {
* An array of all the paths to the panorama pictures. * An array of all the paths to the panorama pictures.
*/ */
private static final ResourceLocation[] titlePanoramaPaths = new ResourceLocation[] { private static final ResourceLocation[] titlePanoramaPaths = new ResourceLocation[] {
new ResourceLocation("textures/gui/title/background/panorama_0.png"), new ResourceLocation("textures/gui/title/background/lunar_0.png"),
new ResourceLocation("textures/gui/title/background/panorama_1.png"), new ResourceLocation("textures/gui/title/background/lunar_1.png"),
new ResourceLocation("textures/gui/title/background/panorama_2.png"), new ResourceLocation("textures/gui/title/background/lunar_2.png"),
new ResourceLocation("textures/gui/title/background/panorama_3.png"), new ResourceLocation("textures/gui/title/background/lunar_3.png"),
new ResourceLocation("textures/gui/title/background/panorama_4.png"), new ResourceLocation("textures/gui/title/background/lunar_4.png"),
new ResourceLocation("textures/gui/title/background/panorama_5.png") }; new ResourceLocation("textures/gui/title/background/lunar_5.png") };
private int field_92024_r; private int field_92024_r;
private int field_92023_s; private int field_92023_s;
private int field_92022_t; private int field_92022_t;
@ -206,6 +207,8 @@ public class GuiMainMenu extends GuiScreen implements GuiYesNoCallback {
this.splashText = "Happy new year!"; this.splashText = "Happy new year!";
} else if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31) { } else if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31) {
this.splashText = "OOoooOOOoooo! Spooky!"; this.splashText = "OOoooOOOoooo! Spooky!";
} else if (calendar.get(2) + 1 == 11 && calendar.get(5) == 12) {
this.splashText = "Happy Birthday, PeytonPlayz585!";
} }
int i = this.height / 4 + 48; int i = this.height / 4 + 48;
@ -249,12 +252,8 @@ public class GuiMainMenu extends GuiScreen implements GuiYesNoCallback {
// this.buttonList // this.buttonList
// .add(new GuiButton(1, this.width / 2 - 100, parInt1, // .add(new GuiButton(1, this.width / 2 - 100, parInt1,
// I18n.format("menu.singleplayer", new Object[0]))); // I18n.format("menu.singleplayer", new Object[0])));
this.buttonList.add(new GuiButton(2, this.width / 2 - 100, parInt1 + parInt2 * 0, this.buttonList.add(new MainButton(2, width / 2 - 100, parInt1 + parInt2 * 0, "M U L T I P L A Y E R"));
I18n.format("menu.multiplayer", new Object[0]))); this.buttonList.add(new MainButton(14, width / 2 - 100, parInt1 + parInt2 * 1, "D I S C O R D"));
GuiButton btn;
this.buttonList.add(btn = new GuiButton(14, this.width / 2 - 100, parInt1 + parInt2 * 1,
I18n.format("menu.forkOnGitlab", new Object[0])));
btn.enabled = EaglercraftVersion.mainMenuEnableGithubButton;
} }
/**+ /**+
@ -283,7 +282,7 @@ public class GuiMainMenu extends GuiScreen implements GuiYesNoCallback {
} }
if (parGuiButton.id == 14) { if (parGuiButton.id == 14) {
EagRuntime.openLink(EaglercraftVersion.projectForkURL); EagRuntime.openLink("https://discord.com/invite/wQ8ynJ6A93");
} }
} }