Skip to content

Commit 602549a

Browse files
authored
change the TeamUpgradesHud to use texture atlases (#95)
- this should slightly improve performance - improves the display of the "Reinforced Armor" Upgrade Closes #98
2 parents b3d102a + a2e79b0 commit 602549a

File tree

80 files changed

+2903
-539
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

80 files changed

+2903
-539
lines changed

1.16.5/src/main/java/io/github/axolotlclient/mixin/EntityRendererMixin.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import io.github.axolotlclient.modules.hypixel.HypixelAbstractionLayer;
2727
import io.github.axolotlclient.modules.hypixel.bedwars.BedwarsMod;
2828
import io.github.axolotlclient.modules.hypixel.levelhead.LevelHead;
29+
import io.github.axolotlclient.modules.hypixel.levelhead.LevelHeadMode;
2930
import net.minecraft.client.MinecraftClient;
3031
import net.minecraft.client.font.TextRenderer;
3132
import net.minecraft.client.network.AbstractClientPlayerEntity;
@@ -90,6 +91,10 @@ public abstract class EntityRendererMixin<T extends Entity> {
9091
} else if (HypixelAbstractionLayer.hasValidAPIKey() && LevelHead.getInstance().enabled.get()) {
9192
String text = "Level: " + HypixelAbstractionLayer.getPlayerLevel(String.valueOf(entity.getUuid()), LevelHead.getInstance().mode.get());
9293

94+
if(LevelHead.getInstance().mode.get().equals(LevelHeadMode.BEDWARS.toString())){
95+
text += "☆";
96+
}
97+
9398
float x = -textRenderer.getWidth(text) / 2F;
9499
float y = string.getString().contains("deadmau5") ? -20 : -10;
95100

1.16.5/src/main/java/io/github/axolotlclient/modules/hypixel/bedwars/BedwarsGame.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ public void renderCustomScoreboardObjective(MatrixStack matrices, String playerN
463463
color = new Color(200, 200, 200).getAsInt();
464464
} else {
465465
int health = objective.getScoreboard().getPlayerScore(playerName, objective).getScore();
466-
color = Color.blend(new Color(255, 255, 255), new Color(215, 0, 64), (int) (1 - (health / 20f) * 100)).getAsInt();
466+
color = Color.blend(new Color(255, 255, 255), new Color(215, 0, 64), (int) (1 - (health / 20f))).getAsInt();
467467
render = String.valueOf(health);
468468
}
469469
// Health

1.16.5/src/main/java/io/github/axolotlclient/modules/hypixel/bedwars/BedwarsMod.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ public void onMessage(ReceiveChatMessageEvent event) {
141141
event.setNewMessage(new LiteralText(time).append(event.getFormattedMessage()));
142142
}
143143
}
144-
} else if (targetTick < 0 && BedwarsMessages.matched(GAME_START, rawMessage).isPresent()) {
144+
} else if (enabled.get() && targetTick < 0 && BedwarsMessages.matched(GAME_START, rawMessage).isPresent()) {
145145
// Give time for Hypixel to sync
146146
targetTick = MinecraftClient.getInstance().inGameHud.getTicks() + 10;
147147
}

1.16.5/src/main/java/io/github/axolotlclient/modules/hypixel/bedwars/BedwarsPlayer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525

2626
import lombok.Data;
27-
import lombok.Getter;
2827
import net.minecraft.client.MinecraftClient;
2928
import net.minecraft.client.network.PlayerListEntry;
3029

