diff --git a/build.gradle b/build.gradle index f351a3080..64d2d22a5 100644 --- a/build.gradle +++ b/build.gradle @@ -136,7 +136,7 @@ dependencies { // Tests testImplementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21' - testImplementation 'org.mockbukkit.mockbukkit:mockbukkit-v1.21:4.22.2' + testImplementation 'org.mockbukkit.mockbukkit:mockbukkit-v1.21:4.24.1' testImplementation('com.googlecode.json-simple:json-simple:1.1.1') { exclude group: 'junit', module: 'junit' } diff --git a/src/main/java/org/mvplugins/multiverse/core/world/helpers/DataStore.java b/src/main/java/org/mvplugins/multiverse/core/world/helpers/DataStore.java index 51ab7f0f8..20bf5497e 100644 --- a/src/main/java/org/mvplugins/multiverse/core/world/helpers/DataStore.java +++ b/src/main/java/org/mvplugins/multiverse/core/world/helpers/DataStore.java @@ -57,6 +57,7 @@ public GameRulesStore copyFrom(LoadedMultiverseWorld world) { gameRuleMap.put(gameRuleEnum, bukkitWorld.getGameRuleValue(gameRuleEnum)); } }); + Logging.finer("Copied " + gameRuleMap.size() + " game rules from world " + world.getName()); return this; } diff --git a/src/test/java/org/mvplugins/multiverse/core/commands/RegenCommandTest.kt b/src/test/java/org/mvplugins/multiverse/core/commands/RegenCommandTest.kt new file mode 100644 index 000000000..649f4531a --- /dev/null +++ b/src/test/java/org/mvplugins/multiverse/core/commands/RegenCommandTest.kt @@ -0,0 +1,119 @@ +package org.mvplugins.multiverse.core.commands + +import org.bukkit.Bukkit +import org.bukkit.GameRule +import org.mvplugins.multiverse.core.world.LoadedMultiverseWorld +import org.mvplugins.multiverse.core.world.options.CreateWorldOptions +import kotlin.test.* + +class RegenCommandTest : AbstractWorldCommandTest() { + + private lateinit var testWorld : LoadedMultiverseWorld + + @BeforeTest + fun setUp() { + testWorld = worldManager.createWorld(CreateWorldOptions.worldName("test")).get() + } + + @Test + fun `Regen world`() { + val previousUID = testWorld.uid + val previousSeed = testWorld.seed + testWorld.scale = 69.5 + testWorld.bukkitWorld.map { + it.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false) + } + testWorld.bukkitWorld.map { + it.worldBorder.size = 123.4 + } + assertTrue(Bukkit.dispatchCommand(console, "mv regen test")) + assertTrue(Bukkit.dispatchCommand(console, "mv confirm")) + + val newWorld = worldManager.getLoadedWorld("test").orNull + + assertNotNull(newWorld) + assertNotEquals(previousUID, newWorld.uid) + assertEquals(previousSeed, newWorld.seed) + assertEquals(69.5, newWorld.scale) + assertEquals(false, newWorld.bukkitWorld.map { it.getGameRuleValue(GameRule.DO_DAYLIGHT_CYCLE) }.orNull) + assertEquals(123.4, newWorld.bukkitWorld.map { it.worldBorder.size }.orNull) + } + + @Test + fun `Regen world with specific seed`() { + val previousUID = testWorld.uid + + assertTrue(Bukkit.dispatchCommand(console, "mv regen test --seed 456")) + assertTrue(Bukkit.dispatchCommand(console, "mv confirm")) + + val newWorld = worldManager.getLoadedWorld("test").orNull + + assertNotNull(newWorld) + assertNotEquals(previousUID, newWorld.uid) + assertEquals(456, newWorld.seed) + } + + @Test + fun `Regen world with random seed`() { + val previousUID = testWorld.uid + val previousSeed = testWorld.seed + + assertTrue(Bukkit.dispatchCommand(console, "mv regen test --seed")) + assertTrue(Bukkit.dispatchCommand(console, "mv confirm")) + + val newWorld = worldManager.getLoadedWorld("test").orNull + + assertNotNull(newWorld) + assertNotEquals(previousUID, newWorld.uid) + assertNotEquals(previousSeed, newWorld.seed) + } + + @Test + fun `Regen world and reset world config`() { + val previousUID = testWorld.uid + testWorld.scale = 69.5 + + assertTrue(Bukkit.dispatchCommand(console, "mv regen test --reset-world-config")) + assertTrue(Bukkit.dispatchCommand(console, "mv confirm")) + + val newWorld = worldManager.getLoadedWorld("test").orNull + + assertNotNull(newWorld) + assertNotEquals(previousUID, newWorld.uid) + assertEquals(1.0, newWorld.scale) + } + + @Test + fun `Regen world and reset gamerules`() { + val previousUID = testWorld.uid + testWorld.bukkitWorld.map { + it.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false) + } + + assertTrue(Bukkit.dispatchCommand(console, "mv regen test --reset-gamerules")) + assertTrue(Bukkit.dispatchCommand(console, "mv confirm")) + + val newWorld = worldManager.getLoadedWorld("test").orNull + + assertNotNull(newWorld) + assertNotEquals(previousUID, newWorld.uid) + assertEquals(true, newWorld.bukkitWorld.map { it.getGameRuleValue(GameRule.DO_DAYLIGHT_CYCLE) }.orNull) + } + + @Test + fun `Regen world and reset world border`() { + val previousUID = testWorld.uid + testWorld.bukkitWorld.map { + it.worldBorder.size = 123.4 + } + + assertTrue(Bukkit.dispatchCommand(console, "mv regen test --reset-world-border")) + assertTrue(Bukkit.dispatchCommand(console, "mv confirm")) + + val newWorld = worldManager.getLoadedWorld("test").orNull + + assertNotNull(newWorld) + assertNotEquals(previousUID, newWorld.uid) + assertEquals(6.0E7, newWorld.bukkitWorld.map { it.worldBorder.size }.orNull) + } +}