diff --git a/.gradle/7.6.1/checksums/checksums.lock b/.gradle/7.6.1/checksums/checksums.lock index e5740c4..76f4f7a 100644 Binary files a/.gradle/7.6.1/checksums/checksums.lock and b/.gradle/7.6.1/checksums/checksums.lock differ diff --git a/.gradle/7.6.1/checksums/sha1-checksums.bin b/.gradle/7.6.1/checksums/sha1-checksums.bin index d0fc407..6cdd46a 100644 Binary files a/.gradle/7.6.1/checksums/sha1-checksums.bin and b/.gradle/7.6.1/checksums/sha1-checksums.bin differ diff --git a/.gradle/7.6.1/executionHistory/executionHistory.bin b/.gradle/7.6.1/executionHistory/executionHistory.bin index e0ddbc5..ba42670 100644 Binary files a/.gradle/7.6.1/executionHistory/executionHistory.bin and b/.gradle/7.6.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.6.1/executionHistory/executionHistory.lock b/.gradle/7.6.1/executionHistory/executionHistory.lock index 5a6ca2b..3471f87 100644 Binary files a/.gradle/7.6.1/executionHistory/executionHistory.lock and b/.gradle/7.6.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.6.1/fileHashes/fileHashes.bin b/.gradle/7.6.1/fileHashes/fileHashes.bin index 6ff4237..3851db2 100644 Binary files a/.gradle/7.6.1/fileHashes/fileHashes.bin and b/.gradle/7.6.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.6.1/fileHashes/fileHashes.lock b/.gradle/7.6.1/fileHashes/fileHashes.lock index 95e9277..16ef676 100644 Binary files a/.gradle/7.6.1/fileHashes/fileHashes.lock and b/.gradle/7.6.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/7.6.1/fileHashes/resourceHashesCache.bin b/.gradle/7.6.1/fileHashes/resourceHashesCache.bin index 9ec6653..d062252 100644 Binary files a/.gradle/7.6.1/fileHashes/resourceHashesCache.bin and b/.gradle/7.6.1/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 7c2308a..86a1ecb 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index c14cf45..2d706ac 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..7689d03 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Build from windows command line: +## 1. cd /path/to/project +## 2. gradlew.bat build +## 3. find .jar file in build/libs \ No newline at end of file diff --git a/build-old.gradle b/build-old.gradle deleted file mode 100644 index 1fe7ac2..0000000 --- a/build-old.gradle +++ /dev/null @@ -1,89 +0,0 @@ -plugins { - id 'eclipse' - id 'maven-publish' - id 'net.minecraftforge.gradle' version '5.1.+' -} - -version = '1.0' -group = 'com.example.playerstats' -archivesBaseName = 'playerstats' - -java.toolchain.languageVersion = JavaLanguageVersion.of(17) - -minecraft { - mappings channel: 'official', version: '1.18.2' - - runs { - client { - workingDirectory project.file('run') - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'debug' - mods { - playerstats { - source sourceSets.main - } - } - } - - server { - workingDirectory project.file('run') - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'debug' - mods { - playerstats { - source sourceSets.main - } - } - } - - // Add test configuration - gameTestServer { - workingDirectory project.file('run') - property 'forge.logging.markers', 'REGISTRIES' - property 'forge.logging.console.level', 'debug' - mods { - playerstats { - source sourceSets.main - } - } - } - } -} - -dependencies { - minecraft 'net.minecraftforge:forge:1.18.2-40.1.0' - implementation 'mysql:mysql-connector-java:8.0.27' - - // Test dependencies - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' - testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.8.2' - testImplementation 'org.mockito:mockito-core:4.3.1' - testImplementation 'org.mockito:mockito-junit-jupiter:4.3.1' - testImplementation 'org.hamcrest:hamcrest:2.2' -} - -test { - useJUnitPlatform() - testLogging { - events "passed", "skipped", "failed" - } -} - -jar { - manifest { - attributes([ - "Specification-Title": "playerstats", - "Specification-Vendor": "examplemodsareus", - "Specification-Version": "1", - "Implementation-Title": project.name, - "Implementation-Version": project.jar.archiveVersion, - "Implementation-Vendor" :"examplemodsareus", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") - ]) - } -} - -// Add repositories if needed -repositories { - mavenCentral() -} \ No newline at end of file diff --git a/build/classes/java/main/minecraft_mod_player_statistics/src/main/java/DatabaseManager.class b/build/classes/java/main/minecraft_mod_player_statistics/src/main/java/DatabaseManager.class index 9595572..17dc2c1 100644 Binary files a/build/classes/java/main/minecraft_mod_player_statistics/src/main/java/DatabaseManager.class and b/build/classes/java/main/minecraft_mod_player_statistics/src/main/java/DatabaseManager.class differ diff --git a/build/libs/playerstats-1.0.jar b/build/libs/playerstats-1.0.jar index 0015291..8b85e67 100644 Binary files a/build/libs/playerstats-1.0.jar and b/build/libs/playerstats-1.0.jar differ diff --git a/build/reobfJar/log.txt b/build/reobfJar/log.txt index 82067c8..d7db8ff 100644 --- a/build/reobfJar/log.txt +++ b/build/reobfJar/log.txt @@ -3,7 +3,7 @@ Arguments: '--in-jar, C:\Users\edwar\OneDrive\Documents\Minecraft\minecraft_mod_ Classpath: - C:\Users\edwar\.gradle\caches\forge_gradle\maven_downloader\net\md-5\SpecialSource\1.11.0\SpecialSource-1.11.0-shaded.jar - C:\Users\edwar\.gradle\caches\modules-2\files-2.1\mysql\mysql-connector-java\8.0.27\f1da9f10a3de6348725a413304aab6d0aa04f923\mysql-connector-java-8.0.27.jar - - C:\Users\edwar\.gradle\caches\forge_gradle\minecraft_user_repo\net\minecraftforge\forge\1.18.2-40.1.0_mapped_official_1.18.2\forge-1.18.2-40.1.0_mapped_official_1.18.2.jar + - C:\Users\edwar\.gradle\caches\forge_gradle\minecraft_user_repo\net\minecraftforge\forge\1.18.2-40.1.0_mapped_official_1.18.2\forge-1.18.2-40.1.0_mapped_official_1.18.2-recomp.jar - C:\Users\edwar\.gradle\caches\modules-2\files-2.1\com.google.protobuf\protobuf-java\3.11.4\7ec0925cc3aef0335bbc7d57edfd42b0f86f8267\protobuf-java-3.11.4.jar - C:\Users\edwar\.gradle\caches\forge_gradle\minecraft_repo\versions\1.18.2\client-extra.jar - C:\Users\edwar\.gradle\caches\modules-2\files-2.1\net.minecraftforge\fmlloader\1.18.2-40.1.0\842aac12c6cbd1b6dc9dd9ae4e98038e70a2b832\fmlloader-1.18.2-40.1.0.jar diff --git a/build/reobfJar/output.jar b/build/reobfJar/output.jar index 0015291..8b85e67 100644 Binary files a/build/reobfJar/output.jar and b/build/reobfJar/output.jar differ diff --git a/build/reports/tests/test/classes/minecraft_mod_player_statistics.src.test.java.DatabaseManagerTest.html b/build/reports/tests/test/classes/minecraft_mod_player_statistics.src.test.java.DatabaseManagerTest.html index eb37830..50aeb23 100644 --- a/build/reports/tests/test/classes/minecraft_mod_player_statistics.src.test.java.DatabaseManagerTest.html +++ b/build/reports/tests/test/classes/minecraft_mod_player_statistics.src.test.java.DatabaseManagerTest.html @@ -41,7 +41,7 @@
-
0.735s
+
0.756s

