diff --git a/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java b/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java index 9da68cc..c1a20fa 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/HudEditor.java @@ -116,7 +116,7 @@ public class HudEditor extends Screen { private boolean isCorner(double mouseX, double mouseY, ModDimensions dim) { float rightX = dim.x + dim.width * dim.scale; float bottomY = dim.y + dim.height * dim.scale; - + return Math.abs(mouseX - rightX) < RESIZE_MARGIN && Math.abs(mouseY - bottomY) < RESIZE_MARGIN; } } diff --git a/src/main/java/org/saturnclient/saturnclient/menus/MainMenu.java b/src/main/java/org/saturnclient/saturnclient/menus/MainMenu.java index 72a60a7..c201a3c 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/MainMenu.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/MainMenu.java @@ -32,7 +32,7 @@ public class MainMenu extends SaturnUi { .setAnimations(new FadeIn(1))); draw( - new SaturnImageButton(Textures.EMOTE, 14, 14, + new SaturnImageButton(Textures.HUD_ICON, 14, 14, () -> { client.setScreen(new HudEditor()); }) diff --git a/src/main/java/org/saturnclient/saturnmods/SaturnMod.java b/src/main/java/org/saturnclient/saturnmods/SaturnMod.java index a321638..bb1d1f9 100644 --- a/src/main/java/org/saturnclient/saturnmods/SaturnMod.java +++ b/src/main/java/org/saturnclient/saturnmods/SaturnMod.java @@ -1,9 +1,13 @@ package org.saturnclient.saturnmods; +import net.minecraft.util.Identifier; + public interface SaturnMod { public boolean isEnabled(); public void setEnabled(boolean e); public String getName(); + + public Identifier getIconTexture(); } diff --git a/src/main/java/org/saturnclient/saturnmods/mods/ArmorDisplay.java b/src/main/java/org/saturnclient/saturnmods/mods/ArmorDisplay.java index d169ca2..88c8698 100644 --- a/src/main/java/org/saturnclient/saturnmods/mods/ArmorDisplay.java +++ b/src/main/java/org/saturnclient/saturnmods/mods/ArmorDisplay.java @@ -4,13 +4,16 @@ import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnmods.HudMod; import org.saturnclient.saturnmods.ModDimensions; import org.saturnclient.saturnmods.SaturnMod; +import org.saturnclient.ui.Textures; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.EquipmentSlot; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.util.Identifier; public class ArmorDisplay implements SaturnMod, HudMod { private static ModDimensions dimensions = new ModDimensions(0, 0, 34, 75); @@ -23,9 +26,20 @@ public class ArmorDisplay implements SaturnMod, HudMod { context.drawItem(item, 0, y); - if (item.getMaxDamage() > 0) + if (item.getMaxDamage() > 0) { + MatrixStack matrices = context.getMatrices(); + + matrices.push(); + + matrices.translate(17, y + 5, 0); + + matrices.scale(0.8f, 0.8f, 0f); + context.drawText(SaturnClient.textRenderer, "" + (item.getMaxDamage() - item.getDamage()), - 16, y + 4, SaturnClient.WHITE, false); + 0, 0, SaturnClient.WHITE, false); + + matrices.pop(); + } return true; } @@ -73,6 +87,11 @@ public class ArmorDisplay implements SaturnMod, HudMod { return "Armor display"; } + @Override + public Identifier getIconTexture() { + return Textures.getModIcon("armor"); + } + public void setDimensions(ModDimensions d) { dimensions = d; } diff --git a/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java b/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java index 2f62821..cd5ea1e 100644 --- a/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java +++ b/src/main/java/org/saturnclient/saturnmods/mods/Coordinates.java @@ -4,10 +4,12 @@ import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnmods.HudMod; import org.saturnclient.saturnmods.ModDimensions; import org.saturnclient.saturnmods.SaturnMod; +import org.saturnclient.ui.Textures; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.Identifier; public class Coordinates implements SaturnMod, HudMod { private static ModDimensions dimensions = new ModDimensions(); @@ -42,6 +44,11 @@ public class Coordinates implements SaturnMod, HudMod { return "Coords"; } + @Override + public Identifier getIconTexture() { + return Textures.getModIcon("coords"); + } + public void setDimensions(ModDimensions d) { dimensions = d; } diff --git a/src/main/java/org/saturnclient/ui/Textures.java b/src/main/java/org/saturnclient/ui/Textures.java index 8477cd7..98c7afa 100644 --- a/src/main/java/org/saturnclient/ui/Textures.java +++ b/src/main/java/org/saturnclient/ui/Textures.java @@ -5,7 +5,7 @@ import net.minecraft.util.Identifier; public class Textures { public static final Identifier SETTINGS = Identifier.of("saturnclient", "textures/gui/components/settings.png"); public static final Identifier COSMETICS = Identifier.of("saturnclient", "textures/gui/components/cosmetics.png"); - public static final Identifier EMOTE = Identifier.of("saturnclient", "textures/gui/components/emote.png"); + public static final Identifier HUD_ICON = Identifier.of("saturnclient", "textures/gui/components/hud.png"); public static final Identifier SEARCH = Identifier.of("saturnclient", "textures/gui/components/search.png"); public static final Identifier CLOSE = Identifier.of("saturnclient", "textures/gui/components/close.png"); public static final Identifier MODS_TAB = Identifier.of("saturnclient", "textures/gui/components/mods_tab.png"); @@ -20,8 +20,13 @@ public class Textures { public static final Identifier SETTINGS_BG = Identifier.ofVanilla("saturn/settings_bg"); public static final Identifier TABS = Identifier.ofVanilla("saturn/tabs"); public static final Identifier MOD = Identifier.of("saturnclient", "textures/gui/components/mod.png"); + public static final Identifier MOD_BG = Identifier.of("saturnclient", "textures/gui/components/mod_bg.png"); public static Identifier getCloakPreview(String cloak) { return Identifier.of("saturnclient", "textures/gui/cloak/" + cloak + ".png"); } + + public static Identifier getModIcon(String modId) { + return Identifier.of("saturnclient", "textures/gui/mod/" + modId + ".png"); + } } diff --git a/src/main/java/org/saturnclient/ui/components/SaturnModComp.java b/src/main/java/org/saturnclient/ui/components/SaturnModComp.java index 8882530..e620e48 100644 --- a/src/main/java/org/saturnclient/ui/components/SaturnModComp.java +++ b/src/main/java/org/saturnclient/ui/components/SaturnModComp.java @@ -2,6 +2,7 @@ package org.saturnclient.ui.components; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.saturnmods.SaturnMod; +import org.saturnclient.ui.SaturnUi; import org.saturnclient.ui.SaturnWidget; import org.saturnclient.ui.Textures; @@ -18,14 +19,27 @@ public class SaturnModComp extends SaturnWidget { @Override public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { - int color = mod.isEnabled() || hovering ? SaturnClient.COLOR : ColorHelper.getWhite(alpha); + boolean enabled = mod.isEnabled(); - context.drawText(SaturnClient.textRenderer, mod.getName(), x + 27, + int color = enabled || hovering ? SaturnClient.COLOR : ColorHelper.getWhite(alpha); + + int size = 12; + + if (enabled) { + context.drawTexture(RenderLayer::getGuiTextured, Textures.MOD_BG, x, y, 0, 0, 86, 20, 86, + 20, SaturnClient.COLOR); + } + + context.drawTexture(RenderLayer::getGuiTextured, Textures.MOD, x, y, 0, 0, 86, 20, 86, + 20, color); + + context.drawTexture(RenderLayer::getGuiTextured, mod.getIconTexture(), x + 4, y + 4, 0, 0, size, size, + size, + size, color); + + context.drawText(SaturnClient.textRenderer, SaturnUi.text(mod.getName()), x + 20, y + (21 - SaturnClient.textRenderer.fontHeight) / 2, color, false); - - context.drawTexture(RenderLayer::getGuiTextured, Textures.MOD, x, y, 0, 0, 86, 20, width, - height, color); } @Override diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnImageButton.java b/src/main/java/org/saturnclient/ui/widgets/SaturnImageButton.java index 4e53197..e5c5239 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnImageButton.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnImageButton.java @@ -34,8 +34,8 @@ public class SaturnImageButton extends SaturnButton { int hoverColor = ((int) (alpha * 255) << 24) | (SaturnClient.COLOR & 0x00FFFFFF); - context.drawTexture(RenderLayer::getGuiTextured, sprite, x + (width - imageWidth) / 2, - y + (height - imageHeight) / 2, 0, 0, imageWidth, imageHeight, imageWidth, + context.drawTexture(RenderLayer::getGuiTextured, sprite, (x + (width - imageWidth) / 2), + (y + (height - imageHeight) / 2), 0, 0, imageWidth, imageHeight, imageWidth, imageHeight, hovering ? hoverColor : ColorHelper.getWhite(alpha)); } diff --git a/src/main/resources/assets/saturnclient/textures/gui/components/cosmetics.png b/src/main/resources/assets/saturnclient/textures/gui/components/cosmetics.png index f6f213d..725110f 100644 Binary files a/src/main/resources/assets/saturnclient/textures/gui/components/cosmetics.png and b/src/main/resources/assets/saturnclient/textures/gui/components/cosmetics.png differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/components/emote.png b/src/main/resources/assets/saturnclient/textures/gui/components/emote.png deleted file mode 100644 index 3ae47e2..0000000 Binary files a/src/main/resources/assets/saturnclient/textures/gui/components/emote.png and /dev/null differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/components/hud.png b/src/main/resources/assets/saturnclient/textures/gui/components/hud.png new file mode 100644 index 0000000..a71c971 Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/components/hud.png differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/components/mod.png b/src/main/resources/assets/saturnclient/textures/gui/components/mod.png index 3eb5c44..7202acf 100644 Binary files a/src/main/resources/assets/saturnclient/textures/gui/components/mod.png and b/src/main/resources/assets/saturnclient/textures/gui/components/mod.png differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/components/mod_bg.png b/src/main/resources/assets/saturnclient/textures/gui/components/mod_bg.png new file mode 100644 index 0000000..9eb0eee Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/components/mod_bg.png differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/armor.png b/src/main/resources/assets/saturnclient/textures/gui/mod/armor.png new file mode 100644 index 0000000..3d1c75e Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/mod/armor.png differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/coords.png b/src/main/resources/assets/saturnclient/textures/gui/mod/coords.png new file mode 100644 index 0000000..5af14bf Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/mod/coords.png differ