From 3eca6e9df1b2434a169af2f8bb029979654c282c Mon Sep 17 00:00:00 2001 From: Andrew Steinborn Date: Fri, 7 Sep 2018 18:09:28 -0400 Subject: [PATCH] Mark Velocity as a modded server on the server list --- .../api/proxy/server/ServerPing.java | 48 ++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/com/velocitypowered/api/proxy/server/ServerPing.java b/api/src/main/java/com/velocitypowered/api/proxy/server/ServerPing.java index 525cd2bc9..88fe44000 100644 --- a/api/src/main/java/com/velocitypowered/api/proxy/server/ServerPing.java +++ b/api/src/main/java/com/velocitypowered/api/proxy/server/ServerPing.java @@ -4,7 +4,6 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.velocitypowered.api.util.Favicon; import net.kyori.text.Component; -import org.checkerframework.checker.nullness.qual.NonNull; import org.checkerframework.checker.nullness.qual.Nullable; import java.util.*; @@ -17,12 +16,18 @@ public class ServerPing { private final Players players; private final Component description; private final @Nullable Favicon favicon; + private final Modinfo modinfo; public ServerPing(Version version, @Nullable Players players, Component description, @Nullable Favicon favicon) { + this(version, players, description, favicon, Modinfo.DEFAULT); + } + + public ServerPing(Version version, @Nullable Players players, Component description, @Nullable Favicon favicon, Modinfo modinfo) { this.version = Preconditions.checkNotNull(version, "version"); this.players = players; this.description = Preconditions.checkNotNull(description, "description"); this.favicon = favicon; + this.modinfo = modinfo; } public Version getVersion() { @@ -74,6 +79,7 @@ public class ServerPing { private int onlinePlayers; private int maximumPlayers; private final List samplePlayers = new ArrayList<>(); + private final List mods = new ArrayList<>(); private Component description; private Favicon favicon; private boolean nullOutPlayers; @@ -102,6 +108,16 @@ public class ServerPing { return this; } + public Builder mods(Mod... mods) { + this.mods.addAll(Arrays.asList(mods)); + return this; + } + + public Builder clearMods() { + this.mods.clear(); + return this; + } + public Builder clearSamplePlayers() { this.samplePlayers.clear(); return this; @@ -123,7 +139,8 @@ public class ServerPing { } public ServerPing build() { - return new ServerPing(version, nullOutPlayers ? null : new Players(onlinePlayers, maximumPlayers, samplePlayers), description, favicon); + return new ServerPing(version, nullOutPlayers ? null : new Players(onlinePlayers, maximumPlayers, samplePlayers), description, favicon, + new Modinfo(mods)); } public Version getVersion() { @@ -150,6 +167,10 @@ public class ServerPing { return favicon; } + public List getMods() { + return mods; + } + @Override public String toString() { return "Builder{" + @@ -157,8 +178,10 @@ public class ServerPing { ", onlinePlayers=" + onlinePlayers + ", maximumPlayers=" + maximumPlayers + ", samplePlayers=" + samplePlayers + + ", mods=" + mods + ", description=" + description + ", favicon=" + favicon + + ", nullOutPlayers=" + nullOutPlayers + '}'; } } @@ -247,4 +270,25 @@ public class ServerPing { '}'; } } + + public static class Modinfo { + public static final Modinfo DEFAULT = new Modinfo(ImmutableList.of()); + + private final String type = "FML"; + private final List modList; + + public Modinfo(List modList) { + this.modList = ImmutableList.copyOf(modList); + } + } + + public static class Mod { + private final String id; + private final String version; + + public Mod(String id, String version) { + this.id = Preconditions.checkNotNull(id, "id"); + this.version = Preconditions.checkNotNull(version, "version"); + } + } }