diff --git a/build.gradle b/build.gradle index 783a8b9..4877aed 100644 --- a/build.gradle +++ b/build.gradle @@ -151,7 +151,9 @@ dependencies { // modImplementation project(":myproject") // embedd the JDBC driver in the mod using jarJar - runtimeOnly "com.mysql:mysql-connector-j:${jdbc_version}" + // JDBC driver auto-detection is broken in Forge as of v47.4.0 + // i.e. we need to need it both at compile and runtime + implementation "com.mysql:mysql-connector-j:${jdbc_version}" jarJar "com.mysql:mysql-connector-j:${jdbc_version}" additionalRuntimeClasspath "com.mysql:mysql-connector-j:${jdbc_version}" diff --git a/src/main/java/vip/fubuki/playersync/PlayerSync.java b/src/main/java/vip/fubuki/playersync/PlayerSync.java index fa3dc65..1e84591 100644 --- a/src/main/java/vip/fubuki/playersync/PlayerSync.java +++ b/src/main/java/vip/fubuki/playersync/PlayerSync.java @@ -17,9 +17,11 @@ import vip.fubuki.playersync.sync.VanillaSync; import vip.fubuki.playersync.util.JDBCsetUp; import java.sql.Connection; +import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import com.mysql.cj.jdbc.Driver; @Mod(PlayerSync.MODID) public class PlayerSync { @@ -34,6 +36,14 @@ public class PlayerSync { } private void commonSetup(final FMLCommonSetupEvent event) { + // JDBC driver auto-detection is broken in Forge as of v47.4.0 + // We need to register the driver manually + try { + DriverManager.registerDriver(new Driver()); + } catch (SQLException e) { + LOGGER.error("Unable to register JDBC MySQL driver", e); + } + VanillaSync.register(); if (JdbcConfig.SYNC_CHAT.get()) { ChatSync.register();