mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-24 06:06:45 +01:00
merge master
This commit is contained in:
commit
fba6e8a961
@ -51,6 +51,28 @@ Version 2.2.000
|
|||||||
Currently these skills scale up to a maximum 50% chance if a player has 10,000 skill, you can adjust this in advanced.yml
|
Currently these skills scale up to a maximum 50% chance if a player has 10,000 skill, you can adjust this in advanced.yml
|
||||||
|
|
||||||
|
|
||||||
|
Version 2.1.231
|
||||||
|
Fixed a bug preventing parties from being made without passwords (Thanks Momshroom)
|
||||||
|
Updated korean locale (thanks mangchi57)
|
||||||
|
Added some unit tests for party creation
|
||||||
|
|
||||||
|
Version 2.1.230
|
||||||
|
Fixed an error that could happen when mcMMO was saving when parties were disabled by party.yml (thanks IAISI & L4BORG)
|
||||||
|
Fixed several exceptions when checking PVP damage when parties were disabled by party.yml (thanks IAISI & L4BORG)
|
||||||
|
|
||||||
|
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
|
Version 2.1.228
|
||||||
Fixed a stack trace due to Spigot API break on EntityDamageEvent and EntityDamageByEntity event
|
Fixed a stack trace due to Spigot API break on EntityDamageEvent and EntityDamageByEntity event
|
||||||
(API) - Removed FakeEntityDamageEvent and FakeEntityDamageByEntityEvent
|
(API) - Removed FakeEntityDamageEvent and FakeEntityDamageByEntityEvent
|
||||||
|
@ -3,12 +3,15 @@ package com.gmail.nossr50.api;
|
|||||||
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
import com.gmail.nossr50.datatypes.interactions.NotificationType;
|
||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.datatypes.party.PartyLeader;
|
import com.gmail.nossr50.datatypes.party.PartyLeader;
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.player.NotificationManager;
|
import com.gmail.nossr50.util.player.NotificationManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
|
import jdk.jfr.Experimental;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@ -24,13 +27,22 @@ public final class PartyAPI {
|
|||||||
* @return the name of the player's party, or null if not in a party
|
* @return the name of the player's party, or null if not in a party
|
||||||
*/
|
*/
|
||||||
public static String getPartyName(Player player) {
|
public static String getPartyName(Player player) {
|
||||||
if (!inParty(player)) {
|
if (!mcMMO.p.getPartyConfig().isPartyEnabled() || !inParty(player)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return UserManager.getPlayer(player).getParty().getName();
|
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.
|
* Checks if a player is in a party.
|
||||||
* </br>
|
* </br>
|
||||||
@ -40,7 +52,7 @@ public final class PartyAPI {
|
|||||||
* @return true if the player is in a party, false otherwise
|
* @return true if the player is in a party, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean inParty(Player player) {
|
public static boolean inParty(Player player) {
|
||||||
if(UserManager.getPlayer(player) == null)
|
if(!mcMMO.p.getPartyConfig().isPartyEnabled() || UserManager.getPlayer(player) == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return UserManager.getPlayer(player).inParty();
|
return UserManager.getPlayer(player).inParty();
|
||||||
@ -51,12 +63,15 @@ public final class PartyAPI {
|
|||||||
* </br>
|
* </br>
|
||||||
* This function is designed for API usage.
|
* This function is designed for API usage.
|
||||||
*
|
*
|
||||||
* @param playera The first player to check
|
* @param playerA The first player to check
|
||||||
* @param playerb The second player to check
|
* @param playerB The second player to check
|
||||||
* @return true if the two players are in the same party, false otherwise
|
* @return true if the two players are in the same party, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean inSameParty(Player playera, Player playerb) {
|
public static boolean inSameParty(Player playerA, Player playerB) {
|
||||||
return PartyManager.inSameParty(playera, playerb);
|
if (!mcMMO.p.getPartyConfig().isPartyEnabled())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return mcMMO.p.getPartyManager().inSameParty(playerA, playerB);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,7 +82,7 @@ public final class PartyAPI {
|
|||||||
* @return the list of parties.
|
* @return the list of parties.
|
||||||
*/
|
*/
|
||||||
public static List<Party> getParties() {
|
public static List<Party> getParties() {
|
||||||
return PartyManager.getParties();
|
return mcMMO.p.getPartyManager().getParties();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -81,23 +96,29 @@ public final class PartyAPI {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static void addToParty(Player player, String partyName) {
|
public static void addToParty(Player player, String partyName) {
|
||||||
|
if(!mcMMO.p.getPartyConfig().isPartyEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//Check if player profile is loaded
|
//Check if player profile is loaded
|
||||||
if(UserManager.getPlayer(player) == null)
|
final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
|
||||||
|
|
||||||
|
if(mmoPlayer == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Party party = PartyManager.getParty(partyName);
|
Party party = mcMMO.p.getPartyManager().getParty(partyName);
|
||||||
|
|
||||||
if (party == null) {
|
if (party == null) {
|
||||||
party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName);
|
party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName);
|
||||||
} else {
|
} else {
|
||||||
if(PartyManager.isPartyFull(player, party))
|
if(mcMMO.p.getPartyManager().isPartyFull(player, party))
|
||||||
{
|
{
|
||||||
NotificationManager.sendPlayerInformation(player, NotificationType.PARTY_MESSAGE, "Commands.Party.PartyFull", party.toString());
|
NotificationManager.sendPlayerInformation(player, NotificationType.PARTY_MESSAGE, "Commands.Party.PartyFull", party.toString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.addToParty(UserManager.getPlayer(player), party);
|
mcMMO.p.getPartyManager().addToParty(mmoPlayer, party);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -119,19 +140,18 @@ public final class PartyAPI {
|
|||||||
* @param partyName The party to add the player to
|
* @param partyName The party to add the player to
|
||||||
* @param bypassLimit if true bypasses party size limits
|
* @param bypassLimit if true bypasses party size limits
|
||||||
*/
|
*/
|
||||||
//TODO: bypasslimit not used?
|
|
||||||
public static void addToParty(Player player, String partyName, boolean bypassLimit) {
|
public static void addToParty(Player player, String partyName, boolean bypassLimit) {
|
||||||
//Check if player profile is loaded
|
//Check if player profile is loaded
|
||||||
if(UserManager.getPlayer(player) == null)
|
if(!mcMMO.p.getPartyConfig().isPartyEnabled() || UserManager.getPlayer(player) == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Party party = PartyManager.getParty(partyName);
|
Party party = mcMMO.p.getPartyManager().getParty(partyName);
|
||||||
|
|
||||||
if (party == null) {
|
if (party == null) {
|
||||||
party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName);
|
party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.addToParty(UserManager.getPlayer(player), party);
|
mcMMO.p.getPartyManager().addToParty(UserManager.getPlayer(player), party);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -143,10 +163,10 @@ public final class PartyAPI {
|
|||||||
*/
|
*/
|
||||||
public static void removeFromParty(Player player) {
|
public static void removeFromParty(Player player) {
|
||||||
//Check if player profile is loaded
|
//Check if player profile is loaded
|
||||||
if(UserManager.getPlayer(player) == null)
|
if(!mcMMO.p.getPartyConfig().isPartyEnabled() || UserManager.getPlayer(player) == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
PartyManager.removeFromParty(UserManager.getPlayer(player));
|
mcMMO.p.getPartyManager().removeFromParty(UserManager.getPlayer(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -157,8 +177,11 @@ public final class PartyAPI {
|
|||||||
* @param partyName The party name
|
* @param partyName The party name
|
||||||
* @return the leader of the party
|
* @return the leader of the party
|
||||||
*/
|
*/
|
||||||
public static String getPartyLeader(String partyName) {
|
public static @Nullable String getPartyLeader(String partyName) {
|
||||||
return PartyManager.getPartyLeaderName(partyName);
|
if(!mcMMO.p.getPartyConfig().isPartyEnabled())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return mcMMO.p.getPartyManager().getPartyLeaderName(partyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -171,7 +194,10 @@ public final class PartyAPI {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static void setPartyLeader(String partyName, String playerName) {
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -184,9 +210,12 @@ public final class PartyAPI {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static List<OfflinePlayer> getOnlineAndOfflineMembers(Player player) {
|
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);
|
OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberUniqueId);
|
||||||
members.add(member);
|
members.add(member);
|
||||||
}
|
}
|
||||||
@ -203,7 +232,10 @@ public final class PartyAPI {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static LinkedHashSet<String> getMembers(Player player) {
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -215,7 +247,10 @@ public final class PartyAPI {
|
|||||||
* @return all the player names and uuids in the player's party
|
* @return all the player names and uuids in the player's party
|
||||||
*/
|
*/
|
||||||
public static LinkedHashMap<UUID, String> getMembersMap(Player player) {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -227,7 +262,10 @@ public final class PartyAPI {
|
|||||||
* @return all online players in this party
|
* @return all online players in this party
|
||||||
*/
|
*/
|
||||||
public static List<Player> getOnlineMembers(String partyName) {
|
public static List<Player> getOnlineMembers(String partyName) {
|
||||||
return PartyManager.getOnlineMembers(partyName);
|
if(!mcMMO.p.getPartyConfig().isPartyEnabled())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return mcMMO.p.getPartyManager().getOnlineMembers(partyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -239,7 +277,7 @@ public final class PartyAPI {
|
|||||||
* @return all online players in the player's party
|
* @return all online players in the player's party
|
||||||
*/
|
*/
|
||||||
public static List<Player> getOnlineMembers(Player player) {
|
public static List<Player> getOnlineMembers(Player player) {
|
||||||
return PartyManager.getOnlineMembers(player);
|
return mcMMO.p.getPartyManager().getOnlineMembers(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasAlly(String partyName) {
|
public static boolean hasAlly(String partyName) {
|
||||||
@ -247,7 +285,7 @@ public final class PartyAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static String getAllyName(String partyName) {
|
public static String getAllyName(String partyName) {
|
||||||
Party ally = PartyManager.getParty(partyName).getAlly();
|
Party ally = mcMMO.p.getPartyManager().getParty(partyName).getAlly();
|
||||||
if (ally != null) {
|
if (ally != null) {
|
||||||
return ally.getName();
|
return ally.getName();
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ public class CommandManager {
|
|||||||
if(ChatConfig.getInstance().isChatChannelEnabled(ChatChannel.ADMIN)) {
|
if(ChatConfig.getInstance().isChatChannelEnabled(ChatChannel.ADMIN)) {
|
||||||
bukkitCommandManager.registerCommand(new AdminChatCommand(pluginRef));
|
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));
|
bukkitCommandManager.registerCommand(new PartyChatCommand(pluginRef));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -136,7 +136,7 @@ public class CommandManager {
|
|||||||
public void validatePlayerParty(@NotNull Player player) {
|
public void validatePlayerParty(@NotNull Player player) {
|
||||||
McMMOPlayer mmoPlayer = UserManager.getPlayer(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"));
|
throw new ConditionFailedException(LocaleLoader.getString("Commands.Party.None"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ public class PartyChatCommand extends BaseCommand {
|
|||||||
mcMMO.p.getLogger().severe("You need to specify a party name and then write a message afterwards.");
|
mcMMO.p.getLogger().severe("You need to specify a party name and then write a message afterwards.");
|
||||||
} else {
|
} else {
|
||||||
//Grab party
|
//Grab party
|
||||||
Party targetParty = PartyManager.getParty(args[0]);
|
Party targetParty = mcMMO.p.getPartyManager().getParty(args[0]);
|
||||||
|
|
||||||
if(targetParty != null) {
|
if(targetParty != null) {
|
||||||
pluginRef.getChatManager().processConsoleMessage(StringUtils.buildStringAfterNthElement(args, 1), targetParty);
|
pluginRef.getChatManager().processConsoleMessage(StringUtils.buildStringAfterNthElement(args, 1), targetParty);
|
||||||
|
@ -2,6 +2,7 @@ package com.gmail.nossr50.commands.party;
|
|||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -31,11 +32,11 @@ public class PartyAcceptCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Changing parties
|
// Changing parties
|
||||||
if (!PartyManager.changeOrJoinParty(mcMMOPlayer, mcMMOPlayer.getPartyInvite().getName())) {
|
if (!mcMMO.p.getPartyManager().changeOrJoinParty(mcMMOPlayer, mcMMOPlayer.getPartyInvite().getName())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.joinInvitedParty(mcMMOPlayer);
|
mcMMO.p.getPartyManager().joinInvitedParty(mcMMOPlayer);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "accept"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "accept"));
|
||||||
|
@ -31,7 +31,7 @@ public class PartyChangeOwnerCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.setPartyLeader(target.getUniqueId(), playerParty);
|
mcMMO.p.getPartyManager().setPartyLeader(target.getUniqueId(), playerParty);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "owner", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "owner", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">"));
|
||||||
|
@ -23,11 +23,45 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class PartyCommand implements TabExecutor {
|
public class PartyCommand implements TabExecutor {
|
||||||
private static final List<String> PARTY_SUBCOMMANDS;
|
private final List<String> PARTY_SUBCOMMANDS;
|
||||||
private static final List<String> XPSHARE_COMPLETIONS = ImmutableList.of("none", "equal");
|
private final List<String> XPSHARE_COMPLETIONS = ImmutableList.of("none", "equal");
|
||||||
private static final List<String> ITEMSHARE_COMPLETIONS = ImmutableList.of("none", "equal", "random", "loot", "mining", "herbalism", "woodcutting", "misc");
|
private final List<String> ITEMSHARE_COMPLETIONS = ImmutableList.of("none", "equal", "random", "loot", "mining", "herbalism", "woodcutting", "misc");
|
||||||
|
private final CommandExecutor partyJoinCommand;
|
||||||
|
private final CommandExecutor partyAcceptCommand;
|
||||||
|
private final CommandExecutor partyCreateCommand;
|
||||||
|
private final CommandExecutor partyQuitCommand;
|
||||||
|
private final CommandExecutor partyXpShareCommand;
|
||||||
|
private final CommandExecutor partyItemShareCommand;
|
||||||
|
private final CommandExecutor partyInviteCommand;
|
||||||
|
private final CommandExecutor partyKickCommand;
|
||||||
|
private final CommandExecutor partyDisbandCommand;
|
||||||
|
private final CommandExecutor partyChangeOwnerCommand;
|
||||||
|
private final CommandExecutor partyLockCommand;
|
||||||
|
private final CommandExecutor partyChangePasswordCommand;
|
||||||
|
private final CommandExecutor partyRenameCommand;
|
||||||
|
private final CommandExecutor partyInfoCommand;
|
||||||
|
private final CommandExecutor partyHelpCommand;
|
||||||
|
private final CommandExecutor partyTeleportCommand;
|
||||||
|
private final CommandExecutor partyAllianceCommand;
|
||||||
|
public PartyCommand() {
|
||||||
|
partyJoinCommand = new PartyJoinCommand();
|
||||||
|
partyAcceptCommand = new PartyAcceptCommand();
|
||||||
|
partyCreateCommand = new PartyCreateCommand();
|
||||||
|
partyQuitCommand = new PartyQuitCommand();
|
||||||
|
partyXpShareCommand = new PartyXpShareCommand();
|
||||||
|
partyItemShareCommand = new PartyItemShareCommand();
|
||||||
|
partyInviteCommand = new PartyInviteCommand();
|
||||||
|
partyKickCommand = new PartyKickCommand();
|
||||||
|
partyDisbandCommand = new PartyDisbandCommand();
|
||||||
|
partyChangeOwnerCommand = new PartyChangeOwnerCommand();
|
||||||
|
partyLockCommand = new PartyLockCommand();
|
||||||
|
partyChangePasswordCommand = new PartyChangePasswordCommand();
|
||||||
|
partyRenameCommand = new PartyRenameCommand();
|
||||||
|
partyInfoCommand = new PartyInfoCommand();
|
||||||
|
partyHelpCommand = new PartyHelpCommand();
|
||||||
|
partyTeleportCommand = new PtpCommand();
|
||||||
|
partyAllianceCommand = new PartyAllianceCommand();
|
||||||
|
|
||||||
static {
|
|
||||||
ArrayList<String> subcommands = new ArrayList<>();
|
ArrayList<String> subcommands = new ArrayList<>();
|
||||||
|
|
||||||
for (PartySubcommandType subcommand : PartySubcommandType.values()) {
|
for (PartySubcommandType subcommand : PartySubcommandType.values()) {
|
||||||
@ -38,24 +72,6 @@ public class PartyCommand implements TabExecutor {
|
|||||||
PARTY_SUBCOMMANDS = ImmutableList.copyOf(subcommands);
|
PARTY_SUBCOMMANDS = ImmutableList.copyOf(subcommands);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final CommandExecutor partyJoinCommand = new PartyJoinCommand();
|
|
||||||
private final CommandExecutor partyAcceptCommand = new PartyAcceptCommand();
|
|
||||||
private final CommandExecutor partyCreateCommand = new PartyCreateCommand();
|
|
||||||
private final CommandExecutor partyQuitCommand = new PartyQuitCommand();
|
|
||||||
private final CommandExecutor partyXpShareCommand = new PartyXpShareCommand();
|
|
||||||
private final CommandExecutor partyItemShareCommand = new PartyItemShareCommand();
|
|
||||||
private final CommandExecutor partyInviteCommand = new PartyInviteCommand();
|
|
||||||
private final CommandExecutor partyKickCommand = new PartyKickCommand();
|
|
||||||
private final CommandExecutor partyDisbandCommand = new PartyDisbandCommand();
|
|
||||||
private final CommandExecutor partyChangeOwnerCommand = new PartyChangeOwnerCommand();
|
|
||||||
private final CommandExecutor partyLockCommand = new PartyLockCommand();
|
|
||||||
private final CommandExecutor partyChangePasswordCommand = new PartyChangePasswordCommand();
|
|
||||||
private final CommandExecutor partyRenameCommand = new PartyRenameCommand();
|
|
||||||
private final CommandExecutor partyInfoCommand = new PartyInfoCommand();
|
|
||||||
private final CommandExecutor partyHelpCommand = new PartyHelpCommand();
|
|
||||||
private final CommandExecutor partyTeleportCommand = new PtpCommand();
|
|
||||||
private final CommandExecutor partyAllianceCommand = new PartyAllianceCommand();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
|
||||||
if (CommandUtils.noConsoleUsage(sender)) {
|
if (CommandUtils.noConsoleUsage(sender)) {
|
||||||
@ -73,13 +89,13 @@ public class PartyCommand implements TabExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(UserManager.getPlayer(player) == null)
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||||
|
if(mcMMOPlayer == null)
|
||||||
{
|
{
|
||||||
player.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
|
player.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
|
||||||
|
|
||||||
if (args.length < 1) {
|
if (args.length < 1) {
|
||||||
if (!mcMMOPlayer.inParty()) {
|
if (!mcMMOPlayer.inParty()) {
|
||||||
@ -140,31 +156,18 @@ public class PartyCommand implements TabExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (subcommand) {
|
return switch (subcommand) {
|
||||||
case XPSHARE:
|
case XPSHARE -> partyXpShareCommand.onCommand(sender, command, label, args);
|
||||||
return partyXpShareCommand.onCommand(sender, command, label, args);
|
case ITEMSHARE -> partyItemShareCommand.onCommand(sender, command, label, args);
|
||||||
case ITEMSHARE:
|
case KICK -> partyKickCommand.onCommand(sender, command, label, args);
|
||||||
return partyItemShareCommand.onCommand(sender, command, label, args);
|
case DISBAND -> partyDisbandCommand.onCommand(sender, command, label, args);
|
||||||
case KICK:
|
case OWNER -> partyChangeOwnerCommand.onCommand(sender, command, label, args);
|
||||||
return partyKickCommand.onCommand(sender, command, label, args);
|
case LOCK, UNLOCK -> partyLockCommand.onCommand(sender, command, label, args);
|
||||||
case DISBAND:
|
case PASSWORD -> partyChangePasswordCommand.onCommand(sender, command, label, args);
|
||||||
return partyDisbandCommand.onCommand(sender, command, label, args);
|
case RENAME -> partyRenameCommand.onCommand(sender, command, label, args);
|
||||||
case OWNER:
|
case ALLIANCE -> partyAllianceCommand.onCommand(sender, command, label, args);
|
||||||
return partyChangeOwnerCommand.onCommand(sender, command, label, args);
|
default -> true;
|
||||||
case LOCK:
|
};
|
||||||
case UNLOCK:
|
|
||||||
return partyLockCommand.onCommand(sender, command, label, args);
|
|
||||||
case PASSWORD:
|
|
||||||
return partyChangePasswordCommand.onCommand(sender, command, label, args);
|
|
||||||
case RENAME:
|
|
||||||
return partyRenameCommand.onCommand(sender, command, label, args);
|
|
||||||
case ALLIANCE:
|
|
||||||
return partyAllianceCommand.onCommand(sender, command, label, args);
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -179,12 +182,13 @@ public class PartyCommand implements TabExecutor {
|
|||||||
return ImmutableList.of();
|
return ImmutableList.of();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
|
||||||
|
|
||||||
switch (subcommand) {
|
switch (subcommand) {
|
||||||
case JOIN:
|
case JOIN:
|
||||||
case INVITE:
|
case INVITE:
|
||||||
case KICK:
|
case KICK:
|
||||||
case OWNER:
|
case OWNER:
|
||||||
List<String> playerNames = CommandUtils.getOnlinePlayerNames(sender);
|
|
||||||
return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<>(playerNames.size()));
|
return StringUtil.copyPartialMatches(args[1], playerNames, new ArrayList<>(playerNames.size()));
|
||||||
case XPSHARE:
|
case XPSHARE:
|
||||||
return StringUtil.copyPartialMatches(args[1], XPSHARE_COMPLETIONS, new ArrayList<>(XPSHARE_COMPLETIONS.size()));
|
return StringUtil.copyPartialMatches(args[1], XPSHARE_COMPLETIONS, new ArrayList<>(XPSHARE_COMPLETIONS.size()));
|
||||||
@ -198,7 +202,7 @@ public class PartyCommand implements TabExecutor {
|
|||||||
case TELEPORT:
|
case TELEPORT:
|
||||||
List<String> matches = StringUtil.copyPartialMatches(args[1], PtpCommand.TELEPORT_SUBCOMMANDS, new ArrayList<>(PtpCommand.TELEPORT_SUBCOMMANDS.size()));
|
List<String> matches = StringUtil.copyPartialMatches(args[1], PtpCommand.TELEPORT_SUBCOMMANDS, new ArrayList<>(PtpCommand.TELEPORT_SUBCOMMANDS.size()));
|
||||||
|
|
||||||
if (matches.size() == 0) {
|
if (matches.isEmpty()) {
|
||||||
Player player = (Player) sender;
|
Player player = (Player) sender;
|
||||||
final McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
final McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package com.gmail.nossr50.commands.party;
|
|||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -26,16 +27,16 @@ public class PartyCreateCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check to see if the party exists, and if it does cancel creating a new party
|
// Check to see if the party exists, and if it does cancel creating a new party
|
||||||
if (PartyManager.checkPartyExistence(player, args[1])) {
|
if (mcMMO.p.getPartyManager().checkPartyExistence(player, args[1])) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Changing parties
|
// Changing parties
|
||||||
if (!PartyManager.changeOrJoinParty(mcMMOPlayer, args[1])) {
|
if (!mcMMO.p.getPartyManager().changeOrJoinParty(mcMMOPlayer, args[1])) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.createParty(mcMMOPlayer, args[1], getPassword(args));
|
mcMMO.p.getPartyManager().createParty(mcMMOPlayer, args[1], getPassword(args));
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -4,6 +4,7 @@ import com.gmail.nossr50.datatypes.party.Party;
|
|||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -26,14 +27,14 @@ public class PartyDisbandCommand implements CommandExecutor {
|
|||||||
final String partyName = playerParty.getName();
|
final String partyName = playerParty.getName();
|
||||||
|
|
||||||
for (Player member : playerParty.getOnlineMembers()) {
|
for (Player member : playerParty.getOnlineMembers()) {
|
||||||
if (!PartyManager.handlePartyChangeEvent(member, partyName, null, EventReason.KICKED_FROM_PARTY)) {
|
if (!mcMMO.p.getPartyManager().handlePartyChangeEvent(member, partyName, null, EventReason.KICKED_FROM_PARTY)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
member.sendMessage(LocaleLoader.getString("Party.Disband"));
|
member.sendMessage(LocaleLoader.getString("Party.Disband"));
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.disbandParty(mcMMOPlayer, playerParty);
|
mcMMO.p.getPartyManager().disbandParty(mcMMOPlayer, playerParty);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "disband"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "disband"));
|
||||||
|
@ -125,7 +125,7 @@ public class PartyInfoCommand implements CommandExecutor {
|
|||||||
* Only show members of the party that this member can see
|
* Only show members of the party that this member can see
|
||||||
*/
|
*/
|
||||||
|
|
||||||
List<Player> nearMembers = PartyManager.getNearVisibleMembers(mcMMOPlayer);
|
List<Player> nearMembers = mcMMO.p.getPartyManager().getNearVisibleMembers(mcMMOPlayer);
|
||||||
int membersOnline = party.getVisibleMembers(player).size();
|
int membersOnline = party.getVisibleMembers(player).size();
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Party.Members.Header"));
|
player.sendMessage(LocaleLoader.getString("Commands.Party.Members.Header"));
|
||||||
|
@ -40,19 +40,19 @@ public class PartyInviteCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PartyManager.inSameParty(player, target)) {
|
if (mcMMO.p.getPartyManager().inSameParty(player, target)) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.Player.InSameParty", targetName));
|
sender.sendMessage(LocaleLoader.getString("Party.Player.InSameParty", targetName));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PartyManager.canInvite(mcMMOPlayer)) {
|
if (!mcMMO.p.getPartyManager().canInvite(mcMMOPlayer)) {
|
||||||
player.sendMessage(LocaleLoader.getString("Party.Locked"));
|
player.sendMessage(LocaleLoader.getString("Party.Locked"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Party playerParty = mcMMOPlayer.getParty();
|
Party playerParty = mcMMOPlayer.getParty();
|
||||||
|
|
||||||
if (PartyManager.isPartyFull(target, playerParty)) {
|
if (mcMMO.p.getPartyManager().isPartyFull(target, playerParty)) {
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Party.PartyFull.Invite", target.getName(), playerParty.toString(), mcMMO.p.getGeneralConfig().getPartyMaxSize()));
|
player.sendMessage(LocaleLoader.getString("Commands.Party.PartyFull.Invite", target.getName(), playerParty.toString(), mcMMO.p.getGeneralConfig().getPartyMaxSize()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.gmail.nossr50.commands.party;
|
|||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.commands.CommandUtils;
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
@ -51,25 +52,25 @@ public class PartyJoinCommand implements CommandExecutor {
|
|||||||
String password = getPassword(args);
|
String password = getPassword(args);
|
||||||
|
|
||||||
// Make sure party passwords match
|
// Make sure party passwords match
|
||||||
if (!PartyManager.checkPartyPassword(player, targetParty, password)) {
|
if (!mcMMO.p.getPartyManager().checkPartyPassword(player, targetParty, password)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
String partyName = targetParty.getName();
|
String partyName = targetParty.getName();
|
||||||
|
|
||||||
// Changing parties
|
// Changing parties
|
||||||
if (!PartyManager.changeOrJoinParty(mcMMOPlayer, partyName)) {
|
if (!mcMMO.p.getPartyManager().changeOrJoinParty(mcMMOPlayer, partyName)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(PartyManager.isPartyFull(player, targetParty))
|
if(mcMMO.p.getPartyManager().isPartyFull(player, targetParty))
|
||||||
{
|
{
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Party.PartyFull", targetParty.toString()));
|
player.sendMessage(LocaleLoader.getString("Commands.Party.PartyFull", targetParty.toString()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Party.Join", partyName));
|
player.sendMessage(LocaleLoader.getString("Commands.Party.Join", partyName));
|
||||||
PartyManager.addToParty(mcMMOPlayer, targetParty);
|
mcMMO.p.getPartyManager().addToParty(mcMMOPlayer, targetParty);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -37,15 +37,15 @@ public class PartyKickCommand implements CommandExecutor {
|
|||||||
Player onlineTarget = target.getPlayer();
|
Player onlineTarget = target.getPlayer();
|
||||||
String partyName = playerParty.getName();
|
String partyName = playerParty.getName();
|
||||||
|
|
||||||
if (!PartyManager.handlePartyChangeEvent(onlineTarget, partyName, null, EventReason.KICKED_FROM_PARTY)) {
|
if (!mcMMO.p.getPartyManager().handlePartyChangeEvent(onlineTarget, partyName, null, EventReason.KICKED_FROM_PARTY)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.processPartyLeaving(UserManager.getPlayer(onlineTarget));
|
mcMMO.p.getPartyManager().processPartyLeaving(UserManager.getPlayer(onlineTarget));
|
||||||
onlineTarget.sendMessage(LocaleLoader.getString("Commands.Party.Kick", partyName));
|
onlineTarget.sendMessage(LocaleLoader.getString("Commands.Party.Kick", partyName));
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.removeFromParty(target, playerParty);
|
mcMMO.p.getPartyManager().removeFromParty(target, playerParty);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "kick", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "kick", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">"));
|
||||||
|
@ -4,6 +4,7 @@ import com.gmail.nossr50.datatypes.party.Party;
|
|||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -26,11 +27,11 @@ public class PartyQuitCommand implements CommandExecutor {
|
|||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
||||||
Party playerParty = mcMMOPlayer.getParty();
|
Party playerParty = mcMMOPlayer.getParty();
|
||||||
|
|
||||||
if (!PartyManager.handlePartyChangeEvent(player, playerParty.getName(), null, EventReason.LEFT_PARTY)) {
|
if (!mcMMO.p.getPartyManager().handlePartyChangeEvent(player, playerParty.getName(), null, EventReason.LEFT_PARTY)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.removeFromParty(mcMMOPlayer);
|
mcMMO.p.getPartyManager().removeFromParty(mcMMOPlayer);
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Party.Leave"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Party.Leave"));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import com.gmail.nossr50.datatypes.party.Party;
|
|||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -36,14 +37,14 @@ public class PartyRenameCommand implements CommandExecutor {
|
|||||||
Player player = mcMMOPlayer.getPlayer();
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
// Check to see if the party exists, and if it does cancel renaming the party
|
// Check to see if the party exists, and if it does cancel renaming the party
|
||||||
if (PartyManager.checkPartyExistence(player, newPartyName)) {
|
if (mcMMO.p.getPartyManager().checkPartyExistence(player, newPartyName)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
String leaderName = playerParty.getLeader().getPlayerName();
|
String leaderName = playerParty.getLeader().getPlayerName();
|
||||||
|
|
||||||
for (Player member : playerParty.getOnlineMembers()) {
|
for (Player member : playerParty.getOnlineMembers()) {
|
||||||
if (!PartyManager.handlePartyChangeEvent(member, oldPartyName, newPartyName, EventReason.CHANGED_PARTIES)) {
|
if (!mcMMO.p.getPartyManager().handlePartyChangeEvent(member, oldPartyName, newPartyName, EventReason.CHANGED_PARTIES)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package com.gmail.nossr50.commands.party.alliance;
|
|||||||
|
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -31,7 +32,7 @@ public class PartyAllianceAcceptCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.acceptAllianceInvite(mcMMOPlayer);
|
mcMMO.p.getPartyManager().acceptAllianceInvite(mcMMOPlayer);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "alliance", "accept"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "alliance", "accept"));
|
||||||
|
@ -129,7 +129,7 @@ public class PartyAllianceCommand implements TabExecutor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void displayMemberInfo(McMMOPlayer mcMMOPlayer) {
|
private void displayMemberInfo(McMMOPlayer mcMMOPlayer) {
|
||||||
List<Player> nearMembers = PartyManager.getNearMembers(mcMMOPlayer);
|
List<Player> nearMembers = mcMMO.p.getPartyManager().getNearMembers(mcMMOPlayer);
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Party.Alliance.Members.Header"));
|
player.sendMessage(LocaleLoader.getString("Commands.Party.Alliance.Members.Header"));
|
||||||
player.sendMessage(playerParty.createMembersList(player));
|
player.sendMessage(playerParty.createMembersList(player));
|
||||||
player.sendMessage(ChatColor.DARK_GRAY + "----------------------------");
|
player.sendMessage(ChatColor.DARK_GRAY + "----------------------------");
|
||||||
|
@ -3,6 +3,7 @@ package com.gmail.nossr50.commands.party.alliance;
|
|||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
@ -28,7 +29,7 @@ public class PartyAllianceDisbandCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.disbandAlliance(player, party, party.getAlly());
|
mcMMO.p.getPartyManager().disbandAlliance(player, party, party.getAlly());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "alliance", "disband"));
|
sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "alliance", "disband"));
|
||||||
|
@ -3,6 +3,7 @@ package com.gmail.nossr50.commands.party.alliance;
|
|||||||
import com.gmail.nossr50.datatypes.party.Party;
|
import com.gmail.nossr50.datatypes.party.Party;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
import com.gmail.nossr50.locale.LocaleLoader;
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
import com.gmail.nossr50.util.commands.CommandUtils;
|
import com.gmail.nossr50.util.commands.CommandUtils;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
import com.gmail.nossr50.util.player.UserManager;
|
||||||
@ -44,7 +45,7 @@ public class PartyAllianceInviteCommand implements CommandExecutor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PartyManager.inSameParty(player, target)) {
|
if (mcMMO.p.getPartyManager().inSameParty(player, target)) {
|
||||||
sender.sendMessage(LocaleLoader.getString("Party.Player.InSameParty", targetName));
|
sender.sendMessage(LocaleLoader.getString("Party.Player.InSameParty", targetName));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -210,7 +210,7 @@ public class PtpCommand implements TabExecutor {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!PartyManager.inSameParty(player, target)) {
|
if (!mcMMO.p.getPartyManager().inSameParty(player, target)) {
|
||||||
player.sendMessage(LocaleLoader.getString("Party.NotInYourParty", targetName));
|
player.sendMessage(LocaleLoader.getString("Party.NotInYourParty", targetName));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -627,7 +627,11 @@ public class AdvancedConfig extends BukkitConfig {
|
|||||||
|
|
||||||
/* ALCHEMY */
|
/* ALCHEMY */
|
||||||
public int getCatalysisMaxBonusLevel() {
|
public int getCatalysisMaxBonusLevel() {
|
||||||
return config.getInt("Skills.Alchemy.Catalysis.MaxBonusLevel", 1000);
|
if (mcMMO.isRetroModeEnabled()) {
|
||||||
|
return config.getInt("Skills.Alchemy.Catalysis.MaxBonusLevel.RetroMode", 1000);
|
||||||
|
} else {
|
||||||
|
return config.getInt("Skills.Alchemy.Catalysis.MaxBonusLevel.Standard", 100);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getCatalysisMinSpeed() {
|
public double getCatalysisMinSpeed() {
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package com.gmail.nossr50.config.party;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.config.BukkitConfig;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class PartyConfig extends BukkitConfig {
|
||||||
|
public PartyConfig(File dataFolder) {
|
||||||
|
super("party.yml", dataFolder);
|
||||||
|
validate();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void loadKeys() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPartyEnabled() {
|
||||||
|
return config.getBoolean("Party.Enabled", true);
|
||||||
|
}
|
||||||
|
}
|
@ -253,7 +253,7 @@ public class Party {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
PartyManager.informPartyMembersLevelUp(this, levelsGained, getLevel());
|
mcMMO.p.getPartyManager().informPartyMembersLevelUp(this, levelsGained, getLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,7 @@ import org.bukkit.metadata.FixedMetadataValue;
|
|||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.EnumMap;
|
import java.util.EnumMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -649,11 +650,11 @@ public class McMMOPlayer implements Identified {
|
|||||||
|
|
||||||
applyXpGain(skill, modifyXpGain(skill, xp), xpGainReason, xpGainSource);
|
applyXpGain(skill, modifyXpGain(skill, xp), xpGainReason, xpGainSource);
|
||||||
|
|
||||||
if (party == null || party.hasReachedLevelCap()) {
|
if (!mcMMO.p.getPartyConfig().isPartyEnabled() || party == null || party.hasReachedLevelCap()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mcMMO.p.getGeneralConfig().getPartyXpNearMembersNeeded() || !PartyManager.getNearMembers(this).isEmpty()) {
|
if (!mcMMO.p.getGeneralConfig().getPartyXpNearMembersNeeded() || !mcMMO.p.getPartyManager().getNearMembers(this).isEmpty()) {
|
||||||
party.applyXpGain(modifyXpGain(skill, xp));
|
party.applyXpGain(modifyXpGain(skill, xp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -753,13 +754,15 @@ public class McMMOPlayer implements Identified {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public void setupPartyData() {
|
public void setupPartyData() {
|
||||||
party = PartyManager.getPlayerParty(player.getName(), player.getUniqueId());
|
if (mcMMO.p.isPartySystemEnabled()) {
|
||||||
|
party = mcMMO.p.getPartyManager().getPlayerParty(player.getName(), player.getUniqueId());
|
||||||
ptpRecord = new PartyTeleportRecord();
|
ptpRecord = new PartyTeleportRecord();
|
||||||
|
|
||||||
if (inParty()) {
|
if (inParty()) {
|
||||||
loginParty();
|
loginParty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setPartyInvite(Party invite) {
|
public void setPartyInvite(Party invite) {
|
||||||
this.invite = invite;
|
this.invite = invite;
|
||||||
@ -777,7 +780,7 @@ public class McMMOPlayer implements Identified {
|
|||||||
this.party = party;
|
this.party = party;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Party getParty() {
|
public @Nullable Party getParty() {
|
||||||
return party;
|
return party;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -793,7 +796,7 @@ public class McMMOPlayer implements Identified {
|
|||||||
invite = null;
|
invite = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PartyTeleportRecord getPartyTeleportRecord() {
|
public @Nullable PartyTeleportRecord getPartyTeleportRecord() {
|
||||||
return ptpRecord;
|
return ptpRecord;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,4 +54,8 @@ public class McMMOEntityDamageByRuptureEvent extends EntityEvent implements Canc
|
|||||||
public HandlerList getHandlers() {
|
public HandlerList getHandlers() {
|
||||||
return handlers;
|
return handlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static @NotNull HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,6 @@ import com.gmail.nossr50.events.fake.FakeEntityTameEvent;
|
|||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.metadata.MobMetaFlagType;
|
import com.gmail.nossr50.metadata.MobMetaFlagType;
|
||||||
import com.gmail.nossr50.metadata.MobMetadataService;
|
import com.gmail.nossr50.metadata.MobMetadataService;
|
||||||
import com.gmail.nossr50.party.PartyManager;
|
|
||||||
import com.gmail.nossr50.runnables.TravelingBlockMetaCleanup;
|
import com.gmail.nossr50.runnables.TravelingBlockMetaCleanup;
|
||||||
import com.gmail.nossr50.skills.archery.Archery;
|
import com.gmail.nossr50.skills.archery.Archery;
|
||||||
import com.gmail.nossr50.skills.crossbows.Crossbows;
|
import com.gmail.nossr50.skills.crossbows.Crossbows;
|
||||||
@ -238,12 +237,12 @@ public class EntityListener implements Listener {
|
|||||||
|
|
||||||
if(event.getCombuster() instanceof Projectile projectile) {
|
if(event.getCombuster() instanceof Projectile projectile) {
|
||||||
if(projectile.getShooter() instanceof Player attacker) {
|
if(projectile.getShooter() instanceof Player attacker) {
|
||||||
if(checkParties(event, defender, attacker)) {
|
if(checkIfInPartyOrSamePlayer(event, defender, attacker)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(event.getCombuster() instanceof Player attacker) {
|
} else if(event.getCombuster() instanceof Player attacker) {
|
||||||
if(checkParties(event, defender, attacker)) {
|
if(checkIfInPartyOrSamePlayer(event, defender, attacker)) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -339,8 +338,8 @@ public class EntityListener implements Listener {
|
|||||||
//If the attacker is a Player or a projectile belonging to a player
|
//If the attacker is a Player or a projectile belonging to a player
|
||||||
if(attacker instanceof Projectile projectile) {
|
if(attacker instanceof Projectile projectile) {
|
||||||
if(projectile.getShooter() instanceof Player attackingPlayer && !attackingPlayer.equals(defendingPlayer)) {
|
if(projectile.getShooter() instanceof Player attackingPlayer && !attackingPlayer.equals(defendingPlayer)) {
|
||||||
//Check for party friendly fire and cancel the event
|
//Check for friendly fire and cancel the event
|
||||||
if (checkParties(event, defendingPlayer, attackingPlayer)) {
|
if (checkIfInPartyOrSamePlayer(event, defendingPlayer, attackingPlayer)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -358,7 +357,7 @@ public class EntityListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (attacker instanceof Player attackingPlayer){
|
} else if (attacker instanceof Player attackingPlayer){
|
||||||
if (checkParties(event, defendingPlayer, attackingPlayer))
|
if (checkIfInPartyOrSamePlayer(event, defendingPlayer, attackingPlayer))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -457,21 +456,24 @@ public class EntityListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean checkParties(Cancellable event, Player defendingPlayer, Player attackingPlayer) {
|
public boolean checkIfInPartyOrSamePlayer(Cancellable event, Player defendingPlayer, Player attackingPlayer) {
|
||||||
if (!UserManager.hasPlayerDataKey(defendingPlayer) || !UserManager.hasPlayerDataKey(attackingPlayer)) {
|
// This check is probably necessary outside of the party system
|
||||||
|
if (defendingPlayer.equals(attackingPlayer)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We want to make sure we're not gaining XP or applying abilities
|
if(!pluginRef.isPartySystemEnabled()) {
|
||||||
// when we hit ourselves
|
return false;
|
||||||
if (defendingPlayer.equals(attackingPlayer)) {
|
}
|
||||||
|
|
||||||
|
if (!UserManager.hasPlayerDataKey(defendingPlayer) || !UserManager.hasPlayerDataKey(attackingPlayer)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Party Friendly Fire
|
//Party Friendly Fire
|
||||||
if(!mcMMO.p.getGeneralConfig().getPartyFriendlyFire())
|
if(!mcMMO.p.getGeneralConfig().getPartyFriendlyFire())
|
||||||
if ((PartyManager.inSameParty(defendingPlayer, attackingPlayer)
|
if ((mcMMO.p.getPartyManager().inSameParty(defendingPlayer, attackingPlayer)
|
||||||
|| PartyManager.areAllies(defendingPlayer, attackingPlayer))
|
|| mcMMO.p.getPartyManager().areAllies(defendingPlayer, attackingPlayer))
|
||||||
&& !(Permissions.friendlyFire(attackingPlayer)
|
&& !(Permissions.friendlyFire(attackingPlayer)
|
||||||
&& Permissions.friendlyFire(defendingPlayer))) {
|
&& Permissions.friendlyFire(defendingPlayer))) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -8,6 +8,7 @@ import com.gmail.nossr50.config.mods.ArmorConfigManager;
|
|||||||
import com.gmail.nossr50.config.mods.BlockConfigManager;
|
import com.gmail.nossr50.config.mods.BlockConfigManager;
|
||||||
import com.gmail.nossr50.config.mods.EntityConfigManager;
|
import com.gmail.nossr50.config.mods.EntityConfigManager;
|
||||||
import com.gmail.nossr50.config.mods.ToolConfigManager;
|
import com.gmail.nossr50.config.mods.ToolConfigManager;
|
||||||
|
import com.gmail.nossr50.config.party.PartyConfig;
|
||||||
import com.gmail.nossr50.config.skills.alchemy.PotionConfig;
|
import com.gmail.nossr50.config.skills.alchemy.PotionConfig;
|
||||||
import com.gmail.nossr50.config.skills.repair.RepairConfigManager;
|
import com.gmail.nossr50.config.skills.repair.RepairConfigManager;
|
||||||
import com.gmail.nossr50.config.skills.salvage.SalvageConfigManager;
|
import com.gmail.nossr50.config.skills.salvage.SalvageConfigManager;
|
||||||
@ -138,8 +139,10 @@ public class mcMMO extends JavaPlugin {
|
|||||||
|
|
||||||
private GeneralConfig generalConfig;
|
private GeneralConfig generalConfig;
|
||||||
private AdvancedConfig advancedConfig;
|
private AdvancedConfig advancedConfig;
|
||||||
|
private PartyConfig partyConfig;
|
||||||
|
|
||||||
private FoliaLib foliaLib;
|
private FoliaLib foliaLib;
|
||||||
|
private PartyManager partyManager;
|
||||||
|
|
||||||
// private RepairConfig repairConfig;
|
// private RepairConfig repairConfig;
|
||||||
// private SalvageConfig salvageConfig;
|
// private SalvageConfig salvageConfig;
|
||||||
@ -181,6 +184,7 @@ public class mcMMO extends JavaPlugin {
|
|||||||
|
|
||||||
//Init configs
|
//Init configs
|
||||||
advancedConfig = new AdvancedConfig(getDataFolder());
|
advancedConfig = new AdvancedConfig(getDataFolder());
|
||||||
|
partyConfig = new PartyConfig(getDataFolder());
|
||||||
|
|
||||||
//Store this value so other plugins can check it
|
//Store this value so other plugins can check it
|
||||||
isRetroModeEnabled = generalConfig.getIsRetroMode();
|
isRetroModeEnabled = generalConfig.getIsRetroMode();
|
||||||
@ -258,7 +262,10 @@ public class mcMMO extends JavaPlugin {
|
|||||||
registerCoreSkills();
|
registerCoreSkills();
|
||||||
registerCustomRecipes();
|
registerCustomRecipes();
|
||||||
|
|
||||||
PartyManager.loadParties();
|
if (partyConfig.isPartyEnabled()) {
|
||||||
|
partyManager = new PartyManager(this);
|
||||||
|
partyManager.loadParties();
|
||||||
|
}
|
||||||
|
|
||||||
formulaManager = new FormulaManager();
|
formulaManager = new FormulaManager();
|
||||||
|
|
||||||
@ -376,7 +383,8 @@ public class mcMMO extends JavaPlugin {
|
|||||||
UserManager.saveAll(); // Make sure to save player information if the server shuts down
|
UserManager.saveAll(); // Make sure to save player information if the server shuts down
|
||||||
UserManager.clearAll();
|
UserManager.clearAll();
|
||||||
Alchemy.finishAllBrews(); // Finish all partially complete AlchemyBrewTasks to prevent vanilla brewing continuation on restart
|
Alchemy.finishAllBrews(); // Finish all partially complete AlchemyBrewTasks to prevent vanilla brewing continuation on restart
|
||||||
PartyManager.saveParties(); // Save our parties
|
if(partyConfig.isPartyEnabled())
|
||||||
|
getPartyManager().saveParties(); // Save our parties
|
||||||
|
|
||||||
//TODO: Needed?
|
//TODO: Needed?
|
||||||
if(generalConfig.getScoreboardsEnabled())
|
if(generalConfig.getScoreboardsEnabled())
|
||||||
@ -660,14 +668,15 @@ public class mcMMO extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Automatically remove old members from parties
|
// Automatically remove old members from parties
|
||||||
|
if(partyConfig.isPartyEnabled()) {
|
||||||
long kickIntervalTicks = generalConfig.getAutoPartyKickInterval() * 60L * 60L * Misc.TICK_CONVERSION_FACTOR;
|
long kickIntervalTicks = generalConfig.getAutoPartyKickInterval() * 60L * 60L * Misc.TICK_CONVERSION_FACTOR;
|
||||||
|
|
||||||
if (kickIntervalTicks == 0) {
|
if (kickIntervalTicks == 0) {
|
||||||
getFoliaLib().getImpl().runLater(new PartyAutoKickTask(), 2 * Misc.TICK_CONVERSION_FACTOR); // Start 2 seconds after startup.
|
getFoliaLib().getImpl().runLater(new PartyAutoKickTask(), 2 * Misc.TICK_CONVERSION_FACTOR); // Start 2 seconds after startup.
|
||||||
}
|
} else if (kickIntervalTicks > 0) {
|
||||||
else if (kickIntervalTicks > 0) {
|
|
||||||
getFoliaLib().getImpl().runTimer(new PartyAutoKickTask(), kickIntervalTicks, kickIntervalTicks);
|
getFoliaLib().getImpl().runTimer(new PartyAutoKickTask(), kickIntervalTicks, kickIntervalTicks);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Update power level tag scoreboards
|
// Update power level tag scoreboards
|
||||||
getFoliaLib().getImpl().runTimer(new PowerLevelUpdatingTask(), 2 * Misc.TICK_CONVERSION_FACTOR, 2 * Misc.TICK_CONVERSION_FACTOR);
|
getFoliaLib().getImpl().runTimer(new PowerLevelUpdatingTask(), 2 * Misc.TICK_CONVERSION_FACTOR, 2 * Misc.TICK_CONVERSION_FACTOR);
|
||||||
@ -780,6 +789,23 @@ public class mcMMO extends JavaPlugin {
|
|||||||
return advancedConfig;
|
return advancedConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public @NotNull PartyConfig getPartyConfig() {
|
||||||
|
return partyConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the party system is enabled
|
||||||
|
*
|
||||||
|
* @return true if the party system is enabled, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean isPartySystemEnabled() {
|
||||||
|
return partyConfig.isPartyEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public PartyManager getPartyManager() {
|
||||||
|
return partyManager;
|
||||||
|
}
|
||||||
|
|
||||||
public @NotNull FoliaLib getFoliaLib() {
|
public @NotNull FoliaLib getFoliaLib() {
|
||||||
return foliaLib;
|
return foliaLib;
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,8 @@ import com.gmail.nossr50.util.sounds.SoundType;
|
|||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -31,104 +33,44 @@ import java.util.Map.Entry;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import static java.util.Objects.requireNonNull;
|
||||||
|
|
||||||
public final class PartyManager {
|
public final class PartyManager {
|
||||||
private static final String partiesFilePath = mcMMO.getFlatFileDirectory() + "parties.yml";
|
private final @NotNull List<Party> parties;
|
||||||
private static final List<Party> parties = new ArrayList<>();
|
private final @NotNull File partyFile;
|
||||||
private static final File partyFile = new File(partiesFilePath);
|
private final @NotNull mcMMO pluginRef;
|
||||||
|
|
||||||
private PartyManager() {}
|
public PartyManager(@NotNull mcMMO pluginRef) {
|
||||||
|
this.pluginRef = pluginRef;
|
||||||
/**
|
final String partiesFilePath = mcMMO.getFlatFileDirectory() + "parties.yml";
|
||||||
* Check if a party with a given name already exists.
|
this.partyFile = new File(partiesFilePath);
|
||||||
*
|
this.parties = new ArrayList<>();
|
||||||
* @param player The player to notify
|
|
||||||
* @param partyName The name of the party to check
|
|
||||||
* @return true if a party with that name exists, false otherwise
|
|
||||||
*/
|
|
||||||
public static boolean checkPartyExistence(Player player, String partyName) {
|
|
||||||
if (getParty(partyName) == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
player.sendMessage(LocaleLoader.getString("Commands.Party.AlreadyExists", partyName));
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the player can join a party, parties can have a size limit, although there is a permission to bypass this
|
* Checks if the player can join a party, parties can have a size limit, although there is a permission to bypass this
|
||||||
|
*
|
||||||
* @param player player who is attempting to join the party
|
* @param player player who is attempting to join the party
|
||||||
* @param targetParty the target party
|
* @param targetParty the target party
|
||||||
* @return true if party is full and cannot be joined
|
* @return true if party is full and cannot be joined
|
||||||
*/
|
*/
|
||||||
public static boolean isPartyFull(Player player, Party targetParty)
|
public boolean isPartyFull(@NotNull Player player, @NotNull Party targetParty) {
|
||||||
{
|
requireNonNull(player, "player cannot be null!");
|
||||||
return !Permissions.partySizeBypass(player) && mcMMO.p.getGeneralConfig().getPartyMaxSize() >= 1 && targetParty.getOnlineMembers().size() >= mcMMO.p.getGeneralConfig().getPartyMaxSize();
|
requireNonNull(targetParty, "targetParty cannot be null!");
|
||||||
|
return !Permissions.partySizeBypass(player) && pluginRef.getGeneralConfig().getPartyMaxSize() >= 1 && targetParty.getOnlineMembers().size() >= pluginRef.getGeneralConfig().getPartyMaxSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public boolean areAllies(@NotNull Player firstPlayer, @NotNull Player secondPlayer) {
|
||||||
* Attempt to change parties or join a new party.
|
requireNonNull(firstPlayer, "firstPlayer cannot be null!");
|
||||||
*
|
requireNonNull(secondPlayer, "secondPlayer cannot be null!");
|
||||||
* @param mcMMOPlayer The player changing or joining parties
|
|
||||||
* @param newPartyName The name of the party being joined
|
|
||||||
* @return true if the party was joined successfully, false otherwise
|
|
||||||
*/
|
|
||||||
public static boolean changeOrJoinParty(McMMOPlayer mcMMOPlayer, String newPartyName) {
|
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
|
||||||
|
|
||||||
if (mcMMOPlayer.inParty()) {
|
|
||||||
Party oldParty = mcMMOPlayer.getParty();
|
|
||||||
|
|
||||||
if (!handlePartyChangeEvent(player, oldParty.getName(), newPartyName, EventReason.CHANGED_PARTIES)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
removeFromParty(mcMMOPlayer);
|
|
||||||
}
|
|
||||||
else return handlePartyChangeEvent(player, null, newPartyName, EventReason.JOINED_PARTY);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if two online players are in the same party.
|
|
||||||
*
|
|
||||||
* @param firstPlayer The first player
|
|
||||||
* @param secondPlayer The second player
|
|
||||||
* @return true if they are in the same party, false otherwise
|
|
||||||
*/
|
|
||||||
public static boolean inSameParty(Player firstPlayer, Player secondPlayer) {
|
|
||||||
//Profile not loaded
|
//Profile not loaded
|
||||||
if(UserManager.getPlayer(firstPlayer) == null)
|
if (UserManager.getPlayer(firstPlayer) == null) {
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Profile not loaded
|
//Profile not loaded
|
||||||
if(UserManager.getPlayer(secondPlayer) == null)
|
if (UserManager.getPlayer(secondPlayer) == null) {
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Party firstParty = UserManager.getPlayer(firstPlayer).getParty();
|
|
||||||
Party secondParty = UserManager.getPlayer(secondPlayer).getParty();
|
|
||||||
|
|
||||||
if (firstParty == null || secondParty == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return firstParty.equals(secondParty);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean areAllies(Player firstPlayer, Player secondPlayer) {
|
|
||||||
//Profile not loaded
|
|
||||||
if(UserManager.getPlayer(firstPlayer) == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Profile not loaded
|
|
||||||
if(UserManager.getPlayer(secondPlayer) == null)
|
|
||||||
{
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,16 +87,17 @@ public final class PartyManager {
|
|||||||
/**
|
/**
|
||||||
* Get the near party members.
|
* Get the near party members.
|
||||||
*
|
*
|
||||||
* @param mcMMOPlayer The player to check
|
* @param mmoPlayer The player to check
|
||||||
* @return the near party members
|
* @return the near party members
|
||||||
*/
|
*/
|
||||||
public static List<Player> getNearMembers(McMMOPlayer mcMMOPlayer) {
|
public @NotNull List<Player> getNearMembers(@NotNull McMMOPlayer mmoPlayer) {
|
||||||
|
requireNonNull(mmoPlayer, "mmoPlayer cannot be null!");
|
||||||
List<Player> nearMembers = new ArrayList<>();
|
List<Player> nearMembers = new ArrayList<>();
|
||||||
Party party = mcMMOPlayer.getParty();
|
Party party = mmoPlayer.getParty();
|
||||||
|
|
||||||
if (party != null) {
|
if (party != null) {
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
Player player = mmoPlayer.getPlayer();
|
||||||
double range = mcMMO.p.getGeneralConfig().getPartyShareRange();
|
double range = pluginRef.getGeneralConfig().getPartyShareRange();
|
||||||
|
|
||||||
for (Player member : party.getOnlineMembers()) {
|
for (Player member : party.getOnlineMembers()) {
|
||||||
if (!player.equals(member) && member.isValid() && Misc.isNear(player.getLocation(), member.getLocation(), range)) {
|
if (!player.equals(member) && member.isValid() && Misc.isNear(player.getLocation(), member.getLocation(), range)) {
|
||||||
@ -166,13 +109,14 @@ public final class PartyManager {
|
|||||||
return nearMembers;
|
return nearMembers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Player> getNearVisibleMembers(McMMOPlayer mcMMOPlayer) {
|
public @NotNull List<Player> getNearVisibleMembers(@NotNull McMMOPlayer mmoPlayer) {
|
||||||
|
requireNonNull(mmoPlayer, "mmoPlayer cannot be null!");
|
||||||
List<Player> nearMembers = new ArrayList<>();
|
List<Player> nearMembers = new ArrayList<>();
|
||||||
Party party = mcMMOPlayer.getParty();
|
Party party = mmoPlayer.getParty();
|
||||||
|
|
||||||
if (party != null) {
|
if (party != null) {
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
Player player = mmoPlayer.getPlayer();
|
||||||
double range = mcMMO.p.getGeneralConfig().getPartyShareRange();
|
double range = pluginRef.getGeneralConfig().getPartyShareRange();
|
||||||
|
|
||||||
for (Player member : party.getVisibleMembers(player)) {
|
for (Player member : party.getVisibleMembers(player)) {
|
||||||
if (!player.equals(member)
|
if (!player.equals(member)
|
||||||
@ -186,14 +130,14 @@ public final class PartyManager {
|
|||||||
return nearMembers;
|
return nearMembers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a list of all players in this player's party.
|
* Get a list of all players in this player's party.
|
||||||
*
|
*
|
||||||
* @param player The player to check
|
* @param player The player to check
|
||||||
* @return all the players in the player's party
|
* @return all the players in the player's party
|
||||||
*/
|
*/
|
||||||
public static LinkedHashMap<UUID, String> getAllMembers(Player player) {
|
public @NotNull LinkedHashMap<UUID, String> getAllMembers(@NotNull Player player) {
|
||||||
|
requireNonNull(player, "player cannot be null!");
|
||||||
Party party = getParty(player);
|
Party party = getParty(player);
|
||||||
|
|
||||||
return party == null ? new LinkedHashMap<>() : party.getMembers();
|
return party == null ? new LinkedHashMap<>() : party.getMembers();
|
||||||
@ -205,7 +149,8 @@ public final class PartyManager {
|
|||||||
* @param partyName The party to check
|
* @param partyName The party to check
|
||||||
* @return all online players in this party
|
* @return all online players in this party
|
||||||
*/
|
*/
|
||||||
public static List<Player> getOnlineMembers(String partyName) {
|
public @NotNull List<Player> getOnlineMembers(@NotNull String partyName) {
|
||||||
|
requireNonNull(partyName, "partyName cannot be null!");
|
||||||
return getOnlineMembers(getParty(partyName));
|
return getOnlineMembers(getParty(partyName));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,11 +160,12 @@ public final class PartyManager {
|
|||||||
* @param player The player to check
|
* @param player The player to check
|
||||||
* @return all online players in this party
|
* @return all online players in this party
|
||||||
*/
|
*/
|
||||||
public static List<Player> getOnlineMembers(Player player) {
|
public @NotNull List<Player> getOnlineMembers(@NotNull Player player) {
|
||||||
|
requireNonNull(player, "player cannot be null!");
|
||||||
return getOnlineMembers(getParty(player));
|
return getOnlineMembers(getParty(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Player> getOnlineMembers(Party party) {
|
private List<Player> getOnlineMembers(@Nullable Party party) {
|
||||||
return party == null ? new ArrayList<>() : party.getOnlineMembers();
|
return party == null ? new ArrayList<>() : party.getOnlineMembers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +175,8 @@ public final class PartyManager {
|
|||||||
* @param partyName The party name
|
* @param partyName The party name
|
||||||
* @return the existing party, null otherwise
|
* @return the existing party, null otherwise
|
||||||
*/
|
*/
|
||||||
public static Party getParty(String partyName) {
|
public @Nullable Party getParty(@NotNull String partyName) {
|
||||||
|
requireNonNull(partyName, "partyName cannot be null!");
|
||||||
for (Party party : parties) {
|
for (Party party : parties) {
|
||||||
if (party.getName().equalsIgnoreCase(partyName)) {
|
if (party.getName().equalsIgnoreCase(partyName)) {
|
||||||
return party;
|
return party;
|
||||||
@ -246,9 +193,10 @@ public final class PartyManager {
|
|||||||
* @return the existing party, null otherwise
|
* @return the existing party, null otherwise
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static Party getPlayerParty(String playerName) {
|
public @Nullable Party getPlayerParty(@NotNull String playerName) {
|
||||||
|
requireNonNull(playerName, "playerName cannot be null!");
|
||||||
for (Party party : parties) {
|
for (Party party : parties) {
|
||||||
if (party.getMembers().containsKey(playerName)) {
|
if (party.getMembers().containsValue(playerName)) {
|
||||||
return party;
|
return party;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -262,7 +210,9 @@ public final class PartyManager {
|
|||||||
* @param uuid The members uuid
|
* @param uuid The members uuid
|
||||||
* @return the existing party, null otherwise
|
* @return the existing party, null otherwise
|
||||||
*/
|
*/
|
||||||
public static Party getPlayerParty(String playerName, UUID uuid) {
|
public @Nullable Party getPlayerParty(@NotNull String playerName, @NotNull UUID uuid) {
|
||||||
|
requireNonNull(playerName, "playerName cannot be null!");
|
||||||
|
requireNonNull(uuid, "uuid cannot be null!");
|
||||||
for (Party party : parties) {
|
for (Party party : parties) {
|
||||||
LinkedHashMap<UUID, String> members = party.getMembers();
|
LinkedHashMap<UUID, String> members = party.getMembers();
|
||||||
if (members.containsKey(uuid) || members.containsValue(playerName)) {
|
if (members.containsKey(uuid) || members.containsValue(playerName)) {
|
||||||
@ -285,16 +235,18 @@ public final class PartyManager {
|
|||||||
* @param player The member
|
* @param player The member
|
||||||
* @return the existing party, null otherwise
|
* @return the existing party, null otherwise
|
||||||
*/
|
*/
|
||||||
public static Party getParty(Player player) {
|
public @Nullable Party getParty(@NotNull Player player) {
|
||||||
|
requireNonNull(player, "player cannot be null!");
|
||||||
//Profile not loaded
|
//Profile not loaded
|
||||||
if(UserManager.getPlayer(player) == null)
|
if (UserManager.getPlayer(player) == null) {
|
||||||
{
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
|
final McMMOPlayer mmoPlayer = UserManager.getPlayer(player);
|
||||||
|
if(mmoPlayer == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
return mcMMOPlayer.getParty();
|
return mmoPlayer.getParty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -302,7 +254,7 @@ public final class PartyManager {
|
|||||||
*
|
*
|
||||||
* @return the list of parties.
|
* @return the list of parties.
|
||||||
*/
|
*/
|
||||||
public static List<Party> getParties() {
|
public @NotNull List<Party> getParties() {
|
||||||
return parties;
|
return parties;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,7 +264,10 @@ public final class PartyManager {
|
|||||||
* @param player The player to remove
|
* @param player The player to remove
|
||||||
* @param party The party
|
* @param party The party
|
||||||
*/
|
*/
|
||||||
public static void removeFromParty(OfflinePlayer player, Party party) {
|
public void removeFromParty(@NotNull OfflinePlayer player, @NotNull Party party) {
|
||||||
|
requireNonNull(player, "player cannot be null!");
|
||||||
|
requireNonNull(party, "party cannot be null!");
|
||||||
|
|
||||||
LinkedHashMap<UUID, String> members = party.getMembers();
|
LinkedHashMap<UUID, String> members = party.getMembers();
|
||||||
String playerName = player.getName();
|
String playerName = player.getName();
|
||||||
|
|
||||||
@ -324,8 +279,7 @@ public final class PartyManager {
|
|||||||
|
|
||||||
if (members.isEmpty()) {
|
if (members.isEmpty()) {
|
||||||
parties.remove(party);
|
parties.remove(party);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
// If the leaving player was the party leader, appoint a new leader from the party members
|
// If the leaving player was the party leader, appoint a new leader from the party members
|
||||||
if (party.getLeader().getUniqueId().equals(player.getUniqueId())) {
|
if (party.getLeader().getUniqueId().equals(player.getUniqueId())) {
|
||||||
setPartyLeader(members.keySet().iterator().next(), party);
|
setPartyLeader(members.keySet().iterator().next(), party);
|
||||||
@ -340,7 +294,12 @@ public final class PartyManager {
|
|||||||
*
|
*
|
||||||
* @param mcMMOPlayer The player to remove
|
* @param mcMMOPlayer The player to remove
|
||||||
*/
|
*/
|
||||||
public static void removeFromParty(McMMOPlayer mcMMOPlayer) {
|
public void removeFromParty(@NotNull McMMOPlayer mcMMOPlayer) {
|
||||||
|
requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
|
||||||
|
if (mcMMOPlayer.getParty() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
removeFromParty(mcMMOPlayer.getPlayer(), mcMMOPlayer.getParty());
|
removeFromParty(mcMMOPlayer.getPlayer(), mcMMOPlayer.getParty());
|
||||||
processPartyLeaving(mcMMOPlayer);
|
processPartyLeaving(mcMMOPlayer);
|
||||||
}
|
}
|
||||||
@ -351,21 +310,23 @@ public final class PartyManager {
|
|||||||
* @param party The party to remove
|
* @param party The party to remove
|
||||||
* @deprecated Use {@link #disbandParty(McMMOPlayer, Party)}
|
* @deprecated Use {@link #disbandParty(McMMOPlayer, Party)}
|
||||||
*/
|
*/
|
||||||
public static void disbandParty(Party party) {
|
public void disbandParty(@NotNull Party party) {
|
||||||
|
requireNonNull(party, "party cannot be null!");
|
||||||
disbandParty(null, party);
|
disbandParty(null, party);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Disband a party. Kicks out all members and removes the party.
|
* Disband a party. Kicks out all members and removes the party.
|
||||||
*
|
*
|
||||||
|
* @param mcMMOPlayer The player to remove (can be null? lol)
|
||||||
* @param party The party to remove
|
* @param party The party to remove
|
||||||
*/
|
*/
|
||||||
public static void disbandParty(McMMOPlayer mcMMOPlayer, Party party) {
|
public void disbandParty(@Nullable McMMOPlayer mcMMOPlayer, @NotNull Party party) {
|
||||||
|
requireNonNull(party, "party cannot be null!");
|
||||||
//TODO: Potential issues with unloaded profile?
|
//TODO: Potential issues with unloaded profile?
|
||||||
for (final Player member : party.getOnlineMembers()) {
|
for (final Player member : party.getOnlineMembers()) {
|
||||||
//Profile not loaded
|
//Profile not loaded
|
||||||
if(UserManager.getPlayer(member) == null)
|
if (UserManager.getPlayer(member) == null) {
|
||||||
{
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,7 +351,10 @@ public final class PartyManager {
|
|||||||
* @param partyName The party to add the player to
|
* @param partyName The party to add the player to
|
||||||
* @param password The password for this party, null if there was no password
|
* @param password The password for this party, null if there was no password
|
||||||
*/
|
*/
|
||||||
public static void createParty(McMMOPlayer mcMMOPlayer, String partyName, String password) {
|
public void createParty(@NotNull McMMOPlayer mcMMOPlayer, @NotNull String partyName, @Nullable String password) {
|
||||||
|
requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
|
||||||
|
requireNonNull(partyName, "partyName cannot be null!");
|
||||||
|
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
Party party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName.replace(".", ""), password);
|
Party party = new Party(new PartyLeader(player.getUniqueId(), player.getName()), partyName.replace(".", ""), password);
|
||||||
@ -414,7 +378,7 @@ public final class PartyManager {
|
|||||||
* @param password The password provided by the player
|
* @param password The password provided by the player
|
||||||
* @return true if the player can join the party
|
* @return true if the player can join the party
|
||||||
*/
|
*/
|
||||||
public static boolean checkPartyPassword(Player player, Party party, String password) {
|
public boolean checkPartyPassword(@NotNull Player player, @NotNull Party party, @Nullable String password) {
|
||||||
if (party.isLocked()) {
|
if (party.isLocked()) {
|
||||||
String partyPassword = party.getPassword();
|
String partyPassword = party.getPassword();
|
||||||
|
|
||||||
@ -442,7 +406,8 @@ public final class PartyManager {
|
|||||||
*
|
*
|
||||||
* @param mcMMOPlayer The player to add to the party
|
* @param mcMMOPlayer The player to add to the party
|
||||||
*/
|
*/
|
||||||
public static void joinInvitedParty(McMMOPlayer mcMMOPlayer) {
|
public void joinInvitedParty(@NotNull McMMOPlayer mcMMOPlayer) {
|
||||||
|
requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
|
||||||
Party invite = mcMMOPlayer.getPartyInvite();
|
Party invite = mcMMOPlayer.getPartyInvite();
|
||||||
|
|
||||||
// Check if the party still exists, it might have been disbanded
|
// Check if the party still exists, it might have been disbanded
|
||||||
@ -454,9 +419,8 @@ public final class PartyManager {
|
|||||||
/*
|
/*
|
||||||
* Don't let players join a full party
|
* Don't let players join a full party
|
||||||
*/
|
*/
|
||||||
if(mcMMO.p.getGeneralConfig().getPartyMaxSize() > 0 && invite.getMembers().size() >= mcMMO.p.getGeneralConfig().getPartyMaxSize())
|
if (pluginRef.getGeneralConfig().getPartyMaxSize() > 0 && invite.getMembers().size() >= pluginRef.getGeneralConfig().getPartyMaxSize()) {
|
||||||
{
|
NotificationManager.sendPlayerInformation(mcMMOPlayer.getPlayer(), NotificationType.PARTY_MESSAGE, "Commands.Party.PartyFull.InviteAccept", invite.getName(), String.valueOf(pluginRef.getGeneralConfig().getPartyMaxSize()));
|
||||||
NotificationManager.sendPlayerInformation(mcMMOPlayer.getPlayer(), NotificationType.PARTY_MESSAGE, "Commands.Party.PartyFull.InviteAccept", invite.getName(), String.valueOf(mcMMO.p.getGeneralConfig().getPartyMaxSize()));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,7 +434,8 @@ public final class PartyManager {
|
|||||||
*
|
*
|
||||||
* @param mcMMOPlayer The player who accepts the alliance invite
|
* @param mcMMOPlayer The player who accepts the alliance invite
|
||||||
*/
|
*/
|
||||||
public static void acceptAllianceInvite(McMMOPlayer mcMMOPlayer) {
|
public void acceptAllianceInvite(@NotNull McMMOPlayer mcMMOPlayer) {
|
||||||
|
requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
|
||||||
Party invite = mcMMOPlayer.getPartyAllianceInvite();
|
Party invite = mcMMOPlayer.getPartyAllianceInvite();
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
|
|
||||||
@ -490,7 +455,10 @@ public final class PartyManager {
|
|||||||
createAlliance(mcMMOPlayer.getParty(), invite);
|
createAlliance(mcMMOPlayer.getParty(), invite);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void createAlliance(Party firstParty, Party secondParty) {
|
public void createAlliance(@NotNull Party firstParty, @NotNull Party secondParty) {
|
||||||
|
requireNonNull(firstParty, "firstParty cannot be null!");
|
||||||
|
requireNonNull(secondParty, "secondParty cannot be null!");
|
||||||
|
|
||||||
firstParty.setAlly(secondParty);
|
firstParty.setAlly(secondParty);
|
||||||
secondParty.setAlly(firstParty);
|
secondParty.setAlly(firstParty);
|
||||||
|
|
||||||
@ -503,16 +471,22 @@ public final class PartyManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean disbandAlliance(Player player, Party firstParty, Party secondParty){
|
public boolean disbandAlliance(@NotNull Player player, @NotNull Party firstParty, @NotNull Party secondParty) {
|
||||||
|
requireNonNull(player, "player cannot be null!");
|
||||||
|
requireNonNull(firstParty, "firstParty cannot be null!");
|
||||||
|
requireNonNull(secondParty, "secondParty cannot be null!");
|
||||||
|
|
||||||
if (!handlePartyChangeAllianceEvent(player, firstParty.getName(), secondParty.getName(), McMMOPartyAllianceChangeEvent.EventReason.DISBAND_ALLIANCE)) {
|
if (!handlePartyChangeAllianceEvent(player, firstParty.getName(), secondParty.getName(), McMMOPartyAllianceChangeEvent.EventReason.DISBAND_ALLIANCE)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PartyManager.disbandAlliance(firstParty, secondParty);
|
disbandAlliance(firstParty, secondParty);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void disbandAlliance(Party firstParty, Party secondParty) {
|
private void disbandAlliance(@NotNull Party firstParty, @NotNull Party secondParty) {
|
||||||
|
requireNonNull(firstParty, "firstParty cannot be null!");
|
||||||
|
requireNonNull(secondParty, "secondParty cannot be null!");
|
||||||
firstParty.setAlly(null);
|
firstParty.setAlly(null);
|
||||||
secondParty.setAlly(null);
|
secondParty.setAlly(null);
|
||||||
|
|
||||||
@ -531,7 +505,10 @@ public final class PartyManager {
|
|||||||
* @param mcMMOPlayer The player to add to the party
|
* @param mcMMOPlayer The player to add to the party
|
||||||
* @param party The party
|
* @param party The party
|
||||||
*/
|
*/
|
||||||
public static void addToParty(McMMOPlayer mcMMOPlayer, Party party) {
|
public void addToParty(@NotNull McMMOPlayer mcMMOPlayer, @NotNull Party party) {
|
||||||
|
requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
|
||||||
|
requireNonNull(party, "party cannot be null!");
|
||||||
|
|
||||||
Player player = mcMMOPlayer.getPlayer();
|
Player player = mcMMOPlayer.getPlayer();
|
||||||
String playerName = player.getName();
|
String playerName = player.getName();
|
||||||
|
|
||||||
@ -547,7 +524,8 @@ public final class PartyManager {
|
|||||||
* @param partyName The party name
|
* @param partyName The party name
|
||||||
* @return the leader of the party
|
* @return the leader of the party
|
||||||
*/
|
*/
|
||||||
public static String getPartyLeaderName(String partyName) {
|
public @Nullable String getPartyLeaderName(@NotNull String partyName) {
|
||||||
|
requireNonNull(partyName, "partyName cannot be null!");
|
||||||
Party party = getParty(partyName);
|
Party party = getParty(partyName);
|
||||||
|
|
||||||
return party == null ? null : party.getLeader().getPlayerName();
|
return party == null ? null : party.getLeader().getPlayerName();
|
||||||
@ -559,8 +537,10 @@ public final class PartyManager {
|
|||||||
* @param uuid The uuid of the player to set as leader
|
* @param uuid The uuid of the player to set as leader
|
||||||
* @param party The party
|
* @param party The party
|
||||||
*/
|
*/
|
||||||
public static void setPartyLeader(UUID uuid, Party party) {
|
public void setPartyLeader(@NotNull UUID uuid, @NotNull Party party) {
|
||||||
OfflinePlayer player = mcMMO.p.getServer().getOfflinePlayer(uuid);
|
requireNonNull(uuid, "uuid cannot be null!");
|
||||||
|
requireNonNull(party, "party cannot be null!");
|
||||||
|
OfflinePlayer player = pluginRef.getServer().getOfflinePlayer(uuid);
|
||||||
UUID leaderUniqueId = party.getLeader().getUniqueId();
|
UUID leaderUniqueId = party.getLeader().getUniqueId();
|
||||||
|
|
||||||
for (Player member : party.getOnlineMembers()) {
|
for (Player member : party.getOnlineMembers()) {
|
||||||
@ -568,11 +548,9 @@ public final class PartyManager {
|
|||||||
|
|
||||||
if (memberUniqueId.equals(player.getUniqueId())) {
|
if (memberUniqueId.equals(player.getUniqueId())) {
|
||||||
member.sendMessage(LocaleLoader.getString("Party.Owner.Player"));
|
member.sendMessage(LocaleLoader.getString("Party.Owner.Player"));
|
||||||
}
|
} else if (memberUniqueId.equals(leaderUniqueId)) {
|
||||||
else if (memberUniqueId.equals(leaderUniqueId)) {
|
|
||||||
member.sendMessage(LocaleLoader.getString("Party.Owner.NotLeader"));
|
member.sendMessage(LocaleLoader.getString("Party.Owner.NotLeader"));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
member.sendMessage(LocaleLoader.getString("Party.Owner.New", player.getName()));
|
member.sendMessage(LocaleLoader.getString("Party.Owner.New", player.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -585,24 +563,96 @@ public final class PartyManager {
|
|||||||
*
|
*
|
||||||
* @return true if the player can invite
|
* @return true if the player can invite
|
||||||
*/
|
*/
|
||||||
public static boolean canInvite(McMMOPlayer mcMMOPlayer) {
|
public boolean canInvite(@NotNull McMMOPlayer mcMMOPlayer) {
|
||||||
|
requireNonNull(mcMMOPlayer, "mcMMOPlayer cannot be null!");
|
||||||
Party party = mcMMOPlayer.getParty();
|
Party party = mcMMOPlayer.getParty();
|
||||||
|
|
||||||
return !party.isLocked() || party.getLeader().getUniqueId().equals(mcMMOPlayer.getPlayer().getUniqueId());
|
return !party.isLocked() || party.getLeader().getUniqueId().equals(mcMMOPlayer.getPlayer().getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load party file.
|
* Check if a party with a given name already exists.
|
||||||
|
*
|
||||||
|
* @param player The player to notify
|
||||||
|
* @param partyName The name of the party to check
|
||||||
|
* @return true if a party with that name exists, false otherwise
|
||||||
*/
|
*/
|
||||||
public static void loadParties() {
|
public boolean checkPartyExistence(@NotNull Player player, @NotNull String partyName) {
|
||||||
if (!partyFile.exists()) {
|
requireNonNull(player, "player cannot be null!");
|
||||||
return;
|
requireNonNull(partyName, "partyName cannot be null!");
|
||||||
|
|
||||||
|
if (getParty(partyName) == null) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (mcMMO.getUpgradeManager().shouldUpgrade(UpgradeType.ADD_UUIDS_PARTY)) {
|
player.sendMessage(LocaleLoader.getString("Commands.Party.AlreadyExists", partyName));
|
||||||
// loadAndUpgradeParties();
|
return true;
|
||||||
// return;
|
}
|
||||||
// }
|
|
||||||
|
/**
|
||||||
|
* Attempt to change parties or join a new party.
|
||||||
|
*
|
||||||
|
* @param mmoPlayer The player changing or joining parties
|
||||||
|
* @param newPartyName The name of the party being joined
|
||||||
|
* @return true if the party was joined successfully, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean changeOrJoinParty(@NotNull McMMOPlayer mmoPlayer, @NotNull String newPartyName) {
|
||||||
|
requireNonNull(mmoPlayer, "mmoPlayer cannot be null!");
|
||||||
|
requireNonNull(newPartyName, "newPartyName cannot be null!");
|
||||||
|
|
||||||
|
final Player player = mmoPlayer.getPlayer();
|
||||||
|
|
||||||
|
if (mmoPlayer.inParty()) {
|
||||||
|
final Party oldParty = mmoPlayer.getParty();
|
||||||
|
|
||||||
|
if (!handlePartyChangeEvent(player, oldParty.getName(), newPartyName, EventReason.CHANGED_PARTIES)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
removeFromParty(mmoPlayer);
|
||||||
|
} else return handlePartyChangeEvent(player, null, newPartyName, EventReason.JOINED_PARTY);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if two online players are in the same party.
|
||||||
|
*
|
||||||
|
* @param firstPlayer The first player
|
||||||
|
* @param secondPlayer The second player
|
||||||
|
* @return true if they are in the same party, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean inSameParty(@NotNull Player firstPlayer, @NotNull Player secondPlayer) {
|
||||||
|
requireNonNull(firstPlayer, "firstPlayer cannot be null!");
|
||||||
|
requireNonNull(secondPlayer, "secondPlayer cannot be null!");
|
||||||
|
|
||||||
|
//Profile not loaded
|
||||||
|
if (UserManager.getPlayer(firstPlayer) == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Profile not loaded
|
||||||
|
if (UserManager.getPlayer(secondPlayer) == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Party firstParty = UserManager.getPlayer(firstPlayer).getParty();
|
||||||
|
Party secondParty = UserManager.getPlayer(secondPlayer).getParty();
|
||||||
|
|
||||||
|
if (firstParty == null || secondParty == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return firstParty.equals(secondParty);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load party file.
|
||||||
|
*/
|
||||||
|
public void loadParties() {
|
||||||
|
if (!pluginRef.getPartyConfig().isPartyEnabled() || !partyFile.exists()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
YamlConfiguration partiesFile;
|
YamlConfiguration partiesFile;
|
||||||
@ -641,31 +691,30 @@ public final class PartyManager {
|
|||||||
|
|
||||||
parties.add(party);
|
parties.add(party);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
mcMMO.p.getLogger().log(Level.WARNING, "An exception occurred while loading a party with name '" + partyName + "'. Skipped loading party.", e);
|
pluginRef.getLogger().log(Level.WARNING, "An exception occurred while loading a party with name '" + partyName + "'. Skipped loading party.", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LogUtils.debug(mcMMO.p.getLogger(), "Loaded (" + parties.size() + ") Parties...");
|
LogUtils.debug(pluginRef.getLogger(), "Loaded (" + parties.size() + ") Parties...");
|
||||||
|
|
||||||
for (Party party : hasAlly) {
|
for (Party party : hasAlly) {
|
||||||
party.setAlly(PartyManager.getParty(partiesFile.getString(party.getName() + ".Ally")));
|
party.setAlly(getParty(partiesFile.getString(party.getName() + ".Ally")));
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save party file.
|
* Save party file.
|
||||||
*/
|
*/
|
||||||
public static void saveParties() {
|
public void saveParties() {
|
||||||
LogUtils.debug(mcMMO.p.getLogger(), "[Party Data] Saving...");
|
LogUtils.debug(pluginRef.getLogger(), "[Party Data] Saving...");
|
||||||
|
|
||||||
if (partyFile.exists()) {
|
if (partyFile.exists()) {
|
||||||
if (!partyFile.delete()) {
|
if (!partyFile.delete()) {
|
||||||
mcMMO.p.getLogger().warning("Could not delete party file. Party saving failed!");
|
pluginRef.getLogger().warning("Could not delete party file. Party saving failed!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -705,79 +754,11 @@ public final class PartyManager {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
partiesFile.save(partyFile);
|
partiesFile.save(partyFile);
|
||||||
}
|
} catch (Exception e) {
|
||||||
catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// private static void loadAndUpgradeParties() {
|
|
||||||
// YamlConfiguration partiesFile = YamlConfiguration.loadConfiguration(partyFile);
|
|
||||||
//
|
|
||||||
// if (!partyFile.renameTo(new File(mcMMO.getFlatFileDirectory() + "parties.yml.converted"))) {
|
|
||||||
// mcMMO.p.getLogger().severe("Could not rename parties.yml to parties.yml.converted!");
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// ArrayList<Party> hasAlly = new ArrayList<>();
|
|
||||||
//
|
|
||||||
// for (String partyName : partiesFile.getConfigurationSection("").getKeys(false)) {
|
|
||||||
// Party party = new Party(partyName);
|
|
||||||
//
|
|
||||||
// String leaderName = partiesFile.getString(partyName + ".Leader");
|
|
||||||
// PlayerProfile profile = mcMMO.getDatabaseManager().loadPlayerProfile(leaderName, false);
|
|
||||||
//
|
|
||||||
// if (!profile.isLoaded()) {
|
|
||||||
// mcMMO.p.getLogger().warning("Could not find UUID in database for party leader " + leaderName + " in party " + partyName);
|
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// UUID leaderUniqueId = profile.getUniqueId();
|
|
||||||
//
|
|
||||||
// party.setLeader(new PartyLeader(leaderUniqueId, leaderName));
|
|
||||||
// party.setPassword(partiesFile.getString(partyName + ".Password"));
|
|
||||||
// party.setLocked(partiesFile.getBoolean(partyName + ".Locked"));
|
|
||||||
// party.setLevel(partiesFile.getInt(partyName + ".Level"));
|
|
||||||
// party.setXp(partiesFile.getInt(partyName + ".Xp"));
|
|
||||||
//
|
|
||||||
// if (partiesFile.getString(partyName + ".Ally") != null) {
|
|
||||||
// hasAlly.add(party);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// party.setXpShareMode(ShareMode.getShareMode(partiesFile.getString(partyName + ".ExpShareMode", "NONE")));
|
|
||||||
// party.setItemShareMode(ShareMode.getShareMode(partiesFile.getString(partyName + ".ItemShareMode", "NONE")));
|
|
||||||
//
|
|
||||||
// for (ItemShareType itemShareType : ItemShareType.values()) {
|
|
||||||
// party.setSharingDrops(itemShareType, partiesFile.getBoolean(partyName + ".ItemShareType." + itemShareType.toString(), true));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// LinkedHashMap<UUID, String> members = party.getMembers();
|
|
||||||
//
|
|
||||||
// for (String memberName : partiesFile.getStringList(partyName + ".Members")) {
|
|
||||||
// PlayerProfile memberProfile = mcMMO.getDatabaseManager().loadPlayerProfile(memberName, false);
|
|
||||||
//
|
|
||||||
// if (!memberProfile.isLoaded()) {
|
|
||||||
// mcMMO.p.getLogger().warning("Could not find UUID in database for party member " + memberName + " in party " + partyName);
|
|
||||||
// continue;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// UUID memberUniqueId = memberProfile.getUniqueId();
|
|
||||||
//
|
|
||||||
// members.put(memberUniqueId, memberName);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// parties.add(party);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// LogUtils.debug(mcMMO.p.getLogger(), "Loaded (" + parties.size() + ") Parties...");
|
|
||||||
//
|
|
||||||
// for (Party party : hasAlly) {
|
|
||||||
// party.setAlly(PartyManager.getParty(partiesFile.getString(party.getName() + ".Ally")));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// mcMMO.getUpgradeManager().setUpgradeCompleted(UpgradeType.ADD_UUIDS_PARTY);
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle party change event.
|
* Handle party change event.
|
||||||
*
|
*
|
||||||
@ -787,9 +768,9 @@ public final class PartyManager {
|
|||||||
* @param reason The reason for changing parties
|
* @param reason The reason for changing parties
|
||||||
* @return true if the change event was successful, false otherwise
|
* @return true if the change event was successful, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean handlePartyChangeEvent(Player player, String oldPartyName, String newPartyName, EventReason reason) {
|
public boolean handlePartyChangeEvent(Player player, String oldPartyName, String newPartyName, EventReason reason) {
|
||||||
McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, oldPartyName, newPartyName, reason);
|
McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, oldPartyName, newPartyName, reason);
|
||||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
pluginRef.getServer().getPluginManager().callEvent(event);
|
||||||
|
|
||||||
return !event.isCancelled();
|
return !event.isCancelled();
|
||||||
}
|
}
|
||||||
@ -803,9 +784,9 @@ public final class PartyManager {
|
|||||||
* @param reason The reason for changing allies
|
* @param reason The reason for changing allies
|
||||||
* @return true if the change event was successful, false otherwise
|
* @return true if the change event was successful, false otherwise
|
||||||
*/
|
*/
|
||||||
public static boolean handlePartyChangeAllianceEvent(Player player, String oldAllyName, String newAllyName, McMMOPartyAllianceChangeEvent.EventReason reason) {
|
public boolean handlePartyChangeAllianceEvent(Player player, String oldAllyName, String newAllyName, McMMOPartyAllianceChangeEvent.EventReason reason) {
|
||||||
McMMOPartyAllianceChangeEvent event = new McMMOPartyAllianceChangeEvent(player, oldAllyName, newAllyName, reason);
|
McMMOPartyAllianceChangeEvent event = new McMMOPartyAllianceChangeEvent(player, oldAllyName, newAllyName, reason);
|
||||||
mcMMO.p.getServer().getPluginManager().callEvent(event);
|
pluginRef.getServer().getPluginManager().callEvent(event);
|
||||||
|
|
||||||
return !event.isCancelled();
|
return !event.isCancelled();
|
||||||
}
|
}
|
||||||
@ -815,7 +796,7 @@ public final class PartyManager {
|
|||||||
*
|
*
|
||||||
* @param mcMMOPlayer The player to remove party data from.
|
* @param mcMMOPlayer The player to remove party data from.
|
||||||
*/
|
*/
|
||||||
public static void processPartyLeaving(McMMOPlayer mcMMOPlayer) {
|
public void processPartyLeaving(@NotNull McMMOPlayer mcMMOPlayer) {
|
||||||
mcMMOPlayer.removeParty();
|
mcMMOPlayer.removeParty();
|
||||||
mcMMOPlayer.setChatMode(ChatChannel.NONE);
|
mcMMOPlayer.setChatMode(ChatChannel.NONE);
|
||||||
mcMMOPlayer.setItemShareModifier(10);
|
mcMMOPlayer.setItemShareModifier(10);
|
||||||
@ -828,8 +809,8 @@ public final class PartyManager {
|
|||||||
* @param levelsGained The amount of levels gained
|
* @param levelsGained The amount of levels gained
|
||||||
* @param level The current party level
|
* @param level The current party level
|
||||||
*/
|
*/
|
||||||
public static void informPartyMembersLevelUp(Party party, int levelsGained, int level) {
|
public void informPartyMembersLevelUp(Party party, int levelsGained, int level) {
|
||||||
boolean levelUpSoundsEnabled = mcMMO.p.getGeneralConfig().getLevelUpSoundsEnabled();
|
boolean levelUpSoundsEnabled = pluginRef.getGeneralConfig().getLevelUpSoundsEnabled();
|
||||||
for (Player member : party.getOnlineMembers()) {
|
for (Player member : party.getOnlineMembers()) {
|
||||||
member.sendMessage(LocaleLoader.getString("Party.LevelUp", levelsGained, level));
|
member.sendMessage(LocaleLoader.getString("Party.LevelUp", levelsGained, level));
|
||||||
|
|
||||||
@ -845,7 +826,7 @@ public final class PartyManager {
|
|||||||
* @param party The concerned party
|
* @param party The concerned party
|
||||||
* @param playerName The name of the player that joined
|
* @param playerName The name of the player that joined
|
||||||
*/
|
*/
|
||||||
private static void informPartyMembersJoin(Party party, String playerName) {
|
private void informPartyMembersJoin(Party party, String playerName) {
|
||||||
for (Player member : party.getOnlineMembers()) {
|
for (Player member : party.getOnlineMembers()) {
|
||||||
member.sendMessage(LocaleLoader.getString("Party.InformedOnJoin", playerName));
|
member.sendMessage(LocaleLoader.getString("Party.InformedOnJoin", playerName));
|
||||||
}
|
}
|
||||||
@ -857,7 +838,7 @@ public final class PartyManager {
|
|||||||
* @param party The concerned party
|
* @param party The concerned party
|
||||||
* @param playerName The name of the player that left
|
* @param playerName The name of the player that left
|
||||||
*/
|
*/
|
||||||
private static void informPartyMembersQuit(Party party, String playerName) {
|
private void informPartyMembersQuit(Party party, String playerName) {
|
||||||
for (Player member : party.getOnlineMembers()) {
|
for (Player member : party.getOnlineMembers()) {
|
||||||
member.sendMessage(LocaleLoader.getString("Party.InformedOnQuit", playerName));
|
member.sendMessage(LocaleLoader.getString("Party.InformedOnQuit", playerName));
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public final class ShareHandler {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Player> nearMembers = PartyManager.getNearVisibleMembers(mcMMOPlayer);
|
List<Player> nearMembers = mcMMO.p.getPartyManager().getNearVisibleMembers(mcMMOPlayer);
|
||||||
|
|
||||||
if (nearMembers.isEmpty()) {
|
if (nearMembers.isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
@ -87,7 +87,7 @@ public final class ShareHandler {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Player> nearMembers = PartyManager.getNearMembers(mcMMOPlayer);
|
List<Player> nearMembers = mcMMO.p.getPartyManager().getNearMembers(mcMMOPlayer);
|
||||||
|
|
||||||
if (nearMembers.isEmpty()) {
|
if (nearMembers.isEmpty()) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -20,7 +20,7 @@ public class SaveTimerTask extends CancellableRunnable {
|
|||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(mcMMO.p.getPartyConfig().isPartyEnabled())
|
||||||
PartyManager.saveParties();
|
mcMMO.p.getPartyManager().saveParties();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ public class TeleportationWarmup extends CancellableRunnable {
|
|||||||
|
|
||||||
mcMMOPlayer.setTeleportCommenceLocation(null);
|
mcMMOPlayer.setTeleportCommenceLocation(null);
|
||||||
|
|
||||||
if (!PartyManager.inSameParty(teleportingPlayer, targetPlayer)) {
|
if (!mcMMO.p.getPartyManager().inSameParty(teleportingPlayer, targetPlayer)) {
|
||||||
teleportingPlayer.sendMessage(LocaleLoader.getString("Party.NotInYourParty", targetPlayer.getName()));
|
teleportingPlayer.sendMessage(LocaleLoader.getString("Party.NotInYourParty", targetPlayer.getName()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ public class PartyAutoKickTask extends CancellableRunnable {
|
|||||||
|
|
||||||
long currentTime = System.currentTimeMillis();
|
long currentTime = System.currentTimeMillis();
|
||||||
|
|
||||||
for (Party party : PartyManager.getParties()) {
|
for (Party party : mcMMO.p.getPartyManager().getParties()) {
|
||||||
for (UUID memberUniqueId : party.getMembers().keySet()) {
|
for (UUID memberUniqueId : party.getMembers().keySet()) {
|
||||||
OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberUniqueId);
|
OfflinePlayer member = mcMMO.p.getServer().getOfflinePlayer(memberUniqueId);
|
||||||
boolean isProcessed = processedPlayers.contains(memberUniqueId);
|
boolean isProcessed = processedPlayers.contains(memberUniqueId);
|
||||||
@ -38,7 +38,7 @@ public class PartyAutoKickTask extends CancellableRunnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (Entry<OfflinePlayer, Party> entry : toRemove.entrySet()) {
|
for (Entry<OfflinePlayer, Party> entry : toRemove.entrySet()) {
|
||||||
PartyManager.removeFromParty(entry.getKey(), entry.getValue());
|
mcMMO.p.getPartyManager().removeFromParty(entry.getKey(), entry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -145,15 +145,6 @@ public final class CommandRegistrationManager {
|
|||||||
command.setExecutor(new McgodCommand());
|
command.setExecutor(new McgodCommand());
|
||||||
}
|
}
|
||||||
|
|
||||||
// private static void registerDropTreasureCommand() {
|
|
||||||
// PluginCommand command = mcMMO.p.getCommand("mmodroptreasures");
|
|
||||||
// command.setDescription(LocaleLoader.getString("Commands.Description.droptreasures"));
|
|
||||||
// command.setPermission("mcmmo.commands.droptreasures");
|
|
||||||
// command.setPermissionMessage(permissionsMessage);
|
|
||||||
// command.setUsage(LocaleLoader.getString("Commands.Usage.0", "mcgod"));
|
|
||||||
// command.setExecutor(new DropTreasureCommand());
|
|
||||||
// }
|
|
||||||
|
|
||||||
private static void registerMmoInfoCommand() {
|
private static void registerMmoInfoCommand() {
|
||||||
PluginCommand command = mcMMO.p.getCommand("mmoinfo");
|
PluginCommand command = mcMMO.p.getCommand("mmoinfo");
|
||||||
command.setDescription(LocaleLoader.getString("Commands.Description.mmoinfo"));
|
command.setDescription(LocaleLoader.getString("Commands.Description.mmoinfo"));
|
||||||
@ -323,28 +314,6 @@ public final class CommandRegistrationManager {
|
|||||||
command.setExecutor(new McconvertCommand());
|
command.setExecutor(new McconvertCommand());
|
||||||
}
|
}
|
||||||
|
|
||||||
// private static void registerAdminChatCommand() {
|
|
||||||
// PluginCommand command = mcMMO.p.getCommand("adminchat");
|
|
||||||
// command.setDescription(LocaleLoader.getString("Commands.Description.adminchat"));
|
|
||||||
// command.setPermission("mcmmo.chat.adminchat");
|
|
||||||
// command.setPermissionMessage(permissionsMessage);
|
|
||||||
// command.setUsage(LocaleLoader.getString("Commands.Usage.0", "adminchat"));
|
|
||||||
// command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "adminchat", "<on|off>"));
|
|
||||||
// command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "adminchat", "<" + LocaleLoader.getString("Commands.Usage.Message") + ">"));
|
|
||||||
// command.setExecutor(new AdminChatCommand());
|
|
||||||
// }
|
|
||||||
|
|
||||||
// private static void registerPartyChatCommand() {
|
|
||||||
// PluginCommand command = mcMMO.p.getCommand("partychat");
|
|
||||||
// command.setDescription(LocaleLoader.getString("Commands.Description.partychat"));
|
|
||||||
// command.setPermission("mcmmo.chat.partychat;mcmmo.commands.party");
|
|
||||||
// command.setPermissionMessage(permissionsMessage);
|
|
||||||
// command.setUsage(LocaleLoader.getString("Commands.Usage.0", "partychat"));
|
|
||||||
// command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "partychat", "<on|off>"));
|
|
||||||
// command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "partychat", "<" + LocaleLoader.getString("Commands.Usage.Message") + ">"));
|
|
||||||
// command.setExecutor(new PartyChatCommand());
|
|
||||||
// }
|
|
||||||
|
|
||||||
private static void registerPartyCommand() {
|
private static void registerPartyCommand() {
|
||||||
PluginCommand command = mcMMO.p.getCommand("party");
|
PluginCommand command = mcMMO.p.getCommand("party");
|
||||||
command.setDescription(LocaleLoader.getString("Commands.Description.party"));
|
command.setDescription(LocaleLoader.getString("Commands.Description.party"));
|
||||||
@ -366,26 +335,6 @@ public final class CommandRegistrationManager {
|
|||||||
command.setExecutor(new PtpCommand());
|
command.setExecutor(new PtpCommand());
|
||||||
}
|
}
|
||||||
|
|
||||||
// private static void registerHardcoreCommand() {
|
|
||||||
// PluginCommand command = mcMMO.p.getCommand("hardcore");
|
|
||||||
// command.setDescription(LocaleLoader.getString("Commands.Description.hardcore"));
|
|
||||||
// command.setPermission("mcmmo.commands.hardcore;mcmmo.commands.hardcore.toggle;mcmmo.commands.hardcore.modify");
|
|
||||||
// command.setPermissionMessage(permissionsMessage);
|
|
||||||
// command.setUsage(LocaleLoader.getString("Commands.Usage.1", "hardcore", "[on|off]"));
|
|
||||||
// command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "hardcore", "<" + LocaleLoader.getString("Commands.Usage.Rate") + ">"));
|
|
||||||
// command.setExecutor(new HardcoreCommand());
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private static void registerVampirismCommand() {
|
|
||||||
// PluginCommand command = mcMMO.p.getCommand("vampirism");
|
|
||||||
// command.setDescription(LocaleLoader.getString("Commands.Description.vampirism"));
|
|
||||||
// command.setPermission("mcmmo.commands.vampirism;mcmmo.commands.vampirism.toggle;mcmmo.commands.vampirism.modify");
|
|
||||||
// command.setPermissionMessage(permissionsMessage);
|
|
||||||
// command.setUsage(LocaleLoader.getString("Commands.Usage.1", "vampirism", "[on|off]"));
|
|
||||||
// command.setUsage(command.getUsage() + "\n" + LocaleLoader.getString("Commands.Usage.1", "vampirism", "<" + LocaleLoader.getString("Commands.Usage.Rate") + ">"));
|
|
||||||
// command.setExecutor(new VampirismCommand());
|
|
||||||
// }
|
|
||||||
|
|
||||||
private static void registerMcnotifyCommand() {
|
private static void registerMcnotifyCommand() {
|
||||||
PluginCommand command = mcMMO.p.getCommand("mcnotify");
|
PluginCommand command = mcMMO.p.getCommand("mcnotify");
|
||||||
command.setDescription(LocaleLoader.getString("Commands.Description.mcnotify"));
|
command.setDescription(LocaleLoader.getString("Commands.Description.mcnotify"));
|
||||||
@ -465,13 +414,11 @@ public final class CommandRegistrationManager {
|
|||||||
registerMmoeditCommand();
|
registerMmoeditCommand();
|
||||||
registerSkillresetCommand();
|
registerSkillresetCommand();
|
||||||
|
|
||||||
// Hardcore Commands
|
|
||||||
// registerHardcoreCommand();
|
|
||||||
// registerVampirismCommand();
|
|
||||||
|
|
||||||
// Party Commands
|
// Party Commands
|
||||||
|
if (mcMMO.p.getPartyConfig().isPartyEnabled()) {
|
||||||
registerPartyCommand();
|
registerPartyCommand();
|
||||||
registerPtpCommand();
|
registerPtpCommand();
|
||||||
|
}
|
||||||
|
|
||||||
// Player Commands
|
// Player Commands
|
||||||
registerInspectCommand();
|
registerInspectCommand();
|
||||||
|
@ -810,7 +810,8 @@ public final class CombatUtils {
|
|||||||
|
|
||||||
if (target instanceof Player defender) {
|
if (target instanceof Player defender) {
|
||||||
if (!ExperienceConfig.getInstance().getExperienceGainsPlayerVersusPlayerEnabled()
|
if (!ExperienceConfig.getInstance().getExperienceGainsPlayerVersusPlayerEnabled()
|
||||||
|| PartyManager.inSameParty(mcMMOPlayer.getPlayer(), (Player) target)) {
|
||
|
||||||
|
(mcMMO.p.getPartyConfig().isPartyEnabled() && mcMMO.p.getPartyManager().inSameParty(mcMMOPlayer.getPlayer(), (Player) target))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -898,7 +899,7 @@ public final class CombatUtils {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((PartyManager.inSameParty(player, defender) || PartyManager.areAllies(player, defender)) && !(Permissions.friendlyFire(player) && Permissions.friendlyFire(defender))) {
|
if ((mcMMO.p.getPartyManager().inSameParty(player, defender) || mcMMO.p.getPartyManager().areAllies(player, defender)) && !(Permissions.friendlyFire(player) && Permissions.friendlyFire(defender))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -949,7 +950,7 @@ public final class CombatUtils {
|
|||||||
|
|
||||||
if (tamer instanceof Player owner) {
|
if (tamer instanceof Player owner) {
|
||||||
|
|
||||||
return (owner == attacker || PartyManager.inSameParty(attacker, owner) || PartyManager.areAllies(attacker, owner));
|
return (owner == attacker || mcMMO.p.getPartyManager().inSameParty(attacker, owner) || mcMMO.p.getPartyManager().areAllies(attacker, owner));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
4
src/main/resources/party.yml
Normal file
4
src/main/resources/party.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Settings for mcMMO Party System
|
||||||
|
Party:
|
||||||
|
# Enable or disable the mcMMO party system
|
||||||
|
Enabled: true
|
98
src/test/java/com/gmail/nossr50/party/PartyManagerTest.java
Normal file
98
src/test/java/com/gmail/nossr50/party/PartyManagerTest.java
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
package com.gmail.nossr50.party;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
||||||
|
import com.gmail.nossr50.locale.LocaleLoader;
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import org.bukkit.Server;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.plugin.PluginManager;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
class PartyManagerTest {
|
||||||
|
|
||||||
|
static mcMMO mockMcMMO;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
public static void setup() {
|
||||||
|
// create a static stub for LocaleLoader.class
|
||||||
|
mockStatic(LocaleLoader.class);
|
||||||
|
when(LocaleLoader.getString(anyString())).thenReturn("");
|
||||||
|
|
||||||
|
mockMcMMO = mock(mcMMO.class);
|
||||||
|
final Server mockServer = mock(Server.class);
|
||||||
|
when(mockMcMMO.getServer()).thenReturn(mockServer);
|
||||||
|
when(mockServer.getPluginManager()).thenReturn(mock(PluginManager.class));
|
||||||
|
|
||||||
|
// TODO: Add cleanup for static mock
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createPartyWithoutPasswordShouldSucceed() {
|
||||||
|
// Given
|
||||||
|
PartyManager partyManager = new PartyManager(mockMcMMO);
|
||||||
|
String partyName = "TestParty";
|
||||||
|
|
||||||
|
// TODO: Update this with utils from the other dev branches in the future
|
||||||
|
Player player = mock(Player.class);
|
||||||
|
McMMOPlayer mmoPlayer = mock(McMMOPlayer.class);
|
||||||
|
when(mmoPlayer.getPlayer()).thenReturn(player);
|
||||||
|
when(player.getUniqueId()).thenReturn(new UUID(0, 0));
|
||||||
|
|
||||||
|
// When & Then
|
||||||
|
partyManager.createParty(mmoPlayer, partyName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createPartyWithPasswordShouldSucceed() {
|
||||||
|
// Given
|
||||||
|
PartyManager partyManager = new PartyManager(mockMcMMO);
|
||||||
|
String partyName = "TestParty";
|
||||||
|
String partyPassword = "somePassword";
|
||||||
|
|
||||||
|
// TODO: Update this with utils from the other dev branches in the future
|
||||||
|
Player player = mock(Player.class);
|
||||||
|
McMMOPlayer mmoPlayer = mock(McMMOPlayer.class);
|
||||||
|
when(mmoPlayer.getPlayer()).thenReturn(player);
|
||||||
|
when(player.getUniqueId()).thenReturn(new UUID(0, 0));
|
||||||
|
|
||||||
|
// When & Then
|
||||||
|
partyManager.createParty(mmoPlayer, partyName, partyPassword);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createPartyWithoutNameShouldFail() {
|
||||||
|
// Given
|
||||||
|
PartyManager partyManager = new PartyManager(mockMcMMO);
|
||||||
|
String partyPassword = "somePassword";
|
||||||
|
|
||||||
|
// TODO: Update this with utils from the other dev branches in the future
|
||||||
|
Player player = mock(Player.class);
|
||||||
|
McMMOPlayer mmoPlayer = mock(McMMOPlayer.class);
|
||||||
|
when(mmoPlayer.getPlayer()).thenReturn(player);
|
||||||
|
when(player.getUniqueId()).thenReturn(new UUID(0, 0));
|
||||||
|
|
||||||
|
// When & Then
|
||||||
|
assertThrows(NullPointerException.class,
|
||||||
|
() -> partyManager.createParty(mmoPlayer, null, partyPassword));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createPartyWithoutPlayerShouldFail() {
|
||||||
|
// Given
|
||||||
|
PartyManager partyManager = new PartyManager(mockMcMMO);
|
||||||
|
String partyName = "TestParty";
|
||||||
|
String partyPassword = "somePassword";
|
||||||
|
|
||||||
|
// When & Then
|
||||||
|
assertThrows(NullPointerException.class,
|
||||||
|
() -> partyManager.createParty(null, partyName, partyPassword));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user