diff --git a/api/src/main/java/net/limework/valiobungee/api/ValioBungeeAPI.java b/api/src/main/java/net/limework/valiobungee/api/ValioBungeeAPI.java index f1e2bd3..fdf8198 100644 --- a/api/src/main/java/net/limework/valiobungee/api/ValioBungeeAPI.java +++ b/api/src/main/java/net/limework/valiobungee/api/ValioBungeeAPI.java @@ -15,4 +15,33 @@ */ package net.limework.valiobungee.api; -public interface ValioBungeeAPI {} +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import net.limework.valiobungee.api.entity.NetworkPlayer; +import net.limework.valiobungee.api.entity.NetworkProxy; + +public interface ValioBungeeAPI { + + Optional getNetworkPlayer(UUID uuid); + + Optional getNetworkProxy(String id); + + NetworkProxy getLocalProxy(); + + Set getNetworkProxies(); + + Set getLocalProxyPlayers(); + + Set getNetworkPlayers(); + + /** + * @return Version based on the build + */ + String getVersion(); + + /** + * @return GIT COMMIT based on the build + */ + String getGitCommit(); +} diff --git a/api/src/main/java/net/limework/valiobungee/api/entity/NetworkProxy.java b/api/src/main/java/net/limework/valiobungee/api/entity/NetworkProxy.java index 0a2be68..b3183bd 100644 --- a/api/src/main/java/net/limework/valiobungee/api/entity/NetworkProxy.java +++ b/api/src/main/java/net/limework/valiobungee/api/entity/NetworkProxy.java @@ -32,12 +32,12 @@ public interface NetworkProxy { /** * @return online players number in this proxy */ - int onlinePlayersCount(); + int onlinePlayerCount(); /** * @return Returns set of players in this proxy */ - Set networkPlayers(); + Set getProxyPlayers(); /** * @return returns true if this object is proxy on it diff --git a/api/velocity/src/main/java/net/limework/valiobungee/velocity/api/VelocityValioBungeeAPI.java b/api/velocity/src/main/java/net/limework/valiobungee/velocity/api/VelocityValioBungeeAPI.java index 167ae8f..8ced774 100644 --- a/api/velocity/src/main/java/net/limework/valiobungee/velocity/api/VelocityValioBungeeAPI.java +++ b/api/velocity/src/main/java/net/limework/valiobungee/velocity/api/VelocityValioBungeeAPI.java @@ -17,4 +17,10 @@ package net.limework.valiobungee.velocity.api; import net.limework.valiobungee.api.ValioBungeeAPI; +/** + * Valiobungee velocity specific API + * + * @author Ham1255 + * @since 1.0.0 + */ public interface VelocityValioBungeeAPI extends ValioBungeeAPI {} diff --git a/api/src/main/java/net/limework/valiobungee/api/ValioBungeeAPIProvider.java b/api/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/VelocityNetworkPlayer.java similarity index 61% rename from api/src/main/java/net/limework/valiobungee/api/ValioBungeeAPIProvider.java rename to api/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/VelocityNetworkPlayer.java index 667dda9..d0a40db 100644 --- a/api/src/main/java/net/limework/valiobungee/api/ValioBungeeAPIProvider.java +++ b/api/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/VelocityNetworkPlayer.java @@ -13,26 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package net.limework.valiobungee.api; +package net.limework.valiobungee.velocity.api.entities; + +import net.limework.valiobungee.api.entity.NetworkPlayer; /** - * this class provides the API object and access to the version and git commit + * Velocity Network player. * + * @author Ham1255 * @since 1.0.0 */ -public interface ValioBungeeAPIProvider { - /** - * @return The api object {@link ValioBungeeAPI} - */ - ValioBungeeAPI getAPI(); - - /** - * @return version of the build - */ - String getVersion(); - - /** - * @return GIT COMMIT based on the build - */ - String getGitCommit(); -} +public interface VelocityNetworkPlayer extends NetworkPlayer {} diff --git a/api/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/VelocityNetworkProxy.java b/api/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/VelocityNetworkProxy.java new file mode 100644 index 0000000..418cb83 --- /dev/null +++ b/api/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/VelocityNetworkProxy.java @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2026 ValioBungee contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.limework.valiobungee.velocity.api.entities; + +import net.limework.valiobungee.api.entity.NetworkProxy; + +/** + * Proxy is an object for online proxy in a velocity network + * + * @author Ham1255 + * @since 1.0.0 + */ +public interface VelocityNetworkProxy extends NetworkProxy {} diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 94dfb78..38432a5 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -27,7 +27,7 @@ dependencies { api(libs.protobuf) api(libs.caffeine) api(libs.slf4j) - + api(libs.redisson) testImplementation(libs.testing.juipter) testImplementation(libs.testing.slf4j.simple) } diff --git a/core/src/main/java/net/limework/valiobungee/core/ProxyManager.java b/core/src/main/java/net/limework/valiobungee/core/ProxyNetworkManager.java similarity index 97% rename from core/src/main/java/net/limework/valiobungee/core/ProxyManager.java rename to core/src/main/java/net/limework/valiobungee/core/ProxyNetworkManager.java index a8e9f65..58543c3 100644 --- a/core/src/main/java/net/limework/valiobungee/core/ProxyManager.java +++ b/core/src/main/java/net/limework/valiobungee/core/ProxyNetworkManager.java @@ -33,12 +33,12 @@ import org.slf4j.Logger; * locally Why abstract? Because it allows us to develop alternative implementation to use other * software than valkey or redis */ -public abstract class ProxyManager { +public abstract class ProxyNetworkManager { protected final UUID proxyManagerId = UUID.randomUUID(); protected final ValioBungeePlatform platform; - public ProxyManager(ValioBungeePlatform platform) { + public ProxyNetworkManager(ValioBungeePlatform platform) { this.platform = platform; } diff --git a/core/src/main/java/net/limework/valiobungee/core/ValioBungeePlatform.java b/core/src/main/java/net/limework/valiobungee/core/ValioBungeePlatform.java index 433caeb..9d9ddba 100644 --- a/core/src/main/java/net/limework/valiobungee/core/ValioBungeePlatform.java +++ b/core/src/main/java/net/limework/valiobungee/core/ValioBungeePlatform.java @@ -18,10 +18,9 @@ */ package net.limework.valiobungee.core; -import net.limework.valiobungee.api.ValioBungeeAPIProvider; -import net.limework.valiobungee.core.api.entities.NetworkEntitiesProvider; +import net.limework.valiobungee.api.ValioBungeeAPI; -public interface ValioBungeePlatform extends NetworkEntitiesProvider, ValioBungeeAPIProvider { +public interface ValioBungeePlatform extends ValioBungeeAPI { int localOnlinePlayers(); @@ -31,7 +30,7 @@ public interface ValioBungeePlatform extends NetworkEntitiesProvider, ValioBunge String proxyId(); - ProxyManager proxyManager(); + ProxyNetworkManager proxyNetworkManager(); @Override default String getGitCommit() { diff --git a/core/src/main/java/net/limework/valiobungee/core/api/entities/AbstractNetworkProxy.java b/core/src/main/java/net/limework/valiobungee/core/api/entities/AbstractNetworkProxy.java index f90ce39..3ea9323 100644 --- a/core/src/main/java/net/limework/valiobungee/core/api/entities/AbstractNetworkProxy.java +++ b/core/src/main/java/net/limework/valiobungee/core/api/entities/AbstractNetworkProxy.java @@ -39,8 +39,8 @@ public abstract class AbstractNetworkProxy implements NetworkProxy { } @Override - public int onlinePlayersCount() { - return this.platform.proxyManager().onlinePlayersCount(this.proxyId); + public int onlinePlayerCount() { + return this.platform.proxyNetworkManager().onlinePlayersCount(this.proxyId); } @Override diff --git a/redisbungee/api/src/main/java-templates/com/imaginarycode/minecraft/redisbungee/Constants.java.peb b/redisbungee/api/src/main/java-templates/com/imaginarycode/minecraft/redisbungee/Constants.java.peb index 06a6805..23edfb7 100644 --- a/redisbungee/api/src/main/java-templates/com/imaginarycode/minecraft/redisbungee/Constants.java.peb +++ b/redisbungee/api/src/main/java-templates/com/imaginarycode/minecraft/redisbungee/Constants.java.peb @@ -1,5 +1,5 @@ /* -* Copyright (c) 2013-2013 RedisBungee contributors +* Copyright (c) 2026 RedisBungee contributors * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 diff --git a/redisbungee/proxies/bungeecord/bungeecord-api/build.gradle.kts b/redisbungee/proxies/bungeecord/bungeecord-api/build.gradle.kts index 00062b0..d5e55cf 100644 --- a/redisbungee/proxies/bungeecord/bungeecord-api/build.gradle.kts +++ b/redisbungee/proxies/bungeecord/bungeecord-api/build.gradle.kts @@ -29,7 +29,7 @@ tasks { options.links( "https://hub.spigotmc.org/jenkins/job/BungeeCord/ws/api/target/reports/apidocs", // bungeecord api ) - val apiDocs = File(rootProject.projectDir, "api/build/docs/javadoc") + val apiDocs = File(rootProject.projectDir, "redisbungee/api/build/docs/javadoc") options.linksOffline("https://ci.limework.net/ValioBungee/api/build/docs/javadoc", apiDocs.path) } compileJava { diff --git a/redisbungee/proxies/velocity/velocity-api/build.gradle.kts b/redisbungee/proxies/velocity/velocity-api/build.gradle.kts index 2cc4406..bc2d8d8 100644 --- a/redisbungee/proxies/velocity/velocity-api/build.gradle.kts +++ b/redisbungee/proxies/velocity/velocity-api/build.gradle.kts @@ -34,7 +34,7 @@ tasks { options.links( "https://jd.papermc.io/velocity/3.0.0/", // velocity api ) - val apiDocs = File(rootProject.projectDir, "api/build/docs/javadoc") + val apiDocs = File(rootProject.projectDir, "redisbungee/api/build/docs/javadoc") options.linksOffline("https://ci.limework.net/ValioBungee/api/build/docs/javadoc", apiDocs.path) } compileJava { diff --git a/velocity/src/main/java/net/limework/valiobungee/velocity/VelocityValioBungeePlugin.java b/velocity/src/main/java/net/limework/valiobungee/velocity/VelocityValioBungeePlugin.java index 9a139d1..870cd1e 100644 --- a/velocity/src/main/java/net/limework/valiobungee/velocity/VelocityValioBungeePlugin.java +++ b/velocity/src/main/java/net/limework/valiobungee/velocity/VelocityValioBungeePlugin.java @@ -21,30 +21,100 @@ package net.limework.valiobungee.velocity; import com.velocitypowered.api.plugin.Plugin; import com.velocitypowered.api.plugin.annotation.DataDirectory; import com.velocitypowered.api.proxy.ProxyServer; +import java.nio.file.Path; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import net.limework.valiobungee.api.entity.NetworkPlayer; +import net.limework.valiobungee.api.entity.NetworkProxy; import net.limework.valiobungee.core.ConstantVariables; +import net.limework.valiobungee.core.ProxyNetworkManager; import net.limework.valiobungee.core.ValioBungeePlatform; +import net.limework.valiobungee.core.util.logging.LogProviderFactory; +import net.limework.valiobungee.velocity.api.entities.ImplVelocityNetworkProxy; import org.slf4j.Logger; -import java.nio.file.Path; - @Plugin( - id = "valiobungee", - name = "valiobungee", - version = ConstantVariables.VERSION, - url = "https://github.com/ProxioDev/ValioBungee", - authors = {"limework", "ProxioDev"}) + id = "valiobungee", + name = "valiobungee", + version = ConstantVariables.VERSION, + url = "https://github.com/ProxioDev/ValioBungee", + authors = {"limework", "ProxioDev"}) public class VelocityValioBungeePlugin implements ValioBungeePlatform { - private final ProxyServer server; - private final Logger logger; - private final Path dataFolder; + private final ProxyServer server; + private final Logger logger; + private final Path dataFolder; + private final ProxyNetworkManager proxyNetworkManager; - public VelocityValioBungeePlugin( ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) { - this.server = server; - this.logger = logger; - this.dataFolder = dataDirectory; - } + public VelocityValioBungeePlugin( + ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) { + this.server = server; + this.logger = logger; + this.dataFolder = dataDirectory; + // init logging + LogProviderFactory.register(logger); + this.proxyNetworkManager = null; + } + @Override + public int localOnlinePlayers() { + return this.server.getPlayerCount(); + } + @Override + public String platformProxyVendor() { + return "velocity"; + } + @Override + public ProxyNetworkManager proxyNetworkManager() { + return this.proxyNetworkManager; + } + + @Override + public String proxyId() { + return "test-ido"; + } + + @Override + public String networkId() { + return "development"; + } + + @Override + public Optional getNetworkPlayer(UUID uuid) { + logger.warn("not implemented api call returned as Optional empty"); + return Optional.empty(); + } + + @Override + public Optional getNetworkProxy(String id) { + if (this.proxyId().equals(id)) return Optional.of(getLocalProxy()); + logger.warn("not implemented api call returned as Optional empty"); + return Optional.empty(); + } + + @Override + public NetworkProxy getLocalProxy() { + return new ImplVelocityNetworkProxy(this, proxyId()); + } + + @Override + public Set getNetworkProxies() { + logger.warn("not implemented api call returned as Optional empty"); + return Set.of(); + } + + @Override + public Set getLocalProxyPlayers() { + logger.warn("not implemented api call returned as Optional empty"); + return Set.of(); + } + + @Override + public Set getNetworkPlayers() { + logger.warn("not implemented api call returned as Optional empty"); + return Set.of(); + } } diff --git a/core/src/main/java/net/limework/valiobungee/core/api/entities/NetworkEntitiesProvider.java b/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/ImplVelocityNetworkPlayer.java similarity index 67% rename from core/src/main/java/net/limework/valiobungee/core/api/entities/NetworkEntitiesProvider.java rename to velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/ImplVelocityNetworkPlayer.java index 2e75b5a..35b38e7 100644 --- a/core/src/main/java/net/limework/valiobungee/core/api/entities/NetworkEntitiesProvider.java +++ b/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/ImplVelocityNetworkPlayer.java @@ -16,17 +16,15 @@ * You should have received a copy of the GNU General Public License * along with ValioBungee. If not, see . */ -package net.limework.valiobungee.core.api.entities; +package net.limework.valiobungee.velocity.api.entities; import java.util.UUID; -import net.limework.valiobungee.api.entity.NetworkPlayer; import net.limework.valiobungee.api.entity.NetworkProxy; +import net.limework.valiobungee.core.ValioBungeePlatform; +import net.limework.valiobungee.core.api.entities.AbstractNetworkPlayer; -public interface NetworkEntitiesProvider { - - NetworkPlayer getNetworkPlayer(UUID uuid); - - NetworkProxy getNetworkProxy(String id); - - NetworkProxy getSelfProxy(); +public class ImplVelocityNetworkPlayer extends AbstractNetworkPlayer { + public ImplVelocityNetworkPlayer(ValioBungeePlatform platform, UUID uuid, NetworkProxy proxy) { + super(platform, uuid, proxy); + } } diff --git a/core/src/main/java/net/limework/valiobungee/core/api/AbstractValioBungeeAPI.java b/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/ImplVelocityNetworkProxy.java similarity index 57% rename from core/src/main/java/net/limework/valiobungee/core/api/AbstractValioBungeeAPI.java rename to velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/ImplVelocityNetworkProxy.java index 9dbe987..33ece49 100644 --- a/core/src/main/java/net/limework/valiobungee/core/api/AbstractValioBungeeAPI.java +++ b/velocity/src/main/java/net/limework/valiobungee/velocity/api/entities/ImplVelocityNetworkProxy.java @@ -16,8 +16,21 @@ * You should have received a copy of the GNU General Public License * along with ValioBungee. If not, see . */ -package net.limework.valiobungee.core.api; +package net.limework.valiobungee.velocity.api.entities; -import net.limework.valiobungee.api.ValioBungeeAPI; +import java.util.Set; +import net.limework.valiobungee.api.entity.NetworkPlayer; +import net.limework.valiobungee.core.api.entities.AbstractNetworkProxy; +import net.limework.valiobungee.velocity.VelocityValioBungeePlugin; -public class AbstractValioBungeeAPI implements ValioBungeeAPI {} +public class ImplVelocityNetworkProxy extends AbstractNetworkProxy { + + public ImplVelocityNetworkProxy(VelocityValioBungeePlugin platform, String proxyId) { + super(platform, proxyId); + } + + @Override + public Set getProxyPlayers() { + return Set.of(); + } +}