Apollo
Developers
Modules
Server Link

Server Link Module

Overview

The server link module provides enhancements and additional support to the vanilla Minecraft server link feature. Which allows you to display important links to players in a dedicated UI.

  • Adds improvements to the existing server link features
    • Ability to set a custom image title resource for the server links menu
    • Ability to use chat colors and formats for button names
  • Backported legacy version support for all versions below 1.21

Server Link Module Example

Integration

Sample Code

Explore each integration by cycling through each tab, to find the best fit for your requirements and needs.

Override the Server Link Menu resource

public void overrideServerLinkResourceExample(Player viewer) {
    Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
 
    apolloPlayerOpt.ifPresent(apolloPlayer -> {
        this.serverLinkModule.overrideServerLinkResource(apolloPlayer, ResourceLocationIcon.builder()
            .resourceLocation("lunar:logo/logo-100x100.png")
            .build());
    });
}

Reset the Server Link Menu resource

public void resetServerLinkResourceExample(Player viewer) {
    Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
    apolloPlayerOpt.ifPresent(this.serverLinkModule::resetServerLinkResource);
}

Add Server Link

public void addServerLinkExample(Player viewer) {
    Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
 
    apolloPlayerOpt.ifPresent(apolloPlayer -> {
        this.serverLinkModule.addServerLink(apolloPlayer, Lists.newArrayList(
            ServerLink.builder()
                .id("website")
                .displayName(Component.text("Website", NamedTextColor.LIGHT_PURPLE))
                .url("https://www.lunarclient.com/")
                .build(),
            ServerLink.builder()
                .id("support")
                .displayName(Component.text("Support", NamedTextColor.AQUA))
                .url("https://support.lunarclient.com/")
                .build(),
            ServerLink.builder()
                .id("status")
                .displayName(Component.text("Status", NamedTextColor.RED))
                .url("https://status.lunarclient.com/")
                .build()
        ));
    });
}

Remove Server Link

public void removeServerLinkExample(Player viewer) {
    Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
 
    apolloPlayerOpt.ifPresent(apolloPlayer -> {
        this.serverLinkModule.removeServerLink(apolloPlayer, Lists.newArrayList(
            "website", "support", "status"
        ));
    });
}

Resetting all Server Links

public void resetServerLinksExample(Player viewer) {
    Optional<ApolloPlayer> apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId());
    apolloPlayerOpt.ifPresent(this.serverLinkModule::resetServerLinks);
}

ServerLink Options

.id(String) sets a unique identifier for the server link.

.id("website")

.displayName(Component) is the public-facing name of the server link. It should contain an Adventure Component. See the chat components (opens in a new tab) page for more.

.displayName(Component.text("Website", NamedTextColor.LIGHT_PURPLE))

.url(String) should be a string that specifies the destination URL that will be opened from the server link.

.url("https://www.lunarclient.com/")