Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Commit 30b0528

Browse files
committed
(PotionsHud) allow background
1 parent 8d8232f commit 30b0528

File tree

13 files changed

+155
-95
lines changed

13 files changed

+155
-95
lines changed

1.16_combat-6/src/main/java/io/github/axolotlclient/modules/hud/HudManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,8 @@ public void init() {
139139
entry.setEnabled(true);
140140
entry.init();
141141
entry.onBoundsUpdate();
142-
entry.getAllOptions().includeInParentTree(false);
143-
add(entry);
142+
entries.put(entry.getId(), entry);
143+
hudCategory.add(entry.getAllOptions(), false);
144144
client.currentScreen.resize(client, client.currentScreen.width, client.currentScreen.height);
145145
saveCustomEntries();
146146
}));
@@ -160,8 +160,8 @@ private void loadCustomEntries() {
160160
opt.fromSerializedValue((String) values.get(opt.getName()));
161161
}
162162
});
163-
entry.getCategory().includeInParentTree(false);
164-
add(entry);
163+
entries.put(entry.getId(), entry);
164+
hudCategory.add(entry.getAllOptions(), false);
165165
entry.init();
166166
entry.onBoundsUpdate();
167167
});

1.16_combat-6/src/main/java/io/github/axolotlclient/modules/hud/gui/hud/PotionsHud.java

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ public class PotionsHud extends TextHudEntry implements DynamicallyPositionable
7171
private final ColorOption timerTextColor = new ColorOption("potionshud.timer_text_color", Color.parse("#7F7F7F"));
7272

7373
public PotionsHud() {
74-
super(50, 200, false);
74+
super(50, 200, true);
75+
background = new BooleanOption("background", false);
7576
}
7677

7778
@Override
@@ -108,8 +109,16 @@ private void renderEffects(MatrixStack matrices, List<StatusEffectInstance> effe
108109
StatusEffectInstance effect = effects.get(direction.getDirection() == -1 ? i : effects.size() - i - 1);
109110
if (direction.isXAxis()) {
110111
renderPotion(matrices, effect, x + lastPos + 1, y + 1);
111-
lastPos += (iconsOnly.get() ? 20 : (showEffectName.get() ? 20 + client.textRenderer.getWidth(new TranslatableText(effect.getTranslationKey()).append(" ")
112-
.append(Util.toRoman(effect.getAmplifier() + 1))) : 50));
112+
int nameWidth = 0;
113+
if (!iconsOnly.get()) {
114+
nameWidth += client.textRenderer.getWidth(StatusEffectUtil.durationToString(effect, 1)) + 1;
115+
if (showEffectName.get()) {
116+
nameWidth = Math.max(nameWidth, client.textRenderer.getWidth(
117+
new TranslatableText(effect.getTranslationKey()).append(" ")
118+
.append(Util.toRoman(effect.getAmplifier() + 1))));
119+
}
120+
}
121+
lastPos += 20 + nameWidth;
113122
} else {
114123
renderPotion(matrices, effect, x + 1, y + 1 + lastPos);
115124
lastPos += 20;
@@ -118,26 +127,27 @@ private void renderEffects(MatrixStack matrices, List<StatusEffectInstance> effe
118127
}
119128

120129
private int calculateWidth(List<StatusEffectInstance> effects) {
121-
if (order.get().isXAxis()) {
130+
if ((order.get()).isXAxis()) {
122131
if (iconsOnly.get()) {
123132
return 20 * effects.size() + 2;
124133
}
125134
if (!showEffectName.get()) {
126-
return 50 * effects.size() + 2;
135+
return effects.stream().map(effect -> StatusEffectUtil.durationToString(effect, 1))
136+
.mapToInt(client.textRenderer::getWidth).map(i -> i + 20).sum() + 3;
127137
}
128-
return effects.stream()
129-
.map(effect -> new TranslatableText(effect.getTranslationKey()).append(" ").append(Util.toRoman(effect.getAmplifier())))
130-
.mapToInt(client.textRenderer::getWidth).map(i -> i + 20).sum() + 2;
138+
return effects.stream().map(effect -> new TranslatableText(effect.getTranslationKey()).append(" ")
139+
.append(Util.toRoman(effect.getAmplifier() + 1))).mapToInt(client.textRenderer::getWidth).map(i -> i + 20).sum() + 2;
131140
} else {
132141
if (iconsOnly.get()) {
133142
return 20;
134143
}
135144
if (!showEffectName.get()) {
136-
return 50;
145+
return effects.stream().map(effect -> StatusEffectUtil.durationToString(effect, 1))
146+
.mapToInt(client.textRenderer::getWidth).max().orElse(0) + 22;
137147
}
138-
return effects.stream()
139-
.map(effect -> new TranslatableText(effect.getTranslationKey()).append(" ").append(Util.toRoman(effect.getAmplifier())))
140-
.map(client.textRenderer::getWidth).max(Integer::compare).orElse(38) + 22;
148+
return effects.stream().map(effect -> new TranslatableText(effect.getTranslationKey()).append(" ")
149+
.append(Util.toRoman(effect.getAmplifier() + 1))).mapToInt(client.textRenderer::getWidth).max().orElse(0) +
150+
22;
141151
}
142152
}
143153

1.20/src/main/java/io/github/axolotlclient/modules/hud/HudManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ public void init() {
132132
entry.setEnabled(true);
133133
entry.init();
134134
entry.onBoundsUpdate();
135-
entry.getAllOptions().includeInParentTree(false);
136-
add(entry);
135+
entries.put(entry.getId(), entry);
136+
hudCategory.add(entry.getAllOptions(), false);
137137
client.currentScreen.resize(client, client.currentScreen.width, client.currentScreen.height);
138138
saveCustomEntries();
139139
}));
@@ -153,8 +153,8 @@ private void loadCustomEntries() {
153153
opt.fromSerializedValue((String) values.get(opt.getName()));
154154
}
155155
});
156-
entry.getCategory().includeInParentTree(false);
157-
add(entry);
156+
entries.put(entry.getId(), entry);
157+
hudCategory.add(entry.getAllOptions(), false);
158158
entry.init();
159159
entry.onBoundsUpdate();
160160
});

