Updates to PlayerProfile.java

This commit is contained in:
GJ 2012-03-26 17:31:15 -04:00
parent ae8997b4f3
commit 6a8737547f
2 changed files with 885 additions and 939 deletions

View File

@ -873,83 +873,81 @@ public class PlayerProfile {
/** /**
* Adds XP to the player, doesn't calculate for XP Rate * Adds XP to the player, doesn't calculate for XP Rate
*
* @param skillType The skill to add XP to * @param skillType The skill to add XP to
* @param newvalue The amount of XP to add * @param newValue The amount of XP to add
*/ */
public void addXPOverrideNoBonus(SkillType skillType, int newvalue) public void addXPOverrideNoBonus(SkillType skillType, int newValue) {
{ Player player = Bukkit.getPlayer(playerName);
if(skillType == SkillType.ALL)
{
for(SkillType x : SkillType.values())
{
if(x == SkillType.ALL)
continue;
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(Bukkit.getPlayer(playerName), x, newvalue));
skillsXp.put(x, skillsXp.get(x)+newvalue);
}
} else {
int xp = newvalue;
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(Bukkit.getPlayer(playerName), skillType, xp)); if (skillType.equals(SkillType.ALL)) {
for (SkillType x : SkillType.values()) {
if (x.equals(SkillType.ALL)) {
continue;
}
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(player, x, newValue));
skillsXp.put(x, skillsXp.get(x) + newValue);
}
}
else {
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(player, skillType, newValue));
skillsXp.put(skillType, skillsXp.get(skillType) + newValue);
lastgained = skillType;
}
}
/**
* Adds XP to the player, this ignores skill modifiers.
*
* @param skillType The skill to add XP to
* @param newValue The amount of XP to add
*/
public void addXPOverride(SkillType skillType, int newValue) {
Player player = Bukkit.getPlayer(playerName);
if (skillType.equals(SkillType.ALL)) {
for (SkillType x : SkillType.values()) {
if (x.equals(SkillType.ALL)) {
continue;
}
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(player, x, newValue));
skillsXp.put(x, skillsXp.get(x) + newValue);
}
}
else {
int xp = newValue * LoadProperties.xpGainMultiplier;
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(player, skillType, xp));
skillsXp.put(skillType, skillsXp.get(skillType) + xp); skillsXp.put(skillType, skillsXp.get(skillType) + xp);
lastgained = skillType; lastgained = skillType;
} }
} }
/** /**
* Adds XP to the player, this ignores skill modifiers * Adds XP to the player, this is affected by skill modifiers and XP Rate
*
* @param skillType The skill to add XP to * @param skillType The skill to add XP to
* @param newvalue The amount of XP to add * @param newvalue The amount of XP to add
* @param player The player to add XP to
*/ */
public void addXPOverride(SkillType skillType, int newvalue) public void addXP(SkillType skillType, int newValue, Player player) {
{ if (System.currentTimeMillis() < ((xpGainATS * 1000) + 250) || player.getGameMode().equals(GameMode.CREATIVE)) {
if(skillType == SkillType.ALL)
{
for(SkillType x : SkillType.values())
{
if(x == SkillType.ALL)
continue;
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(Bukkit.getPlayer(playerName), x, newvalue));
skillsXp.put(x, skillsXp.get(x)+newvalue);
}
} else {
int xp = newvalue;
xp=xp*LoadProperties.xpGainMultiplier;
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(Bukkit.getPlayer(playerName), skillType, xp));
skillsXp.put(skillType, skillsXp.get(skillType)+xp);
lastgained = skillType;
}
}
/**
* Adds XP to the player, this is affected by skill modifiers and xp rate
* @param skillType The skill to add XP to
* @param newvalue The amount of XP to add
*/
public void addXP(SkillType skillType, int newvalue, Player thisplayer)
{
if(System.currentTimeMillis() < ((xpGainATS*1000)+250) || thisplayer.getGameMode() == GameMode.CREATIVE)
return; return;
}
//Setup a timestamp of when xp was given xpGainATS = (int) (System.currentTimeMillis() / 1000); //Setup a timestamp of when xp was given
xpGainATS = (int) (System.currentTimeMillis()/1000);
double bonusModifier = 0; double bonusModifier = 0;
//String leaderName = "";
if(inParty()) if (inParty()) {
{ for (Player x : Party.getInstance().getPartyMembers(player)) {
for(Player x : Party.getInstance().getPartyMembers(thisplayer)) if (x.isOnline() && !x.getName().equals(player.getName()) && Party.getInstance().isPartyLeader(x.getName(), this.getParty())) {
{ if (m.isNear(player.getLocation(), x.getLocation(), 25)) {
if(x.isOnline() && !x.getName().equals(thisplayer.getName()) && Party.getInstance().isPartyLeader(x.getName(), this.getParty()))
{
//leaderName = x.getName();
if(m.isNear(thisplayer.getLocation(), x.getLocation(), 25))
{
PlayerProfile PartyLeader = Users.getProfile(x); PlayerProfile PartyLeader = Users.getProfile(x);
if(PartyLeader.getSkillLevel(skillType) >= this.getSkillLevel(skillType))
{ if (PartyLeader.getSkillLevel(skillType) >= this.getSkillLevel(skillType)) {
int leaderLevel = PartyLeader.getSkillLevel(skillType); int leaderLevel = PartyLeader.getSkillLevel(skillType);
int difference = leaderLevel - this.getSkillLevel(skillType); int difference = leaderLevel - this.getSkillLevel(skillType);
bonusModifier = (difference * 0.75D) / 100D; bonusModifier = (difference * 0.75D) / 100D;
@ -958,185 +956,127 @@ public class PlayerProfile {
} }
} }
} }
if(skillType == SkillType.ALL)
{
for(SkillType x : SkillType.values())
{
if(x == SkillType.ALL)
continue;
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(Bukkit.getPlayer(playerName), x, newvalue));
skillsXp.put(x, skillsXp.get(x)+newvalue);
}
} else {
int xp = newvalue;
switch(skillType) int xp = (int) (newValue / skillType.getXpModifier()) * LoadProperties.xpGainMultiplier;
{
case TAMING:
xp=(int) (xp/LoadProperties.tamingxpmodifier);
break;
case MINING:
xp=(int) (xp/LoadProperties.miningxpmodifier);
break;
case WOODCUTTING:
xp=(int) (xp/LoadProperties.woodcuttingxpmodifier);
break;
case REPAIR:
xp=(int) (xp/LoadProperties.repairxpmodifier);
break;
case HERBALISM:
xp=(int) (xp/LoadProperties.herbalismxpmodifier);
break;
case ACROBATICS:
xp=(int) (xp/LoadProperties.acrobaticsxpmodifier);
break;
case SWORDS:
xp=(int) (xp/LoadProperties.swordsxpmodifier);
break;
case ARCHERY:
xp=(int) (xp/LoadProperties.archeryxpmodifier);
break;
case UNARMED:
xp=(int) (xp/LoadProperties.unarmedxpmodifier);
break;
case EXCAVATION:
xp=(int) (xp/LoadProperties.excavationxpmodifier);
break;
case AXES:
xp=(int) (xp/LoadProperties.axesxpmodifier);
break;
case FISHING:
xp=(int) (xp/LoadProperties.fishingxpmodifier);
break;
}
xp=xp*LoadProperties.xpGainMultiplier;
if(bonusModifier > 0) if (bonusModifier > 0) {
{ if (bonusModifier >= 2) {
if(bonusModifier >= 2)
bonusModifier = 2; bonusModifier = 2;
}
double trueBonus = bonusModifier * xp; double trueBonus = bonusModifier * xp;
xp += trueBonus; xp += trueBonus;
} }
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(Bukkit.getPlayer(playerName), skillType, xp));
Bukkit.getPluginManager().callEvent(new McMMOPlayerXpGainEvent(player, skillType, xp));
skillsXp.put(skillType, skillsXp.get(skillType) + xp); skillsXp.put(skillType, skillsXp.get(skillType) + xp);
lastgained = skillType; lastgained = skillType;
} }
/**
* Remove XP from a skill.
*
* @param skillType Type of skill to modify
* @param xp Amount of xp to remove
*/
public void removeXP(SkillType skillType, int xp) {
if (skillType.equals(SkillType.ALL)) {
for (SkillType skill : SkillType.values()) {
if (skill.equals(SkillType.ALL)) {
continue;
} }
public void removeXP(SkillType skillType, int newvalue) skillsXp.put(skill, skillsXp.get(skill) - xp);
{
if(skillType == SkillType.ALL)
{
skillsXp.put(SkillType.TAMING, skillsXp.get(SkillType.TAMING)-newvalue);
skillsXp.put(SkillType.MINING, skillsXp.get(SkillType.MINING)-newvalue);
skillsXp.put(SkillType.WOODCUTTING, skillsXp.get(SkillType.WOODCUTTING)-newvalue);
skillsXp.put(SkillType.REPAIR, skillsXp.get(SkillType.REPAIR)-newvalue);
skillsXp.put(SkillType.HERBALISM, skillsXp.get(SkillType.HERBALISM)-newvalue);
skillsXp.put(SkillType.ACROBATICS, skillsXp.get(SkillType.ACROBATICS)-newvalue);
skillsXp.put(SkillType.SWORDS, skillsXp.get(SkillType.SWORDS)-newvalue);
skillsXp.put(SkillType.ARCHERY, skillsXp.get(SkillType.ARCHERY)-newvalue);
skillsXp.put(SkillType.UNARMED, skillsXp.get(SkillType.UNARMED)-newvalue);
skillsXp.put(SkillType.EXCAVATION, skillsXp.get(SkillType.EXCAVATION)-newvalue);
skillsXp.put(SkillType.AXES, skillsXp.get(SkillType.AXES)-newvalue);
skillsXp.put(SkillType.FISHING, skillsXp.get(SkillType.FISHING)-newvalue);
} else {
skillsXp.put(skillType, skillsXp.get(skillType)-newvalue);
} }
} }
public void acceptInvite() else {
{ skillsXp.put(skillType, skillsXp.get(skillType) - xp);
}
}
public void acceptInvite() {
party = invite; party = invite;
invite = ""; invite = "";
} }
public void modifyInvite(String invitename)
{ public void modifyInvite(String invitename) {
invite = invitename; invite = invitename;
} }
public String getInvite() { return invite; }
public void modifyskill(SkillType skillType, int newvalue) public String getInvite() {
{ return invite;
if(skillType == SkillType.ALL) }
{
skills.put(SkillType.TAMING, newvalue);
skills.put(SkillType.MINING, newvalue);
skills.put(SkillType.WOODCUTTING, newvalue);
skills.put(SkillType.REPAIR, newvalue);
skills.put(SkillType.HERBALISM, newvalue);
skills.put(SkillType.ACROBATICS, newvalue);
skills.put(SkillType.SWORDS, newvalue);
skills.put(SkillType.ARCHERY, newvalue);
skills.put(SkillType.UNARMED, newvalue);
skills.put(SkillType.EXCAVATION, newvalue);
skills.put(SkillType.AXES, newvalue);
skills.put(SkillType.FISHING, newvalue);
skillsXp.put(SkillType.TAMING, 0); /**
skillsXp.put(SkillType.MINING, 0); * Modify a skill level.
skillsXp.put(SkillType.WOODCUTTING, 0); *
skillsXp.put(SkillType.REPAIR, 0); * @param skillType Type of skill to modify
skillsXp.put(SkillType.HERBALISM, 0); * @param newValue New level value for the skill
skillsXp.put(SkillType.ACROBATICS, 0); */
skillsXp.put(SkillType.SWORDS, 0); public void modifyskill(SkillType skillType, int newValue) {
skillsXp.put(SkillType.ARCHERY, 0); if (skillType.equals(SkillType.ALL)) {
skillsXp.put(SkillType.UNARMED, 0); for (SkillType skill : SkillType.values()) {
skillsXp.put(SkillType.EXCAVATION, 0); if (skill.equals(SkillType.ALL)) {
skillsXp.put(SkillType.AXES, 0); continue;
skillsXp.put(SkillType.FISHING, 0); }
} else {
skills.put(skillType, newvalue); skills.put(skill, newValue);
skillsXp.put(skill, 0);
}
}
else {
skills.put(skillType, newValue);
skillsXp.put(skillType, 0); skillsXp.put(skillType, 0);
} }
save(); //This will make mctop update for MySQL
save();
} }
public void addLevels(SkillType skillType, int levels)
{
if(skillType == SkillType.ALL)
{
skills.put(SkillType.TAMING, skills.get(SkillType.TAMING)+levels);
skills.put(SkillType.MINING, skills.get(SkillType.MINING)+levels);
skills.put(SkillType.WOODCUTTING, skills.get(SkillType.WOODCUTTING)+levels);
skills.put(SkillType.REPAIR, skills.get(SkillType.REPAIR)+levels);
skills.put(SkillType.HERBALISM, skills.get(SkillType.HERBALISM)+levels);
skills.put(SkillType.ACROBATICS, skills.get(SkillType.ACROBATICS)+levels);
skills.put(SkillType.SWORDS, skills.get(SkillType.SWORDS)+levels);
skills.put(SkillType.ARCHERY, skills.get(SkillType.ARCHERY)+levels);
skills.put(SkillType.UNARMED, skills.get(SkillType.UNARMED)+levels);
skills.put(SkillType.EXCAVATION, skills.get(SkillType.EXCAVATION)+levels);
skills.put(SkillType.AXES, skills.get(SkillType.AXES)+levels);
skills.put(SkillType.FISHING, skills.get(SkillType.FISHING)+levels);
skillsXp.put(SkillType.TAMING, 0);
skillsXp.put(SkillType.MINING, 0); /**
skillsXp.put(SkillType.WOODCUTTING, 0); * Add levels to a skill.
skillsXp.put(SkillType.REPAIR, 0); *
skillsXp.put(SkillType.HERBALISM, 0); * @param skillType Type of skill to add levels to
skillsXp.put(SkillType.ACROBATICS, 0); * @param levels Number of levels to add
skillsXp.put(SkillType.SWORDS, 0); */
skillsXp.put(SkillType.ARCHERY, 0); public void addLevels(SkillType skillType, int levels) {
skillsXp.put(SkillType.UNARMED, 0); if (skillType.equals(SkillType.ALL)) {
skillsXp.put(SkillType.EXCAVATION, 0); for (SkillType skill : SkillType.values()) {
skillsXp.put(SkillType.AXES, 0); if (skill.equals(SkillType.ALL)) {
skillsXp.put(SkillType.FISHING, 0); continue;
} else { }
skills.put(skill, skills.get(skill) + levels);
skillsXp.put(skill, 0);
}
}
else {
skills.put(skillType, skills.get(skillType) + levels); skills.put(skillType, skills.get(skillType) + levels);
skillsXp.put(skillType, 0); skillsXp.put(skillType, 0);
} }
save();
} }
public Integer getXpToLevel(SkillType skillType)
{
return (int) ((1020+(skills.get(skillType) * 20))); /**
* Get the amount of XP remaining before the next level.
*
* @param skillType Type of skill to check
* @return the XP remaining until next level
*/
public Integer getXpToLevel(SkillType skillType) {
return (int) (1020 + (skills.get(skillType) * 20)); //Do we REALLY need to cast to int here?
} }
//Store the player's party //Store the player's party
public void setParty(String newParty) public void setParty(String newParty) {
{
party = newParty; party = newParty;
} }
//Retrieve the player's party //Retrieve the player's party
public String getParty() {return party;} public String getParty() {return party;}
//Remove party //Remove party

View File

@ -7,41 +7,44 @@ import com.gmail.nossr50.config.LoadProperties;
public enum SkillType public enum SkillType
{ {
ACROBATICS(LoadProperties.levelCapAcrobatics), ACROBATICS(LoadProperties.levelCapAcrobatics, LoadProperties.acrobaticsxpmodifier),
ALL, //This one is just for convenience ALL, //This one is just for convenience
ARCHERY(LoadProperties.levelCapArchery), ARCHERY(LoadProperties.levelCapArchery, LoadProperties.archeryxpmodifier),
AXES(AbilityType.SKULL_SPLIITER, LoadProperties.levelCapAxes, ToolType.AXE), AXES(AbilityType.SKULL_SPLIITER, LoadProperties.levelCapAxes, ToolType.AXE, LoadProperties.axesxpmodifier),
EXCAVATION(AbilityType.GIGA_DRILL_BREAKER, LoadProperties.levelCapExcavation, ToolType.SHOVEL), EXCAVATION(AbilityType.GIGA_DRILL_BREAKER, LoadProperties.levelCapExcavation, ToolType.SHOVEL, LoadProperties.excavationxpmodifier),
FISHING(LoadProperties.levelCapFishing), FISHING(LoadProperties.levelCapFishing, LoadProperties.fishingxpmodifier),
HERBALISM(AbilityType.GREEN_TERRA, LoadProperties.levelCapHerbalism, ToolType.HOE), HERBALISM(AbilityType.GREEN_TERRA, LoadProperties.levelCapHerbalism, ToolType.HOE, LoadProperties.herbalismxpmodifier),
MINING(AbilityType.SUPER_BREAKER, LoadProperties.levelCapMining, ToolType.PICKAXE), MINING(AbilityType.SUPER_BREAKER, LoadProperties.levelCapMining, ToolType.PICKAXE, LoadProperties.miningxpmodifier),
REPAIR(LoadProperties.levelCapRepair), REPAIR(LoadProperties.levelCapRepair, LoadProperties.repairxpmodifier),
SWORDS(AbilityType.SERRATED_STRIKES, LoadProperties.levelCapSwords, ToolType.SWORD), SWORDS(AbilityType.SERRATED_STRIKES, LoadProperties.levelCapSwords, ToolType.SWORD, LoadProperties.swordsxpmodifier),
TAMING(LoadProperties.levelCapTaming), TAMING(LoadProperties.levelCapTaming, LoadProperties.tamingxpmodifier),
UNARMED(AbilityType.BERSERK, LoadProperties.levelCapUnarmed, ToolType.FISTS), UNARMED(AbilityType.BERSERK, LoadProperties.levelCapUnarmed, ToolType.FISTS, LoadProperties.unarmedxpmodifier),
WOODCUTTING(AbilityType.TREE_FELLER, LoadProperties.levelCapWoodcutting, ToolType.AXE); WOODCUTTING(AbilityType.TREE_FELLER, LoadProperties.levelCapWoodcutting, ToolType.AXE, LoadProperties.woodcuttingxpmodifier);
private AbilityType ability; private AbilityType ability;
private int maxLevel; private int maxLevel;
private ToolType tool; private ToolType tool;
private double xpModifier;
private SkillType() private SkillType()
{ {
this.ability = null; this.ability = null;
this.maxLevel = 0; this.maxLevel = 0;
this.tool = null; this.tool = null;
this.xpModifier = 0;
} }
private SkillType(AbilityType ability, int maxLevel, ToolType tool) private SkillType(AbilityType ability, int maxLevel, ToolType tool, double xpModifier)
{ {
this.ability = ability; this.ability = ability;
this.maxLevel = maxLevel; this.maxLevel = maxLevel;
this.tool = tool; this.tool = tool;
this.xpModifier = xpModifier;
} }
private SkillType(int maxLevel) private SkillType(int maxLevel, double xpModifier)
{ {
this(null, maxLevel, null); this(null, maxLevel, null, xpModifier);
} }
public AbilityType getAbility() public AbilityType getAbility()
@ -57,9 +60,8 @@ public enum SkillType
return Integer.MAX_VALUE; return Integer.MAX_VALUE;
} }
public ToolType getTool() public ToolType getTool() {
{ return tool;
return this.tool;
} }
public boolean getPermissions(Player player) public boolean getPermissions(Player player)
@ -93,4 +95,8 @@ public enum SkillType
} }
return false; return false;
} }
public double getXpModifier() {
return xpModifier;
}
} }