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;
|
2013-01-30 17:53:51 +01:00
|
|
|
import com.gmail.nossr50.skills.utilities.SkillType;
|
2013-01-30 15:17:50 +01:00
|
|
|
import com.gmail.nossr50.util.Users;
|
|
|
|
|
2013-02-01 06:38:25 +01:00
|
|
|
public final class ShareHandler {
|
|
|
|
public enum XpShareMode {
|
|
|
|
NONE,
|
|
|
|
EQUAL;
|
|
|
|
|
|
|
|
public static XpShareMode getFromString(String string) {
|
|
|
|
try {
|
|
|
|
return valueOf(string);
|
|
|
|
}
|
|
|
|
catch (IllegalArgumentException exception) {
|
|
|
|
return NONE;
|
|
|
|
}
|
2013-01-30 15:17:50 +01:00
|
|
|
}
|
2013-02-01 06:38:25 +01:00
|
|
|
};
|
2013-01-30 17:25:44 +01:00
|
|
|
|
2013-02-01 06:38:25 +01:00
|
|
|
private static boolean running; // Used to prevent permanent sharing, McMMOPlayer.addXp() uses it
|
2013-01-30 15:17:50 +01:00
|
|
|
|
2013-02-01 06:38:25 +01:00
|
|
|
private ShareHandler() {}
|
2013-01-30 15:17:50 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Distribute XP amongst party members.
|
|
|
|
*
|
2013-01-31 01:42:40 +01:00
|
|
|
* @param xp XP without party sharing
|
2013-01-30 15:17:50 +01:00
|
|
|
*/
|
2013-02-01 06:38:25 +01:00
|
|
|
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());
|
2013-01-30 15:17:50 +01:00
|
|
|
|
|
|
|
if (nearMembers.size() > 0) {
|
2013-02-01 06:38:25 +01:00
|
|
|
newExp = (int) ((xp / (nearMembers.size() + 1)) * Config.getInstance().getPartyShareBonus());
|
|
|
|
}
|
2013-01-30 15:17:50 +01:00
|
|
|
|
2013-02-01 06:38:25 +01:00
|
|
|
for (Player member : nearMembers) {
|
|
|
|
Users.getPlayer(member).addXp(skillType, newExp);
|
2013-01-30 15:17:50 +01:00
|
|
|
}
|
|
|
|
}
|
2013-02-01 06:38:25 +01:00
|
|
|
|
|
|
|
running = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static boolean isRunning() {
|
|
|
|
return running;
|
2013-01-30 15:17:50 +01:00
|
|
|
}
|
|
|
|
}
|