diff --git a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/AbstractRedisBungeeAPI.java b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/AbstractRedisBungeeAPI.java index 443ce3b..ccbb95b 100644 --- a/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/AbstractRedisBungeeAPI.java +++ b/RedisBungee-API/src/main/java/com/imaginarycode/minecraft/redisbungee/AbstractRedisBungeeAPI.java @@ -20,6 +20,7 @@ import com.imaginarycode.minecraft.redisbungee.api.summoners.JedisClusterSummone import com.imaginarycode.minecraft.redisbungee.api.summoners.JedisPooledSummoner; import com.imaginarycode.minecraft.redisbungee.api.summoners.Summoner; import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisCluster; import redis.clients.jedis.JedisPool; @@ -81,8 +82,9 @@ public abstract class AbstractRedisBungeeAPI { * as well, and will return local information on them. * * @param player a player uuid - * @return a String name for the server the player is on. + * @return a String name for the server the player is on. Can be Null if plugins is doing weird stuff to the proxy internals */ + @Nullable public final String getServerNameFor(@NonNull UUID player) { return plugin.getDataManager().getServer(player); } diff --git a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java index ed71dba..5140fdb 100644 --- a/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java +++ b/RedisBungee-Bungee/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java @@ -14,6 +14,7 @@ import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.plugin.Plugin; import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import java.util.UUID; @@ -43,8 +44,11 @@ public class RedisBungeeAPI extends AbstractRedisBungeeAPI { * @return {@link ServerInfo} Can be null if proxy can't find it. * @see #getServerNameFor(UUID) */ + @Nullable public final ServerInfo getServerFor(@NonNull UUID player) { - return ((Plugin) this.plugin).getProxy().getServerInfo(this.getServerNameFor(player)); + String serverName = this.getServerNameFor(player); + if (serverName == null) return null; + return ((Plugin) this.plugin).getProxy().getServerInfo(serverName); } /** diff --git a/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java b/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java index 4cc6f8b..712ebba 100644 --- a/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java +++ b/RedisBungee-Velocity/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java @@ -14,6 +14,7 @@ import com.imaginarycode.minecraft.redisbungee.api.RedisBungeePlugin; import com.velocitypowered.api.proxy.server.RegisteredServer; import com.velocitypowered.api.proxy.server.ServerInfo; import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import java.util.UUID; @@ -44,8 +45,11 @@ public class RedisBungeeAPI extends AbstractRedisBungeeAPI { * @return {@link ServerInfo} Can be null if proxy can't find it. * @see #getServerNameFor(UUID) */ + @Nullable public final ServerInfo getServerFor(@NonNull UUID player) { - return ((RedisBungeeVelocityPlugin) this.plugin).getProxy().getServer(this.getServerNameFor(player)).map((RegisteredServer::getServerInfo)).orElse(null); + String serverName = this.getServerNameFor(player); + if (serverName == null) return null; + return ((RedisBungeeVelocityPlugin) this.plugin).getProxy().getServer(serverName).map((RegisteredServer::getServerInfo)).orElse(null); } /**