1.20/src/main/java/io/github/axolotlclient/modules/hud/gui/hud/PotionsHud.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import net.minecraft.entity.effect.StatusEffectInstance;
4545
import net.minecraft.entity.effect.StatusEffectUtil;
4646
import net.minecraft.entity.effect.StatusEffects;
47+
import net.minecraft.text.CommonTexts;
4748
import net.minecraft.text.Text;
4849
import net.minecraft.util.Identifier;
4950

@@ -67,7 +68,8 @@ public class PotionsHud extends TextHudEntry implements DynamicallyPositionable
6768
private final ColorOption timerTextColor = new ColorOption("potionshud.timer_text_color", Color.parse("#7F7F7F"));
6869

6970
public PotionsHud() {
70-
super(50, 200, false);
71+
super(50, 200, true);
72+
background = new BooleanOption("background", false);
7173
}
7274

7375
@Override
@@ -104,8 +106,16 @@ private void renderEffects(GuiGraphics graphics, List<StatusEffectInstance> effe
104106
StatusEffectInstance effect = effects.get(direction.getDirection() == -1 ? i : effects.size() - i - 1);
105107
if (direction.isXAxis()) {
106108
renderPotion(graphics, effect, x + lastPos + 1, y + 1, tickDelta);
107-
lastPos += (iconsOnly.get() ? 20 : (showEffectName.get() ? 20 + client.textRenderer.getWidth(Text.translatable(effect.getTranslationKey()).append(" ")
108-
.append(Util.toRoman(effect.getAmplifier() + 1))) : 50));
109+
int nameWidth = 0;
110+
if (!iconsOnly.get()) {
111+
nameWidth += client.textRenderer.getWidth(StatusEffectUtil.durationToString(effect, 1)) + 1;
112+
if (showEffectName.get()) {
113+
nameWidth = Math.max(nameWidth, client.textRenderer.getWidth(
114+
Text.translatable(effect.getTranslationKey()).append(CommonTexts.SPACE)
115+
.append(Util.toRoman(effect.getAmplifier() + 1))));
116+
}
117+
}
118+
lastPos += 20 + nameWidth;
109119
} else {
110120
renderPotion(graphics, effect, x + 1, y + 1 + lastPos, tickDelta);
111121
lastPos += 20;
@@ -119,21 +129,22 @@ private int calculateWidth(List<StatusEffectInstance> effects) {
119129
return 20 * effects.size() + 2;
120130
}
121131
if (!showEffectName.get()) {
122-
return 50 * effects.size() + 2;
132+
return effects.stream().map(effect -> StatusEffectUtil.durationToString(effect, 1))
133+
.mapToInt(client.textRenderer::getWidth).map(i -> i + 20).sum() + 3;
123134
}
124-
return effects.stream()
125-
.map(effect -> Text.translatable(effect.getTranslationKey()).append(" ").append(Util.toRoman(effect.getAmplifier())))
126-
.mapToInt(client.textRenderer::getWidth).map(i -> i + 20).sum() + 2;
135+
return effects.stream().map(effect -> Text.translatable(effect.getTranslationKey()).append(CommonTexts.SPACE)
136+
.append(Util.toRoman(effect.getAmplifier() + 1))).mapToInt(client.textRenderer::getWidth).map(i -> i + 20).sum() + 2;
127137
} else {
128138
if (iconsOnly.get()) {
129139
return 20;
130140
}
131141
if (!showEffectName.get()) {
132-
return 50;
142+
return effects.stream().map(effect -> StatusEffectUtil.durationToString(effect, 1))
143+
.mapToInt(client.textRenderer::getWidth).max().orElse(0) + 22;
133144
}
134-
return effects.stream()
135-
.map(effect -> Text.translatable(effect.getTranslationKey()).append(" ").append(Util.toRoman(effect.getAmplifier())))
136-
.map(client.textRenderer::getWidth).max(Integer::compare).orElse(38) + 22;
145+
return effects.stream().map(effect -> Text.translatable(effect.getTranslationKey()).append(CommonTexts.SPACE)
146+
.append(Util.toRoman(effect.getAmplifier() + 1))).mapToInt(client.textRenderer::getWidth).max().orElse(0) +
147+
22;
137148
}
138149
}
139150

