diff --git a/pom.xml b/pom.xml
index 321c29c..c2092d4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.alttd
AltitudeTag
- 1.0.0-SNAPSHOT
+ 1.0.0
UTF-8
@@ -58,6 +58,12 @@
+
+
+ src/main/resources
+ true
+
+
org.apache.maven.plugins
@@ -68,6 +74,28 @@
1.8
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.1.0
+
+
+
+ package
+
+ shade
+
+
+ false
+
+
+ org.mariadb.jdbc
+
+
+
+
+
+
diff --git a/src/main/java/com/alttd/altitudetag/AltitudeTag.java b/src/main/java/com/alttd/altitudetag/AltitudeTag.java
index 23b9704..0cd9531 100644
--- a/src/main/java/com/alttd/altitudetag/AltitudeTag.java
+++ b/src/main/java/com/alttd/altitudetag/AltitudeTag.java
@@ -1,5 +1,6 @@
package com.alttd.altitudetag;
+import java.io.File;
import java.util.UUID;
import java.util.function.Consumer;
@@ -12,6 +13,7 @@ import com.alttd.altitudetag.listeners.ConnectionListener;
import com.alttd.altitudetag.listeners.InteractListener;
import org.bukkit.Bukkit;
import org.bukkit.boss.BossBar;
+import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class AltitudeTag extends JavaPlugin
@@ -37,7 +39,7 @@ public class AltitudeTag extends JavaPlugin
return;
}
- Lang.update();
+ reloadConfiguration();
// update the CommandLang values
CommandLang.NO_PERMISSION.setValue(Lang.NO_PERMS.getRawMessage()[0]);
@@ -46,10 +48,21 @@ public class AltitudeTag extends JavaPlugin
CommandLang.ONLY_PLAYERS.setValue(Lang.ONLY_PLAYERS.getRawMessage()[0]);
CommandLang.USAGE_FORMAT.setValue(Lang.USAGE.getRawMessage()[0]);
- Config.update();
- TagConnection.initialize();
+ try
+ {
+ TagConnection.initialize();
+ }
+ catch (Exception ex)
+ {
+ getLogger().severe("*** Could not connect to the database. ***");
+ getLogger().severe("*** This plugin will be disabled. ***");
+ this.setEnabled(false);
+ return;
+ }
Leaderboard.initialize();
+ NotificationHandler.loadBossBar();
+
CommandHandler.initialize();
CommandHandler.getInstance().registerCommand(new TagCommand(), this);
@@ -57,6 +70,25 @@ public class AltitudeTag extends JavaPlugin
Bukkit.getPluginManager().registerEvents(new InteractListener(), this);
}
+ private static void reloadConfiguration()
+ {
+ // check lang
+ File langFile = new File(instance.getDataFolder(), "lang.yml");
+ if (!langFile.exists())
+ {
+ instance.saveResource("lang.yml", false);
+ }
+ Lang.update();
+
+ // check config
+ File configFile = new File(instance.getDataFolder(), "config.yml");
+ if (!configFile.exists())
+ {
+ instance.saveDefaultConfig();
+ }
+ Config.update();
+ }
+
public static BossBar getBossBar()
{
return instance.bossBar;
@@ -67,24 +99,6 @@ public class AltitudeTag extends JavaPlugin
instance.bossBar = bossBar;
}
- /**
- * Set the current tagger.
- *
- * @param tagger the new tagger.
- *
- * @return the previous tagger.
- */
- public static UUID setTagger(UUID tagger)
- {
- UUID prev = instance.tagger;
- instance.tagger = tagger;
-
- // announce that a new person is it
- Bukkit.getOnlinePlayers().stream().filter(player -> !player.getUniqueId().equals(tagger)).forEach(player -> player.sendMessage());
-
- return prev;
- }
-
/**
* Returns the current tagger.
*
@@ -95,6 +109,25 @@ public class AltitudeTag extends JavaPlugin
return instance.tagger;
}
+ /**
+ * Set the current tagger.
+ *
+ * @param tagger the new tagger.
+ */
+ public static void setTagger(UUID tagger)
+ {
+ // announce that a new person is it
+ Player previousPlayer = Bukkit.getPlayer(instance.tagger);
+
+ if (tagger != null)
+ {
+ NotificationHandler.sendGlobalNotifications(previousPlayer != null
+ ? previousPlayer.getName()
+ : null, Bukkit.getPlayer(tagger).getName());
+ }
+ instance.tagger = tagger;
+ }
+
/**
* Adds a tag for the given player.
*
diff --git a/src/main/java/com/alttd/altitudetag/Leaderboard.java b/src/main/java/com/alttd/altitudetag/Leaderboard.java
index 5e60a4e..4a505e9 100644
--- a/src/main/java/com/alttd/altitudetag/Leaderboard.java
+++ b/src/main/java/com/alttd/altitudetag/Leaderboard.java
@@ -43,7 +43,7 @@ public class Leaderboard
ex.printStackTrace();
}
- initializeLeaderboard();
+ Bukkit.getScheduler().runTaskLater(AltitudeTag.getInstance(), Leaderboard::initializeLeaderboard, 20);
}
/**
@@ -99,9 +99,9 @@ public class Leaderboard
{
ps.setString(1, uuid.toString());
- ResultSet rs = ps.getResultSet();
+ ResultSet rs = ps.executeQuery();
- if (rs.next())
+ if (rs != null && rs.next())
{
// call the consumer when the query returns back
consumer.accept(rs.getInt(1));
@@ -134,8 +134,8 @@ public class Leaderboard
config.set("leaderboard.location.z", Config.LEADERBOARD_LOCATION_Z.getValue());
AltitudeTag.getInstance().saveConfig();
- hologram.delete();
- initializeLeaderboard();
+ hologram.teleport(location);
+ refreshLeaderboard();
}
private static void initializeLeaderboard()
@@ -160,8 +160,11 @@ public class Leaderboard
private static void refreshLeaderboard()
{
- if (Config.LEADERBOARD_ENABLED.getValue())
+ if (!Config.LEADERBOARD_ENABLED.getValue())
{
+ return;
+ }
+
Objects.requireNonNull(hologram);
Bukkit.getScheduler().runTaskAsynchronously(AltitudeTag.getInstance(), () ->
@@ -170,22 +173,26 @@ public class Leaderboard
try (PreparedStatement ps = TagConnection.getConnection().prepareStatement(sql))
{
ps.setInt(1, Config.LEADERBOARD_TOP.getValue());
- ResultSet rs = ps.getResultSet();
+ ResultSet rs = ps.executeQuery();
for (int i = 0; i < Config.LEADERBOARD_TOP.getValue(); i++)
{
+ final int finalInt = i;
String text;
- if (rs.next())
+ if (rs != null && rs.next())
{
text = Lang.renderString(Config.LEADERBOARD_FORMAT.getValue(),
"{rank}", i,
- "{player}", Bukkit.getOfflinePlayer(UUID.fromString(rs.getString("player_uuid"))),
+ "{player}", Bukkit.getOfflinePlayer(UUID.fromString(rs.getString("player_uuid"))).getName(),
"{tags}", rs.getInt("player_tags"));
}
else
{
text = "";
}
- ((TextLine) hologram.getLine(i)).setText(text);
+ if (!((TextLine) hologram.getLine(finalInt + 1)).getText().equals(text))
+ {
+ Bukkit.getScheduler().runTask(AltitudeTag.getInstance(), () -> ((TextLine) hologram.getLine(finalInt + 1)).setText(text));
+ }
}
}
catch (SQLException ex)
@@ -193,6 +200,6 @@ public class Leaderboard
ex.printStackTrace();
}
});
- }
+
}
}
diff --git a/src/main/java/com/alttd/altitudetag/NotificationHandler.java b/src/main/java/com/alttd/altitudetag/NotificationHandler.java
index 888a967..9fd324a 100644
--- a/src/main/java/com/alttd/altitudetag/NotificationHandler.java
+++ b/src/main/java/com/alttd/altitudetag/NotificationHandler.java
@@ -68,18 +68,26 @@ public class NotificationHandler
{
if (attacker == null && Config.NOTIFICATION_GLOBAL_CHAT_OTHER_REASON_ENABLED.getValue())
{
+ // TODO make this actually do what it's supposed to
Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(Lang.renderString(Config.NOTIFICATION_GLOBAL_CHAT_OTHER_REASON_MESSAGE.getValue(),
- "{victim}", victim)));
+ "{target}", victim)));
}
if (attacker != null && Config.NOTIFICATION_GLOBAL_CHAT_AFTER_TAG_ENABLED.getValue())
{
Bukkit.getOnlinePlayers().forEach(p -> p.sendMessage(Lang.renderString(Config.NOTIFICATION_GLOBAL_CHAT_AFTER_TAG_MESSAGE.getValue(),
- "{victim}", victim,
+ "{target}", victim,
"{attacker}", attacker)));
}
+
+ if (Config.NOTIFICATION_GLOBAL_BOSS_BAR_ENABLED.getValue())
+ {
+ AltitudeTag.getBossBar().setTitle(Lang.renderString(Config.NOTIFICATION_GLOBAL_BOSS_BAR_MESSAGE.getValue(), "{player}", victim,
+ BarUtils.parseBarColor(Config.NOTIFICATION_GLOBAL_BOSS_BAR_COLOR.getValue()),
+ BarUtils.parseBarStyle(Config.NOTIFICATION_GLOBAL_BOSS_BAR_SEGMENTS.getValue())));
+ }
}
- public static void sendBossBar()
+ public static void loadBossBar()
{
if (Config.NOTIFICATION_GLOBAL_BOSS_BAR_ENABLED.getValue())
{
diff --git a/src/main/java/com/alttd/altitudetag/Permission.java b/src/main/java/com/alttd/altitudetag/Permission.java
index 84ceb4b..fca6dd3 100644
--- a/src/main/java/com/alttd/altitudetag/Permission.java
+++ b/src/main/java/com/alttd/altitudetag/Permission.java
@@ -3,8 +3,7 @@ package com.alttd.altitudetag;
public enum Permission
{
COMMAND_ADMIN("tag.commands.admin"),
- COMMAND_ADMIN_LOCATION("tag.commands.admin.location"),
- QUEUE_COMMAND("altiqueue.queue-command");
+ COMMAND_ADMIN_LOCATION("tag.commands.admin.location");
private String permission;
diff --git a/src/main/java/com/alttd/altitudetag/TagConnection.java b/src/main/java/com/alttd/altitudetag/TagConnection.java
index 597904a..c91d63c 100644
--- a/src/main/java/com/alttd/altitudetag/TagConnection.java
+++ b/src/main/java/com/alttd/altitudetag/TagConnection.java
@@ -19,7 +19,7 @@ public class TagConnection
private int port;
private String description;
- private TagConnection()
+ private TagConnection() throws SQLException, ClassNotFoundException
{
this.host = Config.DATABASE_HOSTNAME.getValue();
this.database = Config.DATABASE_DATABASE.getValue();
@@ -28,14 +28,9 @@ public class TagConnection
this.port = Config.DATABASE_PORT.getValue();
this.description = Config.DATABASE_DESCRIPTION.getValue();
- try
- {
- instance.openConnection();
- }
- catch (SQLException | ClassNotFoundException ex)
- {
- ex.printStackTrace();
- }
+ instance = this;
+
+ instance.openConnection();
}
private void openConnection() throws SQLException, ClassNotFoundException
@@ -70,7 +65,7 @@ public class TagConnection
return instance.connection;
}
- public static void initialize()
+ public static void initialize() throws SQLException, ClassNotFoundException
{
instance = new TagConnection();
}
diff --git a/src/main/java/com/alttd/altitudetag/commands/TagCommand.java b/src/main/java/com/alttd/altitudetag/commands/TagCommand.java
index 2d1c1a6..9203b34 100644
--- a/src/main/java/com/alttd/altitudetag/commands/TagCommand.java
+++ b/src/main/java/com/alttd/altitudetag/commands/TagCommand.java
@@ -11,7 +11,7 @@ public class TagCommand extends ValidBaseCommand
{
public TagCommand()
{
- super("tag", "Tag, you're it!", new String[]{ "tags", "tagging", "tagger" });
+ super("tag", "Tag, you're it!", "tag.play", new String[]{ "tags", "tagging", "tagger" });
addSubCommand(new TagAdminCommand());
}
diff --git a/src/main/java/com/alttd/altitudetag/commands/parsers/StringParser.java b/src/main/java/com/alttd/altitudetag/commands/parsers/StringParser.java
new file mode 100644
index 0000000..e0af9da
--- /dev/null
+++ b/src/main/java/com/alttd/altitudetag/commands/parsers/StringParser.java
@@ -0,0 +1,22 @@
+package com.alttd.altitudetag.commands.parsers;
+
+import java.util.List;
+
+import com.alttd.altitudeapi.commands.CommandHandler;
+import com.alttd.altitudeapi.commands.Parser;
+import org.bukkit.command.CommandSender;
+
+public class StringParser implements Parser
+{
+ @Override
+ public String parseArgument(CommandSender sender, String[] label, String rawArgument)
+ {
+ return rawArgument;
+ }
+
+ @Override
+ public List getRecommendations(CommandSender sender, String lastWord)
+ {
+ return CommandHandler.defaultTabComplete(sender, lastWord);
+ }
+}
diff --git a/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java b/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java
index 7668432..cde855b 100644
--- a/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java
+++ b/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java
@@ -20,8 +20,10 @@ public class ConnectionListener implements Listener
if (AltitudeTag.getTagger() == null)
{
AltitudeTag.setTagger(event.getPlayer().getUniqueId());
-
- NotificationHandler.sendVictimTitle(event.getPlayer(), true);
+ }
+ if (AltitudeTag.getBossBar() != null)
+ {
+ AltitudeTag.getBossBar().addPlayer(event.getPlayer());
}
}
diff --git a/src/main/java/com/alttd/altitudetag/listeners/InteractListener.java b/src/main/java/com/alttd/altitudetag/listeners/InteractListener.java
index 3245a6e..3606877 100644
--- a/src/main/java/com/alttd/altitudetag/listeners/InteractListener.java
+++ b/src/main/java/com/alttd/altitudetag/listeners/InteractListener.java
@@ -15,24 +15,26 @@ public class InteractListener implements Listener
if (event.getDamager() instanceof Player && event.getEntity() instanceof Player)
{
final Player tagger = (Player) event.getDamager();
+ if (!AltitudeTag.getTagger().equals(tagger.getUniqueId()))
+ {
+ return;
+ }
+
final Player tagged = (Player) event.getEntity();
// add the new tag
AltitudeTag.addTag(tagger.getUniqueId(), () ->
{
// if they left, we can stop
- if (!tagger.isOnline())
+ if (tagger.isOnline())
{
- return;
+ NotificationHandler.sendTaggerNotifications(tagger, tagged.getName());
}
- NotificationHandler.sendTaggerNotifications(tagger, tagged.getName());
});
AltitudeTag.setTagger(tagged.getUniqueId());
NotificationHandler.sendVictimTitle(tagged, false);
-
- NotificationHandler.sendGlobalNotifications(tagger.getName(), tagged.getName());
}
}
}
diff --git a/src/test/java/com/alttd/altiqueue/configuration/ConfigTest.java b/src/test/java/com/alttd/altiqueue/configuration/ConfigTest.java
deleted file mode 100644
index 04259be..0000000
--- a/src/test/java/com/alttd/altiqueue/configuration/ConfigTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.alttd.altiqueue.configuration;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-
-import org.bukkit.configuration.ConfigurationSection;
-import org.bukkit.configuration.file.YamlConfiguration;
-import org.junit.Test;
-
-public class ConfigTest
-{
- private List updateStrings = new ArrayList<>();
-
- private List declarationStrings = new ArrayList<>();
-
- @Test
- public void test_defaults()
- {
- YamlConfiguration config = YamlConfiguration.loadConfiguration(new File("src/main/resources/config.yml"));
-
- printChildren(config);
-
- //declarationStrings.forEach(System.out::println);
- //updateStrings.forEach(System.out::println);
- }
-
- private void printChildren(ConfigurationSection config)
- {
- for (String key : config.getKeys(false))
- {
- if (config.isConfigurationSection(key))
- {
- printChildren(Objects.requireNonNull(config.getConfigurationSection(key)));
- }
- else
- {
- String path = config.getCurrentPath() + "." + key;
- String value = config.isString(key) ? "\"" + config.get(key) + "\"" : Objects.requireNonNull(config.get(key)).toString();
- String type = config.isBoolean(key) ? "Boolean"
- : config.isDouble(key)
- ? "Double"
- : config.isInt(key)
- ? "Integer"
- : "String";
- String enumTitle = path.replace(".", "_").replace("-", "_").toUpperCase();
-
- updateStrings.add(String.format("updateValue(config, save, \"%s\", %s);", path, enumTitle));
- declarationStrings.add(String.format("public static final MutableValue<%s> %s = new MutableValue<>(%s);", type, enumTitle, value));
- }
- }
- }
-
-
-}
diff --git a/src/test/java/com/alttd/altiqueue/configuration/LangTest.java b/src/test/java/com/alttd/altiqueue/configuration/LangTest.java
deleted file mode 100644
index 8fbc94d..0000000
--- a/src/test/java/com/alttd/altiqueue/configuration/LangTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.alttd.altiqueue.configuration;
-
-import java.io.File;
-
-import com.alttd.altitudetag.configuration.Lang;
-import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-public class LangTest
-{
- private FileConfiguration config;
-
- @Before
- public void setup()
- {
- File file = new File("src/main/resources/lang.yml");
-
- config = YamlConfiguration.loadConfiguration(file);
- }
-
- @Test
- public void test_file_contains_options()
- {
- for (Lang lang : Lang.values())
- {
- //System.out.println(lang.getPath() + ": \"" + lang.getRawMessageCompiled() + "\"");
- }
- for (Lang lang : Lang.values())
- {
- if (!config.contains(lang.getPath()))
- {
- Assert.fail("Value missing from lang.yml: " + lang.name());
- }
- }
- }
-
- @Test
- public void test_defaults_match()
- {
- for (Lang lang : Lang.values())
- {
- if (!config.getString(lang.getPath()).equals(lang.getRawMessageCompiled()))
- {
- Assert.fail("Lang values don't match: " + lang.name());
- }
- }
- }
-}
diff --git a/src/test/java/com/alttd/altiqueue/listeners/ConnectionListenerTest.java b/src/test/java/com/alttd/altiqueue/listeners/ConnectionListenerTest.java
deleted file mode 100644
index 01a3212..0000000
--- a/src/test/java/com/alttd/altiqueue/listeners/ConnectionListenerTest.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package com.alttd.altiqueue.listeners;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import com.alttd.altitudetag.AltitudeTag;
-import com.alttd.altitudetag.NotificationHandler;
-import com.alttd.altitudetag.listeners.ConnectionListener;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-import org.bukkit.event.player.PlayerJoinEvent;
-import org.bukkit.event.player.PlayerQuitEvent;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.reflect.Whitebox;
-
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertSame;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.doReturn;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.verifyStatic;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ AltitudeTag.class, Bukkit.class, NotificationHandler.class })
-public class ConnectionListenerTest
-{
- private ConnectionListener listener;
-
- private PlayerJoinEvent joinEvent;
-
- private PlayerQuitEvent quitEvent;
-
- private Player player;
- private Player differentPlayer;
-
- private UUID playerUuid;
- private UUID differentUuid;
-
- private List players;
-
- @Before
- public void setup()
- {
- // create the uuids used
- differentUuid = UUID.fromString("00000000-0000-0000-0000-000000000001");
- playerUuid = UUID.fromString("00000000-0000-0000-0000-000000000000");
-
- listener = new ConnectionListener();
-
- // set up the base player
- player = mock(Player.class);
- when(player.getUniqueId()).thenReturn(playerUuid);
-
- // set up the other player
- differentPlayer = mock(Player.class);
- when(differentPlayer.getUniqueId()).thenReturn(differentUuid);
-
- // create the list of players
- players = new ArrayList<>();
- players.add(player);
- players.add(differentPlayer);
-
- // Bukkit is mine now!
- mockStatic(Bukkit.class);
-
- // AltitudeTag is... still mine!
- mockStatic(AltitudeTag.class);
- when(AltitudeTag.setTagger(any())).thenCallRealMethod();
-
- // NotificationHandler is... ah you get the point
- mockStatic(NotificationHandler.class);
-
- // do return players when Bukkit.getOnlinePlayers() is called
- doReturn(players).when(Bukkit.class);
- Bukkit.getOnlinePlayers();
-
- // set the instance of AltitudeTag
- Whitebox.setInternalState(AltitudeTag.class, "instance", mock(AltitudeTag.class));
-
- joinEvent = new PlayerJoinEvent(player, "");
- quitEvent = new PlayerQuitEvent(player, "");
- }
-
- @Test
- public void test_join_no_tagger()
- {
- // test when there is no tagger
- when(AltitudeTag.getTagger()).thenReturn(null).thenCallRealMethod();
-
- listener.onJoin(joinEvent);
-
- assertSame(playerUuid, AltitudeTag.getTagger());
- verifyStatic(NotificationHandler.class, times(1));
- NotificationHandler.sendVictimTitle(player, true);
- }
-
- @Test
- public void test_join_active_tagger()
- {
- // test when there is a tagger
- when(AltitudeTag.getTagger()).thenReturn(differentUuid);
-
- listener.onJoin(joinEvent);
-
- verify(player, never()).sendMessage(any(String.class));
- verify(player, never()).sendMessage(any(String[].class));
- assertNotSame(playerUuid, AltitudeTag.getTagger());
- verifyStatic(Bukkit.class, never());
- Bukkit.getOnlinePlayers();
- }
-
- @Test
- public void test_quit_not_tagger()
- {
- // test when they leave and aren't the tagger
- when(AltitudeTag.getTagger()).thenReturn(differentUuid);
-
- listener.onLeave(quitEvent);
-
- verifyStatic(Bukkit.class, never());
- Bukkit.getOnlinePlayers();
- }
-
- @Test
- public void test_quit_active_tagger_no_others()
- {
- // set the tagger to be the event player
- when(AltitudeTag.getTagger()).thenReturn(playerUuid);
- // make the event player be the only one online
- players.remove(differentPlayer);
-
- listener.onLeave(quitEvent);
-
- verifyStatic(AltitudeTag.class, times(1));
- AltitudeTag.setTagger(null);
- }
-
- @Test
- public void test_quit_active_tagger_are_others()
- {
- when(AltitudeTag.getTagger()).thenReturn(playerUuid);
-
- listener.onLeave(quitEvent);
-
- verifyStatic(AltitudeTag.class, times(1));
- AltitudeTag.setTagger(differentUuid);
- }
-}
diff --git a/src/test/java/com/alttd/altiqueue/listeners/InteractListenerTest.java b/src/test/java/com/alttd/altiqueue/listeners/InteractListenerTest.java
deleted file mode 100644
index deda7f8..0000000
--- a/src/test/java/com/alttd/altiqueue/listeners/InteractListenerTest.java
+++ /dev/null
@@ -1,216 +0,0 @@
-package com.alttd.altiqueue.listeners;
-
-import java.util.Collections;
-import java.util.UUID;
-import java.util.function.Consumer;
-
-import com.alttd.altitudetag.AltitudeTag;
-import com.alttd.altitudetag.listeners.InteractListener;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-import org.bukkit.entity.Sheep;
-import org.bukkit.entity.Wolf;
-import org.bukkit.event.entity.EntityDamageByEntityEvent;
-import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.reflect.Whitebox;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.doNothing;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.spy;
-import static org.powermock.api.mockito.PowerMockito.verifyStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ AltitudeTag.class, Bukkit.class })
-public class InteractListenerTest
-{
- private InteractListener listener;
-
- private EntityDamageByEntityEvent event;
-
- private Player attacker;
- private UUID attackerUuid = UUID.fromString("00000000-0000-0000-0000-000000000001");
-
- private Player victim;
- private UUID victimUuid = UUID.fromString("00000000-0000-0000-0000-000000000000");
-
- @Before
- public void setup()
- {
- listener = new InteractListener();
-
- mockStatic(Bukkit.class);
- when(Bukkit.getOnlinePlayers()).thenReturn(Collections.emptyList());
- }
-
- private void setup_both_players()
- {
- attacker = mock(Player.class);
- when(attacker.getUniqueId()).thenReturn(attackerUuid);
-
- victim = mock(Player.class);
- when(victim.getUniqueId()).thenReturn(victimUuid);
-
- event = spy(new EntityDamageByEntityEvent(attacker, victim, DamageCause.ENTITY_ATTACK, 1d));
-
- mockStatic(AltitudeTag.class);
- when(AltitudeTag.getTagger()).thenCallRealMethod();
- when(AltitudeTag.setTagger(any())).thenCallRealMethod();
-
- Whitebox.setInternalState(AltitudeTag.class, "instance", mock(AltitudeTag.class));
- }
-
- @Test
- public void test_two_players_normal()
- {
- setup_both_players();
-
- // override addTag
- ArgumentCaptor runnableCaptor = ArgumentCaptor.forClass(Runnable.class);
-
- doNothing().when(AltitudeTag.class);
- AltitudeTag.addTag(eq(attackerUuid), runnableCaptor.capture());
-
- // override getTag
- ArgumentCaptor consumerCaptor = ArgumentCaptor.forClass(Consumer.class);
-
- doNothing().when(AltitudeTag.class);
- AltitudeTag.getTags(eq(attackerUuid), consumerCaptor.capture());
-
- // they're always online
- when(attacker.isOnline()).thenReturn(true);
-
- // call the event
- listener.onHit(event);
-
- // capture the runnable and run it
- Runnable addTagRunnable = runnableCaptor.getValue();
- addTagRunnable.run();
-
- // capture the consumer and run it
- Consumer getTagsConsumer = consumerCaptor.getValue();
- getTagsConsumer.accept(10);
-
- assertEquals(victimUuid, AltitudeTag.getTagger());
- }
-
- @Test
- public void test_two_players_tagger_leave_before_message()
- {
- setup_both_players();
-
- // override addTag
- ArgumentCaptor runnableCaptor = ArgumentCaptor.forClass(Runnable.class);
- doNothing().when(AltitudeTag.class);
- AltitudeTag.addTag(eq(attackerUuid), runnableCaptor.capture());
-
- // override getTag
- ArgumentCaptor consumerCaptor = ArgumentCaptor.forClass(Consumer.class);
- doNothing().when(AltitudeTag.class);
- AltitudeTag.getTags(eq(attackerUuid), consumerCaptor.capture());
-
- // they're always online
- when(attacker.isOnline()).thenReturn(true).thenReturn(false);
-
- // call the event
- listener.onHit(event);
-
- // capture the runnable and run it
- Runnable addTagRunnable = runnableCaptor.getValue();
- addTagRunnable.run();
-
- // capture the consumer and run it
- Consumer getTagsConsumer = consumerCaptor.getValue();
- getTagsConsumer.accept(10);
-
- // assertions
- verify(attacker, times(2)).isOnline();
-
- verify(attacker, never()).sendMessage((String) any());
- verify(attacker, never()).sendMessage((String[]) any());
-
- assertEquals(victimUuid, AltitudeTag.getTagger());
- }
-
- @Test
- public void test_two_players_tagger_leave_before_get_tags()
- {
- setup_both_players();
-
- // override addTag
- ArgumentCaptor runnableCaptor = ArgumentCaptor.forClass(Runnable.class);
-
- doNothing().when(AltitudeTag.class);
- AltitudeTag.addTag(eq(attackerUuid), runnableCaptor.capture());
-
- // they're always offline
- when(attacker.isOnline()).thenReturn(false);
-
- // call the event
- listener.onHit(event);
-
- // capture the runnable and run it
- Runnable addTagRunnable = runnableCaptor.getValue();
- addTagRunnable.run();
-
- verify(attacker, never()).sendMessage((String) any());
- verify(attacker, never()).sendMessage((String[]) any());
-
- verifyStatic(AltitudeTag.class, never());
- AltitudeTag.getTags(any(), any());
-
- assertEquals(victimUuid, AltitudeTag.getTagger());
- }
-
- @Test
- public void test_no_players()
- {
- Wolf attacker = mock(Wolf.class);
- Sheep victim = mock(Sheep.class);
-
- event = spy(new EntityDamageByEntityEvent(attacker, victim, DamageCause.ENTITY_ATTACK, 1d));
-
- listener.onHit(event);
-
- verify(event, never()).getEntity();
- }
-
- @Test
- public void test_player_attacker_non_player_victim()
- {
- Player attacker = mock(Player.class);
- Sheep victim = mock(Sheep.class);
-
- event = spy(new EntityDamageByEntityEvent(attacker, victim, DamageCause.ENTITY_ATTACK, 1d));
-
- listener.onHit(event);
-
- verify(event, times(1)).getEntity();
- }
-
- @Test
- public void test_non_player_attacker_player_victim()
- {
- Wolf attacker = mock(Wolf.class);
- Player victim = mock(Player.class);
-
- event = spy(new EntityDamageByEntityEvent(attacker, victim, DamageCause.ENTITY_ATTACK, 1d));
-
- listener.onHit(event);
-
- verify(event, never()).getEntity();
- }
-}