diff --git a/Changelog.txt b/Changelog.txt index 9f22ab842..a14f8001f 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,6 @@ +Version 2.1.180 + mcMMO now uses UTF-8 compliant encoding for SQL databases (utf8mb4) + Version 2.1.179 Fixed a bug for FlatFile databases where some players with changed nicknames would have their levels not loaded upon login (possibly wiping their data) diff --git a/pom.xml b/pom.xml index bf8fbfddd..01d2a5a7e 100755 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.gmail.nossr50.mcMMO mcMMO - 2.1.179 + 2.1.180-SNAPSHOT mcMMO https://github.com/mcMMO-Dev/mcMMO diff --git a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java index a8a1fd326..68b20d5dd 100644 --- a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java +++ b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java @@ -38,6 +38,8 @@ public final class SQLDatabaseManager implements DatabaseManager { private final ReentrantLock massUpdateLock = new ReentrantLock(); + private final String ENCODING = "utf8mb4"; //This is compliant with UTF-8 while "utf8" is not, confusing but this is how it is. + protected SQLDatabaseManager() { String connectionString = "jdbc:mysql://" + Config.getInstance().getMySQLServerName() + ":" + Config.getInstance().getMySQLServerPort() + "/" + Config.getInstance().getMySQLDatabaseName(); @@ -814,7 +816,7 @@ public final class SQLDatabaseManager implements DatabaseManager { + "`lastlogin` int(32) unsigned NOT NULL," + "PRIMARY KEY (`id`)," + "INDEX(`user`(20) ASC)," - + "UNIQUE KEY `uuid` (`uuid`)) DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;"); + + "UNIQUE KEY `uuid` (`uuid`)) DEFAULT CHARSET=" + ENCODING + " AUTO_INCREMENT=1;"); tryClose(createStatement); } tryClose(resultSet); @@ -828,7 +830,7 @@ public final class SQLDatabaseManager implements DatabaseManager { + "`mobhealthbar` varchar(50) NOT NULL DEFAULT '" + Config.getInstance().getMobHealthbarDefault() + "'," + "`scoreboardtips` int(10) NOT NULL DEFAULT '0'," + "PRIMARY KEY (`user_id`)) " - + "DEFAULT CHARSET=latin1;"); + + "DEFAULT CHARSET=" + ENCODING + ";"); tryClose(createStatement); } tryClose(resultSet); @@ -853,7 +855,7 @@ public final class SQLDatabaseManager implements DatabaseManager { + "`blast_mining` int(32) unsigned NOT NULL DEFAULT '0'," + "`chimaera_wing` int(32) unsigned NOT NULL DEFAULT '0'," + "PRIMARY KEY (`user_id`)) " - + "DEFAULT CHARSET=latin1;"); + + "DEFAULT CHARSET=" + ENCODING + ";"); tryClose(createStatement); } tryClose(resultSet); @@ -881,7 +883,7 @@ public final class SQLDatabaseManager implements DatabaseManager { + "`alchemy` int(10) unsigned NOT NULL DEFAULT "+startingLevel+"," + "`total` int(10) unsigned NOT NULL DEFAULT "+totalLevel+"," + "PRIMARY KEY (`user_id`)) " - + "DEFAULT CHARSET=latin1;"); + + "DEFAULT CHARSET=" + ENCODING + ";"); tryClose(createStatement); } tryClose(resultSet); @@ -906,7 +908,7 @@ public final class SQLDatabaseManager implements DatabaseManager { + "`fishing` int(10) unsigned NOT NULL DEFAULT '0'," + "`alchemy` int(10) unsigned NOT NULL DEFAULT '0'," + "PRIMARY KEY (`user_id`)) " - + "DEFAULT CHARSET=latin1;"); + + "DEFAULT CHARSET=" + ENCODING + ";"); tryClose(createStatement); } tryClose(resultSet);