@@ -36,7 +35,6 @@
3635
public class BedwarsPlayer {
3736

3837
private final BedwarsTeam team;
39-
@Getter
4038
private PlayerListEntry profile;
4139
private boolean alive = true;
4240
private boolean disconnected = false;
@@ -94,7 +92,9 @@ public void tick(int currentTick) {
9492
triedStats = true;
9593
try {
9694
stats = BedwarsPlayerStats.fromAPI(profile.getProfile().getId().toString().replace("-", ""));
97-
} catch (Exception e) {
95+
} catch (Exception ignored) {
96+
}
97+
if (stats == null){
9898
stats = BedwarsPlayerStats.generateFake(profile.getProfile().getName());
9999
}
100100
}

1.16.5/src/main/java/io/github/axolotlclient/modules/hypixel/bedwars/TeamUpgradesOverlay.java

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,8 @@
3131
import io.github.axolotlclient.modules.hud.util.DrawPosition;
3232
import io.github.axolotlclient.modules.hypixel.bedwars.upgrades.BedwarsTeamUpgrades;
3333
import io.github.axolotlclient.modules.hypixel.bedwars.upgrades.TeamUpgrade;
34-
import io.github.axolotlclient.modules.hypixel.bedwars.upgrades.TextureInfo;
3534
import io.github.axolotlclient.modules.hypixel.bedwars.upgrades.TrapUpgrade;
3635
import net.minecraft.client.MinecraftClient;
37-
import net.minecraft.client.gui.DrawableHelper;
3836
import net.minecraft.client.util.math.MatrixStack;
3937
import net.minecraft.util.Identifier;
4038

@@ -51,7 +49,7 @@ public class TeamUpgradesOverlay extends BoxHudEntry {
5149
private BedwarsTeamUpgrades upgrades = null;
5250
private final BedwarsMod mod;
5351
private final MinecraftClient mc;
54-
private final static TextureInfo[] trapEdit = {TrapUpgrade.TrapType.MINER_FATIGUE.getTexInfo(), TrapUpgrade.TrapType.ITS_A_TRAP.getTexInfo()};
52+
private final static TrapUpgrade.TrapType[] trapEdit = {TrapUpgrade.TrapType.MINER_FATIGUE, TrapUpgrade.TrapType.ITS_A_TRAP};
5553

5654
public TeamUpgradesOverlay(BedwarsMod mod) {
5755
super(60, 40, true);
@@ -81,9 +79,12 @@ public void drawOverlay(MatrixStack stack, DrawPosition position, boolean editMo
8179

8280
int x = position.x() + 1;
8381
int y = position.y() + 2;
82+
int width = getWidth();
83+
int height = getHeight();
8484
RenderSystem.enableAlphaTest();
8585
RenderSystem.enableBlend();
8686
RenderSystem.color4f(1, 1, 1, 1);
87+
RenderSystem.enableTexture();
8788
boolean normalUpgrades = false;
8889
if (upgrades != null) {
8990
for (TeamUpgrade u : upgrades.upgrades) {
@@ -93,26 +94,31 @@ public void drawOverlay(MatrixStack stack, DrawPosition position, boolean editMo
9394
if (u instanceof TrapUpgrade) {
9495
continue;
9596
}
96-
TextureInfo texture;
97-
texture = u.getTexture()[0];
98-
RenderSystem.color4f(texture.getColor().getAlpha(), texture.getColor().getRed(), texture.getColor().getBlue(), texture.getColor().getGreen());
99-
mc.getTextureManager().bindTexture(new Identifier("minecraft", texture.getTexture()));
100-
DrawableHelper.drawTexture(stack, x, y, 16, 16, texture.getU(), texture.getV(), texture.getRegionWidth(), texture.getRegionHeight(), texture.getWidth(), texture.getHeight());
10197
RenderSystem.color4f(1, 1, 1, 1);
98+
u.draw(stack, x, y, 16, 16);
10299
x += 17;
103100
normalUpgrades = true;
104101
}
102+
setWidth(Math.max((x - position.x()) + 1, 18));
105103
}
106104
x = position.x() + 1;
107105
if (normalUpgrades) {
108106
y += 17;
109107
}
110-
for (TextureInfo texture : (editMode ? trapEdit : upgrades.trap.getTexture())) {
111-
RenderSystem.color4f(texture.getColor().getAlpha(), texture.getColor().getRed(), texture.getColor().getBlue(), texture.getColor().getGreen());
112-
mc.getTextureManager().bindTexture(new Identifier("minecraft", texture.getTexture()));
113-
DrawableHelper.drawTexture(stack, x, y, 16, 16, texture.getU(), texture.getV(), texture.getRegionWidth(), texture.getRegionHeight(), texture.getWidth(), texture.getHeight());
114-
RenderSystem.color4f(1, 1, 1, 1);
115-
x += 17;
108+
if (editMode) {
109+
for(TrapUpgrade.TrapType type : trapEdit){
110+
RenderSystem.color4f(1, 1, 1, 1);
111+
type.draw(stack, x, y, 16, 16);
112+
x+=17;
113+
}
114+
setWidth(Math.max((x - position.x()) + 1, 18));
115+
} else {
116+
upgrades.trap.draw(stack, x, y, 16, 16);
117+
setWidth(Math.max(((x + (upgrades.trap.getTrapCount()*16)) - position.x()) + 1, getWidth()));
118+
}
119+
setHeight((y - position.y())+19);
120+
if (getHeight() != height || getWidth() != width) {
121+
onBoundsUpdate();
116122
}
117123
}
118124

1.16.5/src/main/java/io/github/axolotlclient/modules/hypixel/bedwars/upgrades/BedwarsTeamUpgrades.java

Lines changed: 93 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,19 @@
2525

2626
import java.util.regex.Pattern;
2727

28+
import com.mojang.blaze3d.systems.RenderSystem;
2829
import io.github.axolotlclient.AxolotlClientConfig.Color;
30+
import io.github.axolotlclient.AxolotlClientConfig.util.ConfigUtils;
31+
import io.github.axolotlclient.modules.hud.util.ItemUtil;
32+
import io.github.axolotlclient.modules.hypixel.bedwars.BedwarsMod;
33+
import net.minecraft.client.MinecraftClient;
34+
import net.minecraft.client.gui.DrawableHelper;
35+
import net.minecraft.client.texture.Sprite;
36+
import net.minecraft.entity.effect.StatusEffects;
37+
import net.minecraft.item.ItemStack;
38+
import net.minecraft.item.Items;
39+
import net.minecraft.util.Identifier;
40+
import org.lwjgl.opengl.GL11;
2941

3042
/**
3143
* @author DarkKronicle
@@ -37,51 +49,102 @@ public class BedwarsTeamUpgrades {
3749

3850
public final TeamUpgrade sharpness = new BinaryUpgrade(
3951
"sharp", Pattern.compile("^\\b[A-Za-z0-9_§]{3,16}\\b purchased Sharpened Swords"),
40-
8, 4, new TextureInfo("textures/item/stone_sword.png"), new TextureInfo("textures/item/diamond_sword.png")
41-
);
52+
8, 4, (stack, x, y, width, height, upgradeLevel) -> {
53+
if(upgradeLevel == 0){
54+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.STONE_SWORD), x, y);
55+
} else {
56+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(),new ItemStack(Items.DIAMOND_SWORD), x, y);
57+
}
58+
});
4259

4360
public final TeamUpgrade dragonBuff = new BinaryUpgrade(
4461
"dragonbuff", Pattern.compile("^\\b[A-Za-z0-9_§]{3,16}\\b purchased Dragon Buff\\s*$"),
45-
5, 5, new TextureInfo("textures/item/end_crystal.png", Color.DARK_GRAY),
46-
new TextureInfo("textures/item/end_crystal.png")
47-
);
62+
5, 5, (graphics, x, y, width, height, purchased) -> {
63+
if (purchased > 0) {
64+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.END_CRYSTAL), x, y);
65+
}
66+
});
4867

4968
public final TeamUpgrade healPool = new BinaryUpgrade(
5069
"healpool", Pattern.compile("^\\b[A-Za-z0-9_§]{3,16}\\b purchased Heal Pool\\s*$"),
51-
3, 1, new TextureInfo("textures/mob_effect/health_boost.png", 0, 0, 18, 18, Color.DARK_GRAY),
52-
new TextureInfo("textures/mob_effect/health_boost.png", 0, 0, 18, 18)
53-
);
70+
3, 1, (graphics, x, y, width, height, upgradeLevel) -> {
71+
if(upgradeLevel == 0){
72+
Color color = Color.DARK_GRAY;
73+
RenderSystem.color4f(color.getAlpha()/255F, color.getRed()/255F, color.getGreen()/255F, color.getBlue()/255F);
74+
}
75+
Sprite sprite = MinecraftClient.getInstance().getStatusEffectSpriteManager().getSprite(StatusEffects.HEALTH_BOOST);
76+
MinecraftClient.getInstance().getTextureManager().bindTexture(sprite.getAtlas().getId());
77+
DrawableHelper.drawSprite(graphics, x, y, 0, width, height, sprite);
78+
});
5479

5580
public final TeamUpgrade protection = new TieredUpgrade(
5681
"prot", Pattern.compile("^\\b[A-Za-z0-9_§]{3,16}\\b purchased Reinforced Armor .{1,3}\\s*$"),
57-
new int[]{5, 10, 20, 30}, new int[]{2, 4, 8, 16}, new TextureInfo[]{
58-
new TextureInfo("textures/mob_effect/resistance.png", 0, 0, 18, 18, Color.DARK_GRAY),
59-
new TextureInfo("textures/mob_effect/resistance.png", 0, 0, 18, 18),
60-
new TextureInfo("textures/mob_effect/resistance.png", 0, 0, 18, 18, Color.parse("#FFFF00")),
61-
new TextureInfo("textures/mob_effect/resistance.png", 0, 0, 18, 18, Color.parse("#00FF00")),
62-
new TextureInfo("textures/mob_effect/resistance.png", 0, 0, 18, 18, Color.parse("#FF0000")),
63-
}
64-
);
82+
new int[]{5, 10, 20, 30}, new int[]{2, 4, 8, 16}, (graphics, x, y, width, height, upgradeLevel) -> {
83+
switch (upgradeLevel){
84+
case 1:
85+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.IRON_CHESTPLATE), x, y);
86+
ConfigUtils.applyScissor(x, y+height/2, width/2, height);
87+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.DIAMOND_CHESTPLATE), x, y);
88+
GL11.glDisable(GL11.GL_SCISSOR_TEST);
89+
break;
90+
case 2:
91+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.IRON_CHESTPLATE), x, y);
92+
ConfigUtils.applyScissor(x, y, width/2, height);
93+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.DIAMOND_CHESTPLATE), x, y);
94+
GL11.glDisable(GL11.GL_SCISSOR_TEST);
95+
break;
96+
case 3:
97+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.DIAMOND_CHESTPLATE), x, y);
98+
ConfigUtils.applyScissor(x+width/2, y+height/2, width/2, height);
99+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.IRON_CHESTPLATE), x, y);
100+
GL11.glDisable(GL11.GL_SCISSOR_TEST);
101+
break;
102+
case 4:
103+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.DIAMOND_CHESTPLATE), x, y);
104+
break;
105+
default:
106+
ItemUtil.renderGuiItemModel(BedwarsMod.getInstance().getUpgradesOverlay().getScale(), new ItemStack(Items.IRON_CHESTPLATE), x, y);
107+
break;
108+
}
109+
});
65110

66111
public final TeamUpgrade maniacMiner = new TieredUpgrade(
67112
"haste", Pattern.compile("^\\b[A-Za-z0-9_§]{3,16}\\b purchased Maniac Miner .{1,3}\\s*$"),
68-
new int[]{2, 4}, new int[]{4, 6}, new TextureInfo[]{
69-
new TextureInfo("textures/mob_effect/haste.png", 0, 0, 18, 18, Color.DARK_GRAY),
70-
new TextureInfo("textures/mob_effect/haste.png", 0, 0, 18, 18, Color.GRAY),
71-
new TextureInfo("textures/mob_effect/haste.png", 0, 0, 18, 18),
72-
}
73-
);
113+
new int[]{2, 4}, new int[]{4, 6}, (graphics, x, y, width, height, upgradeLevel) -> {
114+
if (upgradeLevel == 1) {
115+
Color color = Color.GRAY;
116+
RenderSystem.color4f(color.getAlpha() / 255F, color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F);
117+
} else if (upgradeLevel == 0) {
118+
Color color = Color.DARK_GRAY;
119+
RenderSystem.color4f(color.getAlpha() / 255F, color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F);
120+
}
121+
Sprite sprite = MinecraftClient.getInstance().getStatusEffectSpriteManager().getSprite(StatusEffects.HASTE);
122+
MinecraftClient.getInstance().getTextureManager().bindTexture(sprite.getAtlas().getId());
123+
DrawableHelper.drawSprite(graphics, x, y, 0, width, height, sprite);
124+
});
74125

75126
public final TeamUpgrade forge = new TieredUpgrade(
76127
"forge", Pattern.compile("^\\b[A-Za-z0-9_§]{3,16}\\b purchased (?:Iron|Golden|Emerald|Molten) Forge\\s*$"),
77-
new int[]{2, 4}, new int[]{4, 6}, new TextureInfo[]{
78-
new TextureInfo("textures/block/furnace_front.png", 198 + 18, 6*18, 18, 18),
79-
new TextureInfo("textures/block/furnace_front_on.png", 198 + 18, 6*18, 18, 18),
80-
new TextureInfo("textures/block/furnace_front_on.png", 198 + 18, 6*18, 18, 18, Color.parse("#FFFF00")),
81-
new TextureInfo("textures/block/furnace_front_on.png", 198 + 18, 6*18, 18, 18, Color.parse("#00FF00")),
82-
new TextureInfo("textures/block/furnace_front_on.png", 198 + 18, 6*18, 18, 18, Color.parse("#FF0000")),
83-
}
84-
);
128+
new int[]{2, 4}, new int[]{4, 6}, (graphics, x, y, width, height, upgradeLevel) -> {
129+
if(upgradeLevel == 0){
130+
MinecraftClient.getInstance().getTextureManager().bindTexture(new Identifier("textures/block/furnace_front.png"));
131+
DrawableHelper.drawTexture(graphics, x, y, 0, 0, width, height, width, height);
132+
} else {
133+
if(upgradeLevel == 2){
134+
Color color = Color.parse("#FFFF00");
135+
RenderSystem.color4f(color.getAlpha() / 255F, color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F);
136+
} else if (upgradeLevel == 3) {
137+
Color color = Color.parse("#00FF00");
138+
RenderSystem.color4f(color.getAlpha() / 255F, color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F);
139+
} else if (upgradeLevel == 4){
140+
Color color = Color.parse("#FF0000");
141+
RenderSystem.color4f(color.getAlpha() / 255F, color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F);
142+
}
143+
MinecraftClient.getInstance().getTextureManager().bindTexture(new Identifier("textures/block/furnace_front_on.png"));
144+
DrawableHelper.drawTexture(graphics, x, y, 0, 0, width, height, width, height);
145+
MinecraftClient.getInstance().textRenderer.drawWithShadow(graphics, String.valueOf(upgradeLevel), x+width-4, y+height-6, -1);
146+
}
147+
});
85148

86149
public final TeamUpgrade[] upgrades = {trap, sharpness, dragonBuff, healPool, protection, maniacMiner, forge};
87150

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.regex.Pattern;
2727

2828
import io.github.axolotlclient.modules.hypixel.bedwars.BedwarsMode;
29+
import net.minecraft.client.util.math.MatrixStack;
2930

3031
/**
3132
* @author DarkKronicle
@@ -38,14 +39,13 @@ public class BinaryUpgrade extends TeamUpgrade {
3839
private final int foursPrice;
3940
private final int doublesPrice;
4041

41-
private final TextureInfo inactiveTexture, activeTexture;
42+
private final TeamUpgradeRenderer drawer;
4243

43-
public BinaryUpgrade(String name, Pattern regex, int foursPrice, int doublesPrice, TextureInfo inactiveTexture, TextureInfo activeTexture) {
44+
public BinaryUpgrade(String name, Pattern regex, int foursPrice, int doublesPrice, TeamUpgradeRenderer drawer) {
4445
super(name, regex);
4546
this.foursPrice = foursPrice;
4647
this.doublesPrice = doublesPrice;
47-
this.inactiveTexture = inactiveTexture;
48-
this.activeTexture = activeTexture;
48+
this.drawer = drawer;
4949
}
5050

5151
@Override
@@ -54,8 +54,8 @@ protected void onMatch(TeamUpgrade upgrade, Matcher matcher) {
5454
}
5555

5656
@Override
57-
public TextureInfo[] getTexture() {
58-
return new TextureInfo[]{(purchased ? activeTexture : inactiveTexture)};
57+
public void draw(MatrixStack stack, int x, int y, int width, int height) {
58+
drawer.render(stack, x, y, width, height, purchased ? 1 : 0);
5959
}
6060

6161
@Override

0 commit comments

Comments
 (0)