diff --git a/common/src/main/java/net/william278/husksync/config/Settings.java b/common/src/main/java/net/william278/husksync/config/Settings.java index 9a826984..a1fc1d16 100644 --- a/common/src/main/java/net/william278/husksync/config/Settings.java +++ b/common/src/main/java/net/william278/husksync/config/Settings.java @@ -150,7 +150,7 @@ public class Settings { } } - // 𝓡𝓮𝓭𝓲𝓼 settings + // Redis settings @Comment("Redis settings") private RedisSettings redis = new RedisSettings(); @@ -321,6 +321,9 @@ public class Settings { @Getter(AccessLevel.NONE) private Map eventPriorities = EventListener.ListenerType.getDefaults(); + @Comment("Enable checkin petitions for data syncing (experimental)") + private boolean checkinPetitions = false; + public boolean doAutoPin(@NotNull DataSnapshot.SaveCause cause) { return autoPinnedSaveCauses.contains(cause.name()); } diff --git a/common/src/main/java/net/william278/husksync/redis/RedisManager.java b/common/src/main/java/net/william278/husksync/redis/RedisManager.java index fe289edf..7faafb97 100644 --- a/common/src/main/java/net/william278/husksync/redis/RedisManager.java +++ b/common/src/main/java/net/william278/husksync/redis/RedisManager.java @@ -177,7 +177,8 @@ public class RedisManager extends JedisPubSub { ).dispatch(plugin, RedisMessage.Type.RETURN_USER_DATA) ); case CHECK_IN_PETITION -> { - if (!redisMessage.isTargetServer(plugin)) { + if (!redisMessage.isTargetServer(plugin) + || !plugin.getSettings().getSynchronization().isCheckinPetitions()) { return; } final String payload = new String(redisMessage.getPayload(), StandardCharsets.UTF_8); diff --git a/common/src/main/java/net/william278/husksync/sync/LockstepDataSyncer.java b/common/src/main/java/net/william278/husksync/sync/LockstepDataSyncer.java index 55363d1b..26c76fc8 100644 --- a/common/src/main/java/net/william278/husksync/sync/LockstepDataSyncer.java +++ b/common/src/main/java/net/william278/husksync/sync/LockstepDataSyncer.java @@ -53,7 +53,8 @@ public class LockstepDataSyncer extends DataSyncer { // If they are checked out, ask the server to check them back in and return false final Optional server = getRedis().getUserCheckedOut(user); - if (server.isPresent() && !server.get().equals(plugin.getServerName())) { + if (plugin.getSettings().getSynchronization().isCheckinPetitions() + && server.isPresent() && !server.get().equals(plugin.getServerName())) { getRedis().petitionServerCheckin(server.get(), user); return false; }