diff --git a/src/main/java/me/night0721/lilase/events/SniperFlipperEvents.java b/src/main/java/me/night0721/lilase/events/SniperFlipperEvents.java index 88f285f..1a7bf08 100644 --- a/src/main/java/me/night0721/lilase/events/SniperFlipperEvents.java +++ b/src/main/java/me/night0721/lilase/events/SniperFlipperEvents.java @@ -202,6 +202,9 @@ public class SniperFlipperEvents { String lines = "X: " + Math.round(Lilase.mc.thePlayer.posX) + "\n" + "Y: " + Math.round(Lilase.mc.thePlayer.posY) + "\n" + "Z: " + Math.round(Lilase.mc.thePlayer.posZ) + "\n" + time + "\n" + "FPS: " + Minecraft.getDebugFPS() + "\n" + "Day: " + days + "\n" + "Auctions Sniped: " + Lilase.sniper.getAuctionsSniped() + "\n" + "Auctions Posted: " + Lilase.sniper.getAuctionsPosted() + "\n" + "Auctions Flipped: " + Lilase.sniper.getAuctionsFlipped() + "\n"; TextRenderer.drawString(lines, 0, 0, 0.9, GUI_COLOR.getRGB()); } + } else if (event.type == RenderGameOverlayEvent.ElementType.CHAT) { + TextRenderer.drawGradientString(Lilase.mc.fontRendererObj, "Lilase", 50, 100, 0x00FBAA, 0xFF3EFC); + TextRenderer.drawAnimatedString(Lilase.mc.fontRendererObj, "Hong Kong No.1", 50, 110, 0x00FBAA, 0xFF3EFC, 0.5f); } } diff --git a/src/main/java/me/night0721/lilase/gui/TextRenderer.java b/src/main/java/me/night0721/lilase/gui/TextRenderer.java index ae726b0..0eb34a7 100644 --- a/src/main/java/me/night0721/lilase/gui/TextRenderer.java +++ b/src/main/java/me/night0721/lilase/gui/TextRenderer.java @@ -2,6 +2,7 @@ package me.night0721.lilase.gui; import me.night0721.lilase.Lilase; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.renderer.GlStateManager; import org.lwjgl.opengl.GL11; @@ -34,4 +35,57 @@ public class TextRenderer { public void drawCenteredString(String text, int x, int y, double scale) { drawString(text, x - Minecraft.getMinecraft().fontRendererObj.getStringWidth(text) / 2, y - Minecraft.getMinecraft().fontRendererObj.FONT_HEIGHT / 2, scale); } + + public static void drawGradientString(FontRenderer fontRenderer, String text, int x, int y, int colorStart, int colorEnd) { + int textWidth = fontRenderer.getStringWidth(text); + int startX = x - textWidth / 2; + int startY = y - fontRenderer.FONT_HEIGHT / 2; + + // calculate color differences + float rDiff = ((colorEnd >> 16) & 255) - ((colorStart >> 16) & 255); + float gDiff = ((colorEnd >> 8) & 255) - ((colorStart >> 8) & 255); + float bDiff = (colorEnd & 255) - (colorStart & 255); + + // render text with gradient colors + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + int charWidth = fontRenderer.getCharWidth(c); + float ratio = (float) i / (float) text.length(); + int color = ((int) ((float) ((colorStart >> 16) & 255) + rDiff * ratio) << 16) | + ((int) ((float) ((colorStart >> 8) & 255) + gDiff * ratio) << 8) | + ((int) ((float) (colorStart & 255) + bDiff * ratio)); + + fontRenderer.drawString(Character.toString(c), startX, startY, color); + startX += charWidth; + } + } + + public static void drawAnimatedString(FontRenderer fontRenderer, String text, int x, int y, int startColor, int endColor, float speed) { + float time = (float) (System.currentTimeMillis() % 10000) / 1000.0f; + int textWidth = fontRenderer.getStringWidth(text); + int startX = x - textWidth / 2; + int startY = y - fontRenderer.FONT_HEIGHT / 2; + + // calculate color differences + float rDiff = ((endColor >> 16) & 255) - ((startColor >> 16) & 255); + float gDiff = ((endColor >> 8) & 255) - ((startColor >> 8) & 255); + float bDiff = (endColor & 255) - (startColor & 255); + + // render text with gradient colors + for (int i = 0; i < text.length(); i++) { + char c = text.charAt(i); + int charWidth = fontRenderer.getCharWidth(c); + float ratio = (float) i / (float) text.length(); + + // calculate color at current position + float cyclePosition = (time * speed + ratio) % 1.0f; + float r = ((startColor >> 16) & 255) + rDiff * cyclePosition; + float g = ((startColor >> 8) & 255) + gDiff * cyclePosition; + float b = (startColor & 255) + bDiff * cyclePosition; + int color = ((int) r << 16) | ((int) g << 8) | (int) b; + + fontRenderer.drawString(Character.toString(c), startX, startY, color); + startX += charWidth; + } + } } \ No newline at end of file