mirror of
https://github.com/proxiodev/RedisBungee.git
synced 2026-04-08 16:10:26 +00:00
more changes
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -46,4 +46,5 @@ manifest.mf
|
|||||||
javadoc
|
javadoc
|
||||||
|
|
||||||
# run-server folders
|
# run-server folders
|
||||||
proxies/*/run
|
**/run/
|
||||||
|
!src/**/run/
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
description = "Api functions for valiobungee"
|
plugins {
|
||||||
|
`maven-publish`
|
||||||
|
|
||||||
java {
|
|
||||||
withJavadocJar()
|
|
||||||
withSourcesJar()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
description = "Api functions for valiobungee"
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
testImplementation(libs.testing.juipter)
|
testImplementation(libs.testing.juipter)
|
||||||
}
|
}
|
||||||
@@ -14,3 +12,12 @@ tasks.test {
|
|||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
create<MavenPublication>("maven") {
|
||||||
|
from(components["java"])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,8 +15,6 @@
|
|||||||
*/
|
*/
|
||||||
package net.limework.valiobungee.api.entity;
|
package net.limework.valiobungee.api.entity;
|
||||||
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Network player.
|
* Network player.
|
||||||
*
|
*
|
||||||
@@ -24,13 +22,18 @@ import java.util.UUID;
|
|||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public interface NetworkPlayer {
|
public interface NetworkPlayer {
|
||||||
/**
|
|
||||||
* @return player unique id
|
|
||||||
*/
|
|
||||||
UUID getUUID();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return proxy player on
|
* @return proxy player on
|
||||||
*/
|
*/
|
||||||
NetworkProxy getProxy();
|
NetworkProxy getProxy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true when player is on the same proxy
|
||||||
|
*/
|
||||||
|
boolean isLocal();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true when a player is online on the network
|
||||||
|
*/
|
||||||
|
boolean isOnline();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ public interface NetworkProxy {
|
|||||||
Set<NetworkPlayer> getProxyPlayers();
|
Set<NetworkPlayer> getProxyPlayers();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return returns true if this object is proxy on it
|
* @return returns true if this NetworkProxy is the same proxy
|
||||||
*/
|
*/
|
||||||
boolean isMe();
|
boolean isMe();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* 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.api.entity;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Network player. that uses UUID as an ID
|
||||||
|
*
|
||||||
|
* @author Ham1255
|
||||||
|
* @since 1.0.0
|
||||||
|
*/
|
||||||
|
public interface UUIDPlayer {
|
||||||
|
/**
|
||||||
|
* @return player unique id
|
||||||
|
*/
|
||||||
|
UUID getUniqueId();
|
||||||
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
plugins {
|
plugins {
|
||||||
`java-library`
|
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10,10 +9,6 @@ dependencies {
|
|||||||
|
|
||||||
description = "ValioBungee Velocity API"
|
description = "ValioBungee Velocity API"
|
||||||
|
|
||||||
java {
|
|
||||||
withJavadocJar()
|
|
||||||
withSourcesJar()
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
withType<Javadoc> {
|
withType<Javadoc> {
|
||||||
@@ -27,17 +22,6 @@ tasks {
|
|||||||
val apiDocs = File(rootProject.projectDir, "api/build/docs/javadoc")
|
val apiDocs = File(rootProject.projectDir, "api/build/docs/javadoc")
|
||||||
//options.linksOffline("https://ci.limework.net/ValioBungee/api/build/docs/javadoc", apiDocs.path)
|
//options.linksOffline("https://ci.limework.net/ValioBungee/api/build/docs/javadoc", apiDocs.path)
|
||||||
}
|
}
|
||||||
compileJava {
|
|
||||||
options.encoding = Charsets.UTF_8.name()
|
|
||||||
options.release.set(21) // required by velocity
|
|
||||||
}
|
|
||||||
javadoc {
|
|
||||||
options.encoding = Charsets.UTF_8.name()
|
|
||||||
}
|
|
||||||
processResources {
|
|
||||||
filteringCharset = Charsets.UTF_8.name()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
|
|||||||
@@ -15,12 +15,21 @@
|
|||||||
*/
|
*/
|
||||||
package net.limework.valiobungee.velocity.api.entities;
|
package net.limework.valiobungee.velocity.api.entities;
|
||||||
|
|
||||||
|
import com.velocitypowered.api.proxy.Player;
|
||||||
|
import java.util.Optional;
|
||||||
import net.limework.valiobungee.api.entity.NetworkPlayer;
|
import net.limework.valiobungee.api.entity.NetworkPlayer;
|
||||||
|
import net.limework.valiobungee.api.entity.UUIDPlayer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Velocity Network player.
|
* Velocity Network player. hold specific stuff for velocity platform
|
||||||
*
|
*
|
||||||
* @author Ham1255
|
* @author Ham1255
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
public interface VelocityNetworkPlayer extends NetworkPlayer {}
|
public interface VelocityNetworkPlayer extends NetworkPlayer, UUIDPlayer {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return an optional that contains a player if he is on the same proxy
|
||||||
|
*/
|
||||||
|
Optional<Player> getHandle();
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,17 +17,13 @@ sourceSets {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
java {
|
|
||||||
withJavadocJar()
|
|
||||||
withSourcesJar()
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api(project(":valiobungee-api"))
|
api(project(":valiobungee-api"))
|
||||||
api(libs.protobuf)
|
api(libs.protobuf)
|
||||||
api(libs.caffeine)
|
api(libs.caffeine)
|
||||||
api(libs.slf4j)
|
api(libs.slf4j)
|
||||||
api(libs.redisson)
|
|
||||||
testImplementation(libs.testing.juipter)
|
testImplementation(libs.testing.juipter)
|
||||||
testImplementation(libs.testing.slf4j.simple)
|
testImplementation(libs.testing.slf4j.simple)
|
||||||
}
|
}
|
||||||
|
|||||||
10
core/redisson/build.gradle.kts
Normal file
10
core/redisson/build.gradle.kts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly(project(":valiobungee-core"))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
description = "ValioBungee Redisson implementation"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -23,7 +23,12 @@ import com.github.benmanes.caffeine.cache.Caffeine;
|
|||||||
import com.github.benmanes.caffeine.cache.RemovalCause;
|
import com.github.benmanes.caffeine.cache.RemovalCause;
|
||||||
import com.github.benmanes.caffeine.cache.RemovalListener;
|
import com.github.benmanes.caffeine.cache.RemovalListener;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import net.limework.valiobungee.api.entity.NetworkProxy;
|
||||||
import net.limework.valiobungee.core.proto.messages.*;
|
import net.limework.valiobungee.core.proto.messages.*;
|
||||||
import net.limework.valiobungee.core.util.logging.LogProviderFactory;
|
import net.limework.valiobungee.core.util.logging.LogProviderFactory;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -104,6 +109,22 @@ public abstract class ProxyNetworkManager {
|
|||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// return self only if no other proxies
|
||||||
|
public Set<NetworkProxy> getNetworkProxies() {
|
||||||
|
return Stream.concat(
|
||||||
|
this.heartbeats.asMap().values().stream()
|
||||||
|
.map(h -> platform.proxyPlatformCreator(h.getSender().getProxyId())),
|
||||||
|
Stream.of(platform.getLocalProxy()))
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Optional<NetworkProxy> getNetworkProxy(String id) {
|
||||||
|
if (platform.networkId().equals(id)) return Optional.of(platform.proxyPlatformCreator(id));
|
||||||
|
if (!this.heartbeats.asMap().containsKey(id)) return Optional.empty();
|
||||||
|
return Optional.of(
|
||||||
|
platform.proxyPlatformCreator(this.heartbeats.asMap().get(id).getSender().getProxyId()));
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract void publishDeathPayload();
|
protected abstract void publishDeathPayload();
|
||||||
|
|
||||||
protected abstract void publishHeartbeatPayload();
|
protected abstract void publishHeartbeatPayload();
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
package net.limework.valiobungee.core;
|
package net.limework.valiobungee.core;
|
||||||
|
|
||||||
import net.limework.valiobungee.api.ValioBungeeAPI;
|
import net.limework.valiobungee.api.ValioBungeeAPI;
|
||||||
|
import net.limework.valiobungee.api.entity.NetworkProxy;
|
||||||
|
|
||||||
public interface ValioBungeePlatform extends ValioBungeeAPI {
|
public interface ValioBungeePlatform extends ValioBungeeAPI {
|
||||||
|
|
||||||
@@ -32,6 +33,8 @@ public interface ValioBungeePlatform extends ValioBungeeAPI {
|
|||||||
|
|
||||||
ProxyNetworkManager proxyNetworkManager();
|
ProxyNetworkManager proxyNetworkManager();
|
||||||
|
|
||||||
|
NetworkProxy proxyPlatformCreator(String id);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default String getGitCommit() {
|
default String getGitCommit() {
|
||||||
return ConstantVariables.GIT_COMMIT;
|
return ConstantVariables.GIT_COMMIT;
|
||||||
|
|||||||
@@ -22,22 +22,23 @@ import java.util.Objects;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import net.limework.valiobungee.api.entity.NetworkPlayer;
|
import net.limework.valiobungee.api.entity.NetworkPlayer;
|
||||||
import net.limework.valiobungee.api.entity.NetworkProxy;
|
import net.limework.valiobungee.api.entity.NetworkProxy;
|
||||||
|
import net.limework.valiobungee.api.entity.UUIDPlayer;
|
||||||
import net.limework.valiobungee.core.ValioBungeePlatform;
|
import net.limework.valiobungee.core.ValioBungeePlatform;
|
||||||
|
|
||||||
public abstract class AbstractNetworkPlayer implements NetworkPlayer {
|
public abstract class AbstractUUIDNetworkPlayer implements NetworkPlayer, UUIDPlayer {
|
||||||
|
|
||||||
private final ValioBungeePlatform platform;
|
private final ValioBungeePlatform platform;
|
||||||
private final UUID uuid;
|
private final UUID uuid;
|
||||||
private final NetworkProxy proxy;
|
private final NetworkProxy proxy;
|
||||||
|
|
||||||
public AbstractNetworkPlayer(ValioBungeePlatform platform, UUID uuid, NetworkProxy proxy) {
|
public AbstractUUIDNetworkPlayer(ValioBungeePlatform platform, UUID uuid, NetworkProxy proxy) {
|
||||||
this.platform = platform;
|
this.platform = platform;
|
||||||
this.uuid = uuid;
|
this.uuid = uuid;
|
||||||
this.proxy = proxy;
|
this.proxy = proxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UUID getUUID() {
|
public UUID getUniqueId() {
|
||||||
return this.uuid;
|
return this.uuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,7 +49,7 @@ public abstract class AbstractNetworkPlayer implements NetworkPlayer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (!(o instanceof AbstractNetworkPlayer that)) return false;
|
if (!(o instanceof AbstractUUIDNetworkPlayer that)) return false;
|
||||||
return Objects.equals(uuid, that.uuid) && Objects.equals(proxy, that.proxy);
|
return Objects.equals(uuid, that.uuid) && Objects.equals(proxy, that.proxy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ indragit = "net.kyori.indra.git:4.0.0"
|
|||||||
shadow = "com.gradleup.shadow:9.3.1"
|
shadow = "com.gradleup.shadow:9.3.1"
|
||||||
spotless = "com.diffplug.spotless:8.2.0"
|
spotless = "com.diffplug.spotless:8.2.0"
|
||||||
protobuf = { id = "com.google.protobuf", version.ref = "protobuf-plugin" }
|
protobuf = { id = "com.google.protobuf", version.ref = "protobuf-plugin" }
|
||||||
run-velocity = { id = "xyz.jpenilla.run-velocity", version = "2.3.1" }
|
run-velocity = { id = "xyz.jpenilla.run-velocity", version = "3.0.2" }
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
# protobuf
|
# protobuf
|
||||||
|
|||||||
@@ -8,16 +8,21 @@ pluginManagement {
|
|||||||
|
|
||||||
rootProject.name = "ValioBungee"
|
rootProject.name = "ValioBungee"
|
||||||
|
|
||||||
fun configureProject(name: String) {
|
fun configureRootProjects(name: String) {
|
||||||
val projectName = ":valiobungee-$name"
|
val projectName = ":valiobungee-$name"
|
||||||
configureProject(projectName, name)
|
configureProject(projectName, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun configureAPIProject(name: String) {
|
fun configureAPISubProject(name: String) {
|
||||||
val projectName = ":valiobungee-$name-api"
|
val projectName = ":valiobungee-$name-api"
|
||||||
configureProject(projectName, "api/$name")
|
configureProject(projectName, "api/$name")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun configureCoreSubProject(name: String) {
|
||||||
|
val projectName = ":valiobungee-core-$name"
|
||||||
|
configureProject(projectName, "core/$name")
|
||||||
|
}
|
||||||
|
|
||||||
fun configureProject(name: String, path: String) {
|
fun configureProject(name: String, path: String) {
|
||||||
include(name)
|
include(name)
|
||||||
project(name).projectDir = file(path)
|
project(name).projectDir = file(path)
|
||||||
@@ -34,9 +39,11 @@ dependencyResolutionManagement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// main project stuff
|
// main project stuff
|
||||||
sequenceOf("api", "core", "velocity").forEach { configureProject(it) }
|
sequenceOf("api", "core", "velocity").forEach { configureRootProjects(it) }
|
||||||
|
// core data implementations
|
||||||
|
sequenceOf("redisson").forEach { configureCoreSubProject(it) }
|
||||||
// api
|
// api
|
||||||
sequenceOf("velocity").forEach { configureAPIProject(it) }
|
sequenceOf("velocity").forEach { configureAPISubProject(it) }
|
||||||
|
|
||||||
// RedisBunggee Project
|
// RedisBunggee Project
|
||||||
// configureProject(":RedisBungee-API", "redisbungee/api")
|
// configureProject(":RedisBungee-API", "redisbungee/api")
|
||||||
|
|||||||
@@ -14,22 +14,9 @@ dependencies {
|
|||||||
|
|
||||||
description = "ValioBungee Velocity implementation"
|
description = "ValioBungee Velocity implementation"
|
||||||
|
|
||||||
java {
|
|
||||||
withSourcesJar()
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks {
|
tasks {
|
||||||
runVelocity {
|
runVelocity {
|
||||||
velocityVersion(libs.versions.velocity.get())
|
velocityVersion(libs.versions.velocity.get())
|
||||||
}
|
}
|
||||||
compileJava {
|
|
||||||
options.encoding = Charsets.UTF_8.name()
|
|
||||||
options.release.set(21) // required by velocity
|
|
||||||
}
|
|
||||||
processResources {
|
|
||||||
filteringCharset = Charsets.UTF_8.name()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,10 @@
|
|||||||
*/
|
*/
|
||||||
package net.limework.valiobungee.velocity;
|
package net.limework.valiobungee.velocity;
|
||||||
|
|
||||||
|
import com.google.inject.Inject;
|
||||||
|
import com.velocitypowered.api.event.Subscribe;
|
||||||
|
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
||||||
|
import com.velocitypowered.api.event.proxy.ProxyShutdownEvent;
|
||||||
import com.velocitypowered.api.plugin.Plugin;
|
import com.velocitypowered.api.plugin.Plugin;
|
||||||
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
||||||
import com.velocitypowered.api.proxy.ProxyServer;
|
import com.velocitypowered.api.proxy.ProxyServer;
|
||||||
@@ -25,12 +29,16 @@ import java.nio.file.Path;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import net.limework.valiobungee.api.entity.NetworkPlayer;
|
import net.limework.valiobungee.api.entity.NetworkPlayer;
|
||||||
import net.limework.valiobungee.api.entity.NetworkProxy;
|
import net.limework.valiobungee.api.entity.NetworkProxy;
|
||||||
import net.limework.valiobungee.core.ConstantVariables;
|
import net.limework.valiobungee.core.ConstantVariables;
|
||||||
import net.limework.valiobungee.core.ProxyNetworkManager;
|
import net.limework.valiobungee.core.ProxyNetworkManager;
|
||||||
import net.limework.valiobungee.core.ValioBungeePlatform;
|
import net.limework.valiobungee.core.ValioBungeePlatform;
|
||||||
import net.limework.valiobungee.core.util.logging.LogProviderFactory;
|
import net.limework.valiobungee.core.util.logging.LogProviderFactory;
|
||||||
|
import net.limework.valiobungee.velocity.api.TestProxyNetworkManager;
|
||||||
|
import net.limework.valiobungee.velocity.api.entities.ImplVelocityNetworkPlayer;
|
||||||
import net.limework.valiobungee.velocity.api.entities.ImplVelocityNetworkProxy;
|
import net.limework.valiobungee.velocity.api.entities.ImplVelocityNetworkProxy;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
@@ -47,6 +55,7 @@ public class VelocityValioBungeePlugin implements ValioBungeePlatform {
|
|||||||
private final Path dataFolder;
|
private final Path dataFolder;
|
||||||
private final ProxyNetworkManager proxyNetworkManager;
|
private final ProxyNetworkManager proxyNetworkManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
public VelocityValioBungeePlugin(
|
public VelocityValioBungeePlugin(
|
||||||
ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) {
|
ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) {
|
||||||
this.server = server;
|
this.server = server;
|
||||||
@@ -54,9 +63,20 @@ public class VelocityValioBungeePlugin implements ValioBungeePlatform {
|
|||||||
this.dataFolder = dataDirectory;
|
this.dataFolder = dataDirectory;
|
||||||
// init logging
|
// init logging
|
||||||
LogProviderFactory.register(logger);
|
LogProviderFactory.register(logger);
|
||||||
this.proxyNetworkManager = null;
|
this.proxyNetworkManager = new TestProxyNetworkManager(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Subscribe(priority = Short.MAX_VALUE) // this really important so MAKE IT MAX
|
||||||
|
public void onProxyInitializeEvent(ProxyInitializeEvent event) {
|
||||||
|
logger.info(
|
||||||
|
"initializing ValioBungee for {} platform, version {}",
|
||||||
|
platformProxyVendor(),
|
||||||
|
ConstantVariables.VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe(priority = Short.MIN_VALUE) // this really import so Make it AT LOWEST
|
||||||
|
public void onProxyShutdownEvent(ProxyShutdownEvent event) {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int localOnlinePlayers() {
|
public int localOnlinePlayers() {
|
||||||
return this.server.getPlayerCount();
|
return this.server.getPlayerCount();
|
||||||
@@ -72,9 +92,16 @@ public class VelocityValioBungeePlugin implements ValioBungeePlatform {
|
|||||||
return this.proxyNetworkManager;
|
return this.proxyNetworkManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NetworkProxy proxyPlatformCreator(String id) {
|
||||||
|
return new ImplVelocityNetworkProxy(this, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final String id = "test-ido-" + ThreadLocalRandom.current().nextInt(10);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String proxyId() {
|
public String proxyId() {
|
||||||
return "test-ido";
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -90,9 +117,7 @@ public class VelocityValioBungeePlugin implements ValioBungeePlatform {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<NetworkProxy> getNetworkProxy(String id) {
|
public Optional<NetworkProxy> getNetworkProxy(String id) {
|
||||||
if (this.proxyId().equals(id)) return Optional.of(getLocalProxy());
|
return this.proxyNetworkManager.getNetworkProxy(id);
|
||||||
logger.warn("not implemented api call returned as Optional empty");
|
|
||||||
return Optional.empty();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -102,14 +127,15 @@ public class VelocityValioBungeePlugin implements ValioBungeePlatform {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<NetworkProxy> getNetworkProxies() {
|
public Set<NetworkProxy> getNetworkProxies() {
|
||||||
logger.warn("not implemented api call returned as Optional empty");
|
return proxyNetworkManager.getNetworkProxies();
|
||||||
return Set.of();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<NetworkPlayer> getLocalProxyPlayers() {
|
public Set<NetworkPlayer> getLocalProxyPlayers() {
|
||||||
logger.warn("not implemented api call returned as Optional empty");
|
NetworkProxy proxy = getLocalProxy();
|
||||||
return Set.of();
|
return this.server.getAllPlayers().stream()
|
||||||
|
.map(p -> new ImplVelocityNetworkPlayer(this, p.getUniqueId(), getLocalProxy(), p))
|
||||||
|
.collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2026 ValioBungee contributors
|
||||||
|
*
|
||||||
|
* This file is part of ValioBungee.
|
||||||
|
*
|
||||||
|
* ValioBungee is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* ValioBungee is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with ValioBungee. If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
|
||||||
|
*/
|
||||||
|
package net.limework.valiobungee.velocity.api;
|
||||||
|
|
||||||
|
import net.limework.valiobungee.core.ProxyNetworkManager;
|
||||||
|
import net.limework.valiobungee.core.ValioBungeePlatform;
|
||||||
|
|
||||||
|
public class TestProxyNetworkManager extends ProxyNetworkManager {
|
||||||
|
public TestProxyNetworkManager(ValioBungeePlatform platform) {
|
||||||
|
super(platform);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void publishDeathPayload() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void publishHeartbeatPayload() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {}
|
||||||
|
}
|
||||||
@@ -18,13 +18,40 @@
|
|||||||
*/
|
*/
|
||||||
package net.limework.valiobungee.velocity.api.entities;
|
package net.limework.valiobungee.velocity.api.entities;
|
||||||
|
|
||||||
|
import com.velocitypowered.api.proxy.Player;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import net.limework.valiobungee.api.entity.NetworkProxy;
|
import net.limework.valiobungee.api.entity.NetworkProxy;
|
||||||
import net.limework.valiobungee.core.ValioBungeePlatform;
|
import net.limework.valiobungee.core.ValioBungeePlatform;
|
||||||
import net.limework.valiobungee.core.api.entities.AbstractNetworkPlayer;
|
import net.limework.valiobungee.core.api.entities.AbstractUUIDNetworkPlayer;
|
||||||
|
import net.limework.valiobungee.core.util.logging.LogProviderFactory;
|
||||||
|
|
||||||
public class ImplVelocityNetworkPlayer extends AbstractNetworkPlayer {
|
public class ImplVelocityNetworkPlayer extends AbstractUUIDNetworkPlayer
|
||||||
public ImplVelocityNetworkPlayer(ValioBungeePlatform platform, UUID uuid, NetworkProxy proxy) {
|
implements VelocityNetworkPlayer {
|
||||||
|
private final Player handle;
|
||||||
|
|
||||||
|
public ImplVelocityNetworkPlayer(
|
||||||
|
ValioBungeePlatform platform, UUID uuid, NetworkProxy proxy, Player handle) {
|
||||||
super(platform, uuid, proxy);
|
super(platform, uuid, proxy);
|
||||||
|
this.handle = handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<Player> getHandle() {
|
||||||
|
return Optional.ofNullable(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLocal() {
|
||||||
|
return handle != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isOnline() {
|
||||||
|
if (isLocal()) {
|
||||||
|
return handle.isActive();
|
||||||
|
}
|
||||||
|
LogProviderFactory.get().warn("NOT IMPLEMENTED IS ONLINE for Velocity network player");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import net.limework.valiobungee.api.entity.NetworkPlayer;
|
|||||||
import net.limework.valiobungee.core.api.entities.AbstractNetworkProxy;
|
import net.limework.valiobungee.core.api.entities.AbstractNetworkProxy;
|
||||||
import net.limework.valiobungee.velocity.VelocityValioBungeePlugin;
|
import net.limework.valiobungee.velocity.VelocityValioBungeePlugin;
|
||||||
|
|
||||||
public class ImplVelocityNetworkProxy extends AbstractNetworkProxy {
|
public class ImplVelocityNetworkProxy extends AbstractNetworkProxy implements VelocityNetworkProxy {
|
||||||
|
|
||||||
public ImplVelocityNetworkProxy(VelocityValioBungeePlugin platform, String proxyId) {
|
public ImplVelocityNetworkProxy(VelocityValioBungeePlugin platform, String proxyId) {
|
||||||
super(platform, proxyId);
|
super(platform, proxyId);
|
||||||
|
|||||||
Reference in New Issue
Block a user