From 683034dd7a602c70809934c6af3b56356c704bca Mon Sep 17 00:00:00 2001 From: ItsNature Date: Sat, 21 Mar 2026 00:48:55 +0100 Subject: [PATCH 01/11] Add base ServerLinkModule --- .../module/serverlink/ServerLinkModule.java | 42 +++++++++++++++++++ .../serverlink/ServerLinkModuleImpl.java | 33 +++++++++++++++ .../lightweight/protobuf/getting-started.mdx | 6 +-- gradle/libs.versions.toml | 2 +- .../apollo/ApolloBukkitPlatform.java | 3 ++ .../apollo/ApolloBungeePlatform.java | 3 ++ .../apollo/ApolloFoliaPlatform.java | 3 ++ .../apollo/ApolloMinestomPlatform.java | 3 ++ .../apollo/ApolloVelocityPlatform.java | 3 ++ 9 files changed, 94 insertions(+), 4 deletions(-) create mode 100644 api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java create mode 100644 common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java diff --git a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java new file mode 100644 index 00000000..e8e4aebe --- /dev/null +++ b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java @@ -0,0 +1,42 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2023 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.module.serverlink; + +import com.lunarclient.apollo.module.ApolloModule; +import com.lunarclient.apollo.module.ModuleDefinition; +import org.jetbrains.annotations.ApiStatus; + +/** + * Represents the server links module. + * + *

This module provides support for the Server Links feature introduced in + * Minecraft 1.21.0, with compatibility extending down to version 1.7.

+ * + * @since 1.2.4 + */ +@ApiStatus.NonExtendable +@ModuleDefinition(id = "server_link", name = "Server Link") +public abstract class ServerLinkModule extends ApolloModule { + +} diff --git a/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java new file mode 100644 index 00000000..53c356e2 --- /dev/null +++ b/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java @@ -0,0 +1,33 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2023 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.module.serverlink; + +/** + * Provides the server link module. + * + * @since 1.2.4 + */ +public final class ServerLinkModuleImpl extends ServerLinkModule { + +} diff --git a/docs/developers/lightweight/protobuf/getting-started.mdx b/docs/developers/lightweight/protobuf/getting-started.mdx index 467c0db9..20935ead 100644 --- a/docs/developers/lightweight/protobuf/getting-started.mdx +++ b/docs/developers/lightweight/protobuf/getting-started.mdx @@ -26,7 +26,7 @@ Available fields for each message, including their types, are available on the B com.lunarclient apollo-protos - 0.0.6 + 0.0.7 ``` @@ -41,7 +41,7 @@ Available fields for each message, including their types, are available on the B } dependencies { - api 'com.lunarclient:apollo-protos:0.0.6' + api 'com.lunarclient:apollo-protos:0.0.7' } ``` @@ -55,7 +55,7 @@ Available fields for each message, including their types, are available on the B } dependencies { - api("com.lunarclient:apollo-protos:0.0.6") + api("com.lunarclient:apollo-protos:0.0.7") } ``` diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1a56e558..8be373c4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ geantyref = "1.3.11" idea = "1.1.7" jetbrains = "24.0.1" lombok = "1.18.38" -protobuf = "0.0.6" +protobuf = "0.0.7" gson = "2.10.1" shadow = "8.1.1" spotless = "6.13.0" diff --git a/platform/bukkit/src/main/java/com/lunarclient/apollo/ApolloBukkitPlatform.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/ApolloBukkitPlatform.java index fd591868..8965682c 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/ApolloBukkitPlatform.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/ApolloBukkitPlatform.java @@ -68,6 +68,8 @@ import com.lunarclient.apollo.module.richpresence.RichPresenceModule; import com.lunarclient.apollo.module.richpresence.RichPresenceModuleImpl; import com.lunarclient.apollo.module.saturation.SaturationModule; +import com.lunarclient.apollo.module.serverlink.ServerLinkModule; +import com.lunarclient.apollo.module.serverlink.ServerLinkModuleImpl; import com.lunarclient.apollo.module.serverrule.ServerRuleModule; import com.lunarclient.apollo.module.staffmod.StaffModModule; import com.lunarclient.apollo.module.staffmod.StaffModModuleImpl; @@ -152,6 +154,7 @@ public void onEnable() { .addModule(PacketEnrichmentModule.class, new PacketEnrichmentImpl()) .addModule(PayNowModule.class, new PayNowModuleImpl()) .addModule(RichPresenceModule.class, new RichPresenceModuleImpl()) + .addModule(ServerLinkModule.class, new ServerLinkModuleImpl()) .addModule(SaturationModule.class) .addModule(ServerRuleModule.class) .addModule(StaffModModule.class, new StaffModModuleImpl()) diff --git a/platform/bungee/src/main/java/com/lunarclient/apollo/ApolloBungeePlatform.java b/platform/bungee/src/main/java/com/lunarclient/apollo/ApolloBungeePlatform.java index 24d75c18..7e958dc0 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/ApolloBungeePlatform.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/ApolloBungeePlatform.java @@ -58,6 +58,8 @@ import com.lunarclient.apollo.module.paynow.PayNowModuleImpl; import com.lunarclient.apollo.module.richpresence.RichPresenceModule; import com.lunarclient.apollo.module.richpresence.RichPresenceModuleImpl; +import com.lunarclient.apollo.module.serverlink.ServerLinkModule; +import com.lunarclient.apollo.module.serverlink.ServerLinkModuleImpl; import com.lunarclient.apollo.module.serverrule.ServerRuleModule; import com.lunarclient.apollo.module.staffmod.StaffModModule; import com.lunarclient.apollo.module.staffmod.StaffModModuleImpl; @@ -131,6 +133,7 @@ public void onEnable() { .addModule(NotificationModule.class, new NotificationModuleImpl()) .addModule(PayNowModule.class, new PayNowModuleImpl()) .addModule(RichPresenceModule.class, new RichPresenceModuleImpl()) + .addModule(ServerLinkModule.class, new ServerLinkModuleImpl()) .addModule(ServerRuleModule.class) .addModule(StaffModModule.class, new StaffModModuleImpl()) .addModule(StopwatchModule.class, new StopwatchModuleImpl()) diff --git a/platform/folia/src/main/java/com/lunarclient/apollo/ApolloFoliaPlatform.java b/platform/folia/src/main/java/com/lunarclient/apollo/ApolloFoliaPlatform.java index dca57648..e28530da 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/ApolloFoliaPlatform.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/ApolloFoliaPlatform.java @@ -64,6 +64,8 @@ import com.lunarclient.apollo.module.paynow.PayNowModuleImpl; import com.lunarclient.apollo.module.richpresence.RichPresenceModule; import com.lunarclient.apollo.module.richpresence.RichPresenceModuleImpl; +import com.lunarclient.apollo.module.serverlink.ServerLinkModule; +import com.lunarclient.apollo.module.serverlink.ServerLinkModuleImpl; import com.lunarclient.apollo.module.serverrule.ServerRuleModule; import com.lunarclient.apollo.module.staffmod.StaffModModule; import com.lunarclient.apollo.module.staffmod.StaffModModuleImpl; @@ -140,6 +142,7 @@ public void onEnable() { .addModule(PacketEnrichmentModule.class, new PacketEnrichmentImpl()) .addModule(PayNowModule.class, new PayNowModuleImpl()) .addModule(RichPresenceModule.class, new RichPresenceModuleImpl()) + .addModule(ServerLinkModule.class, new ServerLinkModuleImpl()) .addModule(ServerRuleModule.class) .addModule(StaffModModule.class, new StaffModModuleImpl()) .addModule(StopwatchModule.class, new StopwatchModuleImpl()) diff --git a/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomPlatform.java b/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomPlatform.java index fd1357a8..559d4e5c 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomPlatform.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomPlatform.java @@ -67,6 +67,8 @@ import com.lunarclient.apollo.module.richpresence.RichPresenceModule; import com.lunarclient.apollo.module.richpresence.RichPresenceModuleImpl; import com.lunarclient.apollo.module.saturation.SaturationModule; +import com.lunarclient.apollo.module.serverlink.ServerLinkModule; +import com.lunarclient.apollo.module.serverlink.ServerLinkModuleImpl; import com.lunarclient.apollo.module.serverrule.ServerRuleModule; import com.lunarclient.apollo.module.staffmod.StaffModModule; import com.lunarclient.apollo.module.staffmod.StaffModModuleImpl; @@ -174,6 +176,7 @@ public static void init(ApolloMinestomProperties properties) { .addModule(PacketEnrichmentModule.class, new PacketEnrichmentImpl()) .addModule(PayNowModule.class, new PayNowModuleImpl()) .addModule(RichPresenceModule.class, new RichPresenceModuleImpl()) + .addModule(ServerLinkModule.class, new ServerLinkModuleImpl()) .addModule(SaturationModule.class) .addModule(ServerRuleModule.class) .addModule(StaffModModule.class, new StaffModModuleImpl()) diff --git a/platform/velocity/src/main/java/com/lunarclient/apollo/ApolloVelocityPlatform.java b/platform/velocity/src/main/java/com/lunarclient/apollo/ApolloVelocityPlatform.java index e975fae0..1b8501ed 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/ApolloVelocityPlatform.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/ApolloVelocityPlatform.java @@ -58,6 +58,8 @@ import com.lunarclient.apollo.module.paynow.PayNowModuleImpl; import com.lunarclient.apollo.module.richpresence.RichPresenceModule; import com.lunarclient.apollo.module.richpresence.RichPresenceModuleImpl; +import com.lunarclient.apollo.module.serverlink.ServerLinkModule; +import com.lunarclient.apollo.module.serverlink.ServerLinkModuleImpl; import com.lunarclient.apollo.module.serverrule.ServerRuleModule; import com.lunarclient.apollo.module.staffmod.StaffModModule; import com.lunarclient.apollo.module.staffmod.StaffModModuleImpl; @@ -196,6 +198,7 @@ public void onProxyInitialization(ProxyInitializeEvent event) { .addModule(NotificationModule.class, new NotificationModuleImpl()) .addModule(PayNowModule.class, new PayNowModuleImpl()) .addModule(RichPresenceModule.class, new RichPresenceModuleImpl()) + .addModule(ServerLinkModule.class, new ServerLinkModuleImpl()) .addModule(ServerRuleModule.class) .addModule(StaffModModule.class, new StaffModModuleImpl()) .addModule(StopwatchModule.class, new StopwatchModuleImpl()) From 86da3c1606aa60590f30eb7946fd6f551a139967 Mon Sep 17 00:00:00 2001 From: ItsNature Date: Wed, 25 Mar 2026 02:35:55 +0100 Subject: [PATCH 02/11] server links api (WIP) --- .../common/icon/ResourceLocationIcon.java | 48 +++++ .../apollo/module/serverlink/ServerLink.java | 63 ++++++ .../module/serverlink/ServerLinkModule.java | 88 ++++++++ .../serverlink/ServerLinkModuleImpl.java | 81 +++++++ .../apollo/network/NetworkTypes.java | 202 +++++++++++++----- .../lightweight/protobuf/getting-started.mdx | 6 +- docs/developers/utilities/icons.mdx | 34 +++ .../example/api/ApolloApiExamplePlatform.java | 2 + .../api/module/ServerLinkApiExample.java | 101 +++++++++ .../apollo/example/api/util/IconExample.java | 7 + .../bukkit/api/src/main/resources/plugin.yml | 2 + .../apollo/example/ApolloExamplePlugin.java | 4 + .../example/command/ServerLinkCommand.java | 91 ++++++++ .../module/impl/ServerLinkExample.java | 41 ++++ gradle/libs.versions.toml | 2 +- 15 files changed, 714 insertions(+), 58 deletions(-) create mode 100644 api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java create mode 100644 api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java create mode 100644 example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java create mode 100644 example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerLinkCommand.java create mode 100644 example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerLinkExample.java diff --git a/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java b/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java new file mode 100644 index 00000000..14a0e823 --- /dev/null +++ b/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java @@ -0,0 +1,48 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2023 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.common.icon; + +import lombok.Builder; +import lombok.Getter; + +/** + * Represents a resource location icon. + * + * @since 1.2.4 + */ +@Getter +@Builder +public final class ResourceLocationIcon extends Icon { + + /** + * Returns the icon {@link String} resource location. + * + *

Represents a path to an icon that will appear for the player.

+ * + * @return the icon resource location + * @since 1.2.4 + */ + String resourceLocation; + +} diff --git a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java new file mode 100644 index 00000000..4f07f1a2 --- /dev/null +++ b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java @@ -0,0 +1,63 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2023 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.module.serverlink; + +import lombok.Builder; +import lombok.Getter; +import net.kyori.adventure.text.Component; + +/** + * Represents a link entry displayed in the Server Links menu. + * + * @since 1.2.4 + */ +@Getter +@Builder +public final class ServerLink { + + /** + * Returns the server link {@link String} id. + * + * @return the server link id + * @since 1.2.4 + */ + String id; + + /** + * Returns the server link {@link Component} display name. + * + * @return the server link display name + * @since 1.2.4 + */ + Component displayName; + + /** + * Returns the server link {@link String} url. + * + * @return the server link url + * @since 1.2.4 + */ + String url; + +} diff --git a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java index e8e4aebe..b990e6e1 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java @@ -23,8 +23,11 @@ */ package com.lunarclient.apollo.module.serverlink; +import com.lunarclient.apollo.common.icon.ResourceLocationIcon; import com.lunarclient.apollo.module.ApolloModule; import com.lunarclient.apollo.module.ModuleDefinition; +import com.lunarclient.apollo.recipients.Recipients; +import java.util.List; import org.jetbrains.annotations.ApiStatus; /** @@ -39,4 +42,89 @@ @ModuleDefinition(id = "server_link", name = "Server Link") public abstract class ServerLinkModule extends ApolloModule { + /** + * Overrides the server link menu title image for the {@link Recipients}. + * + *

The provided {@link ResourceLocationIcon} will be displayed in place of the default + * menu title.

+ * + *

The resource location must reference a valid client-side asset using the standard + * namespace format:

+ * + *
+     * minecraft:textures/item/apple.png
+     * lunar:logo/logo-100x100.png
+     * 
+ * + *

For optimal results, a square image (e.g. 128x128) is recommended.

+ * + * @param recipients the recipients that are receiving the packet + * @param icon the resource location icon + * @since 1.2.4 + */ + public abstract void overrideServerLinkResource(Recipients recipients, ResourceLocationIcon icon); + + /** + * Resets the server link menu title image for the {@link Recipients}. + * + *

Reverts back to displaying the default menu title.

+ * + * @param recipients the recipients that are receiving the packet + * @since 1.2.4 + */ + public abstract void resetServerLinkResource(Recipients recipients); + + /** + * Adds or updates the {@link ServerLink} for the {@link Recipients}. + * + * @param recipients the recipients that are receiving the packet + * @param serverLink the server link + * @since 1.2.4 + */ + public abstract void addServerLink(Recipients recipients, ServerLink serverLink); + + /** + * Adds or updates the {@link ServerLink}s for the {@link Recipients}. + * + * @param recipients the recipients that are receiving the packet + * @param serverLinks the server links + * @since 1.2.4 + */ + public abstract void addServerLink(Recipients recipients, List serverLinks); + + /** + * Removes the {@link ServerLink} from the {@link Recipients}. + * + * @param recipients the recipients that are receiving the packet + * @param serverLinkId the server link id + * @since 1.2.4 + */ + public abstract void removeServerLink(Recipients recipients, String serverLinkId); + + /** + * Removes the {@link ServerLink} from the {@link Recipients}. + * + * @param recipients the recipients that are receiving the packet + * @param serverLink the server link + * @since 1.2.4 + */ + public abstract void removeServerLink(Recipients recipients, ServerLink serverLink); + + /** + * Removes the {@link ServerLink}s from the {@link Recipients}. + * + * @param recipients the recipients that are receiving the packet + * @param serverLinkIds the server link ids + * @since 1.2.4 + */ + public abstract void removeServerLink(Recipients recipients, List serverLinkIds); + + /** + * Resets all {@link ServerLink}s for the {@link Recipients}. + * + * @param recipients the recipients that are receiving the packet + * @since 1.2.4 + */ + public abstract void resetServerLinks(Recipients recipients); + } diff --git a/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java index 53c356e2..e1eb81c6 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java @@ -23,6 +23,21 @@ */ package com.lunarclient.apollo.module.serverlink; +import com.lunarclient.apollo.common.ApolloComponent; +import com.lunarclient.apollo.common.icon.ResourceLocationIcon; +import com.lunarclient.apollo.network.NetworkTypes; +import com.lunarclient.apollo.player.AbstractApolloPlayer; +import com.lunarclient.apollo.recipients.Recipients; +import com.lunarclient.apollo.serverlink.v1.AddServerLinkMessage; +import com.lunarclient.apollo.serverlink.v1.OverrideServerLinkResourceMessage; +import com.lunarclient.apollo.serverlink.v1.RemoveServerLinkMessage; +import com.lunarclient.apollo.serverlink.v1.ResetServerLinkResourceMessage; +import com.lunarclient.apollo.serverlink.v1.ResetServerLinksMessage; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; +import lombok.NonNull; + /** * Provides the server link module. * @@ -30,4 +45,70 @@ */ public final class ServerLinkModuleImpl extends ServerLinkModule { + @Override + public void overrideServerLinkResource(@NonNull Recipients recipients, @NonNull ResourceLocationIcon icon) { + OverrideServerLinkResourceMessage message = OverrideServerLinkResourceMessage.newBuilder() + .setIcon(NetworkTypes.toProtobuf(icon)) + .build(); + + recipients.forEach(player -> ((AbstractApolloPlayer) player).sendPacket(message)); + } + + @Override + public void resetServerLinkResource(@NonNull Recipients recipients) { + ResetServerLinkResourceMessage message = ResetServerLinkResourceMessage.getDefaultInstance(); + recipients.forEach(player -> ((AbstractApolloPlayer) player).sendPacket(message)); + } + + @Override + public void addServerLink(@NonNull Recipients recipients, @NonNull ServerLink serverLink) { + this.addServerLink(recipients, Collections.singletonList(serverLink)); + } + + @Override + public void addServerLink(@NonNull Recipients recipients, @NonNull List serverLinks) { + List serverLinksProto = serverLinks.stream() + .map(this::toProtobuf) + .collect(Collectors.toList()); + + AddServerLinkMessage message = AddServerLinkMessage.newBuilder() + .addAllServerLinks(serverLinksProto) + .build(); + + recipients.forEach(player -> ((AbstractApolloPlayer) player).sendPacket(message)); + } + + @Override + public void removeServerLink(@NonNull Recipients recipients, @NonNull String serverLinkId) { + this.removeServerLink(recipients, Collections.singletonList(serverLinkId)); + } + + @Override + public void removeServerLink(@NonNull Recipients recipients, @NonNull ServerLink serverLink) { + this.removeServerLink(recipients, Collections.singletonList(serverLink.getId())); + } + + @Override + public void removeServerLink(@NonNull Recipients recipients, @NonNull List serverLinkIds) { + RemoveServerLinkMessage message = RemoveServerLinkMessage.newBuilder() + .addAllServerLinkIds(serverLinkIds) + .build(); + + recipients.forEach(player -> ((AbstractApolloPlayer) player).sendPacket(message)); + } + + @Override + public void resetServerLinks(@NonNull Recipients recipients) { + ResetServerLinksMessage message = ResetServerLinksMessage.getDefaultInstance(); + recipients.forEach(player -> ((AbstractApolloPlayer) player).sendPacket(message)); + } + + private com.lunarclient.apollo.serverlink.v1.ServerLink toProtobuf(ServerLink serverLink) { + return com.lunarclient.apollo.serverlink.v1.ServerLink.newBuilder() + .setId(serverLink.getId()) + .setDisplayNameAdventureJsonLines(ApolloComponent.toJson(serverLink.getDisplayName())) + .setUrl(serverLink.getUrl()) + .build(); + } + } diff --git a/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java b/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java index 0ecf1dcd..3fd835e0 100644 --- a/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java +++ b/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java @@ -30,6 +30,7 @@ import com.lunarclient.apollo.common.icon.AdvancedResourceLocationIcon; import com.lunarclient.apollo.common.icon.Icon; import com.lunarclient.apollo.common.icon.ItemStackIcon; +import com.lunarclient.apollo.common.icon.ResourceLocationIcon; import com.lunarclient.apollo.common.icon.SimpleResourceLocationIcon; import com.lunarclient.apollo.common.location.ApolloBlockLocation; import com.lunarclient.apollo.common.location.ApolloLocation; @@ -484,37 +485,15 @@ public static com.lunarclient.apollo.common.v1.Icon toProtobuf(Icon icon) { com.lunarclient.apollo.common.v1.Icon.Builder builder = com.lunarclient.apollo.common.v1.Icon.newBuilder(); if (icon instanceof ItemStackIcon) { - ItemStackIcon item = (ItemStackIcon) icon; - String itemName = item.getItemName(); - - com.lunarclient.apollo.common.v1.ItemStackIcon.Builder itemBuilder = com.lunarclient.apollo.common.v1.ItemStackIcon.newBuilder() - .setItemId(item.getItemId()) - .setCustomModelData(item.getCustomModelData()); - - if (itemName != null) { - itemBuilder.setItemName(itemName); - } - - builder.setItemStack(itemBuilder.build()); + builder.setItemStack(NetworkTypes.toProtobuf((ItemStackIcon) icon)); + } else if (icon instanceof ResourceLocationIcon) { + builder.setResourceLocation(NetworkTypes.toProtobuf((ResourceLocationIcon) icon)); } else if (icon instanceof SimpleResourceLocationIcon) { - SimpleResourceLocationIcon simple = (SimpleResourceLocationIcon) icon; - - builder.setSimpleResourceLocation(com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon.newBuilder() - .setResourceLocation(simple.getResourceLocation()) - .setSize(checkPositive(simple.getSize(), "SimpleResourceLocationIcon#size")) - .build()); + builder.setSimpleResourceLocation(NetworkTypes.toProtobuf((SimpleResourceLocationIcon) icon)); } else if (icon instanceof AdvancedResourceLocationIcon) { - AdvancedResourceLocationIcon advanced = (AdvancedResourceLocationIcon) icon; - - builder.setAdvancedResourceLocation(com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon.newBuilder() - .setResourceLocation(advanced.getResourceLocation()) - .setWidth(checkPositive(advanced.getWidth(), "AdvancedResourceLocationIcon#width")) - .setHeight(checkPositive(advanced.getHeight(), "AdvancedResourceLocationIcon#height")) - .setMinU(checkRange(advanced.getMinU(), 0, 1, "AdvancedResourceLocationIcon#minU")) - .setMaxU(checkRange(advanced.getMaxU(), 0, 1, "AdvancedResourceLocationIcon#maxU")) - .setMinV(checkRange(advanced.getMinV(), 0, 1, "AdvancedResourceLocationIcon#minV")) - .setMaxV(checkRange(advanced.getMaxV(), 0, 1, "AdvancedResourceLocationIcon#maxV")) - .build()); + builder.setAdvancedResourceLocation(NetworkTypes.toProtobuf((AdvancedResourceLocationIcon) icon)); + } else { + throw new IllegalArgumentException("Unknown icon type: " + icon.getClass().getName()); } return builder.build(); @@ -530,35 +509,150 @@ public static com.lunarclient.apollo.common.v1.Icon toProtobuf(Icon icon) { */ public static Icon fromProtobuf(com.lunarclient.apollo.common.v1.Icon icon) { if (icon.hasItemStack()) { - com.lunarclient.apollo.common.v1.ItemStackIcon item = icon.getItemStack(); - - return ItemStackIcon.builder() - .itemName(item.getItemName()) - .itemId(item.getItemId()) - .customModelData(item.getCustomModelData()) - .build(); + return NetworkTypes.fromProtobuf(icon.getItemStack()); + } else if (icon.hasResourceLocation()) { + return NetworkTypes.fromProtobuf(icon.getResourceLocation()); } else if (icon.hasSimpleResourceLocation()) { - com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon simple = icon.getSimpleResourceLocation(); - - return SimpleResourceLocationIcon.builder() - .resourceLocation(simple.getResourceLocation()) - .size(simple.getSize()) - .build(); + return NetworkTypes.fromProtobuf(icon.getSimpleResourceLocation()); } else if (icon.hasAdvancedResourceLocation()) { - com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon advanced = icon.getAdvancedResourceLocation(); - - return AdvancedResourceLocationIcon.builder() - .resourceLocation(advanced.getResourceLocation()) - .width(advanced.getWidth()) - .height(advanced.getHeight()) - .minU(advanced.getMinU()) - .maxU(advanced.getMaxU()) - .minV(advanced.getMinV()) - .maxV(advanced.getMaxV()) - .build(); + return NetworkTypes.fromProtobuf(icon.getAdvancedResourceLocation()); } - return null; + throw new IllegalArgumentException("Unknown icon proto type"); + } + + /** + * Converts an {@link ItemStackIcon} to a + * {@link com.lunarclient.apollo.common.v1.ItemStackIcon} proto message. + * + * @param icon the item stack icon + * @return the proto item stack icon message + * @since 1.2.4 + */ + public static com.lunarclient.apollo.common.v1.ItemStackIcon toProtobuf(ItemStackIcon icon) { + com.lunarclient.apollo.common.v1.ItemStackIcon.Builder builder = com.lunarclient.apollo.common.v1.ItemStackIcon.newBuilder() + .setItemId(icon.getItemId()) + .setCustomModelData(icon.getCustomModelData()); + + if (icon.getItemName() != null) { + builder.setItemName(icon.getItemName()); + } + + return builder.build(); + } + + /** + * Converts a {@link com.lunarclient.apollo.common.v1.ItemStackIcon} + * proto message to an {@link ItemStackIcon}. + * + * @param icon the item stack icon message + * @return the item stack icon + * @since 1.2.4 + */ + public static ItemStackIcon fromProtobuf(com.lunarclient.apollo.common.v1.ItemStackIcon icon) { + return ItemStackIcon.builder() + .itemName(icon.getItemName()) + .itemId(icon.getItemId()) + .customModelData(icon.getCustomModelData()) + .build(); + } + + /** + * Converts a {@link ResourceLocationIcon} to a + * {@link com.lunarclient.apollo.common.v1.ResourceLocationIcon} proto message. + * + * @param icon the resource location icon + * @return the proto resource location icon message + * @since 1.2.4 + */ + public static com.lunarclient.apollo.common.v1.ResourceLocationIcon toProtobuf(ResourceLocationIcon icon) { + return com.lunarclient.apollo.common.v1.ResourceLocationIcon.newBuilder() + .setResourceLocation(icon.getResourceLocation()) + .build(); + } + + /** + * Converts a {@link com.lunarclient.apollo.common.v1.ResourceLocationIcon} + * proto message to a {@link ResourceLocationIcon}. + * + * @param icon the resource location icon message + * @return the resource location icon + * @since 1.2.4 + */ + public static ResourceLocationIcon fromProtobuf(com.lunarclient.apollo.common.v1.ResourceLocationIcon icon) { + return ResourceLocationIcon.builder() + .resourceLocation(icon.getResourceLocation()) + .build(); + } + + /** + * Converts a {@link SimpleResourceLocationIcon} to a + * {@link com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon} proto message. + * + * @param icon the simple resource location icon + * @return the proto simple resource location icon message + * @since 1.2.4 + */ + public static com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon toProtobuf(SimpleResourceLocationIcon icon) { + return com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon.newBuilder() + .setResourceLocation(icon.getResourceLocation()) + .setSize(checkPositive(icon.getSize(), "SimpleResourceLocationIcon#size")) + .build(); + } + + /** + * Converts a {@link com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon} + * proto message to a {@link SimpleResourceLocationIcon}. + * + * @param icon the simple resource location icon message + * @return the simple resource location icon + * @since 1.2.4 + */ + public static SimpleResourceLocationIcon fromProtobuf(com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon icon) { + return SimpleResourceLocationIcon.builder() + .resourceLocation(icon.getResourceLocation()) + .size(icon.getSize()) + .build(); + } + + /** + * Converts an {@link AdvancedResourceLocationIcon} to an + * {@link com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon} proto message. + * + * @param icon the advanced resource location icon + * @return the proto advanced resource location icon message + * @since 1.2.4 + */ + public static com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon toProtobuf(AdvancedResourceLocationIcon icon) { + return com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon.newBuilder() + .setResourceLocation(icon.getResourceLocation()) + .setWidth(checkPositive(icon.getWidth(), "AdvancedResourceLocationIcon#width")) + .setHeight(checkPositive(icon.getHeight(), "AdvancedResourceLocationIcon#height")) + .setMinU(checkRange(icon.getMinU(), 0, 1, "AdvancedResourceLocationIcon#minU")) + .setMaxU(checkRange(icon.getMaxU(), 0, 1, "AdvancedResourceLocationIcon#maxU")) + .setMinV(checkRange(icon.getMinV(), 0, 1, "AdvancedResourceLocationIcon#minV")) + .setMaxV(checkRange(icon.getMaxV(), 0, 1, "AdvancedResourceLocationIcon#maxV")) + .build(); + } + + /** + * Converts an {@link com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon} + * proto message to an {@link AdvancedResourceLocationIcon}. + * + * @param icon the advanced resource location icon message + * @return the advanced resource location icon + * @since 1.2.4 + */ + public static AdvancedResourceLocationIcon fromProtobuf(com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon icon) { + return AdvancedResourceLocationIcon.builder() + .resourceLocation(icon.getResourceLocation()) + .width(icon.getWidth()) + .height(icon.getHeight()) + .minU(icon.getMinU()) + .maxU(icon.getMaxU()) + .minV(icon.getMinV()) + .maxV(icon.getMaxV()) + .build(); } private NetworkTypes() { diff --git a/docs/developers/lightweight/protobuf/getting-started.mdx b/docs/developers/lightweight/protobuf/getting-started.mdx index 20935ead..b3ce0501 100644 --- a/docs/developers/lightweight/protobuf/getting-started.mdx +++ b/docs/developers/lightweight/protobuf/getting-started.mdx @@ -26,7 +26,7 @@ Available fields for each message, including their types, are available on the B com.lunarclient apollo-protos - 0.0.7 + 0.0.8 ``` @@ -41,7 +41,7 @@ Available fields for each message, including their types, are available on the B } dependencies { - api 'com.lunarclient:apollo-protos:0.0.7' + api 'com.lunarclient:apollo-protos:0.0.8' } ``` @@ -55,7 +55,7 @@ Available fields for each message, including their types, are available on the B } dependencies { - api("com.lunarclient:apollo-protos:0.0.7") + api("com.lunarclient:apollo-protos:0.0.8") } ``` diff --git a/docs/developers/utilities/icons.mdx b/docs/developers/utilities/icons.mdx index 4c01099f..2e61dcf8 100644 --- a/docs/developers/utilities/icons.mdx +++ b/docs/developers/utilities/icons.mdx @@ -61,6 +61,40 @@ public static ItemStackIcon itemStackNameIconExample() { } ``` +## `ResourceLocationIcon` Builder + +If you're using a custom resource pack and want to create an icon, you can use the `ResourceLocationIcon` builder. + + + The supplied resource location should point to a texture in the resource pack, or the path to an `svg` file in the resource pack. + + +```java +public class ResourceLocationIcon extends Icon { + + /** + * Returns the icon {@link String} resource location. + * + *

Represents a path to an icon that will appear for the player.

+ * + * @return the icon resource location + * @since 1.2.4 + */ + String resourceLocation; + +} +``` + +### Sample Code + +```java +public static ResourceLocationIcon resourceLocationExample() { + return ResourceLocationIcon.builder() + .resourceLocation("minecraft:textures/item/apple.png") // Resource path location + .build(); +} +``` + ## `SimpleResourceLocation` Builder If you're using a custom resource pack and want to create an icon, you can use the `SimpleResourceLocation` builder. diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/ApolloApiExamplePlatform.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/ApolloApiExamplePlatform.java index 6fc763dc..8575bc78 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/ApolloApiExamplePlatform.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/ApolloApiExamplePlatform.java @@ -47,6 +47,7 @@ import com.lunarclient.apollo.example.api.module.NotificationApiExample; import com.lunarclient.apollo.example.api.module.PayNowApiExample; import com.lunarclient.apollo.example.api.module.RichPresenceApiExample; +import com.lunarclient.apollo.example.api.module.ServerLinkApiExample; import com.lunarclient.apollo.example.api.module.ServerRuleApiExample; import com.lunarclient.apollo.example.api.module.StaffModApiExample; import com.lunarclient.apollo.example.api.module.StopwatchApiExample; @@ -97,6 +98,7 @@ public void registerModuleExamples() { this.setNotificationExample(new NotificationApiExample()); this.setPayNowExample(new PayNowApiExample()); this.setRichPresenceExample(new RichPresenceApiExample()); + this.setServerLinkExample(new ServerLinkApiExample()); this.setServerRuleExample(new ServerRuleApiExample()); this.setStaffModExample(new StaffModApiExample()); this.setStopwatchExample(new StopwatchApiExample()); diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java new file mode 100644 index 00000000..94ec391f --- /dev/null +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java @@ -0,0 +1,101 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2023 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.example.api.module; + +import com.google.common.collect.Lists; +import com.lunarclient.apollo.Apollo; +import com.lunarclient.apollo.common.icon.ResourceLocationIcon; +import com.lunarclient.apollo.example.module.impl.ServerLinkExample; +import com.lunarclient.apollo.module.serverlink.ServerLink; +import com.lunarclient.apollo.module.serverlink.ServerLinkModule; +import com.lunarclient.apollo.player.ApolloPlayer; +import java.util.Optional; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import org.bukkit.entity.Player; + +public class ServerLinkApiExample extends ServerLinkExample { + + private final ServerLinkModule serverLinkModule = Apollo.getModuleManager().getModule(ServerLinkModule.class); + + @Override + public void overrideServerLinkResourceExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + + apolloPlayerOpt.ifPresent(apolloPlayer -> { + this.serverLinkModule.overrideServerLinkResource(apolloPlayer, ResourceLocationIcon.builder() + .resourceLocation("lunar:logo/logo-100x100.png") + .build()); + }); + } + + @Override + public void resetServerLinkResourceExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + apolloPlayerOpt.ifPresent(this.serverLinkModule::resetServerLinkResource); + } + + @Override + public void addServerLinkExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + + apolloPlayerOpt.ifPresent(apolloPlayer -> { + this.serverLinkModule.addServerLink(apolloPlayer, Lists.newArrayList( + ServerLink.builder() + .url("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() + )); + }); + } + + @Override + public void removeServerLinkExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + + apolloPlayerOpt.ifPresent(apolloPlayer -> { + this.serverLinkModule.removeServerLink(apolloPlayer, Lists.newArrayList( + "website", "support", "status" + )); + }); + } + + @Override + public void resetServerLinksExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + apolloPlayerOpt.ifPresent(this.serverLinkModule::resetServerLinks); + } + +} diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/IconExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/IconExample.java index ebd6f896..426b63d1 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/IconExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/IconExample.java @@ -25,6 +25,7 @@ import com.lunarclient.apollo.common.icon.AdvancedResourceLocationIcon; import com.lunarclient.apollo.common.icon.ItemStackIcon; +import com.lunarclient.apollo.common.icon.ResourceLocationIcon; import com.lunarclient.apollo.common.icon.SimpleResourceLocationIcon; import org.bukkit.Material; @@ -42,6 +43,12 @@ public static ItemStackIcon itemStackNameIconExample() { .build(); } + public static ResourceLocationIcon resourceLocationExample() { + return ResourceLocationIcon.builder() + .resourceLocation("minecraft:textures/item/apple.png") // Resource path location + .build(); + } + public static SimpleResourceLocationIcon simpleResourceLocationIconExample() { return SimpleResourceLocationIcon.builder() .resourceLocation("icons/server-logo.png") // Resource path location diff --git a/example/bukkit/api/src/main/resources/plugin.yml b/example/bukkit/api/src/main/resources/plugin.yml index fbe960bb..042f5363 100644 --- a/example/bukkit/api/src/main/resources/plugin.yml +++ b/example/bukkit/api/src/main/resources/plugin.yml @@ -49,6 +49,8 @@ commands: description: "Pay Now!" richpresence: description: "Rich Presence!" + serverlink: + description: "Server Links!" saturation: description: "Saturation!" serverrule: diff --git a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/ApolloExamplePlugin.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/ApolloExamplePlugin.java index f69da42e..81d28966 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/ApolloExamplePlugin.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/ApolloExamplePlugin.java @@ -43,6 +43,7 @@ import com.lunarclient.apollo.example.command.PayNowCommand; import com.lunarclient.apollo.example.command.RichPresenceCommand; import com.lunarclient.apollo.example.command.SaturationCommand; +import com.lunarclient.apollo.example.command.ServerLinkCommand; import com.lunarclient.apollo.example.command.ServerRuleCommand; import com.lunarclient.apollo.example.command.StaffModCommand; import com.lunarclient.apollo.example.command.StopwatchCommand; @@ -73,6 +74,7 @@ import com.lunarclient.apollo.example.module.impl.PayNowExample; import com.lunarclient.apollo.example.module.impl.RichPresenceExample; import com.lunarclient.apollo.example.module.impl.SaturationExample; +import com.lunarclient.apollo.example.module.impl.ServerLinkExample; import com.lunarclient.apollo.example.module.impl.ServerRuleExample; import com.lunarclient.apollo.example.module.impl.StaffModExample; import com.lunarclient.apollo.example.module.impl.StopwatchExample; @@ -112,6 +114,7 @@ public abstract class ApolloExamplePlugin extends JavaPlugin { private NotificationExample notificationExample; private PayNowExample payNowExample; private RichPresenceExample richPresenceExample; + private ServerLinkExample serverLinkExample; private SaturationExample saturationExample; private ServerRuleExample serverRuleExample; private StaffModExample staffModExample; @@ -163,6 +166,7 @@ private void registerCommonCommands() { this.getCommand("paynow").setExecutor(new PayNowCommand()); this.getCommand("richpresence").setExecutor(new RichPresenceCommand()); this.getCommand("saturation").setExecutor(new SaturationCommand()); + this.getCommand("serverlink").setExecutor(new ServerLinkCommand()); this.getCommand("serverrule").setExecutor(new ServerRuleCommand()); this.getCommand("staffmod").setExecutor(new StaffModCommand()); this.getCommand("stopwatch").setExecutor(new StopwatchCommand()); diff --git a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerLinkCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerLinkCommand.java new file mode 100644 index 00000000..24f298b3 --- /dev/null +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerLinkCommand.java @@ -0,0 +1,91 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2023 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.example.command; + +import com.lunarclient.apollo.example.ApolloExamplePlugin; +import com.lunarclient.apollo.example.module.impl.ServerLinkExample; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +public class ServerLinkCommand implements CommandExecutor { + + @Override + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + if (!(sender instanceof Player)) { + sender.sendMessage("Player only!"); + return true; + } + + Player player = (Player) sender; + + if (args.length != 1) { + player.sendMessage("Usage: /serverlink "); + return true; + } + + ServerLinkExample serverLinkExample = ApolloExamplePlugin.getInstance().getServerLinkExample(); + + switch (args[0].toLowerCase()) { + case "overrideresource": { + serverLinkExample.overrideServerLinkResourceExample(player); + player.sendMessage("Overriding server link resource..."); + break; + } + + case "resetresource": { + serverLinkExample.resetServerLinkResourceExample(player); + player.sendMessage("Resetting server link resource..."); + break; + } + + case "addserverlink": { + serverLinkExample.addServerLinkExample(player); + player.sendMessage("Adding server link..."); + break; + } + + case "removeserverlink": { + serverLinkExample.removeServerLinkExample(player); + player.sendMessage("Removing server link..."); + break; + } + + case "resetserverlinks": { + serverLinkExample.resetServerLinksExample(player); + player.sendMessage("Resetting server links..."); + break; + } + + default: { + player.sendMessage("Usage: /serverlink "); + break; + } + } + + return true; + } +} diff --git a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerLinkExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerLinkExample.java new file mode 100644 index 00000000..39e8f1e1 --- /dev/null +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerLinkExample.java @@ -0,0 +1,41 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2023 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.example.module.impl; + +import com.lunarclient.apollo.example.module.ApolloModuleExample; +import org.bukkit.entity.Player; + +public abstract class ServerLinkExample extends ApolloModuleExample { + + public abstract void overrideServerLinkResourceExample(Player viewer); + + public abstract void resetServerLinkResourceExample(Player viewer); + + public abstract void addServerLinkExample(Player viewer); + + public abstract void removeServerLinkExample(Player viewer); + + public abstract void resetServerLinksExample(Player viewer); + +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8be373c4..08faec7e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,7 @@ geantyref = "1.3.11" idea = "1.1.7" jetbrains = "24.0.1" lombok = "1.18.38" -protobuf = "0.0.7" +protobuf = "0.0.8" gson = "2.10.1" shadow = "8.1.1" spotless = "6.13.0" From 2a0f034505efd9303d9298c580d6a57ec1caa130 Mon Sep 17 00:00:00 2001 From: ItsNature Date: Wed, 25 Mar 2026 05:07:33 +0100 Subject: [PATCH 03/11] add the json & proto examples --- .../lightweight/json/object-util.mdx | 10 ++ .../lightweight/protobuf/object-util.mdx | 22 ++-- docs/developers/modules/cooldown.mdx | 8 +- .../api/module/ServerLinkApiExample.java | 2 +- .../json/ApolloJsonExamplePlatform.java | 2 + .../json/module/ServerLinkJsonExample.java | 99 ++++++++++++++++ .../apollo/example/json/util/JsonUtil.java | 10 ++ .../proto/ApolloProtoExamplePlatform.java | 2 + .../proto/module/CooldownProtoExample.java | 9 +- .../proto/module/ServerLinkProtoExample.java | 106 ++++++++++++++++++ .../example/proto/util/ProtobufUtil.java | 24 ++-- 11 files changed, 268 insertions(+), 26 deletions(-) create mode 100644 example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerLinkJsonExample.java create mode 100644 example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerLinkProtoExample.java diff --git a/docs/developers/lightweight/json/object-util.mdx b/docs/developers/lightweight/json/object-util.mdx index 1a79ade8..de62365e 100644 --- a/docs/developers/lightweight/json/object-util.mdx +++ b/docs/developers/lightweight/json/object-util.mdx @@ -99,6 +99,16 @@ public static JsonObject createItemStackIconObject(@Nullable String itemName, in return iconObject; } +public static JsonObject createResourceLocationIconObject(@NotNull String resourceLocation) { + JsonObject resourceIconObject = new JsonObject(); + resourceIconObject.addProperty("resource_location", resourceLocation); + + JsonObject iconObject = new JsonObject(); + iconObject.add("resource_location", resourceIconObject); + + return iconObject; +} + public static JsonObject createSimpleResourceLocationIconObject(@NotNull String resourceLocation, int size) { JsonObject simpleIconObject = new JsonObject(); simpleIconObject.addProperty("resource_location", resourceLocation); diff --git a/docs/developers/lightweight/protobuf/object-util.mdx b/docs/developers/lightweight/protobuf/object-util.mdx index b4111e5b..bff0bbde 100644 --- a/docs/developers/lightweight/protobuf/object-util.mdx +++ b/docs/developers/lightweight/protobuf/object-util.mdx @@ -97,7 +97,7 @@ public static Location toBukkitPlayerLocation(JsonObject message) { Icon-related methods ```java -public static Icon createItemStackIconProto(@Nullable String itemName, int itemId, int customModelData) { +public static ItemStackIcon createItemStackIconProto(@Nullable String itemName, int itemId, int customModelData) { ItemStackIcon.Builder iconBuilder = ItemStackIcon.newBuilder() .setItemId(itemId) .setCustomModelData(customModelData); @@ -106,21 +106,25 @@ public static Icon createItemStackIconProto(@Nullable String itemName, int itemI iconBuilder.setItemName(itemName); } - return Icon.newBuilder().setItemStack(iconBuilder.build()).build(); + return iconBuilder.build(); } -public static Icon createSimpleResourceLocationIconProto(String resourceLocation, int size) { - SimpleResourceLocationIcon icon = SimpleResourceLocationIcon.newBuilder() +public static ResourceLocationIcon createResourceLocationIconProto(String resourceLocation) { + return ResourceLocationIcon.newBuilder() .setResourceLocation(resourceLocation) - .setSize(size) .build(); +} - return Icon.newBuilder().setSimpleResourceLocation(icon).build(); +public static SimpleResourceLocationIcon createSimpleResourceLocationIconProto(String resourceLocation, int size) { + return SimpleResourceLocationIcon.newBuilder() + .setResourceLocation(resourceLocation) + .setSize(size) + .build(); } -public static Icon createAdvancedResourceLocationIconProto(String resourceLocation, float width, float height, +public static AdvancedResourceLocationIcon createAdvancedResourceLocationIconProto(String resourceLocation, float width, float height, float minU, float maxU, float minV, float maxV) { - AdvancedResourceLocationIcon icon = AdvancedResourceLocationIcon.newBuilder() + return AdvancedResourceLocationIcon.newBuilder() .setResourceLocation(resourceLocation) .setWidth(width) .setHeight(height) @@ -129,7 +133,5 @@ public static Icon createAdvancedResourceLocationIconProto(String resourceLocati .setMinV(minV) .setMaxV(maxV) .build(); - - return Icon.newBuilder().setAdvancedResourceLocation(icon).build(); } ``` diff --git a/docs/developers/modules/cooldown.mdx b/docs/developers/modules/cooldown.mdx index 4264a826..d04c75f9 100644 --- a/docs/developers/modules/cooldown.mdx +++ b/docs/developers/modules/cooldown.mdx @@ -121,7 +121,9 @@ public void displayCooldownItemExample(Player viewer) { DisplayCooldownMessage message = DisplayCooldownMessage.newBuilder() .setName("enderpearl-cooldown") .setDuration(ProtobufUtil.createDurationProto(Duration.ofSeconds(15))) - .setIcon(ProtobufUtil.createItemStackIconProto("ENDER_PEARL", 0, 0)) + .setIcon(Icon.newBuilder() + .setItemStack(ProtobufUtil.createItemStackIconProto("ENDER_PEARL", 0, 0)) + .build()) .build(); ProtobufPacketUtil.sendPacket(viewer, message); @@ -135,7 +137,9 @@ public void displayCooldownResourceExample(Player viewer) { DisplayCooldownMessage message = DisplayCooldownMessage.newBuilder() .setName("lunar-cooldown") .setDuration(ProtobufUtil.createDurationProto(Duration.ofSeconds(15))) - .setIcon(ProtobufUtil.createSimpleResourceLocationIconProto("lunar:logo/logo-200x182.svg", 12)) + .setIcon(Icon.newBuilder() + .setSimpleResourceLocation(ProtobufUtil.createSimpleResourceLocationIconProto("lunar:logo/logo-200x182.svg", 12)) + .build()) .build(); ProtobufPacketUtil.sendPacket(viewer, message); diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java index 94ec391f..826c3237 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java @@ -63,7 +63,7 @@ public void addServerLinkExample(Player viewer) { apolloPlayerOpt.ifPresent(apolloPlayer -> { this.serverLinkModule.addServerLink(apolloPlayer, Lists.newArrayList( ServerLink.builder() - .url("website") + .id("website") .displayName(Component.text("Website", NamedTextColor.LIGHT_PURPLE)) .url("https://www.lunarclient.com/") .build(), diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/ApolloJsonExamplePlatform.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/ApolloJsonExamplePlatform.java index 6ca73781..196b6f81 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/ApolloJsonExamplePlatform.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/ApolloJsonExamplePlatform.java @@ -43,6 +43,7 @@ import com.lunarclient.apollo.example.json.module.NotificationJsonExample; import com.lunarclient.apollo.example.json.module.PayNowJsonExample; import com.lunarclient.apollo.example.json.module.RichPresenceJsonExample; +import com.lunarclient.apollo.example.json.module.ServerLinkJsonExample; import com.lunarclient.apollo.example.json.module.ServerRuleJsonExample; import com.lunarclient.apollo.example.json.module.StaffModJsonExample; import com.lunarclient.apollo.example.json.module.StopwatchJsonExample; @@ -85,6 +86,7 @@ public void registerModuleExamples() { this.setNotificationExample(new NotificationJsonExample()); this.setPayNowExample(new PayNowJsonExample()); this.setRichPresenceExample(new RichPresenceJsonExample()); + this.setServerLinkExample(new ServerLinkJsonExample()); this.setServerRuleExample(new ServerRuleJsonExample()); this.setStaffModExample(new StaffModJsonExample()); this.setStopwatchExample(new StopwatchJsonExample()); diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerLinkJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerLinkJsonExample.java new file mode 100644 index 00000000..956363ac --- /dev/null +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerLinkJsonExample.java @@ -0,0 +1,99 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2023 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.example.json.module; + +import com.google.common.collect.Lists; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.lunarclient.apollo.example.json.util.AdventureUtil; +import com.lunarclient.apollo.example.json.util.JsonPacketUtil; +import com.lunarclient.apollo.example.json.util.JsonUtil; +import com.lunarclient.apollo.example.module.impl.ServerLinkExample; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import org.bukkit.entity.Player; + +public class ServerLinkJsonExample extends ServerLinkExample { + + @Override + public void overrideServerLinkResourceExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.OverrideServerLinkResourceMessage"); + message.add("icon", JsonUtil.createResourceLocationIconObject("lunar:logo/logo-100x100.png")); + + JsonPacketUtil.sendPacket(viewer, message); + } + + @Override + public void resetServerLinkResourceExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.ResetServerLinkResourceMessage"); + + JsonPacketUtil.sendPacket(viewer, message); + } + + @Override + public void addServerLinkExample(Player viewer) { + JsonArray serverLinks = Lists.newArrayList( + this.createServerLinkObject("website", Component.text("Website", NamedTextColor.LIGHT_PURPLE), "https://www.lunarclient.com/"), + this.createServerLinkObject("support", Component.text("Support", NamedTextColor.AQUA), "https://support.lunarclient.com/"), + this.createServerLinkObject("status", Component.text("Status", NamedTextColor.RED), "https://status.lunarclient.com/") + ).stream().collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.AddServerLinkMessage"); + message.add("server_links", serverLinks); + + JsonPacketUtil.sendPacket(viewer, message); + } + + private JsonObject createServerLinkObject(String id, Component displayName, String url) { + JsonObject serverLinkObject = new JsonObject(); + serverLinkObject.addProperty("id", id); + serverLinkObject.addProperty("display_name_adventure_json_lines", AdventureUtil.toJson(displayName)); + serverLinkObject.addProperty("url", url); + return serverLinkObject; + } + + @Override + public void removeServerLinkExample(Player viewer) { + JsonArray serverLinkIds = Lists.newArrayList("website", "support", "status") + .stream().collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.RemoveServerLinkMessage"); + message.add("server_link_ids", serverLinkIds); + + JsonPacketUtil.sendPacket(viewer, message); + } + + @Override + public void resetServerLinksExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.ResetServerLinksMessage"); + + JsonPacketUtil.sendPacket(viewer, message); + } + +} diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/JsonUtil.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/JsonUtil.java index dce4fdf0..841a9694 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/JsonUtil.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/JsonUtil.java @@ -150,6 +150,16 @@ public static JsonObject createItemStackIconObject(@Nullable String itemName, in return iconObject; } + public static JsonObject createResourceLocationIconObject(@NotNull String resourceLocation) { + JsonObject resourceIconObject = new JsonObject(); + resourceIconObject.addProperty("resource_location", resourceLocation); + + JsonObject iconObject = new JsonObject(); + iconObject.add("resource_location", resourceIconObject); + + return iconObject; + } + public static JsonObject createSimpleResourceLocationIconObject(@NotNull String resourceLocation, int size) { JsonObject simpleIconObject = new JsonObject(); simpleIconObject.addProperty("resource_location", resourceLocation); diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/ApolloProtoExamplePlatform.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/ApolloProtoExamplePlatform.java index 57c5a193..f02c1bfd 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/ApolloProtoExamplePlatform.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/ApolloProtoExamplePlatform.java @@ -43,6 +43,7 @@ import com.lunarclient.apollo.example.proto.module.NotificationProtoExample; import com.lunarclient.apollo.example.proto.module.PayNowProtoExample; import com.lunarclient.apollo.example.proto.module.RichPresenceProtoExample; +import com.lunarclient.apollo.example.proto.module.ServerLinkProtoExample; import com.lunarclient.apollo.example.proto.module.ServerRuleProtoExample; import com.lunarclient.apollo.example.proto.module.StaffModProtoExample; import com.lunarclient.apollo.example.proto.module.StopwatchProtoExample; @@ -85,6 +86,7 @@ public void registerModuleExamples() { this.setNotificationExample(new NotificationProtoExample()); this.setPayNowExample(new PayNowProtoExample()); this.setRichPresenceExample(new RichPresenceProtoExample()); + this.setServerLinkExample(new ServerLinkProtoExample()); this.setServerRuleExample(new ServerRuleProtoExample()); this.setStaffModExample(new StaffModProtoExample()); this.setStopwatchExample(new StopwatchProtoExample()); diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/CooldownProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/CooldownProtoExample.java index d8c6741c..cd515b09 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/CooldownProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/CooldownProtoExample.java @@ -23,6 +23,7 @@ */ package com.lunarclient.apollo.example.proto.module; +import com.lunarclient.apollo.common.v1.Icon; import com.lunarclient.apollo.cooldown.v1.DisplayCooldownMessage; import com.lunarclient.apollo.cooldown.v1.RemoveCooldownMessage; import com.lunarclient.apollo.cooldown.v1.ResetCooldownsMessage; @@ -39,7 +40,9 @@ public void displayCooldownItemExample(Player viewer) { DisplayCooldownMessage message = DisplayCooldownMessage.newBuilder() .setName("enderpearl-cooldown") .setDuration(ProtobufUtil.createDurationProto(Duration.ofSeconds(15))) - .setIcon(ProtobufUtil.createItemStackIconProto("ENDER_PEARL", 0, 0)) + .setIcon(Icon.newBuilder() + .setItemStack(ProtobufUtil.createItemStackIconProto("ENDER_PEARL", 0, 0)) + .build()) .build(); ProtobufPacketUtil.sendPacket(viewer, message); @@ -50,7 +53,9 @@ public void displayCooldownResourceExample(Player viewer) { DisplayCooldownMessage message = DisplayCooldownMessage.newBuilder() .setName("lunar-cooldown") .setDuration(ProtobufUtil.createDurationProto(Duration.ofSeconds(15))) - .setIcon(ProtobufUtil.createSimpleResourceLocationIconProto("lunar:logo/logo-200x182.svg", 12)) + .setIcon(Icon.newBuilder() + .setSimpleResourceLocation(ProtobufUtil.createSimpleResourceLocationIconProto("lunar:logo/logo-200x182.svg", 12)) + .build()) .build(); ProtobufPacketUtil.sendPacket(viewer, message); diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerLinkProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerLinkProtoExample.java new file mode 100644 index 00000000..661f97ee --- /dev/null +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerLinkProtoExample.java @@ -0,0 +1,106 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * Copyright (c) 2023 Moonsworth + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.lunarclient.apollo.example.proto.module; + +import com.google.common.collect.Lists; +import com.lunarclient.apollo.example.module.impl.ServerLinkExample; +import com.lunarclient.apollo.example.proto.util.AdventureUtil; +import com.lunarclient.apollo.example.proto.util.ProtobufPacketUtil; +import com.lunarclient.apollo.example.proto.util.ProtobufUtil; +import com.lunarclient.apollo.serverlink.v1.AddServerLinkMessage; +import com.lunarclient.apollo.serverlink.v1.OverrideServerLinkResourceMessage; +import com.lunarclient.apollo.serverlink.v1.RemoveServerLinkMessage; +import com.lunarclient.apollo.serverlink.v1.ResetServerLinkResourceMessage; +import com.lunarclient.apollo.serverlink.v1.ResetServerLinksMessage; +import com.lunarclient.apollo.serverlink.v1.ServerLink; +import java.util.List; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import org.bukkit.entity.Player; + +public class ServerLinkProtoExample extends ServerLinkExample { + + @Override + public void overrideServerLinkResourceExample(Player viewer) { + OverrideServerLinkResourceMessage message = OverrideServerLinkResourceMessage.newBuilder() + .setIcon(ProtobufUtil.createResourceLocationIconProto("lunar:logo/logo-100x100.png")) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); + } + + @Override + public void resetServerLinkResourceExample(Player viewer) { + ResetServerLinkResourceMessage message = ResetServerLinkResourceMessage.getDefaultInstance(); + ProtobufPacketUtil.sendPacket(viewer, message); + } + + @Override + public void addServerLinkExample(Player viewer) { + List serverLinks = Lists.newArrayList( + ServerLink.newBuilder() + .setId("website") + .setDisplayNameAdventureJsonLines(AdventureUtil.toJson( + Component.text("Website", NamedTextColor.LIGHT_PURPLE))) + .setUrl("https://www.lunarclient.com/") + .build(), + ServerLink.newBuilder() + .setId("support") + .setDisplayNameAdventureJsonLines(AdventureUtil.toJson( + Component.text("Support", NamedTextColor.AQUA))) + .setUrl("https://support.lunarclient.com/") + .build(), + ServerLink.newBuilder() + .setId("status") + .setDisplayNameAdventureJsonLines(AdventureUtil.toJson( + Component.text("Status", NamedTextColor.RED))) + .setUrl("https://status.lunarclient.com/") + .build() + ); + + AddServerLinkMessage message = AddServerLinkMessage.newBuilder() + .addAllServerLinks(serverLinks) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); + } + + @Override + public void removeServerLinkExample(Player viewer) { + List serverLinkIds = Lists.newArrayList("website", "support", "status"); + + RemoveServerLinkMessage message = RemoveServerLinkMessage.newBuilder() + .addAllServerLinkIds(serverLinkIds) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); + } + + @Override + public void resetServerLinksExample(Player viewer) { + ResetServerLinksMessage message = ResetServerLinksMessage.getDefaultInstance(); + ProtobufPacketUtil.sendPacket(viewer, message); + } + +} diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/ProtobufUtil.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/ProtobufUtil.java index affc6a1f..2c35b3c3 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/ProtobufUtil.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/ProtobufUtil.java @@ -28,8 +28,8 @@ import com.lunarclient.apollo.common.v1.BlockLocation; import com.lunarclient.apollo.common.v1.Cuboid2D; import com.lunarclient.apollo.common.v1.EntityId; -import com.lunarclient.apollo.common.v1.Icon; import com.lunarclient.apollo.common.v1.ItemStackIcon; +import com.lunarclient.apollo.common.v1.ResourceLocationIcon; import com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon; import com.lunarclient.apollo.common.v1.Uuid; import java.awt.Color; @@ -114,7 +114,7 @@ public static Location toBukkitLocation(com.lunarclient.apollo.common.v1.PlayerL return location; } - public static Icon createItemStackIconProto(@Nullable String itemName, int itemId, int customModelData) { + public static ItemStackIcon createItemStackIconProto(@Nullable String itemName, int itemId, int customModelData) { ItemStackIcon.Builder iconBuilder = ItemStackIcon.newBuilder() .setItemId(itemId) .setCustomModelData(customModelData); @@ -123,21 +123,25 @@ public static Icon createItemStackIconProto(@Nullable String itemName, int itemI iconBuilder.setItemName(itemName); } - return Icon.newBuilder().setItemStack(iconBuilder.build()).build(); + return iconBuilder.build(); } - public static Icon createSimpleResourceLocationIconProto(String resourceLocation, int size) { - SimpleResourceLocationIcon icon = SimpleResourceLocationIcon.newBuilder() + public static ResourceLocationIcon createResourceLocationIconProto(String resourceLocation) { + return ResourceLocationIcon.newBuilder() .setResourceLocation(resourceLocation) - .setSize(size) .build(); + } - return Icon.newBuilder().setSimpleResourceLocation(icon).build(); + public static SimpleResourceLocationIcon createSimpleResourceLocationIconProto(String resourceLocation, int size) { + return SimpleResourceLocationIcon.newBuilder() + .setResourceLocation(resourceLocation) + .setSize(size) + .build(); } - public static Icon createAdvancedResourceLocationIconProto(String resourceLocation, float width, float height, + public static AdvancedResourceLocationIcon createAdvancedResourceLocationIconProto(String resourceLocation, float width, float height, float minU, float maxU, float minV, float maxV) { - AdvancedResourceLocationIcon icon = AdvancedResourceLocationIcon.newBuilder() + return AdvancedResourceLocationIcon.newBuilder() .setResourceLocation(resourceLocation) .setWidth(width) .setHeight(height) @@ -146,8 +150,6 @@ public static Icon createAdvancedResourceLocationIconProto(String resourceLocati .setMinV(minV) .setMaxV(maxV) .build(); - - return Icon.newBuilder().setAdvancedResourceLocation(icon).build(); } private ProtobufUtil() { From 40e0d37ca87373b6c3b262de541333511beb2b0c Mon Sep 17 00:00:00 2001 From: ItsNature Date: Wed, 25 Mar 2026 05:07:41 +0100 Subject: [PATCH 04/11] add markdown docs --- docs/developers/modules/_meta.json | 1 + docs/developers/modules/serverlink.mdx | 307 +++++++++++++++++++++++++ 2 files changed, 308 insertions(+) create mode 100644 docs/developers/modules/serverlink.mdx diff --git a/docs/developers/modules/_meta.json b/docs/developers/modules/_meta.json index 02faf06d..1f3fba9c 100644 --- a/docs/developers/modules/_meta.json +++ b/docs/developers/modules/_meta.json @@ -20,6 +20,7 @@ "packetenrichment": "Packet Enrichment", "richpresence": "Rich Presence", "saturation": "Saturation", + "serverlink": "Server Link", "serverrule": "Server Rule", "staffmod": "Staff Mod", "stopwatch": "Stopwatch", diff --git a/docs/developers/modules/serverlink.mdx b/docs/developers/modules/serverlink.mdx new file mode 100644 index 00000000..ea1d8b86 --- /dev/null +++ b/docs/developers/modules/serverlink.mdx @@ -0,0 +1,307 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + +# Server Link Module + +## Overview + +TODO + +## 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 + +```java +public void overrideServerLinkResourceExample(Player viewer) { + Optional 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 + +```java +public void resetServerLinkResourceExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + apolloPlayerOpt.ifPresent(this.serverLinkModule::resetServerLinkResource); +} +``` + +### Add Server Link + +```java +public void addServerLinkExample(Player viewer) { + Optional 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 + +```java +public void removeServerLinkExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + + apolloPlayerOpt.ifPresent(apolloPlayer -> { + this.serverLinkModule.removeServerLink(apolloPlayer, Lists.newArrayList( + "website", "support", "status" + )); + }); +} +``` + +### Resetting all Server Links + +```java +public void resetServerLinksExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + apolloPlayerOpt.ifPresent(this.serverLinkModule::resetServerLinks); +} +``` + +### `Hologram` Options + +`.id(String)` should include a unique identifier for the hologram. + +```java +.id("welcome-hologram") +``` + +`.location(ApolloLocation)` is using the `ApolloLocation` builder to create the location. See the [locations page](/apollo/developers/utilities/locations) for more. + +```java +.location(ApolloLocation.builder() + .world("world") + .x(5) + .y(100) + .z(0) + .build() +) +``` + +`.lines(Component)` should be a string, or an Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more. + +```java +.lines(List.of( + Component.text() + .content("Welcome to my server!") + .color(NamedTextColor.RED) + .decorate(TextDecoration.BOLD, TextDecoration.UNDERLINED) + .build(), + Component.text() + .content("Type /help to get started!") + .build() +)) +``` + +`.showThroughWalls(Boolean)` if the player is able to see the hologram through walls. + +```java +.showThroughWalls(true) +``` + +`.showShadow(Boolean)` if the player is able to see the hologram shadow. + +```java +.showShadow(false) +``` + +`.showBackground(Boolean)` if the player is able to see the hologram background. + +```java +.showBackground(true) +``` + + + + + +### Override the Server Link Menu resource + +```java +public void overrideServerLinkResourceExample(Player viewer) { + OverrideServerLinkResourceMessage message = OverrideServerLinkResourceMessage.newBuilder() + .setIcon(ProtobufUtil.createResourceLocationIconProto("lunar:logo/logo-100x100.png")) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + +### Reset the Server Link Menu resource + +```java +public void resetServerLinkResourceExample(Player viewer) { + ResetServerLinkResourceMessage message = ResetServerLinkResourceMessage.getDefaultInstance(); + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + +### Add Server Link + +```java +public void addServerLinkExample(Player viewer) { + List serverLinks = Lists.newArrayList( + ServerLink.newBuilder() + .setId("website") + .setDisplayNameAdventureJsonLines(AdventureUtil.toJson( + Component.text("Website", NamedTextColor.LIGHT_PURPLE))) + .setUrl("https://www.lunarclient.com/") + .build(), + ServerLink.newBuilder() + .setId("support") + .setDisplayNameAdventureJsonLines(AdventureUtil.toJson( + Component.text("Support", NamedTextColor.AQUA))) + .setUrl("https://support.lunarclient.com/") + .build(), + ServerLink.newBuilder() + .setId("status") + .setDisplayNameAdventureJsonLines(AdventureUtil.toJson( + Component.text("Status", NamedTextColor.RED))) + .setUrl("https://status.lunarclient.com/") + .build() + ); + + AddServerLinkMessage message = AddServerLinkMessage.newBuilder() + .addAllServerLinks(serverLinks) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + +### Remove Server Link + +```java +public void removeServerLinkExample(Player viewer) { + List serverLinkIds = Lists.newArrayList("website", "support", "status"); + + RemoveServerLinkMessage message = RemoveServerLinkMessage.newBuilder() + .addAllServerLinkIds(serverLinkIds) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + +### Resetting all Server Links + +```java +public void resetServerLinksExample(Player viewer) { + ResetServerLinksMessage message = ResetServerLinksMessage.getDefaultInstance(); + ProtobufPacketUtil.sendPacket(viewer, message); +} +``` + + + + + +### Override the Server Link Menu resource + +```java +public void overrideServerLinkResourceExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.OverrideServerLinkResourceMessage"); + message.add("icon", JsonUtil.createResourceLocationIconObject("lunar:logo/logo-100x100.png")); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + +### Reset the Server Link Menu resource + +```java +public void resetServerLinkResourceExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.ResetServerLinkResourceMessage"); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + +### Add Server Link + +```java +public void addServerLinkExample(Player viewer) { + JsonArray serverLinks = Lists.newArrayList( + this.createServerLinkObject("website", Component.text("Website", NamedTextColor.LIGHT_PURPLE), "https://www.lunarclient.com/"), + this.createServerLinkObject("support", Component.text("Support", NamedTextColor.AQUA), "https://support.lunarclient.com/"), + this.createServerLinkObject("status", Component.text("Status", NamedTextColor.RED), "https://status.lunarclient.com/") + ).stream().collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.AddServerLinkMessage"); + message.add("server_links", serverLinks); + + JsonPacketUtil.sendPacket(viewer, message); +} + +private JsonObject createServerLinkObject(String id, Component displayName, String url) { + JsonObject serverLinkObject = new JsonObject(); + serverLinkObject.addProperty("id", id); + serverLinkObject.addProperty("display_name_adventure_json_lines", AdventureUtil.toJson(displayName)); + serverLinkObject.addProperty("url", url); + return serverLinkObject; +} +``` + +### Remove Server Link + +```java +public void removeServerLinkExample(Player viewer) { + JsonArray serverLinkIds = Lists.newArrayList("website", "support", "status") + .stream().collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.RemoveServerLinkMessage"); + message.add("server_link_ids", serverLinkIds); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + +### Resetting all Server Links + +```java +public void resetServerLinksExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.serverlink.v1.ResetServerLinksMessage"); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + + + + From 2a9bed47c5480de5836b0ab8ef632e02d083e89e Mon Sep 17 00:00:00 2001 From: TrentinTheKid <25537885+TrentinTheKid@users.noreply.github.com> Date: Wed, 25 Mar 2026 03:16:57 -0400 Subject: [PATCH 05/11] update serverlink docs --- docs/developers/modules/serverlink.mdx | 75 ++++++------------ docs/public/modules/serverlink/overview.png | Bin 0 -> 110280 bytes .../api/module/NotificationApiExample.java | 2 +- 3 files changed, 26 insertions(+), 51 deletions(-) create mode 100644 docs/public/modules/serverlink/overview.png diff --git a/docs/developers/modules/serverlink.mdx b/docs/developers/modules/serverlink.mdx index ea1d8b86..d9b483f2 100644 --- a/docs/developers/modules/serverlink.mdx +++ b/docs/developers/modules/serverlink.mdx @@ -4,7 +4,14 @@ import { Tab, Tabs } from 'nextra-theme-docs' ## Overview -TODO +The server link module provides enhancements and additional support to the vanilla Minecraft server link feature. Display your important URLs directly to your users. + +- 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](/modules/serverlink/overview.png#center) ## Integration @@ -89,64 +96,32 @@ public void resetServerLinksExample(Player viewer) { } ``` -### `Hologram` Options - -`.id(String)` should include a unique identifier for the hologram. - -```java -.id("welcome-hologram") -``` - -`.location(ApolloLocation)` is using the `ApolloLocation` builder to create the location. See the [locations page](/apollo/developers/utilities/locations) for more. - -```java -.location(ApolloLocation.builder() - .world("world") - .x(5) - .y(100) - .z(0) - .build() -) -``` +### `ServerLink` Options -`.lines(Component)` should be a string, or an Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more. +`.id(String)` sets a unique identifier for the server link. ```java -.lines(List.of( - Component.text() - .content("Welcome to my server!") - .color(NamedTextColor.RED) - .decorate(TextDecoration.BOLD, TextDecoration.UNDERLINED) - .build(), - Component.text() - .content("Type /help to get started!") - .build() -)) +.id("website") ``` -`.showThroughWalls(Boolean)` if the player is able to see the hologram through walls. +`.displayName(String)` is the public-facing name of the server link. It should contain a string or an Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more. ```java -.showThroughWalls(true) +.displayName(Component.text("Website", NamedTextColor.LIGHT_PURPLE)) ``` -`.showShadow(Boolean)` if the player is able to see the hologram shadow. +`.url(String)` should be a string that specifies the destination URL that will be opened from the server link. ```java -.showShadow(false) +.url("https://www.lunarclient.com/") ``` -`.showBackground(Boolean)` if the player is able to see the hologram background. - -```java -.showBackground(true) -``` -### Override the Server Link Menu resource +**Override the Server Link Menu resource** ```java public void overrideServerLinkResourceExample(Player viewer) { @@ -158,7 +133,7 @@ public void overrideServerLinkResourceExample(Player viewer) { } ``` -### Reset the Server Link Menu resource +**Reset the Server Link Menu resource** ```java public void resetServerLinkResourceExample(Player viewer) { @@ -167,7 +142,7 @@ public void resetServerLinkResourceExample(Player viewer) { } ``` -### Add Server Link +**Add Server Link** ```java public void addServerLinkExample(Player viewer) { @@ -200,7 +175,7 @@ public void addServerLinkExample(Player viewer) { } ``` -### Remove Server Link +**Remove Server Link** ```java public void removeServerLinkExample(Player viewer) { @@ -214,7 +189,7 @@ public void removeServerLinkExample(Player viewer) { } ``` -### Resetting all Server Links +**Resetting all Server Links** ```java public void resetServerLinksExample(Player viewer) { @@ -227,7 +202,7 @@ public void resetServerLinksExample(Player viewer) { -### Override the Server Link Menu resource +**Override the Server Link Menu resource** ```java public void overrideServerLinkResourceExample(Player viewer) { @@ -239,7 +214,7 @@ public void overrideServerLinkResourceExample(Player viewer) { } ``` -### Reset the Server Link Menu resource +**Reset the Server Link Menu resource** ```java public void resetServerLinkResourceExample(Player viewer) { @@ -250,7 +225,7 @@ public void resetServerLinkResourceExample(Player viewer) { } ``` -### Add Server Link +**Add Server Link** ```java public void addServerLinkExample(Player viewer) { @@ -276,7 +251,7 @@ private JsonObject createServerLinkObject(String id, Component displayName, Stri } ``` -### Remove Server Link +**Remove Server Link** ```java public void removeServerLinkExample(Player viewer) { @@ -291,7 +266,7 @@ public void removeServerLinkExample(Player viewer) { } ``` -### Resetting all Server Links +**Resetting all Server Links** ```java public void resetServerLinksExample(Player viewer) { diff --git a/docs/public/modules/serverlink/overview.png b/docs/public/modules/serverlink/overview.png new file mode 100644 index 0000000000000000000000000000000000000000..2a43d146f381cafbc5088976afda28353322ab0a GIT binary patch literal 110280 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 H&A|T)HDT!M literal 0 HcmV?d00001 diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NotificationApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NotificationApiExample.java index 52895380..51207474 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NotificationApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NotificationApiExample.java @@ -51,7 +51,7 @@ public void displayNotificationExample(Player viewer) { .append(Component.newline()) .append(Component.text("Good luck!", NamedTextColor.GOLD)) ) - .resourceLocation("icons/golden_apple.png") // This field is optional + .resourceLocation("textures/items/apple_golden.png") // This field is optional .displayTime(Duration.ofSeconds(5)) .build()); }); From 6f5fc54f8afff89f5744f339dbb7576cbb2264b4 Mon Sep 17 00:00:00 2001 From: TrentinTheKid <25537885+TrentinTheKid@users.noreply.github.com> Date: Wed, 25 Mar 2026 03:19:49 -0400 Subject: [PATCH 06/11] update paths in notification module example --- docs/developers/modules/notification.mdx | 8 ++++---- .../example/json/module/NotificationJsonExample.java | 2 +- .../example/proto/module/NotificationProtoExample.java | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/developers/modules/notification.mdx b/docs/developers/modules/notification.mdx index b88c2b6d..f9b506b1 100644 --- a/docs/developers/modules/notification.mdx +++ b/docs/developers/modules/notification.mdx @@ -41,7 +41,7 @@ public void displayNotificationExample(Player viewer) { .append(Component.newline()) .append(Component.text("Good luck!", NamedTextColor.GOLD)) ) - .resourceLocation("icons/golden_apple.png") // This field is optional + .resourceLocation("textures/items/apple_golden.png") // This field is optional .displayTime(Duration.ofSeconds(5)) .build()); }); @@ -78,7 +78,7 @@ public void resetNotificationsExample(Player viewer) { `.resourceLocation(String)` is the resource location of the shown icon. ```java -.resourceLocation("icons/golden_apple.png") +.resourceLocation("textures/items/apple_golden.png") ``` `.displayTime(java.time.Duration)` is the duration you want to keep the notification on screen. See the [java.time.Duration Javadocs](https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html) for more. @@ -125,7 +125,7 @@ public void displayNotificationExample(Player viewer) { .append(Component.text("Good luck!", NamedTextColor.GOLD)) ) ) - .setResourceLocation("icons/golden_apple.png") // This field is optional + .setResourceLocation("textures/items/apple_golden.png") // This field is optional .setDisplayTime(ProtobufUtil.createDurationProto(Duration.ofSeconds(5))) .build(); @@ -164,7 +164,7 @@ public void displayNotificationExample(Player viewer) { )); message.addProperty("display_time", JsonUtil.createDurationObject(Duration.ofSeconds(5))); - message.addProperty("resource_location", "icons/golden_apple.png"); + message.addProperty("resource_location", "textures/items/apple_golden.png"); JsonPacketUtil.sendPacket(viewer, message); } diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NotificationJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NotificationJsonExample.java index c8f92e4a..70c4b1bd 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NotificationJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NotificationJsonExample.java @@ -51,7 +51,7 @@ public void displayNotificationExample(Player viewer) { )); message.addProperty("display_time", JsonUtil.createDurationObject(Duration.ofSeconds(5))); - message.addProperty("resource_location", "icons/golden_apple.png"); + message.addProperty("resource_location", "textures/items/apple_golden.png"); JsonPacketUtil.sendPacket(viewer, message); } diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NotificationProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NotificationProtoExample.java index 3fcf905c..0853dca5 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NotificationProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NotificationProtoExample.java @@ -50,7 +50,7 @@ public void displayNotificationExample(Player viewer) { .append(Component.text("Good luck!", NamedTextColor.GOLD)) ) ) - .setResourceLocation("icons/golden_apple.png") // This field is optional + .setResourceLocation("textures/items/apple_golden.png") // This field is optional .setDisplayTime(ProtobufUtil.createDurationProto(Duration.ofSeconds(5))) .build(); From 1a463974d94d2f64aa13dfa9133a1d549a3b2058 Mon Sep 17 00:00:00 2001 From: TrentinTheKid <25537885+TrentinTheKid@users.noreply.github.com> Date: Wed, 25 Mar 2026 03:26:38 -0400 Subject: [PATCH 07/11] update server link overview img --- docs/public/modules/serverlink/overview.png | Bin 110280 -> 108691 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/public/modules/serverlink/overview.png b/docs/public/modules/serverlink/overview.png index 2a43d146f381cafbc5088976afda28353322ab0a..512543fef9d6efde4d8f4e513e3cf852136522c6 100644 GIT binary patch delta 52713 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�ZG-wtp%}LpM^%oc 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

|G8te-@FUMPuKp z!!V z!b#xAy@0f7$1Go|F>|B%Ks|`e^Exu+b(S(4Db!hD9vrrR$%g92zf6YKoo6)FUICOk zR$b%+ofs!B@fJwFUGgi(4^M}w+V1C|c4C;uco=Moxpv};OT5IeC-m*RF%_e%azM8E ziTWI>mx_ZSM(O&bXfAfgpG%`}4GsrT-JytjNT0D4K+3qw|AX_VJvWiNl(D^hl*v zAdY><$aZf4kM`+mGVS&~g1z&4#*5X#bLqK`c*tt6St;_&?=`F6O;~&8Hi(ncM{a_s z%`5QJab>~V&<~OPxw8du7ozV6w>)0ZzesVb%=&G#$Dn~Lw&&ldqg!mfsAA@H0guSq z7cQsMKPlIPrHGb5pjhf-nAZentNr>dVr|HyoH*!J5)c;>FOCi_Q+Lzuye2*~K0hVq zyG-ff@sQiXbAfwQWLS+}lhc#*whEbKGyiWg+u?rW(z6i2n1;HX6Vo-^aE$9FD)biC zdIm^`3vHNCx!G2EzPR6 zC!q}+2z#P0B`@A@7apChbQ>3mh6hg^!?; zdRw?6LiWkeS`bO!cHyH`X5{TW^U~G7Xk}#*C`7yOHFZl1{+N)`cipL8_Y=0|`CT}x z)v?MPz<%1!veDv(hO(St+*LK=je4eq#Bj&;i{B^?bpk$sX7D0u;-QDJ1t@^{Y7l5=ti>4n zpgh!wsu@X02?i$u&Z%SmCHezyaky`;ty$B(?~9MumoXfaF1IpP!NvZwQl%! z6+Pv14G1ER&f=Fu-$>3rxBI|!1o{B&)BODW@@m>jAJ8=;{hl=4i0aGqwWsFgl$VJI zRHS9!H?A_#kAb~H*Ws`o84wfL7j$Pc*;MTz6HTGJi}N1mE==Sa1*D8>8C*rODk7>aOQK zv5RIfGZbh$bOEMpezkdmU|qxGngY?QJ!cTLH?WL+iD8+EpM{2>{P@iB`IXntmvyT> z4^wSIrI}cS21PyLww;jeYp-`sO~PhtJNSJv#3ADjsC1v@o#yubQtjL)l{b8;4t@cA Nl;qT9tEEkY{tp**^F#mu delta 54295 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 Date: Wed, 25 Mar 2026 03:29:13 -0400 Subject: [PATCH 08/11] update overview desc --- docs/developers/modules/serverlink.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developers/modules/serverlink.mdx b/docs/developers/modules/serverlink.mdx index d9b483f2..55b4addd 100644 --- a/docs/developers/modules/serverlink.mdx +++ b/docs/developers/modules/serverlink.mdx @@ -4,7 +4,7 @@ import { Tab, Tabs } from 'nextra-theme-docs' ## Overview -The server link module provides enhancements and additional support to the vanilla Minecraft server link feature. Display your important URLs directly to your users. +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 From c5f9c3cf59a1ab4e6da8c4333806701c00b36797 Mon Sep 17 00:00:00 2001 From: ItsNature Date: Wed, 25 Mar 2026 18:13:26 +0100 Subject: [PATCH 09/11] update component usage docs --- docs/developers/modules/hologram.mdx | 2 +- docs/developers/modules/nametag.mdx | 2 +- docs/developers/modules/serverlink.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/developers/modules/hologram.mdx b/docs/developers/modules/hologram.mdx index 5cc88206..db5ab913 100644 --- a/docs/developers/modules/hologram.mdx +++ b/docs/developers/modules/hologram.mdx @@ -88,7 +88,7 @@ public void resetHologramsExample(Player viewer) { ) ``` -`.lines(Component)` should be a string, or an Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more. +`.lines(Component)` is using the Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more. ```java .lines(List.of( diff --git a/docs/developers/modules/nametag.mdx b/docs/developers/modules/nametag.mdx index 679cfcf2..5ca13ec0 100644 --- a/docs/developers/modules/nametag.mdx +++ b/docs/developers/modules/nametag.mdx @@ -81,7 +81,7 @@ public void resetNametagsExample(Player viewer) { ### `Nametag` Options -`.lines(Component)` should be a string, or an Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more. +`.lines(Component)` is using the Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more. ```java .lines(List.of( diff --git a/docs/developers/modules/serverlink.mdx b/docs/developers/modules/serverlink.mdx index 55b4addd..96ca563d 100644 --- a/docs/developers/modules/serverlink.mdx +++ b/docs/developers/modules/serverlink.mdx @@ -104,7 +104,7 @@ public void resetServerLinksExample(Player viewer) { .id("website") ``` -`.displayName(String)` is the public-facing name of the server link. It should contain a string or an Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more. +`.displayName(Component)` is the public-facing name of the server link. It should contain an Adventure `Component`. See the [chat components](https://docs.advntr.dev/text.html) page for more. ```java .displayName(Component.text("Website", NamedTextColor.LIGHT_PURPLE)) From f95e3bb25549801946cf9d4ba05099d8f2cae5ff Mon Sep 17 00:00:00 2001 From: ItsNature Date: Fri, 27 Mar 2026 01:24:40 +0100 Subject: [PATCH 10/11] Update version tags to 1.2.5 --- .../common/icon/ResourceLocationIcon.java | 4 ++-- .../apollo/module/serverlink/ServerLink.java | 8 ++++---- .../module/serverlink/ServerLinkModule.java | 18 +++++++++--------- .../serverlink/ServerLinkModuleImpl.java | 2 +- .../apollo/network/NetworkTypes.java | 16 ++++++++-------- docs/developers/utilities/icons.mdx | 2 +- 6 files changed, 25 insertions(+), 25 deletions(-) diff --git a/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java b/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java index 14a0e823..2c186748 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java +++ b/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java @@ -29,7 +29,7 @@ /** * Represents a resource location icon. * - * @since 1.2.4 + * @since 1.2.5 */ @Getter @Builder @@ -41,7 +41,7 @@ public final class ResourceLocationIcon extends Icon { *

Represents a path to an icon that will appear for the player.

* * @return the icon resource location - * @since 1.2.4 + * @since 1.2.5 */ String resourceLocation; diff --git a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java index 4f07f1a2..4d3bc2fa 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java +++ b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java @@ -30,7 +30,7 @@ /** * Represents a link entry displayed in the Server Links menu. * - * @since 1.2.4 + * @since 1.2.5 */ @Getter @Builder @@ -40,7 +40,7 @@ public final class ServerLink { * Returns the server link {@link String} id. * * @return the server link id - * @since 1.2.4 + * @since 1.2.5 */ String id; @@ -48,7 +48,7 @@ public final class ServerLink { * Returns the server link {@link Component} display name. * * @return the server link display name - * @since 1.2.4 + * @since 1.2.5 */ Component displayName; @@ -56,7 +56,7 @@ public final class ServerLink { * Returns the server link {@link String} url. * * @return the server link url - * @since 1.2.4 + * @since 1.2.5 */ String url; diff --git a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java index b990e6e1..aef0f059 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java @@ -36,7 +36,7 @@ *

This module provides support for the Server Links feature introduced in * Minecraft 1.21.0, with compatibility extending down to version 1.7.

* - * @since 1.2.4 + * @since 1.2.5 */ @ApiStatus.NonExtendable @ModuleDefinition(id = "server_link", name = "Server Link") @@ -60,7 +60,7 @@ public abstract class ServerLinkModule extends ApolloModule { * * @param recipients the recipients that are receiving the packet * @param icon the resource location icon - * @since 1.2.4 + * @since 1.2.5 */ public abstract void overrideServerLinkResource(Recipients recipients, ResourceLocationIcon icon); @@ -70,7 +70,7 @@ public abstract class ServerLinkModule extends ApolloModule { *

Reverts back to displaying the default menu title.

* * @param recipients the recipients that are receiving the packet - * @since 1.2.4 + * @since 1.2.5 */ public abstract void resetServerLinkResource(Recipients recipients); @@ -79,7 +79,7 @@ public abstract class ServerLinkModule extends ApolloModule { * * @param recipients the recipients that are receiving the packet * @param serverLink the server link - * @since 1.2.4 + * @since 1.2.5 */ public abstract void addServerLink(Recipients recipients, ServerLink serverLink); @@ -88,7 +88,7 @@ public abstract class ServerLinkModule extends ApolloModule { * * @param recipients the recipients that are receiving the packet * @param serverLinks the server links - * @since 1.2.4 + * @since 1.2.5 */ public abstract void addServerLink(Recipients recipients, List serverLinks); @@ -97,7 +97,7 @@ public abstract class ServerLinkModule extends ApolloModule { * * @param recipients the recipients that are receiving the packet * @param serverLinkId the server link id - * @since 1.2.4 + * @since 1.2.5 */ public abstract void removeServerLink(Recipients recipients, String serverLinkId); @@ -106,7 +106,7 @@ public abstract class ServerLinkModule extends ApolloModule { * * @param recipients the recipients that are receiving the packet * @param serverLink the server link - * @since 1.2.4 + * @since 1.2.5 */ public abstract void removeServerLink(Recipients recipients, ServerLink serverLink); @@ -115,7 +115,7 @@ public abstract class ServerLinkModule extends ApolloModule { * * @param recipients the recipients that are receiving the packet * @param serverLinkIds the server link ids - * @since 1.2.4 + * @since 1.2.5 */ public abstract void removeServerLink(Recipients recipients, List serverLinkIds); @@ -123,7 +123,7 @@ public abstract class ServerLinkModule extends ApolloModule { * Resets all {@link ServerLink}s for the {@link Recipients}. * * @param recipients the recipients that are receiving the packet - * @since 1.2.4 + * @since 1.2.5 */ public abstract void resetServerLinks(Recipients recipients); diff --git a/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java index e1eb81c6..770f404d 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java @@ -41,7 +41,7 @@ /** * Provides the server link module. * - * @since 1.2.4 + * @since 1.2.5 */ public final class ServerLinkModuleImpl extends ServerLinkModule { diff --git a/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java b/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java index 3fd835e0..6d20395f 100644 --- a/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java +++ b/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java @@ -527,7 +527,7 @@ public static Icon fromProtobuf(com.lunarclient.apollo.common.v1.Icon icon) { * * @param icon the item stack icon * @return the proto item stack icon message - * @since 1.2.4 + * @since 1.2.5 */ public static com.lunarclient.apollo.common.v1.ItemStackIcon toProtobuf(ItemStackIcon icon) { com.lunarclient.apollo.common.v1.ItemStackIcon.Builder builder = com.lunarclient.apollo.common.v1.ItemStackIcon.newBuilder() @@ -547,7 +547,7 @@ public static com.lunarclient.apollo.common.v1.ItemStackIcon toProtobuf(ItemStac * * @param icon the item stack icon message * @return the item stack icon - * @since 1.2.4 + * @since 1.2.5 */ public static ItemStackIcon fromProtobuf(com.lunarclient.apollo.common.v1.ItemStackIcon icon) { return ItemStackIcon.builder() @@ -563,7 +563,7 @@ public static ItemStackIcon fromProtobuf(com.lunarclient.apollo.common.v1.ItemSt * * @param icon the resource location icon * @return the proto resource location icon message - * @since 1.2.4 + * @since 1.2.5 */ public static com.lunarclient.apollo.common.v1.ResourceLocationIcon toProtobuf(ResourceLocationIcon icon) { return com.lunarclient.apollo.common.v1.ResourceLocationIcon.newBuilder() @@ -577,7 +577,7 @@ public static com.lunarclient.apollo.common.v1.ResourceLocationIcon toProtobuf(R * * @param icon the resource location icon message * @return the resource location icon - * @since 1.2.4 + * @since 1.2.5 */ public static ResourceLocationIcon fromProtobuf(com.lunarclient.apollo.common.v1.ResourceLocationIcon icon) { return ResourceLocationIcon.builder() @@ -591,7 +591,7 @@ public static ResourceLocationIcon fromProtobuf(com.lunarclient.apollo.common.v1 * * @param icon the simple resource location icon * @return the proto simple resource location icon message - * @since 1.2.4 + * @since 1.2.5 */ public static com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon toProtobuf(SimpleResourceLocationIcon icon) { return com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon.newBuilder() @@ -606,7 +606,7 @@ public static com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon toProt * * @param icon the simple resource location icon message * @return the simple resource location icon - * @since 1.2.4 + * @since 1.2.5 */ public static SimpleResourceLocationIcon fromProtobuf(com.lunarclient.apollo.common.v1.SimpleResourceLocationIcon icon) { return SimpleResourceLocationIcon.builder() @@ -621,7 +621,7 @@ public static SimpleResourceLocationIcon fromProtobuf(com.lunarclient.apollo.com * * @param icon the advanced resource location icon * @return the proto advanced resource location icon message - * @since 1.2.4 + * @since 1.2.5 */ public static com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon toProtobuf(AdvancedResourceLocationIcon icon) { return com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon.newBuilder() @@ -641,7 +641,7 @@ public static com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon toPr * * @param icon the advanced resource location icon message * @return the advanced resource location icon - * @since 1.2.4 + * @since 1.2.5 */ public static AdvancedResourceLocationIcon fromProtobuf(com.lunarclient.apollo.common.v1.AdvancedResourceLocationIcon icon) { return AdvancedResourceLocationIcon.builder() diff --git a/docs/developers/utilities/icons.mdx b/docs/developers/utilities/icons.mdx index 2e61dcf8..449151b7 100644 --- a/docs/developers/utilities/icons.mdx +++ b/docs/developers/utilities/icons.mdx @@ -78,7 +78,7 @@ public class ResourceLocationIcon extends Icon { *

Represents a path to an icon that will appear for the player.

* * @return the icon resource location - * @since 1.2.4 + * @since 1.2.5 */ String resourceLocation; From c6b44f69669cc94b14f202faa769ba34b3877063 Mon Sep 17 00:00:00 2001 From: ItsNature Date: Sat, 4 Apr 2026 06:09:21 +0200 Subject: [PATCH 11/11] Update license year --- .github/workflows/deploy.yml | 2 +- .../lunarclient/apollo/common/icon/ResourceLocationIcon.java | 2 +- .../com/lunarclient/apollo/module/serverlink/ServerLink.java | 2 +- .../apollo/module/serverlink/ServerLinkModule.java | 2 +- .../apollo/module/serverlink/ServerLinkModuleImpl.java | 2 +- .../apollo/example/api/listener/ApolloPlayerApiListener.java | 5 +++++ .../apollo/example/api/module/ServerLinkApiExample.java | 2 +- .../apollo/example/command/ServerLinkCommand.java | 2 +- .../apollo/example/module/impl/ServerLinkExample.java | 2 +- .../apollo/example/json/module/ServerLinkJsonExample.java | 2 +- .../apollo/example/proto/module/ServerLinkProtoExample.java | 2 +- 11 files changed, 15 insertions(+), 10 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d9e8de16..d4c8e124 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -41,7 +41,7 @@ jobs: fi - name: Gradle Publish - if: "${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/version/') }}" + if: "${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/feature/server-links' || startsWith(github.ref, 'refs/heads/version/') }}" run: ./gradlew publish - name: Gradle Release diff --git a/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java b/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java index 2c186748..f4716c4a 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java +++ b/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java @@ -1,7 +1,7 @@ /* * This file is part of Apollo, licensed under the MIT License. * - * Copyright (c) 2023 Moonsworth + * Copyright (c) 2026 Moonsworth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java index 4d3bc2fa..2c6d5abf 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java +++ b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLink.java @@ -1,7 +1,7 @@ /* * This file is part of Apollo, licensed under the MIT License. * - * Copyright (c) 2023 Moonsworth + * Copyright (c) 2026 Moonsworth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java index aef0f059..f3010c97 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java @@ -1,7 +1,7 @@ /* * This file is part of Apollo, licensed under the MIT License. * - * Copyright (c) 2023 Moonsworth + * Copyright (c) 2026 Moonsworth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java index 770f404d..4427a971 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java @@ -1,7 +1,7 @@ /* * This file is part of Apollo, licensed under the MIT License. * - * Copyright (c) 2023 Moonsworth + * Copyright (c) 2026 Moonsworth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/listener/ApolloPlayerApiListener.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/listener/ApolloPlayerApiListener.java index 837b525d..3f1dc22e 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/listener/ApolloPlayerApiListener.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/listener/ApolloPlayerApiListener.java @@ -29,6 +29,7 @@ import com.lunarclient.apollo.event.player.ApolloRegisterPlayerEvent; import com.lunarclient.apollo.example.ApolloExamplePlugin; import com.lunarclient.apollo.example.api.module.TeamApiExample; +import com.lunarclient.apollo.example.module.impl.ServerLinkExample; import com.lunarclient.apollo.player.ApolloPlayer; import org.bukkit.entity.Player; @@ -61,6 +62,10 @@ private void onApolloRegister(ApolloRegisterPlayerEvent event) { this.example.getCooldownExample().displayCooldownItemExample(player); this.example.getNametagExample().overrideNametagExample(player); this.example.getWaypointExample().displayWaypointExample(player); + + ServerLinkExample serverLinkExample = this.example.getServerLinkExample(); + serverLinkExample.overrideServerLinkResourceExample(player); + serverLinkExample.addServerLinkExample(player); } } diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java index 826c3237..8c8f9e44 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java @@ -1,7 +1,7 @@ /* * This file is part of Apollo, licensed under the MIT License. * - * Copyright (c) 2023 Moonsworth + * Copyright (c) 2026 Moonsworth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerLinkCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerLinkCommand.java index 24f298b3..d5280228 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerLinkCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerLinkCommand.java @@ -1,7 +1,7 @@ /* * This file is part of Apollo, licensed under the MIT License. * - * Copyright (c) 2023 Moonsworth + * Copyright (c) 2026 Moonsworth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerLinkExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerLinkExample.java index 39e8f1e1..26ad56fb 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerLinkExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerLinkExample.java @@ -1,7 +1,7 @@ /* * This file is part of Apollo, licensed under the MIT License. * - * Copyright (c) 2023 Moonsworth + * Copyright (c) 2026 Moonsworth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerLinkJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerLinkJsonExample.java index 956363ac..6cd6f7cd 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerLinkJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerLinkJsonExample.java @@ -1,7 +1,7 @@ /* * This file is part of Apollo, licensed under the MIT License. * - * Copyright (c) 2023 Moonsworth + * Copyright (c) 2026 Moonsworth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerLinkProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerLinkProtoExample.java index 661f97ee..c39e53cc 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerLinkProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerLinkProtoExample.java @@ -1,7 +1,7 @@ /* * This file is part of Apollo, licensed under the MIT License. * - * Copyright (c) 2023 Moonsworth + * Copyright (c) 2026 Moonsworth * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal