From c2f3201533a57573fb9a183ea176b38b4fb807c8 Mon Sep 17 00:00:00 2001 From: Phoenix616 <max@themoep.de> Date: Wed, 27 Mar 2024 20:42:48 +0100 Subject: [PATCH] Update to latest Velocity and Waterfall Also use Java 17 now seeing as Velocity requires it now too! --- pom.xml | 16 +++---- .../java/de/themoep/snap/PluginConfig.java | 48 ++++++++++--------- .../themoep/snap/forwarding/SnapPlayer.java | 34 +++++++++++++ .../listener/ForwardingListener.java | 15 ++++++ .../forwarding/listener/PreLoginListener.java | 15 ++++++ 5 files changed, 98 insertions(+), 30 deletions(-) diff --git a/pom.xml b/pom.xml index 96fd2b9..a4b086f 100644 --- a/pom.xml +++ b/pom.xml @@ -7,12 +7,12 @@ <groupId>de.themoep</groupId> <artifactId>snap</artifactId> - <version>1.1-SNAPSHOT</version> + <version>1.2-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <maven.compiler.target>1.8</maven.compiler.target> - <maven.compiler.source>1.8</maven.compiler.source> + <maven.compiler.target>17</maven.compiler.target> + <maven.compiler.source>17</maven.compiler.source> <build.number>${buildNumber}</build.number> <minecraft.plugin.version>${project.version} ${buildDescription}</minecraft.plugin.version> </properties> @@ -28,13 +28,13 @@ <dependency> <groupId>com.velocitypowered</groupId> <artifactId>velocity-api</artifactId> - <version>3.1.1</version> + <version>3.3.0-SNAPSHOT</version> <scope>provided</scope> </dependency> <dependency> <groupId>io.github.waterfallmc</groupId> <artifactId>waterfall-api</artifactId> - <version>1.19-R0.1-SNAPSHOT</version> + <version>1.20-R0.3-SNAPSHOT</version> <scope>compile</scope> </dependency> <!-- API requirements, not actually part of API --> @@ -80,7 +80,7 @@ <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> - <version>8.0.33</version> + <version>8.2.0</version> <scope>runtime</scope> </dependency> </dependencies> @@ -131,7 +131,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> - <version>3.8.1</version> + <version>3.11.0</version> <configuration> <proc>none</proc> </configuration> @@ -139,7 +139,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> - <version>3.2.3</version> + <version>3.5.1</version> <executions> <execution> <phase>package</phase> diff --git a/src/main/java/de/themoep/snap/PluginConfig.java b/src/main/java/de/themoep/snap/PluginConfig.java index 7c7483b..ec880f3 100644 --- a/src/main/java/de/themoep/snap/PluginConfig.java +++ b/src/main/java/de/themoep/snap/PluginConfig.java @@ -17,11 +17,10 @@ * You should have received a copy of the GNU Lesser General Public * License along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import com.typesafe.config.ConfigParseOptions; -import com.typesafe.config.ConfigRenderOptions; -import ninja.leaping.configurate.ConfigurationNode; -import ninja.leaping.configurate.hocon.HoconConfigurationLoader; -import ninja.leaping.configurate.yaml.YAMLConfigurationLoader; + +import org.spongepowered.configurate.ConfigurationNode; +import org.spongepowered.configurate.hocon.HoconConfigurationLoader; +import org.spongepowered.configurate.serialize.SerializationException; import java.io.BufferedReader; import java.io.IOException; @@ -51,9 +50,7 @@ public PluginConfig(Snap plugin, Path configFile, String defaultFile) { this.configFile = configFile; this.defaultFile = defaultFile; configLoader = HoconConfigurationLoader.builder() - .setPath(configFile) - .setParseOptions(ConfigParseOptions.defaults()) - .setRenderOptions(ConfigRenderOptions.defaults()) + .path(configFile) .build(); } @@ -62,13 +59,11 @@ public boolean load() { config = configLoader.load(); if (defaultFile != null && plugin.getClass().getClassLoader().getResource(defaultFile) != null) { defaultConfig = HoconConfigurationLoader.builder() - .setPath(configFile) - .setParseOptions(ConfigParseOptions.defaults()) - .setRenderOptions(ConfigRenderOptions.defaults()) - .setSource(() -> new BufferedReader(new InputStreamReader(plugin.getClass().getClassLoader().getResourceAsStream(defaultFile)))) + .path(configFile) + .source(() -> new BufferedReader(new InputStreamReader(plugin.getClass().getClassLoader().getResourceAsStream(defaultFile)))) .build() .load(); - if (config.isEmpty()) { + if (config.empty()) { config = defaultConfig.copy(); } } @@ -113,15 +108,24 @@ public void save() { } public Object set(String path, Object value) { - ConfigurationNode node = config.getNode(splitPath(path)); - Object prev = node.getValue(); - node.setValue(value); + ConfigurationNode node = config.node(splitPath(path)); + Object prev = node.raw(); + try { + node.set(value); + } catch (SerializationException e) { + plugin.getLogger().error("Could not set node at " + path, e); + } return prev; } public ConfigurationNode remove(String path) { - ConfigurationNode node = config.getNode(splitPath(path)); - return node.isVirtual() ? node : node.setValue(null); + ConfigurationNode node = config.node(splitPath(path)); + try { + return node.virtual() ? node : node.set(null); + } catch (SerializationException e) { + plugin.getLogger().error("Could not remove node at " + path, e); + return null; + } } public ConfigurationNode getRawConfig() { @@ -129,15 +133,15 @@ public ConfigurationNode getRawConfig() { } public ConfigurationNode getRawConfig(String path) { - return getRawConfig().getNode(splitPath(path)); + return getRawConfig().node(splitPath(path)); } public boolean has(String path) { - return !getRawConfig(path).isVirtual(); + return !getRawConfig(path).virtual(); } public boolean isSection(String path) { - return getRawConfig(path).hasMapChildren(); + return getRawConfig(path).isMap(); } public int getInt(String path) { @@ -157,7 +161,7 @@ public double getDouble(String path, double def) { } public String getString(String path) { - return getString(path, null); + return getRawConfig(path).getString(); } public String getString(String path, String def) { diff --git a/src/main/java/de/themoep/snap/forwarding/SnapPlayer.java b/src/main/java/de/themoep/snap/forwarding/SnapPlayer.java index 159e0f6..cd174cf 100644 --- a/src/main/java/de/themoep/snap/forwarding/SnapPlayer.java +++ b/src/main/java/de/themoep/snap/forwarding/SnapPlayer.java @@ -47,6 +47,7 @@ import java.util.Map; import java.util.Optional; import java.util.UUID; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; public class SnapPlayer extends SnapCommandSender implements ProxiedPlayer { @@ -108,6 +109,20 @@ public boolean isLegacy() { return player.getProtocolVersion().isLegacy(); } + @Override + public boolean isTransferred() { + // TODO: Support 1.20.5 features + snap.unsupported("Transferred connections are not supported in Velocity's API yet!"); + return false; + } + + @Override + public CompletableFuture<byte[]> retrieveCookie(String s) { + // TODO: Support 1.20.5 features + snap.unsupported("Transferred connections and cookies are not supported in Velocity's API yet!"); + return null; + } + @Override public InetSocketAddress getAddress() { return player.getRemoteAddress(); @@ -423,6 +438,25 @@ public Scoreboard getScoreboard() { return (Scoreboard) snap.unsupported("Scoreboards are not supported by Snap"); } + @Override + public CompletableFuture<byte[]> retrieveCookie(String s) { + // TODO: Support 1.20.5 features + snap.unsupported("Transferred connections and cookies are not supported in Velocity's API yet!"); + return CompletableFuture.completedFuture(null); + } + + @Override + public void storeCookie(String s, byte[] bytes) { + // TODO: Support 1.20.5 features + snap.unsupported("Transferred connections and cookies are not supported in Velocity's API yet!"); + } + + @Override + public void transfer(String s, int i) { + // TODO: Support 1.20.5 features + snap.unsupported("Transferred connections and cookies are not supported in Velocity's API yet!"); + } + @Override public String getName() { return player.getUsername(); diff --git a/src/main/java/de/themoep/snap/forwarding/listener/ForwardingListener.java b/src/main/java/de/themoep/snap/forwarding/listener/ForwardingListener.java index 9075cf9..152d947 100644 --- a/src/main/java/de/themoep/snap/forwarding/listener/ForwardingListener.java +++ b/src/main/java/de/themoep/snap/forwarding/listener/ForwardingListener.java @@ -28,6 +28,7 @@ import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.UUID; +import java.util.concurrent.CompletableFuture; public abstract class ForwardingListener { protected final Snap snap; @@ -94,6 +95,20 @@ public boolean isLegacy() { return connection.getProtocolVersion().isLegacy(); } + @Override + public boolean isTransferred() { + // TODO: Support 1.20.5 features + snap.unsupported("Transferred connections are not supported in Velocity's API yet!"); + return false; + } + + @Override + public CompletableFuture<byte[]> retrieveCookie(String s) { + // TODO: Support 1.20.5 features + snap.unsupported("Transferred connections and cookies are not supported in Velocity's API yet!"); + return null; + } + @Override public InetSocketAddress getAddress() { return connection.getRemoteAddress(); diff --git a/src/main/java/de/themoep/snap/forwarding/listener/PreLoginListener.java b/src/main/java/de/themoep/snap/forwarding/listener/PreLoginListener.java index 4c99c67..09492e8 100644 --- a/src/main/java/de/themoep/snap/forwarding/listener/PreLoginListener.java +++ b/src/main/java/de/themoep/snap/forwarding/listener/PreLoginListener.java @@ -31,6 +31,7 @@ import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.UUID; +import java.util.concurrent.CompletableFuture; public class PreLoginListener extends ForwardingListener { @@ -107,6 +108,20 @@ public boolean isLegacy() { return event.getConnection().getProtocolVersion().isLegacy(); } + @Override + public boolean isTransferred() { + // TODO: Support 1.20.5 features + snap.unsupported("Transferred connections are not supported in Velocity's API yet!"); + return false; + } + + @Override + public CompletableFuture<byte[]> retrieveCookie(String s) { + // TODO: Support 1.20.5 features + snap.unsupported("Transferred connections and cookies are not supported in Velocity's API yet!"); + return null; + } + @Override public InetSocketAddress getAddress() { return event.getConnection().getRemoteAddress();