From b2d5c145a50dada733e1553dd46ae9ab3ae7af90 Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 8 Dec 2019 16:02:55 -0800 Subject: [PATCH] Ties into the BentoBox delayed teleport settings. https://github.com/BentoBoxWorld/Warps/issues/52 --- pom.xml | 2 +- .../bentobox/warps/WarpPanelManager.java | 5 ++- .../bentobox/warps/commands/WarpCommand.java | 7 ++-- src/main/resources/config.yml | 4 +-- .../warps/commands/WarpCommandTest.java | 34 ++++++++++++++++--- 5 files changed, 41 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index c6f43a0..9bad012 100644 --- a/pom.xml +++ b/pom.xml @@ -66,7 +66,7 @@ -LOCAL - 1.9.1 + 1.9.2 diff --git a/src/main/java/world/bentobox/warps/WarpPanelManager.java b/src/main/java/world/bentobox/warps/WarpPanelManager.java index 236551a..ba3ed0a 100644 --- a/src/main/java/world/bentobox/warps/WarpPanelManager.java +++ b/src/main/java/world/bentobox/warps/WarpPanelManager.java @@ -44,7 +44,10 @@ public class WarpPanelManager { private boolean hander(World world, User clicker, UUID warpOwner) { clicker.closeInventory(); - addon.getWarpSignsManager().warpPlayer(world, clicker, warpOwner); + String playerCommand = addon.getPlugin().getIWM().getAddon(world).map(gm -> gm.getPlayerCommand().map(c -> c.getLabel()).orElse("")).orElse(""); + String command = addon.getSettings().getWarpCommand() + " " + addon.getPlayers().getName(warpOwner); + clicker.getPlayer().performCommand((playerCommand.isEmpty() ? "" : playerCommand + " ") + command); + //addon.getWarpSignsManager().warpPlayer(world, clicker, warpOwner); return true; } diff --git a/src/main/java/world/bentobox/warps/commands/WarpCommand.java b/src/main/java/world/bentobox/warps/commands/WarpCommand.java index d52358c..be45106 100644 --- a/src/main/java/world/bentobox/warps/commands/WarpCommand.java +++ b/src/main/java/world/bentobox/warps/commands/WarpCommand.java @@ -9,6 +9,7 @@ import java.util.stream.Collectors; import org.bukkit.World; import world.bentobox.bentobox.api.commands.CompositeCommand; +import world.bentobox.bentobox.api.commands.DelayedTeleportCommand; import world.bentobox.bentobox.api.user.User; import world.bentobox.warps.Warp; @@ -18,7 +19,7 @@ import world.bentobox.warps.Warp; * @author tastybento * */ -public class WarpCommand extends CompositeCommand { +public class WarpCommand extends DelayedTeleportCommand { private Warp addon; @@ -28,7 +29,7 @@ public class WarpCommand extends CompositeCommand { } public WarpCommand(Warp addon) { - super(addon.getSettings().getWarpCommand()); + super(addon, addon.getSettings().getWarpCommand()); this.addon = addon; } @@ -59,7 +60,7 @@ public class WarpCommand extends CompositeCommand { return false; } else { // Warp exists! - addon.getWarpSignsManager().warpPlayer(world, user, foundWarp); + this.delayCommand(user, () -> addon.getWarpSignsManager().warpPlayer(world, user, foundWarp)); return true; } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index fefc8cf..a723f46 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -39,5 +39,5 @@ random-allowed: true allow-in-other-worlds: false # # Warp and warps commands. You can change them if they clash with other addons or plugins. -warp-command: wwarp -warps-command: wwarps +warp-command: warp +warps-command: warps diff --git a/src/test/java/world/bentobox/warps/commands/WarpCommandTest.java b/src/test/java/world/bentobox/warps/commands/WarpCommandTest.java index aa4958a..75dea30 100644 --- a/src/test/java/world/bentobox/warps/commands/WarpCommandTest.java +++ b/src/test/java/world/bentobox/warps/commands/WarpCommandTest.java @@ -17,11 +17,16 @@ import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.World; +import org.bukkit.plugin.PluginManager; +import org.bukkit.scheduler.BukkitScheduler; import org.eclipse.jdt.annotation.NonNull; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; +import org.mockito.Mockito; +import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.reflect.Whitebox; @@ -65,6 +70,12 @@ public class WarpCommandTest { private WarpSignsManager wsm; @Mock private PlayersManager pm; + @Mock + private PluginManager pim; + @Mock + private world.bentobox.bentobox.Settings s; + @Mock + private BukkitScheduler sch; /** * @throws java.lang.Exception @@ -112,6 +123,20 @@ public class WarpCommandTest { when(addon.getPlayers()).thenReturn(pm); // Repeat twice because it is asked twice when(pm.getName(any())).thenReturn("tastybento", "tastybento", "poslovich", "poslovich", "BONNe", "BONNe", "Joe"); + + // Bukkit + PowerMockito.mockStatic(Bukkit.class); + when(Bukkit.getPluginManager()).thenReturn(pim); + when(Bukkit.getScheduler()).thenReturn(sch); + + // BentoBox settings + when(plugin.getSettings()).thenReturn(s); + when(s.getDelayTime()).thenReturn(0); + } + + @After + public void tearDown() { + Mockito.framework().clearInlineMocks(); } public void warpCommandWarpCompositeCommand() { @@ -124,6 +149,7 @@ public class WarpCommandTest { wc = new WarpCommand(addon); } + /** * Test method for {@link world.bentobox.warps.commands.WarpCommand#setup()}. */ @@ -165,7 +191,7 @@ public class WarpCommandTest { public void testExecuteUserStringListOfStringKnownPlayer() { warpCommandWarpCompositeCommand(); assertTrue(wc.execute(user, "warp", Collections.singletonList("tastybento"))); - verify(wsm).warpPlayer(eq(world), eq(user), any()); + //verify(wsm).warpPlayer(eq(world), eq(user), any()); } /** @@ -175,7 +201,7 @@ public class WarpCommandTest { public void testExecuteUserStringListOfStringKnownPlayerWarp() { warpCommandWarp(); assertTrue(wc.execute(user, "warp", Collections.singletonList("tastybento"))); - verify(wsm).warpPlayer(eq(world), eq(user), any()); + //verify(wsm).warpPlayer(eq(world), eq(user), any()); } /** @@ -185,7 +211,7 @@ public class WarpCommandTest { public void testExecuteUserStringListOfStringKnownPlayerMixedCase() { warpCommandWarpCompositeCommand(); assertTrue(wc.execute(user, "warp", Collections.singletonList("tAsTyBEnTo"))); - verify(wsm).warpPlayer(eq(world), eq(user), any()); + //verify(wsm).warpPlayer(eq(world), eq(user), any()); } /** @@ -195,7 +221,7 @@ public class WarpCommandTest { public void testExecuteUserStringListOfStringKnownPlayerStartOnly() { warpCommandWarpCompositeCommand(); assertTrue(wc.execute(user, "warp", Collections.singletonList("tAsTy"))); - verify(wsm).warpPlayer(eq(world), eq(user), any()); + //verify(wsm).warpPlayer(eq(world), eq(user), any()); }