1.21.7/src/main/java/io/github/axolotlclient/modules/hud/HudManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ public void init() {
130130
entry.setEnabled(true);
131131
entry.init();
132132
entry.onBoundsUpdate();
133-
entry.getAllOptions().includeInParentTree(false);
134-
add(entry);
133+
entries.put(entry.getId(), entry);
134+
hudCategory.add(entry.getAllOptions(), false);
135135
client.screen.resize(client, client.screen.width, client.screen.height);
136136
saveCustomEntries();
137137
}));
@@ -151,8 +151,8 @@ private void loadCustomEntries() {
151151
opt.fromSerializedValue((String) values.get(opt.getName()));
152152
}
153153
});
154-
entry.getCategory().includeInParentTree(false);
155-
add(entry);
154+
entries.put(entry.getId(), entry);
155+
hudCategory.add(entry.getAllOptions(), false);
156156
entry.init();
157157
entry.onBoundsUpdate();
158158
});

1.21.7/src/main/java/io/github/axolotlclient/modules/hud/gui/hud/PotionsHud.java

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ public class PotionsHud extends TextHudEntry implements DynamicallyPositionable
6969
private final ColorOption timerTextColor = new ColorOption("potionshud.timer_text_color", Color.parse("#7F7F7F"));
7070

7171
public PotionsHud() {
72-
super(50, 200, false);
72+
super(50, 200, true);
73+
background = new BooleanOption("background", false);
7374
}
7475

7576
@Override
@@ -82,7 +83,8 @@ public void renderComponent(GuiGraphics graphics, float delta) {
8283
}
8384