duration

@@ -76,7 +76,7 @@ testRecordStat() -0.735s +0.756s passed @@ -89,7 +89,7 @@ Generated by -Gradle 7.6.1 at 3 Dec 2024, 16:06:46

+Gradle 7.6.1 at 4 Dec 2024, 09:29:41

diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html index feb479d..ef4b87f 100644 --- a/build/reports/tests/test/index.html +++ b/build/reports/tests/test/index.html @@ -20,7 +20,7 @@
-
1
+
3

tests

@@ -38,7 +38,7 @@
-
0.735s
+
0.947s

duration

@@ -82,10 +82,10 @@ minecraft_mod_player_statistics.src.test.java -1 +3 0 0 -0.735s +0.947s 100% @@ -107,12 +107,22 @@ +minecraft_mod_player_statistics.src.test.java.DatabaseManagerIntegrationTest + +2 +0 +0 +0.191s +100% + + + minecraft_mod_player_statistics.src.test.java.DatabaseManagerTest 1 0 0 -0.735s +0.756s 100% @@ -126,7 +136,7 @@ Generated by -Gradle 7.6.1 at 3 Dec 2024, 16:06:46

+Gradle 7.6.1 at 4 Dec 2024, 09:29:41

diff --git a/build/reports/tests/test/packages/minecraft_mod_player_statistics.src.test.java.html b/build/reports/tests/test/packages/minecraft_mod_player_statistics.src.test.java.html index 5d44450..c1a86e3 100644 --- a/build/reports/tests/test/packages/minecraft_mod_player_statistics.src.test.java.html +++ b/build/reports/tests/test/packages/minecraft_mod_player_statistics.src.test.java.html @@ -22,7 +22,7 @@
-
1
+
3

