diff --git a/api/src/bukkit/java/com/lunarclient/apollo/BukkitApollo.java b/api/src/bukkit/java/com/lunarclient/apollo/BukkitApollo.java index 78645cd21..00a61609e 100644 --- a/api/src/bukkit/java/com/lunarclient/apollo/BukkitApollo.java +++ b/api/src/bukkit/java/com/lunarclient/apollo/BukkitApollo.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/bungee/java/com/lunarclient/apollo/BungeeApollo.java b/api/src/bungee/java/com/lunarclient/apollo/BungeeApollo.java index 28c4a75d5..45e35767c 100644 --- a/api/src/bungee/java/com/lunarclient/apollo/BungeeApollo.java +++ b/api/src/bungee/java/com/lunarclient/apollo/BungeeApollo.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/folia/java/com/lunarclient/apollo/FoliaApollo.java b/api/src/folia/java/com/lunarclient/apollo/FoliaApollo.java index 846c89eb6..8d19ab2ef 100644 --- a/api/src/folia/java/com/lunarclient/apollo/FoliaApollo.java +++ b/api/src/folia/java/com/lunarclient/apollo/FoliaApollo.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/Apollo.java b/api/src/main/java/com/lunarclient/apollo/Apollo.java index 674fd6b94..c578914ec 100644 --- a/api/src/main/java/com/lunarclient/apollo/Apollo.java +++ b/api/src/main/java/com/lunarclient/apollo/Apollo.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/ApolloPlatform.java b/api/src/main/java/com/lunarclient/apollo/ApolloPlatform.java index 8ea25ec8c..f63d6cf4d 100644 --- a/api/src/main/java/com/lunarclient/apollo/ApolloPlatform.java +++ b/api/src/main/java/com/lunarclient/apollo/ApolloPlatform.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/api/ApiRequest.java b/api/src/main/java/com/lunarclient/apollo/api/ApiRequest.java index 063f19080..7b9b9371c 100644 --- a/api/src/main/java/com/lunarclient/apollo/api/ApiRequest.java +++ b/api/src/main/java/com/lunarclient/apollo/api/ApiRequest.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/api/ApiRequestType.java b/api/src/main/java/com/lunarclient/apollo/api/ApiRequestType.java index c749e34ae..832ecac61 100644 --- a/api/src/main/java/com/lunarclient/apollo/api/ApiRequestType.java +++ b/api/src/main/java/com/lunarclient/apollo/api/ApiRequestType.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/api/ApiResponse.java b/api/src/main/java/com/lunarclient/apollo/api/ApiResponse.java index 04807d742..0284ecbdc 100644 --- a/api/src/main/java/com/lunarclient/apollo/api/ApiResponse.java +++ b/api/src/main/java/com/lunarclient/apollo/api/ApiResponse.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/api/ApiServiceType.java b/api/src/main/java/com/lunarclient/apollo/api/ApiServiceType.java index ac59e0b12..a09e86dd3 100644 --- a/api/src/main/java/com/lunarclient/apollo/api/ApiServiceType.java +++ b/api/src/main/java/com/lunarclient/apollo/api/ApiServiceType.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/async/Future.java b/api/src/main/java/com/lunarclient/apollo/async/Future.java index 675170e38..b1a9ff9f2 100644 --- a/api/src/main/java/com/lunarclient/apollo/async/Future.java +++ b/api/src/main/java/com/lunarclient/apollo/async/Future.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/async/Handler.java b/api/src/main/java/com/lunarclient/apollo/async/Handler.java index 79cd11cd0..dbba8ff78 100644 --- a/api/src/main/java/com/lunarclient/apollo/async/Handler.java +++ b/api/src/main/java/com/lunarclient/apollo/async/Handler.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/async/future/UncertainFuture.java b/api/src/main/java/com/lunarclient/apollo/async/future/UncertainFuture.java index 74e8e5270..f91082196 100644 --- a/api/src/main/java/com/lunarclient/apollo/async/future/UncertainFuture.java +++ b/api/src/main/java/com/lunarclient/apollo/async/future/UncertainFuture.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/client/mod/LunarClientMod.java b/api/src/main/java/com/lunarclient/apollo/client/mod/LunarClientMod.java index fd619ab17..28c02c6c6 100644 --- a/api/src/main/java/com/lunarclient/apollo/client/mod/LunarClientMod.java +++ b/api/src/main/java/com/lunarclient/apollo/client/mod/LunarClientMod.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/client/mod/LunarClientModType.java b/api/src/main/java/com/lunarclient/apollo/client/mod/LunarClientModType.java index cc30b2d28..a437840fe 100644 --- a/api/src/main/java/com/lunarclient/apollo/client/mod/LunarClientModType.java +++ b/api/src/main/java/com/lunarclient/apollo/client/mod/LunarClientModType.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/client/version/LunarClientVersion.java b/api/src/main/java/com/lunarclient/apollo/client/version/LunarClientVersion.java index a5b0d791a..1edfec801 100644 --- a/api/src/main/java/com/lunarclient/apollo/client/version/LunarClientVersion.java +++ b/api/src/main/java/com/lunarclient/apollo/client/version/LunarClientVersion.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/client/version/MinecraftVersion.java b/api/src/main/java/com/lunarclient/apollo/client/version/MinecraftVersion.java index 418e9eb0d..9e9abaa73 100644 --- a/api/src/main/java/com/lunarclient/apollo/client/version/MinecraftVersion.java +++ b/api/src/main/java/com/lunarclient/apollo/client/version/MinecraftVersion.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/common/ApolloColors.java b/api/src/main/java/com/lunarclient/apollo/common/ApolloColors.java index 6861d4e5f..f1b4f6175 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/ApolloColors.java +++ b/api/src/main/java/com/lunarclient/apollo/common/ApolloColors.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/common/ApolloEntity.java b/api/src/main/java/com/lunarclient/apollo/common/ApolloEntity.java index f07ece8d4..9e38adbfa 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/ApolloEntity.java +++ b/api/src/main/java/com/lunarclient/apollo/common/ApolloEntity.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/common/cuboid/Cuboid2D.java b/api/src/main/java/com/lunarclient/apollo/common/cuboid/Cuboid2D.java index 8be2ed9be..c537ce318 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/cuboid/Cuboid2D.java +++ b/api/src/main/java/com/lunarclient/apollo/common/cuboid/Cuboid2D.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/common/cuboid/Cuboid3D.java b/api/src/main/java/com/lunarclient/apollo/common/cuboid/Cuboid3D.java index fd9e916b1..a327b9296 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/cuboid/Cuboid3D.java +++ b/api/src/main/java/com/lunarclient/apollo/common/cuboid/Cuboid3D.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/common/icon/AdvancedResourceLocationIcon.java b/api/src/main/java/com/lunarclient/apollo/common/icon/AdvancedResourceLocationIcon.java index f71410814..0bc0543ee 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/icon/AdvancedResourceLocationIcon.java +++ b/api/src/main/java/com/lunarclient/apollo/common/icon/AdvancedResourceLocationIcon.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/common/icon/Icon.java b/api/src/main/java/com/lunarclient/apollo/common/icon/Icon.java index 16e70a579..4ac19f948 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/icon/Icon.java +++ b/api/src/main/java/com/lunarclient/apollo/common/icon/Icon.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/common/icon/ItemStackIcon.java b/api/src/main/java/com/lunarclient/apollo/common/icon/ItemStackIcon.java index 963d98450..97ca66ab5 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/icon/ItemStackIcon.java +++ b/api/src/main/java/com/lunarclient/apollo/common/icon/ItemStackIcon.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/common/icon/ResourceLocationIcon.java b/api/src/main/java/com/lunarclient/apollo/common/icon/ResourceLocationIcon.java new file mode 100644 index 000000000..f4716c4a6 --- /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) 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 + * 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.5 + */ +@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.5 + */ + String resourceLocation; + +} diff --git a/api/src/main/java/com/lunarclient/apollo/common/icon/SimpleResourceLocationIcon.java b/api/src/main/java/com/lunarclient/apollo/common/icon/SimpleResourceLocationIcon.java index 88ef87b3b..e2b4bb7e8 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/icon/SimpleResourceLocationIcon.java +++ b/api/src/main/java/com/lunarclient/apollo/common/icon/SimpleResourceLocationIcon.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/common/location/ApolloBlockLocation.java b/api/src/main/java/com/lunarclient/apollo/common/location/ApolloBlockLocation.java index 9e728cdef..242fd1ffb 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/location/ApolloBlockLocation.java +++ b/api/src/main/java/com/lunarclient/apollo/common/location/ApolloBlockLocation.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/common/location/ApolloLocation.java b/api/src/main/java/com/lunarclient/apollo/common/location/ApolloLocation.java index bc6a0fe85..55225795a 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/location/ApolloLocation.java +++ b/api/src/main/java/com/lunarclient/apollo/common/location/ApolloLocation.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/common/location/ApolloPlayerLocation.java b/api/src/main/java/com/lunarclient/apollo/common/location/ApolloPlayerLocation.java index 8b8cd3cff..002fe7804 100644 --- a/api/src/main/java/com/lunarclient/apollo/common/location/ApolloPlayerLocation.java +++ b/api/src/main/java/com/lunarclient/apollo/common/location/ApolloPlayerLocation.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/event/ApolloListener.java b/api/src/main/java/com/lunarclient/apollo/event/ApolloListener.java index 07f104800..3c74e52fb 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/ApolloListener.java +++ b/api/src/main/java/com/lunarclient/apollo/event/ApolloListener.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/event/Event.java b/api/src/main/java/com/lunarclient/apollo/event/Event.java index 402b48043..67c00481c 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/Event.java +++ b/api/src/main/java/com/lunarclient/apollo/event/Event.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/event/EventBus.java b/api/src/main/java/com/lunarclient/apollo/event/EventBus.java index 4859c2f95..5309fc57e 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/EventBus.java +++ b/api/src/main/java/com/lunarclient/apollo/event/EventBus.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/event/EventCancellable.java b/api/src/main/java/com/lunarclient/apollo/event/EventCancellable.java index 6a011b3e5..a95bd2478 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/EventCancellable.java +++ b/api/src/main/java/com/lunarclient/apollo/event/EventCancellable.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/event/Listen.java b/api/src/main/java/com/lunarclient/apollo/event/Listen.java index 9232e0906..4c7152340 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/Listen.java +++ b/api/src/main/java/com/lunarclient/apollo/event/Listen.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/event/ReflectiveConsumer.java b/api/src/main/java/com/lunarclient/apollo/event/ReflectiveConsumer.java index 0badccf6f..47821a692 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/ReflectiveConsumer.java +++ b/api/src/main/java/com/lunarclient/apollo/event/ReflectiveConsumer.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/event/modsetting/ApolloUpdateModOptionEvent.java b/api/src/main/java/com/lunarclient/apollo/event/modsetting/ApolloUpdateModOptionEvent.java index 069458c18..d8724a6d6 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/modsetting/ApolloUpdateModOptionEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/modsetting/ApolloUpdateModOptionEvent.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/event/option/ApolloUpdateOptionEvent.java b/api/src/main/java/com/lunarclient/apollo/event/option/ApolloUpdateOptionEvent.java index 3ade4cff4..487ac1286 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/option/ApolloUpdateOptionEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/option/ApolloUpdateOptionEvent.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/event/packetenrichment/chat/ApolloPlayerChatCloseEvent.java b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/chat/ApolloPlayerChatCloseEvent.java index 26596d881..9f8250cab 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/chat/ApolloPlayerChatCloseEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/chat/ApolloPlayerChatCloseEvent.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/event/packetenrichment/chat/ApolloPlayerChatOpenEvent.java b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/chat/ApolloPlayerChatOpenEvent.java index 93ff80236..18dbe326a 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/chat/ApolloPlayerChatOpenEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/chat/ApolloPlayerChatOpenEvent.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/event/packetenrichment/melee/ApolloPlayerAttackEvent.java b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/melee/ApolloPlayerAttackEvent.java index 79562eddb..800773d05 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/melee/ApolloPlayerAttackEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/melee/ApolloPlayerAttackEvent.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/event/packetenrichment/world/ApolloPlayerUseItemBucketEvent.java b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/world/ApolloPlayerUseItemBucketEvent.java index a27c1395a..de7a03dce 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/world/ApolloPlayerUseItemBucketEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/world/ApolloPlayerUseItemBucketEvent.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/event/packetenrichment/world/ApolloPlayerUseItemEvent.java b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/world/ApolloPlayerUseItemEvent.java index beb9e6ede..eab73e621 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/world/ApolloPlayerUseItemEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/packetenrichment/world/ApolloPlayerUseItemEvent.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/event/player/ApolloPlayerHandshakeEvent.java b/api/src/main/java/com/lunarclient/apollo/event/player/ApolloPlayerHandshakeEvent.java index 69aa276d3..418533c01 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/player/ApolloPlayerHandshakeEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/player/ApolloPlayerHandshakeEvent.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/event/player/ApolloRegisterPlayerEvent.java b/api/src/main/java/com/lunarclient/apollo/event/player/ApolloRegisterPlayerEvent.java index 1c0f69f37..72442d0c4 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/player/ApolloRegisterPlayerEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/player/ApolloRegisterPlayerEvent.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/event/player/ApolloUnregisterPlayerEvent.java b/api/src/main/java/com/lunarclient/apollo/event/player/ApolloUnregisterPlayerEvent.java index c278f6109..ce8d0055a 100644 --- a/api/src/main/java/com/lunarclient/apollo/event/player/ApolloUnregisterPlayerEvent.java +++ b/api/src/main/java/com/lunarclient/apollo/event/player/ApolloUnregisterPlayerEvent.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/mods/Mods.java b/api/src/main/java/com/lunarclient/apollo/mods/Mods.java index 81cd35a3d..d8a175588 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/Mods.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/Mods.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/mods/impl/Mod2dItems.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/Mod2dItems.java index e234ff2eb..d9b175454 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/Mod2dItems.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/Mod2dItems.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/mods/impl/Mod3dSkins.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/Mod3dSkins.java index 839feed6e..5e6337808 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/Mod3dSkins.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/Mod3dSkins.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/mods/impl/ModArmorstatus.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java index 2e521b3dc..cf54d8b4d 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModArmorstatus.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/mods/impl/ModAudioSubtitles.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAudioSubtitles.java index 6417131a7..1ab6249b6 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAudioSubtitles.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAudioSubtitles.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/mods/impl/ModAutoTextActions.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAutoTextActions.java index dddbd4845..723b5522d 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAutoTextActions.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAutoTextActions.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/mods/impl/ModAutoTextHotkey.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAutoTextHotkey.java index c710daf9c..a2758655d 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAutoTextHotkey.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModAutoTextHotkey.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/mods/impl/ModBlockOutline.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModBlockOutline.java index 4fdd2fec1..e568eb1cb 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModBlockOutline.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModBlockOutline.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/mods/impl/ModBossbar.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModBossbar.java index b68f7d235..9e9c40494 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModBossbar.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModBossbar.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/mods/impl/ModChat.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModChat.java index e794e4f14..989814bc3 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModChat.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModChat.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/mods/impl/ModChunkBorders.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModChunkBorders.java index 6251c1a2f..24f8e0e49 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModChunkBorders.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModChunkBorders.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/mods/impl/ModClock.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModClock.java index 6257b4b5d..802667614 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModClock.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModClock.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/mods/impl/ModColorSaturation.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModColorSaturation.java index 5ba262223..61f559aba 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModColorSaturation.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModColorSaturation.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/mods/impl/ModCombo.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCombo.java index 01b918abb..fbde9c9b7 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCombo.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCombo.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/mods/impl/ModCooldowns.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCooldowns.java index d3fd8ef69..27e9c8292 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCooldowns.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCooldowns.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/mods/impl/ModCoordinates.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCoordinates.java index 543096967..66e1d91ac 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCoordinates.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCoordinates.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/mods/impl/ModCps.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCps.java index 0c711a7c0..ff1911535 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCps.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCps.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/mods/impl/ModCrosshair.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java index 806867148..2895204bc 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModCrosshair.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/mods/impl/ModDamageTint.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModDamageTint.java index 0f98ebfd6..86d04e89f 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModDamageTint.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModDamageTint.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/mods/impl/ModDayCounter.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModDayCounter.java index 5c82312bc..671548aa6 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModDayCounter.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModDayCounter.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/mods/impl/ModDirectionHud.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModDirectionHud.java index 5b7aa7c02..bd5bb1b14 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModDirectionHud.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModDirectionHud.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/mods/impl/ModF3Display.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModF3Display.java index 49534a688..3d17e7dc3 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModF3Display.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModF3Display.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/mods/impl/ModFog.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFog.java index b699abb42..6da911c92 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFog.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFog.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/mods/impl/ModFov.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFov.java index 8229b8ab8..8773a86b9 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFov.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFov.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/mods/impl/ModFps.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFps.java index 43f37e411..e6871a72e 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFps.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFps.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/mods/impl/ModFreelook.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFreelook.java index 052f61b4f..0c203e27d 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFreelook.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModFreelook.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/mods/impl/ModGlintColorizer.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGlintColorizer.java index 93658486c..83562e6dc 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGlintColorizer.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModGlintColorizer.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/mods/impl/ModHitColor.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHitColor.java index 135ebccd6..b42376c2e 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHitColor.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHitColor.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/mods/impl/ModHitbox.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHitbox.java index 8e1330f22..715abbd2d 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHitbox.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHitbox.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/mods/impl/ModHorseStats.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHorseStats.java index cf4e8ece9..536c8bcca 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHorseStats.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHorseStats.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/mods/impl/ModHurtCam.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHurtCam.java index 11c712a18..91c0aef15 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHurtCam.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHurtCam.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/mods/impl/ModHypixelBedwars.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHypixelBedwars.java index 06e85ffa9..3dc1df486 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHypixelBedwars.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHypixelBedwars.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/mods/impl/ModHypixelMod.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHypixelMod.java index 1329126a9..df33fccee 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHypixelMod.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModHypixelMod.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/mods/impl/ModInventoryMod.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModInventoryMod.java index d93df0c7d..b224de2e2 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModInventoryMod.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModInventoryMod.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/mods/impl/ModItemCounter.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModItemCounter.java index f4d5ae029..7d879e54e 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModItemCounter.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModItemCounter.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/mods/impl/ModItemPhysics.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModItemPhysics.java index a206035ff..9fc63fb15 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModItemPhysics.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModItemPhysics.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/mods/impl/ModItemTracker.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModItemTracker.java index af51e5f86..7bb83e6b4 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModItemTracker.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModItemTracker.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/mods/impl/ModKeystrokes.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModKeystrokes.java index be04bbebc..4c62bb09a 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModKeystrokes.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModKeystrokes.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/mods/impl/ModKillSounds.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModKillSounds.java index c73106102..095b0ade8 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModKillSounds.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModKillSounds.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/mods/impl/ModLighting.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModLighting.java index f0eca0ca8..bc0d48e2e 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModLighting.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModLighting.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/mods/impl/ModMarkers.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMarkers.java index 15ce1a0f5..a240ffe96 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMarkers.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMarkers.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/mods/impl/ModMemory.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMemory.java index e6e9f1c36..12a238172 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMemory.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMemory.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/mods/impl/ModMenuBlur.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMenuBlur.java index 675686819..4770484fd 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMenuBlur.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMenuBlur.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/mods/impl/ModMinimap.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMinimap.java index 051ba554f..b4a0429f2 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMinimap.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMinimap.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/mods/impl/ModMobSize.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMobSize.java index 3937c6eb6..d95900590 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMobSize.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMobSize.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/mods/impl/ModMomentum.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMomentum.java index 593dffb43..e25795dfa 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMomentum.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMomentum.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/mods/impl/ModMotionBlur.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMotionBlur.java index 6611458da..cebd9fea9 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMotionBlur.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMotionBlur.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/mods/impl/ModMumbleLink.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMumbleLink.java index ddb5efb5c..82f658da6 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMumbleLink.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModMumbleLink.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/mods/impl/ModNametag.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModNametag.java index b76ff9be8..64e724b60 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModNametag.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModNametag.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/mods/impl/ModNeu.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModNeu.java index f338d7607..dbea05580 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModNeu.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModNeu.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/mods/impl/ModNickHider.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModNickHider.java index fed02a3c0..bcc3874a1 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModNickHider.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModNickHider.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/mods/impl/ModOneSevenVisuals.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModOneSevenVisuals.java index 2d6ab6cfe..f7b973389 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModOneSevenVisuals.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModOneSevenVisuals.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/mods/impl/ModOverlayMod.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModOverlayMod.java index 489dc85ac..f079fb79b 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModOverlayMod.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModOverlayMod.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/mods/impl/ModPackDisplay.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPackDisplay.java index f0ad3a863..be91fbc3f 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPackDisplay.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPackDisplay.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/mods/impl/ModPackOrganizer.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPackOrganizer.java index 8e6d0d86f..3dc8c243b 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPackOrganizer.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPackOrganizer.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/mods/impl/ModParticleChanger.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModParticleChanger.java index e5473af93..dc998ce9e 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModParticleChanger.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModParticleChanger.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/mods/impl/ModPing.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPing.java index 21436fd36..059e63129 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPing.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPing.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/mods/impl/ModPlaytime.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPlaytime.java index 2484208a2..67a0efb70 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPlaytime.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPlaytime.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/mods/impl/ModPotionEffects.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPotionEffects.java index f00354aac..93be05cce 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPotionEffects.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPotionEffects.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/mods/impl/ModPvpInfo.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPvpInfo.java index e9106493f..eddce0e9c 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPvpInfo.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModPvpInfo.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/mods/impl/ModQuickplay.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModQuickplay.java index f65e63e65..1b219fcdb 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModQuickplay.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModQuickplay.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/mods/impl/ModRadio.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModRadio.java index 0b7b891af..d23b9a2f2 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModRadio.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModRadio.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/mods/impl/ModReachDisplay.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModReachDisplay.java index 778062612..e66aed178 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModReachDisplay.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModReachDisplay.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/mods/impl/ModReplaymod.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModReplaymod.java index c59e5d557..07c85da1a 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModReplaymod.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModReplaymod.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/mods/impl/ModRewind.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModRewind.java index e2a8c7c52..67323998e 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModRewind.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModRewind.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/mods/impl/ModSaturation.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSaturation.java index e35e81b38..bae9e1b24 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSaturation.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSaturation.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/mods/impl/ModSba.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSba.java index ba6b5687c..e85271dc1 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSba.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSba.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/mods/impl/ModScoreboard.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModScoreboard.java index 98a74f721..b0425df78 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModScoreboard.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModScoreboard.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/mods/impl/ModScreenshot.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModScreenshot.java index 478ed138c..2945c34bd 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModScreenshot.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModScreenshot.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/mods/impl/ModScrollableTooltips.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModScrollableTooltips.java index 06c6c4bad..c333af45f 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModScrollableTooltips.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModScrollableTooltips.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/mods/impl/ModServerAddress.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModServerAddress.java index 8caa3784d..07eae5262 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModServerAddress.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModServerAddress.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/mods/impl/ModShields.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModShields.java index 79a0a8ba6..e19aa8e83 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModShields.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModShields.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/mods/impl/ModShinyPots.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModShinyPots.java index 53a38c692..45ae2fb3e 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModShinyPots.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModShinyPots.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/mods/impl/ModShulkerPreview.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModShulkerPreview.java index 92add2a6d..3c8e9acdf 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModShulkerPreview.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModShulkerPreview.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/mods/impl/ModSkyblock.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSkyblock.java index b48036291..40281e0bf 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSkyblock.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSkyblock.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/mods/impl/ModSnaplook.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSnaplook.java index b0045f9be..5b7662b2b 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSnaplook.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSnaplook.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/mods/impl/ModSoundChanger.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSoundChanger.java index 1d24999d2..105bd5849 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSoundChanger.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModSoundChanger.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/mods/impl/ModStopwatch.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModStopwatch.java index efe8d4915..e994e63fa 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModStopwatch.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModStopwatch.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/mods/impl/ModTab.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTab.java index 1bf39e56e..9314d2e44 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTab.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTab.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/mods/impl/ModTeamView.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTeamView.java index 87dc94217..fbd76c69d 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTeamView.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTeamView.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/mods/impl/ModTierTagger.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTierTagger.java index 5de303447..87d3bfa8e 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTierTagger.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTierTagger.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/mods/impl/ModTimeChanger.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTimeChanger.java index 9d07a7a69..2a437e6be 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTimeChanger.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTimeChanger.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/mods/impl/ModTitles.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTitles.java index 87b74444c..d7f584be5 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTitles.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTitles.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/mods/impl/ModTntCountdown.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTntCountdown.java index 68abeacf6..9c4114e9e 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTntCountdown.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTntCountdown.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/mods/impl/ModToggleSneak.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModToggleSneak.java index fd4c834e4..1e4e0df65 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModToggleSneak.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModToggleSneak.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/mods/impl/ModTotemCounter.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTotemCounter.java index e8262b395..9ebd0aace 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTotemCounter.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModTotemCounter.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/mods/impl/ModUhcOverlay.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModUhcOverlay.java index 77986f260..848467323 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModUhcOverlay.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModUhcOverlay.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/mods/impl/ModWaila.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWaila.java index dc912f2e1..e9d0bf8b5 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWaila.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWaila.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/mods/impl/ModWaypoints.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWaypoints.java index 008b63a50..fad8ca134 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWaypoints.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWaypoints.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/mods/impl/ModWeatherChanger.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWeatherChanger.java index fede2873d..2423e298c 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWeatherChanger.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWeatherChanger.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/mods/impl/ModWorldeditCui.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWorldeditCui.java index 943ba4c4d..e90134981 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWorldeditCui.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModWorldeditCui.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/mods/impl/ModZoom.java b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModZoom.java index c35d1e122..092f6bede 100644 --- a/api/src/main/java/com/lunarclient/apollo/mods/impl/ModZoom.java +++ b/api/src/main/java/com/lunarclient/apollo/mods/impl/ModZoom.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/ApolloModule.java b/api/src/main/java/com/lunarclient/apollo/module/ApolloModule.java index ae1a03d4e..9135fd8e5 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/ApolloModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/ApolloModule.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/ApolloModuleManager.java b/api/src/main/java/com/lunarclient/apollo/module/ApolloModuleManager.java index 674a1f1ef..760bcdd36 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/ApolloModuleManager.java +++ b/api/src/main/java/com/lunarclient/apollo/module/ApolloModuleManager.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/ModuleDefinition.java b/api/src/main/java/com/lunarclient/apollo/module/ModuleDefinition.java index d9ae4e286..a441203e1 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/ModuleDefinition.java +++ b/api/src/main/java/com/lunarclient/apollo/module/ModuleDefinition.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/autotexthotkey/AutoTextHotkeyModule.java b/api/src/main/java/com/lunarclient/apollo/module/autotexthotkey/AutoTextHotkeyModule.java index 00db4ea6c..3e8226023 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/autotexthotkey/AutoTextHotkeyModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/autotexthotkey/AutoTextHotkeyModule.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/beam/Beam.java b/api/src/main/java/com/lunarclient/apollo/module/beam/Beam.java index 0b496134e..226f90e9c 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/beam/Beam.java +++ b/api/src/main/java/com/lunarclient/apollo/module/beam/Beam.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/beam/BeamModule.java b/api/src/main/java/com/lunarclient/apollo/module/beam/BeamModule.java index 6681ccf2d..672cc825f 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/beam/BeamModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/beam/BeamModule.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/border/Border.java b/api/src/main/java/com/lunarclient/apollo/module/border/Border.java index 2a02070e6..e25d13ca5 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/border/Border.java +++ b/api/src/main/java/com/lunarclient/apollo/module/border/Border.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/border/BorderModule.java b/api/src/main/java/com/lunarclient/apollo/module/border/BorderModule.java index 50d72135c..706d2ba4c 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/border/BorderModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/border/BorderModule.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/chat/ChatModule.java b/api/src/main/java/com/lunarclient/apollo/module/chat/ChatModule.java index 6faa18919..c6190500c 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/chat/ChatModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/chat/ChatModule.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/coloredfire/ColoredFireModule.java b/api/src/main/java/com/lunarclient/apollo/module/coloredfire/ColoredFireModule.java index 2f1012e20..f63dcaba0 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/coloredfire/ColoredFireModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/coloredfire/ColoredFireModule.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/combat/CombatModule.java b/api/src/main/java/com/lunarclient/apollo/module/combat/CombatModule.java index 3a57de46f..76288ec0a 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/combat/CombatModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/combat/CombatModule.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/cooldown/Cooldown.java b/api/src/main/java/com/lunarclient/apollo/module/cooldown/Cooldown.java index 58cefa889..3a029f397 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/cooldown/Cooldown.java +++ b/api/src/main/java/com/lunarclient/apollo/module/cooldown/Cooldown.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 @@ -27,6 +27,7 @@ import java.time.Duration; import lombok.Builder; import lombok.Getter; +import org.jetbrains.annotations.Nullable; /** * Represents a cooldown which can be shown on the client. @@ -64,4 +65,14 @@ public final class Cooldown { */ Icon icon; + /** + * Returns the cooldown {@link CooldownStyle}. + * + *

If {@code null}, the style defaults to the user's local Cooldown Mod settings.

+ * + * @return the cooldown style + * @since 1.2.5 + */ + @Nullable CooldownStyle style; + } diff --git a/api/src/main/java/com/lunarclient/apollo/module/cooldown/CooldownModule.java b/api/src/main/java/com/lunarclient/apollo/module/cooldown/CooldownModule.java index b40b9aac7..a0b506727 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/cooldown/CooldownModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/cooldown/CooldownModule.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/cooldown/CooldownStyle.java b/api/src/main/java/com/lunarclient/apollo/module/cooldown/CooldownStyle.java new file mode 100644 index 000000000..2641e5a3b --- /dev/null +++ b/api/src/main/java/com/lunarclient/apollo/module/cooldown/CooldownStyle.java @@ -0,0 +1,72 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * 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 + * 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.cooldown; + +import java.awt.Color; +import lombok.Builder; +import lombok.Getter; +import org.jetbrains.annotations.Nullable; + +/** + * Represents the {@link Cooldown} style, allowing customization of the circle start, end, edge & text color. + * + * @since 1.2.5 + */ +@Getter +@Builder +public final class CooldownStyle { + + /** + * Returns the cooldown circle start {@link Color}. + * + * @return the circle start color + * @since 1.2.5 + */ + @Nullable Color circleStartColor; + + /** + * Returns the cooldown circle end {@link Color}. + * + * @return the circle end color + * @since 1.2.5 + */ + @Nullable Color circleEndColor; + + /** + * Returns the cooldown circle edge {@link Color}. + * + * @return the circle edge color + * @since 1.2.5 + */ + @Nullable Color circleEdgeColor; + + /** + * Returns the cooldown text {@link Color}. + * + * @return the text color + * @since 1.2.5 + */ + @Nullable Color textColor; + +} diff --git a/api/src/main/java/com/lunarclient/apollo/module/entity/EntityModule.java b/api/src/main/java/com/lunarclient/apollo/module/entity/EntityModule.java index 5e3ca4666..43454aeeb 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/entity/EntityModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/entity/EntityModule.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/glint/GlintModule.java b/api/src/main/java/com/lunarclient/apollo/module/glint/GlintModule.java index 0b8ed9707..7fb6cdaff 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/glint/GlintModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/glint/GlintModule.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/glow/GlowModule.java b/api/src/main/java/com/lunarclient/apollo/module/glow/GlowModule.java index aa4b6e791..1c4164ade 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/glow/GlowModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/glow/GlowModule.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/hologram/Hologram.java b/api/src/main/java/com/lunarclient/apollo/module/hologram/Hologram.java index 192802fd7..8b73b1afc 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/hologram/Hologram.java +++ b/api/src/main/java/com/lunarclient/apollo/module/hologram/Hologram.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/hologram/HologramModule.java b/api/src/main/java/com/lunarclient/apollo/module/hologram/HologramModule.java index 9d5dea47a..b9e46ad47 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/hologram/HologramModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/hologram/HologramModule.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/inventory/InventoryModule.java b/api/src/main/java/com/lunarclient/apollo/module/inventory/InventoryModule.java index 968b48a68..ed5861e3b 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/inventory/InventoryModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/inventory/InventoryModule.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/limb/ArmorPiece.java b/api/src/main/java/com/lunarclient/apollo/module/limb/ArmorPiece.java index 0c676a69c..6a8d4fe88 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/limb/ArmorPiece.java +++ b/api/src/main/java/com/lunarclient/apollo/module/limb/ArmorPiece.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/limb/BodyPart.java b/api/src/main/java/com/lunarclient/apollo/module/limb/BodyPart.java index 7484f9a47..3b0bed074 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/limb/BodyPart.java +++ b/api/src/main/java/com/lunarclient/apollo/module/limb/BodyPart.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/limb/LimbModule.java b/api/src/main/java/com/lunarclient/apollo/module/limb/LimbModule.java index 8d8805239..81ed3cd9f 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/limb/LimbModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/limb/LimbModule.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/modsetting/ModSettingModule.java b/api/src/main/java/com/lunarclient/apollo/module/modsetting/ModSettingModule.java index c51a89520..cdad6ef4b 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/modsetting/ModSettingModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/modsetting/ModSettingModule.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/nametag/Nametag.java b/api/src/main/java/com/lunarclient/apollo/module/nametag/Nametag.java index 8ef9a80bc..5089ffd81 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/nametag/Nametag.java +++ b/api/src/main/java/com/lunarclient/apollo/module/nametag/Nametag.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/nametag/NametagModule.java b/api/src/main/java/com/lunarclient/apollo/module/nametag/NametagModule.java index 9fa72b982..a88c8ba3b 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/nametag/NametagModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/nametag/NametagModule.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/nickhider/NickHiderModule.java b/api/src/main/java/com/lunarclient/apollo/module/nickhider/NickHiderModule.java index a8bfe8afc..7194ccf47 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/nickhider/NickHiderModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/nickhider/NickHiderModule.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/notification/Notification.java b/api/src/main/java/com/lunarclient/apollo/module/notification/Notification.java index 4a8ea14a3..4943134e2 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/notification/Notification.java +++ b/api/src/main/java/com/lunarclient/apollo/module/notification/Notification.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/notification/NotificationModule.java b/api/src/main/java/com/lunarclient/apollo/module/notification/NotificationModule.java index 1828d5d57..1a0c20b41 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/notification/NotificationModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/notification/NotificationModule.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/packetenrichment/PacketEnrichmentModule.java b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/PacketEnrichmentModule.java index bf519e076..cec82188d 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/PacketEnrichmentModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/PacketEnrichmentModule.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/packetenrichment/PlayerInfo.java b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/PlayerInfo.java index d405097c4..9e2304155 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/PlayerInfo.java +++ b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/PlayerInfo.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/packetenrichment/raytrace/BlockHitResult.java b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/BlockHitResult.java index 6bd312c8b..6e5b1e660 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/BlockHitResult.java +++ b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/BlockHitResult.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/packetenrichment/raytrace/Direction.java b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/Direction.java index 9b729b15c..2b6e48a3d 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/Direction.java +++ b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/Direction.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/packetenrichment/raytrace/EntityHitResult.java b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/EntityHitResult.java index 030436b82..4b95b7082 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/EntityHitResult.java +++ b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/EntityHitResult.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/packetenrichment/raytrace/MissResult.java b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/MissResult.java index 5c7f91bc3..f400ad86a 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/MissResult.java +++ b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/MissResult.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/packetenrichment/raytrace/RayTraceResult.java b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/RayTraceResult.java index 46eb2667d..beb4c6d57 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/RayTraceResult.java +++ b/api/src/main/java/com/lunarclient/apollo/module/packetenrichment/raytrace/RayTraceResult.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/paynow/PayNowEmbeddedCheckoutSupport.java b/api/src/main/java/com/lunarclient/apollo/module/paynow/PayNowEmbeddedCheckoutSupport.java index 4a9be059f..0127b4a79 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/paynow/PayNowEmbeddedCheckoutSupport.java +++ b/api/src/main/java/com/lunarclient/apollo/module/paynow/PayNowEmbeddedCheckoutSupport.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/paynow/PayNowModule.java b/api/src/main/java/com/lunarclient/apollo/module/paynow/PayNowModule.java index 79fcc41cc..47561b2a3 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/paynow/PayNowModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/paynow/PayNowModule.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/richpresence/RichPresenceModule.java b/api/src/main/java/com/lunarclient/apollo/module/richpresence/RichPresenceModule.java index 25f08cecf..162ad2eea 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/richpresence/RichPresenceModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/richpresence/RichPresenceModule.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/richpresence/ServerRichPresence.java b/api/src/main/java/com/lunarclient/apollo/module/richpresence/ServerRichPresence.java index cb0c97255..cb7b1ca4f 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/richpresence/ServerRichPresence.java +++ b/api/src/main/java/com/lunarclient/apollo/module/richpresence/ServerRichPresence.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/saturation/SaturationModule.java b/api/src/main/java/com/lunarclient/apollo/module/saturation/SaturationModule.java index a1f40bbac..7a3148cba 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/saturation/SaturationModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/saturation/SaturationModule.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 new file mode 100644 index 000000000..2c6d5abfe --- /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) 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 + * 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.5 + */ +@Getter +@Builder +public final class ServerLink { + + /** + * Returns the server link {@link String} id. + * + * @return the server link id + * @since 1.2.5 + */ + String id; + + /** + * Returns the server link {@link Component} display name. + * + * @return the server link display name + * @since 1.2.5 + */ + Component displayName; + + /** + * Returns the server link {@link String} url. + * + * @return the server link url + * @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 new file mode 100644 index 000000000..f3010c971 --- /dev/null +++ b/api/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModule.java @@ -0,0 +1,130 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * 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 + * 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.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; + +/** + * 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.5 + */ +@ApiStatus.NonExtendable +@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.5 + */ + 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.5 + */ + 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.5 + */ + 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.5 + */ + 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.5 + */ + 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.5 + */ + 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.5 + */ + 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.5 + */ + public abstract void resetServerLinks(Recipients recipients); + +} diff --git a/api/src/main/java/com/lunarclient/apollo/module/serverrule/ServerRuleModule.java b/api/src/main/java/com/lunarclient/apollo/module/serverrule/ServerRuleModule.java index b7931ea71..01092e3f7 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/serverrule/ServerRuleModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/serverrule/ServerRuleModule.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/staffmod/StaffMod.java b/api/src/main/java/com/lunarclient/apollo/module/staffmod/StaffMod.java index de64a3e96..6585a5b28 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/staffmod/StaffMod.java +++ b/api/src/main/java/com/lunarclient/apollo/module/staffmod/StaffMod.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/staffmod/StaffModModule.java b/api/src/main/java/com/lunarclient/apollo/module/staffmod/StaffModModule.java index 5a8a348d7..ed1d99998 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/staffmod/StaffModModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/staffmod/StaffModModule.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/stopwatch/StopwatchModule.java b/api/src/main/java/com/lunarclient/apollo/module/stopwatch/StopwatchModule.java index 71e47778f..bec983169 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/stopwatch/StopwatchModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/stopwatch/StopwatchModule.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/team/TeamMember.java b/api/src/main/java/com/lunarclient/apollo/module/team/TeamMember.java index 7cf3befb6..25ceba6f1 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/team/TeamMember.java +++ b/api/src/main/java/com/lunarclient/apollo/module/team/TeamMember.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 @@ -29,6 +29,7 @@ import lombok.Builder; import lombok.Getter; import net.kyori.adventure.text.Component; +import org.jetbrains.annotations.Nullable; /** * Represents a team which can be shown on the client. @@ -50,23 +51,25 @@ public final class TeamMember { /** * Returns the team member's {@link Component}. * - *

The display name is only used when the player - * is out of render distance for the observer and when the - * observer hovers over the marker.

+ *

The display name is only shown when the player is outside + * the observer's render distance and when the observer hovers + * over the marker. If not provided, only the marker is displayed.

* * @return the team member's display name * @since 1.0.0 */ - Component displayName; + @Nullable Component displayName; /** * Returns the team member's assigned {@link Color} - this will be used * for any markers (such as on duration HUD, above head markers, etc). * + *

If not provided, the default color {@code 0xFFFFFFFF} is used.

+ * * @return the team member's marker color * @since 1.0.0 */ - Color markerColor; + @Nullable Color markerColor; /** * Returns the team member's {@link ApolloLocation}. @@ -78,6 +81,6 @@ public final class TeamMember { * @return the team member location * @since 1.0.0 */ - ApolloLocation location; + @Nullable ApolloLocation location; } diff --git a/api/src/main/java/com/lunarclient/apollo/module/team/TeamModule.java b/api/src/main/java/com/lunarclient/apollo/module/team/TeamModule.java index 20f613125..4a27f1047 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/team/TeamModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/team/TeamModule.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/tebex/TebexEmbeddedCheckoutSupport.java b/api/src/main/java/com/lunarclient/apollo/module/tebex/TebexEmbeddedCheckoutSupport.java index 4f0685777..7634006dc 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/tebex/TebexEmbeddedCheckoutSupport.java +++ b/api/src/main/java/com/lunarclient/apollo/module/tebex/TebexEmbeddedCheckoutSupport.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/tebex/TebexModule.java b/api/src/main/java/com/lunarclient/apollo/module/tebex/TebexModule.java index 48b90d36f..6fafb7601 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/tebex/TebexModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/tebex/TebexModule.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/title/Title.java b/api/src/main/java/com/lunarclient/apollo/module/title/Title.java index ec207dfe4..2547de9de 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/title/Title.java +++ b/api/src/main/java/com/lunarclient/apollo/module/title/Title.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/title/TitleModule.java b/api/src/main/java/com/lunarclient/apollo/module/title/TitleModule.java index f75cddd17..ca0cc6e1d 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/title/TitleModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/title/TitleModule.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/title/TitleType.java b/api/src/main/java/com/lunarclient/apollo/module/title/TitleType.java index 66716704e..9841920ea 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/title/TitleType.java +++ b/api/src/main/java/com/lunarclient/apollo/module/title/TitleType.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/tntcountdown/TntCountdownModule.java b/api/src/main/java/com/lunarclient/apollo/module/tntcountdown/TntCountdownModule.java index 77aa5d457..cb7db0668 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/tntcountdown/TntCountdownModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/tntcountdown/TntCountdownModule.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/transfer/PingRequest.java b/api/src/main/java/com/lunarclient/apollo/module/transfer/PingRequest.java index 6d6558650..276404005 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/transfer/PingRequest.java +++ b/api/src/main/java/com/lunarclient/apollo/module/transfer/PingRequest.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/transfer/PingResponse.java b/api/src/main/java/com/lunarclient/apollo/module/transfer/PingResponse.java index 9a88b242a..645303d5f 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/transfer/PingResponse.java +++ b/api/src/main/java/com/lunarclient/apollo/module/transfer/PingResponse.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/transfer/TransferModule.java b/api/src/main/java/com/lunarclient/apollo/module/transfer/TransferModule.java index 21ca0d73c..2d033f4d8 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/transfer/TransferModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/transfer/TransferModule.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/transfer/TransferRequest.java b/api/src/main/java/com/lunarclient/apollo/module/transfer/TransferRequest.java index ebade2311..5054841a2 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/transfer/TransferRequest.java +++ b/api/src/main/java/com/lunarclient/apollo/module/transfer/TransferRequest.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/transfer/TransferResponse.java b/api/src/main/java/com/lunarclient/apollo/module/transfer/TransferResponse.java index 8a96c2c01..0fa8a17a9 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/transfer/TransferResponse.java +++ b/api/src/main/java/com/lunarclient/apollo/module/transfer/TransferResponse.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/vignette/Vignette.java b/api/src/main/java/com/lunarclient/apollo/module/vignette/Vignette.java index bc9937e34..21a44fb3f 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/vignette/Vignette.java +++ b/api/src/main/java/com/lunarclient/apollo/module/vignette/Vignette.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/vignette/VignetteModule.java b/api/src/main/java/com/lunarclient/apollo/module/vignette/VignetteModule.java index 92b977917..4850786a3 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/vignette/VignetteModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/vignette/VignetteModule.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/waypoint/Waypoint.java b/api/src/main/java/com/lunarclient/apollo/module/waypoint/Waypoint.java index 6fdf1eb17..39c534b30 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/waypoint/Waypoint.java +++ b/api/src/main/java/com/lunarclient/apollo/module/waypoint/Waypoint.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/waypoint/WaypointModule.java b/api/src/main/java/com/lunarclient/apollo/module/waypoint/WaypointModule.java index 379d14159..176adab5c 100644 --- a/api/src/main/java/com/lunarclient/apollo/module/waypoint/WaypointModule.java +++ b/api/src/main/java/com/lunarclient/apollo/module/waypoint/WaypointModule.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/option/EmptyOptions.java b/api/src/main/java/com/lunarclient/apollo/option/EmptyOptions.java index 62bbe5dc3..c7449c183 100644 --- a/api/src/main/java/com/lunarclient/apollo/option/EmptyOptions.java +++ b/api/src/main/java/com/lunarclient/apollo/option/EmptyOptions.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/option/EnumOption.java b/api/src/main/java/com/lunarclient/apollo/option/EnumOption.java index 548d33cc9..e501175b2 100644 --- a/api/src/main/java/com/lunarclient/apollo/option/EnumOption.java +++ b/api/src/main/java/com/lunarclient/apollo/option/EnumOption.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/option/ListOption.java b/api/src/main/java/com/lunarclient/apollo/option/ListOption.java index c2d6bce08..09d048e16 100644 --- a/api/src/main/java/com/lunarclient/apollo/option/ListOption.java +++ b/api/src/main/java/com/lunarclient/apollo/option/ListOption.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/option/NumberOption.java b/api/src/main/java/com/lunarclient/apollo/option/NumberOption.java index a27a4a3de..dcfb3179b 100644 --- a/api/src/main/java/com/lunarclient/apollo/option/NumberOption.java +++ b/api/src/main/java/com/lunarclient/apollo/option/NumberOption.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/option/Option.java b/api/src/main/java/com/lunarclient/apollo/option/Option.java index 3a0115160..24d61baf9 100644 --- a/api/src/main/java/com/lunarclient/apollo/option/Option.java +++ b/api/src/main/java/com/lunarclient/apollo/option/Option.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/option/OptionBuilder.java b/api/src/main/java/com/lunarclient/apollo/option/OptionBuilder.java index ac9c44bf9..d1e46378a 100644 --- a/api/src/main/java/com/lunarclient/apollo/option/OptionBuilder.java +++ b/api/src/main/java/com/lunarclient/apollo/option/OptionBuilder.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/option/Options.java b/api/src/main/java/com/lunarclient/apollo/option/Options.java index 7c13447b1..a494f7ce4 100644 --- a/api/src/main/java/com/lunarclient/apollo/option/Options.java +++ b/api/src/main/java/com/lunarclient/apollo/option/Options.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/option/SimpleOption.java b/api/src/main/java/com/lunarclient/apollo/option/SimpleOption.java index 1ccb7533b..54b756a05 100644 --- a/api/src/main/java/com/lunarclient/apollo/option/SimpleOption.java +++ b/api/src/main/java/com/lunarclient/apollo/option/SimpleOption.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/player/ApolloPlayer.java b/api/src/main/java/com/lunarclient/apollo/player/ApolloPlayer.java index b64ff4481..3a2bc71f9 100644 --- a/api/src/main/java/com/lunarclient/apollo/player/ApolloPlayer.java +++ b/api/src/main/java/com/lunarclient/apollo/player/ApolloPlayer.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/player/ApolloPlayerManager.java b/api/src/main/java/com/lunarclient/apollo/player/ApolloPlayerManager.java index a05387665..4543c6826 100644 --- a/api/src/main/java/com/lunarclient/apollo/player/ApolloPlayerManager.java +++ b/api/src/main/java/com/lunarclient/apollo/player/ApolloPlayerManager.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/recipients/ForwardingRecipients.java b/api/src/main/java/com/lunarclient/apollo/recipients/ForwardingRecipients.java index 57ad9993f..f89eb3281 100644 --- a/api/src/main/java/com/lunarclient/apollo/recipients/ForwardingRecipients.java +++ b/api/src/main/java/com/lunarclient/apollo/recipients/ForwardingRecipients.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/recipients/Recipients.java b/api/src/main/java/com/lunarclient/apollo/recipients/Recipients.java index dbf3da036..29f2f81a8 100644 --- a/api/src/main/java/com/lunarclient/apollo/recipients/Recipients.java +++ b/api/src/main/java/com/lunarclient/apollo/recipients/Recipients.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/roundtrip/ApolloRequest.java b/api/src/main/java/com/lunarclient/apollo/roundtrip/ApolloRequest.java index a163cf727..372d8ae3f 100644 --- a/api/src/main/java/com/lunarclient/apollo/roundtrip/ApolloRequest.java +++ b/api/src/main/java/com/lunarclient/apollo/roundtrip/ApolloRequest.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/roundtrip/ApolloResponse.java b/api/src/main/java/com/lunarclient/apollo/roundtrip/ApolloResponse.java index 73e3bf2be..192894e6a 100644 --- a/api/src/main/java/com/lunarclient/apollo/roundtrip/ApolloResponse.java +++ b/api/src/main/java/com/lunarclient/apollo/roundtrip/ApolloResponse.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/roundtrip/ApolloRoundtripManager.java b/api/src/main/java/com/lunarclient/apollo/roundtrip/ApolloRoundtripManager.java index 5e7111f5b..bc70306bb 100644 --- a/api/src/main/java/com/lunarclient/apollo/roundtrip/ApolloRoundtripManager.java +++ b/api/src/main/java/com/lunarclient/apollo/roundtrip/ApolloRoundtripManager.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/stats/ApolloPluginDescription.java b/api/src/main/java/com/lunarclient/apollo/stats/ApolloPluginDescription.java index 48c121f65..bc2804aca 100644 --- a/api/src/main/java/com/lunarclient/apollo/stats/ApolloPluginDescription.java +++ b/api/src/main/java/com/lunarclient/apollo/stats/ApolloPluginDescription.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/stats/ApolloStats.java b/api/src/main/java/com/lunarclient/apollo/stats/ApolloStats.java index 03b16d930..e402137f8 100644 --- a/api/src/main/java/com/lunarclient/apollo/stats/ApolloStats.java +++ b/api/src/main/java/com/lunarclient/apollo/stats/ApolloStats.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/util/ConfigTarget.java b/api/src/main/java/com/lunarclient/apollo/util/ConfigTarget.java index 4f4a666c5..8957d0fa2 100644 --- a/api/src/main/java/com/lunarclient/apollo/util/ConfigTarget.java +++ b/api/src/main/java/com/lunarclient/apollo/util/ConfigTarget.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/world/ApolloWorld.java b/api/src/main/java/com/lunarclient/apollo/world/ApolloWorld.java index 84fe1ddc2..5ef9802f6 100644 --- a/api/src/main/java/com/lunarclient/apollo/world/ApolloWorld.java +++ b/api/src/main/java/com/lunarclient/apollo/world/ApolloWorld.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/world/ApolloWorldManager.java b/api/src/main/java/com/lunarclient/apollo/world/ApolloWorldManager.java index fc491cf66..86276c22e 100644 --- a/api/src/main/java/com/lunarclient/apollo/world/ApolloWorldManager.java +++ b/api/src/main/java/com/lunarclient/apollo/world/ApolloWorldManager.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/minestom/java/com/lunarclient/apollo/MinestomApollo.java b/api/src/minestom/java/com/lunarclient/apollo/MinestomApollo.java index fa8b42def..14144d2db 100644 --- a/api/src/minestom/java/com/lunarclient/apollo/MinestomApollo.java +++ b/api/src/minestom/java/com/lunarclient/apollo/MinestomApollo.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/velocity/java/com/lunarclient/apollo/VelocityApollo.java b/api/src/velocity/java/com/lunarclient/apollo/VelocityApollo.java index 460860daa..f88992ed2 100644 --- a/api/src/velocity/java/com/lunarclient/apollo/VelocityApollo.java +++ b/api/src/velocity/java/com/lunarclient/apollo/VelocityApollo.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/ApolloConfig.java b/common/src/main/java/com/lunarclient/apollo/ApolloConfig.java index 8ad9adced..06b1886a4 100644 --- a/common/src/main/java/com/lunarclient/apollo/ApolloConfig.java +++ b/common/src/main/java/com/lunarclient/apollo/ApolloConfig.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/ApolloManager.java b/common/src/main/java/com/lunarclient/apollo/ApolloManager.java index 0490073fe..c615bfca7 100644 --- a/common/src/main/java/com/lunarclient/apollo/ApolloManager.java +++ b/common/src/main/java/com/lunarclient/apollo/ApolloManager.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/api/ApolloHttpManager.java b/common/src/main/java/com/lunarclient/apollo/api/ApolloHttpManager.java index 532e03dd7..8cd7f7f56 100644 --- a/common/src/main/java/com/lunarclient/apollo/api/ApolloHttpManager.java +++ b/common/src/main/java/com/lunarclient/apollo/api/ApolloHttpManager.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/api/request/DownloadFileRequest.java b/common/src/main/java/com/lunarclient/apollo/api/request/DownloadFileRequest.java index d527d652a..6473a80ed 100644 --- a/common/src/main/java/com/lunarclient/apollo/api/request/DownloadFileRequest.java +++ b/common/src/main/java/com/lunarclient/apollo/api/request/DownloadFileRequest.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/api/request/ServerStartRequest.java b/common/src/main/java/com/lunarclient/apollo/api/request/ServerStartRequest.java index c5b86e361..9990f84f9 100644 --- a/common/src/main/java/com/lunarclient/apollo/api/request/ServerStartRequest.java +++ b/common/src/main/java/com/lunarclient/apollo/api/request/ServerStartRequest.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/api/request/VersionRequest.java b/common/src/main/java/com/lunarclient/apollo/api/request/VersionRequest.java index 7861877d1..a4677e9ac 100644 --- a/common/src/main/java/com/lunarclient/apollo/api/request/VersionRequest.java +++ b/common/src/main/java/com/lunarclient/apollo/api/request/VersionRequest.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/api/request/heartbeat/ServerHeartbeatRequest.java b/common/src/main/java/com/lunarclient/apollo/api/request/heartbeat/ServerHeartbeatRequest.java index 2a7e5322f..22a48fa3a 100644 --- a/common/src/main/java/com/lunarclient/apollo/api/request/heartbeat/ServerHeartbeatRequest.java +++ b/common/src/main/java/com/lunarclient/apollo/api/request/heartbeat/ServerHeartbeatRequest.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/api/response/DownloadFileResponse.java b/common/src/main/java/com/lunarclient/apollo/api/response/DownloadFileResponse.java index b8f010db5..e7e53c36c 100644 --- a/common/src/main/java/com/lunarclient/apollo/api/response/DownloadFileResponse.java +++ b/common/src/main/java/com/lunarclient/apollo/api/response/DownloadFileResponse.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/api/response/ServerHeartbeatResponse.java b/common/src/main/java/com/lunarclient/apollo/api/response/ServerHeartbeatResponse.java index 34c7d82d3..7f3b101e5 100644 --- a/common/src/main/java/com/lunarclient/apollo/api/response/ServerHeartbeatResponse.java +++ b/common/src/main/java/com/lunarclient/apollo/api/response/ServerHeartbeatResponse.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/api/response/ServerStartResponse.java b/common/src/main/java/com/lunarclient/apollo/api/response/ServerStartResponse.java index a536d6ce7..e70922c33 100644 --- a/common/src/main/java/com/lunarclient/apollo/api/response/ServerStartResponse.java +++ b/common/src/main/java/com/lunarclient/apollo/api/response/ServerStartResponse.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/api/response/VersionResponse.java b/common/src/main/java/com/lunarclient/apollo/api/response/VersionResponse.java index ae861a27b..a0355cf9c 100644 --- a/common/src/main/java/com/lunarclient/apollo/api/response/VersionResponse.java +++ b/common/src/main/java/com/lunarclient/apollo/api/response/VersionResponse.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/command/AbstractApolloCommand.java b/common/src/main/java/com/lunarclient/apollo/command/AbstractApolloCommand.java index 672625296..86c230430 100644 --- a/common/src/main/java/com/lunarclient/apollo/command/AbstractApolloCommand.java +++ b/common/src/main/java/com/lunarclient/apollo/command/AbstractApolloCommand.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/command/type/ApolloCommand.java b/common/src/main/java/com/lunarclient/apollo/command/type/ApolloCommand.java index a18bf3231..ac1523101 100644 --- a/common/src/main/java/com/lunarclient/apollo/command/type/ApolloCommand.java +++ b/common/src/main/java/com/lunarclient/apollo/command/type/ApolloCommand.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/command/type/LunarClientCommand.java b/common/src/main/java/com/lunarclient/apollo/command/type/LunarClientCommand.java index 74ba54c39..09d8faa36 100644 --- a/common/src/main/java/com/lunarclient/apollo/command/type/LunarClientCommand.java +++ b/common/src/main/java/com/lunarclient/apollo/command/type/LunarClientCommand.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/event/ApolloReceivePacketEvent.java b/common/src/main/java/com/lunarclient/apollo/event/ApolloReceivePacketEvent.java index 3a75a4612..84fa25bd6 100644 --- a/common/src/main/java/com/lunarclient/apollo/event/ApolloReceivePacketEvent.java +++ b/common/src/main/java/com/lunarclient/apollo/event/ApolloReceivePacketEvent.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/event/ApolloSendPacketEvent.java b/common/src/main/java/com/lunarclient/apollo/event/ApolloSendPacketEvent.java index 34dc08677..ff3a9bc0e 100644 --- a/common/src/main/java/com/lunarclient/apollo/event/ApolloSendPacketEvent.java +++ b/common/src/main/java/com/lunarclient/apollo/event/ApolloSendPacketEvent.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/mods/ApolloModsManager.java b/common/src/main/java/com/lunarclient/apollo/mods/ApolloModsManager.java index 4925df21a..c2041755e 100644 --- a/common/src/main/java/com/lunarclient/apollo/mods/ApolloModsManager.java +++ b/common/src/main/java/com/lunarclient/apollo/mods/ApolloModsManager.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/ApolloModuleManagerImpl.java b/common/src/main/java/com/lunarclient/apollo/module/ApolloModuleManagerImpl.java index f744e82a2..3ff07e225 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/ApolloModuleManagerImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/ApolloModuleManagerImpl.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/beam/BeamModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/beam/BeamModuleImpl.java index dcaaf3e61..7353eb986 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/beam/BeamModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/beam/BeamModuleImpl.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/border/BorderModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/border/BorderModuleImpl.java index 07d31e53a..d4677ec06 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/border/BorderModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/border/BorderModuleImpl.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/chat/ChatModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/chat/ChatModuleImpl.java index 68dbdfd36..2ccedc8f4 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/chat/ChatModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/chat/ChatModuleImpl.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/coloredfire/ColoredFireModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/coloredfire/ColoredFireModuleImpl.java index 117e35c5f..d4227e370 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/coloredfire/ColoredFireModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/coloredfire/ColoredFireModuleImpl.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/cooldown/CooldownModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/cooldown/CooldownModuleImpl.java index 7b602547a..ede716744 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/cooldown/CooldownModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/cooldown/CooldownModuleImpl.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 @@ -29,6 +29,7 @@ import com.lunarclient.apollo.network.NetworkTypes; import com.lunarclient.apollo.player.AbstractApolloPlayer; import com.lunarclient.apollo.recipients.Recipients; +import java.awt.Color; import lombok.NonNull; /** @@ -40,12 +41,17 @@ public final class CooldownModuleImpl extends CooldownModule { @Override public void displayCooldown(@NonNull Recipients recipients, @NonNull Cooldown cooldown) { - DisplayCooldownMessage message = DisplayCooldownMessage.newBuilder() + DisplayCooldownMessage.Builder builder = DisplayCooldownMessage.newBuilder() .setName(cooldown.getName()) .setDuration(NetworkTypes.toProtobuf(cooldown.getDuration())) - .setIcon(NetworkTypes.toProtobuf(cooldown.getIcon())) - .build(); + .setIcon(NetworkTypes.toProtobuf(cooldown.getIcon())); + + CooldownStyle style = cooldown.getStyle(); + if (style != null) { + builder.setStyle(this.toProtobuf(style)); + } + DisplayCooldownMessage message = builder.build(); recipients.forEach(player -> ((AbstractApolloPlayer) player).sendPacket(message)); } @@ -69,4 +75,30 @@ public void resetCooldowns(@NonNull Recipients recipients) { recipients.forEach(player -> ((AbstractApolloPlayer) player).sendPacket(message)); } + private com.lunarclient.apollo.cooldown.v1.CooldownStyle toProtobuf(CooldownStyle style) { + com.lunarclient.apollo.cooldown.v1.CooldownStyle.Builder builder = com.lunarclient.apollo.cooldown.v1.CooldownStyle.newBuilder(); + + Color circleStartColor = style.getCircleStartColor(); + if (circleStartColor != null) { + builder.setCircleStartColor(NetworkTypes.toProtobuf(circleStartColor)); + } + + Color circleEndColor = style.getCircleEndColor(); + if (circleEndColor != null) { + builder.setCircleEndColor(NetworkTypes.toProtobuf(circleEndColor)); + } + + Color circleEdgeColor = style.getCircleEdgeColor(); + if (circleEdgeColor != null) { + builder.setCircleEdgeColor(NetworkTypes.toProtobuf(circleEdgeColor)); + } + + Color textColor = style.getTextColor(); + if (textColor != null) { + builder.setTextColor(NetworkTypes.toProtobuf(textColor)); + } + + return builder.build(); + } + } diff --git a/common/src/main/java/com/lunarclient/apollo/module/entity/EntityModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/entity/EntityModuleImpl.java index b5a28a87f..e2f6c3b43 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/entity/EntityModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/entity/EntityModuleImpl.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/glow/GlowModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/glow/GlowModuleImpl.java index e74d94869..59ccdae0b 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/glow/GlowModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/glow/GlowModuleImpl.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/hologram/HologramModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/hologram/HologramModuleImpl.java index 7fb39ce48..03518c0b4 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/hologram/HologramModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/hologram/HologramModuleImpl.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/limb/LimbModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/limb/LimbModuleImpl.java index 560df7823..6a7e24d7b 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/limb/LimbModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/limb/LimbModuleImpl.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/modsettings/ModSettingModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/modsettings/ModSettingModuleImpl.java index b959a32d0..477c6348f 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/modsettings/ModSettingModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/modsettings/ModSettingModuleImpl.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/nametag/NametagModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/nametag/NametagModuleImpl.java index aedf81cc6..9164a4028 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/nametag/NametagModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/nametag/NametagModuleImpl.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/nickhider/NickHiderModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/nickhider/NickHiderModuleImpl.java index 6ebe5afb7..11a2faaab 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/nickhider/NickHiderModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/nickhider/NickHiderModuleImpl.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/notification/NotificationModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/notification/NotificationModuleImpl.java index 6e1283ee0..897b65e00 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/notification/NotificationModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/notification/NotificationModuleImpl.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/packetenrichment/PacketEnrichmentImpl.java b/common/src/main/java/com/lunarclient/apollo/module/packetenrichment/PacketEnrichmentImpl.java index 3c4199a40..1446ef118 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/packetenrichment/PacketEnrichmentImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/packetenrichment/PacketEnrichmentImpl.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/paynow/PayNowModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/paynow/PayNowModuleImpl.java index 4a181cbc3..068c3c72d 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/paynow/PayNowModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/paynow/PayNowModuleImpl.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/richpresence/RichPresenceModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/richpresence/RichPresenceModuleImpl.java index b24e466ce..afb224824 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/richpresence/RichPresenceModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/richpresence/RichPresenceModuleImpl.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 new file mode 100644 index 000000000..4427a9718 --- /dev/null +++ b/common/src/main/java/com/lunarclient/apollo/module/serverlink/ServerLinkModuleImpl.java @@ -0,0 +1,114 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * 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 + * 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.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. + * + * @since 1.2.5 + */ +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/module/staffmod/StaffModModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/staffmod/StaffModModuleImpl.java index 7833de63f..c9a83db45 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/staffmod/StaffModModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/staffmod/StaffModModuleImpl.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/stopwatch/StopwatchModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/stopwatch/StopwatchModuleImpl.java index 5f21ca11b..efba37df3 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/stopwatch/StopwatchModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/stopwatch/StopwatchModuleImpl.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/team/TeamModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/team/TeamModuleImpl.java index 44f302e02..89005d292 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/team/TeamModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/team/TeamModuleImpl.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 @@ -24,14 +24,17 @@ package com.lunarclient.apollo.module.team; import com.lunarclient.apollo.common.ApolloComponent; +import com.lunarclient.apollo.common.location.ApolloLocation; import com.lunarclient.apollo.network.NetworkTypes; import com.lunarclient.apollo.player.AbstractApolloPlayer; import com.lunarclient.apollo.recipients.Recipients; import com.lunarclient.apollo.team.v1.ResetTeamMembersMessage; import com.lunarclient.apollo.team.v1.UpdateTeamMembersMessage; +import java.awt.Color; import java.util.List; import java.util.stream.Collectors; import lombok.NonNull; +import net.kyori.adventure.text.Component; /** * Provides the teams module. @@ -43,13 +46,7 @@ public final class TeamModuleImpl extends TeamModule { @Override public void updateTeamMembers(@NonNull Recipients recipients, @NonNull List teamMembers) { List teamMembersProto = teamMembers.stream() - .map(teamMember -> com.lunarclient.apollo.team.v1.TeamMember.newBuilder() - .setPlayerUuid(NetworkTypes.toProtobuf(teamMember.getPlayerUuid())) - .setAdventureJsonPlayerName(ApolloComponent.toJson(teamMember.getDisplayName())) - .setLocation(NetworkTypes.toProtobuf(teamMember.getLocation())) - .setMarkerColor(NetworkTypes.toProtobuf(teamMember.getMarkerColor())) - .build() - ) + .map(this::toProtobuf) .collect(Collectors.toList()); UpdateTeamMembersMessage message = UpdateTeamMembersMessage.newBuilder() @@ -65,4 +62,26 @@ public void resetTeamMembers(@NonNull Recipients recipients) { recipients.forEach(player -> ((AbstractApolloPlayer) player).sendPacket(message)); } + private com.lunarclient.apollo.team.v1.TeamMember toProtobuf(TeamMember member) { + com.lunarclient.apollo.team.v1.TeamMember.Builder builder = com.lunarclient.apollo.team.v1.TeamMember.newBuilder() + .setPlayerUuid(NetworkTypes.toProtobuf(member.getPlayerUuid())); + + Component displayName = member.getDisplayName(); + if (displayName != null) { + builder.setAdventureJsonPlayerName(ApolloComponent.toJson(displayName)); + } + + Color markerColor = member.getMarkerColor(); + if (markerColor != null) { + builder.setMarkerColor(NetworkTypes.toProtobuf(markerColor)); + } + + ApolloLocation location = member.getLocation(); + if (location != null) { + builder.setLocation(NetworkTypes.toProtobuf(location)); + } + + return builder.build(); + } + } diff --git a/common/src/main/java/com/lunarclient/apollo/module/tebex/TebexModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/tebex/TebexModuleImpl.java index 902773b8c..2b15fbd5c 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/tebex/TebexModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/tebex/TebexModuleImpl.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/title/TitleModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/title/TitleModuleImpl.java index d9f2d7fb0..250a99c53 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/title/TitleModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/title/TitleModuleImpl.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/tntcountdown/TntCountdownModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/tntcountdown/TntCountdownModuleImpl.java index d3629c20d..2697a60f3 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/tntcountdown/TntCountdownModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/tntcountdown/TntCountdownModuleImpl.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/transfer/TransferModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/transfer/TransferModuleImpl.java index 2bfd185ca..6971cf566 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/transfer/TransferModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/transfer/TransferModuleImpl.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/vignette/VignetteModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/vignette/VignetteModuleImpl.java index 1d43ef4b5..71e609a9c 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/vignette/VignetteModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/vignette/VignetteModuleImpl.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/waypoint/WaypointModuleImpl.java b/common/src/main/java/com/lunarclient/apollo/module/waypoint/WaypointModuleImpl.java index a912eb746..608563ccd 100644 --- a/common/src/main/java/com/lunarclient/apollo/module/waypoint/WaypointModuleImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/module/waypoint/WaypointModuleImpl.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/network/ApolloNetworkManager.java b/common/src/main/java/com/lunarclient/apollo/network/ApolloNetworkManager.java index 463f84198..ee43fb743 100644 --- a/common/src/main/java/com/lunarclient/apollo/network/ApolloNetworkManager.java +++ b/common/src/main/java/com/lunarclient/apollo/network/ApolloNetworkManager.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/network/NetworkOptions.java b/common/src/main/java/com/lunarclient/apollo/network/NetworkOptions.java index 33f72d39e..e62fe44a5 100644 --- a/common/src/main/java/com/lunarclient/apollo/network/NetworkOptions.java +++ b/common/src/main/java/com/lunarclient/apollo/network/NetworkOptions.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/network/NetworkTypes.java b/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java index 304c0e043..6d20395f0 100644 --- a/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.java +++ b/common/src/main/java/com/lunarclient/apollo/network/NetworkTypes.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 @@ -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.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() + .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.5 + */ + 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.5 + */ + 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.5 + */ + 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.5 + */ + 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.5 + */ + 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.5 + */ + 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.5 + */ + 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/common/src/main/java/com/lunarclient/apollo/option/ConfigOptions.java b/common/src/main/java/com/lunarclient/apollo/option/ConfigOptions.java index f61ba6751..483743dc6 100644 --- a/common/src/main/java/com/lunarclient/apollo/option/ConfigOptions.java +++ b/common/src/main/java/com/lunarclient/apollo/option/ConfigOptions.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/option/OptionsImpl.java b/common/src/main/java/com/lunarclient/apollo/option/OptionsImpl.java index 36e94015d..bd20e9eba 100644 --- a/common/src/main/java/com/lunarclient/apollo/option/OptionsImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/option/OptionsImpl.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/option/StatusOptionsImpl.java b/common/src/main/java/com/lunarclient/apollo/option/StatusOptionsImpl.java index 8b1edfc9c..e9cb12187 100644 --- a/common/src/main/java/com/lunarclient/apollo/option/StatusOptionsImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/option/StatusOptionsImpl.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/option/config/CommonSerializers.java b/common/src/main/java/com/lunarclient/apollo/option/config/CommonSerializers.java index c970f47ab..4462a8724 100644 --- a/common/src/main/java/com/lunarclient/apollo/option/config/CommonSerializers.java +++ b/common/src/main/java/com/lunarclient/apollo/option/config/CommonSerializers.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/option/config/Serializer.java b/common/src/main/java/com/lunarclient/apollo/option/config/Serializer.java index 820fde3f0..557724bc3 100644 --- a/common/src/main/java/com/lunarclient/apollo/option/config/Serializer.java +++ b/common/src/main/java/com/lunarclient/apollo/option/config/Serializer.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/option/config/Serializers.java b/common/src/main/java/com/lunarclient/apollo/option/config/Serializers.java index 54fa972eb..7d7f5329a 100644 --- a/common/src/main/java/com/lunarclient/apollo/option/config/Serializers.java +++ b/common/src/main/java/com/lunarclient/apollo/option/config/Serializers.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/player/AbstractApolloPlayer.java b/common/src/main/java/com/lunarclient/apollo/player/AbstractApolloPlayer.java index fd2be6d34..3c383e455 100644 --- a/common/src/main/java/com/lunarclient/apollo/player/AbstractApolloPlayer.java +++ b/common/src/main/java/com/lunarclient/apollo/player/AbstractApolloPlayer.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/player/ApolloPlayerManagerImpl.java b/common/src/main/java/com/lunarclient/apollo/player/ApolloPlayerManagerImpl.java index d0952fc99..71ddfaf07 100644 --- a/common/src/main/java/com/lunarclient/apollo/player/ApolloPlayerManagerImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/player/ApolloPlayerManagerImpl.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/stats/ApolloStatsManager.java b/common/src/main/java/com/lunarclient/apollo/stats/ApolloStatsManager.java index ba8da86f9..c63b43582 100644 --- a/common/src/main/java/com/lunarclient/apollo/stats/ApolloStatsManager.java +++ b/common/src/main/java/com/lunarclient/apollo/stats/ApolloStatsManager.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/stats/ApolloStatsThread.java b/common/src/main/java/com/lunarclient/apollo/stats/ApolloStatsThread.java index 404dcc634..b84890ece 100644 --- a/common/src/main/java/com/lunarclient/apollo/stats/ApolloStatsThread.java +++ b/common/src/main/java/com/lunarclient/apollo/stats/ApolloStatsThread.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/stats/metadata/ApolloMetadataManager.java b/common/src/main/java/com/lunarclient/apollo/stats/metadata/ApolloMetadataManager.java index e99485217..75ea93a84 100644 --- a/common/src/main/java/com/lunarclient/apollo/stats/metadata/ApolloMetadataManager.java +++ b/common/src/main/java/com/lunarclient/apollo/stats/metadata/ApolloMetadataManager.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/stats/metadata/PlatformMetadata.java b/common/src/main/java/com/lunarclient/apollo/stats/metadata/PlatformMetadata.java index d17181121..3164f9d40 100644 --- a/common/src/main/java/com/lunarclient/apollo/stats/metadata/PlatformMetadata.java +++ b/common/src/main/java/com/lunarclient/apollo/stats/metadata/PlatformMetadata.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/util/Ranges.java b/common/src/main/java/com/lunarclient/apollo/util/Ranges.java index 1d7af1a27..bf7bc7541 100644 --- a/common/src/main/java/com/lunarclient/apollo/util/Ranges.java +++ b/common/src/main/java/com/lunarclient/apollo/util/Ranges.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/version/ApolloVersion.java b/common/src/main/java/com/lunarclient/apollo/version/ApolloVersion.java index 9d9b68684..9cbdc177e 100644 --- a/common/src/main/java/com/lunarclient/apollo/version/ApolloVersion.java +++ b/common/src/main/java/com/lunarclient/apollo/version/ApolloVersion.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/version/ApolloVersionManager.java b/common/src/main/java/com/lunarclient/apollo/version/ApolloVersionManager.java index fce24d201..a4fa9b5b2 100644 --- a/common/src/main/java/com/lunarclient/apollo/version/ApolloVersionManager.java +++ b/common/src/main/java/com/lunarclient/apollo/version/ApolloVersionManager.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/world/ApolloWorldManagerImpl.java b/common/src/main/java/com/lunarclient/apollo/world/ApolloWorldManagerImpl.java index 7835ed80a..3ae1f7d6f 100644 --- a/common/src/main/java/com/lunarclient/apollo/world/ApolloWorldManagerImpl.java +++ b/common/src/main/java/com/lunarclient/apollo/world/ApolloWorldManagerImpl.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/docs/developers/lightweight/json/_meta.json b/docs/developers/lightweight/json/_meta.json index 38a141545..83eb3d8b5 100644 --- a/docs/developers/lightweight/json/_meta.json +++ b/docs/developers/lightweight/json/_meta.json @@ -1,6 +1,8 @@ { "getting-started": "Getting Started", "player-detection": "Player Detection", + "serverbound-packets": "Serverbound Packets", + "roundtrip-packets": "Roundtrip Packets", "packet-util": "Packet Util", "object-util": "Object Util", "adventure-util": "Adventure Util" diff --git a/docs/developers/lightweight/json/getting-started.mdx b/docs/developers/lightweight/json/getting-started.mdx index bed60847d..63e03adcf 100644 --- a/docs/developers/lightweight/json/getting-started.mdx +++ b/docs/developers/lightweight/json/getting-started.mdx @@ -18,5 +18,7 @@ While constructing messages, note that the `@type` field isn't required if the m 🔗 [Detecting players using LunarClient](/apollo/developers/lightweight/json/player-detection)
🔗 [Common Apollo Objects](/apollo/developers/lightweight/json/object-util)
🔗 [Adventure Util](/apollo/developers/lightweight/json/adventure-util)
+🔗 [Apollo Serverbound packets](/apollo/developers/lightweight/json/serverbound-packets)
+🔗 [Apollo Roundtrip packets](/apollo/developers/lightweight/json/roundtrip-packets)
For examples of module integration, refer to the specific Module pages. Each page contains code samples under the `Manual JSON Object Construction` tab. For instance, you can find sample code for the `BorderModule` on its dedicated page [BorderModule](/apollo/developers/modules/border#sample-code) in the `Sample Code` section. diff --git a/docs/developers/lightweight/json/object-util.mdx b/docs/developers/lightweight/json/object-util.mdx index 1a79ade80..de62365e5 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/json/packet-util.mdx b/docs/developers/lightweight/json/packet-util.mdx index 1a3a12e74..cbb8ef035 100644 --- a/docs/developers/lightweight/json/packet-util.mdx +++ b/docs/developers/lightweight/json/packet-util.mdx @@ -13,9 +13,9 @@ The methods in this utility leverage the same plugin messaging channel as the Ap To utilize Apollo Modules, first define a list of the modules you want to use: ```java -private static final List APOLLO_MODULES = Arrays.asList("limb", "beam", "border", "chat", "colored_fire", "combat", "cooldown", - "entity", "glow", "hologram", "mod_setting", "nametag", "nick_hider", "notification", "packet_enrichment", "rich_presence", - "server_rule", "staff_mod", "stopwatch", "team", "title", "tnt_countdown", "transfer", "vignette", "waypoint" +private static final List APOLLO_MODULES = Arrays.asList("auto_text_hotkey", "beam", "border", "chat", "colored_fire", "combat", "cooldown", + "entity", "glint", "glow", "hologram", "inventory", "limb", "mod_setting", "nametag", "nick_hider", "notification", "pay_now", "packet_enrichment", + "rich_presence", "saturation", "server_rule", "staff_mod", "stopwatch", "team", "tebex", "title", "tnt_countdown", "transfer", "vignette", "waypoint" ); ``` @@ -31,9 +31,14 @@ Next, specify the properties for these modules. These properties are included in private static final Table CONFIG_MODULE_PROPERTIES = HashBasedTable.create(); static { - // Module Options that the client needs to notified about, these properties are sent with the enable module packet + // Module Options the client needs to be notified about. These properties are sent with the enable module packet. // While using the Apollo plugin this would be equivalent to modifying the config.yml CONFIG_MODULE_PROPERTIES.put("combat", "disable-miss-penalty", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-attack.send-packet", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-chat-open.send-packet", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-chat-close.send-packet", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-use-item.send-packet", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-use-item-bucket.send-packet", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-game", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-commands", Arrays.asList("/server", "/servers", "/hub")); CONFIG_MODULE_PROPERTIES.put("server_rule", "disable-shaders", false); diff --git a/docs/developers/lightweight/json/player-detection.mdx b/docs/developers/lightweight/json/player-detection.mdx index 80b67ac2c..dafd5dbb7 100644 --- a/docs/developers/lightweight/json/player-detection.mdx +++ b/docs/developers/lightweight/json/player-detection.mdx @@ -16,7 +16,7 @@ This example demonstrates how to detect whether a player is using Lunar Client b ```java public class ApolloPlayerJsonListener implements Listener { - private final Set playersRunningApollo = new HashSet<>(); + private static final Set PLAYERS_RUNNING_APOLLO = new HashSet<>(); public ApolloPlayerJsonListener(ApolloExamplePlugin plugin) { Messenger messenger = Bukkit.getServer().getMessenger(); @@ -27,8 +27,8 @@ public class ApolloPlayerJsonListener implements Listener { Bukkit.getPluginManager().registerEvents(this, plugin); } - private boolean isPlayerRunningApollo(Player player) { - return this.playersRunningApollo.contains(player.getUniqueId()); + public static boolean isPlayerRunningApollo(Player player) { + return PLAYERS_RUNNING_APOLLO.contains(player.getUniqueId()); } @EventHandler @@ -43,7 +43,7 @@ public class ApolloPlayerJsonListener implements Listener { // Sending the player's world name to the client is required for some modules JsonPacketUtil.sendPacket(player, this.createUpdatePlayerWorldMessage(player)); - this.playersRunningApollo.add(player.getUniqueId()); + PLAYERS_RUNNING_APOLLO.add(player.getUniqueId()); player.sendMessage("You are using LunarClient!"); } diff --git a/docs/developers/lightweight/json/roundtrip-packets.mdx b/docs/developers/lightweight/json/roundtrip-packets.mdx new file mode 100644 index 000000000..c5315b4ee --- /dev/null +++ b/docs/developers/lightweight/json/roundtrip-packets.mdx @@ -0,0 +1,90 @@ +import { Callout } from 'nextra-theme-docs' + +# Roundtrip Packets + +## Overview + +This example demonstrates how to handle roundtrip packets between the server and the Lunar Client using JSON messages. These packets are sent from the server, expecting a corresponding response from the client. The example utilizes a map to track the requests and their corresponding responses. + + + Note that this method uses a different plugin channel for + sending and receiving packets, which is `apollo:json`. + + +## Integration + +```java +public class ApolloRoundtripJsonListener implements PluginMessageListener { + + private static final String TYPE_PREFIX = "type.googleapis.com/"; + private static final JsonParser JSON_PARSER = new JsonParser(); + + @Getter + private static ApolloRoundtripJsonListener instance; + + private final Map>> roundTripPacketFutures = new ConcurrentHashMap<>(); + private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); + + public ApolloRoundtripJsonListener(ApolloExamplePlugin plugin) { + instance = this; + Bukkit.getServer().getMessenger().registerIncomingPluginChannel(plugin, "apollo:json", this); + } + + @Override + public void onPluginMessageReceived(@NonNull String channel, @NonNull Player player, byte[] bytes) { + JsonObject payload; + try { + payload = JSON_PARSER.parse(new String(bytes, StandardCharsets.UTF_8)).getAsJsonObject(); + } catch (Exception e) { + return; + } + + if (!payload.has("@type")) { + return; + } + + String type = payload.get("@type").getAsString(); + if (type.startsWith(TYPE_PREFIX)) { + type = type.substring(TYPE_PREFIX.length()); + } + + if ("lunarclient.apollo.transfer.v1.PingResponse".equals(type) + || "lunarclient.apollo.transfer.v1.TransferResponse".equals(type)) { + UUID requestId = UUID.fromString(payload.get("request_id").getAsString().replace("+", "-")); + this.handleResponse(player, requestId, payload); + } + } + + public CompletableFuture sendRequest(Player player, UUID requestId, JsonObject request, String requestType) { + request.addProperty("@type", TYPE_PREFIX + requestType); + request.addProperty("request_id", requestId.toString()); + JsonPacketUtil.sendPacket(player, request); + + CompletableFuture future = new CompletableFuture<>(); + + this.roundTripPacketFutures + .computeIfAbsent(player.getUniqueId(), k -> new ConcurrentHashMap<>()) + .put(requestId, future); + + ScheduledFuture timeoutTask = this.executorService.schedule(() -> + future.completeExceptionally(new TimeoutException("Response timed out")), + 10, TimeUnit.SECONDS + ); + + future.whenComplete((result, throwable) -> timeoutTask.cancel(false)); + return future; + } + + private void handleResponse(Player player, UUID requestId, JsonObject message) { + Map> futures = this.roundTripPacketFutures.get(player.getUniqueId()); + if (futures == null) { + return; + } + + CompletableFuture future = futures.remove(requestId); + if (future != null) { + future.complete(message); + } + } +} +``` diff --git a/docs/developers/lightweight/json/serverbound-packets.mdx b/docs/developers/lightweight/json/serverbound-packets.mdx new file mode 100644 index 000000000..fc86cf124 --- /dev/null +++ b/docs/developers/lightweight/json/serverbound-packets.mdx @@ -0,0 +1,144 @@ +import { Callout } from 'nextra-theme-docs' + +# Serverbound Packets + +## Overview + +Players using Lunar Client may send packets to the server for specific Apollo modules, such as the `PacketEnrichment Module` and/or when the player is joining the server. This example demonstrates how to handle packets sent from the client that are related to Apollo while using JSON messages. + +Additionally, the `Transfer Module` expects a response packet from the client after the server sends a request. For an example of how to handle roundtrip packets, visit [Packet Roundtrip Example](/apollo/developers/lightweight/json/roundtrip-packets) + + + Note that this method uses a different plugin channel for + sending and receiving packets, which is `apollo:json`. + + +## Integration + +```java +public class ApolloPacketReceiveJsonListener implements PluginMessageListener { + + private static final String TYPE_PREFIX = "type.googleapis.com/"; + private static final JsonParser JSON_PARSER = new JsonParser(); + + public ApolloPacketReceiveJsonListener(ApolloExamplePlugin plugin) { + Bukkit.getServer().getMessenger().registerIncomingPluginChannel(plugin, "apollo:json", this); + } + + @Override + public void onPluginMessageReceived(@NonNull String channel, @NonNull Player player, byte[] bytes) { + JsonObject payload; + try { + payload = JSON_PARSER.parse(new String(bytes, StandardCharsets.UTF_8)).getAsJsonObject(); + } catch (Exception e) { + return; + } + + if (!payload.has("@type")) { + return; + } + + String type = payload.get("@type").getAsString(); + if (type.startsWith(TYPE_PREFIX)) { + type = type.substring(TYPE_PREFIX.length()); + } + + if ("lunarclient.apollo.player.v1.PlayerHandshakeMessage".equals(type)) { + this.onPlayerHandshake(payload); + } + + // Packet Enrichment Module + if ("lunarclient.apollo.packetenrichment.v1.PlayerAttackMessage".equals(type)) { + this.onPlayerAttack(payload); + } else if ("lunarclient.apollo.packetenrichment.v1.PlayerChatOpenMessage".equals(type)) { + this.onPlayerChatOpen(payload); + } else if ("lunarclient.apollo.packetenrichment.v1.PlayerChatCloseMessage".equals(type)) { + this.onPlayerChatClose(payload); + } else if ("lunarclient.apollo.packetenrichment.v1.PlayerUseItemMessage".equals(type)) { + this.onPlayerUseItem(payload); + } else if ("lunarclient.apollo.packetenrichment.v1.PlayerUseItemBucketMessage".equals(type)) { + this.onPlayerUseItemBucket(payload); + } + } + + private void onPlayerHandshake(JsonObject message) { + String checkoutSupport = message.get("embedded_checkout_support").getAsString(); + + JsonObject minecraftVersion = message.getAsJsonObject("minecraft_version"); + String version = minecraftVersion.get("enum").getAsString(); + + JsonObject lunarClientVersion = message.getAsJsonObject("lunar_client_version"); + String gitBranch = lunarClientVersion.get("git_branch").getAsString(); + String gitCommit = lunarClientVersion.get("git_commit").getAsString(); + String semVer = lunarClientVersion.get("semver").getAsString(); + + for (JsonElement element : message.getAsJsonArray("installed_mods")) { + JsonObject mod = element.getAsJsonObject(); + + String modId = mod.get("id").getAsString(); + String displayName = mod.get("name").getAsString(); + String modVersion = mod.get("version").getAsString(); + String modType = mod.get("type").getAsString(); + } + } + + private void onPlayerAttack(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + + JsonObject targetInfo = message.getAsJsonObject("target_info"); + JsonObject attackerInfo = message.getAsJsonObject("attacker_info"); + + this.onPlayerInfo(targetInfo); + this.onPlayerInfo(attackerInfo); + } + + private void onPlayerChatOpen(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + this.onPlayerInfo(message.getAsJsonObject("player_info")); + } + + private void onPlayerChatClose(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + this.onPlayerInfo(message.getAsJsonObject("player_info")); + } + + private void onPlayerUseItem(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + this.onPlayerInfo(message.getAsJsonObject("player_info")); + + boolean mainHand = message.get("main_hand").getAsBoolean(); + } + + private void onPlayerUseItemBucket(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + this.onPlayerInfo(message.getAsJsonObject("player_info")); + + JsonObject rayTraceResult = message.getAsJsonObject("ray_trace_result"); + + if (rayTraceResult.has("block")) { + JsonObject blockHit = rayTraceResult.getAsJsonObject("block"); + + JsonObject hitLocation = blockHit.getAsJsonObject("hit_location"); + JsonObject blockLocation = blockHit.getAsJsonObject("block_location"); + String directionStr = blockHit.get("direction").getAsString(); + } else if (rayTraceResult.has("entity")) { + JsonObject entityHit = rayTraceResult.getAsJsonObject("entity"); + + JsonObject hitLocation = entityHit.getAsJsonObject("hit_location"); + String entityId = entityHit.get("entity_id").getAsString(); + } else { + // MISS + } + } + + private void onPlayerInfo(JsonObject info) { + UUID uuid = JsonUtil.toJavaUuid(info.getAsJsonObject("player_uuid")); + Location location = JsonUtil.toBukkitPlayerLocation(info.getAsJsonObject("location")); + boolean sneaking = info.get("sneaking").getAsBoolean(); + boolean sprinting = info.get("sprinting").getAsBoolean(); + boolean jumping = info.get("jumping").getAsBoolean(); + float forwardSpeed = info.get("forward_speed").getAsFloat(); + float strafeSpeed = info.get("strafe_speed").getAsFloat(); + } +} +``` diff --git a/docs/developers/lightweight/protobuf/getting-started.mdx b/docs/developers/lightweight/protobuf/getting-started.mdx index 467c0db9e..e7f159ad9 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.9 ``` @@ -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.9' } ``` @@ -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.9") } ``` diff --git a/docs/developers/lightweight/protobuf/object-util.mdx b/docs/developers/lightweight/protobuf/object-util.mdx index 51fb3278b..bff0bbdeb 100644 --- a/docs/developers/lightweight/protobuf/object-util.mdx +++ b/docs/developers/lightweight/protobuf/object-util.mdx @@ -7,12 +7,16 @@ These utilities facilitate the creation of Apollo objects, commonly used across ## Integration ```java -public static UUID toJavaUuid(Uuid message) { - return new UUID(message.getHigh64(), message.getLow64()); +public static UUID toJavaUuid(JsonObject obj) { + long high = Long.parseUnsignedLong(obj.get("high64").getAsString()); + long low = Long.parseUnsignedLong(obj.get("low64").getAsString()); + return new UUID(high, low); } -public static long toJavaTimestamp(Timestamp message) { - return message.getSeconds() * 1000 + message.getNanos() / 1000000; +public static long toJavaTimestamp(JsonObject timestampObject) { + JsonObject packetInfo = timestampObject.getAsJsonObject("packet_info"); + String iso = packetInfo.get("instantiation_time").getAsString(); + return Instant.parse(iso).toEpochMilli(); } public static Uuid createUuidProto(UUID object) { @@ -73,14 +77,19 @@ public static BlockLocation createBlockLocationProto(Location location) { .build(); } -public static Location toBukkitLocation(com.lunarclient.apollo.common.v1.Location message) { - return new Location(Bukkit.getWorld(message.getWorld()), message.getX(), message.getY(), message.getZ()); +public static Location toBukkitLocation(JsonObject message) { + return new Location( + Bukkit.getWorld(message.get("world").getAsString()), + message.get("x").getAsDouble(), + message.get("y").getAsDouble(), + message.get("z").getAsDouble() + ); } -public static Location toBukkitLocation(com.lunarclient.apollo.common.v1.PlayerLocation message) { - Location location = ProtobufUtil.toBukkitLocation(message.getLocation()); - location.setYaw(message.getYaw()); - location.setPitch(message.getPitch()); +public static Location toBukkitPlayerLocation(JsonObject message) { + Location location = JsonUtil.toBukkitLocation(message.getAsJsonObject("location")); + location.setYaw(message.get("yaw").getAsFloat()); + location.setPitch(message.get("pitch").getAsFloat()); return location; } ``` @@ -88,7 +97,7 @@ public static Location toBukkitLocation(com.lunarclient.apollo.common.v1.PlayerL 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); @@ -97,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) @@ -120,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/lightweight/protobuf/packet-util.mdx b/docs/developers/lightweight/protobuf/packet-util.mdx index 19ad54521..bca907ab1 100644 --- a/docs/developers/lightweight/protobuf/packet-util.mdx +++ b/docs/developers/lightweight/protobuf/packet-util.mdx @@ -13,9 +13,9 @@ The methods in this utility leverage the same plugin messaging channel as the Ap To utilize Apollo Modules, first define a list of the modules you want to use: ```java -private static final List APOLLO_MODULES = Arrays.asList("limb", "beam", "border", "chat", "colored_fire", "combat", "cooldown", - "entity", "glow", "hologram", "mod_setting", "nametag", "nick_hider", "notification", "packet_enrichment", "rich_presence", - "server_rule", "staff_mod", "stopwatch", "team", "title", "tnt_countdown", "transfer", "vignette", "waypoint" +private static final List APOLLO_MODULES = Arrays.asList("auto_text_hotkey", "beam", "border", "chat", "colored_fire", "combat", "cooldown", + "entity", "glint", "glow", "hologram", "inventory", "limb", "mod_setting", "nametag", "nick_hider", "notification", "pay_now", "packet_enrichment", + "rich_presence", "saturation", "server_rule", "staff_mod", "stopwatch", "team", "tebex", "title", "tnt_countdown", "transfer", "vignette", "waypoint" ); ``` @@ -31,7 +31,14 @@ Next, specify the properties for these modules. These properties are included in private static final Table CONFIG_MODULE_PROPERTIES = HashBasedTable.create(); static { + // Module Options the client needs to be notified about. These properties are sent with the enable module packet. + // While using the Apollo plugin this would be equivalent to modifying the config.yml CONFIG_MODULE_PROPERTIES.put("combat", "disable-miss-penalty", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-attack.send-packet", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-chat-open.send-packet", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-chat-close.send-packet", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-use-item.send-packet", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-use-item-bucket.send-packet", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-game", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-commands", Value.newBuilder().setListValue( ListValue.newBuilder().addAllValues(Arrays.asList( diff --git a/docs/developers/lightweight/protobuf/player-detection.mdx b/docs/developers/lightweight/protobuf/player-detection.mdx index 40c8af50a..5e324ae49 100644 --- a/docs/developers/lightweight/protobuf/player-detection.mdx +++ b/docs/developers/lightweight/protobuf/player-detection.mdx @@ -9,7 +9,7 @@ This example demonstrates how to detect whether a player is using Lunar Client b ```java public class ApolloPlayerProtoListener implements Listener { - private final Set playersRunningApollo = new HashSet<>(); + private static final Set PLAYERS_RUNNING_APOLLO = new HashSet<>(); public ApolloPlayerProtoListener(ApolloExamplePlugin plugin) { Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "lunar:apollo"); @@ -17,8 +17,8 @@ public class ApolloPlayerProtoListener implements Listener { Bukkit.getPluginManager().registerEvents(this, plugin); } - private boolean isPlayerRunningApollo(Player player) { - return this.playersRunningApollo.contains(player.getUniqueId()); + public static boolean isPlayerRunningApollo(Player player) { + return PLAYERS_RUNNING_APOLLO.contains(player.getUniqueId()); } @EventHandler @@ -33,7 +33,7 @@ public class ApolloPlayerProtoListener implements Listener { // Sending the player's world name to the client is required for some modules ProtobufPacketUtil.sendPacket(player, this.createUpdatePlayerWorldMessage(player)); - this.playersRunningApollo.add(player.getUniqueId()); + PLAYERS_RUNNING_APOLLO.add(player.getUniqueId()); player.sendMessage("You are using LunarClient!"); } diff --git a/docs/developers/lightweight/protobuf/roundtrip-packets.mdx b/docs/developers/lightweight/protobuf/roundtrip-packets.mdx index 0bc35d0bc..461a9f30a 100644 --- a/docs/developers/lightweight/protobuf/roundtrip-packets.mdx +++ b/docs/developers/lightweight/protobuf/roundtrip-packets.mdx @@ -21,7 +21,7 @@ public class ApolloRoundtripProtoListener implements PluginMessageListener { } @Override - public void onPluginMessageReceived(String s, Player player, byte[] bytes) { + public void onPluginMessageReceived(@NonNull String channel, @NonNull Player player, byte[] bytes) { try { Any any = Any.parseFrom(bytes); diff --git a/docs/developers/lightweight/protobuf/serverbound-packets.mdx b/docs/developers/lightweight/protobuf/serverbound-packets.mdx index c7dc9ab3d..6690301be 100644 --- a/docs/developers/lightweight/protobuf/serverbound-packets.mdx +++ b/docs/developers/lightweight/protobuf/serverbound-packets.mdx @@ -16,7 +16,7 @@ public class ApolloPacketReceiveProtoListener implements PluginMessageListener { } @Override - public void onPluginMessageReceived(String s, Player player, byte[] bytes) { + public void onPluginMessageReceived(@NonNull String channel, @NonNull Player player, byte[] bytes) { try { Any any = Any.parseFrom(bytes); @@ -33,6 +33,8 @@ public class ApolloPacketReceiveProtoListener implements PluginMessageListener { this.onPlayerChatClose(any.unpack(PlayerChatCloseMessage.class)); } else if (any.is(PlayerUseItemMessage.class)) { this.onPlayerUseItem(any.unpack(PlayerUseItemMessage.class)); + } else if (any.is(PlayerUseItemBucketMessage.class)) { + this.onPlayerUseItemBucket(any.unpack(PlayerUseItemBucketMessage.class)); } } catch (InvalidProtocolBufferException e) { throw new RuntimeException(e); @@ -40,6 +42,7 @@ public class ApolloPacketReceiveProtoListener implements PluginMessageListener { } private void onPlayerHandshake(PlayerHandshakeMessage message) { + EmbeddedCheckoutSupport checkoutSupport = message.getEmbeddedCheckoutSupport(); MinecraftVersion minecraftVersion = message.getMinecraftVersion(); LunarClientVersion lunarClientVersion = message.getLunarClientVersion(); @@ -89,9 +92,32 @@ public class ApolloPacketReceiveProtoListener implements PluginMessageListener { boolean mainHand = message.getMainHand(); } + private void onPlayerUseItemBucket(PlayerUseItemBucketMessage message) { + long instantiationTimeMs = ProtobufUtil.toJavaTimestamp(message.getPacketInfo().getInstantiationTime()); + + PlayerInfo playerInfo = message.getPlayerInfo(); + this.onPlayerInfo(playerInfo); + + RayTraceResult rayTraceResult = message.getRayTraceResult(); + + if (rayTraceResult.hasBlock()) { + BlockHit blockHit = rayTraceResult.getBlock(); + + Location hitLocation = blockHit.getHitLocation(); + BlockLocation blockLocation = blockHit.getBlockLocation(); + Direction direction = blockHit.getDirection(); + } else if (rayTraceResult.hasEntity()) { + EntityHit entityHit = rayTraceResult.getEntity(); + Location hitLocation = entityHit.getHitLocation(); + EntityId entityId = entityHit.getEntityId(); + } else { + // Miss + } + } + private void onPlayerInfo(PlayerInfo info) { UUID uuid = ProtobufUtil.toJavaUuid(info.getPlayerUuid()); - Location location = ProtobufUtil.toBukkitLocation(info.getLocation()); + org.bukkit.Location location = ProtobufUtil.toBukkitLocation(info.getLocation()); boolean sneaking = info.getSneaking(); boolean sprinting = info.getSprinting(); boolean jumping = info.getJumping(); diff --git a/docs/developers/modules/_meta.json b/docs/developers/modules/_meta.json index 02faf06d0..1f3fba9c1 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/cooldown.mdx b/docs/developers/modules/cooldown.mdx index 4264a826b..16c48fe49 100644 --- a/docs/developers/modules/cooldown.mdx +++ b/docs/developers/modules/cooldown.mdx @@ -45,6 +45,31 @@ public void displayCooldownItemExample(Player viewer) { } ``` +### Displaying a Cooldown with a custom style + +```java +public void displayCooldownWithStyleExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + + apolloPlayerOpt.ifPresent(apolloPlayer -> { + this.cooldownModule.displayCooldown(apolloPlayer, Cooldown.builder() + .name("book-cooldown") + .duration(Duration.ofSeconds(30)) + .icon(ItemStackIcon.builder() + .itemName("BOOK") + .build()) + .style(CooldownStyle.builder() + .circleStartColor(ApolloColors.RED) + .circleEndColor(ApolloColors.GREEN) + .circleEdgeColor(ApolloColors.DARK_GRAY) + .textColor(ApolloColors.LIGHT_PURPLE) + .build()) + .build() + ); + }); +} +``` + ### Displaying a Cooldown with a resource ```java @@ -56,8 +81,8 @@ public void displayCooldownResourceExample(Player viewer) { .name("lunar-cooldown") .duration(Duration.ofSeconds(15)) .icon(SimpleResourceLocationIcon.builder() - .resourceLocation("lunar:logo/logo-200x182.svg") - .size(12) + .resourceLocation("lunar:logo/logo-64x64.png") + .size(24) .build() ) .build() @@ -74,6 +99,7 @@ public void removeCooldownExample(Player viewer) { apolloPlayerOpt.ifPresent(apolloPlayer -> { this.cooldownModule.removeCooldown(apolloPlayer, "enderpearl-cooldown"); + this.cooldownModule.removeCooldown(apolloPlayer, "book-cooldown"); this.cooldownModule.removeCooldown(apolloPlayer, "lunar-cooldown"); }); } @@ -107,9 +133,43 @@ public void resetCooldownsExample(Player viewer) { `.icon(SimpleResourceLocationIcon)` is how you display a custom texture icon. Read the [icons utilities page](/apollo/developers/utilities/icons) to learn more about icons. ```java -.icon(SimpleResourceLocationIcon.builder().resourceLocation("lunar:logo/logo-200x182.svg").size(12).build()) +.icon(SimpleResourceLocationIcon.builder().resourceLocation("lunar:logo/logo-64x64.png").size(24).build()) ``` +`.style(CooldownStyle)` is how you customize the visual appearance of the cooldown circle and text. See the `CooldownStyle` section below for more. +```java +.style(CooldownStyle.builder() + .circleStartColor(ApolloColors.RED) + .circleEndColor(ApolloColors.GREEN) + .circleEdgeColor(ApolloColors.DARK_GRAY) + .textColor(ApolloColors.LIGHT_PURPLE) + .build()) +``` + +### `CooldownStyle` Options + +`.circleStartColor(java.awt.Color)` is the color displayed at the start of the cooldown circle animation. See the [colors page](/apollo/developers/utilities/colors) for more. +```java +.circleStartColor(ApolloColors.RED) +``` + +`.circleEndColor(java.awt.Color)` is the color displayed at the end of the cooldown circle animation. See the [colors page](/apollo/developers/utilities/colors) for more. +```java +.circleEndColor(ApolloColors.GREEN) +``` + +`.circleEdgeColor(java.awt.Color)` is the color of the circle's edge/border. See the [colors page](/apollo/developers/utilities/colors) for more. +```java +.circleEdgeColor(ApolloColors.DARK_GRAY) +``` + +`.textColor(java.awt.Color)` is the color of the cooldown timer text rendered in the center of the circle. See the [colors page](/apollo/developers/utilities/colors) for more. +```java +.textColor(ApolloColors.LIGHT_PURPLE) +``` + +All `CooldownStyle` fields are optional; any field left unset will fall back to the client's default value. + @@ -121,7 +181,31 @@ 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); +} +``` + +**Displaying a Cooldown with a custom style** + +```java +public void displayCooldownWithStyleExample(Player viewer) { + DisplayCooldownMessage message = DisplayCooldownMessage.newBuilder() + .setName("book-cooldown") + .setDuration(ProtobufUtil.createDurationProto(Duration.ofSeconds(30))) + .setIcon(Icon.newBuilder() + .setItemStack(ProtobufUtil.createItemStackIconProto("BOOK", 0, 0)) + .build()) + .setStyle(CooldownStyle.newBuilder() + .setCircleStartColor(ProtobufUtil.createColorProto(new Color(255, 85, 85))) // ApolloColors.RED + .setCircleEndColor(ProtobufUtil.createColorProto(new Color(85, 255, 85))) // ApolloColors.GREEN + .setCircleEdgeColor(ProtobufUtil.createColorProto(new Color(85, 85, 85))) // ApolloColors.DAR_GRAY + .setTextColor(ProtobufUtil.createColorProto(new Color(255, 85, 255))) // ApolloColors.LIGHT_PURPLE + .build()) .build(); ProtobufPacketUtil.sendPacket(viewer, message); @@ -135,7 +219,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-64x64.png", 24)) + .build()) .build(); ProtobufPacketUtil.sendPacket(viewer, message); @@ -181,6 +267,27 @@ public void displayCooldownItemExample(Player viewer) { } ``` +**Displaying a Cooldown with a custom style** + +```java +public void displayCooldownWithStyleExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.cooldown.v1.DisplayCooldownMessage"); + message.addProperty("name", "book-cooldown"); + message.addProperty("duration", JsonUtil.createDurationObject(Duration.ofSeconds(30))); + message.add("icon", JsonUtil.createItemStackIconObject("BOOK", 0, 0)); + + JsonObject style = new JsonObject(); + style.add("circle_start_color", JsonUtil.createColorObject(new Color(255, 85, 85))); // ApolloColors.RED + style.add("circle_end_color", JsonUtil.createColorObject(new Color(85, 255, 85))); // ApolloColors.GREEN + style.add("circle_edge_color", JsonUtil.createColorObject(new Color(85, 85, 85))); // ApolloColors.DAR_GRAY + style.add("text_color", JsonUtil.createColorObject(new Color(255, 85, 255))); // ApolloColors.LIGHT_PURPLE + message.add("style", style); + + JsonPacketUtil.sendPacket(viewer, message); +} +``` + **Displaying a Cooldown with a resource** ```java @@ -189,7 +296,7 @@ public void displayCooldownResourceExample(Player viewer) { message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.cooldown.v1.DisplayCooldownMessage"); message.addProperty("name", "lunar-cooldown"); message.addProperty("duration", JsonUtil.createDurationObject(Duration.ofSeconds(15))); - message.add("icon", JsonUtil.createSimpleResourceLocationIconObject("lunar:logo/logo-200x182.svg", 12)); + message.add("icon", JsonUtil.createSimpleResourceLocationIconObject("lunar:logo/logo-64x64.png", 24)); JsonPacketUtil.sendPacket(viewer, message); } diff --git a/docs/developers/modules/hologram.mdx b/docs/developers/modules/hologram.mdx index 5cc882065..db5ab913e 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 679cfcf22..5ca13ec02 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/notification.mdx b/docs/developers/modules/notification.mdx index b88c2b6d3..f9b506b1b 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/docs/developers/modules/serverlink.mdx b/docs/developers/modules/serverlink.mdx new file mode 100644 index 000000000..081a2dec8 --- /dev/null +++ b/docs/developers/modules/serverlink.mdx @@ -0,0 +1,281 @@ +import { Tab, Tabs } from 'nextra-theme-docs' + +# Server Link Module + +## Overview + +The server link module provides enhancements and additional support to the vanilla Minecraft server link feature. Which allows you to display important links to players in a dedicated UI. + +- Adds improvements to the existing server link features + - Ability to set a custom image title resource for the server links menu + - Ability to use chat colors and formats for button names +- Backported legacy version support for all versions below 1.21 + +![Server Link Module Example](/modules/serverlink/overview.png#center) + +## 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); +} +``` + +### `ServerLink` Options + +`.id(String)` sets a unique identifier for the server link. + +```java +.id("website") +``` + +`.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)) +``` + +`.url(String)` should be a string that specifies the destination URL that will be opened from the server link. + +```java +.url("https://www.lunarclient.com/") +``` + + + + + +**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); +} +``` + + + + diff --git a/docs/developers/modules/team.mdx b/docs/developers/modules/team.mdx index 488965940..e587e3155 100644 --- a/docs/developers/modules/team.mdx +++ b/docs/developers/modules/team.mdx @@ -27,8 +27,8 @@ Explore each integration by cycling through each tab, to find the best fit for y ```java -private final Map teamsByTeamId = Maps.newHashMap(); -private final Map teamsByPlayerUuid = Maps.newHashMap(); +private final Map teamsByTeamId = new ConcurrentHashMap<>(); +private final Map teamsByPlayerUuid = new ConcurrentHashMap<>(); public TeamApiExample() { if (ServerUtil.isFolia()) { @@ -91,7 +91,7 @@ public class Team { public Team() { this.teamId = UUID.randomUUID(); - this.members = new HashMap<>(); + this.members = new ConcurrentHashMap<>(); } public void addMember(Player player) { @@ -107,34 +107,77 @@ public class Team { .ifPresent(TeamApiExample.this.teamModule::resetTeamMembers); } - private TeamMember createTeamMember(Player member) { - Location location = member.getLocation(); + private TeamMember createTeamMember(Player player, boolean withinPlayerTrackingRange) { + TeamMember.TeamMemberBuilder builder = TeamMember.builder() + .playerUuid(player.getUniqueId()) + .markerColor(Color.WHITE); - return TeamMember.builder() - .playerUuid(member.getUniqueId()) - .displayName(Component.text() - .content(member.getName()) - .color(NamedTextColor.WHITE) - .build()) - .markerColor(Color.WHITE) - .location(ApolloLocation.builder() + if (!withinPlayerTrackingRange) { + Location location = player.getLocation(); + + builder.location(ApolloLocation.builder() .world(location.getWorld().getName()) .x(location.getX()) .y(location.getY()) .z(location.getZ()) - .build()) - .build(); + .build()); + + builder.displayName(Component.text() + .content(player.getName()) + .color(NamedTextColor.WHITE) + .build()); + } + + return builder.build(); } - // The refresh method used for updating members locations public void refresh() { - List teammates = this.members.values() - .stream().filter(Player::isOnline) - .map(this::createTeamMember) - .collect(Collectors.toList()); + for (Player viewer : this.members.values()) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + if (!apolloPlayerOpt.isPresent()) { + continue; + } + + List teammates = new ArrayList<>(); + + for (Player member : this.members.values()) { + if (viewer == member) { + continue; + } + + if (!viewer.canSee(member)) { + continue; + } + + if (!viewer.getWorld().getName().equals(member.getWorld().getName())) { + continue; + } + + boolean withinPlayerTrackingRange = this.isWithinPlayerTrackingRange(viewer, member); + teammates.add(this.createTeamMember(member, withinPlayerTrackingRange)); + } + + apolloPlayerOpt.ifPresent(apolloPlayer -> { + TeamApiExample.this.teamModule.updateTeamMembers(apolloPlayer, teammates); + }); + } + } + + /** + *

Check if player is within 48 blocks. Ideally, this could be checked directly + * through the server's internal entity tracker for exact tracking behavior, + * but that is not exposed in the Bukkit API.

+ * + * @param viewer the viewer + * @param member the member + * @return whether within player tracking range + */ + private boolean isWithinPlayerTrackingRange(Player viewer, Player member) { + double maxDistance = 48; + double dx = viewer.getLocation().getX() - member.getLocation().getX(); + double dz = viewer.getLocation().getZ() - member.getLocation().getZ(); - this.members.values().forEach(member -> Apollo.getPlayerManager().getPlayer(member.getUniqueId()) - .ifPresent(apolloPlayer -> TeamApiExample.this.teamModule.updateTeamMembers(apolloPlayer, teammates))); + return (dx * dx + dz * dz) <= (maxDistance * maxDistance); } public UUID getTeamId() { @@ -237,8 +280,8 @@ Custom colors can be created from any RGB values using `new Color(int red, int g ```java -private final Map teamsByTeamId = Maps.newHashMap(); -private final Map teamsByPlayerUuid = Maps.newHashMap(); +private final Map teamsByTeamId = new ConcurrentHashMap<>(); +private final Map teamsByPlayerUuid = new ConcurrentHashMap<>(); public TeamProtoExample() { if (ServerUtil.isFolia()) { @@ -301,7 +344,7 @@ public class Team { public Team() { this.teamId = UUID.randomUUID(); - this.members = new HashMap<>(); + this.members = new ConcurrentHashMap<>(); } public void addMember(Player player) { @@ -317,31 +360,74 @@ public class Team { ProtobufPacketUtil.sendPacket(player, message); } - private TeamMember createTeamMember(Player member) { - return TeamMember.newBuilder() - .setPlayerUuid(ProtobufUtil.createUuidProto(member.getUniqueId())) - .setAdventureJsonPlayerName(AdventureUtil.toJson( + private TeamMember createTeamMember(Player player, boolean withinPlayerTrackingRange) { + TeamMember.Builder builder = TeamMember.newBuilder() + .setPlayerUuid(ProtobufUtil.createUuidProto(player.getUniqueId())) + .setMarkerColor(ProtobufUtil.createColorProto(Color.WHITE)); + + if (!withinPlayerTrackingRange) { + builder.setLocation(ProtobufUtil.createLocationProto(player.getLocation())); + + builder.setAdventureJsonPlayerName(AdventureUtil.toJson( Component.text() - .content(member.getName()) + .content(player.getName()) .color(NamedTextColor.WHITE) .build() - )) - .setMarkerColor(ProtobufUtil.createColorProto(Color.WHITE)) - .setLocation(ProtobufUtil.createLocationProto(member.getLocation())) - .build(); + )); + } + + return builder.build(); } // The refresh method used for updating members locations public void refresh() { - List teammates = this.members.values().stream().filter(Player::isOnline) - .map(this::createTeamMember) - .collect(Collectors.toList()); + for (Player viewer : this.members.values()) { + if (!ApolloPlayerProtoListener.isPlayerRunningApollo(viewer)) { + continue; + } + + List teammates = new ArrayList<>(); - UpdateTeamMembersMessage message = UpdateTeamMembersMessage.newBuilder() - .addAllMembers(teammates) - .build(); + for (Player member : this.members.values()) { + if (viewer == member) { + continue; + } - this.members.values().forEach(member -> ProtobufPacketUtil.sendPacket(member, message)); + if (!viewer.canSee(member)) { + continue; + } + + if (!viewer.getWorld().getName().equals(member.getWorld().getName())) { + continue; + } + + boolean withinPlayerTrackingRange = this.isWithinPlayerTrackingRange(viewer, member); + teammates.add(this.createTeamMember(member, withinPlayerTrackingRange)); + } + + UpdateTeamMembersMessage message = UpdateTeamMembersMessage.newBuilder() + .addAllMembers(teammates) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); + } + } + + /** + *

Check if player is within 48 blocks. Ideally, this could be checked directly + * through the server's internal entity tracker for exact tracking behavior, + * but that is not exposed in the Bukkit API.

+ * + * @param viewer the viewer + * @param member the member + * @return whether within player tracking range + */ + private boolean isWithinPlayerTrackingRange(Player viewer, Player member) { + double maxDistance = 48; + double dx = viewer.getLocation().getX() - member.getLocation().getX(); + double dz = viewer.getLocation().getZ() - member.getLocation().getZ(); + + return (dx * dx + dz * dz) <= (maxDistance * maxDistance); } public UUID getTeamId() { @@ -378,8 +464,8 @@ public class Team { ```java -private final Map teamsByTeamId = Maps.newHashMap(); -private final Map teamsByPlayerUuid = Maps.newHashMap(); +private final Map teamsByTeamId = new ConcurrentHashMap<>(); +private final Map teamsByPlayerUuid = new ConcurrentHashMap<>(); public TeamJsonExample() { if (ServerUtil.isFolia()) { @@ -442,7 +528,7 @@ public class Team { public Team() { this.teamId = UUID.randomUUID(); - this.members = new HashMap<>(); + this.members = new ConcurrentHashMap<>(); } public void addMember(Player player) { @@ -460,33 +546,74 @@ public class Team { JsonPacketUtil.sendPacket(player, message); } - private JsonObject createTeamMember(Player member) { + private JsonObject createTeamMember(Player player, boolean withinPlayerTrackingRange) { JsonObject message = new JsonObject(); - message.add("player_uuid", JsonUtil.createUuidObject(member.getUniqueId())); - message.addProperty("adventure_json_player_name", AdventureUtil.toJson( - Component.text() - .content(member.getName()) - .color(NamedTextColor.WHITE) - .build() - )); + message.add("player_uuid", JsonUtil.createUuidObject(player.getUniqueId())); message.add("marker_color", JsonUtil.createColorObject(Color.WHITE)); - message.add("location", JsonUtil.createLocationObject(member.getLocation())); + + if (!withinPlayerTrackingRange) { + message.add("location", JsonUtil.createLocationObject(player.getLocation())); + + message.addProperty("adventure_json_player_name", AdventureUtil.toJson( + Component.text() + .content(player.getName()) + .color(NamedTextColor.WHITE) + .build() + )); + } return message; } // The refresh method used for updating members locations public void refresh() { - JsonArray teammates = this.members.values() - .stream().filter(Player::isOnline) - .map(this::createTeamMember) - .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + for (Player viewer : this.members.values()) { + if (!ApolloPlayerJsonListener.isPlayerRunningApollo(viewer)) { + continue; + } - JsonObject message = new JsonObject(); - message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.team.v1.UpdateTeamMembersMessage"); - message.add("members", teammates); + JsonArray teammates = new JsonArray(); + + for (Player member : this.members.values()) { + if (viewer == member) { + continue; + } + + if (!viewer.canSee(member)) { + continue; + } + + if (!viewer.getWorld().getName().equals(member.getWorld().getName())) { + continue; + } + + boolean withinPlayerTrackingRange = this.isWithinPlayerTrackingRange(viewer, member); + teammates.add(this.createTeamMember(member, withinPlayerTrackingRange)); + } + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.team.v1.UpdateTeamMembersMessage"); + message.add("members", teammates); + + JsonPacketUtil.sendPacket(viewer, message); + } + } - this.members.values().forEach(member -> JsonPacketUtil.sendPacket(member, message)); + /** + *

Check if player is within 48 blocks. Ideally, this could be checked directly + * through the server's internal entity tracker for exact tracking behavior, + * but that is not exposed in the Bukkit API.

+ * + * @param viewer the viewer + * @param member the member + * @return whether within player tracking range + */ + private boolean isWithinPlayerTrackingRange(Player viewer, Player member) { + double maxDistance = 48; + double dx = viewer.getLocation().getX() - member.getLocation().getX(); + double dz = viewer.getLocation().getZ() - member.getLocation().getZ(); + + return (dx * dx + dz * dz) <= (maxDistance * maxDistance); } public UUID getTeamId() { diff --git a/docs/developers/modules/transfer.mdx b/docs/developers/modules/transfer.mdx index 77030ac2b..51d252ce0 100644 --- a/docs/developers/modules/transfer.mdx +++ b/docs/developers/modules/transfer.mdx @@ -246,15 +246,38 @@ public void pingExample(Player player) { - - This example is not implemented. - - **Transfer Player** ```java public void transferExample(Player player) { + UUID requestId = UUID.randomUUID(); + + JsonObject transferRequestMessage = new JsonObject(); + transferRequestMessage.addProperty("server_ip", "mc.hypixel.net"); + + ApolloRoundtripJsonListener.getInstance() + .sendRequest(player, requestId, transferRequestMessage, "lunarclient.apollo.transfer.v1.TransferRequest") + .thenAccept(response -> { + String message = ""; + String status = response.get("status").getAsString(); + + switch (status) { + case "STATUS_ACCEPTED": { + message = "Transfer accepted! Goodbye!"; + break; + } + case "STATUS_REJECTED": { + message = "Transfer rejected by client!"; + break; + } + } + + player.sendMessage(message); + }).exceptionally(throwable -> { + player.sendMessage("Failed to receive a response in time."); + return null; + }); } ``` @@ -262,7 +285,43 @@ public void transferExample(Player player) { ```java public void pingExample(Player player) { + UUID requestId = UUID.randomUUID(); + + JsonObject pingRequestMessage = new JsonObject(); + JsonArray serverIps = Lists.newArrayList("mc.hypixel.net", "minehut.com") + .stream().collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + pingRequestMessage.add("server_ips", serverIps); + + ApolloRoundtripJsonListener.getInstance() + .sendRequest(player, requestId, pingRequestMessage, "lunarclient.apollo.transfer.v1.PingRequest") + .thenAccept(response -> { + JsonArray pingDataList = response.getAsJsonArray("ping_data"); + + for (JsonElement element : pingDataList) { + JsonObject pingData = element.getAsJsonObject(); + String message = ""; + String status = pingData.get("status").getAsString(); + switch (status) { + // Displays successful ping request to display the server IP and the players ping to that server. + case "STATUS_SUCCESS": { + message = String.format("Ping to %s is %d ms.", pingData.get("server_ip").getAsString(), pingData.get("ping").getAsInt()); + break; + } + + // If the ping request times-out + case "STATUS_TIMED_OUT": { + message = String.format("Failed to ping %s", pingData.get("server_ip").getAsString()); + break; + } + } + + player.sendMessage(message); + } + }).exceptionally(throwable -> { + player.sendMessage("Failed to receive a response in time."); + return null; + }); } ``` diff --git a/docs/developers/utilities/icons.mdx b/docs/developers/utilities/icons.mdx index 4c01099f9..449151b7c 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.5 + */ + 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/docs/public/modules/serverlink/overview.png b/docs/public/modules/serverlink/overview.png new file mode 100644 index 000000000..512543fef Binary files /dev/null and b/docs/public/modules/serverlink/overview.png differ 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 08d1fa811..8575bc784 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 @@ -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 @@ -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/debug/Debug.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/Debug.java index 0b4f4c9a4..8786fe8ac 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/Debug.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/Debug.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/debug/DebugManager.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/DebugManager.java index 44bc43985..c66dd321d 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/DebugManager.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/DebugManager.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/debug/DebugTask.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/DebugTask.java index 568f0776a..ad74edfec 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/DebugTask.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/DebugTask.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/debug/command/ApolloDebugCommand.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/command/ApolloDebugCommand.java index b7d719119..17360e091 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/command/ApolloDebugCommand.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/command/ApolloDebugCommand.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/debug/command/BordersCommand.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/command/BordersCommand.java index 093b7704d..0fa22708f 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/command/BordersCommand.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/command/BordersCommand.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/debug/command/SpamPacketsCommand.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/command/SpamPacketsCommand.java index 57f90b285..8d0c7f5f6 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/command/SpamPacketsCommand.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/command/SpamPacketsCommand.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/debug/impl/BorderCollisionTest.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/BorderCollisionTest.java index aa1f39b36..d83ef7227 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/BorderCollisionTest.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/BorderCollisionTest.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/debug/impl/ModSettingsTest.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/ModSettingsTest.java index c7afb0f78..8601a6a23 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/ModSettingsTest.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/ModSettingsTest.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/debug/impl/PayloadTest.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/PayloadTest.java index 9726c21ab..2802a7cfa 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/PayloadTest.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/PayloadTest.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/debug/impl/SpamPacketDebug.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/SpamPacketDebug.java index 279b61632..29cfc26cc 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/SpamPacketDebug.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/debug/impl/SpamPacketDebug.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/general/ApolloEventListenerExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/general/ApolloEventListenerExample.java index f32912706..168287bc6 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/general/ApolloEventListenerExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/general/ApolloEventListenerExample.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/general/ApolloGeneralExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/general/ApolloGeneralExample.java index 8469de981..61d8936ff 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/general/ApolloGeneralExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/general/ApolloGeneralExample.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 53a89c20c..0913c1e29 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 @@ -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 @@ -29,6 +29,8 @@ 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.CooldownExample; +import com.lunarclient.apollo.example.module.impl.ServerLinkExample; import com.lunarclient.apollo.player.ApolloPlayer; import org.bukkit.entity.Player; @@ -58,9 +60,17 @@ private void onApolloRegister(ApolloRegisterPlayerEvent event) { this.example.getBeamExample().displayBeamExample(player); this.example.getBorderExample().displayBorderExample(player); - this.example.getCooldownExample().displayCooldownItemExample(player); this.example.getNametagExample().overrideNametagExample(player); this.example.getWaypointExample().displayWaypointExample(player); + + CooldownExample cooldownExample = this.example.getCooldownExample(); + cooldownExample.displayCooldownItemExample(player); + cooldownExample.displayCooldownWithStyleExample(player); + cooldownExample.displayCooldownResourceExample(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/mods/ApolloModStatusExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/mods/ApolloModStatusExample.java index 7e01ba800..71ef2a01e 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/mods/ApolloModStatusExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/mods/ApolloModStatusExample.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/mods/ModStatusCommand.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/mods/ModStatusCommand.java index ea8885483..39bed666f 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/mods/ModStatusCommand.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/mods/ModStatusCommand.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/module/AutoTextHotkeyApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/AutoTextHotkeyApiExample.java index c907e5727..786a53a32 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/AutoTextHotkeyApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/AutoTextHotkeyApiExample.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/module/BeamApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/BeamApiExample.java index 26ba34162..c65dc7d06 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/BeamApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/BeamApiExample.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/module/BorderApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/BorderApiExample.java index 2bc7803e4..179e15084 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/BorderApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/BorderApiExample.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/module/ChatApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ChatApiExample.java index 802f43eec..13f325a1a 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ChatApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ChatApiExample.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/module/ColoredFireApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ColoredFireApiExample.java index 87437218b..a96ee0728 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ColoredFireApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ColoredFireApiExample.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/module/CombatApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/CombatApiExample.java index 726230912..ce15f2532 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/CombatApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/CombatApiExample.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/module/CooldownApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/CooldownApiExample.java index a58aec784..121eb27e1 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/CooldownApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/CooldownApiExample.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 @@ -24,11 +24,13 @@ package com.lunarclient.apollo.example.api.module; import com.lunarclient.apollo.Apollo; +import com.lunarclient.apollo.common.ApolloColors; import com.lunarclient.apollo.common.icon.ItemStackIcon; import com.lunarclient.apollo.common.icon.SimpleResourceLocationIcon; import com.lunarclient.apollo.example.module.impl.CooldownExample; import com.lunarclient.apollo.module.cooldown.Cooldown; import com.lunarclient.apollo.module.cooldown.CooldownModule; +import com.lunarclient.apollo.module.cooldown.CooldownStyle; import com.lunarclient.apollo.player.ApolloPlayer; import java.time.Duration; import java.util.Optional; @@ -55,6 +57,28 @@ public void displayCooldownItemExample(Player viewer) { }); } + @Override + public void displayCooldownWithStyleExample(Player viewer) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + + apolloPlayerOpt.ifPresent(apolloPlayer -> { + this.cooldownModule.displayCooldown(apolloPlayer, Cooldown.builder() + .name("book-cooldown") + .duration(Duration.ofSeconds(30)) + .icon(ItemStackIcon.builder() + .itemName("BOOK") + .build()) + .style(CooldownStyle.builder() + .circleStartColor(ApolloColors.RED) + .circleEndColor(ApolloColors.GREEN) + .circleEdgeColor(ApolloColors.DARK_GRAY) + .textColor(ApolloColors.LIGHT_PURPLE) + .build()) + .build() + ); + }); + } + @Override public void displayCooldownResourceExample(Player viewer) { Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); @@ -64,8 +88,8 @@ public void displayCooldownResourceExample(Player viewer) { .name("lunar-cooldown") .duration(Duration.ofSeconds(15)) .icon(SimpleResourceLocationIcon.builder() - .resourceLocation("lunar:logo/logo-200x182.svg") - .size(12) + .resourceLocation("lunar:logo/logo-64x64.png") + .size(24) .build() ) .build() @@ -79,6 +103,7 @@ public void removeCooldownExample(Player viewer) { apolloPlayerOpt.ifPresent(apolloPlayer -> { this.cooldownModule.removeCooldown(apolloPlayer, "enderpearl-cooldown"); + this.cooldownModule.removeCooldown(apolloPlayer, "book-cooldown"); this.cooldownModule.removeCooldown(apolloPlayer, "lunar-cooldown"); }); } diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/EntityApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/EntityApiExample.java index 682bc6eaf..2b073efc2 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/EntityApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/EntityApiExample.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/module/GlowApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/GlowApiExample.java index 77ce08b95..4203025b1 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/GlowApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/GlowApiExample.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/module/HologramApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/HologramApiExample.java index 9cb3ddd4a..92f521b42 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/HologramApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/HologramApiExample.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/module/LimbApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/LimbApiExample.java index b9a755041..42133de1e 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/LimbApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/LimbApiExample.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/module/ModSettingsApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ModSettingsApiExample.java index e9c5dc31a..53247cf70 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ModSettingsApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ModSettingsApiExample.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/module/NametagApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NametagApiExample.java index f3ded5b83..132d5d868 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NametagApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NametagApiExample.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/module/NickHiderApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NickHiderApiExample.java index 9f0ceeb88..f2fc9dd8c 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NickHiderApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NickHiderApiExample.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/module/NotificationApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/NotificationApiExample.java index dd172b5a3..512074740 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 @@ -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 @@ -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()); }); diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/PayNowApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/PayNowApiExample.java index 48c78c038..a976b9f7b 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/PayNowApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/PayNowApiExample.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/module/RichPresenceApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/RichPresenceApiExample.java index 819d37be5..fa229a44f 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/RichPresenceApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/RichPresenceApiExample.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/module/ServerLinkApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerLinkApiExample.java new file mode 100644 index 000000000..8c8f9e44c --- /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) 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 + * 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() + .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() + )); + }); + } + + @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/module/ServerRuleApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerRuleApiExample.java index 8658f41c1..22b048623 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerRuleApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/ServerRuleApiExample.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/module/StaffModApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/StaffModApiExample.java index 11d6a8333..6deaa3dd8 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/StaffModApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/StaffModApiExample.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/module/StopwatchApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/StopwatchApiExample.java index 5bcaf6fee..620bb4fb7 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/StopwatchApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/StopwatchApiExample.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/module/TeamApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TeamApiExample.java index 6985a24aa..21c841265 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TeamApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TeamApiExample.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 @@ -23,7 +23,6 @@ */ package com.lunarclient.apollo.example.api.module; -import com.google.common.collect.Maps; import com.lunarclient.apollo.Apollo; import com.lunarclient.apollo.common.location.ApolloLocation; import com.lunarclient.apollo.example.ApolloExamplePlugin; @@ -31,15 +30,16 @@ import com.lunarclient.apollo.example.util.ServerUtil; import com.lunarclient.apollo.module.team.TeamMember; import com.lunarclient.apollo.module.team.TeamModule; +import com.lunarclient.apollo.player.ApolloPlayer; import java.awt.Color; +import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; @@ -53,8 +53,8 @@ public class TeamApiExample extends TeamExample implements Listener { private final TeamModule teamModule = Apollo.getModuleManager().getModule(TeamModule.class); - private final Map teamsByTeamId = Maps.newHashMap(); - private final Map teamsByPlayerUuid = Maps.newHashMap(); + private final Map teamsByTeamId = new ConcurrentHashMap<>(); + private final Map teamsByPlayerUuid = new ConcurrentHashMap<>(); public TeamApiExample() { if (ServerUtil.isFolia()) { @@ -117,7 +117,7 @@ public class Team { public Team() { this.teamId = UUID.randomUUID(); - this.members = new HashMap<>(); + this.members = new ConcurrentHashMap<>(); } public void addMember(Player player) { @@ -133,34 +133,77 @@ public void removeMember(Player player) { .ifPresent(TeamApiExample.this.teamModule::resetTeamMembers); } - private TeamMember createTeamMember(Player member) { - Location location = member.getLocation(); + private TeamMember createTeamMember(Player player, boolean withinPlayerTrackingRange) { + TeamMember.TeamMemberBuilder builder = TeamMember.builder() + .playerUuid(player.getUniqueId()) + .markerColor(Color.WHITE); - return TeamMember.builder() - .playerUuid(member.getUniqueId()) - .displayName(Component.text() - .content(member.getName()) - .color(NamedTextColor.WHITE) - .build()) - .markerColor(Color.WHITE) - .location(ApolloLocation.builder() + if (!withinPlayerTrackingRange) { + Location location = player.getLocation(); + + builder.location(ApolloLocation.builder() .world(location.getWorld().getName()) .x(location.getX()) .y(location.getY()) .z(location.getZ()) - .build()) - .build(); + .build()); + + builder.displayName(Component.text() + .content(player.getName()) + .color(NamedTextColor.WHITE) + .build()); + } + + return builder.build(); } - // The refresh method used for updating members locations public void refresh() { - List teammates = this.members.values() - .stream().filter(Player::isOnline) - .map(this::createTeamMember) - .collect(Collectors.toList()); + for (Player viewer : this.members.values()) { + Optional apolloPlayerOpt = Apollo.getPlayerManager().getPlayer(viewer.getUniqueId()); + if (!apolloPlayerOpt.isPresent()) { + continue; + } + + List teammates = new ArrayList<>(); + + for (Player member : this.members.values()) { + if (viewer == member) { + continue; + } + + if (!viewer.canSee(member)) { + continue; + } + + if (!viewer.getWorld().getName().equals(member.getWorld().getName())) { + continue; + } + + boolean withinPlayerTrackingRange = this.isWithinPlayerTrackingRange(viewer, member); + teammates.add(this.createTeamMember(member, withinPlayerTrackingRange)); + } + + apolloPlayerOpt.ifPresent(apolloPlayer -> { + TeamApiExample.this.teamModule.updateTeamMembers(apolloPlayer, teammates); + }); + } + } - this.members.values().forEach(member -> Apollo.getPlayerManager().getPlayer(member.getUniqueId()) - .ifPresent(apolloPlayer -> TeamApiExample.this.teamModule.updateTeamMembers(apolloPlayer, teammates))); + /** + *

Check if player is within 48 blocks. Ideally, this could be checked directly + * through the server's internal entity tracker for exact tracking behavior, + * but that is not exposed in the Bukkit API.

+ * + * @param viewer the viewer + * @param member the member + * @return whether within player tracking range + */ + private boolean isWithinPlayerTrackingRange(Player viewer, Player member) { + double maxDistance = 48; + double dx = viewer.getLocation().getX() - member.getLocation().getX(); + double dz = viewer.getLocation().getZ() - member.getLocation().getZ(); + + return (dx * dx + dz * dz) <= (maxDistance * maxDistance); } public UUID getTeamId() { diff --git a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TebexApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TebexApiExample.java index d24194201..00f7904c7 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TebexApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TebexApiExample.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/module/TitleApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TitleApiExample.java index e3843c8f5..12eb761a5 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TitleApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TitleApiExample.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/module/TntCountdownApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TntCountdownApiExample.java index c72a17965..76de40f01 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TntCountdownApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TntCountdownApiExample.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/module/TransferApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TransferApiExample.java index 8ac1fce1f..caaf7c513 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TransferApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/TransferApiExample.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/module/VignetteApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/VignetteApiExample.java index d914f323e..c1a368f50 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/VignetteApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/VignetteApiExample.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/module/WaypointApiExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/WaypointApiExample.java index f404c503b..2e7225c0c 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/WaypointApiExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/module/WaypointApiExample.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/util/BukkitApolloExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/BukkitApolloExample.java index 32f374786..0ff02f2b3 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/BukkitApolloExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/BukkitApolloExample.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/util/ComponentExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/ComponentExample.java index a401c88ce..b797cae4d 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/ComponentExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/ComponentExample.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/util/CuboidExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/CuboidExample.java index fe1df4c1b..b65c37b59 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/CuboidExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/CuboidExample.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/util/IconExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/IconExample.java index 155960205..426b63d1f 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 @@ -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 @@ -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/java/com/lunarclient/apollo/example/api/util/LocationExample.java b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/LocationExample.java index 9a35bf92b..a43c16deb 100644 --- a/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/LocationExample.java +++ b/example/bukkit/api/src/main/java/com/lunarclient/apollo/example/api/util/LocationExample.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/resources/plugin.yml b/example/bukkit/api/src/main/resources/plugin.yml index fbe960bbe..042f5363f 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 6395b444b..81d28966a 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 @@ -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 @@ -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/ApolloExampleType.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/ApolloExampleType.java index 0e96b3fee..c7192c380 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/ApolloExampleType.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/ApolloExampleType.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/AutoTextHotkeyCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/AutoTextHotkeyCommand.java index e99fc825d..26a9c84b4 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/AutoTextHotkeyCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/AutoTextHotkeyCommand.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/BeamCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/BeamCommand.java index 3414d293e..ae9c83ffb 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/BeamCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/BeamCommand.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/BorderCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/BorderCommand.java index 1bfbfd283..8b8bc99f9 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/BorderCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/BorderCommand.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/ChatCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ChatCommand.java index e0c376c58..140060cb6 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ChatCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ChatCommand.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/ColoredFireCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ColoredFireCommand.java index af9832539..b37dbef29 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ColoredFireCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ColoredFireCommand.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/CombatCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/CombatCommand.java index 2a4086859..23e3fda48 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/CombatCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/CombatCommand.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/CooldownCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/CooldownCommand.java index 62de3bbb0..bb1223125 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/CooldownCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/CooldownCommand.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 @@ -43,7 +43,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command Player player = (Player) sender; if (args.length != 1) { - player.sendMessage("Usage: /cooldown "); + player.sendMessage("Usage: /cooldown "); return true; } @@ -56,6 +56,12 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command break; } + case "displaywithstyle": { + cooldownExample.displayCooldownWithStyleExample(player); + player.sendMessage("Displaying cooldown with style...."); + break; + } + case "displayresource": { cooldownExample.displayCooldownResourceExample(player); player.sendMessage("Displaying cooldown resource...."); @@ -75,7 +81,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command } default: { - player.sendMessage("Usage: /cooldown "); + player.sendMessage("Usage: /cooldown "); break; } } diff --git a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/EntityCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/EntityCommand.java index 47a78bd8c..2a74f6611 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/EntityCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/EntityCommand.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/GlintCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/GlintCommand.java index 9ccb22ff0..90da6a2af 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/GlintCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/GlintCommand.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/GlowCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/GlowCommand.java index 0ca3fd3fb..bad65b4f5 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/GlowCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/GlowCommand.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/HologramCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/HologramCommand.java index 583198af8..f3d990bf4 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/HologramCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/HologramCommand.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/InventoryCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/InventoryCommand.java index 4367bb929..9f55e94bd 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/InventoryCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/InventoryCommand.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/LimbCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/LimbCommand.java index 8d9f8ac87..4812eef30 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/LimbCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/LimbCommand.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/ModSettingsCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ModSettingsCommand.java index 0aac61789..96872f467 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ModSettingsCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ModSettingsCommand.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/NametagCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/NametagCommand.java index 215c87563..41799b1a2 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/NametagCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/NametagCommand.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/NickHiderCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/NickHiderCommand.java index 8a62e3ab0..6cfefaf41 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/NickHiderCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/NickHiderCommand.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/NotificationCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/NotificationCommand.java index b6f8342a6..6a7ab8d12 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/NotificationCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/NotificationCommand.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/PayNowCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/PayNowCommand.java index b79979308..1047505aa 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/PayNowCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/PayNowCommand.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/RichPresenceCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/RichPresenceCommand.java index 185cd868a..cb4e8a6c2 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/RichPresenceCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/RichPresenceCommand.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/SaturationCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/SaturationCommand.java index eb91e56a4..552f8e901 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/SaturationCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/SaturationCommand.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 new file mode 100644 index 000000000..d52802288 --- /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) 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 + * 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/command/ServerRuleCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerRuleCommand.java index 4793914d7..60b4b0db1 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerRuleCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/ServerRuleCommand.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/StaffModCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/StaffModCommand.java index 7ff3826b5..fa7ff47ed 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/StaffModCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/StaffModCommand.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/StopwatchCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/StopwatchCommand.java index b4ef9a19b..a4f081a12 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/StopwatchCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/StopwatchCommand.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/TeamCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TeamCommand.java index c8442182b..fdb553fae 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TeamCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TeamCommand.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/TebexCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TebexCommand.java index f517373bd..da1b9375f 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TebexCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TebexCommand.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/TitleCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TitleCommand.java index cf7ad4cf5..b3bd496ca 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TitleCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TitleCommand.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/TntCountdownCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TntCountdownCommand.java index 1da2caed7..1d9487c80 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TntCountdownCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TntCountdownCommand.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/TransferCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TransferCommand.java index ae3ec7604..9d28e47b0 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TransferCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/TransferCommand.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/VignetteCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/VignetteCommand.java index 4457ad422..9d94144f7 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/VignetteCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/VignetteCommand.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/WaypointCommand.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/WaypointCommand.java index 729eaf43d..6970074c7 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/WaypointCommand.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/command/WaypointCommand.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/ApolloModuleExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/ApolloModuleExample.java index 58bde882e..25d994fe6 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/ApolloModuleExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/ApolloModuleExample.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/NMSExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/NMSExample.java index c69849525..43926a9f1 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/NMSExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/NMSExample.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/AutoTextHotkeyExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/AutoTextHotkeyExample.java index 31b3cbbcf..43903ec15 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/AutoTextHotkeyExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/AutoTextHotkeyExample.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/BeamExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/BeamExample.java index 2327631e3..8f8218904 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/BeamExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/BeamExample.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/BorderExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/BorderExample.java index 4df2cf602..6115d85bd 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/BorderExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/BorderExample.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/ChatExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ChatExample.java index 1200200eb..8efd7311b 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ChatExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ChatExample.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/ColoredFireExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ColoredFireExample.java index d34639384..49f486e70 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ColoredFireExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ColoredFireExample.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/CombatExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/CombatExample.java index 8d1673e66..20c3d5f1d 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/CombatExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/CombatExample.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/CooldownExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/CooldownExample.java index bf108776e..e0c8ebc81 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/CooldownExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/CooldownExample.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 @@ -30,6 +30,8 @@ public abstract class CooldownExample extends ApolloModuleExample { public abstract void displayCooldownItemExample(Player viewer); + public abstract void displayCooldownWithStyleExample(Player viewer); + public abstract void displayCooldownResourceExample(Player viewer); public abstract void removeCooldownExample(Player viewer); diff --git a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/EntityExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/EntityExample.java index 90ea77088..1e31888ec 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/EntityExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/EntityExample.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/GlintExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/GlintExample.java index 1f10cdb70..b8d730720 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/GlintExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/GlintExample.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/GlowExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/GlowExample.java index bbddc7c94..bd939b924 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/GlowExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/GlowExample.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/HologramExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/HologramExample.java index 7e69b408b..15bbfd764 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/HologramExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/HologramExample.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/InventoryExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/InventoryExample.java index 27ffef3a6..37e62f7c0 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/InventoryExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/InventoryExample.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/LimbExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/LimbExample.java index 6bce7227d..52e0648c1 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/LimbExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/LimbExample.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/ModSettingsExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ModSettingsExample.java index 6121c57e3..e9a35e108 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ModSettingsExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ModSettingsExample.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/NametagExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/NametagExample.java index 02e27a40f..3a5616613 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/NametagExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/NametagExample.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/NickHiderExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/NickHiderExample.java index 841fff8d1..777ce0954 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/NickHiderExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/NickHiderExample.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/NotificationExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/NotificationExample.java index b6ecef802..f87dee9c9 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/NotificationExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/NotificationExample.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/PayNowExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/PayNowExample.java index c19effe73..286de51a3 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/PayNowExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/PayNowExample.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/RichPresenceExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/RichPresenceExample.java index 06f590c30..d97ba71ad 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/RichPresenceExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/RichPresenceExample.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/SaturationExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/SaturationExample.java index 705b1b2eb..fa972c0fa 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/SaturationExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/SaturationExample.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 new file mode 100644 index 000000000..26ad56fba --- /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) 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 + * 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/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerRuleExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerRuleExample.java index 68c214464..21c88ba75 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerRuleExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/ServerRuleExample.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/StaffModExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/StaffModExample.java index 11400c7e3..c36d76679 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/StaffModExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/StaffModExample.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/StopwatchExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/StopwatchExample.java index 66f0a65df..3994bbd4a 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/StopwatchExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/StopwatchExample.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/TeamExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TeamExample.java index 2398fc515..f78ab41d4 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TeamExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TeamExample.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/TebexExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TebexExample.java index 054ba7f24..b7034085b 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TebexExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TebexExample.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/TitleExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TitleExample.java index 87075107c..eaf61babc 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TitleExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TitleExample.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/TntCountdownExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TntCountdownExample.java index 0243c61e3..052cf6887 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TntCountdownExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TntCountdownExample.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/TransferExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TransferExample.java index 47a82be7a..a3de16fbd 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TransferExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/TransferExample.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/VignetteExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/VignetteExample.java index 159f335e7..bf61b15aa 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/VignetteExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/VignetteExample.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/WaypointExample.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/WaypointExample.java index 8d41b5462..86ae902e1 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/WaypointExample.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/module/impl/WaypointExample.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/util/ItemUtil.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/util/ItemUtil.java index 485ff85aa..3c7db0bf8 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/util/ItemUtil.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/util/ItemUtil.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/util/ServerUtil.java b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/util/ServerUtil.java index dc91a5c42..f96c85686 100644 --- a/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/util/ServerUtil.java +++ b/example/bukkit/common/src/main/java/com/lunarclient/apollo/example/util/ServerUtil.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/ApolloJsonExamplePlatform.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/ApolloJsonExamplePlatform.java index 5820f9466..196b6f81a 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 @@ -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 @@ -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/listener/ApolloPacketReceiveJsonListener.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/listener/ApolloPacketReceiveJsonListener.java new file mode 100644 index 000000000..1d8e46561 --- /dev/null +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/listener/ApolloPacketReceiveJsonListener.java @@ -0,0 +1,162 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * 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 + * 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.listener; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.lunarclient.apollo.example.ApolloExamplePlugin; +import com.lunarclient.apollo.example.json.util.JsonUtil; +import java.nio.charset.StandardCharsets; +import java.util.UUID; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.plugin.messaging.PluginMessageListener; +import org.jspecify.annotations.NonNull; + +public class ApolloPacketReceiveJsonListener implements PluginMessageListener { + + private static final String TYPE_PREFIX = "type.googleapis.com/"; + private static final JsonParser JSON_PARSER = new JsonParser(); + + public ApolloPacketReceiveJsonListener(ApolloExamplePlugin plugin) { + } + + @Override + public void onPluginMessageReceived(@NonNull String channel, @NonNull Player player, byte[] bytes) { + JsonObject payload; + try { + payload = JSON_PARSER.parse(new String(bytes, StandardCharsets.UTF_8)).getAsJsonObject(); + } catch (Exception e) { + return; + } + + if (!payload.has("@type")) { + return; + } + + String type = payload.get("@type").getAsString(); + if (type.startsWith(TYPE_PREFIX)) { + type = type.substring(TYPE_PREFIX.length()); + } + + if ("lunarclient.apollo.player.v1.PlayerHandshakeMessage".equals(type)) { + this.onPlayerHandshake(payload); + } + + // Packet Enrichment Module + if ("lunarclient.apollo.packetenrichment.v1.PlayerAttackMessage".equals(type)) { + this.onPlayerAttack(payload); + } else if ("lunarclient.apollo.packetenrichment.v1.PlayerChatOpenMessage".equals(type)) { + this.onPlayerChatOpen(payload); + } else if ("lunarclient.apollo.packetenrichment.v1.PlayerChatCloseMessage".equals(type)) { + this.onPlayerChatClose(payload); + } else if ("lunarclient.apollo.packetenrichment.v1.PlayerUseItemMessage".equals(type)) { + this.onPlayerUseItem(payload); + } else if ("lunarclient.apollo.packetenrichment.v1.PlayerUseItemBucketMessage".equals(type)) { + this.onPlayerUseItemBucket(payload); + } + } + + private void onPlayerHandshake(JsonObject message) { + String checkoutSupport = message.get("embedded_checkout_support").getAsString(); + + JsonObject minecraftVersion = message.getAsJsonObject("minecraft_version"); + String version = minecraftVersion.get("enum").getAsString(); + + JsonObject lunarClientVersion = message.getAsJsonObject("lunar_client_version"); + String gitBranch = lunarClientVersion.get("git_branch").getAsString(); + String gitCommit = lunarClientVersion.get("git_commit").getAsString(); + String semVer = lunarClientVersion.get("semver").getAsString(); + + for (JsonElement element : message.getAsJsonArray("installed_mods")) { + JsonObject mod = element.getAsJsonObject(); + + String modId = mod.get("id").getAsString(); + String displayName = mod.get("name").getAsString(); + String modVersion = mod.get("version").getAsString(); + String modType = mod.get("type").getAsString(); + } + } + + private void onPlayerAttack(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + + JsonObject targetInfo = message.getAsJsonObject("target_info"); + JsonObject attackerInfo = message.getAsJsonObject("attacker_info"); + + this.onPlayerInfo(targetInfo); + this.onPlayerInfo(attackerInfo); + } + + private void onPlayerChatOpen(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + this.onPlayerInfo(message.getAsJsonObject("player_info")); + } + + private void onPlayerChatClose(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + this.onPlayerInfo(message.getAsJsonObject("player_info")); + } + + private void onPlayerUseItem(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + this.onPlayerInfo(message.getAsJsonObject("player_info")); + + boolean mainHand = message.get("main_hand").getAsBoolean(); + } + + private void onPlayerUseItemBucket(JsonObject message) { + long instantiationTimeMs = JsonUtil.toJavaTimestamp(message); + this.onPlayerInfo(message.getAsJsonObject("player_info")); + + JsonObject rayTraceResult = message.getAsJsonObject("ray_trace_result"); + + if (rayTraceResult.has("block")) { + JsonObject blockHit = rayTraceResult.getAsJsonObject("block"); + + JsonObject hitLocation = blockHit.getAsJsonObject("hit_location"); + JsonObject blockLocation = blockHit.getAsJsonObject("block_location"); + String directionStr = blockHit.get("direction").getAsString(); + } else if (rayTraceResult.has("entity")) { + JsonObject entityHit = rayTraceResult.getAsJsonObject("entity"); + + JsonObject hitLocation = entityHit.getAsJsonObject("hit_location"); + String entityId = entityHit.get("entity_id").getAsString(); + } else { + // MISS + } + } + + private void onPlayerInfo(JsonObject info) { + UUID uuid = JsonUtil.toJavaUuid(info.getAsJsonObject("player_uuid")); + Location location = JsonUtil.toBukkitPlayerLocation(info.getAsJsonObject("location")); + boolean sneaking = info.get("sneaking").getAsBoolean(); + boolean sprinting = info.get("sprinting").getAsBoolean(); + boolean jumping = info.get("jumping").getAsBoolean(); + float forwardSpeed = info.get("forward_speed").getAsFloat(); + float strafeSpeed = info.get("strafe_speed").getAsFloat(); + } + +} diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/listener/ApolloPlayerJsonListener.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/listener/ApolloPlayerJsonListener.java index 3de23bfa1..6c0984d56 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/listener/ApolloPlayerJsonListener.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/listener/ApolloPlayerJsonListener.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 @@ -42,21 +42,22 @@ public class ApolloPlayerJsonListener implements Listener { private final ApolloExamplePlugin plugin; - private final Set playersRunningApollo = new HashSet<>(); + private static final Set PLAYERS_RUNNING_APOLLO = new HashSet<>(); public ApolloPlayerJsonListener(ApolloExamplePlugin plugin) { this.plugin = plugin; Messenger messenger = Bukkit.getServer().getMessenger(); messenger.registerIncomingPluginChannel(plugin, "lunar:apollo", (s, player, bytes) -> { }); - messenger.registerIncomingPluginChannel(plugin, "apollo:json", (s, player, bytes) -> { }); + messenger.registerIncomingPluginChannel(plugin, "apollo:json", new ApolloRoundtripJsonListener(plugin)); + messenger.registerIncomingPluginChannel(plugin, "apollo:json", new ApolloPacketReceiveJsonListener(plugin)); messenger.registerOutgoingPluginChannel(plugin, "apollo:json"); Bukkit.getPluginManager().registerEvents(this, plugin); } public void disable() { - this.playersRunningApollo.clear(); + PLAYERS_RUNNING_APOLLO.clear(); Messenger messenger = Bukkit.getServer().getMessenger(); messenger.unregisterIncomingPluginChannel(this.plugin, "lunar:apollo"); @@ -78,7 +79,7 @@ private void onRegisterChannel(PlayerRegisterChannelEvent event) { // Sending the player's world name to the client is required for some modules JsonPacketUtil.sendPacket(player, this.createUpdatePlayerWorldMessage(player)); - this.playersRunningApollo.add(player.getUniqueId()); + PLAYERS_RUNNING_APOLLO.add(player.getUniqueId()); player.sendMessage("You are using LunarClient!"); } @@ -97,8 +98,8 @@ private JsonObject createUpdatePlayerWorldMessage(Player player) { return message; } - private boolean isPlayerRunningApollo(Player player) { - return this.playersRunningApollo.contains(player.getUniqueId()); + public static boolean isPlayerRunningApollo(Player player) { + return PLAYERS_RUNNING_APOLLO.contains(player.getUniqueId()); } } diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/listener/ApolloRoundtripJsonListener.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/listener/ApolloRoundtripJsonListener.java new file mode 100644 index 000000000..c9ad3813d --- /dev/null +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/listener/ApolloRoundtripJsonListener.java @@ -0,0 +1,117 @@ +/* + * This file is part of Apollo, licensed under the MIT License. + * + * 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 + * 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.listener; + +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.lunarclient.apollo.example.ApolloExamplePlugin; +import com.lunarclient.apollo.example.json.util.JsonPacketUtil; +import java.nio.charset.StandardCharsets; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import lombok.Getter; +import org.bukkit.entity.Player; +import org.bukkit.plugin.messaging.PluginMessageListener; +import org.jspecify.annotations.NonNull; + +public class ApolloRoundtripJsonListener implements PluginMessageListener { + + private static final String TYPE_PREFIX = "type.googleapis.com/"; + private static final JsonParser JSON_PARSER = new JsonParser(); + + @Getter + private static ApolloRoundtripJsonListener instance; + + private final Map>> roundTripPacketFutures = new ConcurrentHashMap<>(); + private final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); + + public ApolloRoundtripJsonListener(ApolloExamplePlugin plugin) { + instance = this; + } + + @Override + public void onPluginMessageReceived(@NonNull String channel, @NonNull Player player, byte[] bytes) { + JsonObject payload; + try { + payload = JSON_PARSER.parse(new String(bytes, StandardCharsets.UTF_8)).getAsJsonObject(); + } catch (Exception e) { + return; + } + + if (!payload.has("@type")) { + return; + } + + String type = payload.get("@type").getAsString(); + if (type.startsWith(TYPE_PREFIX)) { + type = type.substring(TYPE_PREFIX.length()); + } + + if ("lunarclient.apollo.transfer.v1.PingResponse".equals(type) + || "lunarclient.apollo.transfer.v1.TransferResponse".equals(type)) { + UUID requestId = UUID.fromString(payload.get("request_id").getAsString().replace("+", "-")); + this.handleResponse(player, requestId, payload); + } + } + + public CompletableFuture sendRequest(Player player, UUID requestId, JsonObject request, String requestType) { + request.addProperty("@type", TYPE_PREFIX + requestType); + request.addProperty("request_id", requestId.toString()); + JsonPacketUtil.sendPacket(player, request); + + CompletableFuture future = new CompletableFuture<>(); + + this.roundTripPacketFutures + .computeIfAbsent(player.getUniqueId(), k -> new ConcurrentHashMap<>()) + .put(requestId, future); + + ScheduledFuture timeoutTask = this.executorService.schedule(() -> + future.completeExceptionally(new TimeoutException("Response timed out")), + 10, TimeUnit.SECONDS + ); + + future.whenComplete((result, throwable) -> timeoutTask.cancel(false)); + return future; + } + + private void handleResponse(Player player, UUID requestId, JsonObject message) { + Map> futures = this.roundTripPacketFutures.get(player.getUniqueId()); + if (futures == null) { + return; + } + + CompletableFuture future = futures.remove(requestId); + if (future != null) { + future.complete(message); + } + } + +} diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/AutoTextHotkeyJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/AutoTextHotkeyJsonExample.java index e1bd38f95..34948fed1 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/AutoTextHotkeyJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/AutoTextHotkeyJsonExample.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/BeamJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/BeamJsonExample.java index d67010e0c..f8c2dd6b6 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/BeamJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/BeamJsonExample.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/BorderJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/BorderJsonExample.java index 922935105..a00553a0f 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/BorderJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/BorderJsonExample.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/ChatJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ChatJsonExample.java index b43359bc5..9c7128f1b 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ChatJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ChatJsonExample.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/ColoredFireJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ColoredFireJsonExample.java index 3c1461398..19ecf7624 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ColoredFireJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ColoredFireJsonExample.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/CombatJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/CombatJsonExample.java index 31559640a..1fb53ba08 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/CombatJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/CombatJsonExample.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/CooldownJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/CooldownJsonExample.java index 96393e8b5..a254be03f 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/CooldownJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/CooldownJsonExample.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 @@ -27,6 +27,7 @@ import com.lunarclient.apollo.example.json.util.JsonPacketUtil; import com.lunarclient.apollo.example.json.util.JsonUtil; import com.lunarclient.apollo.example.module.impl.CooldownExample; +import java.awt.Color; import java.time.Duration; import org.bukkit.entity.Player; @@ -43,13 +44,31 @@ public void displayCooldownItemExample(Player viewer) { JsonPacketUtil.sendPacket(viewer, message); } + @Override + public void displayCooldownWithStyleExample(Player viewer) { + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.cooldown.v1.DisplayCooldownMessage"); + message.addProperty("name", "book-cooldown"); + message.addProperty("duration", JsonUtil.createDurationObject(Duration.ofSeconds(30))); + message.add("icon", JsonUtil.createItemStackIconObject("BOOK", 0, 0)); + + JsonObject style = new JsonObject(); + style.add("circle_start_color", JsonUtil.createColorObject(new Color(255, 85, 85))); // ApolloColors.RED + style.add("circle_end_color", JsonUtil.createColorObject(new Color(85, 255, 85))); // ApolloColors.GREEN + style.add("circle_edge_color", JsonUtil.createColorObject(new Color(85, 85, 85))); // ApolloColors.DAR_GRAY + style.add("text_color", JsonUtil.createColorObject(new Color(255, 85, 255))); // ApolloColors.LIGHT_PURPLE + message.add("style", style); + + JsonPacketUtil.sendPacket(viewer, message); + } + @Override public void displayCooldownResourceExample(Player viewer) { JsonObject message = new JsonObject(); message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.cooldown.v1.DisplayCooldownMessage"); message.addProperty("name", "lunar-cooldown"); message.addProperty("duration", JsonUtil.createDurationObject(Duration.ofSeconds(15))); - message.add("icon", JsonUtil.createSimpleResourceLocationIconObject("lunar:logo/logo-200x182.svg", 12)); + message.add("icon", JsonUtil.createSimpleResourceLocationIconObject("lunar:logo/logo-64x64.png", 24)); JsonPacketUtil.sendPacket(viewer, message); } diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/EntityJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/EntityJsonExample.java index c1f6c3d53..6c328bfa7 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/EntityJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/EntityJsonExample.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/GlowJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/GlowJsonExample.java index dd1b8786c..33cf7a3bb 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/GlowJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/GlowJsonExample.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/HologramJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/HologramJsonExample.java index c66928451..fdf5a524f 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/HologramJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/HologramJsonExample.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/LimbJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/LimbJsonExample.java index 33ec2f5c5..26ae3578c 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/LimbJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/LimbJsonExample.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/ModSettingsJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ModSettingsJsonExample.java index fc3b577bd..bb245df13 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ModSettingsJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ModSettingsJsonExample.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/NametagJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NametagJsonExample.java index c994179c2..0b2f1de79 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NametagJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NametagJsonExample.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/NickHiderJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NickHiderJsonExample.java index 0b1dfd626..5ffe11380 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NickHiderJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NickHiderJsonExample.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/NotificationJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/NotificationJsonExample.java index 9a587a498..70c4b1bdc 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 @@ -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 @@ -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/json/src/main/java/com/lunarclient/apollo/example/json/module/PayNowJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/PayNowJsonExample.java index b7e6069d5..ee86295ff 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/PayNowJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/PayNowJsonExample.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/RichPresenceJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/RichPresenceJsonExample.java index b238fa470..0d6b7ca2c 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/RichPresenceJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/RichPresenceJsonExample.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 new file mode 100644 index 000000000..6cd6f7cd4 --- /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) 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 + * 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/module/ServerRuleJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerRuleJsonExample.java index e4b38ddb2..f965dfff6 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerRuleJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/ServerRuleJsonExample.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/StaffModJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/StaffModJsonExample.java index 73600ae5d..9967db00d 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/StaffModJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/StaffModJsonExample.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/StopwatchJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/StopwatchJsonExample.java index 64b7f3327..96a972cac 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/StopwatchJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/StopwatchJsonExample.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/TeamJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TeamJsonExample.java index 8683030d2..47f010b1d 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TeamJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TeamJsonExample.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 @@ -23,10 +23,10 @@ */ package com.lunarclient.apollo.example.json.module; -import com.google.common.collect.Maps; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.lunarclient.apollo.example.ApolloExamplePlugin; +import com.lunarclient.apollo.example.json.listener.ApolloPlayerJsonListener; import com.lunarclient.apollo.example.json.util.AdventureUtil; import com.lunarclient.apollo.example.json.util.JsonPacketUtil; import com.lunarclient.apollo.example.json.util.JsonUtil; @@ -34,10 +34,10 @@ import com.lunarclient.apollo.example.util.ServerUtil; import java.awt.Color; import java.util.Collection; -import java.util.HashMap; import java.util.Map; import java.util.Optional; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; @@ -49,8 +49,8 @@ public class TeamJsonExample extends TeamExample implements Listener { - private final Map teamsByTeamId = Maps.newHashMap(); - private final Map teamsByPlayerUuid = Maps.newHashMap(); + private final Map teamsByTeamId = new ConcurrentHashMap<>(); + private final Map teamsByPlayerUuid = new ConcurrentHashMap<>(); public TeamJsonExample() { if (ServerUtil.isFolia()) { @@ -113,7 +113,7 @@ public class Team { public Team() { this.teamId = UUID.randomUUID(); - this.members = new HashMap<>(); + this.members = new ConcurrentHashMap<>(); } public void addMember(Player player) { @@ -131,33 +131,75 @@ public void removeMember(Player player) { JsonPacketUtil.sendPacket(player, message); } - private JsonObject createTeamMember(Player member) { + private JsonObject createTeamMember(Player player, boolean withinPlayerTrackingRange) { JsonObject message = new JsonObject(); - message.add("player_uuid", JsonUtil.createUuidObject(member.getUniqueId())); - message.addProperty("adventure_json_player_name", AdventureUtil.toJson( - Component.text() - .content(member.getName()) - .color(NamedTextColor.WHITE) - .build() - )); + message.add("player_uuid", JsonUtil.createUuidObject(player.getUniqueId())); message.add("marker_color", JsonUtil.createColorObject(Color.WHITE)); - message.add("location", JsonUtil.createLocationObject(member.getLocation())); + + if (!withinPlayerTrackingRange) { + message.add("location", JsonUtil.createLocationObject(player.getLocation())); + + message.addProperty("adventure_json_player_name", AdventureUtil.toJson( + Component.text() + .content(player.getName()) + .color(NamedTextColor.WHITE) + .build() + )); + } return message; } // The refresh method used for updating members locations public void refresh() { - JsonArray teammates = this.members.values() - .stream().filter(Player::isOnline) - .map(this::createTeamMember) - .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + for (Player viewer : this.members.values()) { + if (!ApolloPlayerJsonListener.isPlayerRunningApollo(viewer)) { + continue; + } - JsonObject message = new JsonObject(); - message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.team.v1.UpdateTeamMembersMessage"); - message.add("members", teammates); + JsonArray teammates = new JsonArray(); + + for (Player member : this.members.values()) { + if (viewer == member) { + continue; + } + + if (!viewer.canSee(member)) { + continue; + } + + if (!viewer.getWorld().getName().equals(member.getWorld().getName())) { + continue; + } + + boolean withinPlayerTrackingRange = this.isWithinPlayerTrackingRange(viewer, member); + teammates.add(this.createTeamMember(member, withinPlayerTrackingRange)); + } + + JsonObject message = new JsonObject(); + message.addProperty("@type", "type.googleapis.com/lunarclient.apollo.team.v1.UpdateTeamMembersMessage"); + message.add("members", teammates); + + JsonPacketUtil.sendPacket(viewer, message); + } + } - this.members.values().forEach(member -> JsonPacketUtil.sendPacket(member, message)); + /** + *

This uses a simple distance check based on Paper/Spigot defaults + * (96 blocks for players). Ideally, this could be checked directly through + * the server's internal entity tracker for exact tracking behavior, but that + * is not exposed in the Bukkit API.

+ * + * @param viewer the viewer + * @param member the member + * @return whether within player tracking range + */ + private boolean isWithinPlayerTrackingRange(Player viewer, Player member) { + double maxDistance = 96; + double dx = viewer.getLocation().getX() - member.getLocation().getX(); + double dz = viewer.getLocation().getZ() - member.getLocation().getZ(); + + return (dx * dx + dz * dz) <= (maxDistance * maxDistance); } public UUID getTeamId() { diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TebexJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TebexJsonExample.java index a3a8920c9..b3542ca20 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TebexJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TebexJsonExample.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/TitleJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TitleJsonExample.java index a7d138d4b..a03aca206 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TitleJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TitleJsonExample.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/TntCountdownJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TntCountdownJsonExample.java index 90483853d..334944ef3 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TntCountdownJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TntCountdownJsonExample.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/TransferJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TransferJsonExample.java index 340a4b7b1..1c08bd0cb 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TransferJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/TransferJsonExample.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 @@ -23,19 +23,88 @@ */ package com.lunarclient.apollo.example.json.module; +import com.google.common.collect.Lists; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.lunarclient.apollo.example.json.listener.ApolloRoundtripJsonListener; import com.lunarclient.apollo.example.module.impl.TransferExample; +import java.util.UUID; import org.bukkit.entity.Player; public class TransferJsonExample extends TransferExample { @Override public void transferExample(Player player) { - this.sendNotImplemented(player); + UUID requestId = UUID.randomUUID(); + + JsonObject transferRequestMessage = new JsonObject(); + transferRequestMessage.addProperty("server_ip", "mc.hypixel.net"); + + ApolloRoundtripJsonListener.getInstance() + .sendRequest(player, requestId, transferRequestMessage, "lunarclient.apollo.transfer.v1.TransferRequest") + .thenAccept(response -> { + String message = ""; + String status = response.get("status").getAsString(); + + switch (status) { + case "STATUS_ACCEPTED": { + message = "Transfer accepted! Goodbye!"; + break; + } + + case "STATUS_REJECTED": { + message = "Transfer rejected by client!"; + break; + } + } + + player.sendMessage(message); + }).exceptionally(throwable -> { + player.sendMessage("Failed to receive a response in time."); + return null; + }); } @Override public void pingExample(Player player) { - this.sendNotImplemented(player); + UUID requestId = UUID.randomUUID(); + + JsonObject pingRequestMessage = new JsonObject(); + JsonArray serverIps = Lists.newArrayList("mc.hypixel.net", "minehut.com") + .stream().collect(JsonArray::new, JsonArray::add, JsonArray::addAll); + pingRequestMessage.add("server_ips", serverIps); + + ApolloRoundtripJsonListener.getInstance() + .sendRequest(player, requestId, pingRequestMessage, "lunarclient.apollo.transfer.v1.PingRequest") + .thenAccept(response -> { + JsonArray pingDataList = response.getAsJsonArray("ping_data"); + + for (JsonElement element : pingDataList) { + JsonObject pingData = element.getAsJsonObject(); + String message = ""; + + String status = pingData.get("status").getAsString(); + switch (status) { + // Displays successful ping request to display the server IP and the players ping to that server. + case "STATUS_SUCCESS": { + message = String.format("Ping to %s is %d ms.", pingData.get("server_ip").getAsString(), pingData.get("ping").getAsInt()); + break; + } + + // If the ping request times-out + case "STATUS_TIMED_OUT": { + message = String.format("Failed to ping %s", pingData.get("server_ip").getAsString()); + break; + } + } + + player.sendMessage(message); + } + }).exceptionally(throwable -> { + player.sendMessage("Failed to receive a response in time."); + return null; + }); } } diff --git a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/VignetteJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/VignetteJsonExample.java index d6720c4ab..25a79c80f 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/VignetteJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/VignetteJsonExample.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/WaypointJsonExample.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/WaypointJsonExample.java index 8907f3bbd..a0a2f64ce 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/WaypointJsonExample.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/module/WaypointJsonExample.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/util/AdventureUtil.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/AdventureUtil.java index 2efd4938c..3e8d0c670 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/AdventureUtil.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/AdventureUtil.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/util/JsonPacketUtil.java b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/JsonPacketUtil.java index 7b862ef50..3e1b97502 100644 --- a/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/JsonPacketUtil.java +++ b/example/bukkit/json/src/main/java/com/lunarclient/apollo/example/json/util/JsonPacketUtil.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 @@ -40,18 +40,23 @@ public final class JsonPacketUtil { - private static final List APOLLO_MODULES = Arrays.asList("limb", "beam", "border", "chat", "colored_fire", "combat", "cooldown", - "entity", "glow", "hologram", "mod_setting", "nametag", "nick_hider", "notification", "packet_enrichment", "rich_presence", - "server_rule", "staff_mod", "stopwatch", "team", "title", "tnt_countdown", "transfer", "vignette", "waypoint" + private static final List APOLLO_MODULES = Arrays.asList("auto_text_hotkey", "beam", "border", "chat", "colored_fire", "combat", "cooldown", + "entity", "glint", "glow", "hologram", "inventory", "limb", "mod_setting", "nametag", "nick_hider", "notification", "pay_now", "packet_enrichment", + "rich_presence", "saturation", "server_rule", "staff_mod", "stopwatch", "team", "tebex", "title", "tnt_countdown", "transfer", "vignette", "waypoint" ); // Module Id -> Option key -> Object private static final Table CONFIG_MODULE_PROPERTIES = HashBasedTable.create(); static { - // Module Options that the client needs to notified about, these properties are sent with the enable module packet + // Module Options the client needs to be notified about. These properties are sent with the enable module packet. // While using the Apollo plugin this would be equivalent to modifying the config.yml CONFIG_MODULE_PROPERTIES.put("combat", "disable-miss-penalty", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-attack.send-packet", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-chat-open.send-packet", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-chat-close.send-packet", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-use-item.send-packet", false); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-use-item-bucket.send-packet", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-game", false); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-commands", Arrays.asList("/server", "/servers", "/hub")); CONFIG_MODULE_PROPERTIES.put("server_rule", "disable-shaders", false); 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 189665675..841a96943 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 @@ -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 @@ -26,8 +26,10 @@ import com.google.gson.JsonObject; import java.awt.Color; import java.time.Duration; +import java.time.Instant; import java.util.Map; import java.util.UUID; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.jetbrains.annotations.NotNull; @@ -35,6 +37,18 @@ public final class JsonUtil { + public static UUID toJavaUuid(JsonObject obj) { + long high = Long.parseUnsignedLong(obj.get("high64").getAsString()); + long low = Long.parseUnsignedLong(obj.get("low64").getAsString()); + return new UUID(high, low); + } + + public static long toJavaTimestamp(JsonObject timestampObject) { + JsonObject packetInfo = timestampObject.getAsJsonObject("packet_info"); + String iso = packetInfo.get("instantiation_time").getAsString(); + return Instant.parse(iso).toEpochMilli(); + } + public static JsonObject createEnableModuleObjectWithType(@NotNull String module, Map properties) { JsonObject enableModuleObject = JsonPacketUtil.createEnableModuleObject(module, properties); enableModuleObject.addProperty("@type", "type.googleapis.com/lunarclient.apollo.configurable.v1.ConfigurableSettings"); @@ -105,6 +119,22 @@ public static JsonObject createBlockLocationObject(@NotNull Location location) { return locationObject; } + public static Location toBukkitLocation(JsonObject message) { + return new Location( + Bukkit.getWorld(message.get("world").getAsString()), + message.get("x").getAsDouble(), + message.get("y").getAsDouble(), + message.get("z").getAsDouble() + ); + } + + public static Location toBukkitPlayerLocation(JsonObject message) { + Location location = JsonUtil.toBukkitLocation(message.getAsJsonObject("location")); + location.setYaw(message.get("yaw").getAsFloat()); + location.setPitch(message.get("pitch").getAsFloat()); + return location; + } + public static JsonObject createItemStackIconObject(@Nullable String itemName, int itemId, int customModelData) { JsonObject itemIconObject = new JsonObject(); if (itemName != null) { @@ -120,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 75b62a397..f02c1bfd3 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 @@ -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 @@ -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/listener/ApolloPacketReceiveProtoListener.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloPacketReceiveProtoListener.java index 4fb6e2d7f..63933bd75 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloPacketReceiveProtoListener.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloPacketReceiveProtoListener.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 @@ -25,23 +25,31 @@ import com.google.protobuf.Any; import com.google.protobuf.InvalidProtocolBufferException; +import com.lunarclient.apollo.common.v1.BlockLocation; +import com.lunarclient.apollo.common.v1.EntityId; +import com.lunarclient.apollo.common.v1.Location; import com.lunarclient.apollo.common.v1.LunarClientVersion; import com.lunarclient.apollo.common.v1.MinecraftVersion; import com.lunarclient.apollo.example.ApolloExamplePlugin; import com.lunarclient.apollo.example.proto.util.ProtobufUtil; +import com.lunarclient.apollo.packetenrichment.v1.BlockHit; +import com.lunarclient.apollo.packetenrichment.v1.Direction; +import com.lunarclient.apollo.packetenrichment.v1.EntityHit; import com.lunarclient.apollo.packetenrichment.v1.PlayerAttackMessage; import com.lunarclient.apollo.packetenrichment.v1.PlayerChatCloseMessage; import com.lunarclient.apollo.packetenrichment.v1.PlayerChatOpenMessage; import com.lunarclient.apollo.packetenrichment.v1.PlayerInfo; +import com.lunarclient.apollo.packetenrichment.v1.PlayerUseItemBucketMessage; import com.lunarclient.apollo.packetenrichment.v1.PlayerUseItemMessage; +import com.lunarclient.apollo.packetenrichment.v1.RayTraceResult; import com.lunarclient.apollo.player.v1.EmbeddedCheckoutSupport; import com.lunarclient.apollo.player.v1.ModMessage; import com.lunarclient.apollo.player.v1.PlayerHandshakeMessage; import java.util.List; import java.util.UUID; -import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.plugin.messaging.PluginMessageListener; +import org.jspecify.annotations.NonNull; public class ApolloPacketReceiveProtoListener implements PluginMessageListener { @@ -50,7 +58,7 @@ public ApolloPacketReceiveProtoListener(ApolloExamplePlugin plugin) { } @Override - public void onPluginMessageReceived(String s, Player player, byte[] bytes) { + public void onPluginMessageReceived(@NonNull String channel, @NonNull Player player, byte[] bytes) { try { Any any = Any.parseFrom(bytes); @@ -67,6 +75,8 @@ public void onPluginMessageReceived(String s, Player player, byte[] bytes) { this.onPlayerChatClose(any.unpack(PlayerChatCloseMessage.class)); } else if (any.is(PlayerUseItemMessage.class)) { this.onPlayerUseItem(any.unpack(PlayerUseItemMessage.class)); + } else if (any.is(PlayerUseItemBucketMessage.class)) { + this.onPlayerUseItemBucket(any.unpack(PlayerUseItemBucketMessage.class)); } } catch (InvalidProtocolBufferException e) { throw new RuntimeException(e); @@ -74,10 +84,10 @@ public void onPluginMessageReceived(String s, Player player, byte[] bytes) { } private void onPlayerHandshake(PlayerHandshakeMessage message) { + EmbeddedCheckoutSupport checkoutSupport = message.getEmbeddedCheckoutSupport(); MinecraftVersion minecraftVersion = message.getMinecraftVersion(); LunarClientVersion lunarClientVersion = message.getLunarClientVersion(); - EmbeddedCheckoutSupport checkoutSupport = message.getEmbeddedCheckoutSupport(); String gitBranch = lunarClientVersion.getGitBranch(); String gitCommit = lunarClientVersion.getGitCommit(); String semVer = lunarClientVersion.getSemver(); @@ -124,9 +134,32 @@ private void onPlayerUseItem(PlayerUseItemMessage message) { boolean mainHand = message.getMainHand(); } + private void onPlayerUseItemBucket(PlayerUseItemBucketMessage message) { + long instantiationTimeMs = ProtobufUtil.toJavaTimestamp(message.getPacketInfo().getInstantiationTime()); + + PlayerInfo playerInfo = message.getPlayerInfo(); + this.onPlayerInfo(playerInfo); + + RayTraceResult rayTraceResult = message.getRayTraceResult(); + + if (rayTraceResult.hasBlock()) { + BlockHit blockHit = rayTraceResult.getBlock(); + + Location hitLocation = blockHit.getHitLocation(); + BlockLocation blockLocation = blockHit.getBlockLocation(); + Direction direction = blockHit.getDirection(); + } else if (rayTraceResult.hasEntity()) { + EntityHit entityHit = rayTraceResult.getEntity(); + Location hitLocation = entityHit.getHitLocation(); + EntityId entityId = entityHit.getEntityId(); + } else { + // Miss + } + } + private void onPlayerInfo(PlayerInfo info) { UUID uuid = ProtobufUtil.toJavaUuid(info.getPlayerUuid()); - Location location = ProtobufUtil.toBukkitLocation(info.getLocation()); + org.bukkit.Location location = ProtobufUtil.toBukkitLocation(info.getLocation()); boolean sneaking = info.getSneaking(); boolean sprinting = info.getSprinting(); boolean jumping = info.getJumping(); diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloPlayerProtoListener.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloPlayerProtoListener.java index efcbcbe9e..a9aee6324 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloPlayerProtoListener.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloPlayerProtoListener.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 @@ -42,7 +42,7 @@ public class ApolloPlayerProtoListener implements Listener { private final ApolloExamplePlugin plugin; - private final Set playersRunningApollo = new HashSet<>(); + private static final Set PLAYERS_RUNNING_APOLLO = new HashSet<>(); public ApolloPlayerProtoListener(ApolloExamplePlugin plugin) { this.plugin = plugin; @@ -56,7 +56,7 @@ public ApolloPlayerProtoListener(ApolloExamplePlugin plugin) { } public void disable() { - this.playersRunningApollo.clear(); + PLAYERS_RUNNING_APOLLO.clear(); Messenger messenger = Bukkit.getServer().getMessenger(); messenger.unregisterOutgoingPluginChannel(this.plugin, "lunar:apollo"); @@ -77,7 +77,7 @@ private void onRegisterChannel(PlayerRegisterChannelEvent event) { // Sending the player's world name to the client is required for some modules ProtobufPacketUtil.sendPacket(player, this.createUpdatePlayerWorldMessage(player)); - this.playersRunningApollo.add(player.getUniqueId()); + PLAYERS_RUNNING_APOLLO.add(player.getUniqueId()); player.sendMessage("You are using LunarClient!"); } @@ -95,8 +95,8 @@ private UpdatePlayerWorldMessage createUpdatePlayerWorldMessage(Player player) { .build(); } - private boolean isPlayerRunningApollo(Player player) { - return this.playersRunningApollo.contains(player.getUniqueId()); + public static boolean isPlayerRunningApollo(Player player) { + return PLAYERS_RUNNING_APOLLO.contains(player.getUniqueId()); } } diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloRoundtripProtoListener.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloRoundtripProtoListener.java index 66738d56d..97a4e1e48 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloRoundtripProtoListener.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/listener/ApolloRoundtripProtoListener.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 @@ -42,6 +42,7 @@ import lombok.Getter; import org.bukkit.entity.Player; import org.bukkit.plugin.messaging.PluginMessageListener; +import org.jspecify.annotations.NonNull; public class ApolloRoundtripProtoListener implements PluginMessageListener { @@ -56,7 +57,7 @@ public ApolloRoundtripProtoListener(ApolloExamplePlugin plugin) { } @Override - public void onPluginMessageReceived(String s, Player player, byte[] bytes) { + public void onPluginMessageReceived(@NonNull String channel, @NonNull Player player, byte[] bytes) { try { Any any = Any.parseFrom(bytes); diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/AutoTextHotkeyProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/AutoTextHotkeyProtoExample.java index 56776538b..b83fb827d 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/AutoTextHotkeyProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/AutoTextHotkeyProtoExample.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/BeamProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/BeamProtoExample.java index 21c4fe2ff..4c8c7c558 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/BeamProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/BeamProtoExample.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/BorderProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/BorderProtoExample.java index 66809131a..15f6d2176 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/BorderProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/BorderProtoExample.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/ChatProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ChatProtoExample.java index 687783509..48ca34384 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ChatProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ChatProtoExample.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/ColoredFireProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ColoredFireProtoExample.java index b3f98da1f..a288c228c 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ColoredFireProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ColoredFireProtoExample.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/CombatProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/CombatProtoExample.java index ae4ce94d9..732e8ba2b 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/CombatProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/CombatProtoExample.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/CooldownProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/CooldownProtoExample.java index 91d150695..1834aab5d 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 @@ -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 @@ -23,12 +23,15 @@ */ package com.lunarclient.apollo.example.proto.module; +import com.lunarclient.apollo.common.v1.Icon; +import com.lunarclient.apollo.cooldown.v1.CooldownStyle; import com.lunarclient.apollo.cooldown.v1.DisplayCooldownMessage; import com.lunarclient.apollo.cooldown.v1.RemoveCooldownMessage; import com.lunarclient.apollo.cooldown.v1.ResetCooldownsMessage; import com.lunarclient.apollo.example.module.impl.CooldownExample; import com.lunarclient.apollo.example.proto.util.ProtobufPacketUtil; import com.lunarclient.apollo.example.proto.util.ProtobufUtil; +import java.awt.Color; import java.time.Duration; import org.bukkit.entity.Player; @@ -39,7 +42,28 @@ 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); + } + + @Override + public void displayCooldownWithStyleExample(Player viewer) { + DisplayCooldownMessage message = DisplayCooldownMessage.newBuilder() + .setName("book-cooldown") + .setDuration(ProtobufUtil.createDurationProto(Duration.ofSeconds(30))) + .setIcon(Icon.newBuilder() + .setItemStack(ProtobufUtil.createItemStackIconProto("BOOK", 0, 0)) + .build()) + .setStyle(CooldownStyle.newBuilder() + .setCircleStartColor(ProtobufUtil.createColorProto(new Color(255, 85, 85))) // ApolloColors.RED + .setCircleEndColor(ProtobufUtil.createColorProto(new Color(85, 255, 85))) // ApolloColors.GREEN + .setCircleEdgeColor(ProtobufUtil.createColorProto(new Color(85, 85, 85))) // ApolloColors.DAR_GRAY + .setTextColor(ProtobufUtil.createColorProto(new Color(255, 85, 255))) // ApolloColors.LIGHT_PURPLE + .build()) .build(); ProtobufPacketUtil.sendPacket(viewer, message); @@ -50,7 +74,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-64x64.png", 24)) + .build()) .build(); ProtobufPacketUtil.sendPacket(viewer, message); diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/EntityProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/EntityProtoExample.java index d07b3a4ea..1bf406bcf 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/EntityProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/EntityProtoExample.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/GlowProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/GlowProtoExample.java index 19fa1a43a..c6943ee7b 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/GlowProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/GlowProtoExample.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/HologramProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/HologramProtoExample.java index f9735318a..c453945e2 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/HologramProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/HologramProtoExample.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/LimbProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/LimbProtoExample.java index 4664a4925..3d88507aa 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/LimbProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/LimbProtoExample.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/ModSettingsProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ModSettingsProtoExample.java index 86265bcb5..c3ebf501d 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ModSettingsProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ModSettingsProtoExample.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/NametagProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NametagProtoExample.java index e553bf5d2..07e5dbebe 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NametagProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NametagProtoExample.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/NickHiderProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NickHiderProtoExample.java index 0e2df4c6b..84e025d96 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NickHiderProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NickHiderProtoExample.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/NotificationProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/NotificationProtoExample.java index 92f5c5edd..0853dca56 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 @@ -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 @@ -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(); diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/PayNowProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/PayNowProtoExample.java index 9e47fe27d..b5eb6ab84 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/PayNowProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/PayNowProtoExample.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/RichPresenceProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/RichPresenceProtoExample.java index 338dbcbbe..0d7c3fb21 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/RichPresenceProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/RichPresenceProtoExample.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 new file mode 100644 index 000000000..c39e53cc2 --- /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) 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 + * 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/module/ServerRuleProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerRuleProtoExample.java index c6c39c7d2..a53de5653 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerRuleProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/ServerRuleProtoExample.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/StaffModProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/StaffModProtoExample.java index d3047d41d..baabe174b 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/StaffModProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/StaffModProtoExample.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/StopwatchProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/StopwatchProtoExample.java index 53c3e829c..5f8960b52 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/StopwatchProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/StopwatchProtoExample.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/TeamProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TeamProtoExample.java index 35726ceae..f2931c66e 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TeamProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TeamProtoExample.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 @@ -23,9 +23,9 @@ */ package com.lunarclient.apollo.example.proto.module; -import com.google.common.collect.Maps; import com.lunarclient.apollo.example.ApolloExamplePlugin; import com.lunarclient.apollo.example.module.impl.TeamExample; +import com.lunarclient.apollo.example.proto.listener.ApolloPlayerProtoListener; import com.lunarclient.apollo.example.proto.util.AdventureUtil; import com.lunarclient.apollo.example.proto.util.ProtobufPacketUtil; import com.lunarclient.apollo.example.proto.util.ProtobufUtil; @@ -34,14 +34,14 @@ import com.lunarclient.apollo.team.v1.TeamMember; import com.lunarclient.apollo.team.v1.UpdateTeamMembersMessage; import java.awt.Color; +import java.util.ArrayList; import java.util.Collection; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; @@ -52,8 +52,8 @@ public class TeamProtoExample extends TeamExample implements Listener { - private final Map teamsByTeamId = Maps.newHashMap(); - private final Map teamsByPlayerUuid = Maps.newHashMap(); + private final Map teamsByTeamId = new ConcurrentHashMap<>(); + private final Map teamsByPlayerUuid = new ConcurrentHashMap<>(); public TeamProtoExample() { if (ServerUtil.isFolia()) { @@ -116,7 +116,7 @@ public class Team { public Team() { this.teamId = UUID.randomUUID(); - this.members = new HashMap<>(); + this.members = new ConcurrentHashMap<>(); } public void addMember(Player player) { @@ -132,31 +132,74 @@ public void removeMember(Player player) { ProtobufPacketUtil.sendPacket(player, message); } - private TeamMember createTeamMember(Player member) { - return TeamMember.newBuilder() - .setPlayerUuid(ProtobufUtil.createUuidProto(member.getUniqueId())) - .setAdventureJsonPlayerName(AdventureUtil.toJson( + private TeamMember createTeamMember(Player player, boolean withinPlayerTrackingRange) { + TeamMember.Builder builder = TeamMember.newBuilder() + .setPlayerUuid(ProtobufUtil.createUuidProto(player.getUniqueId())) + .setMarkerColor(ProtobufUtil.createColorProto(Color.WHITE)); + + if (!withinPlayerTrackingRange) { + builder.setLocation(ProtobufUtil.createLocationProto(player.getLocation())); + + builder.setAdventureJsonPlayerName(AdventureUtil.toJson( Component.text() - .content(member.getName()) + .content(player.getName()) .color(NamedTextColor.WHITE) .build() - )) - .setMarkerColor(ProtobufUtil.createColorProto(Color.WHITE)) - .setLocation(ProtobufUtil.createLocationProto(member.getLocation())) - .build(); + )); + } + + return builder.build(); } // The refresh method used for updating members locations public void refresh() { - List teammates = this.members.values().stream().filter(Player::isOnline) - .map(this::createTeamMember) - .collect(Collectors.toList()); + for (Player viewer : this.members.values()) { + if (!ApolloPlayerProtoListener.isPlayerRunningApollo(viewer)) { + continue; + } + + List teammates = new ArrayList<>(); + + for (Player member : this.members.values()) { + if (viewer == member) { + continue; + } - UpdateTeamMembersMessage message = UpdateTeamMembersMessage.newBuilder() - .addAllMembers(teammates) - .build(); + if (!viewer.canSee(member)) { + continue; + } + + if (!viewer.getWorld().getName().equals(member.getWorld().getName())) { + continue; + } + + boolean withinPlayerTrackingRange = this.isWithinPlayerTrackingRange(viewer, member); + teammates.add(this.createTeamMember(member, withinPlayerTrackingRange)); + } + + UpdateTeamMembersMessage message = UpdateTeamMembersMessage.newBuilder() + .addAllMembers(teammates) + .build(); + + ProtobufPacketUtil.sendPacket(viewer, message); + } + } - this.members.values().forEach(member -> ProtobufPacketUtil.sendPacket(member, message)); + /** + *

Check if player is within 48 blocks. Ideally, this could be checked directly + * through the server's internal entity tracker for exact tracking behavior, + * but that is not exposed in the Bukkit API.

+ * + * @param viewer the viewer + * @param member the member + * @return whether within player tracking range + */ + private boolean isWithinPlayerTrackingRange(Player viewer, Player member) { + double maxDistance = 48; + double dx = viewer.getLocation().getX() - member.getLocation().getX(); + double dz = viewer.getLocation().getZ() - member.getLocation().getZ(); + + return (dx * dx + dz * dz) <= (maxDistance * maxDistance); } public UUID getTeamId() { diff --git a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TebexProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TebexProtoExample.java index bb3ab2ece..7ddf1ffc3 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TebexProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TebexProtoExample.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/TitleProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TitleProtoExample.java index 6488314dc..81b9d66ad 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TitleProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TitleProtoExample.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/TntCountdownProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TntCountdownProtoExample.java index d68b2c5f1..abd7f2cd6 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TntCountdownProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TntCountdownProtoExample.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/TransferProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TransferProtoExample.java index 5e2b8c204..a978b6bf5 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TransferProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/TransferProtoExample.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/VignetteProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/VignetteProtoExample.java index 6fb59896a..4d6165fca 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/VignetteProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/VignetteProtoExample.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/WaypointProtoExample.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/WaypointProtoExample.java index 523f81c75..af0ad9e74 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/WaypointProtoExample.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/module/WaypointProtoExample.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/util/AdventureUtil.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/AdventureUtil.java index ad4ec611a..d0321af4e 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/AdventureUtil.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/AdventureUtil.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/util/ProtobufPacketUtil.java b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/ProtobufPacketUtil.java index a9be9f648..e2130a6b4 100644 --- a/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/ProtobufPacketUtil.java +++ b/example/bukkit/proto/src/main/java/com/lunarclient/apollo/example/proto/util/ProtobufPacketUtil.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 @@ -41,18 +41,23 @@ public final class ProtobufPacketUtil { - private static final List APOLLO_MODULES = Arrays.asList("limb", "beam", "border", "chat", "colored_fire", "combat", "cooldown", - "entity", "glow", "hologram", "mod_setting", "nametag", "nick_hider", "notification", "packet_enrichment", "rich_presence", - "server_rule", "staff_mod", "stopwatch", "team", "title", "tnt_countdown", "transfer", "vignette", "waypoint" + private static final List APOLLO_MODULES = Arrays.asList("auto_text_hotkey", "beam", "border", "chat", "colored_fire", "combat", "cooldown", + "entity", "glint", "glow", "hologram", "inventory", "limb", "mod_setting", "nametag", "nick_hider", "notification", "pay_now", "packet_enrichment", + "rich_presence", "saturation", "server_rule", "staff_mod", "stopwatch", "team", "tebex", "title", "tnt_countdown", "transfer", "vignette", "waypoint" ); // Module Id -> Option key -> Value private static final Table CONFIG_MODULE_PROPERTIES = HashBasedTable.create(); static { - // Module Options that the client needs to notified about, these properties are sent with the enable module packet + // Module Options the client needs to be notified about. These properties are sent with the enable module packet. // While using the Apollo plugin this would be equivalent to modifying the config.yml CONFIG_MODULE_PROPERTIES.put("combat", "disable-miss-penalty", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-attack.send-packet", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-chat-open.send-packet", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-chat-close.send-packet", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-use-item.send-packet", Value.newBuilder().setBoolValue(false).build()); + CONFIG_MODULE_PROPERTIES.put("packet_enrichment", "player-use-item-bucket.send-packet", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-game", Value.newBuilder().setBoolValue(false).build()); CONFIG_MODULE_PROPERTIES.put("server_rule", "competitive-commands", Value.newBuilder().setListValue( ListValue.newBuilder().addAllValues(Arrays.asList( 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 ff985cea9..2c35b3c34 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 @@ -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 @@ -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() { diff --git a/example/minestom/api/src/main/java/com/lunarclient/apollo/example/ApolloMinestomExample.java b/example/minestom/api/src/main/java/com/lunarclient/apollo/example/ApolloMinestomExample.java index abb0407d7..9e71a9168 100644 --- a/example/minestom/api/src/main/java/com/lunarclient/apollo/example/ApolloMinestomExample.java +++ b/example/minestom/api/src/main/java/com/lunarclient/apollo/example/ApolloMinestomExample.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/extra/adventure4/src/main/java/com/lunarclient/apollo/common/ApolloComponent.java b/extra/adventure4/src/main/java/com/lunarclient/apollo/common/ApolloComponent.java index 4bec54601..93c11e7a8 100644 --- a/extra/adventure4/src/main/java/com/lunarclient/apollo/common/ApolloComponent.java +++ b/extra/adventure4/src/main/java/com/lunarclient/apollo/common/ApolloComponent.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/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicAgent.java b/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicAgent.java index 6445f1aa9..9c6d79624 100644 --- a/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicAgent.java +++ b/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicAgent.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/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicDependencies.java b/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicDependencies.java index 9f0070239..dbc8374a9 100644 --- a/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicDependencies.java +++ b/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicDependencies.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/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicLoader.java b/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicLoader.java index 0a1dcb12d..a17332845 100644 --- a/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicLoader.java +++ b/extra/loader/src/main/java/com/lunarclient/apollo/loader/DynamicLoader.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/extra/loader/src/main/java/com/lunarclient/apollo/loader/PlatformPlugin.java b/extra/loader/src/main/java/com/lunarclient/apollo/loader/PlatformPlugin.java index a66a93f6e..c6c04c377 100644 --- a/extra/loader/src/main/java/com/lunarclient/apollo/loader/PlatformPlugin.java +++ b/extra/loader/src/main/java/com/lunarclient/apollo/loader/PlatformPlugin.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/gradle.properties b/gradle.properties index 0507e51fe..91f229d99 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=com.lunarclient -version=1.2.4 +version=1.2.5-SNAPSHOT description=The API for interacting with Lunar Client players. org.gradle.parallel=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1a56e5582..13049556f 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.9" gson = "2.10.1" shadow = "8.1.1" spotless = "6.13.0" diff --git a/license.txt b/license.txt index 5afe15c8f..b05c8272e 100644 --- a/license.txt +++ b/license.txt @@ -1,6 +1,6 @@ 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/license_header.txt b/license_header.txt index 8d5211789..99eaefc0f 100644 --- a/license_header.txt +++ b/license_header.txt @@ -1,6 +1,6 @@ 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/platform/bukkit/src/main/java/com/lunarclient/apollo/ApolloBukkitPlatform.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/ApolloBukkitPlatform.java index ee036ee47..8965682cf 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/ApolloBukkitPlatform.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/ApolloBukkitPlatform.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 @@ -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/bukkit/src/main/java/com/lunarclient/apollo/command/BukkitApolloCommand.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/command/BukkitApolloCommand.java index fadd27eab..042dd4794 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/command/BukkitApolloCommand.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/command/BukkitApolloCommand.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/platform/bukkit/src/main/java/com/lunarclient/apollo/command/BukkitLunarClientCommand.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/command/BukkitLunarClientCommand.java index b33e03dde..c61c43559 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/command/BukkitLunarClientCommand.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/command/BukkitLunarClientCommand.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/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java index ecd497dfa..725a97e0a 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.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/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java index 69997978e..2041681ad 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.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/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.java index 16498ec19..bffb69063 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.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/platform/bukkit/src/main/java/com/lunarclient/apollo/metadata/BukkitMetadata.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/metadata/BukkitMetadata.java index 1880dfa8a..376e8fb0a 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/metadata/BukkitMetadata.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/metadata/BukkitMetadata.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/platform/bukkit/src/main/java/com/lunarclient/apollo/metadata/BukkitMetadataManager.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/metadata/BukkitMetadataManager.java index 9e6d350aa..06067114d 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/metadata/BukkitMetadataManager.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/metadata/BukkitMetadataManager.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/platform/bukkit/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java index 67a03b803..3b79b5dae 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.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/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloPlayer.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloPlayer.java index 5e7b08a17..34d24e4ae 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloPlayer.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloPlayer.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/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloStats.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloStats.java index a78cbe602..8a430e593 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloStats.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloStats.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/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloWorld.java b/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloWorld.java index e70403ce2..48c8dc015 100644 --- a/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloWorld.java +++ b/platform/bukkit/src/main/java/com/lunarclient/apollo/wrapper/BukkitApolloWorld.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/platform/bukkit/src/platform-loader/java/com/lunarclient/apollo/loader/BukkitPlatformLoader.java b/platform/bukkit/src/platform-loader/java/com/lunarclient/apollo/loader/BukkitPlatformLoader.java index 42faa457c..f9798ef9b 100644 --- a/platform/bukkit/src/platform-loader/java/com/lunarclient/apollo/loader/BukkitPlatformLoader.java +++ b/platform/bukkit/src/platform-loader/java/com/lunarclient/apollo/loader/BukkitPlatformLoader.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/platform/bungee/src/main/java/com/lunarclient/apollo/ApolloBungeePlatform.java b/platform/bungee/src/main/java/com/lunarclient/apollo/ApolloBungeePlatform.java index 088c4b9fa..7e958dc05 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/ApolloBungeePlatform.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/ApolloBungeePlatform.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 @@ -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/bungee/src/main/java/com/lunarclient/apollo/command/BungeeApolloCommand.java b/platform/bungee/src/main/java/com/lunarclient/apollo/command/BungeeApolloCommand.java index 7e0c9d177..9a49e51ba 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/command/BungeeApolloCommand.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/command/BungeeApolloCommand.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/platform/bungee/src/main/java/com/lunarclient/apollo/command/BungeeLunarClientCommand.java b/platform/bungee/src/main/java/com/lunarclient/apollo/command/BungeeLunarClientCommand.java index 1471edab3..6cd246714 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/command/BungeeLunarClientCommand.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/command/BungeeLunarClientCommand.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/platform/bungee/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java b/platform/bungee/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java index 7fca15957..f81147938 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.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/platform/bungee/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java b/platform/bungee/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java index 4a8fe2a7c..05cb23af1 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.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/platform/bungee/src/main/java/com/lunarclient/apollo/metadata/BungeeMetadata.java b/platform/bungee/src/main/java/com/lunarclient/apollo/metadata/BungeeMetadata.java index 0a7e5bd65..57816963f 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/metadata/BungeeMetadata.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/metadata/BungeeMetadata.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/platform/bungee/src/main/java/com/lunarclient/apollo/metadata/BungeeMetadataManager.java b/platform/bungee/src/main/java/com/lunarclient/apollo/metadata/BungeeMetadataManager.java index 5043e4932..ce4ba1e97 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/metadata/BungeeMetadataManager.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/metadata/BungeeMetadataManager.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/platform/bungee/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java b/platform/bungee/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java index 67a03b803..3b79b5dae 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.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/platform/bungee/src/main/java/com/lunarclient/apollo/wrapper/BungeeApolloPlayer.java b/platform/bungee/src/main/java/com/lunarclient/apollo/wrapper/BungeeApolloPlayer.java index 54b338a6d..f8245f2e6 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/wrapper/BungeeApolloPlayer.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/wrapper/BungeeApolloPlayer.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/platform/bungee/src/main/java/com/lunarclient/apollo/wrapper/BungeeApolloStats.java b/platform/bungee/src/main/java/com/lunarclient/apollo/wrapper/BungeeApolloStats.java index d575ba2eb..ad4d3073d 100644 --- a/platform/bungee/src/main/java/com/lunarclient/apollo/wrapper/BungeeApolloStats.java +++ b/platform/bungee/src/main/java/com/lunarclient/apollo/wrapper/BungeeApolloStats.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/platform/bungee/src/platform-loader/java/com/lunarclient/apollo/loader/BungeePlatformLoader.java b/platform/bungee/src/platform-loader/java/com/lunarclient/apollo/loader/BungeePlatformLoader.java index 1bc6fcf70..d7213cd74 100644 --- a/platform/bungee/src/platform-loader/java/com/lunarclient/apollo/loader/BungeePlatformLoader.java +++ b/platform/bungee/src/platform-loader/java/com/lunarclient/apollo/loader/BungeePlatformLoader.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/platform/folia/src/main/java/com/lunarclient/apollo/ApolloFoliaPlatform.java b/platform/folia/src/main/java/com/lunarclient/apollo/ApolloFoliaPlatform.java index 1ca080e6c..e28530da7 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/ApolloFoliaPlatform.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/ApolloFoliaPlatform.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 @@ -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/folia/src/main/java/com/lunarclient/apollo/command/FoliaApolloCommand.java b/platform/folia/src/main/java/com/lunarclient/apollo/command/FoliaApolloCommand.java index b4fd4b571..a42dd0075 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/command/FoliaApolloCommand.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/command/FoliaApolloCommand.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/platform/folia/src/main/java/com/lunarclient/apollo/command/FoliaLunarClientCommand.java b/platform/folia/src/main/java/com/lunarclient/apollo/command/FoliaLunarClientCommand.java index f44da0cf8..cb3cfebd7 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/command/FoliaLunarClientCommand.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/command/FoliaLunarClientCommand.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/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java b/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java index 6843fc559..5280f416e 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.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/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java b/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java index c25f6db99..f10ae6e6d 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.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/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.java b/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.java index 3d79ca33e..ed6a7ac8a 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.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/platform/folia/src/main/java/com/lunarclient/apollo/metadata/FoliaMetadata.java b/platform/folia/src/main/java/com/lunarclient/apollo/metadata/FoliaMetadata.java index c84dc27e0..5ba3c4676 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/metadata/FoliaMetadata.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/metadata/FoliaMetadata.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/platform/folia/src/main/java/com/lunarclient/apollo/metadata/FoliaMetadataManager.java b/platform/folia/src/main/java/com/lunarclient/apollo/metadata/FoliaMetadataManager.java index 7299364e4..938ca1b7c 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/metadata/FoliaMetadataManager.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/metadata/FoliaMetadataManager.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/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloPlayer.java b/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloPlayer.java index e1ed0b0d2..caa4a5df6 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloPlayer.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloPlayer.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/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloStats.java b/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloStats.java index a0f9c14b9..21275bf62 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloStats.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloStats.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/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloWorld.java b/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloWorld.java index 074f73299..7d07d92aa 100644 --- a/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloWorld.java +++ b/platform/folia/src/main/java/com/lunarclient/apollo/wrapper/FoliaApolloWorld.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/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomPlatform.java b/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomPlatform.java index 0a32651b8..559d4e5c4 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomPlatform.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomPlatform.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 @@ -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/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomProperties.java b/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomProperties.java index 54e11913d..bb10f8a78 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomProperties.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/ApolloMinestomProperties.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/platform/minestom/src/main/java/com/lunarclient/apollo/command/MinestomApolloCommand.java b/platform/minestom/src/main/java/com/lunarclient/apollo/command/MinestomApolloCommand.java index fd396aca7..1392f0835 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/command/MinestomApolloCommand.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/command/MinestomApolloCommand.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/platform/minestom/src/main/java/com/lunarclient/apollo/command/MinestomLunarClientCommand.java b/platform/minestom/src/main/java/com/lunarclient/apollo/command/MinestomLunarClientCommand.java index f652484e6..082631ea8 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/command/MinestomLunarClientCommand.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/command/MinestomLunarClientCommand.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/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java b/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java index bfdb8fed4..740fb78da 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.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/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java b/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java index 52dafce7d..a216d378c 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.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/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.java b/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.java index 8bb625d0b..316fc49fb 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/listener/ApolloWorldListener.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/platform/minestom/src/main/java/com/lunarclient/apollo/metadata/MinestomMetadata.java b/platform/minestom/src/main/java/com/lunarclient/apollo/metadata/MinestomMetadata.java index 5976ec5a5..575a8b59b 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/metadata/MinestomMetadata.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/metadata/MinestomMetadata.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/platform/minestom/src/main/java/com/lunarclient/apollo/metadata/MinestomMetadataManager.java b/platform/minestom/src/main/java/com/lunarclient/apollo/metadata/MinestomMetadataManager.java index f6579147b..b79efcf8c 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/metadata/MinestomMetadataManager.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/metadata/MinestomMetadataManager.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/platform/minestom/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java b/platform/minestom/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java index fa4b09acb..47571e448 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.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/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloPlayer.java b/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloPlayer.java index ae2d8e413..6573d15dd 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloPlayer.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloPlayer.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/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloStats.java b/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloStats.java index c447123fb..1887d8075 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloStats.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloStats.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/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloWorld.java b/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloWorld.java index ed53112d2..a4c30f4c6 100644 --- a/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloWorld.java +++ b/platform/minestom/src/main/java/com/lunarclient/apollo/wrapper/MinestomApolloWorld.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/platform/velocity/src/main/java/com/lunarclient/apollo/ApolloVelocityPlatform.java b/platform/velocity/src/main/java/com/lunarclient/apollo/ApolloVelocityPlatform.java index 53f3d53c4..1b8501ed5 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/ApolloVelocityPlatform.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/ApolloVelocityPlatform.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 @@ -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()) diff --git a/platform/velocity/src/main/java/com/lunarclient/apollo/command/VelocityApolloCommand.java b/platform/velocity/src/main/java/com/lunarclient/apollo/command/VelocityApolloCommand.java index b482a150d..507ec93cc 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/command/VelocityApolloCommand.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/command/VelocityApolloCommand.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/platform/velocity/src/main/java/com/lunarclient/apollo/command/VelocityLunarClientCommand.java b/platform/velocity/src/main/java/com/lunarclient/apollo/command/VelocityLunarClientCommand.java index 6013ebf33..3c9a25a37 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/command/VelocityLunarClientCommand.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/command/VelocityLunarClientCommand.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/platform/velocity/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java b/platform/velocity/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java index c81e04ac4..233eba93f 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/listener/ApolloMetadataListener.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/platform/velocity/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java b/platform/velocity/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java index 68848fae5..d5a4906f7 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/listener/ApolloPlayerListener.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/platform/velocity/src/main/java/com/lunarclient/apollo/metadata/VelocityMetadata.java b/platform/velocity/src/main/java/com/lunarclient/apollo/metadata/VelocityMetadata.java index fb613463b..76ff1fd6c 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/metadata/VelocityMetadata.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/metadata/VelocityMetadata.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/platform/velocity/src/main/java/com/lunarclient/apollo/metadata/VelocityMetadataManager.java b/platform/velocity/src/main/java/com/lunarclient/apollo/metadata/VelocityMetadataManager.java index adce0c0ed..339c8e506 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/metadata/VelocityMetadataManager.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/metadata/VelocityMetadataManager.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/platform/velocity/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java b/platform/velocity/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java index 67a03b803..3b79b5dae 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/util/ByteBufUtil.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/platform/velocity/src/main/java/com/lunarclient/apollo/wrapper/VelocityApolloPlayer.java b/platform/velocity/src/main/java/com/lunarclient/apollo/wrapper/VelocityApolloPlayer.java index e24ed63c3..bc1c7214c 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/wrapper/VelocityApolloPlayer.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/wrapper/VelocityApolloPlayer.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/platform/velocity/src/main/java/com/lunarclient/apollo/wrapper/VelocityApolloStats.java b/platform/velocity/src/main/java/com/lunarclient/apollo/wrapper/VelocityApolloStats.java index b11d1e8cc..16d713ecf 100644 --- a/platform/velocity/src/main/java/com/lunarclient/apollo/wrapper/VelocityApolloStats.java +++ b/platform/velocity/src/main/java/com/lunarclient/apollo/wrapper/VelocityApolloStats.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