Skip to content

Commit

Permalink
Party system can now be disabled via config
Browse files Browse the repository at this point in the history
Closes #4873
  • Loading branch information
nossr50 committed Feb 20, 2024
1 parent c358c8c commit 3361d28
Show file tree
Hide file tree
Showing 34 changed files with 477 additions and 432 deletions.
13 changes: 13 additions & 0 deletions Changelog.txt
@@ -1,3 +1,16 @@
Version 2.1.229
Added new party.yml config, which lets admins disable the party system entirely without having to use permissions
Fixed error caused by missing API in McMMOEntityDamageByRuptureEvent
(API) Major API changes to PartyManager
(API) PartyManager is no longer a static singleton class, use mcMMO.getPartyManager() to get the PartyManager
(API) Added com.gmail.nossr50.mcMMO.isPartySystemEnabled to check if the party system is enabled
(API) Added com.gmail.nossr50.api.PartyAPI.isPartySystemEnabled as an alternative, to check if the party system is enabled
(API) Added missing com.gmail.nossr50.events.skills.rupture.McMMOEntityDamageByRuptureEvent.getHandlerList

NOTES:
Admins can now enable/disable the whole party system with a setting in the new party.yml config
You'll have to start your server one time to generate the config, then change the setting and reboot your server.

Version 2.1.228
Fixed a stack trace due to Spigot API break on EntityDamageEvent and EntityDamageByEntity event
(API) - Removed FakeEntityDamageEvent and FakeEntityDamageByEntityEvent
Expand Down
8 changes: 4 additions & 4 deletions pom.xml
Expand Up @@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.gmail.nossr50.mcMMO</groupId>
<artifactId>mcMMO</artifactId>
<version>2.1.229-SNAPSHOT</version>
<version>2.1.229</version>
<name>mcMMO</name>
<url>https://github.com/mcMMO-Dev/mcMMO</url>
<scm>
Expand All @@ -14,9 +14,9 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>16</maven.compiler.source>
<maven.compiler.target>16</maven.compiler.target>
<java.version>16</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<java.version>17</java.version>
</properties>

<issueManagement>
Expand Down
92 changes: 65 additions & 27 deletions src/main/java/com/gmail/nossr50/api/PartyAPI.java
Expand Up @@ -3,12 +3,15 @@
import com.gmail.nossr50.datatypes.interactions.NotificationType;
import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.party.PartyLeader;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.party.PartyManager;
import com.gmail.nossr50.util.player.NotificationManager;
import com.gmail.nossr50.util.player.UserManager;
import jdk.jfr.Experimental;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;

import java.util.*;

