Skip to content

Commit 2714e4c

Browse files
committed
added nametags to map art tracker
1 parent c4ed971 commit 2714e4c

2 files changed

Lines changed: 62 additions & 3 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ yarn_mappings=1.21.11+build.3
88
loader_version=0.18.2
99

1010
# Mod Properties
11-
mod_version=2.6.15
11+
mod_version=2.6.17
1212
maven_group=cqb13.NumbyHack
1313
archives_base_name=Numby-Hack

src/main/java/cqb13/NumbyHack/modules/general/MapArtTracker.java

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,29 @@
1414
import java.util.Map;
1515
import java.util.Set;
1616

17+
import org.joml.Vector3d;
18+
1719
import cqb13.NumbyHack.NumbyHack;
1820
import meteordevelopment.meteorclient.events.game.GameLeftEvent;
1921
import meteordevelopment.meteorclient.events.meteor.MouseClickEvent;
22+
import meteordevelopment.meteorclient.events.render.Render2DEvent;
2023
import meteordevelopment.meteorclient.events.render.Render3DEvent;
2124
import meteordevelopment.meteorclient.gui.GuiTheme;
2225
import meteordevelopment.meteorclient.gui.widgets.WWidget;
2326
import meteordevelopment.meteorclient.gui.widgets.containers.WHorizontalList;
2427
import meteordevelopment.meteorclient.gui.widgets.containers.WVerticalList;
2528
import meteordevelopment.meteorclient.gui.widgets.pressable.WButton;
2629
import meteordevelopment.meteorclient.renderer.ShapeMode;
30+
import meteordevelopment.meteorclient.renderer.text.TextRenderer;
2731
import meteordevelopment.meteorclient.settings.BoolSetting;
2832
import meteordevelopment.meteorclient.settings.ColorSetting;
33+
import meteordevelopment.meteorclient.settings.DoubleSetting;
2934
import meteordevelopment.meteorclient.settings.EnumSetting;
3035
import meteordevelopment.meteorclient.settings.Setting;
3136
import meteordevelopment.meteorclient.settings.SettingGroup;
3237
import meteordevelopment.meteorclient.systems.modules.Module;
3338
import meteordevelopment.meteorclient.utils.misc.input.KeyAction;
39+
import meteordevelopment.meteorclient.utils.render.NametagUtils;
3440
import meteordevelopment.meteorclient.utils.render.RenderUtils;
3541
import meteordevelopment.meteorclient.utils.render.color.Color;
3642
import meteordevelopment.meteorclient.utils.render.color.SettingColor;
@@ -59,6 +65,28 @@ public class MapArtTracker extends Module {
5965
.defaultValue(true)
6066
.build());
6167

68+
private final Setting<Boolean> nametags = sgGeneral.add(new BoolSetting.Builder()
69+
.name("nametags")
70+
.description("Render nametags over maps.")
71+
.defaultValue(true)
72+
.build());
73+
74+
private final Setting<SettingColor> nametagColor = sgGeneral.add(new ColorSetting.Builder()
75+
.name("nametag-color")
76+
.description("The color of the nametag text.")
77+
.defaultValue(new SettingColor(255, 255, 255))
78+
.visible(nametags::get)
79+
.build());
80+
81+
private final Setting<Double> nametagTextScale = sgGeneral.add(new DoubleSetting.Builder()
82+
.name("nametag-scale")
83+
.description("How big the nametag text should be.")
84+
.defaultValue(1.25)
85+
.min(1)
86+
.sliderMax(4)
87+
.visible(nametags::get)
88+
.build());
89+
6290
private final Setting<Boolean> tracers = sgGeneral.add(new BoolSetting.Builder()
6391
.name("tracers")
6492
.description("Render tracer lines to maps.")
@@ -148,7 +176,6 @@ private void onGameLeft(GameLeftEvent event) {
148176
saveMaps();
149177
}
150178

151-
// TODO: map name rendering option
152179
@EventHandler
153180
private void onRender(Render3DEvent event) {
154181
if (mc.world == null || mc.player == null) {
@@ -192,7 +219,6 @@ private void onRender(Render3DEvent event) {
192219
}
193220

194221
Box box = frame.getBoundingBox();
195-
float pitch = frame.getPitch();
196222

197223
Color fill = new Color(sideColor.get());
198224
Color outline = new Color(lineColor.get());
@@ -211,6 +237,39 @@ private void onRender(Render3DEvent event) {
211237
}
212238
}
213239

240+
@EventHandler
241+
private void onRender2D(Render2DEvent event) {
242+
if (!nametags.get()) {
243+
return;
244+
}
245+
246+
for (Entity entity : mc.world.getEntities()) {
247+
if (!(entity instanceof ItemFrameEntity frame)) {
248+
continue;
249+
}
250+
251+
ItemStack stack = frame.getHeldItemStack();
252+
if (stack.isEmpty() || stack.getItem() != Items.FILLED_MAP) {
253+
continue;
254+
}
255+
256+
String name = stack.getName().getString();
257+
258+
Vector3d vec3 = new Vector3d(entity.getX(), entity.getY(), entity.getZ());
259+
260+
if (NametagUtils.to2D(vec3, nametagTextScale.get())) {
261+
NametagUtils.begin(vec3);
262+
TextRenderer.get().begin(1, false, true);
263+
264+
double w = TextRenderer.get().getWidth(name) / 2;
265+
TextRenderer.get().render(name, -w, 0, nametagColor.get(), true);
266+
267+
TextRenderer.get().end();
268+
NametagUtils.end();
269+
}
270+
}
271+
}
272+
214273
@EventHandler
215274
private void onMouseClick(MouseClickEvent event) {
216275
if (event.action != KeyAction.Press || event.button() != GLFW_MOUSE_BUTTON_MIDDLE || mc.currentScreen != null) {

0 commit comments

Comments
 (0)