Prevent synchronisation of newer user data formats, tweak error messages

feat/data-edit-commands
William 3 years ago
parent fc6a760848
commit e4262abfd7

@ -15,7 +15,7 @@ public class UserData {
* </p> * </p>
* This value is to be incremented whenever the format changes. * This value is to be incremented whenever the format changes.
*/ */
private static final int CURRENT_FORMAT_VERSION = 1; public static final int CURRENT_FORMAT_VERSION = 1;
/** /**
* Stores the user's status data, including health, food, etc. * Stores the user's status data, including health, food, etc.
@ -136,4 +136,8 @@ public class UserData {
return minecraftVersion; return minecraftVersion;
} }
public int getFormatVersion() {
return formatVersion;
}
} }

@ -175,13 +175,22 @@ public abstract class OnlineUser extends User {
@NotNull EventCannon eventCannon, @NotNull Logger logger, @NotNull EventCannon eventCannon, @NotNull Logger logger,
@NotNull Version serverMinecraftVersion) { @NotNull Version serverMinecraftVersion) {
return CompletableFuture.supplyAsync(() -> { return CompletableFuture.supplyAsync(() -> {
// Prevent synchronizing newer versions of Minecraft // Prevent synchronising user data from newer versions of Minecraft
if (Version.minecraftVersion(data.getMinecraftVersion()).compareTo(serverMinecraftVersion) > 0) { if (Version.minecraftVersion(data.getMinecraftVersion()).compareTo(serverMinecraftVersion) > 0) {
logger.log(Level.SEVERE, "Cannot set data for player " + username + " with Minecraft version \"" logger.log(Level.SEVERE, "Cannot set data for " + username +
+ data.getMinecraftVersion() + "\" because it is newer than the server's version, \"" " because the Minecraft version of their user data (" + data.getMinecraftVersion() +
+ serverMinecraftVersion + "\""); ") is newer than the server's Minecraft version (" + serverMinecraftVersion + ").");
return false; return false;
} }
// Prevent synchronising user data from newer versions of the plugin
if (data.getFormatVersion() > UserData.CURRENT_FORMAT_VERSION) {
logger.log(Level.SEVERE, "Cannot set data for " + username +
" because the format version of their user data (v" + data.getFormatVersion() +
") is newer than the current format version (v" + UserData.CURRENT_FORMAT_VERSION + ").");
return false;
}
// Fire the PreSyncEvent
final PreSyncEvent preSyncEvent = (PreSyncEvent) eventCannon.firePreSyncEvent(this, data).join(); final PreSyncEvent preSyncEvent = (PreSyncEvent) eventCannon.firePreSyncEvent(this, data).join();
final UserData finalData = preSyncEvent.getUserData(); final UserData finalData = preSyncEvent.getUserData();
final List<CompletableFuture<Void>> dataSetOperations = new ArrayList<>() {{ final List<CompletableFuture<Void>> dataSetOperations = new ArrayList<>() {{

Loading…
Cancel
Save