From 51040900cfa176b01874cba7401b863d8663c07f Mon Sep 17 00:00:00 2001 From: Leo dev Date: Mon, 16 Jun 2025 16:12:40 -0500 Subject: [PATCH] potion display --- .../modules/mods/PotionDisplay.java | 37 +++++++++++++----- .../org/saturnclient/ui2/RenderScope.java | 6 +-- .../saturnclient/textures/gui/mod/potion.png | Bin 0 -> 2580 bytes 3 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 src/main/resources/assets/saturnclient/textures/gui/mod/potion.png diff --git a/src/main/java/org/saturnclient/modules/mods/PotionDisplay.java b/src/main/java/org/saturnclient/modules/mods/PotionDisplay.java index 722bf72..91a1066 100644 --- a/src/main/java/org/saturnclient/modules/mods/PotionDisplay.java +++ b/src/main/java/org/saturnclient/modules/mods/PotionDisplay.java @@ -1,5 +1,7 @@ package org.saturnclient.modules.mods; +import java.util.Arrays; + import org.saturnclient.modules.HudMod; import org.saturnclient.modules.ModDimensions; import org.saturnclient.modules.Module; @@ -13,15 +15,22 @@ import net.minecraft.client.texture.Sprite; import net.minecraft.client.texture.StatusEffectSpriteManager; import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.registry.Registries; import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; public class PotionDisplay extends Module implements HudMod { public static Property enabled = new Property<>(false); - private static ModDimensions dimensions = new ModDimensions(40, 60); + private static ModDimensions dimensions = new ModDimensions(60, 0); + private final StatusEffectInstance[] dummyEffects = { + new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(Identifier.ofVanilla("speed")).get(), 12000, 2), + new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(Identifier.ofVanilla("strength")).get(), 12000, 2), + new StatusEffectInstance(Registries.STATUS_EFFECT.getEntry(Identifier.ofVanilla("fire_resistance")).get(), 12000, 2), + }; public PotionDisplay() { - super(new ModuleDetails("Potion Display", "potions") + super(new ModuleDetails("Potion Display", "potion") .description("Displays potion effects") .version("v0.1.0") .tags("Utility"), @@ -30,20 +39,32 @@ public class PotionDisplay extends Module implements HudMod { dimensions.prop()); } - @Override - public void renderHud(RenderScope scope) { + private void renderEffects(RenderScope scope, Iterable effects) { int row = 0; StatusEffectSpriteManager statusEffectSpriteManager = SaturnClient.client.getStatusEffectSpriteManager(); - for (StatusEffectInstance effect : SaturnClient.client.player.getStatusEffects()) { + for (StatusEffectInstance effect : effects) { if (effect.shouldShowIcon()) { RegistryEntry registryEntry = effect.getEffectType(); Sprite sprite = statusEffectSpriteManager.getSprite(registryEntry); scope.drawSpriteStretched(sprite, 0, 18 * row, 16, 16); - scope.drawText(0.6f, getDurationAsString(effect), 19, 18 * row + 2, dimensions.font.value, -1); + scope.drawText(0.5f, getDurationAsString(effect), 20, 18 * row + 3, dimensions.font.value, -1); + row++; } } + + dimensions.height = 18 * row; + } + + @Override + public void renderHud(RenderScope scope) { + renderEffects(scope, SaturnClient.client.player.getStatusEffects()); + } + + @Override + public void renderDummy(RenderScope scope) { + renderEffects(scope, Arrays.asList(dummyEffects)); } // This code was from: https://github.com/magicus/statuseffecttimer/blob/master/src/main/java/se/icus/mag/statuseffecttimer/mixin/StatusEffectTimerMixin.java @@ -66,10 +87,6 @@ public class PotionDisplay extends Module implements HudMod { } } - @Override - public void renderDummy(RenderScope scope) { - } - @Override public ModDimensions getDimensions() { return dimensions; diff --git a/src/main/java/org/saturnclient/ui2/RenderScope.java b/src/main/java/org/saturnclient/ui2/RenderScope.java index 24c4d1d..cdd486c 100644 --- a/src/main/java/org/saturnclient/ui2/RenderScope.java +++ b/src/main/java/org/saturnclient/ui2/RenderScope.java @@ -37,7 +37,7 @@ import net.minecraft.world.World; public class RenderScope { public MatrixStack matrices; public VertexConsumerProvider.Immediate vertexConsumers; - private Function renderLayers; + // private Function renderLayers; private ScissorStack scissorStack = new ScissorStack(); private int opacity = 255 << 24; private final ItemRenderState itemRenderState; @@ -61,7 +61,7 @@ public class RenderScope { } public void setRenderLayer(Function renderLayers) { - this.renderLayers = renderLayers; + // this.renderLayers = renderLayers; } public void drawRect(int x, int y, int width, int height, int color) { @@ -213,7 +213,7 @@ public class RenderScope { matrices.push(); matrices.scale(0.25f, 0.25f, 1.0f); RenderSystem.setShaderTexture(0, sprite); - RenderLayer renderLayer = (RenderLayer)renderLayers.apply(sprite); + RenderLayer renderLayer = (RenderLayer)RenderLayer.getGuiTextured(sprite); Matrix4f matrix4f = this.matrices.peek().getPositionMatrix(); VertexConsumer vertexConsumer = this.vertexConsumers.getBuffer(renderLayer); vertexConsumer.vertex(matrix4f, (float)x1, (float)y1, 0.0F).texture(u1, v1).color(color); diff --git a/src/main/resources/assets/saturnclient/textures/gui/mod/potion.png b/src/main/resources/assets/saturnclient/textures/gui/mod/potion.png new file mode 100644 index 0000000000000000000000000000000000000000..ad39774d89b2e83a7f92ad1717855ae89aafdbc0 GIT binary patch literal 2580 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