mirror of
https://github.com/GeorgH93/Minepacks.git
synced 2024-12-04 14:03:24 +01:00
Fix cooldown sync
This commit is contained in:
parent
35ff602839
commit
2ea150075d
@ -7,7 +7,6 @@ Language:
|
||||
# Options:
|
||||
# Overwrite (deletes all changes from the file and extracts a new language file)
|
||||
# Upgrade (extracts a new language file and copy's all settings from the old language file)
|
||||
# Update (adds the default (english) text values for all missing values, just some basic formatting)
|
||||
UpdateMode: Upgrade
|
||||
|
||||
# Title to be shown for the opened inventory for everyone except the owner of the backpack. Can contain {OwnerName} (which will be replaced with the players name).
|
||||
|
@ -124,10 +124,10 @@ public void loadPlayer(final @NotNull MinepacksPlayerData player)
|
||||
bp = new Backpack(player, backpackFile.getItemStacks()[0]);
|
||||
}
|
||||
if(bp == null) bp = new Backpack(player);
|
||||
player.setLoaded(file);
|
||||
player.setLoaded(file, 0);
|
||||
player.setBackpack(bp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadBackpack(@NotNull MinepacksPlayerData player) {} // Already loaded with the player
|
||||
public void loadBackpack(final @NotNull MinepacksPlayerData player) {} // Already loaded with the player
|
||||
}
|
@ -46,7 +46,7 @@ public abstract class SQL extends DatabaseBackend
|
||||
protected String fieldCdPlayer = "id", fieldCdTime = "time"; // Table Fields
|
||||
|
||||
@Language("SQL") protected String queryUpdatePlayerAdd, queryInsertBp, queryUpdateBp, queryGetPlayer, queryGetBP, queryDeleteOldBackpacks, queryGetUnsetOrInvalidUUIDs, queryFixUUIDs; // DB Querys
|
||||
@Language("SQL") protected String queryDeleteOldCooldowns, querySyncCooldown, queryGetCooldown; // DB Querys
|
||||
@Language("SQL") protected String queryDeleteOldCooldowns, querySyncCooldown; // DB Querys
|
||||
protected boolean syncCooldown;
|
||||
|
||||
public SQL(@NotNull Minepacks plugin, @NotNull ConnectionProvider connectionProvider)
|
||||
@ -185,11 +185,12 @@ public Connection getConnection() throws SQLException
|
||||
protected final void buildQueries()
|
||||
{
|
||||
// Build the SQL queries with placeholders for the table and field names
|
||||
queryGetPlayer = "SELECT * FROM {TablePlayers} WHERE {FieldUUID}=?;";
|
||||
queryGetPlayer = "SELECT * FROM {TablePlayers}" +
|
||||
(syncCooldown ? " LEFT JOIN {TableCooldowns} ON {TablePlayers}.{FieldPlayerID} = {TableCooldowns}.{FieldCDPlayer}" : "") +
|
||||
" WHERE {FieldUUID}=?;";
|
||||
queryUpdatePlayerAdd = "INSERT INTO {TablePlayers} ({FieldName},{FieldUUID}) VALUES (?,?) ON DUPLICATE KEY UPDATE {FieldName}=?;";
|
||||
queryGetBP = "SELECT * FROM {TableBackpacks} WHERE {FieldBPOwner}=?;";
|
||||
queryGetCooldown = "SELECT * FROM {TableCooldowns} WHERE {FieldCDPlayer} IN (SELECT {FieldPlayerID} FROM {TablePlayers} WHERE {FieldUUID}=?);";
|
||||
querySyncCooldown = "INSERT INTO {TableCooldowns} ({FieldCDPlayer},{FieldCDTime}) SELECT {FieldPlayerID},? FROM {TablePlayers} WHERE {FieldUUID}=? ON DUPLICATE KEY UPDATE {FieldCDTime}=?;";
|
||||
querySyncCooldown = "INSERT INTO {TableCooldowns} ({FieldCDPlayer},{FieldCDTime}) VALUE (?,?) ON DUPLICATE KEY UPDATE {FieldCDTime}=?;";
|
||||
queryDeleteOldCooldowns = "DELETE FROM {TableCooldowns} WHERE {FieldCDTime}<?;";
|
||||
queryInsertBp = "REPLACE INTO {TableBackpacks} ({FieldBPOwner},{FieldBPITS},{FieldBPVersion}) VALUES (?,?,?);";
|
||||
queryUpdateBp = "UPDATE {TableBackpacks} SET {FieldBPITS}=?,{FieldBPVersion}=?,{FieldBPLastUpdate}={NOW} WHERE {FieldBPOwner}=?;";
|
||||
@ -221,7 +222,6 @@ protected void setTableAndFieldNames()
|
||||
queryDeleteOldBackpacks = replacePlaceholders(queryDeleteOldBackpacks.replaceAll("\\{VarMaxAge}", maxAge + ""));
|
||||
queryGetUnsetOrInvalidUUIDs = replacePlaceholders(queryGetUnsetOrInvalidUUIDs);
|
||||
querySyncCooldown = replacePlaceholders(querySyncCooldown);
|
||||
queryGetCooldown = replacePlaceholders(queryGetCooldown);
|
||||
queryDeleteOldCooldowns = replacePlaceholders(queryDeleteOldCooldowns);
|
||||
}
|
||||
|
||||
@ -277,7 +277,10 @@ public void loadPlayer(final @NotNull MinepacksPlayerData player)
|
||||
if(rs.next())
|
||||
{
|
||||
final int id = rs.getInt(fieldPlayerID);
|
||||
plugin.getServer().getScheduler().runTask(plugin, () -> player.setLoaded(id));
|
||||
long cooldown = 0;
|
||||
if(syncCooldown) cooldown = rs.getTimestamp(fieldCdPlayer).getTime();
|
||||
final long cd = cooldown;
|
||||
plugin.getServer().getScheduler().runTask(plugin, () -> player.setLoaded(id, cd));
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -349,6 +352,6 @@ public void saveBackpack(final @NotNull Backpack backpack)
|
||||
public void saveCooldown(final @NotNull MinepacksPlayerData player)
|
||||
{
|
||||
final Timestamp ts = new Timestamp(player.getCooldown());
|
||||
runStatementAsync(querySyncCooldown, ts, formatUUID(player.getUUID()), ts);
|
||||
runStatementAsync(querySyncCooldown, player.getDatabaseKey(), ts, ts);
|
||||
}
|
||||
}
|
@ -57,7 +57,8 @@ protected void loadSettings()
|
||||
fieldBpIts = "itemstacks";
|
||||
// Set fixed settings
|
||||
useUUIDSeparators = false;
|
||||
syncCooldown = false;
|
||||
|
||||
tableCooldowns = "minepacks_cooldown";
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -94,6 +95,8 @@ protected void checkDB()
|
||||
|
||||
stmt.execute("CREATE TABLE IF NOT EXISTS `backpack_players` (`player_id` INT UNSIGNED PRIMARY KEY AUTOINCREMENT, `name` CHAR(16) NOT NULL , `uuid` CHAR(32) UNIQUE);");
|
||||
stmt.execute("CREATE TABLE IF NOT EXISTS `backpacks` (`owner` INT UNSIGNED PRIMARY KEY, `itemstacks` BLOB, `version` INT DEFAULT 0, `lastupdate` DATE DEFAULT CURRENT_DATE);");
|
||||
stmt.execute("CREATE TABLE IF NOT EXISTS `minepacks_cooldown` (`id` INT UNSIGNED PRIMARY KEY, `time` UNSIGNED BIG INT NOT NULL, " +
|
||||
"CONSTRAINT fk_minepacks_cooldown_minepacks_players FOREIGN KEY (id) REFERENCES backpack_players (player_id) ON DELETE CASCADE ON UPDATE CASCADE);");
|
||||
|
||||
DBTools.runStatement(connection, "INSERT OR REPLACE INTO `minepacks_metadata` (`key`, `value`) VALUES ('db_version',?);", plugin.getDescription().getVersion());
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ public void writeBackup(@Nullable String userName, @NotNull String userIdentifie
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> getBackups()
|
||||
public @NotNull List<String> getBackups()
|
||||
{
|
||||
File[] files = backupFolder.listFiles((dir, name) -> name.endsWith(Files.EXT));
|
||||
if(files != null)
|
||||
@ -120,6 +120,6 @@ public List<String> getBackups()
|
||||
}
|
||||
return backups;
|
||||
}
|
||||
return new ArrayList<>();
|
||||
return new ArrayList<>(0);
|
||||
}
|
||||
}
|
@ -138,7 +138,7 @@ public void backup(@NotNull Backpack backpack)
|
||||
return backupHandler.loadBackup(backupName);
|
||||
}
|
||||
|
||||
public List<String> getBackups()
|
||||
public @NotNull List<String> getBackups()
|
||||
{
|
||||
return backupHandler.getBackups();
|
||||
}
|
||||
|
@ -79,9 +79,10 @@ public void setBackpack(final @NotNull Backpack backpack)
|
||||
backpackLoadedQueue.forEach(backpackCallback -> backpackCallback.onResult(backpack));
|
||||
}
|
||||
|
||||
public void setLoaded(final @NotNull Object databaseKey)
|
||||
public void setLoaded(final @NotNull Object databaseKey, final long cooldown)
|
||||
{
|
||||
this.databaseKey = databaseKey;
|
||||
this.cooldown = cooldown;
|
||||
playerLoadedQueue.forEach(loadedCallback -> loadedCallback.onResult(this));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user