diff --git a/pom.xml b/pom.xml index 2fc9cb7..34e9eb8 100644 --- a/pom.xml +++ b/pom.xml @@ -30,13 +30,13 @@ me.ohowe12 SpectatorMode - 2.1.9 + 2.2.0 jar SpectatorMode - 16 + 17 UTF-8 @@ -176,7 +176,7 @@ org.spigotmc spigot-api - 1.17.1-R0.1-SNAPSHOT + 1.18.1-R0.1-SNAPSHOT provided @@ -194,7 +194,7 @@ org.junit.jupiter junit-jupiter-engine - 5.8.0 + 5.8.2 test @@ -211,8 +211,8 @@ com.github.seeseemelk - MockBukkit-v1.17 - 1.10.0 + MockBukkit-v1.18 + 1.15.5 test diff --git a/src/main/java/me/ohowe12/spectatormode/SpectatorManager.java b/src/main/java/me/ohowe12/spectatormode/SpectatorManager.java index a4feb16..2dd2085 100644 --- a/src/main/java/me/ohowe12/spectatormode/SpectatorManager.java +++ b/src/main/java/me/ohowe12/spectatormode/SpectatorManager.java @@ -125,7 +125,7 @@ public void toggleToSpectator(Player target, boolean forced, boolean messagesFor } public void toggleToSurvival(Player target, boolean messagesForcedSilenced) { - plugin.getPluginLogger().debugLog("Toggling" + target.getName() + " to survival mode"); + plugin.getPluginLogger().debugLog("Toggling " + target.getName() + " to survival mode"); if (stateHolder.hasPlayer(target)) { removeSpectatorEffects(target); @@ -133,10 +133,15 @@ public void toggleToSurvival(Player target, boolean messagesForcedSilenced) { stateHolder.removePlayer(target); removeFromKicker(target); - target.setGameMode(GameMode.SURVIVAL); - stateHolder.save(); + String switchTo = plugin.getConfigManager().getString("switch-back-to"); + switch (switchTo) { + case "adventure" -> target.setGameMode(GameMode.ADVENTURE); + case "creative" -> target.setGameMode(GameMode.CREATIVE); + default -> target.setGameMode(GameMode.SURVIVAL); + } + stateHolder.save(); sendMessageIfNotSilenced(target, GameMode.SURVIVAL, messagesForcedSilenced); } else { Messenger.send(target, "not-in-state-message"); @@ -202,8 +207,7 @@ private void removeLeads(Player target) { .map(entity -> (LivingEntity) entity) .filter(LivingEntity::isLeashed) .filter(entity -> entity.getLeashHolder() instanceof Player) - .filter(entity -> entity.getLeashHolder().equals(target)) - .collect(Collectors.toList()); + .filter(entity -> entity.getLeashHolder().equals(target)).toList(); for (LivingEntity entity : leads) { entity.setLeashHolder(null); HashMap failedItems = diff --git a/src/main/java/me/ohowe12/spectatormode/util/Messenger.java b/src/main/java/me/ohowe12/spectatormode/util/Messenger.java index d609d1d..0e6b341 100644 --- a/src/main/java/me/ohowe12/spectatormode/util/Messenger.java +++ b/src/main/java/me/ohowe12/spectatormode/util/Messenger.java @@ -34,7 +34,7 @@ import java.util.Objects; -public abstract class Messenger { +public class Messenger { private static SpectatorMode plugin; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 6cb2089..32310f6 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -96,6 +96,9 @@ spectator-ticks: -1 # if you don't want players to enter vanish when using spectator mode with /gamemode, disable watch-gamemode supervanish-hook: false +# What game mode to change back to. options: survival, creative, adventure +switch-back-to: survival + ### Message section ### #Adding /actionbar/ in front of a message, will make it appear in the actionbar instead of the chat diff --git a/src/test/java/me/ohowe12/spectatormode/SpectatorManagerTest.java b/src/test/java/me/ohowe12/spectatormode/SpectatorManagerTest.java index bee2e86..b7fdf81 100644 --- a/src/test/java/me/ohowe12/spectatormode/SpectatorManagerTest.java +++ b/src/test/java/me/ohowe12/spectatormode/SpectatorManagerTest.java @@ -32,6 +32,7 @@ import me.ohowe12.spectatormode.testutils.TestUtils; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; import org.junit.jupiter.api.AfterEach; @@ -65,6 +66,7 @@ void setUp() { @AfterEach void tearDown() { + Bukkit.getScheduler().cancelTasks(plugin); MockBukkit.unmock(); } @@ -290,4 +292,13 @@ void togglePlayer_TogglesBefore_NotToggledAgain() { playerMock.assertGameMode(GameMode.SURVIVAL); playerMock.assertNoMoreSaid(); } + + @Test + void togglePlayer_ToggleBackCreative_ToggledToCreative() { + TestUtils.setConfigFileOfPlugin(plugin, "togglebackc.yml"); + spectatorManager.togglePlayer(playerMock); + playerMock.assertGameMode(GameMode.SPECTATOR); + spectatorManager.togglePlayer(playerMock); + playerMock.assertGameMode(GameMode.CREATIVE); + } } diff --git a/src/test/java/me/ohowe12/spectatormode/commands/SpectatorCommandTest.java b/src/test/java/me/ohowe12/spectatormode/commands/SpectatorCommandTest.java index b962428..0c07db8 100644 --- a/src/test/java/me/ohowe12/spectatormode/commands/SpectatorCommandTest.java +++ b/src/test/java/me/ohowe12/spectatormode/commands/SpectatorCommandTest.java @@ -11,6 +11,7 @@ import me.ohowe12.spectatormode.SpectatorMode; import me.ohowe12.spectatormode.testutils.TestUtils; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.potion.PotionEffectType; import org.junit.jupiter.api.AfterEach; @@ -40,6 +41,7 @@ void setUp() { @AfterEach void tearDown() { + Bukkit.getScheduler().cancelTasks(plugin); MockBukkit.unmock(); } @@ -171,7 +173,7 @@ void forceCommand_WithPermissionInvalidName_InvalidPlayerMessageSent() { } private void assertPermissionMessageSent() { - TestUtils.assertEqualsColored( + TestUtils.assertEqualsColoredNoPrepend( "&cI'm sorry, but you do not have permission to perform this command.", playerMock.nextMessage()); } diff --git a/src/test/java/me/ohowe12/spectatormode/listener/OnCommandPreprocessListenerTest.java b/src/test/java/me/ohowe12/spectatormode/listener/OnCommandPreprocessListenerTest.java index c667c0f..af3b0cc 100644 --- a/src/test/java/me/ohowe12/spectatormode/listener/OnCommandPreprocessListenerTest.java +++ b/src/test/java/me/ohowe12/spectatormode/listener/OnCommandPreprocessListenerTest.java @@ -13,6 +13,7 @@ import me.ohowe12.spectatormode.SpectatorMode; import me.ohowe12.spectatormode.testutils.TestUtils; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.junit.jupiter.api.AfterEach; @@ -51,6 +52,7 @@ void setUp() { @AfterEach void tearDown() { + Bukkit.getScheduler().cancelTasks(plugin); MockBukkit.unmock(); } diff --git a/src/test/java/me/ohowe12/spectatormode/listener/OnGameModeChangeListenerTest.java b/src/test/java/me/ohowe12/spectatormode/listener/OnGameModeChangeListenerTest.java index a674b9f..d973d2d 100644 --- a/src/test/java/me/ohowe12/spectatormode/listener/OnGameModeChangeListenerTest.java +++ b/src/test/java/me/ohowe12/spectatormode/listener/OnGameModeChangeListenerTest.java @@ -14,6 +14,7 @@ import me.ohowe12.spectatormode.SpectatorMode; import me.ohowe12.spectatormode.testutils.TestUtils; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.event.player.PlayerGameModeChangeEvent; import org.bukkit.potion.PotionEffect; @@ -45,6 +46,7 @@ void setUp() { @AfterEach void tearDown() { + Bukkit.getScheduler().cancelTasks(plugin); MockBukkit.unmock(); } diff --git a/src/test/java/me/ohowe12/spectatormode/listener/OnMoveListenerTest.java b/src/test/java/me/ohowe12/spectatormode/listener/OnMoveListenerTest.java index a711eba..99bcad9 100644 --- a/src/test/java/me/ohowe12/spectatormode/listener/OnMoveListenerTest.java +++ b/src/test/java/me/ohowe12/spectatormode/listener/OnMoveListenerTest.java @@ -5,6 +5,7 @@ import be.seeseemelk.mockbukkit.entity.PlayerMock; import me.ohowe12.spectatormode.SpectatorMode; import me.ohowe12.spectatormode.testutils.TestUtils; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.event.player.PlayerMoveEvent; @@ -42,6 +43,7 @@ void setUp() { @AfterEach void tearDown() { + Bukkit.getScheduler().cancelTasks(plugin); MockBukkit.unmock(); } diff --git a/src/test/java/me/ohowe12/spectatormode/state/StateHolderTest.java b/src/test/java/me/ohowe12/spectatormode/state/StateHolderTest.java index 34a2374..ffe122b 100644 --- a/src/test/java/me/ohowe12/spectatormode/state/StateHolderTest.java +++ b/src/test/java/me/ohowe12/spectatormode/state/StateHolderTest.java @@ -8,6 +8,7 @@ import me.ohowe12.spectatormode.SpectatorMode; +import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; @@ -31,11 +32,13 @@ class StateHolderTest { private File fileLocation; + private SpectatorMode plugin; + @BeforeEach void setUp() { server = MockBukkit.mock(); - SpectatorMode plugin = MockBukkit.load(SpectatorMode.class); + plugin = MockBukkit.load(SpectatorMode.class); fileLocation = new File(plugin.getDataFolder(), "data.yml"); stateHolder = plugin.getSpectatorManager().getStateHolder(); @@ -45,6 +48,7 @@ void setUp() { @AfterEach void tearDown() { + Bukkit.getScheduler().cancelTasks(plugin); MockBukkit.unmock(); } diff --git a/src/test/java/me/ohowe12/spectatormode/testutils/TestUtils.java b/src/test/java/me/ohowe12/spectatormode/testutils/TestUtils.java index 8d1a13d..3065270 100644 --- a/src/test/java/me/ohowe12/spectatormode/testutils/TestUtils.java +++ b/src/test/java/me/ohowe12/spectatormode/testutils/TestUtils.java @@ -39,11 +39,15 @@ public class TestUtils { public static void assertEqualsColored(String expected, String actual) { + assertEqualsColoredNoPrepend("&f" + expected, actual); + } + + public static void assertEqualsColoredNoPrepend(String expected, String actual) { assertEquals(ChatColor.translateAlternateColorCodes('&', expected), actual); } public static void assertNotEqualsColored(String expected, String actual) { - assertNotEquals(ChatColor.translateAlternateColorCodes('&', expected), actual); + assertNotEquals("§f" + ChatColor.translateAlternateColorCodes('&', expected), actual); } public static void setConfigFileOfPlugin(SpectatorMode plugin, String configName) { diff --git a/src/test/java/me/ohowe12/spectatormode/util/MessengerTest.java b/src/test/java/me/ohowe12/spectatormode/util/MessengerTest.java index e324174..cf6d97d 100644 --- a/src/test/java/me/ohowe12/spectatormode/util/MessengerTest.java +++ b/src/test/java/me/ohowe12/spectatormode/util/MessengerTest.java @@ -10,6 +10,7 @@ import me.ohowe12.spectatormode.SpectatorMode; import me.ohowe12.spectatormode.testutils.TestUtils; +import org.bukkit.Bukkit; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -34,6 +35,7 @@ void setUp() { @AfterEach void tearDown() { + Bukkit.getScheduler().cancelTasks(plugin); MockBukkit.unmock(); } @@ -41,7 +43,7 @@ void tearDown() { void send_SenderKey_Valid() { Messenger.send(playerMock, "regular-message"); - playerMock.assertSaid("Hello world!"); + playerMock.assertSaid("§fHello world!"); playerMock.assertNoMoreSaid(); } @@ -50,7 +52,7 @@ void send_WithTarget_Valid() { PlayerMock otherPlayer = server.addPlayer("Player2"); Messenger.send(playerMock, "message-with-target", otherPlayer); - playerMock.assertSaid("Message with Player2"); + playerMock.assertSaid("§fMessage with Player2"); playerMock.assertNoMoreSaid(); otherPlayer.assertNoMoreSaid(); @@ -60,7 +62,7 @@ void send_WithTarget_Valid() { void send_WithExtra_Valid() { Messenger.send(playerMock, "message-with-extra", " like this"); - playerMock.assertSaid("Something should be appended to this like this"); + playerMock.assertSaid("§fSomething should be appended to this like this"); playerMock.assertNoMoreSaid(); } @@ -69,7 +71,7 @@ void send_WithAll_Valid() { PlayerMock otherPlayer = server.addPlayer("Player2"); Messenger.send(playerMock, "message-with-all-features", otherPlayer, "mocked player"); - playerMock.assertSaid("Player2 is a mocked player"); + playerMock.assertSaid("§fPlayer2 is a mocked player"); playerMock.assertNoMoreSaid(); otherPlayer.assertNoMoreSaid(); @@ -83,7 +85,7 @@ void send_ActionBar_Valid() { // saids a "vanilla" // message on chat components - playerMock.assertSaid("This should be on your action bar"); + playerMock.assertSaid("§fThis should be on your action bar"); playerMock.assertNoMoreSaid(); } diff --git a/src/test/resources/configs/togglebackc.yml b/src/test/resources/configs/togglebackc.yml new file mode 100644 index 0000000..f56f336 --- /dev/null +++ b/src/test/resources/configs/togglebackc.yml @@ -0,0 +1 @@ +switch-back-to: creative