10
10
import meteordevelopment .meteorclient .systems .modules .Categories ;
11
11
import meteordevelopment .meteorclient .systems .modules .Module ;
12
12
import meteordevelopment .meteorclient .utils .Utils ;
13
+ import meteordevelopment .meteorclient .utils .misc .MeteorStarscript ;
13
14
import meteordevelopment .meteorclient .utils .player .PlayerUtils ;
14
15
import meteordevelopment .meteorclient .utils .render .NametagUtils ;
15
16
import meteordevelopment .meteorclient .utils .render .RenderUtils ;
16
17
import meteordevelopment .meteorclient .utils .render .color .Color ;
17
18
import meteordevelopment .meteorclient .utils .world .Dimension ;
18
19
import meteordevelopment .orbit .EventHandler ;
20
+ import meteordevelopment .starscript .Script ;
19
21
import nekiplay .Main ;
20
22
import nekiplay .meteorplus .MeteorPlusAddon ;
21
23
import net .minecraft .item .Item ;
24
26
import org .joml .Vector3d ;
25
27
26
28
import java .io .*;
27
- import java .nio .charset .Charset ;
28
29
import java .nio .charset .StandardCharsets ;
29
30
import java .nio .file .Files ;
30
31
import java .nio .file .Path ;
31
32
import java .util .ArrayList ;
33
+ import java .util .HashMap ;
32
34
import java .util .List ;
33
35
import java .util .stream .Collectors ;
34
36
@@ -40,6 +42,8 @@ public HologramModule() {
40
42
41
43
public List <HologramDataListed > allHolograms = new ArrayList <HologramDataListed >();
42
44
public List <HologramDataListed > inWorldHolograms = new ArrayList <HologramDataListed >();
45
+ public HashMap <String , Script > scripts = new HashMap <String , Script >();
46
+
43
47
44
48
@ Override
45
49
public void onActivate () {
@@ -81,9 +85,9 @@ private void on2DRender(Render2DEvent event) {
81
85
double hX = -widthHalf ;
82
86
double hY = -heightDown ;
83
87
84
- text .render (hologram_text , hX , hY , hologramData .color , true );
88
+ text .render (MeteorStarscript . run ( scripts . get ( hologram_text )) , hX , hY , hologramData .color , true );
85
89
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 );
87
91
if (hologramData1 .item_id != 0 ) {
88
92
Item item = Item .byRawId (hologramData1 .item_id );
89
93
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) {
101
105
}
102
106
}
103
107
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
+
104
119
private void load () {
105
120
File dir = new File (MeteorClient .FOLDER , "holograms" );
106
121
if (dir .exists ()) {
107
122
String world_name = Utils .getWorldName ();
108
123
File dir2 = new File (dir , world_name );
109
124
if (dir2 .exists ()) {
110
125
allHolograms .clear ();
126
+ scripts .clear ();
111
127
File [] files = dir2 .listFiles ();
112
128
if (files != null ) {
113
129
for (File file : files ) {
@@ -119,13 +135,13 @@ private void load() {
119
135
String json = reader .lines ().collect (Collectors .joining ());
120
136
HologramDataListed hologramData = gson .fromJson (json , HologramDataListed .class );
121
137
if (hologramData != null ) {
138
+ loadScripts (hologramData );
122
139
allHolograms .add (hologramData );
123
140
MeteorPlusAddon .LOG .info (Main .METEOR_LOGPREFIX + " Success loaded hologram: " + file .getName ());
124
141
}
125
-
126
- } catch (JsonSyntaxException e ) {
142
+ }
143
+ catch (Exception e ) {
127
144
MeteorPlusAddon .LOG .error (Main .METEOR_LOGPREFIX + " Error in hologram: " + e );
128
-
129
145
}
130
146
} catch (IOException e ) {
131
147
MeteorPlusAddon .LOG .error (Main .METEOR_LOGPREFIX + " Error in hologram: " + e );
0 commit comments