Skip to content

Commit 370b33a

Browse files
authored
Holograms Starscript support
1 parent 6e606a6 commit 370b33a

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

src/main/java/nekiplay/meteorplus/features/modules/render/holograms/HologramModule.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@
1010
import meteordevelopment.meteorclient.systems.modules.Categories;
1111
import meteordevelopment.meteorclient.systems.modules.Module;
1212
import meteordevelopment.meteorclient.utils.Utils;
13+
import meteordevelopment.meteorclient.utils.misc.MeteorStarscript;
1314
import meteordevelopment.meteorclient.utils.player.PlayerUtils;
1415
import meteordevelopment.meteorclient.utils.render.NametagUtils;
1516
import meteordevelopment.meteorclient.utils.render.RenderUtils;
1617
import meteordevelopment.meteorclient.utils.render.color.Color;
1718
import meteordevelopment.meteorclient.utils.world.Dimension;
1819
import meteordevelopment.orbit.EventHandler;
20+
import meteordevelopment.starscript.Script;
1921
import nekiplay.Main;
2022
import nekiplay.meteorplus.MeteorPlusAddon;
2123
import net.minecraft.item.Item;
@@ -24,11 +26,11 @@
2426
import org.joml.Vector3d;
2527

2628
import java.io.*;
27-
import java.nio.charset.Charset;
2829
import java.nio.charset.StandardCharsets;
2930
import java.nio.file.Files;
3031
import java.nio.file.Path;
3132
import java.util.ArrayList;
33+
import java.util.HashMap;
3234
import java.util.List;
3335
import java.util.stream.Collectors;
3436

@@ -40,6 +42,8 @@ public HologramModule() {
4042

4143
public List<HologramDataListed> allHolograms = new ArrayList<HologramDataListed>();
4244
public List<HologramDataListed> inWorldHolograms = new ArrayList<HologramDataListed>();
45+
public HashMap<String, Script> scripts = new HashMap<String, Script>();
46+
4347

4448
@Override
4549
public void onActivate() {
@@ -81,9 +85,9 @@ private void on2DRender(Render2DEvent event) {
8185
double hX = -widthHalf;
8286
double hY = -heightDown;
8387

84-
text.render(hologram_text, hX, hY, hologramData.color, true);
88+
text.render(MeteorStarscript.run(scripts.get(hologram_text)), hX, hY, hologramData.color, true);
8589
for (HologramData hologramData1 : hologramData.other_holograms) {
86-
text.render(hologramData1.text, hX - hologramData1.x, hY - hologramData1.y, hologramData1.color, true);
90+
text.render(MeteorStarscript.run(scripts.get(hologramData1.text)), hX - hologramData1.x, hY - hologramData1.y, hologramData1.color, true);
8791
if (hologramData1.item_id != 0) {
8892
Item item = Item.byRawId(hologramData1.item_id);
8993
RenderUtils.drawItem(event.drawContext, item.getDefaultStack(), (int) ((int) hX - hologramData1.x), (int) ((int) 0 - hologramData1.y), hologramData1.item_scale, true);
@@ -101,13 +105,25 @@ private void on2DRender(Render2DEvent event) {
101105
}
102106
}
103107

108+
private void loadScripts(HologramDataListed hologramDataListed) {
109+
if (!scripts.containsKey(hologramDataListed.text)) {
110+
scripts.put(hologramDataListed.text, MeteorStarscript.compile(hologramDataListed.text));
111+
}
112+
for (HologramData hologramData1 : hologramDataListed.other_holograms) {
113+
if (!scripts.containsKey(hologramData1.text)) {
114+
scripts.put(hologramData1.text, MeteorStarscript.compile(hologramData1.text));
115+
}
116+
}
117+
}
118+
104119
private void load() {
105120
File dir = new File(MeteorClient.FOLDER, "holograms");
106121
if (dir.exists()) {
107122
String world_name = Utils.getWorldName();
108123
File dir2 = new File(dir, world_name);
109124
if (dir2.exists()) {
110125
allHolograms.clear();
126+
scripts.clear();
111127
File[] files = dir2.listFiles();
112128
if (files != null) {
113129
for (File file : files) {
@@ -119,13 +135,13 @@ private void load() {
119135
String json = reader.lines().collect(Collectors.joining());
120136
HologramDataListed hologramData = gson.fromJson(json, HologramDataListed.class);
121137
if (hologramData != null) {
138+
loadScripts(hologramData);
122139
allHolograms.add(hologramData);
123140
MeteorPlusAddon.LOG.info(Main.METEOR_LOGPREFIX + " Success loaded hologram: " + file.getName());
124141
}
125-
126-
} catch (JsonSyntaxException e) {
142+
}
143+
catch (Exception e) {
127144
MeteorPlusAddon.LOG.error(Main.METEOR_LOGPREFIX + " Error in hologram: " + e);
128-
129145
}
130146
} catch (IOException e) {
131147
MeteorPlusAddon.LOG.error(Main.METEOR_LOGPREFIX + " Error in hologram: " + e);

0 commit comments

Comments
 (0)