3
3
import com .mojang .brigadier .exceptions .CommandSyntaxException ;
4
4
import com .mojang .brigadier .tree .CommandNode ;
5
5
import com .mojang .brigadier .tree .RootCommandNode ;
6
- import dev .jorel .commandapi .Brigadier ;
7
6
import dev .jorel .commandapi .CommandAPI ;
8
7
import dev .jorel .commandapi .CommandAPIBukkitConfig ;
9
8
import dev .jorel .commandapi .CommandAPICommand ;
14
13
import dev .jorel .commandapi .arguments .StringArgument ;
15
14
import org .bukkit .Bukkit ;
16
15
import org .bukkit .ChatColor ;
17
- import org .bukkit .Location ;
18
16
import org .bukkit .command .CommandMap ;
19
17
import org .bukkit .command .CommandSender ;
20
18
import org .bukkit .command .SimpleCommandMap ;
30
28
import org .junit .jupiter .params .provider .ValueSource ;
31
29
import org .mockito .Mockito ;
32
30
33
- import java .lang .reflect .Method ;
34
-
35
31
import static org .junit .jupiter .api .Assertions .*;
36
32
import static org .mockito .ArgumentMatchers .isA ;
37
33
@@ -70,8 +66,9 @@ Player enableWithNamespaces() {
70
66
assertDoesNotThrow (() -> server .getScheduler ().performOneTick ());
71
67
assertFalse (CommandAPI .canRegister ());
72
68
73
- // Get a CraftPlayer for running VanillaCommandWrapper commands
74
- Player runCommandsPlayer = Mockito .mock (MockPlatform .getInstance ().getCraftPlayerClass ());
69
+ // Get a mocked CraftPlayer for running VanillaCommandWrapper commands
70
+ Player runCommandsPlayer = server .setupMockedCraftPlayer ();
71
+
75
72
// Ensure player can have permissions modified
76
73
PermissibleBase perm = new PermissibleBase (runCommandsPlayer );
77
74
Mockito .when (runCommandsPlayer .addAttachment (isA (Plugin .class ))).thenAnswer (invocation ->
@@ -87,19 +84,6 @@ Player enableWithNamespaces() {
87
84
Mockito .when (runCommandsPlayer .hasPermission (isA (String .class ))).thenAnswer (invocation ->
88
85
perm .hasPermission (invocation .getArgument (0 , String .class ))
89
86
);
90
- // Get location is used when creating the BrigadierSource in MockNMS
91
- Mockito .when (runCommandsPlayer .getLocation ()).thenReturn (new Location (null , 0 , 0 , 0 ));
92
-
93
- // Provide proper handle as VanillaCommandWrapper expects
94
- Method getHandle = assertDoesNotThrow (() -> runCommandsPlayer .getClass ().getDeclaredMethod ("getHandle" ));
95
- Object brigadierSource = Brigadier .getBrigadierSourceFromCommandSender (runCommandsPlayer );
96
- Object handle = Mockito .mock (getHandle .getReturnType (), invocation -> brigadierSource );
97
- // This is a funny quirk of Mockito, but you don't need to put the method call you want to mock inside `when`
98
- // As long as the method is called, `when` knows what you are talking about
99
- // That means we can mock `CraftPlayer#getHandle` indirectly using reflection
100
- // See the additional response in https://stackoverflow.com/a/10131885
101
- assertDoesNotThrow (() -> getHandle .invoke (runCommandsPlayer ));
102
- Mockito .when (null ).thenReturn (handle );
103
87
104
88
return runCommandsPlayer ;
105
89
}
0 commit comments