diff --git a/common/build.gradle b/common/build.gradle index 35a0c078..27584be3 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -16,6 +16,7 @@ dependencies { testImplementation 'org.xerial.snappy:snappy-java:1.1.8.4' testImplementation 'com.github.plan-player-analytics:Plan:5.4.1690' + testCompileOnly 'dev.dejvokep:boosted-yaml:1.3' testCompileOnly 'org.jetbrains:annotations:23.0.0' } 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 cf171028..3453033b 100644 --- a/common/src/main/java/net/william278/husksync/config/Settings.java +++ b/common/src/main/java/net/william278/husksync/config/Settings.java @@ -4,10 +4,7 @@ import dev.dejvokep.boostedyaml.YamlDocument; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; +import java.util.*; /** * Settings used for the plugin, as read from the config file @@ -17,7 +14,7 @@ public class Settings { /** * Map of {@link ConfigOption}s read from the config file */ - private final HashMap configOptions; + private final Map configOptions; // Load the settings from the document private Settings(@NotNull YamlDocument config) { @@ -33,6 +30,11 @@ public class Settings { })); } + // Default constructor for empty settings + protected Settings(@NotNull Map configOptions) { + this.configOptions = configOptions; + } + /** * Get the value of the specified {@link ConfigOption} * diff --git a/common/src/test/java/net/william278/husksync/config/DummySettings.java b/common/src/test/java/net/william278/husksync/config/DummySettings.java new file mode 100644 index 00000000..bfef0804 --- /dev/null +++ b/common/src/test/java/net/william278/husksync/config/DummySettings.java @@ -0,0 +1,17 @@ +package net.william278.husksync.config; + +import org.jetbrains.annotations.NotNull; + +import java.util.Map; + +public class DummySettings extends Settings { + private DummySettings(@NotNull Map settings) { + super(settings); + } + + public static DummySettings get() { + return new DummySettings(Map.of( + ConfigOption.SYNCHRONIZATION_SAVE_DEAD_PLAYER_INVENTORIES, true + )); + } +} diff --git a/common/src/test/java/net/william278/husksync/data/DataAdaptionTests.java b/common/src/test/java/net/william278/husksync/data/DataAdaptionTests.java index df29df66..58a49e81 100644 --- a/common/src/test/java/net/william278/husksync/data/DataAdaptionTests.java +++ b/common/src/test/java/net/william278/husksync/data/DataAdaptionTests.java @@ -1,21 +1,17 @@ package net.william278.husksync.data; +import net.william278.husksync.config.DummySettings; import net.william278.husksync.logger.DummyLogger; import net.william278.husksync.player.DummyPlayer; import net.william278.husksync.player.OnlineUser; -import net.william278.husksync.player.User; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; import java.util.HashMap; -import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; -import static java.util.Map.*; - /** * Tests for the data system {@link DataAdapter} */ @@ -25,7 +21,7 @@ public class DataAdaptionTests { public void testJsonDataAdapter() { final OnlineUser dummyUser = DummyPlayer.create(); final AtomicBoolean isEquals = new AtomicBoolean(false); - dummyUser.getUserData(new DummyLogger()).join().ifPresent(dummyUserData -> { + dummyUser.getUserData(new DummyLogger(), DummySettings.get()).join().ifPresent(dummyUserData -> { final DataAdapter dataAdapter = new JsonDataAdapter(); final byte[] data = dataAdapter.toBytes(dummyUserData); final UserData deserializedUserData = dataAdapter.fromBytes(data); @@ -53,7 +49,7 @@ public class DataAdaptionTests { final OnlineUser dummyUser = DummyPlayer.create(); final String expectedJson = "{\"status\":{\"health\":20.0,\"max_health\":20.0,\"health_scale\":0.0,\"hunger\":20,\"saturation\":5.0,\"saturation_exhaustion\":5.0,\"selected_item_slot\":1,\"total_experience\":100,\"experience_level\":1,\"experience_progress\":1.0,\"game_mode\":\"SURVIVAL\",\"is_flying\":false},\"inventory\":{\"serialized_items\":\"\"},\"ender_chest\":{\"serialized_items\":\"\"},\"potion_effects\":{\"serialized_potion_effects\":\"\"},\"advancements\":[],\"statistics\":{\"untyped_statistics\":{},\"block_statistics\":{},\"item_statistics\":{},\"entity_statistics\":{}},\"location\":{\"world_name\":\"dummy_world\",\"world_uuid\":\"00000000-0000-0000-0000-000000000000\",\"world_environment\":\"NORMAL\",\"x\":0.0,\"y\":64.0,\"z\":0.0,\"yaw\":90.0,\"pitch\":180.0},\"persistent_data_container\":{\"persistent_data_map\":{}},\"minecraft_version\":\"1.19-beta123456\",\"format_version\":2}"; AtomicReference json = new AtomicReference<>(); - dummyUser.getUserData(new DummyLogger()).join().ifPresent(dummyUserData -> { + dummyUser.getUserData(new DummyLogger(), DummySettings.get()).join().ifPresent(dummyUserData -> { final DataAdapter dataAdapter = new JsonDataAdapter(); final byte[] data = dataAdapter.toBytes(dummyUserData); json.set(new String(data, StandardCharsets.UTF_8)); @@ -65,7 +61,7 @@ public class DataAdaptionTests { public void testCompressedDataAdapter() { final OnlineUser dummyUser = DummyPlayer.create(); AtomicBoolean isEquals = new AtomicBoolean(false); - dummyUser.getUserData(new DummyLogger()).join().ifPresent(dummyUserData -> { + dummyUser.getUserData(new DummyLogger(), DummySettings.get()).join().ifPresent(dummyUserData -> { final DataAdapter dataAdapter = new CompressedDataAdapter(); final byte[] data = dataAdapter.toBytes(dummyUserData); final UserData deserializedUserData = dataAdapter.fromBytes(data); diff --git a/common/src/test/java/net/william278/husksync/player/DummyPlayer.java b/common/src/test/java/net/william278/husksync/player/DummyPlayer.java index f4f3053f..c8cb46c3 100644 --- a/common/src/test/java/net/william278/husksync/player/DummyPlayer.java +++ b/common/src/test/java/net/william278/husksync/player/DummyPlayer.java @@ -155,4 +155,9 @@ public class DummyPlayer extends OnlineUser { // do nothing } + @Override + public boolean isDead() { + return false; + } + }