mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-28 19:54:44 +02:00
Put McMMOPlayer to use where it made sense
It's basically a wrapper for anything related to players, as a consequence Users.getProfile() is now depreciated. Also removed SkillTools.xpProcessing() because of some redundancy with McMMOPlayer.addXp(). + some cleanup for consistency sake.
This commit is contained in:
@ -13,7 +13,7 @@ public class Party {
|
||||
private String name;
|
||||
private String password;
|
||||
private boolean locked;
|
||||
private String expShareMode;
|
||||
private ShareHandler.XpShareMode xpShareMode;
|
||||
|
||||
public List<String> getMembers() {
|
||||
return members;
|
||||
@ -64,11 +64,11 @@ public class Party {
|
||||
this.locked = locked;
|
||||
}
|
||||
|
||||
public void setExpShareMode(String expShareMode) {
|
||||
this.expShareMode = expShareMode;
|
||||
public void setXpShareMode(ShareHandler.XpShareMode xpShareMode) {
|
||||
this.xpShareMode = xpShareMode;
|
||||
}
|
||||
|
||||
public String getExpShareMode() {
|
||||
return expShareMode;
|
||||
public ShareHandler.XpShareMode getXpShareMode() {
|
||||
return xpShareMode;
|
||||
}
|
||||
}
|
||||
|
@ -244,7 +244,7 @@ public final class PartyManager {
|
||||
|
||||
party.setName(partyName);
|
||||
party.setLeader(playerName);
|
||||
party.setExpShareMode("NO_SHARE");
|
||||
party.setXpShareMode(ShareHandler.XpShareMode.NONE);
|
||||
party.setLocked(true);//Parties are now invite-only by default, can be set to open with /party unlock
|
||||
|
||||
if (password != null) {
|
||||
@ -259,7 +259,7 @@ public final class PartyManager {
|
||||
return;
|
||||
}
|
||||
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Party.Create", new Object[]{party.getName()}));
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Party.Create", new Object[] {party.getName()}));
|
||||
addToParty(player.getName(), playerProfile, party);
|
||||
}
|
||||
|
||||
@ -459,7 +459,7 @@ public final class PartyManager {
|
||||
party.setLeader(partiesFile.getString(partyName + ".Leader"));
|
||||
party.setPassword(partiesFile.getString(partyName + ".Password"));
|
||||
party.setLocked(partiesFile.getBoolean(partyName + ".Locked"));
|
||||
party.setExpShareMode(partiesFile.getString(partyName + ".ExpShareMode"));
|
||||
party.setXpShareMode(ShareHandler.XpShareMode.getFromString(partiesFile.getString(partyName + ".ExpShareMode")));
|
||||
party.getMembers().addAll(partiesFile.getStringList(partyName + ".Members"));
|
||||
|
||||
parties.add(party);
|
||||
@ -484,7 +484,7 @@ public final class PartyManager {
|
||||
partiesFile.set(partyName + ".Leader", party.getLeader());
|
||||
partiesFile.set(partyName + ".Password", party.getPassword());
|
||||
partiesFile.set(partyName + ".Locked", party.isLocked());
|
||||
partiesFile.set(partyName + ".ExpShareMode", party.getExpShareMode());
|
||||
partiesFile.set(partyName + ".ExpShareMode", party.getXpShareMode().toString());
|
||||
partiesFile.set(partyName + ".Members", party.getMembers());
|
||||
|
||||
try {
|
||||
|
@ -9,68 +9,51 @@ import com.gmail.nossr50.skills.utilities.SkillTools;
|
||||
import com.gmail.nossr50.skills.utilities.SkillType;
|
||||
import com.gmail.nossr50.util.Users;
|
||||
|
||||
public class ShareHandler {
|
||||
public final class ShareHandler {
|
||||
public enum XpShareMode {
|
||||
NONE,
|
||||
EQUAL;
|
||||
|
||||
public static boolean expShareEnabled = Config.getInstance().getExpShareEnabled();
|
||||
public static boolean itemShareEnabled = Config.getInstance().getItemShareEnabled();
|
||||
public static double partyShareRange = Config.getInstance().getPartyShareRange();
|
||||
public static double partyShareBonus = Config.getInstance().getPartyShareBonus();
|
||||
|
||||
// protected enum PartyShareType {
|
||||
// NO_SHARE,
|
||||
// RANDOM,
|
||||
// EQUAL,
|
||||
// };
|
||||
|
||||
public static double checkXpSharing(int oldExp, Player player, Party party) {
|
||||
int newExp = oldExp;
|
||||
|
||||
if (party.getExpShareMode() == null) {
|
||||
party.setExpShareMode("NO_SHARE");
|
||||
public static XpShareMode getFromString(String string) {
|
||||
try {
|
||||
return valueOf(string);
|
||||
}
|
||||
catch (IllegalArgumentException exception) {
|
||||
return NONE;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (party.getExpShareMode().equals("NO_SHARE")) {
|
||||
return newExp;
|
||||
}
|
||||
else if (party.getExpShareMode().equals("EQUAL")) {
|
||||
newExp = (int) calculateSharedExp(oldExp, player, party);
|
||||
}
|
||||
|
||||
return newExp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the party XP.
|
||||
*
|
||||
* @param oldExp XP without party sharing
|
||||
* @return the party shared XP
|
||||
*/
|
||||
public static double calculateSharedExp(int oldExp, Player player, Party party) {
|
||||
int newExp = oldExp;
|
||||
List<Player> nearMembers = PartyManager.getNearMembers(player, party, partyShareRange);
|
||||
|
||||
if (nearMembers.size() > 0) {
|
||||
newExp = (int) ((oldExp / (nearMembers.size() + 1)) * partyShareBonus);
|
||||
}
|
||||
|
||||
return newExp;
|
||||
}
|
||||
private static boolean running; // Used to prevent permanent sharing, McMMOPlayer.addXp() uses it
|
||||
|
||||
private ShareHandler() {}
|
||||
|
||||
/**
|
||||
* Distribute XP amongst party members.
|
||||
*
|
||||
* @param xp XP without party sharing
|
||||
*/
|
||||
public static void handleEqualExpShare(int xp, Player player, Party party, SkillType skillType) {
|
||||
List<Player> nearMembers = PartyManager.getNearMembers(player, party, partyShareRange);
|
||||
public static void handleEqualXpShare(int xp, Player player, Party party, SkillType skillType) {
|
||||
running = true;
|
||||
int newExp = xp;
|
||||
|
||||
if (party.getXpShareMode() == XpShareMode.EQUAL) {
|
||||
List<Player> nearMembers = PartyManager.getNearMembers(player, party, Config.getInstance().getPartyShareRange());
|
||||
|
||||
for (Player member : nearMembers) {
|
||||
if (nearMembers.size() > 0) {
|
||||
Users.getPlayer(member).addXP(skillType, xp);
|
||||
newExp = (int) ((xp / (nearMembers.size() + 1)) * Config.getInstance().getPartyShareBonus());
|
||||
}
|
||||
|
||||
for (Player member : nearMembers) {
|
||||
Users.getPlayer(member).addXp(skillType, newExp);
|
||||
SkillTools.xpCheckSkill(skillType, member, Users.getProfile(member));
|
||||
}
|
||||
}
|
||||
|
||||
running = false;
|
||||
}
|
||||
|
||||
public static boolean isRunning() {
|
||||
return running;
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.commands.CommandHelper;
|
||||
import com.gmail.nossr50.config.Config;
|
||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent;
|
||||
import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
|
||||
@ -110,7 +111,7 @@ public class PartyCommand implements CommandExecutor {
|
||||
String leader = party.getLeader();
|
||||
StringBuilder tempList = new StringBuilder();
|
||||
|
||||
int membersNear = PartyManager.getNearMembers(player, party, ShareHandler.partyShareRange).size();
|
||||
int membersNear = PartyManager.getNearMembers(player, party, Config.getInstance().getPartyShareRange()).size();
|
||||
int membersOnline = party.getOnlineMembers().size() - 1;
|
||||
|
||||
String ItemShare = "";
|
||||
@ -139,16 +140,22 @@ public class PartyCommand implements CommandExecutor {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Party.Header"));
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Party.Status", new Object[] {party.getName(), status}));
|
||||
|
||||
if (ShareHandler.expShareEnabled) {
|
||||
ExpShare = LocaleLoader.getString("Commands.Party.ExpShare", new Object[] { party.getExpShareMode() });
|
||||
boolean xpShareEnabled = Config.getInstance().getExpShareEnabled();
|
||||
boolean itemShareEnabled = Config.getInstance().getItemShareEnabled();
|
||||
|
||||
if (xpShareEnabled) {
|
||||
ExpShare = LocaleLoader.getString("Commands.Party.ExpShare", new Object[] { party.getXpShareMode().toString() });
|
||||
}
|
||||
if (ShareHandler.itemShareEnabled) {
|
||||
|
||||
if (itemShareEnabled) {
|
||||
ItemShare = LocaleLoader.getString("Commands.Party.ItemShare", new Object[] { itemShareMode });
|
||||
}
|
||||
if (ShareHandler.expShareEnabled && ShareHandler.itemShareEnabled) {
|
||||
|
||||
if (xpShareEnabled && itemShareEnabled) {
|
||||
Split = ChatColor.DARK_GRAY + " || ";
|
||||
}
|
||||
if (ShareHandler.expShareEnabled || ShareHandler.itemShareEnabled) {
|
||||
|
||||
if (xpShareEnabled || itemShareEnabled) {
|
||||
player.sendMessage(LocaleLoader.getString("Commands.Party.ShareMode") + ExpShare + Split + ItemShare);
|
||||
}
|
||||
|
||||
@ -350,8 +357,10 @@ public class PartyCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
private boolean shareExp(String[] args) {
|
||||
if (CommandHelper.noCommandPermissions(player, "mcmmo.commands.party.expshare"))
|
||||
if (CommandHelper.noCommandPermissions(player, "mcmmo.commands.party.expshare")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
String playerName = player.getName();
|
||||
PlayerProfile playerProfile = Users.getProfile(player);
|
||||
Party party = playerProfile.getParty();
|
||||
@ -362,18 +371,21 @@ public class PartyCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
if (party.getLeader().equals(playerName)) {
|
||||
if(args[1].equalsIgnoreCase("noshare") || args[1].equalsIgnoreCase("none") || args[1].equalsIgnoreCase("false")) {
|
||||
party.setExpShareMode("NONE");
|
||||
if (args[1].equalsIgnoreCase("none") || args[1].equalsIgnoreCase("false")) {
|
||||
party.setXpShareMode(ShareHandler.XpShareMode.getFromString("NONE"));
|
||||
|
||||
for (Player onlineMembers : party.getOnlineMembers()) {
|
||||
onlineMembers.sendMessage(LocaleLoader.getString("Commands.Party.SetSharing", new Object[] {LocaleLoader.getString("Party.ShareType.Exp"), LocaleLoader.getString("Party.ShareMode.NoShare")}));
|
||||
}
|
||||
} else if(args[1].equalsIgnoreCase("equal") || args[1].equalsIgnoreCase("even")) {
|
||||
party.setExpShareMode("EQUAL");
|
||||
} else if (args[1].equalsIgnoreCase("equal") || args[1].equalsIgnoreCase("even")) {
|
||||
party.setXpShareMode(ShareHandler.XpShareMode.getFromString("EQUAL"));
|
||||
|
||||
for (Player onlineMembers : party.getOnlineMembers()) {
|
||||
onlineMembers.sendMessage(LocaleLoader.getString("Commands.Party.SetSharing", new Object[] {LocaleLoader.getString("Party.ShareType.Exp"), LocaleLoader.getString("Party.ShareMode.Equal")}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user