diff --git a/changelog.md b/changelog.md index 6a89904..5bfe69c 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,10 @@ +# Unreleased + +# 3.0.7 + +- Add Ultimate Clan support +- Fix errors with Placeholders + # 3.0.6 - Some fixs diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 32a37a0..aad4ac1 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ 4.0.0 fr.maxlego08.koth zKoth - 3.0.6 + 3.0.7 src @@ -184,6 +184,12 @@ 2.15.2 provided + + com.github.UlrichBR + UClansV7-API + 7.7.0-r1 + provided + com.github.ShieldCommunity SternalBoard diff --git a/pom.xml b/pom.xml index 9f615e5..b074430 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 fr.maxlego08.koth zKoth - 3.0.6 + 3.0.7 UTF-8 8 @@ -242,5 +242,11 @@ ${basedir}/libs/GangsPlus-2.6.4.jar system + + com.github.UlrichBR + UClansV7-API + 7.7.0-r1 + provided + \ No newline at end of file diff --git a/src/fr/maxlego08/koth/KothPlaceholder.java b/src/fr/maxlego08/koth/KothPlaceholder.java index 025821f..3add9ef 100644 --- a/src/fr/maxlego08/koth/KothPlaceholder.java +++ b/src/fr/maxlego08/koth/KothPlaceholder.java @@ -120,9 +120,14 @@ public class KothPlaceholder extends ZUtils { try { return consumer.accept(Integer.parseInt(argument), optional.get()); } catch (Exception exception) { + if (Config.enableDebug) { + exception.printStackTrace(); + } return consumer.accept(-1, optional.get()); } - } else return Config.noKoth; + } else { + return Config.noKoth; + } } } diff --git a/src/fr/maxlego08/koth/ZKoth.java b/src/fr/maxlego08/koth/ZKoth.java index b837404..b608cb8 100644 --- a/src/fr/maxlego08/koth/ZKoth.java +++ b/src/fr/maxlego08/koth/ZKoth.java @@ -841,7 +841,7 @@ public class ZKoth extends ZUtils implements Koth { public PlayerResult getPlayer(int position) { this.sortScores(); - if (this.playerResults.size() > position) return Config.defaultPlayerResult; + if (this.playerResults.isEmpty() || position > this.playerResults.size()) return Config.defaultPlayerResult; return this.playerResults.get(position - 1); } diff --git a/src/fr/maxlego08/koth/api/utils/PlayerResult.java b/src/fr/maxlego08/koth/api/utils/PlayerResult.java index 5c7aa8f..e892e18 100644 --- a/src/fr/maxlego08/koth/api/utils/PlayerResult.java +++ b/src/fr/maxlego08/koth/api/utils/PlayerResult.java @@ -35,4 +35,15 @@ public class PlayerResult { public String getTeamLeader() { return teamLeader; } + + @Override + public String toString() { + return "PlayerResult{" + + "playerName='" + playerName + '\'' + + ", points=" + points + + ", teamName='" + teamName + '\'' + + ", teamId='" + teamId + '\'' + + ", teamLeader='" + teamLeader + '\'' + + '}'; + } } diff --git a/src/fr/maxlego08/koth/hook/TeamPlugin.java b/src/fr/maxlego08/koth/hook/TeamPlugin.java index 618eeb3..398d535 100644 --- a/src/fr/maxlego08/koth/hook/TeamPlugin.java +++ b/src/fr/maxlego08/koth/hook/TeamPlugin.java @@ -9,6 +9,7 @@ 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 fr.maxlego08.koth.hook.teams.UltimateClan; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; @@ -23,6 +24,7 @@ public enum TeamPlugin { FACTIONS("Factions", SaberFactionHook.class), SIMPLECLANS("SimpleClans", SimpleClanHook.class), GANGSPLUS("GangsPlus", GangsHook.class), + ULTIMATE_CLANS("UltimateClans", UltimateClan.class), ; diff --git a/src/fr/maxlego08/koth/hook/teams/UltimateClan.java b/src/fr/maxlego08/koth/hook/teams/UltimateClan.java new file mode 100644 index 0000000..18b14c5 --- /dev/null +++ b/src/fr/maxlego08/koth/hook/teams/UltimateClan.java @@ -0,0 +1,56 @@ +package fr.maxlego08.koth.hook.teams; + +import fr.maxlego08.koth.KothPlugin; +import fr.maxlego08.koth.api.KothTeam; +import me.ulrich.clans.Clans; +import me.ulrich.clans.data.ClanData; +import me.ulrich.clans.events.ClanDeleteEvent; +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 UltimateClan implements KothTeam { + + private final KothPlugin plugin; + private final Clans clans; + + public UltimateClan(KothPlugin plugin) { + this.plugin = plugin; + this.clans = (Clans) Bukkit.getPluginManager().getPlugin("UltimateClans"); + } + + @Override + public String getTeamName(OfflinePlayer player) { + Optional optional = this.clans.getPlayerAPI().getPlayerClan(player.getUniqueId()); + return optional.isPresent() ? optional.get().getTag() : player.getName(); + } + + @Override + public List getOnlinePlayer(OfflinePlayer player) { + Optional optional = this.clans.getPlayerAPI().getPlayerClan(player.getUniqueId()); + return optional.map(clanData -> clanData.getOnlineMembers().stream().map(Bukkit::getPlayer).collect(Collectors.toList())).orElseGet(() -> Collections.singletonList(player.getPlayer())); + } + + @Override + public String getLeaderName(OfflinePlayer player) { + Optional optional = this.clans.getPlayerAPI().getPlayerClan(player.getUniqueId()); + return optional.isPresent() ? Bukkit.getOfflinePlayer(optional.get().getLeader()).getName() : player.getName(); + } + + @Override + public String getTeamId(OfflinePlayer player) { + Optional optional = this.clans.getPlayerAPI().getPlayerClan(player.getUniqueId()); + return optional.isPresent() ? optional.get().getId().toString() : player.getUniqueId().toString(); + } + + @EventHandler + public void onDelete(ClanDeleteEvent event) { + this.plugin.getStorageManager().onTeamDisband(String.valueOf(event.getClanID().toString())); + } +}