Skip to content

Commit f994c04

Browse files
committed
add markdown docs
1 parent a01f3e0 commit f994c04

2 files changed

Lines changed: 308 additions & 0 deletions

File tree

docs/developers/modules/_meta.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"packetenrichment": "Packet Enrichment",
2121
"richpresence": "Rich Presence",
2222
"saturation": "Saturation",
23+
"serverlink": "Server Link",
2324
"serverrule": "Server Rule",
2425
"staffmod": "Staff Mod",
2526
"stopwatch": "Stopwatch",
Lines changed: 307 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,307 @@
1+
import { Tab, Tabs } from 'nextra-theme-docs'
2+
3+
# Server Link Module
4+
5+
## Overview
6+
7+
TODO
8+
9+
## Integration
10+
11+
### Sample Code
12+
Explore each integration by cycling through each tab, to find the best fit for your requirements and needs.
13+
14+
<Tabs items={['Apollo API', 'apollo-protos library', 'Manual JSON Object Construction']}>
15+
16+
<Tab>
17+
18+
### Override the Server Link Menu resource
19+
20+
```java
21+
public void overrideServerLinkResourceExample(Player viewer) {
22+
Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
23+
24+
apolloPlayerOpt.ifPresent(apolloPlayer -> {
25+
this.serverLinkModule.overrideServerLinkResource(apolloPlayer, ResourceLocationIcon.builder()
26+
.resourceLocation("lunar:logo/logo-100x100.png")
27+
.build());
28+
});
29+
}
30+
```
31+
32+
### Reset the Server Link Menu resource
33+
34+
```java
35+
public void resetServerLinkResourceExample(Player viewer) {
36+
Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
37+
apolloPlayerOpt.ifPresent(this.serverLinkModule::resetServerLinkResource);
38+
}
39+
```
40+
41+
### Add Server Link
42+
43+
```java
44+
public void addServerLinkExample(Player viewer) {
45+
Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
46+
47+
apolloPlayerOpt.ifPresent(apolloPlayer -> {
48+
this.serverLinkModule.addServerLink(apolloPlayer, Lists.newArrayList(
49+
ServerLink.builder()
50+
.id("website")
51+
.displayName(Component.text("Website", NamedTextColor.LIGHT_PURPLE))
52+
.url("https://www.lunarclient.com/")
53+
.build(),
54+
ServerLink.builder()
55+
.id("support")
56+
.displayName(Component.text("Support", NamedTextColor.AQUA))
57+
.url("https://support.lunarclient.com/")
58+
.build(),
59+
ServerLink.builder()
60+
.id("status")
61+
.displayName(Component.text("Status", NamedTextColor.RED))
62+
.url("https://status.lunarclient.com/")
63+
.build()
64+
));
65+
});
66+
}
67+
```
68+
69+
### Remove Server Link
70+
71+
```java
72+
public void removeServerLinkExample(Player viewer) {
73+
Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
74+
75+
apolloPlayerOpt.ifPresent(apolloPlayer -> {
76+
this.serverLinkModule.removeServerLink(apolloPlayer, Lists.newArrayList(
77+
"website", "support", "status"
78+
));
79+
});
80+
}
81+
```
82+
83+
### Resetting all Server Links
84+
85+
```java
86+
public void resetServerLinksExample(Player viewer) {
87+
Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
88+
apolloPlayerOpt.ifPresent(this.serverLinkModule::resetServerLinks);
89+
}
90+
```
91+
92+
### `Hologram` Options
93+
94+
`.id(String)` should include a unique identifier for the hologram.
95+
96+
```java
97+
.id("welcome-hologram")
98+
```
99+
100+
`.location(ApolloLocation)` is using the `ApolloLocation` builder to create the location. See the [locations page](/apollo/developers/utilities/locations) for more.
101+
102+
```java
103+
.location(ApolloLocation.builder()
104+
.world("world")
105+
.x(5)
106+
.y(100)
107+
.z(0)
108+
.build()
109+
)
110+
```
111+
112+
`.lines(Component)` should be a string, or an Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more.
113+
114+
```java
115+
.lines(List.of(
116+
Component.text()
117+
.content("Welcome to my server!")
118+
.color(NamedTextColor.RED)
119+
.decorate(TextDecoration.BOLD, TextDecoration.UNDERLINED)
120+
.build(),
121+
Component.text()
122+
.content("Type /help to get started!")
123+
.build()
124+
))
125+
```
126+
127+
`.showThroughWalls(Boolean)` if the player is able to see the hologram through walls.
128+
129+
```java
130+
.showThroughWalls(true)
131+
```
132+
133+
`.showShadow(Boolean)` if the player is able to see the hologram shadow.
134+
135+
```java
136+
.showShadow(false)
137+
```
138+
139+
`.showBackground(Boolean)` if the player is able to see the hologram background.
140+
141+
```java
142+
.showBackground(true)
143+
```
144+
145+
</Tab>
146+
147+
<Tab>
148+
149+
### Override the Server Link Menu resource
150+
151+
```java
152+
public void overrideServerLinkResourceExample(Player viewer) {
153+
OverrideServerLinkResourceMessage message = OverrideServerLinkResourceMessage.newBuilder()
154+
.setIcon(ProtobufUtil.createResourceLocationIconProto("lunar:logo/logo-100x100.png"))
155+
.build();
156+
157+
ProtobufPacketUtil.sendPacket(viewer, message);
158+
}
159+
```
160+
161+
### Reset the Server Link Menu resource
162+
163+
```java
164+
public void resetServerLinkResourceExample(Player viewer) {
165+
ResetServerLinkResourceMessage message = ResetServerLinkResourceMessage.getDefaultInstance();
166+
ProtobufPacketUtil.sendPacket(viewer, message);
167+
}
168+
```
169+
170+
### Add Server Link
171+
172+
```java
173+
public void addServerLinkExample(Player viewer) {
174+
List<ServerLink> serverLinks = Lists.newArrayList(
175+
ServerLink.newBuilder()
176+
.setId("website")
177+
.setDisplayNameAdventureJsonLines(AdventureUtil.toJson(
178+
Component.text("Website", NamedTextColor.LIGHT_PURPLE)))
179+
.setUrl("https://www.lunarclient.com/")
180+
.build(),
181+
ServerLink.newBuilder()
182+
.setId("support")
183+
.setDisplayNameAdventureJsonLines(AdventureUtil.toJson(
184+
Component.text("Support", NamedTextColor.AQUA)))
185+
.setUrl("https://support.lunarclient.com/")
186+
.build(),
187+
ServerLink.newBuilder()
188+
.setId("status")
189+
.setDisplayNameAdventureJsonLines(AdventureUtil.toJson(
190+
Component.text("Status", NamedTextColor.RED)))
191+
.setUrl("https://status.lunarclient.com/")
192+
.build()
193+
);
194+
195+
AddServerLinkMessage message = AddServerLinkMessage.newBuilder()
196+
.addAllServerLinks(serverLinks)
197+
.build();
198+
199+
ProtobufPacketUtil.sendPacket(viewer, message);
200+
}
201+
```
202+
203+
### Remove Server Link
204+
205+
```java
206+
public void removeServerLinkExample(Player viewer) {
207+
List<String> serverLinkIds = Lists.newArrayList("website", "support", "status");
208+
209+
RemoveServerLinkMessage message = RemoveServerLinkMessage.newBuilder()
210+
.addAllServerLinkIds(serverLinkIds)
211+
.build();
212+
213+
ProtobufPacketUtil.sendPacket(viewer, message);
214+
}
215+
```
216+
217+
### Resetting all Server Links
218+
219+
```java
220+
public void resetServerLinksExample(Player viewer) {
221+
ResetServerLinksMessage message = ResetServerLinksMessage.getDefaultInstance();
222+
ProtobufPacketUtil.sendPacket(viewer, message);
223+
}
224+
```
225+
226+
</Tab>
227+
228+
<Tab>
229+
230+
### Override the Server Link Menu resource
231+
232+
```java
233+
public void overrideServerLinkResourceExample(Player viewer) {
234+
JsonObject message = new JsonObject();
235+
message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.OverrideServerLinkResourceMessage");
236+
message.add("icon", JsonUtil.createResourceLocationIconObject("lunar:logo/logo-100x100.png"));
237+
238+
JsonPacketUtil.sendPacket(viewer, message);
239+
}
240+
```
241+
242+
### Reset the Server Link Menu resource
243+
244+
```java
245+
public void resetServerLinkResourceExample(Player viewer) {
246+
JsonObject message = new JsonObject();
247+
message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.ResetServerLinkResourceMessage");
248+
249+
JsonPacketUtil.sendPacket(viewer, message);
250+
}
251+
```
252+
253+
### Add Server Link
254+
255+
```java
256+
public void addServerLinkExample(Player viewer) {
257+
JsonArray serverLinks = Lists.newArrayList(
258+
this.createServerLinkObject("website", Component.text("Website", NamedTextColor.LIGHT_PURPLE), "https://www.lunarclient.com/"),
259+
this.createServerLinkObject("support", Component.text("Support", NamedTextColor.AQUA), "https://support.lunarclient.com/"),
260+
this.createServerLinkObject("status", Component.text("Status", NamedTextColor.RED), "https://status.lunarclient.com/")
261+
).stream().collect(JsonArray::new, JsonArray::add, JsonArray::addAll);
262+
263+
JsonObject message = new JsonObject();
264+
message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.AddServerLinkMessage");
265+
message.add("server_links", serverLinks);
266+
267+
JsonPacketUtil.sendPacket(viewer, message);
268+
}
269+
270+
private JsonObject createServerLinkObject(String id, Component displayName, String url) {
271+
JsonObject serverLinkObject = new JsonObject();
272+
serverLinkObject.addProperty("id", id);
273+
serverLinkObject.addProperty("display_name_adventure_json_lines", AdventureUtil.toJson(displayName));
274+
serverLinkObject.addProperty("url", url);
275+
return serverLinkObject;
276+
}
277+
```
278+
279+
### Remove Server Link
280+
281+
```java
282+
public void removeServerLinkExample(Player viewer) {
283+
JsonArray serverLinkIds = Lists.newArrayList("website", "support", "status")
284+
.stream().collect(JsonArray::new, JsonArray::add, JsonArray::addAll);
285+
286+
JsonObject message = new JsonObject();
287+
message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.RemoveServerLinkMessage");
288+
message.add("server_link_ids", serverLinkIds);
289+
290+
JsonPacketUtil.sendPacket(viewer, message);
291+
}
292+
```
293+
294+
### Resetting all Server Links
295+
296+
```java
297+
public void resetServerLinksExample(Player viewer) {
298+
JsonObject message = new JsonObject();
299+
message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.ResetServerLinksMessage");
300+
301+
JsonPacketUtil.sendPacket(viewer, message);
302+
}
303+
```
304+
305+
</Tab>
306+
307+
</Tabs>

0 commit comments

Comments
 (0)