Expand All @@ -24,13 +27,22 @@ private PartyAPI() {}
* @return the name of the player's party, or null if not in a party
*/
public static String getPartyName(Player player) {
if (!inParty(player)) {
if (!mcMMO.p.getPartyConfig().isPartyEnabled() || !inParty(player)) {
return null;
}

return UserManager.getPlayer(player).getParty().getName();
}

/**
* Check if the party system is enabled.
*
* @return true if the party system is enabled, false otherwise
*/
public static boolean isPartySystemEnabled() {
return mcMMO.p.getPartyConfig().isPartyEnabled();
}

/**
* Checks if a player is in a party.
* </br>
Expand All @@ -40,7 +52,7 @@ public static String getPartyName(Player player) {
* @return true if the player is in a party, false otherwise
*/
public static boolean inParty(Player player) {
if(UserManager.getPlayer(player) == null)
if(!mcMMO.p.getPartyConfig().isPartyEnabled() || UserManager.getPlayer(player) == null)
return false;

return UserManager.getPlayer(player).inParty();
Expand All @@ -51,12 +63,15 @@ public static boolean inParty(Player player) {
* </br>
* This function is designed for API usage.
*
* @param playera The first player to check
* @param playerb The second player to check
* @param playerA The first player to check
* @param playerB The second player to check
* @return true if the two players are in the same party, false otherwise
*/
public static boolean inSameParty(Player playera, Player playerb) {
return PartyManager.inSameParty(playera, playerb);
public static boolean inSameParty(Player playerA, Player playerB) {
if (!mcMMO.p.getPartyConfig().isPartyEnabled())
return false;

return mcMMO.p.getPartyManager().inSameParty(playerA, playerB);
}

/**
Expand All @@ -67,7 +82,7 @@ public static boolean inSameParty(Player playera, Player playerb) {
* @return the list of parties.
*/
public static List<Party> getParties() {
return PartyManager.getParties();
return mcMMO.p.getPartyManager().getParties();
}

/**
Expand All @@ -81,23 +96,29 @@ public static List<Party> getParties() {
*/
@Deprecated
public static void addToParty(Player player, String partyName) {
if(!mcMMO.p.getPartyConfig().isPartyEnabled()) {
return;
}

//Check if player profile is loaded
if(UserManager.getPlayer(player) == null)
final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);

if(mmoPlayer == null)
return;

Party party = PartyManager.getParty(partyName);
Party party = mcMMO.p.getPartyManager().getParty(partyName);

if (party == null) {
party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName);
} else {
if(PartyManager.isPartyFull(player, party))
if(mcMMO.p.getPartyManager().isPartyFull(player, party))
{
NotificationManager.sendPlayerInformation(player, NotificationType.PARTY_MESSAGE, "Commands.Party.PartyFull", party.toString());
return;
}
}

PartyManager.addToParty(UserManager.getPlayer(player), party);
mcMMO.p.getPartyManager().addToParty(mmoPlayer, party);
}

/**
Expand All @@ -119,19 +140,18 @@ public static int getMaxPartySize()
* @param partyName The party to add the player to
* @param bypassLimit if true bypasses party size limits
*/
//TODO: bypasslimit not used?
public static void addToParty(Player player, String partyName, boolean bypassLimit) {
//Check if player profile is loaded
if(UserManager.getPlayer(player) == null)
if(!mcMMO.p.getPartyConfig().isPartyEnabled() || UserManager.getPlayer(player) == null)
return;

Party party = PartyManager.getParty(partyName);
Party party = mcMMO.p.getPartyManager().getParty(partyName);

if (party == null) {
party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName);
}

PartyManager.addToParty(UserManager.getPlayer(player), party);
mcMMO.p.getPartyManager().addToParty(UserManager.getPlayer(player), party);
}

/**
Expand All @@ -143,10 +163,10 @@ public static void addToParty(Player player, String partyName, boolean bypassLim
*/
public static void removeFromParty(Player player) {
//Check if player profile is loaded
if(UserManager.getPlayer(player) == null)
if(!mcMMO.p.getPartyConfig().isPartyEnabled() || UserManager.getPlayer(player) == null)
return;

PartyManager.removeFromParty(UserManager.getPlayer(player));
mcMMO.p.getPartyManager().removeFromParty(UserManager.getPlayer(player));
}

/**
Expand All @@ -157,8 +177,11 @@ public static void removeFromParty(Player player) {
* @param partyName The party name
* @return the leader of the party
*/
public static String getPartyLeader(String partyName) {
return PartyManager.getPartyLeaderName(partyName);
public static @Nullable String getPartyLeader(String partyName) {
if(!mcMMO.p.getPartyConfig().isPartyEnabled())
return null;

return mcMMO.p.getPartyManager().getPartyLeaderName(partyName);
}

/**
Expand All @@ -171,7 +194,10 @@ public static String getPartyLeader(String partyName) {
*/
@Deprecated
public static void setPartyLeader(String partyName, String playerName) {
PartyManager.setPartyLeader(mcMMO.p.getServer().getOfflinePlayer(playerName).getUniqueId(), PartyManager.getParty(partyName));
if(!mcMMO.p.getPartyConfig().isPartyEnabled())
return;

mcMMO.p.getPartyManager().setPartyLeader(mcMMO.p.getServer().getOfflinePlayer(playerName).getUniqueId(), mcMMO.p.getPartyManager().getParty(partyName));
}

/**
Expand All @@ -184,9 +210,12 @@ public static void setPartyLeader(String partyName, String playerName) {
*/
@Deprecated
public static List<OfflinePlayer> getOnlineAndOfflineMembers(Player player) {
List<OfflinePlayer> members = new ArrayList<>();
if(!mcMMO.p.getPartyConfig().isPartyEnabled()) {
return null;
}

for (UUID memberUniqueId : PartyManager.getAllMembers(player).keySet()) {
List<OfflinePlayer> members = new ArrayList<>();
for (UUID memberUniqueId : mcMMO.p.getPartyManager().getAllMembers(player).keySet()) {
OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberUniqueId);
members.add(member);
}
Expand All @@ -203,7 +232,10 @@ public static List<OfflinePlayer> getOnlineAndOfflineMembers(Player player) {
*/
@Deprecated
public static LinkedHashSet<String> getMembers(Player player) {
return (LinkedHashSet<String>) PartyManager.getAllMembers(player).values();
if(!mcMMO.p.getPartyConfig().isPartyEnabled())
return null;

return (LinkedHashSet<String>) mcMMO.p.getPartyManager().getAllMembers(player).values();
}

/**
Expand All @@ -215,7 +247,10 @@ public static LinkedHashSet<String> getMembers(Player player) {
* @return all the player names and uuids in the player's party
*/
public static LinkedHashMap<UUID, String> getMembersMap(Player player) {
return PartyManager.getAllMembers(player);
if(!mcMMO.p.getPartyConfig().isPartyEnabled())
return null;

return mcMMO.p.getPartyManager().getAllMembers(player);
}

/**
Expand All @@ -227,7 +262,10 @@ public static LinkedHashMap<UUID, String> getMembersMap(Player player) {
* @return all online players in this party
*/
public static List<Player> getOnlineMembers(String partyName) {
return PartyManager.getOnlineMembers(partyName);
if(!mcMMO.p.getPartyConfig().isPartyEnabled())
return null;

return mcMMO.p.getPartyManager().getOnlineMembers(partyName);
}

/**
Expand All @@ -239,15 +277,15 @@ public static List<Player> getOnlineMembers(String partyName) {
* @return all online players in the player's party
*/
public static List<Player> getOnlineMembers(Player player) {
return PartyManager.getOnlineMembers(player);
return mcMMO.p.getPartyManager().getOnlineMembers(player);
}

public static boolean hasAlly(String partyName) {
return getAllyName(partyName) != null;
}

public static String getAllyName(String partyName) {
Party ally = PartyManager.getParty(partyName).getAlly();
Party ally = mcMMO.p.getPartyManager().getParty(partyName).getAlly();
if (ally != null) {
return ally.getName();
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/gmail/nossr50/commands/CommandManager.java
Expand Up @@ -47,7 +47,7 @@ private void registerChatCommands() {
if(ChatConfig.getInstance().isChatChannelEnabled(ChatChannel.ADMIN)) {
bukkitCommandManager.registerCommand(new AdminChatCommand(pluginRef));
}
if(ChatConfig.getInstance().isChatChannelEnabled(ChatChannel.PARTY)) {
if(pluginRef.getPartyConfig().isPartyEnabled() && ChatConfig.getInstance().isChatChannelEnabled(ChatChannel.PARTY)) {
bukkitCommandManager.registerCommand(new PartyChatCommand(pluginRef));
}
}
Expand Down Expand Up @@ -105,7 +105,7 @@ public void validateLoadedData(@NotNull Player player) {
public void validatePlayerParty(@NotNull Player player) {
McMMOPlayer mmoPlayer = UserManager.getPlayer(player);

if(mmoPlayer.getParty() == null) {
if(!pluginRef.getPartyConfig().isPartyEnabled() || mmoPlayer.getParty() == null) {
throw new ConditionFailedException(LocaleLoader.getString("Commands.Party.None"));
}
}
Expand Down
Expand Up @@ -78,7 +78,7 @@ private void processCommandArgsConsole(@NotNull String[] args) {
mcMMO.p.getLogger().severe("You need to specify a party name and then write a message afterwards.");
} else {
//Grab party
Party targetParty = PartyManager.getParty(args[0]);
Party targetParty = mcMMO.p.getPartyManager().getParty(args[0]);

if(targetParty != null) {
pluginRef.getChatManager().processConsoleMessage(StringUtils.buildStringAfterNthElement(args, 1), targetParty);
Expand Down
Expand Up @@ -2,6 +2,7 @@

import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.party.PartyManager;
import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.command.Command;
Expand Down Expand Up @@ -31,11 +32,11 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
}

// Changing parties
if (!PartyManager.changeOrJoinParty(mcMMOPlayer, mcMMOPlayer.getPartyInvite().getName())) {
if (!mcMMO.p.getPartyManager().changeOrJoinParty(mcMMOPlayer, mcMMOPlayer.getPartyInvite().getName())) {
return true;
}

PartyManager.joinInvitedParty(mcMMOPlayer);
mcMMO.p.getPartyManager().joinInvitedParty(mcMMOPlayer);
return true;
}
sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "accept"));
Expand Down
Expand Up @@ -31,7 +31,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
return true;
}

PartyManager.setPartyLeader(target.getUniqueId(), playerParty);
mcMMO.p.getPartyManager().setPartyLeader(target.getUniqueId(), playerParty);
return true;
}
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "owner", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">"));
Expand Down

0 comments on commit 3361d28

Please sign in to comment.