From cc88e6b6ea4c192551677bdfd3d61f344c3440f9 Mon Sep 17 00:00:00 2001 From: ME1312 Date: Mon, 30 Jul 2018 12:29:36 -0400 Subject: [PATCH] Correct version dection for SpongeAPI 8 --- .../SubServers/Client/Sponge/Event/SubAddHostEvent.java | 2 ++ .../SubServers/Client/Sponge/Event/SubAddServerEvent.java | 2 ++ .../SubServers/Client/Sponge/Event/SubCreateEvent.java | 2 ++ .../Client/Sponge/Event/SubEditServerEvent.java | 2 ++ .../Client/Sponge/Event/SubNetworkConnectEvent.java | 2 ++ .../Client/Sponge/Event/SubNetworkDisconnectEvent.java | 2 ++ .../Client/Sponge/Event/SubRemoveHostEvent.java | 2 ++ .../Client/Sponge/Event/SubRemoveServerEvent.java | 2 ++ .../Client/Sponge/Event/SubSendCommandEvent.java | 2 ++ .../SubServers/Client/Sponge/Event/SubStartEvent.java | 2 ++ .../SubServers/Client/Sponge/Event/SubStopEvent.java | 2 ++ .../SubServers/Client/Sponge/Event/SubStoppedEvent.java | 2 ++ .../ME1312/SubServers/Client/Sponge/Library/Metrics.java | 2 +- .../src/net/ME1312/SubServers/Client/Sponge/SubAPI.java | 8 +++++++- .../net/ME1312/SubServers/Client/Sponge/SubCommand.java | 8 ++++++-- 15 files changed, 38 insertions(+), 4 deletions(-) diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddHostEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddHostEvent.java index 19a617b2..03623829 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddHostEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddHostEvent.java @@ -43,9 +43,11 @@ public class SubAddHostEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return The player who triggered this event under the key: player */ @Override + @Deprecated public Cause getCause() { return Cause.builder().named("player", player).build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddServerEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddServerEvent.java index 05523f57..48b93a63 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddServerEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubAddServerEvent.java @@ -54,9 +54,11 @@ public class SubAddServerEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return The player who triggered this event under the key: player */ @Override + @Deprecated public Cause getCause() { return Cause.builder().named("player", player).build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java index 09fc18cb..960fe58b 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubCreateEvent.java @@ -112,9 +112,11 @@ public class SubCreateEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return The player who triggered this event under the key: player */ @Override + @Deprecated public Cause getCause() { return Cause.builder().named("player", player).build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubEditServerEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubEditServerEvent.java index 48e94011..17066f8d 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubEditServerEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubEditServerEvent.java @@ -72,9 +72,11 @@ public class SubEditServerEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return The player who triggered this event under the key: player */ @Override + @Deprecated public Cause getCause() { return Cause.builder().named("player", player).build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubNetworkConnectEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubNetworkConnectEvent.java index ef1d97ea..128c32d8 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubNetworkConnectEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubNetworkConnectEvent.java @@ -21,9 +21,11 @@ public class SubNetworkConnectEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return An empty cause list */ @Override + @Deprecated public Cause getCause() { return Cause.builder().build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubNetworkDisconnectEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubNetworkDisconnectEvent.java index a41e9beb..e266e338 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubNetworkDisconnectEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubNetworkDisconnectEvent.java @@ -12,9 +12,11 @@ public class SubNetworkDisconnectEvent extends AbstractEvent implements SubEvent /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return An empty cause list */ @Override + @Deprecated public Cause getCause() { return Cause.builder().build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubRemoveHostEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubRemoveHostEvent.java index 0e7c6253..712430ef 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubRemoveHostEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubRemoveHostEvent.java @@ -43,9 +43,11 @@ public class SubRemoveHostEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return The player who triggered this event under the key: player */ @Override + @Deprecated public Cause getCause() { return Cause.builder().named("player", player).build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubRemoveServerEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubRemoveServerEvent.java index bd8a9f52..02d84adf 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubRemoveServerEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubRemoveServerEvent.java @@ -54,9 +54,11 @@ public class SubRemoveServerEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return The player who triggered this event under the key: player */ @Override + @Deprecated public Cause getCause() { return Cause.builder().named("player", player).build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubSendCommandEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubSendCommandEvent.java index 9642588b..9172059e 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubSendCommandEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubSendCommandEvent.java @@ -63,9 +63,11 @@ public class SubSendCommandEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return The player who triggered this event under the key: player */ @Override + @Deprecated public Cause getCause() { return Cause.builder().named("player", player).build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStartEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStartEvent.java index 0737b07e..075d523f 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStartEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStartEvent.java @@ -44,9 +44,11 @@ public class SubStartEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return The player who triggered this event under the key: player */ @Override + @Deprecated public Cause getCause() { return Cause.builder().named("player", player).build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStopEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStopEvent.java index e48db7df..3570aa36 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStopEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStopEvent.java @@ -56,9 +56,11 @@ public class SubStopEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return The player who triggered this event under the key: player */ @Override + @Deprecated public Cause getCause() { return Cause.builder().named("player", player).build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStoppedEvent.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStoppedEvent.java index 197d45bf..20767330 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStoppedEvent.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Event/SubStoppedEvent.java @@ -31,9 +31,11 @@ public class SubStoppedEvent extends AbstractEvent implements SubEvent { /** * Gets the cause of this Event * + * @deprecated Use simplified methods where available * @return An empty cause list */ @Override + @Deprecated public Cause getCause() { return Cause.builder().build(); } diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Library/Metrics.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Library/Metrics.java index bb75fb7b..ba456e97 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Library/Metrics.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/Library/Metrics.java @@ -197,7 +197,7 @@ public class Metrics { playerAmount = playerAmount > 200 ? 200 : playerAmount; int onlineMode = Sponge.getServer().getOnlineMode() ? 1 : 0; String minecraftVersion = Sponge.getGame().getPlatform().getMinecraftVersion().getName(); - String spongeImplementation = Sponge.getPlatform().getImplementation().getName(); + String spongeImplementation = plugin.api.getServerVersion() + ""; // OS/Java specific data String javaVersion = System.getProperty("java.version"); diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubAPI.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubAPI.java index b00a6bcf..c9c202eb 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubAPI.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubAPI.java @@ -13,6 +13,9 @@ import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketDownloadNetworkL import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketDownloadPlayerList; import net.ME1312.SubServers.Client.Sponge.Network.Packet.PacketDownloadServerList; import net.ME1312.SubServers.Client.Sponge.Network.SubDataClient; +import org.spongepowered.api.Platform; +import org.spongepowered.api.Sponge; +import org.spongepowered.api.plugin.PluginContainer; import java.lang.reflect.InvocationTargetException; import java.util.*; @@ -367,7 +370,10 @@ public final class SubAPI { * @return Server Version */ public Version getServerVersion() { - return new Version(plugin.game.getPlatform().getImplementation().getVersion().get()); + PluginContainer container = null; + if (container == null) container = Util.getDespiteException(() -> (PluginContainer) Platform.class.getMethod("getContainer", Class.forName("org.spongepowered.api.Platform$Component")).invoke(Sponge.getPlatform(), Enum.valueOf((Class) Class.forName("org.spongepowered.api.Platform$Component"), "IMPLEMENTATION")), null); + if (container == null) container = Util.getDespiteException(() -> (PluginContainer) Platform.class.getMethod("getImplementation").invoke(Sponge.getPlatform()), null); + return (container == null || !container.getVersion().isPresent())?null:new Version(container.getVersion().get()); } /** diff --git a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubCommand.java b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubCommand.java index 42fd7783..4345986a 100644 --- a/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubCommand.java +++ b/SubServers.Client/Sponge/src/net/ME1312/SubServers/Client/Sponge/SubCommand.java @@ -156,10 +156,14 @@ public final class SubCommand implements CommandExecutor { @SuppressWarnings("unchecked") public CommandResult execute(CommandSource sender, CommandContext args) throws CommandException { if (canRun(sender)) { + PluginContainer container = null; + if (container == null) container = Util.getDespiteException(() -> (PluginContainer) Platform.class.getMethod("getContainer", Class.forName("org.spongepowered.api.Platform$Component")).invoke(Sponge.getPlatform(), Enum.valueOf((Class) Class.forName("org.spongepowered.api.Platform$Component"), "IMPLEMENTATION")), null); + if (container == null) container = Util.getDespiteException(() -> (PluginContainer) Platform.class.getMethod("getImplementation").invoke(Sponge.getPlatform()), null); + sender.sendMessage(Text.of(plugin.api.getLang("SubServers", "Command.Version").replace("$str$", "SubServers.Client.Sponge"))); sender.sendMessage(Text.builder(" " + System.getProperty("os.name") + ' ' + System.getProperty("os.version")).color(TextColors.WHITE).append(Text.of(",")).build()); sender.sendMessage(Text.builder(" Java " + System.getProperty("java.version")).color(TextColors.WHITE).append(Text.of(",")).build()); - sender.sendMessage(Text.builder(" " + Sponge.getPlatform().getImplementation().getName() + ' ' + Sponge.getPlatform().getImplementation().getVersion().get()).color(TextColors.WHITE).append(Text.of(",")).build()); + sender.sendMessage(Text.builder(" " + container.getName() + ' ' + container.getVersion().get()).color(TextColors.WHITE).append(Text.of(",")).build()); sender.sendMessage(Text.builder(" SubServers.Client.Sponge v" + plugin.version.toExtendedString() + ((plugin.api.getPluginBuild() != null)?" (" + plugin.api.getPluginBuild() + ')':"")).color(TextColors.WHITE).build()); sender.sendMessage(Text.EMPTY); plugin.game.getScheduler().createTaskBuilder().async().execute(() -> { @@ -183,7 +187,7 @@ public final class SubCommand implements CommandExecutor { sender.sendMessage(Text.of(plugin.api.getLang("SubServers", "Command.Version.Outdated").replace("$name$", "SubServers.Client.Sponge").replace("$str$", updversion.toString()).replace("$int$", Integer.toString(updcount)))); } } catch (Exception e) {} - }); + }).submit(plugin); return CommandResult.builder().successCount(1).build(); } else { sender.sendMessage(Text.of(plugin.api.getLang("SubServers", "Command.Generic.Invalid-Permission").replace("$str$", "subservers.command")));