Remove /setnickname command and fix tests for Java 16.

This commit is contained in:
Aust1n46 2021-08-30 17:46:59 -04:00
parent 21c72bdb44
commit aaef5a2b46
9 changed files with 93 additions and 221 deletions

18
pom.xml
View File

@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>mineverse.Aust1n46.chat</groupId>
<artifactId>VentureChat</artifactId>
<version>3.1.3</version>
<version>3.2.0</version>
<url>https://bitbucket.org/Aust1n46/venturechat/src/master</url>
<scm>
<url>https://bitbucket.org/Aust1n46/venturechat/src/master</url>
@ -229,20 +229,8 @@
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.18.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.0.0-beta.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.0-beta.5</version>
<artifactId>mockito-inline</artifactId>
<version>3.12.4</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@ -8,16 +8,19 @@ import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import mineverse.Aust1n46.chat.ChatMessage;
import mineverse.Aust1n46.chat.channel.ChatChannel;
import mineverse.Aust1n46.chat.command.mute.MuteContainer;
import mineverse.Aust1n46.chat.json.JsonFormat;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
//Wrapper class for Player, this class stores additional information along with a players Player pointer.
//This data is read in from the PlayerData file and is also saved to that file when the server is closed.
/**
* Wrapper for {@link Player}
*
* @author Aust1n46
*/
public class MineverseChatPlayer {
private UUID uuid;
private String name;
@ -30,7 +33,6 @@ public class MineverseChatPlayer {
private UUID party;
private boolean filter;
private boolean notifications;
private String nickname;
private boolean online;
private Player player;
private boolean hasPlayed;
@ -52,7 +54,12 @@ public class MineverseChatPlayer {
private boolean messageToggle;
private boolean bungeeToggle;
@Deprecated
public MineverseChatPlayer(UUID uuid, String name, ChatChannel currentChannel, Set<UUID> ignores, Set<String> listening, HashMap<String, MuteContainer> mutes, Set<String> blockedCommands, boolean host, UUID party, boolean filter, boolean notifications, String nickname, String jsonFormat, boolean spy, boolean commandSpy, boolean rangedSpy, boolean messageToggle, boolean bungeeToggle) {
this(uuid, name, currentChannel, ignores, listening, mutes, blockedCommands, host, party, filter, notifications, jsonFormat, spy, commandSpy, rangedSpy, messageToggle, bungeeToggle);
}
public MineverseChatPlayer(UUID uuid, String name, ChatChannel currentChannel, Set<UUID> ignores, Set<String> listening, HashMap<String, MuteContainer> mutes, Set<String> blockedCommands, boolean host, UUID party, boolean filter, boolean notifications, String jsonFormat, boolean spy, boolean commandSpy, boolean rangedSpy, boolean messageToggle, boolean bungeeToggle) {
this.uuid = uuid;
this.name = name;
this.currentChannel = currentChannel;
@ -64,7 +71,6 @@ public class MineverseChatPlayer {
this.party = party;
this.filter = filter;
this.notifications = notifications;
this.nickname = nickname;
this.online = false;
this.player = null;
this.hasPlayed = false;
@ -98,7 +104,6 @@ public class MineverseChatPlayer {
this.party = null;
this.filter = true;
this.notifications = true;
this.nickname = name;
this.online = false;
this.player = null;
this.hasPlayed = false;
@ -119,6 +124,19 @@ public class MineverseChatPlayer {
this.bungeeToggle = true;
}
@Deprecated
public String getNickname() {
return this.online ? this.player.getDisplayName() : "";
}
@Deprecated
public void setNickname(String nick) {}
@Deprecated
public boolean hasNickname() {
return false;
}
public boolean getBungeeToggle() {
return this.bungeeToggle;
}
@ -335,18 +353,6 @@ public class MineverseChatPlayer {
this.notifications = notifications;
}
public String getNickname() {
return this.online ? this.player.getDisplayName() : this.nickname;
}
public void setNickname(String nick) {
this.nickname = nick;
}
public boolean hasNickname() {
return !this.name.equals(this.nickname);
}
public boolean isOnline() {
return this.online;
}

View File

@ -31,7 +31,6 @@ import mineverse.Aust1n46.chat.command.chat.Kickchannelall;
import mineverse.Aust1n46.chat.command.chat.Leave;
import mineverse.Aust1n46.chat.command.chat.Listen;
import mineverse.Aust1n46.chat.command.chat.Me;
import mineverse.Aust1n46.chat.command.chat.Nick;
import mineverse.Aust1n46.chat.command.chat.Party;
import mineverse.Aust1n46.chat.command.chat.RangedSpy;
import mineverse.Aust1n46.chat.command.chat.Removemessage;
@ -93,7 +92,6 @@ public class VentureCommandExecutor implements TabExecutor {
commands.put("listen", new Listen());
commands.put("me", new Me());
commands.put("venturechat", new Venturechat());
commands.put("setnickname", new Nick());
commands.put("notifications", new Notifications());
commands.put("party", new Party());
commands.put("rangedspy", new RangedSpy());

View File

@ -1,111 +0,0 @@
package mineverse.Aust1n46.chat.command.chat;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
import mineverse.Aust1n46.chat.api.MineverseChatPlayer;
import mineverse.Aust1n46.chat.command.VentureCommand;
import mineverse.Aust1n46.chat.localization.LocalizedMessage;
import mineverse.Aust1n46.chat.utilities.Format;
public class Nick implements VentureCommand {
private MineverseChat plugin = MineverseChat.getInstance();
@Override
public void execute(CommandSender sender, String command, String[] args) {
if (sender.hasPermission("venturechat.nick")) {
if (args.length > 0) {
if (args.length == 1) {
if (!(sender instanceof Player)) {
plugin.getServer().getConsoleSender().sendMessage(ChatColor.RED + "This command must be run by a player.");
return;
}
MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) sender);
if (args[0].equalsIgnoreCase("Off")) {
mcp.getPlayer().setDisplayName(mcp.getName());
mcp.setNickname(mcp.getName());
mcp.getPlayer().sendMessage(ChatColor.GOLD + "You no longer have a nickname.");
String name = mcp.getName();
if (name.length() >= 16) {
name = name.substring(0, 16);
}
if (plugin.getConfig().getBoolean("nickname-in-tablist", false)) {
mcp.getPlayer().setPlayerListName(Format.FormatStringAll(name));
}
return;
}
if (!mcp.getPlayer().hasPermission("venturechat.nick.bypass")) {
for (String s : plugin.getConfig().getStringList("nicknames")) {
if (s.equalsIgnoreCase(args[0])) {
mcp.getPlayer().sendMessage(ChatColor.RED + "You are not allowed to set your nickname to " + args[0]);
return;
}
}
}
mcp.getPlayer().setDisplayName(Format.FormatStringAll(args[0]));
mcp.setNickname(args[0]);
mcp.getPlayer().sendMessage(ChatColor.GOLD + "Set your nickname to " + Format.FormatStringAll(args[0]));
if (args[0].length() >= 16) {
args[0] = args[0].substring(0, 16);
}
if (plugin.getConfig().getBoolean("nickname-in-tablist", false)) {
mcp.getPlayer().setPlayerListName(Format.FormatStringAll(args[0]));
}
return;
}
if (sender.hasPermission("venturechat.nick.others")) {
MineverseChatPlayer player = MineverseChatAPI.getMineverseChatPlayer(args[0]);
if (player == null) {
sender.sendMessage(ChatColor.RED + "Player: " + ChatColor.GOLD + args[0] + ChatColor.RED + " is not online.");
return;
}
if (args[1].equalsIgnoreCase("Off")) {
player.setNickname(player.getName());
sender.sendMessage(ChatColor.GOLD + "Removed " + ChatColor.RED + player.getName() + ChatColor.GOLD + "'s nickname.");
if (player.isOnline()) {
player.getPlayer().sendMessage(ChatColor.GOLD + "You no longer have a nickname.");
player.getPlayer().setDisplayName(player.getName());
String playerName = player.getName();
if (playerName.length() >= 16) {
playerName = playerName.substring(0, 16);
}
if (plugin.getConfig().getBoolean("nickname-in-tablist", false)) {
player.getPlayer().setPlayerListName(Format.FormatStringAll(playerName));
}
}
return;
}
if (!sender.hasPermission("venturechat.nick.bypass")) {
for (String s : plugin.getConfig().getStringList("nicknames")) {
if (s.equalsIgnoreCase(args[1])) {
sender.sendMessage(ChatColor.RED + "You are not allowed to set " + player.getName() + "'s nickname to " + args[1]);
return;
}
}
}
player.setNickname(args[1]);
sender.sendMessage(ChatColor.GOLD + "Set " + ChatColor.RED + player.getName() + ChatColor.GOLD + "'s nickname to " + Format.FormatStringAll(args[1]));
if (player.isOnline()) {
player.getPlayer().setDisplayName(Format.FormatStringAll(args[1]));
player.getPlayer().sendMessage(ChatColor.GOLD + "Your nickname has been to set to " + Format.FormatStringAll(args[1]));
if (args[1].length() >= 16) {
args[1] = args[1].substring(0, 16);
}
if (plugin.getConfig().getBoolean("nickname-in-tablist", false)) {
player.getPlayer().setPlayerListName(Format.FormatStringAll(args[1]));
}
}
return;
}
sender.sendMessage(ChatColor.RED + "You do not have permission to set other players nicknames.");
return;
}
sender.sendMessage(ChatColor.RED + "Invalid command: /nick {player} [nickname]");
return;
}
sender.sendMessage(LocalizedMessage.COMMAND_NO_PERMISSION.toString());
}
}

View File

@ -88,14 +88,13 @@ public class PlayerData {
UUID party = playerData.getConfigurationSection("players." + uuidString).getString("party").length() > 0 ? UUID.fromString(playerData.getConfigurationSection("players." + uuidString).getString("party")) : null;
boolean filter = playerData.getConfigurationSection("players." + uuidString).getBoolean("filter");
boolean notifications = playerData.getConfigurationSection("players." + uuidString).getBoolean("notifications");
String nickname = playerData.getConfigurationSection("players." + uuidString).getString("nickname");
String jsonFormat = "Default";
boolean spy = playerData.getConfigurationSection("players." + uuidString).getBoolean("spy", false);
boolean commandSpy = playerData.getConfigurationSection("players." + uuidString).getBoolean("commandspy", false);
boolean rangedSpy = playerData.getConfigurationSection("players." + uuidString).getBoolean("rangedspy", false);
boolean messageToggle = playerData.getConfigurationSection("players." + uuidString).getBoolean("messagetoggle", true);
boolean bungeeToggle = playerData.getConfigurationSection("players." + uuidString).getBoolean("bungeetoggle", true);
MineverseChatPlayer mcp = new MineverseChatPlayer(uuid, name, currentChannel, ignores, listening, mutes, blockedCommands, host, party, filter, notifications, nickname, jsonFormat, spy, commandSpy, rangedSpy, messageToggle, bungeeToggle);
MineverseChatPlayer mcp = new MineverseChatPlayer(uuid, name, currentChannel, ignores, listening, mutes, blockedCommands, host, party, filter, notifications, jsonFormat, spy, commandSpy, rangedSpy, messageToggle, bungeeToggle);
mcp.setModified(true);
MineverseChatAPI.addMineverseChatPlayerToMap(mcp);
MineverseChatAPI.addNameToMap(mcp);
@ -177,14 +176,13 @@ public class PlayerData {
UUID party = playerDataFileYamlConfiguration.getString("party").length() > 0 ? UUID.fromString(playerDataFileYamlConfiguration.getString("party")) : null;
boolean filter = playerDataFileYamlConfiguration.getBoolean("filter");
boolean notifications = playerDataFileYamlConfiguration.getBoolean("notifications");
String nickname = playerDataFileYamlConfiguration.getString("nickname");
String jsonFormat = "Default";
boolean spy = playerDataFileYamlConfiguration.getBoolean("spy", false);
boolean commandSpy = playerDataFileYamlConfiguration.getBoolean("commandspy", false);
boolean rangedSpy = playerDataFileYamlConfiguration.getBoolean("rangedspy", false);
boolean messageToggle = playerDataFileYamlConfiguration.getBoolean("messagetoggle", true);
boolean bungeeToggle = playerDataFileYamlConfiguration.getBoolean("bungeetoggle", true);
mcp = new MineverseChatPlayer(uuid, name, currentChannel, ignores, listening, mutes, blockedCommands, host, party, filter, notifications, nickname, jsonFormat, spy, commandSpy, rangedSpy, messageToggle, bungeeToggle);
mcp = new MineverseChatPlayer(uuid, name, currentChannel, ignores, listening, mutes, blockedCommands, host, party, filter, notifications, jsonFormat, spy, commandSpy, rangedSpy, messageToggle, bungeeToggle);
} catch (Exception e) {
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&c - Error Loading Data File: " + playerDataFile.getName()));
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&c - File will be skipped and deleted."));
@ -241,7 +239,6 @@ public class PlayerData {
playerDataFileYamlConfiguration.set("party", mcp.hasParty() ? mcp.getParty().toString() : "");
playerDataFileYamlConfiguration.set("filter", mcp.hasFilter());
playerDataFileYamlConfiguration.set("notifications", mcp.hasNotifications());
playerDataFileYamlConfiguration.set("nickname", mcp.getNickname());
playerDataFileYamlConfiguration.set("spy", mcp.isSpy());
playerDataFileYamlConfiguration.set("commandspy", mcp.hasCommandSpy());
playerDataFileYamlConfiguration.set("rangedspy", mcp.getRangedSpy());

View File

@ -18,8 +18,11 @@ import mineverse.Aust1n46.chat.database.PlayerData;
import mineverse.Aust1n46.chat.utilities.Format;
import mineverse.Aust1n46.chat.utilities.UUIDFetcher;
//This class listens for when Players login or logout and manages their wrapped MineverseChatPlayer
//and it's data.
/**
* Manages player login and logout events.
*
* @author Aust1n46
*/
public class LoginListener implements Listener {
private MineverseChat plugin = MineverseChat.getInstance();
@ -35,11 +38,6 @@ public class LoginListener implements Listener {
void handleNameChange(MineverseChatPlayer mcp, Player eventPlayerInstance) {
Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Detected Name Change. Old Name:&c " + mcp.getName() + " &eNew Name:&c " + eventPlayerInstance.getName()));
MineverseChatAPI.removeNameFromMap(mcp.getName());
//reset nickname if nickname equals old username
if(mcp.getName().equals(eventPlayerInstance.getDisplayName())) {
eventPlayerInstance.setDisplayName(eventPlayerInstance.getName());
mcp.setNickname(eventPlayerInstance.getName());
}
mcp.setName(eventPlayerInstance.getName());
MineverseChatAPI.addNameToMap(mcp);
}
@ -47,9 +45,9 @@ public class LoginListener implements Listener {
@EventHandler(priority = EventPriority.LOW)
public void onPlayerJoin(PlayerJoinEvent event) throws Exception {
MineverseChatPlayer mcp = MineverseChatAPI.getMineverseChatPlayer(event.getPlayer());
Player player = event.getPlayer();
String name = player.getName();
if(mcp == null) {
Player player = event.getPlayer();
String name = player.getName();
UUID uuid = player.getUniqueId();
mcp = new MineverseChatPlayer(uuid, name);
MineverseChatAPI.addMineverseChatPlayerToMap(mcp);
@ -57,24 +55,13 @@ public class LoginListener implements Listener {
}
UUIDFetcher.checkOfflineUUIDWarning(mcp.getUUID());
//check for name change
if(!mcp.getName().equals(event.getPlayer().getName())) {
if(!mcp.getName().equals(name)) {
handleNameChange(mcp, event.getPlayer());
}
if(!event.getPlayer().getDisplayName().equals(mcp.getName())) {
mcp.setNickname(event.getPlayer().getDisplayName());
}
event.getPlayer().setDisplayName(Format.FormatStringAll(mcp.getNickname()));
mcp.setOnline(true);
mcp.setHasPlayed(false);
MineverseChatAPI.addMineverseChatOnlinePlayerToMap(mcp);
mcp.setJsonFormat();
if(plugin.getConfig().getBoolean("nickname-in-tablist", false)) {
String nick = mcp.getNickname();
if(nick.length() >= 16) {
nick = nick.substring(0, 16);
}
mcp.getPlayer().setPlayerListName(Format.FormatStringAll(nick));
}
for(ChatChannel ch : ChatChannel.getAutojoinList()) {
if(ch.hasPermission()) {
if(mcp.getPlayer().hasPermission(ch.getPermission())) {

View File

@ -173,11 +173,6 @@ commands:
aliases: [cb,vcommandblock]
description: Toggle a player blocked from entering a command
permission-message: You don't have <permission>
setnickname:
usage: /setnickname {player} [nickname]
aliases: [vnick]
description: Set a players nickname
permission-message: You don't have <permission>
party:
usage: /party help
aliases: [p,chatparty,cp,vparty]

View File

@ -7,13 +7,12 @@ import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerQuitEvent;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import mineverse.Aust1n46.chat.MineverseChat;
import mineverse.Aust1n46.chat.api.MineverseChatAPI;
@ -23,41 +22,51 @@ import mineverse.Aust1n46.chat.database.PlayerData;
/**
* Tests {@link LoginListener}.
*/
@RunWith(PowerMockRunner.class)
@PrepareForTest({ MineverseChat.class, MineverseChatAPI.class, Bukkit.class, PlayerData.class, PlayerQuitEvent.class})
public class LoginListenerTest {
private MineverseChat mockPlugin;
private static MockedStatic<MineverseChat> mockedMineverseChat;
private static MockedStatic<Bukkit> mockedBukkit;
private static MockedStatic<PlayerData> mockedPlayerData;
private static MockedStatic<MineverseChatAPI> mockedMineverseChatAPI;
private static MineverseChat mockPlugin;
private Player mockPlayer;
private MineverseChatPlayer mockMCP;
private ConsoleCommandSender mockConsoleSender;
private LoginListener testLoginListener;
private PlayerQuitEvent mockPlayerQuitEvent;
private File mockDataFile;
private static File mockDataFile;
@BeforeClass
public static void init() {
mockedMineverseChat = Mockito.mockStatic(MineverseChat.class);
mockPlugin = Mockito.mock(MineverseChat.class);
Mockito.when(MineverseChat.getInstance()).thenReturn(mockPlugin);
mockedBukkit = Mockito.mockStatic(Bukkit.class);
mockDataFile = Mockito.mock(File.class);
Mockito.when(mockPlugin.getDataFolder()).thenReturn(mockDataFile);
Mockito.when(mockDataFile.getAbsolutePath()).thenReturn("");
mockedPlayerData = Mockito.mockStatic(PlayerData.class);
mockedMineverseChatAPI = Mockito.mockStatic(MineverseChatAPI.class);
}
@AfterClass
public static void close() {
mockedMineverseChat.close();
mockedBukkit.close();
mockedPlayerData.close();
mockedMineverseChatAPI.close();
}
@Before
public void setUp() {
mockPlugin = PowerMockito.mock(MineverseChat.class);
mockPlayer = Mockito.mock(Player.class);
mockMCP = Mockito.mock(MineverseChatPlayer.class);
mockConsoleSender = Mockito.mock(ConsoleCommandSender.class);
mockDataFile = Mockito.mock(File.class);
mockPlayerQuitEvent = PowerMockito.mock(PlayerQuitEvent.class);
PowerMockito.when(mockPlayerQuitEvent.getPlayer()).thenReturn(mockPlayer);
PowerMockito.mockStatic(MineverseChat.class);
PowerMockito.when(MineverseChat.getInstance()).thenReturn(mockPlugin);
PowerMockito.when(mockPlugin.getDataFolder()).thenReturn(mockDataFile);
PowerMockito.mockStatic(MineverseChatAPI.class);
PowerMockito.when(MineverseChatAPI.getMineverseChatPlayer(Mockito.any(Player.class))).thenReturn(mockMCP);
PowerMockito.when(MineverseChatAPI.getOnlineMineverseChatPlayer(Mockito.any(Player.class))).thenReturn(mockMCP);
PowerMockito.mockStatic(Bukkit.class);
PowerMockito.when(Bukkit.getConsoleSender()).thenReturn(mockConsoleSender);
PowerMockito.mockStatic(PlayerData.class);
mockPlayerQuitEvent = Mockito.mock(PlayerQuitEvent.class);
Mockito.when(mockPlayerQuitEvent.getPlayer()).thenReturn(mockPlayer);
Mockito.when(MineverseChatAPI.getMineverseChatPlayer(Mockito.any(Player.class))).thenReturn(mockMCP);
Mockito.when(MineverseChatAPI.getOnlineMineverseChatPlayer(Mockito.any(Player.class))).thenReturn(mockMCP);
Mockito.when(Bukkit.getConsoleSender()).thenReturn(mockConsoleSender);
testLoginListener = new LoginListener();
}
@ -70,9 +79,8 @@ public class LoginListenerTest {
public void testLoginWithNameChange() throws Exception {
Mockito.when(mockPlayer.getName()).thenReturn("NewName");
Mockito.when(mockMCP.getName()).thenReturn("OldName");
Mockito.when(mockPlayer.getDisplayName()).thenReturn("OldName");
testLoginListener.handleNameChange(mockMCP, mockPlayer);
Mockito.verify(mockMCP, Mockito.times(1)).setNickname("NewName");
Mockito.verify(mockMCP, Mockito.times(1)).setName("NewName");
}
@Test

View File

@ -10,46 +10,50 @@ import java.util.List;
import org.bukkit.configuration.file.FileConfiguration;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import mineverse.Aust1n46.chat.MineverseChat;
/**
* Tests {@link Format}.
*/
@RunWith(PowerMockRunner.class)
@PrepareForTest({ MineverseChat.class })
public class FormatTest {
private static MockedStatic<MineverseChat> mockedMineverseChat;
private MineverseChat mockPlugin;
private static MineverseChat mockPlugin;
private FileConfiguration mockConfig;
private List<String> filters;
@BeforeClass
public static void init() {
mockedMineverseChat = Mockito.mockStatic(MineverseChat.class);
mockPlugin = Mockito.mock(MineverseChat.class);
Mockito.when(MineverseChat.getInstance()).thenReturn(mockPlugin);
}
@AfterClass
public static void close() {
mockedMineverseChat.close();
}
@Before
public void setUp() {
filters = new ArrayList<String>();
filters.add("ass,donut");
mockPlugin = Mockito.mock(MineverseChat.class);
mockConfig = Mockito.mock(FileConfiguration.class);
PowerMockito.mockStatic(MineverseChat.class);
PowerMockito.when(MineverseChat.getInstance()).thenReturn(mockPlugin);
Mockito.when(mockPlugin.getConfig()).thenReturn(mockConfig);
Mockito.when(mockConfig.getStringList("filters")).thenReturn(filters);
}
@After
public void tearDown() {
mockPlugin = null;
mockConfig = null;
filters = new ArrayList<String>();
}