diff --git a/pom.xml b/pom.xml index 5c3662e..8f070f0 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.alttd AltitudeTag - 0.0.1 + 1.0.0-SNAPSHOT UTF-8 @@ -28,9 +28,35 @@ mariadb-java-client 2.4.1 - + + + org.powermock + powermock-module-junit4 + 1.7.4 + test + + + + org.powermock + powermock-api-mockito2 + 1.7.4 + test + + + + com.gmail.filoghost.holographicdisplays + holographicdisplays-api + 2.3.2 + + + + filoghost-repo + https://ci.filoghost.me/plugin/repository/everything/ + + + diff --git a/src/main/java/com/alttd/altitudetag/AltitudeTag.java b/src/main/java/com/alttd/altitudetag/AltitudeTag.java index 6900e61..3f939d5 100644 --- a/src/main/java/com/alttd/altitudetag/AltitudeTag.java +++ b/src/main/java/com/alttd/altitudetag/AltitudeTag.java @@ -3,6 +3,7 @@ package com.alttd.altitudetag; import java.util.UUID; import java.util.function.Consumer; +import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; public class AltitudeTag extends JavaPlugin @@ -17,6 +18,21 @@ public class AltitudeTag extends JavaPlugin public void onEnable() { instance = this; + + if (!Bukkit.getPluginManager().isPluginEnabled("HolographicDisplays")) + { + getLogger().severe("*** HolographicDisplays is not installed or not enabled. ***"); + getLogger().severe("*** This plugin will be disabled. ***"); + this.setEnabled(false); + return; + } + + Bukkit.getScheduler().runTaskTimerAsynchronously(this, this::updateLeaderboard, 20, 10); + } + + private void updateLeaderboard() + { + } /** @@ -30,6 +46,10 @@ public class AltitudeTag extends JavaPlugin { 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; } diff --git a/src/main/java/com/alttd/altitudetag/Leaderboard.java b/src/main/java/com/alttd/altitudetag/Leaderboard.java index 4406223..3d97e7a 100644 --- a/src/main/java/com/alttd/altitudetag/Leaderboard.java +++ b/src/main/java/com/alttd/altitudetag/Leaderboard.java @@ -52,6 +52,7 @@ public class Leaderboard else { sql = "INSERT INTO Players (PlayerUuidMost, PlayerUuidLeast) VALUES (?, ?);"; + } // prepare the statement try (PreparedStatement ps = TagConnection.getConnection().prepareStatement(sql)) diff --git a/src/main/java/com/alttd/altitudetag/configuration/Config.java b/src/main/java/com/alttd/altitudetag/configuration/Config.java index c61ee1e..ccd06c7 100644 --- a/src/main/java/com/alttd/altitudetag/configuration/Config.java +++ b/src/main/java/com/alttd/altitudetag/configuration/Config.java @@ -69,6 +69,9 @@ public final class Config updateValue(config, save, "database.timeout", DATABASE_TIMEOUT); updateValue(config, save, "database.description", DATABASE_CONNECTION_DESCRIPTION); + // Notification information + + if (save.getValue()) { AltitudeTag.getInstance().saveConfig(); diff --git a/src/main/java/com/alttd/altitudetag/configuration/Lang.java b/src/main/java/com/alttd/altitudetag/configuration/Lang.java index 6b302db..ce0385e 100644 --- a/src/main/java/com/alttd/altitudetag/configuration/Lang.java +++ b/src/main/java/com/alttd/altitudetag/configuration/Lang.java @@ -54,8 +54,18 @@ public enum Lang * When the console tries to run a player-only command. */ ONLY_PLAYERS("only_players", "Only players can run that command."), + /** + * Sent to someone when they become it + */ YOURE_IT("youre-it", "You're it! Try to tag someone!"), - TAGGED("tagged", "Nice tag! You're up to {tags} tags!"); + /** + * When you tag someone + */ + TAGGED("tagged", "&7Nice tag! You're not it anymore. You're up to &b{tags}&7 tags!"), + /** + * Broadcast to the server when a new person becomes it. + */ + NEW_TAGGER("new_tagger", "Uh oh, {player} is it! Run!!"); private String[] message; diff --git a/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java b/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java index 30482a1..a401aac 100644 --- a/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java +++ b/src/main/java/com/alttd/altitudetag/listeners/ConnectionListener.java @@ -1,9 +1,12 @@ package com.alttd.altitudetag.listeners; -import com.alttd.altitudeapi.utils.CollectionUtils; +import java.util.Optional; +import java.util.UUID; + import com.alttd.altitudetag.AltitudeTag; import com.alttd.altitudetag.configuration.Lang; import org.bukkit.Bukkit; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; @@ -26,10 +29,21 @@ public class ConnectionListener implements Listener { if (event.getPlayer().getUniqueId().equals(AltitudeTag.getTagger())) { - AltitudeTag.setTagger(CollectionUtils.randomValue(Bukkit.getOnlinePlayers()).getUniqueId()); - Lang.YOURE_IT.send(event.getPlayer()); + if (Bukkit.getOnlinePlayers().size() == 1) + { + AltitudeTag.setTagger(null); + } + else + { + Optional optional = Bukkit.getOnlinePlayers().stream().filter(p -> p != event.getPlayer()).findAny(); + if (!optional.isPresent()) + { + throw new IllegalStateException("There is more than one player on but for some reason they are all: " + event.getPlayer().getUniqueId()); + } + UUID uuid = optional.get().getUniqueId(); + AltitudeTag.setTagger(uuid); + Lang.YOURE_IT.send(event.getPlayer()); + } } } - - } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 352197a..7e10a14 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -5,4 +5,43 @@ database: password: password database: AltitudeTag timeout: 100 - description: 'Altitude Connection' \ No newline at end of file + description: 'Altitude Connection' +leaderboard: + enabled: true + title: '&b&lAltitude Tag Leaderboard' + format: '&6{rank}. &e{player} &7- &e{tags}' + top: 10 + location: + world: world + x: 10.0 + y: 50.0 + z: 10.0 +notification: + sound: + enabled: false + type: ITEM_BREAK + join-delay: + enabled: true + length: 60 + actionbar: + enabled: true + message: "&eTag: You're it - tag someone!" + duration: -1 + title: + enabled: true + message: '&6Tag' + duration: 100 + sub-title: + enabled: true + message: "&eYou're it!" + join-delay: + enabled: true + length: 60 + boss-bar: + # Options: 0, 6, 10, 12, 20 + segments: 0 + percent: 0 + message: "&eTag: You're it - tag someone!" + chat: + enabled: false + message: "&eTag: You're it - tag someone!" \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index cce10fd..f8039d6 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,4 +1,5 @@ main: com.alttd.altitudetag.AltitudeTag name: AltitudeTag version: ${project.version} -author: Michael Ziluck \ No newline at end of file +author: Michael Ziluck +softdepend: [HolographicDisplays] \ No newline at end of file