diff --git a/pom.xml b/pom.xml
index 4d0c568..280ab33 100644
--- a/pom.xml
+++ b/pom.xml
@@ -112,6 +112,10 @@
bg-repo
https://repo.bg-software.com/repository/api/
+
+ codemc-repo
+ https://repo.codemc.org/repository/maven-public
+
@@ -225,5 +229,11 @@
${basedir}/libs/SaberFactions.jar
system
+
+ net.sacredlabyrinth.phaed.simpleclans
+ SimpleClans
+ 2.15.2
+ provided
+
\ No newline at end of file
diff --git a/src/fr/maxlego08/koth/KothManager.java b/src/fr/maxlego08/koth/KothManager.java
index e8c5880..211e6d5 100644
--- a/src/fr/maxlego08/koth/KothManager.java
+++ b/src/fr/maxlego08/koth/KothManager.java
@@ -20,6 +20,7 @@ import fr.maxlego08.koth.zcore.utils.storage.Persist;
import fr.maxlego08.koth.zcore.utils.storage.Savable;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;
+import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
@@ -55,10 +56,12 @@ public class KothManager extends ZUtils implements Savable {
for (TeamPlugin value : TeamPlugin.values()) {
if (value.isEnable()) {
- kothTeam = value.init(plugin);
+ this.kothTeam = value.init(plugin);
Logger.info("Register " + value.getPluginName() + " team implementation.", Logger.LogType.INFO);
}
}
+
+ Bukkit.getPluginManager().registerEvents(this.kothTeam, plugin);
}
@Override
diff --git a/src/fr/maxlego08/koth/hook/TeamPlugin.java b/src/fr/maxlego08/koth/hook/TeamPlugin.java
index d53e09c..1d9d43d 100644
--- a/src/fr/maxlego08/koth/hook/TeamPlugin.java
+++ b/src/fr/maxlego08/koth/hook/TeamPlugin.java
@@ -6,6 +6,7 @@ import fr.maxlego08.koth.hook.teams.BetterTeamHook;
import fr.maxlego08.koth.hook.teams.HuskTownHook;
import fr.maxlego08.koth.hook.teams.LandHook;
import fr.maxlego08.koth.hook.teams.SaberFactionHook;
+import fr.maxlego08.koth.hook.teams.SimpleClanHook;
import fr.maxlego08.koth.hook.teams.SuperiorSkyblock2Hook;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
@@ -19,6 +20,7 @@ public enum TeamPlugin {
SUPERIORSKYBLOCK("SuperiorSkyblock2", SuperiorSkyblock2Hook.class),
BETTERTEAMS("BetterTeams", BetterTeamHook.class),
FACTIONS("Factions", SaberFactionHook.class),
+ SIMPLECLANS("SimpleClans", SimpleClanHook.class),
;
diff --git a/src/fr/maxlego08/koth/hook/teams/SimpleClanHook.java b/src/fr/maxlego08/koth/hook/teams/SimpleClanHook.java
new file mode 100644
index 0000000..3a02c84
--- /dev/null
+++ b/src/fr/maxlego08/koth/hook/teams/SimpleClanHook.java
@@ -0,0 +1,66 @@
+package fr.maxlego08.koth.hook.teams;
+
+import fr.maxlego08.koth.KothPlugin;
+import fr.maxlego08.koth.api.KothTeam;
+import net.sacredlabyrinth.phaed.simpleclans.Clan;
+import net.sacredlabyrinth.phaed.simpleclans.ClanPlayer;
+import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
+import net.sacredlabyrinth.phaed.simpleclans.events.DisbandClanEvent;
+import org.bukkit.Bukkit;
+import org.bukkit.OfflinePlayer;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+public class SimpleClanHook implements KothTeam {
+
+ private final KothPlugin plugin;
+ private final SimpleClans clan;
+
+ public SimpleClanHook(KothPlugin plugin) {
+ this.plugin = plugin;
+ this.clan = (SimpleClans) Bukkit.getServer().getPluginManager().getPlugin("SimpleClans");
+ }
+
+ private Optional getClan(Player player) {
+ ClanPlayer clanPlayer = this.clan.getClanManager().getClanPlayer(player);
+ if (clanPlayer == null) return Optional.empty();
+ return Optional.ofNullable(clanPlayer.getClan());
+ }
+
+ @Override
+ public String getTeamName(Player player) {
+ Optional optional = getClan(player);
+ return optional.isPresent() ? optional.get().getName() : player.getName();
+ }
+
+ @Override
+ public List getOnlinePlayer(Player player) {
+ Optional optional = getClan(player);
+ return optional.map(value -> value.getOnlineMembers().stream().map(e -> Bukkit.getOfflinePlayer(e.getUniqueId()))
+ .filter(OfflinePlayer::isOnline).map(OfflinePlayer::getPlayer).collect(Collectors.toList())).orElseGet(() -> Collections.singletonList(player));
+ }
+
+ @Override
+ public String getLeaderName(Player player) {
+ Optional optional = getClan(player);
+ if (!optional.isPresent()) return player.getName();
+ Clan clan = optional.get();
+ return clan.getMembers().stream().filter(e -> clan.isLeader(e.getUniqueId())).findFirst().map(ClanPlayer::getName).orElseGet(player::getName);
+ }
+
+ @Override
+ public String getTeamId(Player player) {
+ Optional optional = getClan(player);
+ return optional.isPresent() ? optional.get().getName() : player.getUniqueId().toString();
+ }
+
+ @EventHandler
+ public void onClan(DisbandClanEvent event) {
+ this.plugin.getStorageManager().onTeamDisband(event.getClan().getName());
+ }
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index c65c9fd..f113724 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -59,6 +59,7 @@
# - BetterTeams
# - SaberFaction
# - FactionUUID
+# - SimpleClan
#
# Need scheduler ? Use zScheduler: https://www.spigotmc.org/resources/zschedulers.112705/
#