diff --git a/MMOCore-API/pom.xml b/MMOCore-API/pom.xml index cab7f459..26f77a47 100644 --- a/MMOCore-API/pom.xml +++ b/MMOCore-API/pom.xml @@ -196,6 +196,13 @@ provided + + com.civious + OBTeam + 1.1 + provided + + com.alessiodp Parties diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyModuleType.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyModuleType.java index 5c497ea9..bf93487f 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyModuleType.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyModuleType.java @@ -12,6 +12,7 @@ public enum PartyModuleType { MCMMO("mcMMO", McMMOPartyModule::new), MMOCORE("MMOCore", MMOCorePartyModule::new), PARTIES("Parties", PartiesPartyModule::new), + OBTEAM("OBTeam", OBTeamPartyModule::new), PARTY_AND_FRIENDS("PartyAndFriends", PAFPartyModule::new), PARTY_AND_FRIENDS_BUNGEECORD_VELOCITY("Spigot-Party-API-PAF", PAFProxyPartyModule::new), ; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/DungeonsXLPartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/DungeonsXLPartyModule.java index 92f89b17..381ef5e7 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/DungeonsXLPartyModule.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/DungeonsXLPartyModule.java @@ -68,7 +68,7 @@ public class DungeonsXLPartyModule implements PartyModule, Listener { MMOCore.plugin.partyManager.getBonuses().forEach(buff -> buff.unregister(player.getMMOPlayerData())); } - class CustomParty implements AbstractParty, Listener { + class CustomParty implements AbstractParty { private final PlayerGroup group; public CustomParty(PlayerGroup group) { diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/McMMOPartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/McMMOPartyModule.java index 5da0bf71..ac2bf019 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/McMMOPartyModule.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/McMMOPartyModule.java @@ -74,12 +74,11 @@ public class McMMOPartyModule implements PartyModule, Listener { MMOCore.plugin.partyManager.getBonuses().forEach(buff -> buff.unregister(player.getMMOPlayerData())); } - class CustomParty implements AbstractParty, Listener { + class CustomParty implements AbstractParty { private final Party party; public CustomParty(Party party) { this.party = party; - Bukkit.getPluginManager().registerEvents(this, MMOCore.plugin); } @Override diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/OBTeamPartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/OBTeamPartyModule.java new file mode 100644 index 00000000..72217bc3 --- /dev/null +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/OBTeamPartyModule.java @@ -0,0 +1,59 @@ +package net.Indyuce.mmocore.party.compat; + +import com.civious.obteam.mechanics.Team; +import com.civious.obteam.mechanics.TeamManager; +import com.civious.obteam.mechanics.TeamMember; +import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.party.AbstractParty; +import net.Indyuce.mmocore.party.PartyModule; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; + +public class OBTeamPartyModule implements PartyModule, Listener { + + @Nullable + @Override + public AbstractParty getParty(PlayerData playerData) { + final @Nullable Team team = TeamManager.getInstance().getTeam(playerData.getPlayer()); + return team == null ? null : new CustomParty(team); + } + + class CustomParty implements AbstractParty { + private final Team team; + + public CustomParty(Team team) { + this.team = team; + } + + @Override + public boolean hasMember(Player player) { + for (TeamMember member : team.getMembers()) + if (member.getOfflinePlayer().getUniqueId().equals(player.getUniqueId())) return true; + return false; + } + + @Override + public List getOnlineMembers() { + final List list = new ArrayList<>(); + + for (TeamMember member : team.getMembersAndOwner()) + try { + list.add(PlayerData.get(member.getOfflinePlayer().getUniqueId())); + } catch (Exception ignored) { + } + + return list; + } + + @Override + public int countMembers() { + return team.getMembersAndOwner().size(); + } + } +} diff --git a/MMOCore-Dist/src/main/resources/config.yml b/MMOCore-Dist/src/main/resources/config.yml index 6744a1da..2cfd8575 100644 --- a/MMOCore-Dist/src/main/resources/config.yml +++ b/MMOCore-Dist/src/main/resources/config.yml @@ -60,6 +60,7 @@ protect-custom-mine: false # - party_and_friends (Use this one if you are using Party and Friends Extended for Spigot) # - party_and_friends_bungeecord_velocity (Use this one if you are using Party and Friends For Bungeecord, Party and Friends For Velocity or Party and Friends Extended Edition for Bungeecord/Velocity. This one requires https://www.spigotmc.org/resources/spigot-party-api-for-party-and-friends.39751/ to be installed) # - mcmmo +# - obteam (addon for DungeonMMO) party-plugin: mmocore # Edit the plugin handling guilds here.