8485
private void renderEffects(GuiGraphics graphics, List<MobEffectInstance> effects, float tickDelta) {
85-
int calcWidth = calculateWidth(effects);
86+
float tickrate = client.level != null ? client.level.tickRateManager().tickrate() : 1;
87+
int calcWidth = calculateWidth(effects, tickrate);
8688
int calcHeight = calculateHeight(effects);
8789
boolean changed = false;
8890
if (calcWidth != width) {
@@ -105,54 +107,62 @@ private void renderEffects(GuiGraphics graphics, List<MobEffectInstance> effects
105107
for (int i = 0; i < effects.size(); i++) {
106108
MobEffectInstance effect = effects.get(direction.getDirection() == -1 ? i : effects.size() - i - 1);
107109
if (direction.isXAxis()) {
108-
renderPotion(graphics, effect, x + lastPos + 1, y + 1, tickDelta);
109-
lastPos += (iconsOnly.get() ? 20 : (showEffectName.get() ? 20 + client.font.width(
110-
effect.getEffect().value().getDisplayName().copy().append(CommonComponents.SPACE)
111-
.append(Util.toRoman(effect.getAmplifier() + 1))) : 50));
110+
renderPotion(graphics, effect, x + lastPos + 1, y + 1, tickrate);
111+
int nameWidth = 0;
112+
if (!iconsOnly.get()) {
113+
nameWidth += client.font.width(MobEffectUtil.formatDuration(effect, 1, tickrate)) + 1;
114+
if (showEffectName.get()) {
115+
nameWidth = Math.max(nameWidth, client.font.width(
116+
effect.getEffect().value().getDisplayName().copy().append(CommonComponents.SPACE)
117+
.append(Util.toRoman(effect.getAmplifier() + 1))));
118+
}
119+
}
120+
lastPos += 20 + nameWidth;
112121
} else {
113-
renderPotion(graphics, effect, x + 1, y + 1 + lastPos, tickDelta);
122+
renderPotion(graphics, effect, x + 1, y + 1 + lastPos, tickrate);
114123
lastPos += 20;
115124
}
116125
}
117126
}
118127

119-
private int calculateWidth(List<MobEffectInstance> effects) {
128+
private int calculateWidth(List<MobEffectInstance> effects, float tickrate) {
120129
if ((order.get()).isXAxis()) {
121130
if (iconsOnly.get()) {
122131
return 20 * effects.size() + 2;
123132
}
124133
if (!showEffectName.get()) {
125-
return 50 * effects.size() + 2;
134+
return effects.stream().map(effect -> MobEffectUtil.formatDuration(effect, 1, tickrate))
135+
.mapToInt(client.font::width).map(i -> i + 20).sum() + 3;
126136
}
127-
return effects.stream().map(effect -> Component.translatable(effect.getDescriptionId()).append(" ")
128-
.append(Util.toRoman(effect.getAmplifier()))).mapToInt(client.font::width).map(i -> i + 20).sum() + 2;
137+
return effects.stream().map(effect -> effect.getEffect().value().getDisplayName().copy().append(CommonComponents.SPACE)
138+
.append(Util.toRoman(effect.getAmplifier() + 1))).mapToInt(client.font::width).map(i -> i + 20).sum() + 2;
129139
} else {
130140
if (iconsOnly.get()) {
131141
return 20;
132142
}
133143
if (!showEffectName.get()) {
134-
return 50;
144+
return effects.stream().map(effect -> MobEffectUtil.formatDuration(effect, 1, tickrate))
145+
.mapToInt(client.font::width).max().orElse(0) + 22;
135146
}
136-
return effects.stream().map(effect -> Component.translatable(effect.getDescriptionId()).append(" ")
137-
.append(Util.toRoman(effect.getAmplifier()))).map(client.font::width).max(Integer::compare).orElse(38) +
147+
return effects.stream().map(effect -> effect.getEffect().value().getDisplayName().copy().append(CommonComponents.SPACE)
148+
.append(Util.toRoman(effect.getAmplifier() + 1))).mapToInt(client.font::width).max().orElse(0) +
138149
22;
139150
}
140151
}
141152

142153
private int calculateHeight(List<MobEffectInstance> effects) {
143154
if ((order.get()).isXAxis()) {
144-
return 22;
155+
return 20;
145156
} else {
146157
return 20 * effects.size() + 2;
147158
}
148159
}
149160

150-
private void renderPotion(GuiGraphics graphics, MobEffectInstance effect, int x, int y, float tickDelta) {
161+
private void renderPotion(GuiGraphics graphics, MobEffectInstance effect, int x, int y, float tickrate) {
151162
Holder<MobEffect> type = effect.getEffect();
152163

153164
graphics.blitSprite(RenderPipelines.GUI_TEXTURED, Gui.getMobEffectSprite(type), x, y, 18, 18);
154165
if (!iconsOnly.get()) {
155-
float tickrate = client.level != null ? client.level.tickRateManager().tickrate() : 1;
156166
if (showEffectName.get()) {
157167
Component string = effect.getEffect().value().getDisplayName().copy().append(CommonComponents.SPACE)
158168
.append(Util.toRoman(effect.getAmplifier() + 1));

1.21/src/main/java/io/github/axolotlclient/modules/hud/HudManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,8 @@ public void init() {
131131
entry.setEnabled(true);
132132
entry.init();
133133
entry.onBoundsUpdate();
134-
entry.getAllOptions().includeInParentTree(false);
135-
add(entry);
134+
entries.put(entry.getId(), entry);
135+
hudCategory.add(entry.getAllOptions(), false);
136136
client.currentScreen.resize(client, client.currentScreen.width, client.currentScreen.height);
137137
saveCustomEntries();
138138
}));
@@ -152,8 +152,8 @@ private void loadCustomEntries() {
152152
opt.fromSerializedValue((String) values.get(opt.getName()));
153153
}
154154
});
155-
entry.getCategory().includeInParentTree(false);
156-
add(entry);
155+
entries.put(entry.getId(), entry);
156+
hudCategory.add(entry.getAllOptions(), false);
157157
entry.init();
158158
entry.onBoundsUpdate();
159159
});

0 commit comments

Comments
 (0)