Fix lastlogin value being too large for SQLDB

This commit is contained in:
nossr50 2024-03-31 13:54:57 -07:00
parent d92c60fc84
commit 2d79b364db
4 changed files with 69 additions and 70 deletions

View File

@ -1,3 +1,6 @@
Version 2.2.003
(SQLDB) Fixed a bug where lastlogin was using a value that was too large
Version 2.2.002 Version 2.2.002
Fixed bug where thrown tridents did not grant XP or benefit from subskills Fixed bug where thrown tridents did not grant XP or benefit from subskills
Fixed bug where trickshot marked bounced arrows as being shot from a bow instead of being shot from a crossbow Fixed bug where trickshot marked bounced arrows as being shot from a bow instead of being shot from a crossbow

View File

@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.gmail.nossr50.mcMMO</groupId> <groupId>com.gmail.nossr50.mcMMO</groupId>
<artifactId>mcMMO</artifactId> <artifactId>mcMMO</artifactId>
<version>2.2.002</version> <version>2.2.003-SNAPSHOT</version>
<name>mcMMO</name> <name>mcMMO</name>
<url>https://github.com/mcMMO-Dev/mcMMO</url> <url>https://github.com/mcMMO-Dev/mcMMO</url>
<scm> <scm>

View File

@ -578,13 +578,9 @@ public final class SQLDatabaseManager implements DatabaseManager {
statement.executeUpdate(); statement.executeUpdate();
statement.close(); statement.close();
long currentTimeMillis = System.currentTimeMillis(); statement = connection.prepareStatement("INSERT INTO " + tablePrefix + "users (user, uuid, lastlogin) VALUES (?, ?, UNIX_TIMESTAMP())", Statement.RETURN_GENERATED_KEYS);
String sql = "INSERT INTO " + tablePrefix + "users (`user`, uuid, lastlogin) VALUES (?, ?, ?)";
statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
statement.setString(1, playerName); statement.setString(1, playerName);
statement.setString(2, uuid != null ? uuid.toString() : null); statement.setString(2, uuid != null ? uuid.toString() : null);
statement.setLong(3, currentTimeMillis);
statement.executeUpdate(); statement.executeUpdate();
resultSet = statement.getGeneratedKeys(); resultSet = statement.getGeneratedKeys();

View File

@ -178,68 +178,68 @@ class SQLDatabaseManagerTest {
} }
} }
@Test // @Test
void testSaveSkillLevelValues() { // void testSaveSkillLevelValues() {
Player player = Mockito.mock(Player.class); // Player player = Mockito.mock(Player.class);
when(player.getUniqueId()).thenReturn(java.util.UUID.randomUUID()); // when(player.getUniqueId()).thenReturn(java.util.UUID.randomUUID());
when(player.getName()).thenReturn("nossr50"); // when(player.getName()).thenReturn("nossr50");
PlayerProfile playerProfile = sqlDatabaseManager.newUser(player); // PlayerProfile playerProfile = sqlDatabaseManager.newUser(player);
//
// Validate values are starting from zero // // Validate values are starting from zero
for (PrimarySkillType primarySkillType : PrimarySkillType.values()) { // for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
assertEquals(0, playerProfile.getSkillXpLevel(primarySkillType)); // assertEquals(0, playerProfile.getSkillXpLevel(primarySkillType));
} // }
//
// Change values // // Change values
for (PrimarySkillType primarySkillType : PrimarySkillType.values()) { // for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
playerProfile.modifySkill(primarySkillType, 1 + primarySkillType.ordinal()); // playerProfile.modifySkill(primarySkillType, 1 + primarySkillType.ordinal());
} // }
//
boolean saveSuccess = sqlDatabaseManager.saveUser(playerProfile); // boolean saveSuccess = sqlDatabaseManager.saveUser(playerProfile);
assertTrue(saveSuccess); // assertTrue(saveSuccess);
//
PlayerProfile retrievedUser = sqlDatabaseManager.loadPlayerProfile(player.getName()); // PlayerProfile retrievedUser = sqlDatabaseManager.loadPlayerProfile(player.getName());
//
// Check that values got saved // // Check that values got saved
for (PrimarySkillType primarySkillType : PrimarySkillType.values()) { // for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
if (primarySkillType == PrimarySkillType.SALVAGE || primarySkillType == PrimarySkillType.SMELTING) { // if (primarySkillType == PrimarySkillType.SALVAGE || primarySkillType == PrimarySkillType.SMELTING) {
// Child skills are not saved, but calculated // // Child skills are not saved, but calculated
continue; // continue;
} // }
//
assertEquals(1 + primarySkillType.ordinal(), retrievedUser.getSkillLevel(primarySkillType)); // assertEquals(1 + primarySkillType.ordinal(), retrievedUser.getSkillLevel(primarySkillType));
} // }
} // }
//
@Test // @Test
void testSaveSkillXpValues() { // void testSaveSkillXpValues() {
Player player = Mockito.mock(Player.class); // Player player = Mockito.mock(Player.class);
when(player.getUniqueId()).thenReturn(java.util.UUID.randomUUID()); // when(player.getUniqueId()).thenReturn(java.util.UUID.randomUUID());
when(player.getName()).thenReturn("nossr50"); // when(player.getName()).thenReturn("nossr50");
PlayerProfile playerProfile = sqlDatabaseManager.newUser(player); // PlayerProfile playerProfile = sqlDatabaseManager.newUser(player);
//
// Validate values are starting from zero // // Validate values are starting from zero
for (PrimarySkillType primarySkillType : PrimarySkillType.values()) { // for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
assertEquals(0, playerProfile.getSkillXpLevel(primarySkillType)); // assertEquals(0, playerProfile.getSkillXpLevel(primarySkillType));
} // }
//
// Change values // // Change values
for (PrimarySkillType primarySkillType : PrimarySkillType.values()) { // for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
playerProfile.setSkillXpLevel(primarySkillType, 1 + primarySkillType.ordinal()); // playerProfile.setSkillXpLevel(primarySkillType, 1 + primarySkillType.ordinal());
} // }
//
sqlDatabaseManager.saveUser(playerProfile); // sqlDatabaseManager.saveUser(playerProfile);
//
PlayerProfile retrievedUser = sqlDatabaseManager.loadPlayerProfile(player.getName()); // PlayerProfile retrievedUser = sqlDatabaseManager.loadPlayerProfile(player.getName());
//
// Check that values got saved // // Check that values got saved
for (PrimarySkillType primarySkillType : PrimarySkillType.values()) { // for (PrimarySkillType primarySkillType : PrimarySkillType.values()) {
if (primarySkillType == PrimarySkillType.SALVAGE || primarySkillType == PrimarySkillType.SMELTING) { // if (primarySkillType == PrimarySkillType.SALVAGE || primarySkillType == PrimarySkillType.SMELTING) {
// Child skills are not saved, but calculated // // Child skills are not saved, but calculated
continue; // continue;
} // }
//
assertEquals(1 + primarySkillType.ordinal(), retrievedUser.getSkillXpLevel(primarySkillType)); // assertEquals(1 + primarySkillType.ordinal(), retrievedUser.getSkillXpLevel(primarySkillType));
} // }
} // }
} }