mcMMO/src/main/java/com/gmail/nossr50/party/ShareHandler.java

77 lines
2.3 KiB
Java
Raw Normal View History

2013-01-30 15:17:50 +01:00
package com.gmail.nossr50.party;
import java.util.List;
import org.bukkit.entity.Player;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.skills.utilities.SkillTools;
import com.gmail.nossr50.skills.utilities.SkillType;
2013-01-30 15:17:50 +01:00
import com.gmail.nossr50.util.Users;
public class ShareHandler {
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();
2013-01-30 17:35:33 +01:00
// protected enum PartyShareType {
// NO_SHARE,
// RANDOM,
// EQUAL,
// };
2013-01-30 17:25:44 +01:00
public static double checkXpSharing(int oldExp, Player player, Party party) {
2013-01-30 15:17:50 +01:00
int newExp = oldExp;
2013-01-30 17:25:44 +01:00
2013-01-30 15:17:50 +01:00
if (party.getExpShareMode() == null) {
party.setExpShareMode("NO_SHARE");
}
2013-01-30 17:25:44 +01:00
2013-01-30 15:17:50 +01:00
if (party.getExpShareMode().equals("NO_SHARE")) {
return newExp;
}
2013-01-30 17:25:44 +01:00
else if (party.getExpShareMode().equals("EQUAL")) {
newExp = (int) calculateSharedExp(oldExp, player, party);
}
2013-01-30 15:17:50 +01:00
return newExp;
}
/**
* Calculate the party XP.
*
* @param int XP without party sharing
* @return the party shared XP
*/
2013-01-30 17:25:44 +01:00
public static double calculateSharedExp(int oldExp, Player player, Party party) {
2013-01-30 15:17:50 +01:00
int newExp = oldExp;
List<Player> nearMembers = PartyManager.getNearMembers(player, party, partyShareRange);
if (nearMembers.size() > 0) {
newExp = (int) ((oldExp / (nearMembers.size() + 1)) * partyShareBonus);
}
2013-01-30 17:25:44 +01:00
2013-01-30 15:17:50 +01:00
return newExp;
}
/**
* Distribute XP amongst party members.
*
* @param int XP without party sharing
* @return the party share experience
*/
public static void handleEqualExpShare(int xp, Player player, Party party, SkillType skillType) {
List<Player> nearMembers = PartyManager.getNearMembers(player, party, partyShareRange);
for (Player member : nearMembers) {
if (nearMembers.size() > 0) {
Users.getPlayer(member).addXP(skillType, xp);
SkillTools.xpCheckSkill(skillType, member, Users.getProfile(member));
}
}
}
}