From b302f36998d06e7c679d67db8af9d4e63402525d Mon Sep 17 00:00:00 2001 From: Esophose Date: Thu, 1 Nov 2018 20:25:48 -0600 Subject: [PATCH] Fix potential concurrentmodificationexception, fix foreign key constraint being linked before the table exists --- src/com/esophose/playerparticles/PlayerParticles.java | 4 ++-- src/com/esophose/playerparticles/manager/DataManager.java | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/com/esophose/playerparticles/PlayerParticles.java b/src/com/esophose/playerparticles/PlayerParticles.java index 4d55276..05e7ef4 100644 --- a/src/com/esophose/playerparticles/PlayerParticles.java +++ b/src/com/esophose/playerparticles/PlayerParticles.java @@ -209,9 +209,9 @@ public class PlayerParticles extends JavaPlugin { // Try to create the tables just in case they don't exist try (Statement createStatement = connection.createStatement()) { + createStatement.addBatch("CREATE TABLE IF NOT EXISTS pp_particle (uuid VARCHAR(36), group_uuid VARCHAR(36), id SMALLINT, effect VARCHAR(100), style VARCHAR(100), item_material VARCHAR(100), block_material VARCHAR(100), note SMALLINT, r SMALLINT, g SMALLINT, b SMALLINT, PRIMARY KEY(uuid))"); createStatement.addBatch("CREATE TABLE IF NOT EXISTS pp_group (uuid VARCHAR(36), owner_uuid VARCHAR(36), name VARCHAR(100), PRIMARY KEY(uuid))"); createStatement.addBatch("CREATE TABLE IF NOT EXISTS pp_fixed (owner_uuid VARCHAR(36), id SMALLINT, particle_uuid VARCHAR(36), world VARCHAR(100), xPos DOUBLE, yPos DOUBLE, zPos DOUBLE, PRIMARY KEY(owner_uuid, id), FOREIGN KEY(particle_uuid) REFERENCES pp_particle(uuid))"); - createStatement.addBatch("CREATE TABLE IF NOT EXISTS pp_particle (uuid VARCHAR(36), group_uuid VARCHAR(36), id SMALLINT, effect VARCHAR(100), style VARCHAR(100), item_material VARCHAR(100), block_material VARCHAR(100), note SMALLINT, r SMALLINT, g SMALLINT, b SMALLINT, PRIMARY KEY(uuid))"); int[] results = createStatement.executeBatch(); if (results[0] + results[1] + results[2] > 0) { getLogger().warning("Updated " + (useMySql ? "MySQL" : "SQLite") + " database schema."); @@ -238,7 +238,7 @@ public class PlayerParticles extends JavaPlugin { new BukkitRunnable() { public void run() { long ticks = PSetting.TICKS_PER_PARTICLE.getLong(); - particleTask = new ParticleManager().runTaskTimer(playerParticles, 0, ticks); + particleTask = new ParticleManager().runTaskTimer(playerParticles, 5, ticks); } }.runTaskLater(playerParticles, 1); } diff --git a/src/com/esophose/playerparticles/manager/DataManager.java b/src/com/esophose/playerparticles/manager/DataManager.java index 06483d2..9ba6f03 100644 --- a/src/com/esophose/playerparticles/manager/DataManager.java +++ b/src/com/esophose/playerparticles/manager/DataManager.java @@ -173,7 +173,9 @@ public class DataManager { ResultSet result = statement.executeQuery(); while (result.next()) { UUID playerUUID = UUID.fromString(result.getString("owner_uuid")); - getPPlayer(playerUUID, (pplayer) -> { }); + sync(() -> { + getPPlayer(playerUUID, (pplayer) -> { }); + }); } } });