Guest User

Untitled

a guest
Jun 5th, 2025
3
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.78 KB | None | 0 0
  1. package com.moxg.moonphaseinfou;
  2.  
  3. import com.mojang.blaze3d.systems.RenderSystem;
  4. import net.minecraft.client.MinecraftClient;
  5. import net.minecraft.client.gui.DrawContext;
  6. import net.minecraft.util.Formatting;
  7. import net.minecraft.util.Identifier;
  8.  
  9. public class PhaseIcon {
  10.     private static final Identifier INVENTORY = new Identifier("minecraft:textures/gui/sprites/hud/effect_background.png");
  11.     private static final Identifier ICONS = new Identifier(MoonPhaseInfoUpdatedMod.MOD_ID, "textures/environment/moon_phases_icons.png");
  12.  
  13.     private static final Formatting[] FULLNESS_COLOR = new Formatting[]
  14.             {Formatting.RED, Formatting.GOLD, Formatting.YELLOW, Formatting.GREEN, Formatting.DARK_GREEN};
  15.  
  16.     void drawPhaseIcon(DrawContext drawContext) {
  17.         MinecraftClient mc = MinecraftClient.getInstance();
  18.         int windowWidth = mc.getWindow().getScaledWidth();
  19.         int windowHeight = mc.getWindow().getScaledHeight();
  20.  
  21.         if (mc.getDebugHud().shouldShowDebugHud()) {
  22.             RenderSystem.setShaderColor(1f, 1f, 1f, 0.25f);
  23.         }
  24.  
  25.         int width = 24;
  26.         int x = MoonPhaseInfoUpdatedMod.CONFIG.getX(windowWidth);
  27.         int y = MoonPhaseInfoUpdatedMod.CONFIG.getY(windowHeight);
  28.         drawContext.drawTexture(INVENTORY, x, y, 0, 0, 0, width, width, 24, 24);
  29.  
  30.         int moonWidth = 18;
  31.         int d = width / 2 - moonWidth / 2;
  32.         x += d;
  33.         y += d;
  34.  
  35.         int phase = mc.world.getMoonPhase();
  36.         int u = ((4 - phase % 4) % 4) * moonWidth; //{0, 3, 2, 1, 0, 3, 2, 1}[phase] * side length
  37.         int v = phase >= 1 && phase <= 4 ? moonWidth : 0;
  38.  
  39.         RenderSystem.enableBlend();
  40.         drawContext.drawTexture(ICONS, x, y, 400, (float)u, (float)v, moonWidth, moonWidth, 72, 36);
  41.         RenderSystem.disableBlend();
  42.  
  43.         //fullness
  44.         int transparencyMask = mc.getDebugHud().shouldShowDebugHud() ? 0xFEFFFFFF : 0xFFFFFFFF;
  45.         int sizePercent = (int)(mc.world.getMoonSize() * 100f);
  46.         drawContext.drawTextWithShadow(mc.textRenderer, String.format("%s%d%%%s",
  47.                         FULLNESS_COLOR[sizePercent / 25],
  48.                         sizePercent,
  49.                         phase <= 3 ? Formatting.RED + "↓" : Formatting.DARK_GREEN + "↑"),
  50.                 x + width + 1, y, transparencyMask);
  51.  
  52.         //time left
  53.         long daySecondsLeft = (24000 - mc.world.getTimeOfDay() % 24000) / 20;
  54.         long dayMinutesLeft = daySecondsLeft / 60;
  55.         boolean atLeast60s = daySecondsLeft >= 60;
  56.  
  57.         drawContext.drawTextWithShadow(mc.textRenderer, Formatting.DARK_AQUA + (atLeast60s ? dayMinutesLeft + "min" : daySecondsLeft + "s"),
  58.                 x + width + 1, y + mc.textRenderer.fontHeight, transparencyMask);
  59.  
  60.         RenderSystem.setShaderColor(1f, 1f, 1f, 1f);
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment