From d248f11a0ecdc6fbf8f679200c166779ee248cea Mon Sep 17 00:00:00 2001 From: Jules Date: Fri, 26 Jul 2024 14:02:50 -0700 Subject: [PATCH] Support for MythicDungeons & Heroes party systems --- MMOCore-API/pom.xml | 38 ++++++++++++ .../mmocore/manager/social/PartyManager.java | 5 +- .../Indyuce/mmocore/party/AbstractParty.java | 11 ++-- .../Indyuce/mmocore/party/PartyModule.java | 17 ++---- .../mmocore/party/PartyModuleType.java | 2 + .../net/Indyuce/mmocore/party/PartyUtils.java | 22 +++++++ .../party/compat/DungeonsPartyModule.java | 2 +- .../party/compat/DungeonsXLPartyModule.java | 14 ++--- .../party/compat/HeroesPartyModule.java | 56 ++++++++++++++++++ .../party/compat/McMMOPartyModule.java | 11 ++-- .../compat/MythicDungeonsPartyInjector.java | 59 +++++++++++++++++++ .../compat/MythicDungeonsPartyModule.java | 3 +- .../party/compat/OBTeamPartyModule.java | 5 +- .../mmocore/party/compat/PAFPartyModule.java | 2 +- .../party/compat/PAFProxyPartyModule.java | 2 +- .../party/compat/PartiesPartyModule.java | 9 +-- .../party/provided/MMOCorePartyModule.java | 9 +-- .../Indyuce/mmocore/party/provided/Party.java | 7 ++- 18 files changed, 224 insertions(+), 50 deletions(-) create mode 100644 MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyUtils.java create mode 100644 MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/HeroesPartyModule.java create mode 100644 MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/MythicDungeonsPartyInjector.java diff --git a/MMOCore-API/pom.xml b/MMOCore-API/pom.xml index 9adec539..3455a2bd 100644 --- a/MMOCore-API/pom.xml +++ b/MMOCore-API/pom.xml @@ -105,6 +105,12 @@ https://simonsator.de/repo + + @@ -146,6 +152,7 @@ lombok 1.18.20 provided + true @@ -154,6 +161,7 @@ Mythic-Dist 5.0.1 provided + true @@ -161,6 +169,7 @@ MythicDungeons 1.4.1-SNAPSHOT-CUSTOM provided + true @@ -176,6 +185,7 @@ placeholderapi 2.9.2 provided + true @@ -183,6 +193,7 @@ VaultAPI 1.7.1 provided + true @@ -190,6 +201,7 @@ worldguard-bukkit 7.0.2-SNAPSHOT provided + true @@ -208,6 +220,7 @@ ProtocolLib 4.8.0 provided + true @@ -215,6 +228,7 @@ Citizens 2.0.30 provided + true @@ -223,6 +237,7 @@ DevelopmentPAFSpigot 1.0.65 provided + true @@ -230,6 +245,7 @@ Party-and-Friends-MySQL-Edition-Spigot-API 1.5.4-RELEASE provided + true @@ -237,6 +253,7 @@ spigot-party-api-for-party-and-friends 1.0.4-RELEASE provided + true @@ -244,6 +261,7 @@ OBTeam 1.1 provided + true @@ -251,6 +269,7 @@ Parties 3.1.14 provided + true @@ -258,6 +277,7 @@ mcMMO 2.1.209 provided + true @@ -265,6 +285,15 @@ DungeonsXL 0.18-SNAPSHOT-1149 provided + true + + + + com.herocraftonline + Heroes + 1.9.22 + provided + true @@ -272,6 +301,7 @@ Bedrock 1.2.5 provided + true @@ -279,6 +309,7 @@ Dungeons 1.0 provided + true @@ -287,24 +318,28 @@ Quests 4.4.1-b340 provided + true fr.skytasul.quests BeautyQuests 0.19.5 provided + true com.guillaumevdn QuestCreator 6.39.0 provided + true com.guillaumevdn GCore 8.39.0 provided + true @@ -321,6 +356,7 @@ UClansV7-API 7.1.0 provided + true @@ -328,6 +364,7 @@ Guilds 3.5.6.0 provided + true @@ -335,6 +372,7 @@ Kingdoms 1.15.5 provided + true diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/social/PartyManager.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/social/PartyManager.java index 8baca46b..2c32f9b8 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/social/PartyManager.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/social/PartyManager.java @@ -6,6 +6,7 @@ import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.manager.MMOCoreManager; import net.Indyuce.mmocore.party.AbstractParty; +import net.Indyuce.mmocore.party.PartyUtils; import org.bukkit.configuration.ConfigurationSection; import java.util.HashSet; @@ -23,7 +24,7 @@ public class PartyManager implements MMOCoreManager { public void initialize(boolean clearBefore) { if (clearBefore) { // Fixes MMOCore#1035, first remove existing buffs of players. - PlayerData.getAll().forEach(MMOCore.plugin.partyModule::clearStatBonuses); + PlayerData.getAll().forEach(PartyUtils::clearStatBonuses); buffs.clear(); } @@ -40,7 +41,7 @@ public class PartyManager implements MMOCoreManager { if (clearBefore) for (PlayerData playerData : PlayerData.getAll()) { AbstractParty party = MMOCore.plugin.partyModule.getParty(playerData); - if (party != null) MMOCore.plugin.partyModule.applyStatBonuses(playerData, party.countMembers()); + if (party != null) PartyUtils.applyStatBonuses(playerData, party.countMembers()); } } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/AbstractParty.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/AbstractParty.java index 05fb4e2b..536401e9 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/AbstractParty.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/AbstractParty.java @@ -2,6 +2,7 @@ package net.Indyuce.mmocore.party; import net.Indyuce.mmocore.api.player.PlayerData; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; import java.util.List; @@ -10,17 +11,17 @@ public interface AbstractParty { /** * @return If given player is in that party */ - boolean hasMember(Player player); + default boolean hasMember(@NotNull Player player) { + for (PlayerData member : getOnlineMembers()) + if (member.getPlayer().equals(player)) return true; + return false; + } /** * @return List of online members */ List getOnlineMembers(); - /** - * @deprecated Prefer using {@link #getOnlineMembers()} - */ - @Deprecated default PlayerData getMember(int n) { return getOnlineMembers().get(n); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyModule.java index 314c1001..cf8ef516 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyModule.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyModule.java @@ -1,26 +1,21 @@ package net.Indyuce.mmocore.party; -import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.player.PlayerData; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public interface PartyModule { @Nullable - public AbstractParty getParty(PlayerData playerData); + public AbstractParty getParty(@NotNull PlayerData playerData); - - /** - * Applies party stat bonuses to a specific player - */ + @Deprecated default void applyStatBonuses(PlayerData player, int memberCount) { - MMOCore.plugin.partyManager.getBonuses().forEach(buff -> buff.multiply(memberCount - 1).register(player.getMMOPlayerData())); + PartyUtils.applyStatBonuses(player, memberCount); } - /** - * Clear party stat bonuses from a player - */ + @Deprecated default void clearStatBonuses(PlayerData player) { - MMOCore.plugin.partyManager.getBonuses().forEach(buff -> buff.unregister(player.getMMOPlayerData())); + PartyUtils.clearStatBonuses(player); } } 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 0ee40aab..cd5b6ec4 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 @@ -10,7 +10,9 @@ public enum PartyModuleType { MMOCORE("MMOCore", MMOCorePartyModule::new), // DUNGEONS("Dungeons", DungeonsPartyModule::new), DUNGEONSXL("DungeonsXL", DungeonsXLPartyModule::new), + HEROES("Heroes", HeroesPartyModule::new), MCMMO("mcMMO", McMMOPartyModule::new), + MYTHICDUNGEONS_INJECT("MythicDungeons", MythicDungeonsPartyInjector::new), MYTHICDUNGEONS("MythicDungeons", MythicDungeonsPartyModule::new), OBTEAM("OBTeam", OBTeamPartyModule::new), PARTY_AND_FRIENDS("PartyAndFriends", PAFPartyModule::new), diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyUtils.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyUtils.java new file mode 100644 index 00000000..65acad9d --- /dev/null +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/PartyUtils.java @@ -0,0 +1,22 @@ +package net.Indyuce.mmocore.party; + +import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.player.PlayerData; +import org.jetbrains.annotations.NotNull; + +public class PartyUtils { + + /** + * Applies party stat bonuses to a specific player + */ + public static void applyStatBonuses(@NotNull PlayerData player, int memberCount) { + MMOCore.plugin.partyManager.getBonuses().forEach(buff -> buff.multiply(memberCount - 1).register(player.getMMOPlayerData())); + } + + /** + * Clear party stat bonuses from a player + */ + public static void clearStatBonuses(@NotNull PlayerData player) { + MMOCore.plugin.partyManager.getBonuses().forEach(buff -> buff.unregister(player.getMMOPlayerData())); + } +} diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/DungeonsPartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/DungeonsPartyModule.java index a2992622..c1bd6d54 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/DungeonsPartyModule.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/DungeonsPartyModule.java @@ -15,7 +15,7 @@ public class DungeonsPartyModule implements PartyModule { throw new RuntimeException("Not supported"); } - class CustomParty implements AbstractParty { + private static class CustomParty implements AbstractParty { public CustomParty() { } 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 9954b7d0..17a765b9 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 @@ -9,6 +9,7 @@ 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 net.Indyuce.mmocore.party.PartyUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -34,25 +35,25 @@ public class DungeonsXLPartyModule implements PartyModule, Listener { public void onPlayerJoin(GroupPlayerJoinEvent event) { //We add 1 because this returns the members of the group excluding the player that just joined. int membersSize = event.getGroup().getMembers().size() + 1; - applyStatBonuses(PlayerData.get(event.getPlayer().getPlayer()), membersSize); + PartyUtils.applyStatBonuses(PlayerData.get(event.getPlayer().getPlayer()), membersSize); event.getGroup().getMembers().getOnlinePlayers() - .forEach(p -> applyStatBonuses(PlayerData.get(p), membersSize)); + .forEach(p -> PartyUtils.applyStatBonuses(PlayerData.get(p), membersSize)); } @EventHandler public void onPlayerLeave(GroupPlayerLeaveEvent event) { int membersSize = event.getGroup().getMembers().size(); - clearStatBonuses(PlayerData.get(event.getPlayer().getPlayer())); + PartyUtils.clearStatBonuses(PlayerData.get(event.getPlayer().getPlayer())); event.getGroup().getMembers().getOnlinePlayers() - .forEach(p -> applyStatBonuses(PlayerData.get(p), membersSize)); + .forEach(p -> PartyUtils.applyStatBonuses(PlayerData.get(p), membersSize)); } @EventHandler public void onGroupDisband(GroupDisbandEvent event) { - event.getGroup().getMembers().getOnlinePlayers().forEach(p -> clearStatBonuses(PlayerData.get(p))); + event.getGroup().getMembers().getOnlinePlayers().forEach(p -> PartyUtils.clearStatBonuses(PlayerData.get(p))); } - class CustomParty implements AbstractParty { + private static class CustomParty implements AbstractParty { private final PlayerGroup group; public CustomParty(PlayerGroup group) { @@ -81,6 +82,5 @@ public class DungeonsXLPartyModule implements PartyModule, Listener { public int countMembers() { return group.getMembers().getUniqueIds().size(); } - } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/HeroesPartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/HeroesPartyModule.java new file mode 100644 index 00000000..9b2b144c --- /dev/null +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/HeroesPartyModule.java @@ -0,0 +1,56 @@ +package net.Indyuce.mmocore.party.compat; + +import com.herocraftonline.heroes.Heroes; +import com.herocraftonline.heroes.characters.Hero; +import com.herocraftonline.heroes.characters.party.HeroParty; +import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.party.AbstractParty; +import net.Indyuce.mmocore.party.PartyModule; +import org.bukkit.entity.Player; +import org.bukkit.event.Listener; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; + +public class HeroesPartyModule implements PartyModule, Listener { + + @Nullable + @Override + public AbstractParty getParty(PlayerData playerData) { + final Hero hero = Heroes.getInstance().getCharacterManager().getHero(playerData.getPlayer()); + return hero.getParty() == null ? null : new CustomParty(hero.getParty()); + } + + private static class CustomParty implements AbstractParty { + private final HeroParty party; + + public CustomParty(HeroParty party) { + this.party = party; + } + + @Override + public boolean hasMember(@NotNull Player player) { + return party.isPartyMember(player); + } + + @Override + public List getOnlineMembers() { + final List list = new ArrayList<>(); + + for (Hero hero : party.getMembers()) + try { + list.add(PlayerData.get(hero.getPlayer())); + } catch (Exception ignored) { + } + + return list; + } + + @Override + public int countMembers() { + return party.getMembers().size(); + } + } +} 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 f429e8f5..30804b46 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 @@ -9,6 +9,7 @@ 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 net.Indyuce.mmocore.party.PartyUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -43,8 +44,8 @@ public class McMMOPartyModule implements PartyModule, Listener { int membersSize = party.getMembers().size(); if(membersSize!=1 || party.getOnlineMembers().get(0)!=event.getPlayer()) { party.getOnlineMembers() - .forEach(p -> applyStatBonuses(PlayerData.get(p), membersSize+1)); - applyStatBonuses(PlayerData.get(event.getPlayer()), membersSize+1); + .forEach(p -> PartyUtils.applyStatBonuses(PlayerData.get(p), membersSize+1)); + PartyUtils.applyStatBonuses(PlayerData.get(event.getPlayer()), membersSize+1); } } } @@ -54,13 +55,13 @@ public class McMMOPartyModule implements PartyModule, Listener { //This is the size of the party before the player leaves=> we decrement it by 1. int membersSize = party.getMembers().size() - 1; party.getOnlineMembers() - .forEach(p -> applyStatBonuses(PlayerData.get(p), membersSize)); - clearStatBonuses(PlayerData.get(event.getPlayer().getPlayer())); + .forEach(p -> PartyUtils.applyStatBonuses(PlayerData.get(p), membersSize)); + PartyUtils.clearStatBonuses(PlayerData.get(event.getPlayer().getPlayer())); } } } - class CustomParty implements AbstractParty { + private static class CustomParty implements AbstractParty { private final Party party; public CustomParty(Party party) { diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/MythicDungeonsPartyInjector.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/MythicDungeonsPartyInjector.java new file mode 100644 index 00000000..250fb136 --- /dev/null +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/MythicDungeonsPartyInjector.java @@ -0,0 +1,59 @@ +package net.Indyuce.mmocore.party.compat; + +import io.lumine.mythic.lib.data.SynchronizedDataHolder; +import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.party.provided.MMOCorePartyModule; +import net.Indyuce.mmocore.party.provided.Party; +import net.playavalon.mythicdungeons.api.party.IDungeonParty; +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.logging.Level; +import java.util.stream.Collectors; + +/** + * Used to inject MMOCore party system into MythicDungeons + */ +public class MythicDungeonsPartyInjector extends MMOCorePartyModule { + public MythicDungeonsPartyInjector() { + MMOCore.plugin.getLogger().log(Level.INFO, "Injecting MMOCore party system into MythicDungeons"); + } + + @Override + public Party newRegisteredParty(PlayerData owner) { + final CustomParty party = new CustomParty(this, owner); + parties.add(party); + party.initDungeonParty(MMOCore.plugin); + return party; + } + + private static class CustomParty extends Party implements IDungeonParty { + public CustomParty(MMOCorePartyModule module, PlayerData owner) { + super(module, owner); + } + + @Override + public void addPlayer(Player player) { + addMember(PlayerData.get(player)); + } + + @Override + public void removePlayer(Player player) { + removeMember(PlayerData.get(player)); + } + + @Override + public List getPlayers() { + return getMembers().stream().map(SynchronizedDataHolder::getPlayer).collect(Collectors.toList()); + } + + @NotNull + @Override + public OfflinePlayer getLeader() { + return getOwner().getPlayer(); + } + } +} diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/MythicDungeonsPartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/MythicDungeonsPartyModule.java index f5bcea97..de59bd3c 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/MythicDungeonsPartyModule.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/MythicDungeonsPartyModule.java @@ -29,8 +29,7 @@ public class MythicDungeonsPartyModule implements PartyModule, Listener { return party == null ? null : new CustomParty(party); } - - static class CustomParty implements AbstractParty { + private static class CustomParty implements AbstractParty { private final MythicParty party; public CustomParty(MythicParty party) { 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 index f5fd7c5f..043d910b 100644 --- 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 @@ -3,11 +3,9 @@ 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; @@ -23,8 +21,7 @@ public class OBTeamPartyModule implements PartyModule, Listener { final @Nullable Team team = TeamManager.getInstance().getTeam(playerData.getPlayer()); return team == null ? null : new CustomParty(team); } - - class CustomParty implements AbstractParty { + private static class CustomParty implements AbstractParty { private final Team team; public CustomParty(Team team) { diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PAFPartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PAFPartyModule.java index 2ab5883c..77114b6a 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PAFPartyModule.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PAFPartyModule.java @@ -22,7 +22,7 @@ public class PAFPartyModule implements PartyModule { return party == null ? null : new CustomParty(party); } - class CustomParty implements AbstractParty { + private static class CustomParty implements AbstractParty { private final PlayerParty party; public CustomParty(PlayerParty party) { diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PAFProxyPartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PAFProxyPartyModule.java index db9a3cbd..95b78028 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PAFProxyPartyModule.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PAFProxyPartyModule.java @@ -22,7 +22,7 @@ public class PAFProxyPartyModule implements PartyModule { return party == null ? null : new CustomParty(party); } - class CustomParty implements AbstractParty { + private static class CustomParty implements AbstractParty { private final PlayerParty party; public CustomParty(PlayerParty party) { diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PartiesPartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PartiesPartyModule.java index cd966eae..a90b4638 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PartiesPartyModule.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/compat/PartiesPartyModule.java @@ -10,6 +10,7 @@ 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 net.Indyuce.mmocore.party.PartyUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -39,18 +40,18 @@ public class PartiesPartyModule implements PartyModule, Listener { public void onPlayerJoin(BukkitPartiesPlayerPostJoinEvent event) { int membersSize = event.getParty().getMembers().size(); event.getParty().getOnlineMembers() - .forEach(p -> applyStatBonuses(PlayerData.get(p.getPlayerUUID()), membersSize)); + .forEach(p -> PartyUtils.applyStatBonuses(PlayerData.get(p.getPlayerUUID()), membersSize)); } @EventHandler public void onPlayerLeave(BukkitPartiesPlayerPostLeaveEvent event) { int membersSize = event.getParty().getMembers().size(); - clearStatBonuses(PlayerData.get(event.getPartyPlayer().getPlayerUUID())); + PartyUtils.clearStatBonuses(PlayerData.get(event.getPartyPlayer().getPlayerUUID())); event.getParty().getOnlineMembers() - .forEach(p -> applyStatBonuses(PlayerData.get(p.getPlayerUUID()), membersSize)); + .forEach(p -> PartyUtils.applyStatBonuses(PlayerData.get(p.getPlayerUUID()), membersSize)); } - class CustomParty implements AbstractParty { + private static class CustomParty implements AbstractParty { private final Party party; public CustomParty(Party party) { diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/MMOCorePartyModule.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/MMOCorePartyModule.java index 3c0155cb..af98630d 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/MMOCorePartyModule.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/MMOCorePartyModule.java @@ -9,13 +9,14 @@ import org.bukkit.Bukkit; import java.util.*; public class MMOCorePartyModule implements PartyModule { - private final Set parties = new HashSet<>(); - private final Map playerParties = new HashMap<>(); + protected final Set parties = new HashSet<>(); + protected final Map playerParties = new HashMap<>(); public MMOCorePartyModule() { Bukkit.getPluginManager().registerEvents(new PartyListener(this), MMOCore.plugin); } + @Deprecated public void registerParty(Party party) { parties.add(party); } @@ -24,8 +25,8 @@ public class MMOCorePartyModule implements PartyModule { * Creates and registers a new party with given owner */ public Party newRegisteredParty(PlayerData owner) { - Party party = new Party(this, owner); - registerParty(party); + final Party party = new Party(this, owner); + parties.add(party); return party; } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/Party.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/Party.java index 823a38c3..82443fea 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/Party.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/Party.java @@ -10,6 +10,7 @@ import net.Indyuce.mmocore.gui.api.PluginInventory; import net.Indyuce.mmocore.gui.social.party.EditablePartyView; import net.Indyuce.mmocore.manager.InventoryManager; import net.Indyuce.mmocore.party.AbstractParty; +import net.Indyuce.mmocore.party.PartyUtils; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -107,8 +108,8 @@ public class Party implements AbstractParty { members.remove(data); module.setParty(data, null); - module.clearStatBonuses(data); - members.forEach(member -> module.applyStatBonuses(member, members.size())); + PartyUtils.clearStatBonuses(data); + members.forEach(member -> PartyUtils.applyStatBonuses(member, members.size())); updateOpenInventories(); // Disband the party if no member left @@ -132,7 +133,7 @@ public class Party implements AbstractParty { module.setParty(data, this); members.add(data); - members.forEach(member -> module.applyStatBonuses(member, members.size())); + members.forEach(member -> PartyUtils.applyStatBonuses(member, members.size())); updateOpenInventories(); }