tests

@@ -40,7 +40,7 @@
-
0.735s
+
0.947s

duration

@@ -78,12 +78,22 @@ +DatabaseManagerIntegrationTest + +2 +0 +0 +0.191s +100% + + + DatabaseManagerTest 1 0 0 -0.735s +0.756s 100% @@ -96,7 +106,7 @@ Generated by -Gradle 7.6.1 at 3 Dec 2024, 16:06:46

+Gradle 7.6.1 at 4 Dec 2024, 09:29:41

diff --git a/build/test-results/test/TEST-minecraft_mod_player_statistics.src.test.java.DatabaseManagerTest.xml b/build/test-results/test/TEST-minecraft_mod_player_statistics.src.test.java.DatabaseManagerTest.xml index abd1315..77ba1e8 100644 --- a/build/test-results/test/TEST-minecraft_mod_player_statistics.src.test.java.DatabaseManagerTest.xml +++ b/build/test-results/test/TEST-minecraft_mod_player_statistics.src.test.java.DatabaseManagerTest.xml @@ -1,7 +1,7 @@ - + - + diff --git a/build/test-results/test/binary/output.bin b/build/test-results/test/binary/output.bin index e69de29..03fa7b5 100644 Binary files a/build/test-results/test/binary/output.bin and b/build/test-results/test/binary/output.bin differ diff --git a/build/test-results/test/binary/output.bin.idx b/build/test-results/test/binary/output.bin.idx index f76dd23..c5a65dc 100644 Binary files a/build/test-results/test/binary/output.bin.idx and b/build/test-results/test/binary/output.bin.idx differ diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin index 41b2865..e96b9b0 100644 Binary files a/build/test-results/test/binary/results.bin and b/build/test-results/test/binary/results.bin differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/PlayerStatisticsMod$ModEvents.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/PlayerStatisticsMod$ModEvents.class.uniqueId1 deleted file mode 100644 index 635eb0b..0000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/PlayerStatisticsMod$ModEvents.class.uniqueId1 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/PlayerStatisticsMod.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/PlayerStatisticsMod.class.uniqueId0 index d386692..f50d4c4 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/PlayerStatisticsMod.class.uniqueId0 and b/build/tmp/compileJava/compileTransaction/stash-dir/PlayerStatisticsMod.class.uniqueId0 differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index c18f0b3..e399f99 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/DatabaseManagerTest$1.class.uniqueId1 b/build/tmp/compileTestJava/compileTransaction/stash-dir/DatabaseManagerTest$1.class.uniqueId1 index 637ce2f..be760a7 100644 Binary files a/build/tmp/compileTestJava/compileTransaction/stash-dir/DatabaseManagerTest$1.class.uniqueId1 and b/build/tmp/compileTestJava/compileTransaction/stash-dir/DatabaseManagerTest$1.class.uniqueId1 differ diff --git a/build/tmp/compileTestJava/compileTransaction/stash-dir/DatabaseManagerTest.class.uniqueId0 b/build/tmp/compileTestJava/compileTransaction/stash-dir/DatabaseManagerTest.class.uniqueId0 index f8813ea..e8869c0 100644 Binary files a/build/tmp/compileTestJava/compileTransaction/stash-dir/DatabaseManagerTest.class.uniqueId0 and b/build/tmp/compileTestJava/compileTransaction/stash-dir/DatabaseManagerTest.class.uniqueId0 differ diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin index b3e84a5..38f0287 100644 Binary files a/build/tmp/compileTestJava/previous-compilation-data.bin and b/build/tmp/compileTestJava/previous-compilation-data.bin differ diff --git a/build/tmp/jar/MANIFEST.MF b/build/tmp/jar/MANIFEST.MF index c737e92..26653d8 100644 --- a/build/tmp/jar/MANIFEST.MF +++ b/build/tmp/jar/MANIFEST.MF @@ -5,5 +5,5 @@ Specification-Version: 1 Implementation-Title: minecraft_mod_player_statistics Implementation-Version: 1.0 Implementation-Vendor: examplemodsareus -Implementation-Timestamp: 2024-12-03T16:06:41+0000 +Implementation-Timestamp: 2024-12-04T09:29:32+0000 diff --git a/src/main/java/DatabaseManager.java b/src/main/java/DatabaseManager.java index 5b05dc4..e890865 100644 --- a/src/main/java/DatabaseManager.java +++ b/src/main/java/DatabaseManager.java @@ -14,9 +14,9 @@ import java.util.logging.Logger; import java.util.logging.Level; public class DatabaseManager { - private static final String DB_URL = "jdbc:mysql://localhost:3306/minecraft_stats"; + private static final String DB_URL = "jdbc:mysql://localhost:3306/partsltd_dev"; private static final String DB_USER = "root"; - private static final String DB_PASS = "password"; + private static final String DB_PASS = System.getenv("DB_PASSWORD"); // "password"; private static final Logger LOGGER = Logger.getLogger(DatabaseManager.class.getName()); public Connection getConnection() throws SQLException { diff --git a/src/test/java/DatabaseManagerIntegrationTest.java b/src/test/java/DatabaseManagerIntegrationTest.java new file mode 100644 index 0000000..a121c7f --- /dev/null +++ b/src/test/java/DatabaseManagerIntegrationTest.java @@ -0,0 +1,92 @@ +package minecraft_mod_player_statistics.src.test.java; + +import minecraft_mod_player_statistics.src.main.java.DatabaseManager; +import org.junit.jupiter.api.*; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.UUID; + +public class DatabaseManagerIntegrationTest { + private static DatabaseManager dbManager; + private static final UUID TEST_PLAYER_UUID = UUID.randomUUID(); + private static final String TEST_STAT_TYPE = "integration_test_stat"; + private static final String TEST_BLOCK_ID = "minecraft:test_block"; + private static final int TEST_VALUE = 42; + + @BeforeAll + static void setUp() { + dbManager = new DatabaseManager(); + // Initialize database schema + dbManager.initializeDatabase(); + } + + @BeforeEach + void cleanupTestData() throws SQLException { + // Clean up any test data before each test + try (Connection conn = dbManager.getConnection(); + PreparedStatement stmt = conn.prepareStatement( + "DELETE FROM player_stats WHERE stat_type = ?")) { + stmt.setString(1, TEST_STAT_TYPE); + stmt.executeUpdate(); + } + } + + @Test + void testDatabaseConnection() throws SQLException { + // Test basic connection + try (Connection conn = dbManager.getConnection()) { + Assertions.assertTrue(conn.isValid(5)); + } + } + + @Test + void testRecordAndRetrieveStat() throws SQLException { + // Record a test statistic + dbManager.recordStat(TEST_PLAYER_UUID, TEST_STAT_TYPE, TEST_VALUE, TEST_BLOCK_ID); + + // Verify the recorded data + try (Connection conn = dbManager.getConnection(); + PreparedStatement stmt = conn.prepareStatement( + "SELECT * FROM player_stats WHERE player_uuid = ? AND stat_type = ?")) { + + stmt.setString(1, TEST_PLAYER_UUID.toString()); + stmt.setString(2, TEST_STAT_TYPE); + + ResultSet rs = stmt.executeQuery(); + + Assertions.assertTrue(rs.next(), "Stat record should exist"); + Assertions.assertEquals(TEST_PLAYER_UUID.toString(), rs.getString("player_uuid")); + Assertions.assertEquals(TEST_STAT_TYPE, rs.getString("stat_type")); + Assertions.assertEquals(TEST_VALUE, rs.getInt("stat_value")); + Assertions.assertEquals(TEST_BLOCK_ID, rs.getString("item_id")); + Assertions.assertNotNull(rs.getTimestamp("timestamp")); + + Assertions.assertFalse(rs.next(), "Should only have one matching record"); + } + } + + @AfterEach + void tearDownEach() throws SQLException { + // Clean up test data after each test + try (Connection conn = dbManager.getConnection(); + PreparedStatement stmt = conn.prepareStatement( + "DELETE FROM player_stats WHERE stat_type = ?")) { + stmt.setString(1, TEST_STAT_TYPE); + stmt.executeUpdate(); + } + } + + @AfterAll + static void tearDown() throws SQLException { + // Perform any final cleanup if needed + try (Connection conn = dbManager.getConnection(); + PreparedStatement stmt = conn.prepareStatement( + "DELETE FROM player_stats WHERE stat_type = ?")) { + stmt.setString(1, TEST_STAT_TYPE); + stmt.executeUpdate(); + } + } +} \ No newline at end of file