Moved everything that could be moved from PlayerProfile to McMMOPlayer

PlayerProfile now only store stored (flatfile or MySQL) data
This commit is contained in:
bm01 2013-03-03 17:06:05 +01:00
parent f8b4412049
commit c0b7f8a323
24 changed files with 405 additions and 603 deletions

View File

@ -2,7 +2,7 @@ package com.gmail.nossr50.api;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
@ -10,38 +10,38 @@ public final class AbilityAPI {
private AbilityAPI() {} private AbilityAPI() {}
public static boolean berserkEnabled(Player player) { public static boolean berserkEnabled(Player player) {
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.BERSERK); return UserManager.getPlayer(player).getAbilityMode(AbilityType.BERSERK);
} }
public static boolean gigaDrillBreakerEnabled(Player player) { public static boolean gigaDrillBreakerEnabled(Player player) {
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.GIGA_DRILL_BREAKER); return UserManager.getPlayer(player).getAbilityMode(AbilityType.GIGA_DRILL_BREAKER);
} }
public static boolean greenTerraEnabled(Player player) { public static boolean greenTerraEnabled(Player player) {
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.GREEN_TERRA); return UserManager.getPlayer(player).getAbilityMode(AbilityType.GREEN_TERRA);
} }
public static boolean serratedStrikesEnabled(Player player) { public static boolean serratedStrikesEnabled(Player player) {
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.SERRATED_STRIKES); return UserManager.getPlayer(player).getAbilityMode(AbilityType.SERRATED_STRIKES);
} }
public static boolean skullSplitterEnabled(Player player) { public static boolean skullSplitterEnabled(Player player) {
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.SKULL_SPLITTER); return UserManager.getPlayer(player).getAbilityMode(AbilityType.SKULL_SPLITTER);
} }
public static boolean superBreakerEnabled(Player player) { public static boolean superBreakerEnabled(Player player) {
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.SUPER_BREAKER); return UserManager.getPlayer(player).getAbilityMode(AbilityType.SUPER_BREAKER);
} }
public static boolean treeFellerEnabled(Player player) { public static boolean treeFellerEnabled(Player player) {
return UserManager.getPlayer(player).getProfile().getAbilityMode(AbilityType.TREE_FELLER); return UserManager.getPlayer(player).getAbilityMode(AbilityType.TREE_FELLER);
} }
public static boolean isAnyAbilityEnabled(Player player) { public static boolean isAnyAbilityEnabled(Player player) {
PlayerProfile profile = UserManager.getPlayer(player).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
for (AbilityType ability : AbilityType.values()) { for (AbilityType ability : AbilityType.values()) {
if (profile.getAbilityMode(ability)) { if (mcMMOPlayer.getAbilityMode(ability)) {
return true; return true;
} }
} }

View File

@ -14,7 +14,7 @@ import com.gmail.nossr50.util.player.UserManager;
public class McabilityCommand implements CommandExecutor { public class McabilityCommand implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
PlayerProfile profile; McMMOPlayer mcMMOPlayer;
switch (args.length) { switch (args.length) {
case 0: case 0:
@ -23,16 +23,16 @@ public class McabilityCommand implements CommandExecutor {
return true; return true;
} }
profile = UserManager.getPlayer((Player) sender).getProfile(); mcMMOPlayer = UserManager.getPlayer((Player) sender);
if (profile.getAbilityUse()) { if (mcMMOPlayer.getAbilityUse()) {
sender.sendMessage(LocaleLoader.getString("Commands.Ability.Off")); sender.sendMessage(LocaleLoader.getString("Commands.Ability.Off"));
} }
else { else {
sender.sendMessage(LocaleLoader.getString("Commands.Ability.On")); sender.sendMessage(LocaleLoader.getString("Commands.Ability.On"));
} }
profile.toggleAbilityUse(); mcMMOPlayer.toggleAbilityUse();
return true; return true;
case 1: case 1:
@ -41,12 +41,12 @@ public class McabilityCommand implements CommandExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]); mcMMOPlayer = UserManager.getPlayer(args[0]);
if (mcMMOPlayer == null) { if (mcMMOPlayer == null) {
profile = new PlayerProfile(args[0], false); PlayerProfile playerProfile = new PlayerProfile(args[0], false);
if (!profile.isLoaded()) { if (!playerProfile.isLoaded()) {
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
return true; return true;
} }
@ -56,21 +56,20 @@ public class McabilityCommand implements CommandExecutor {
} }
Player player = mcMMOPlayer.getPlayer(); Player player = mcMMOPlayer.getPlayer();
profile = mcMMOPlayer.getProfile();
if (!player.isOnline()) { if (!player.isOnline()) {
sender.sendMessage(LocaleLoader.getString("Commands.Offline")); sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
return true; return true;
} }
if (profile.getAbilityUse()) { if (mcMMOPlayer.getAbilityUse()) {
player.sendMessage(LocaleLoader.getString("Commands.Ability.Off")); player.sendMessage(LocaleLoader.getString("Commands.Ability.Off"));
} }
else { else {
player.sendMessage(LocaleLoader.getString("Commands.Ability.On")); player.sendMessage(LocaleLoader.getString("Commands.Ability.On"));
} }
profile.toggleAbilityUse(); mcMMOPlayer.toggleAbilityUse();
return true; return true;
default: default:

View File

@ -14,7 +14,7 @@ import com.gmail.nossr50.util.player.UserManager;
public class McgodCommand implements CommandExecutor { public class McgodCommand implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
PlayerProfile profile; McMMOPlayer mcMMOPlayer;
switch (args.length) { switch (args.length) {
case 0: case 0:
@ -27,21 +27,21 @@ public class McgodCommand implements CommandExecutor {
return false; return false;
} }
profile = UserManager.getPlayer((Player) sender).getProfile(); mcMMOPlayer = UserManager.getPlayer((Player) sender);
if (profile == null) { if (mcMMOPlayer == null) {
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
return true; return true;
} }
if (profile.getGodMode()) { if (mcMMOPlayer.getGodMode()) {
sender.sendMessage(LocaleLoader.getString("Commands.GodMode.Disabled")); sender.sendMessage(LocaleLoader.getString("Commands.GodMode.Disabled"));
} }
else { else {
sender.sendMessage(LocaleLoader.getString("Commands.GodMode.Enabled")); sender.sendMessage(LocaleLoader.getString("Commands.GodMode.Enabled"));
} }
profile.toggleGodMode(); mcMMOPlayer.toggleGodMode();
return true; return true;
case 1: case 1:
@ -50,12 +50,12 @@ public class McgodCommand implements CommandExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]); mcMMOPlayer = UserManager.getPlayer(args[0]);
if (mcMMOPlayer == null) { if (mcMMOPlayer == null) {
profile = new PlayerProfile(args[0], false); PlayerProfile playerProfile = new PlayerProfile(args[0], false);
if (!profile.isLoaded()) { if (!playerProfile.isLoaded()) {
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
return true; return true;
} }
@ -64,7 +64,6 @@ public class McgodCommand implements CommandExecutor {
return true; return true;
} }
profile = mcMMOPlayer.getProfile();
Player player = mcMMOPlayer.getPlayer(); Player player = mcMMOPlayer.getPlayer();
if (!player.isOnline()) { if (!player.isOnline()) {
@ -72,14 +71,14 @@ public class McgodCommand implements CommandExecutor {
return true; return true;
} }
if (profile.getGodMode()) { if (mcMMOPlayer.getGodMode()) {
player.sendMessage(LocaleLoader.getString("Commands.GodMode.Disabled")); player.sendMessage(LocaleLoader.getString("Commands.GodMode.Disabled"));
} }
else { else {
player.sendMessage(LocaleLoader.getString("Commands.GodMode.Enabled")); player.sendMessage(LocaleLoader.getString("Commands.GodMode.Enabled"));
} }
profile.toggleGodMode(); mcMMOPlayer.toggleGodMode();
return true; return true;
default: default:

View File

@ -5,7 +5,7 @@ import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
@ -14,16 +14,16 @@ public class McnotifyCommand implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
switch (args.length) { switch (args.length) {
case 0: case 0:
PlayerProfile profile = UserManager.getPlayer((Player) sender).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer((Player) sender);
if (profile.useChatNotifications()) { if (mcMMOPlayer.useChatNotifications()) {
sender.sendMessage(LocaleLoader.getString("Commands.Notifications.Off")); sender.sendMessage(LocaleLoader.getString("Commands.Notifications.Off"));
} }
else { else {
sender.sendMessage(LocaleLoader.getString("Commands.Notifications.On")); sender.sendMessage(LocaleLoader.getString("Commands.Notifications.On"));
} }
profile.toggleChatNotifications(); mcMMOPlayer.toggleChatNotifications();
return true; return true;
default: default:

View File

@ -14,7 +14,7 @@ import com.gmail.nossr50.util.player.UserManager;
public class McrefreshCommand implements CommandExecutor { public class McrefreshCommand implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
PlayerProfile profile; McMMOPlayer mcMMOPlayer;
switch (args.length) { switch (args.length) {
case 0: case 0:
@ -27,12 +27,12 @@ public class McrefreshCommand implements CommandExecutor {
return false; return false;
} }
profile = UserManager.getPlayer(sender.getName()).getProfile(); mcMMOPlayer = UserManager.getPlayer(sender.getName());
profile.setRecentlyHurt(0); mcMMOPlayer.setRecentlyHurt(0);
profile.resetCooldowns(); mcMMOPlayer.getProfile().resetCooldowns();
profile.resetToolPrepMode(); mcMMOPlayer.resetToolPrepMode();
profile.resetAbilityMode(); mcMMOPlayer.resetAbilityMode();
sender.sendMessage(LocaleLoader.getString("Ability.Generic.Refresh")); sender.sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
return true; return true;
@ -43,12 +43,12 @@ public class McrefreshCommand implements CommandExecutor {
return true; return true;
} }
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(args[0]); mcMMOPlayer = UserManager.getPlayer(args[0]);
if (mcMMOPlayer == null) { if (mcMMOPlayer == null) {
profile = new PlayerProfile(args[0], false); PlayerProfile playerProfile = new PlayerProfile(args[0], false);
if (!profile.isLoaded()) { if (!playerProfile.isLoaded()) {
sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist")); sender.sendMessage(LocaleLoader.getString("Commands.DoesNotExist"));
return true; return true;
} }
@ -56,7 +56,7 @@ public class McrefreshCommand implements CommandExecutor {
sender.sendMessage(LocaleLoader.getString("Commands.Offline")); sender.sendMessage(LocaleLoader.getString("Commands.Offline"));
return true; return true;
} }
profile = mcMMOPlayer.getProfile();
Player player = mcMMOPlayer.getPlayer(); Player player = mcMMOPlayer.getPlayer();
if (!player.isOnline()) { if (!player.isOnline()) {
@ -64,10 +64,10 @@ public class McrefreshCommand implements CommandExecutor {
return true; return true;
} }
profile.setRecentlyHurt(0); mcMMOPlayer.setRecentlyHurt(0);
profile.resetCooldowns(); mcMMOPlayer.getProfile().resetCooldowns();
profile.resetToolPrepMode(); mcMMOPlayer.resetToolPrepMode();
profile.resetAbilityMode(); mcMMOPlayer.resetAbilityMode();
player.sendMessage(LocaleLoader.getString("Ability.Generic.Refresh")); player.sendMessage(LocaleLoader.getString("Ability.Generic.Refresh"));
sender.sendMessage(LocaleLoader.getString("Commands.mcrefresh.Success", args[0])); sender.sendMessage(LocaleLoader.getString("Commands.mcrefresh.Success", args[0]));

View File

@ -9,7 +9,6 @@ import org.bukkit.entity.Player;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.events.party.McMMOPartyTeleportEvent; import com.gmail.nossr50.events.party.McMMOPartyTeleportEvent;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.party.PartyManager; import com.gmail.nossr50.party.PartyManager;
@ -21,7 +20,6 @@ import com.gmail.nossr50.util.player.UserManager;
public class PtpCommand implements CommandExecutor { public class PtpCommand implements CommandExecutor {
private Player player; private Player player;
private McMMOPlayer mcMMOPlayer; private McMMOPlayer mcMMOPlayer;
private PlayerProfile playerProfile;
private Player target; private Player target;
private McMMOPlayer mcMMOTarget; private McMMOPlayer mcMMOTarget;
@ -34,10 +32,6 @@ public class PtpCommand implements CommandExecutor {
switch (args.length) { switch (args.length) {
case 1: case 1:
player = (Player) sender;
mcMMOPlayer = UserManager.getPlayer(player);
playerProfile = mcMMOPlayer.getProfile();
if (args[0].equalsIgnoreCase("toggle")) { if (args[0].equalsIgnoreCase("toggle")) {
if (!Permissions.partyTeleportToggle(sender)) { if (!Permissions.partyTeleportToggle(sender)) {
sender.sendMessage(command.getPermissionMessage()); sender.sendMessage(command.getPermissionMessage());
@ -56,8 +50,9 @@ public class PtpCommand implements CommandExecutor {
return acceptAnyTeleportRequest(); return acceptAnyTeleportRequest();
} }
player = (Player) sender;
int ptpCooldown = Config.getInstance().getPTPCommandCooldown(); int ptpCooldown = Config.getInstance().getPTPCommandCooldown();
long recentlyHurt = playerProfile.getRecentlyHurt() * Misc.TIME_CONVERSION_FACTOR; long recentlyHurt = UserManager.getPlayer(player).getRecentlyHurt() * Misc.TIME_CONVERSION_FACTOR;
if (System.currentTimeMillis() - recentlyHurt >= (ptpCooldown * Misc.TIME_CONVERSION_FACTOR)) { if (System.currentTimeMillis() - recentlyHurt >= (ptpCooldown * Misc.TIME_CONVERSION_FACTOR)) {
player.sendMessage(LocaleLoader.getString("Party.Teleport.Hurt", ptpCooldown)); player.sendMessage(LocaleLoader.getString("Party.Teleport.Hurt", ptpCooldown));
@ -94,6 +89,7 @@ public class PtpCommand implements CommandExecutor {
player.sendMessage(LocaleLoader.getString("Commands.Invite.Success")); player.sendMessage(LocaleLoader.getString("Commands.Invite.Success"));
int ptpRequestExpire = Config.getInstance().getPTPCommandTimeout(); int ptpRequestExpire = Config.getInstance().getPTPCommandTimeout();
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request1", player.getName())); target.sendMessage(LocaleLoader.getString("Commands.ptp.Request1", player.getName()));
target.sendMessage(LocaleLoader.getString("Commands.ptp.Request2", ptpRequestExpire)); target.sendMessage(LocaleLoader.getString("Commands.ptp.Request2", ptpRequestExpire));
return true; return true;
@ -203,8 +199,8 @@ public class PtpCommand implements CommandExecutor {
private boolean handlePartyTeleportEvent(Player player, Player target) { private boolean handlePartyTeleportEvent(Player player, Player target) {
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(player, target, mcMMOPlayer.getParty().getName()); McMMOPartyTeleportEvent event = new McMMOPartyTeleportEvent(player, target, mcMMOPlayer.getParty().getName());
mcMMO.p.getServer().getPluginManager().callEvent(event); mcMMO.p.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) { if (event.isCancelled()) {
@ -214,7 +210,7 @@ public class PtpCommand implements CommandExecutor {
player.teleport(target); player.teleport(target);
player.sendMessage(LocaleLoader.getString("Party.Teleport.Player", target.getName())); player.sendMessage(LocaleLoader.getString("Party.Teleport.Player", target.getName()));
target.sendMessage(LocaleLoader.getString("Party.Teleport.Target", player.getName())); target.sendMessage(LocaleLoader.getString("Party.Teleport.Target", player.getName()));
mcMMOPlayer.getProfile().actualizeRecentlyHurt(); mcMMOPlayer.actualizeRecentlyHurt();
return true; return true;
} }
} }

View File

@ -12,7 +12,9 @@ import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.mods.CustomTool; import com.gmail.nossr50.datatypes.mods.CustomTool;
import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.Party;
import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.datatypes.skills.ToolType;
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud; import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
import com.gmail.nossr50.events.experience.McMMOPlayerXpGainEvent; import com.gmail.nossr50.events.experience.McMMOPlayerXpGainEvent;
import com.gmail.nossr50.party.PartyManager; import com.gmail.nossr50.party.PartyManager;
@ -49,8 +51,9 @@ public class McMMOPlayer {
*/ */
private Map<SkillType, SkillManager> skillManagers = new HashMap<SkillType, SkillManager>(); private Map<SkillType, SkillManager> skillManagers = new HashMap<SkillType, SkillManager>();
private Party party; private Party party;
private Party invite; private Party invite;
private int itemShareModifier;
private Player ptpRequest; private Player ptpRequest;
private boolean ptpEnabled = true; private boolean ptpEnabled = true;
@ -59,8 +62,20 @@ public class McMMOPlayer {
private boolean partyChatMode; private boolean partyChatMode;
private boolean adminChatMode; private boolean adminChatMode;
private boolean displaySkillNotifications = true;
private int itemShareModifier; private boolean abilityUse = true;
private boolean placedAnvil;
private boolean placedSalvageAnvil;
private boolean godMode;
private Map<AbilityType, Boolean> abilityMode = new HashMap<AbilityType, Boolean>();
private Map<AbilityType, Boolean> abilityInformed = new HashMap<AbilityType, Boolean>();
private Map<ToolType, Boolean> toolPreparationMode = new HashMap<ToolType, Boolean>();
private Map<ToolType, Integer> toolATS = new HashMap<ToolType, Integer>();
private int recentlyHurt;
private int respawnATS;
public McMMOPlayer(Player player) { public McMMOPlayer(Player player) {
String playerName = player.getName(); String playerName = player.getName();
@ -88,6 +103,16 @@ public class McMMOPlayer {
e.printStackTrace(); e.printStackTrace();
mcMMO.p.getPluginLoader().disablePlugin(mcMMO.p); mcMMO.p.getPluginLoader().disablePlugin(mcMMO.p);
} }
for (AbilityType abilityType : AbilityType.values()) {
abilityMode.put(abilityType, false);
abilityInformed.put(abilityType, true); // This is intended
}
for (ToolType toolType : ToolType.values()) {
toolPreparationMode.put(toolType, false);
toolATS.put(toolType, 0);
}
} }
public AcrobaticsManager getAcrobaticsManager() { public AcrobaticsManager getAcrobaticsManager() {
@ -134,6 +159,198 @@ public class McMMOPlayer {
return (UnarmedManager) skillManagers.get(SkillType.UNARMED); return (UnarmedManager) skillManagers.get(SkillType.UNARMED);
} }
/*
* Abilities
*/
/**
* Reset the mode of all abilities.
*/
public void resetAbilityMode() {
for (AbilityType ability : AbilityType.values()) {
setAbilityMode(ability, false);
}
}
/**
* Get the mode of an ability.
*
* @param ability The ability to check
* @return true if the ability is enabled, false otherwise
*/
public boolean getAbilityMode(AbilityType ability) {
return abilityMode.get(ability);
}
/**
* Set the mode of an ability.
*
* @param ability The ability to check
* @param bool True if the ability is active, false otherwise
*/
public void setAbilityMode(AbilityType ability, boolean bool) {
abilityMode.put(ability, bool);
}
/**
* Get the informed state of an ability
*
* @param ability The ability to check
* @return true if the ability is informed, false otherwise
*/
public boolean getAbilityInformed(AbilityType ability) {
return abilityInformed.get(ability);
}
/**
* Set the informed state of an ability.
*
* @param ability The ability to check
* @param bool True if the ability is informed, false otherwise
*/
public void setAbilityInformed(AbilityType ability, boolean bool) {
abilityInformed.put(ability, bool);
}
/**
* Get the current prep mode of a tool.
*
* @param tool Tool to get the mode for
* @return true if the tool is prepped, false otherwise
*/
public boolean getToolPreparationMode(ToolType tool) {
return toolPreparationMode.get(tool);
}
public boolean getAbilityUse() {
return abilityUse;
}
public void toggleAbilityUse() {
abilityUse = !abilityUse;
}
/*
* Tools
*/
/**
* Reset the prep modes of all tools.
*/
public void resetToolPrepMode() {
for (ToolType tool : ToolType.values()) {
setToolPreparationMode(tool, false);
}
}
/**
* Set the current prep mode of a tool.
*
* @param tool Tool to set the mode for
* @param bool true if the tool should be prepped, false otherwise
*/
public void setToolPreparationMode(ToolType tool, boolean bool) {
toolPreparationMode.put(tool, bool);
}
/**
* Get the current prep ATS of a tool.
*
* @param tool Tool to get the ATS for
* @return the ATS for the tool
*/
public long getToolPreparationATS(ToolType tool) {
return toolATS.get(tool);
}
/**
* Set the current prep ATS of a tool.
*
* @param tool Tool to set the ATS for
* @param ATS the ATS of the tool
*/
public void setToolPreparationATS(ToolType tool, long ATS) {
int startTime = (int) (ATS / Misc.TIME_CONVERSION_FACTOR);
toolATS.put(tool, startTime);
}
/*
* Recently Hurt
*/
public int getRecentlyHurt() {
return recentlyHurt;
}
public void setRecentlyHurt(int value) {
recentlyHurt = value;
}
public void actualizeRecentlyHurt() {
recentlyHurt = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
}
/*
* Exploit Prevention
*/
public int getRespawnATS() {
return respawnATS;
}
public void actualizeRespawnATS() {
respawnATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
}
/*
* Repair Anvil Placement
*/
public void togglePlacedAnvil() {
placedAnvil = !placedAnvil;
}
public Boolean getPlacedAnvil() {
return placedAnvil;
}
/*
* Salvage Anvil Placement
*/
public void togglePlacedSalvageAnvil() {
placedSalvageAnvil = !placedSalvageAnvil;
}
public Boolean getPlacedSalvageAnvil() {
return placedSalvageAnvil;
}
/*
* God Mode
*/
public boolean getGodMode() {
return godMode;
}
public void toggleGodMode() {
godMode = !godMode;
}
/*
* Skill notifications
*/
public boolean useChatNotifications() {
return displaySkillNotifications;
}
public void toggleChatNotifications() {
displaySkillNotifications = !displaySkillNotifications;
}
/** /**
* Gets the power level of this player. * Gets the power level of this player.
* *
@ -223,7 +440,9 @@ public class McMMOPlayer {
SkillUtils.xpCheckSkill(skillType, player, profile); SkillUtils.xpCheckSkill(skillType, player, profile);
} }
// Players & Profiles /*
* Players & Profiles
*/
public Player getPlayer() { public Player getPlayer() {
return player; return player;
@ -237,7 +456,9 @@ public class McMMOPlayer {
return profile; return profile;
} }
// Party Stuff /*
* Party Stuff
*/
public void setPartyInvite(Party invite) { public void setPartyInvite(Party invite) {
this.invite = invite; this.invite = invite;
@ -339,6 +560,10 @@ public class McMMOPlayer {
itemShareModifier = modifier; itemShareModifier = modifier;
} }
/*
* Chat modes
*/
public boolean getAdminChatMode() { public boolean getAdminChatMode() {
return adminChatMode; return adminChatMode;
} }

View File

@ -6,6 +6,7 @@ import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.Set; import java.util.Set;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
@ -14,7 +15,6 @@ import com.gmail.nossr50.config.spout.SpoutConfig;
import com.gmail.nossr50.database.DatabaseManager; import com.gmail.nossr50.database.DatabaseManager;
import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.datatypes.skills.ToolType;
import com.gmail.nossr50.datatypes.spout.huds.HudType; import com.gmail.nossr50.datatypes.spout.huds.HudType;
import com.gmail.nossr50.datatypes.spout.huds.McMMOHud; import com.gmail.nossr50.datatypes.spout.huds.McMMOHud;
import com.gmail.nossr50.skills.child.FamilyTree; import com.gmail.nossr50.skills.child.FamilyTree;
@ -28,51 +28,14 @@ public class PlayerProfile {
private McMMOHud spoutHud; private McMMOHud spoutHud;
private HudType hudType; private HudType hudType;
// Toggles
private boolean loaded;
private boolean godMode;
private boolean placedAnvil;
private boolean placedSalvageAnvil;
private boolean hoePreparationMode;
private boolean shovelPreparationMode;
private boolean swordsPreparationMode;
private boolean fistsPreparationMode;
private boolean pickaxePreparationMode;
private boolean axePreparationMode;
private boolean greenTerraMode;
private boolean treeFellerMode;
private boolean superBreakerMode;
private boolean gigaDrillBreakerMode;
private boolean serratedStrikesMode;
private boolean skullSplitterMode;
private boolean berserkMode;
private boolean greenTerraInformed = true;
private boolean berserkInformed = true;
private boolean skullSplitterInformed = true;
private boolean gigaDrillBreakerInformed = true;
private boolean superBreakerInformed = true;
private boolean blastMiningInformed = true;
private boolean serratedStrikesInformed = true;
private boolean treeFellerInformed = true;
private boolean abilityUse = true;
private boolean displaySkillNotifications = true;
// Timestamps
private int recentlyHurt;
private int respawnATS;
// mySQL Stuff // mySQL Stuff
private int userId; private int userId;
private HashMap<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); // Skills and Levels private boolean loaded;
private HashMap<SkillType, Integer> skillsXp = new HashMap<SkillType, Integer>(); // Skills and Xp
private HashMap<AbilityType, Integer> skillsDATS = new HashMap<AbilityType, Integer>(); private Map<SkillType, Integer> skills = new HashMap<SkillType, Integer>(); // Skills and Levels
private HashMap<ToolType, Integer> toolATS = new HashMap<ToolType, Integer>(); private Map<SkillType, Integer> skillsXp = new HashMap<SkillType, Integer>(); // Skills and Xp
private Map<AbilityType, Integer> skillsDATS = new HashMap<AbilityType, Integer>();
private final static String location = mcMMO.getUsersFilePath(); private final static String location = mcMMO.getUsersFilePath();
@ -565,42 +528,6 @@ public class PlayerProfile {
return loaded; return loaded;
} }
/*
* God Mode
*/
public boolean getGodMode() {
return godMode;
}
public void toggleGodMode() {
godMode = !godMode;
}
/*
* Repair Anvil Placement
*/
public void togglePlacedAnvil() {
placedAnvil = !placedAnvil;
}
public Boolean getPlacedAnvil() {
return placedAnvil;
}
/*
* Salvage Anvil Placement
*/
public void togglePlacedSalvageAnvil() {
placedSalvageAnvil = !placedSalvageAnvil;
}
public Boolean getPlacedSalvageAnvil() {
return placedSalvageAnvil;
}
/* /*
* HUD Stuff * HUD Stuff
*/ */
@ -621,315 +548,6 @@ public class PlayerProfile {
this.hudType = hudType; this.hudType = hudType;
} }
/*
* Tools
*/
/**
* Reset the prep modes of all tools.
*/
public void resetToolPrepMode() {
for (ToolType tool : ToolType.values()) {
setToolPreparationMode(tool, false);
}
}
/**
* Get the current prep mode of a tool.
*
* @param tool Tool to get the mode for
* @return true if the tool is prepped, false otherwise
*/
public boolean getToolPreparationMode(ToolType tool) {
switch (tool) {
case AXE:
return axePreparationMode;
case FISTS:
return fistsPreparationMode;
case HOE:
return hoePreparationMode;
case PICKAXE:
return pickaxePreparationMode;
case SHOVEL:
return shovelPreparationMode;
case SWORD:
return swordsPreparationMode;
default:
return false;
}
}
/**
* Set the current prep mode of a tool.
*
* @param tool Tool to set the mode for
* @param bool true if the tool should be prepped, false otherwise
*/
public void setToolPreparationMode(ToolType tool, boolean bool) {
switch (tool) {
case AXE:
axePreparationMode = bool;
break;
case FISTS:
fistsPreparationMode = bool;
break;
case HOE:
hoePreparationMode = bool;
break;
case PICKAXE:
pickaxePreparationMode = bool;
break;
case SHOVEL:
shovelPreparationMode = bool;
break;
case SWORD:
swordsPreparationMode = bool;
break;
default:
break;
}
}
/**
* Get the current prep ATS of a tool.
*
* @param tool Tool to get the ATS for
* @return the ATS for the tool
*/
public long getToolPreparationATS(ToolType tool) {
return toolATS.get(tool);
}
/**
* Set the current prep ATS of a tool.
*
* @param tool Tool to set the ATS for
* @param ATS the ATS of the tool
*/
public void setToolPreparationATS(ToolType tool, long ATS) {
int startTime = (int) (ATS / Misc.TIME_CONVERSION_FACTOR);
toolATS.put(tool, startTime);
}
/*
* Abilities
*/
/**
* Reset the prep modes of all tools.
*/
public void resetAbilityMode() {
for (AbilityType ability : AbilityType.values()) {
setAbilityMode(ability, false);
}
}
/**
* Get the mode of an ability.
*
* @param ability The ability to check
* @return true if the ability is enabled, false otherwise
*/
public boolean getAbilityMode(AbilityType ability) {
switch (ability) {
case BERSERK:
return berserkMode;
case SUPER_BREAKER:
return superBreakerMode;
case GIGA_DRILL_BREAKER:
return gigaDrillBreakerMode;
case GREEN_TERRA:
return greenTerraMode;
case SKULL_SPLITTER:
return skullSplitterMode;
case TREE_FELLER:
return treeFellerMode;
case SERRATED_STRIKES:
return serratedStrikesMode;
default:
return false;
}
}
/**
* Set the mode of an ability.
*
* @param ability The ability to check
* @param bool True if the ability is active, false otherwise
*/
public void setAbilityMode(AbilityType ability, boolean bool) {
switch (ability) {
case BERSERK:
berserkMode = bool;
break;
case SUPER_BREAKER:
superBreakerMode = bool;
break;
case GIGA_DRILL_BREAKER:
gigaDrillBreakerMode = bool;
break;
case GREEN_TERRA:
greenTerraMode = bool;
break;
case SKULL_SPLITTER:
skullSplitterMode = bool;
break;
case TREE_FELLER:
treeFellerMode = bool;
break;
case SERRATED_STRIKES:
serratedStrikesMode = bool;
break;
default:
break;
}
}
/**
* Get the informed state of an ability
*
* @param ability The ability to check
* @return true if the ability is informed, false otherwise
*/
public boolean getAbilityInformed(AbilityType ability) {
switch (ability) {
case BERSERK:
return berserkInformed;
case BLAST_MINING:
return blastMiningInformed;
case SUPER_BREAKER:
return superBreakerInformed;
case GIGA_DRILL_BREAKER:
return gigaDrillBreakerInformed;
case GREEN_TERRA:
return greenTerraInformed;
case SKULL_SPLITTER:
return skullSplitterInformed;
case TREE_FELLER:
return treeFellerInformed;
case SERRATED_STRIKES:
return serratedStrikesInformed;
default:
return false;
}
}
/**
* Set the informed state of an ability.
*
* @param ability The ability to check
* @param bool True if the ability is informed, false otherwise
*/
public void setAbilityInformed(AbilityType ability, boolean bool) {
switch (ability) {
case BERSERK:
berserkInformed = bool;
break;
case BLAST_MINING:
blastMiningInformed = bool;
break;
case SUPER_BREAKER:
superBreakerInformed = bool;
break;
case GIGA_DRILL_BREAKER:
gigaDrillBreakerInformed = bool;
break;
case GREEN_TERRA:
greenTerraInformed = bool;
break;
case SKULL_SPLITTER:
skullSplitterInformed = bool;
break;
case TREE_FELLER:
treeFellerInformed = bool;
break;
case SERRATED_STRIKES:
serratedStrikesInformed = bool;
break;
default:
break;
}
}
public boolean getAbilityUse() {
return abilityUse;
}
public void toggleAbilityUse() {
abilityUse = !abilityUse;
}
/*
* Recently Hurt
*/
public int getRecentlyHurt() {
return recentlyHurt;
}
public void setRecentlyHurt(int value) {
recentlyHurt = value;
}
public void actualizeRecentlyHurt() {
recentlyHurt = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
}
/*
* Ability Notifications
*/
public boolean useChatNotifications() {
return displaySkillNotifications;
}
public void toggleChatNotifications() {
displaySkillNotifications = !displaySkillNotifications;
}
/* /*
* Cooldowns * Cooldowns
*/ */
@ -965,18 +583,6 @@ public class PlayerProfile {
} }
} }
/*
* Exploit Prevention
*/
public int getRespawnATS() {
return respawnATS;
}
public void actualizeRespawnATS() {
respawnATS = (int) (System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR);
}
/* /*
* Xp Functions * Xp Functions
*/ */

View File

@ -23,7 +23,6 @@ import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.HiddenConfig; import com.gmail.nossr50.config.HiddenConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.datatypes.skills.ToolType;
@ -145,7 +144,6 @@ public class BlockListener implements Listener {
} }
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
PlayerProfile profile = mcMMOPlayer.getProfile();
BlockState blockState = event.getBlock().getState(); BlockState blockState = event.getBlock().getState();
ItemStack heldItem = player.getItemInHand(); ItemStack heldItem = player.getItemInHand();
@ -156,7 +154,7 @@ public class BlockListener implements Listener {
/* Green Terra */ /* Green Terra */
if (herbalismManager.canActivateAbility()) { if (herbalismManager.canActivateAbility()) {
SkillUtils.abilityCheck(player, SkillType.HERBALISM); SkillUtils.abilityCheck(mcMMOPlayer, SkillType.HERBALISM);
} }
/* /*
@ -180,14 +178,14 @@ public class BlockListener implements Listener {
MiningManager miningManager = UserManager.getPlayer(player).getMiningManager(); MiningManager miningManager = UserManager.getPlayer(player).getMiningManager();
miningManager.miningBlockCheck(blockState); miningManager.miningBlockCheck(blockState);
if (profile.getAbilityMode(AbilityType.SUPER_BREAKER)) { if (mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) {
miningManager.miningBlockCheck(blockState); miningManager.miningBlockCheck(blockState);
} }
} }
/* WOOD CUTTING */ /* WOOD CUTTING */
else if (BlockUtils.isLog(blockState) && Permissions.skillEnabled(player, SkillType.WOODCUTTING) && !mcMMO.placeStore.isTrue(blockState)) { else if (BlockUtils.isLog(blockState) && Permissions.skillEnabled(player, SkillType.WOODCUTTING) && !mcMMO.placeStore.isTrue(blockState)) {
if (profile.getAbilityMode(AbilityType.TREE_FELLER) && Permissions.treeFeller(player) && ItemUtils.isAxe(heldItem)) { if (mcMMOPlayer.getAbilityMode(AbilityType.TREE_FELLER) && Permissions.treeFeller(player) && ItemUtils.isAxe(heldItem)) {
Woodcutting.beginTreeFeller(blockState, player); Woodcutting.beginTreeFeller(blockState, player);
} }
else { else {
@ -207,7 +205,7 @@ public class BlockListener implements Listener {
ExcavationManager excavationManager = UserManager.getPlayer(player).getExcavationManager(); ExcavationManager excavationManager = UserManager.getPlayer(player).getExcavationManager();
excavationManager.excavationBlockCheck(blockState); excavationManager.excavationBlockCheck(blockState);
if (profile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER)) { if (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER)) {
excavationManager.gigaDrillBreaker(blockState); excavationManager.gigaDrillBreaker(blockState);
} }
} }
@ -271,7 +269,7 @@ public class BlockListener implements Listener {
return; return;
} }
PlayerProfile profile = UserManager.getPlayer(player).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
BlockState blockState = event.getBlock().getState(); BlockState blockState = event.getBlock().getState();
/* /*
@ -283,30 +281,30 @@ public class BlockListener implements Listener {
ItemStack heldItem = player.getItemInHand(); ItemStack heldItem = player.getItemInHand();
if (HiddenConfig.getInstance().useEnchantmentBuffs()) { if (HiddenConfig.getInstance().useEnchantmentBuffs()) {
if ((ItemUtils.isPickaxe(heldItem) && !profile.getAbilityMode(AbilityType.SUPER_BREAKER)) || (ItemUtils.isShovel(heldItem) && !profile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER))) { if ((ItemUtils.isPickaxe(heldItem) && !mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) || (ItemUtils.isShovel(heldItem) && !mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER))) {
SkillUtils.removeAbilityBuff(heldItem); SkillUtils.removeAbilityBuff(heldItem);
} }
} }
else { else {
if ((profile.getAbilityMode(AbilityType.SUPER_BREAKER) && !BlockUtils.affectedBySuperBreaker(blockState)) || (profile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) && !BlockUtils.affectedByGigaDrillBreaker(blockState))) { if ((mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER) && !BlockUtils.affectedBySuperBreaker(blockState)) || (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) && !BlockUtils.affectedByGigaDrillBreaker(blockState))) {
SkillUtils.handleAbilitySpeedDecrease(player); SkillUtils.handleAbilitySpeedDecrease(player);
} }
} }
if (profile.getToolPreparationMode(ToolType.HOE) && ItemUtils.isHoe(heldItem) && (BlockUtils.affectedByGreenTerra(blockState) || BlockUtils.canMakeMossy(blockState)) && Permissions.greenTerra(player)) { if (mcMMOPlayer.getToolPreparationMode(ToolType.HOE) && ItemUtils.isHoe(heldItem) && (BlockUtils.affectedByGreenTerra(blockState) || BlockUtils.canMakeMossy(blockState)) && Permissions.greenTerra(player)) {
SkillUtils.abilityCheck(player, SkillType.HERBALISM); SkillUtils.abilityCheck(mcMMOPlayer, SkillType.HERBALISM);
} }
else if (profile.getToolPreparationMode(ToolType.AXE) && ItemUtils.isAxe(heldItem) && BlockUtils.isLog(blockState) && Permissions.treeFeller(player)) { else if (mcMMOPlayer.getToolPreparationMode(ToolType.AXE) && ItemUtils.isAxe(heldItem) && BlockUtils.isLog(blockState) && Permissions.treeFeller(player)) {
SkillUtils.abilityCheck(player, SkillType.WOODCUTTING); SkillUtils.abilityCheck(mcMMOPlayer, SkillType.WOODCUTTING);
} }
else if (profile.getToolPreparationMode(ToolType.PICKAXE) && ItemUtils.isPickaxe(heldItem) && BlockUtils.affectedBySuperBreaker(blockState) && Permissions.superBreaker(player)) { else if (mcMMOPlayer.getToolPreparationMode(ToolType.PICKAXE) && ItemUtils.isPickaxe(heldItem) && BlockUtils.affectedBySuperBreaker(blockState) && Permissions.superBreaker(player)) {
SkillUtils.abilityCheck(player, SkillType.MINING); SkillUtils.abilityCheck(mcMMOPlayer, SkillType.MINING);
} }
else if (profile.getToolPreparationMode(ToolType.SHOVEL) && ItemUtils.isShovel(heldItem) && BlockUtils.affectedByGigaDrillBreaker(blockState) && Permissions.gigaDrillBreaker(player)) { else if (mcMMOPlayer.getToolPreparationMode(ToolType.SHOVEL) && ItemUtils.isShovel(heldItem) && BlockUtils.affectedByGigaDrillBreaker(blockState) && Permissions.gigaDrillBreaker(player)) {
SkillUtils.abilityCheck(player, SkillType.EXCAVATION); SkillUtils.abilityCheck(mcMMOPlayer, SkillType.EXCAVATION);
} }
else if (profile.getToolPreparationMode(ToolType.FISTS) && heldItem.getType() == Material.AIR && (BlockUtils.affectedByGigaDrillBreaker(blockState) || blockState.getType() == Material.SNOW || BlockUtils.affectedByBlockCracker(blockState) && Permissions.berserk(player))) { else if (mcMMOPlayer.getToolPreparationMode(ToolType.FISTS) && heldItem.getType() == Material.AIR && (BlockUtils.affectedByGigaDrillBreaker(blockState) || blockState.getType() == Material.SNOW || BlockUtils.affectedByBlockCracker(blockState) && Permissions.berserk(player))) {
SkillUtils.abilityCheck(player, SkillType.UNARMED); SkillUtils.abilityCheck(mcMMOPlayer, SkillType.UNARMED);
} }
} }
@ -315,7 +313,7 @@ public class BlockListener implements Listener {
* *
* We don't need to check permissions here because they've already been checked for the ability to even activate. * We don't need to check permissions here because they've already been checked for the ability to even activate.
*/ */
if (profile.getAbilityMode(AbilityType.TREE_FELLER) && BlockUtils.isLog(blockState)) { if (mcMMOPlayer.getAbilityMode(AbilityType.TREE_FELLER) && BlockUtils.isLog(blockState)) {
player.playSound(blockState.getLocation(), Sound.FIZZ, Misc.FIZZ_VOLUME, Misc.FIZZ_PITCH); player.playSound(blockState.getLocation(), Sound.FIZZ, Misc.FIZZ_VOLUME, Misc.FIZZ_PITCH);
} }
} }
@ -338,7 +336,6 @@ public class BlockListener implements Listener {
} }
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
PlayerProfile profile = mcMMOPlayer.getProfile();
ItemStack heldItem = player.getItemInHand(); ItemStack heldItem = player.getItemInHand();
Block block = event.getBlock(); Block block = event.getBlock();
BlockState blockState = block.getState(); BlockState blockState = block.getState();
@ -354,7 +351,7 @@ public class BlockListener implements Listener {
blockState.update(true); blockState.update(true);
} }
} }
else if (profile.getAbilityMode(AbilityType.BERSERK)) { else if (mcMMOPlayer.getAbilityMode(AbilityType.BERSERK)) {
if (SkillUtils.triggerCheck(player, block, AbilityType.BERSERK)) { if (SkillUtils.triggerCheck(player, block, AbilityType.BERSERK)) {
if (heldItem.getType() == Material.AIR) { if (heldItem.getType() == Material.AIR) {
plugin.getServer().getPluginManager().callEvent(new FakePlayerAnimationEvent(player)); plugin.getServer().getPluginManager().callEvent(new FakePlayerAnimationEvent(player));
@ -370,7 +367,7 @@ public class BlockListener implements Listener {
} }
} }
} }
else if ((profile.getSkillLevel(SkillType.WOODCUTTING) >= AdvancedConfig.getInstance().getLeafBlowUnlockLevel()) && BlockUtils.isLeaves(blockState)) { else if ((mcMMOPlayer.getProfile().getSkillLevel(SkillType.WOODCUTTING) >= AdvancedConfig.getInstance().getLeafBlowUnlockLevel()) && BlockUtils.isLeaves(blockState)) {
if (SkillUtils.triggerCheck(player, block, AbilityType.LEAF_BLOWER)) { if (SkillUtils.triggerCheck(player, block, AbilityType.LEAF_BLOWER)) {
if (Config.getInstance().getWoodcuttingRequiresTool()) { if (Config.getInstance().getWoodcuttingRequiresTool()) {
if (ItemUtils.isAxe(heldItem)) { if (ItemUtils.isAxe(heldItem)) {

View File

@ -28,7 +28,6 @@ import org.bukkit.event.entity.FoodLevelChangeEvent;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent; import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
import com.gmail.nossr50.events.fake.FakeEntityDamageEvent; import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
import com.gmail.nossr50.party.PartyManager; import com.gmail.nossr50.party.PartyManager;
@ -161,10 +160,9 @@ public class EntityListener implements Listener {
} }
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
PlayerProfile profile = mcMMOPlayer.getProfile();
/* Check for invincibility */ /* Check for invincibility */
if (profile.getGodMode()) { if (mcMMOPlayer.getGodMode()) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -201,7 +199,7 @@ public class EntityListener implements Listener {
} }
if (event.getDamage() >= 1) { if (event.getDamage() >= 1) {
profile.actualizeRecentlyHurt(); mcMMOPlayer.actualizeRecentlyHurt();
} }
} }
else if (livingEntity instanceof Tameable) { else if (livingEntity instanceof Tameable) {

View File

@ -30,7 +30,6 @@ import com.gmail.nossr50.chat.ChatManager;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
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.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
@ -101,10 +100,9 @@ public class PlayerListener implements Listener {
} }
McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
PlayerProfile profile = mcMMOPlayer.getProfile();
if (profile.getGodMode() && !Permissions.mcgod(player)) { if (mcMMOPlayer.getGodMode() && !Permissions.mcgod(player)) {
profile.toggleGodMode(); mcMMOPlayer.toggleGodMode();
player.sendMessage(LocaleLoader.getString("Commands.GodMode.Forbidden")); player.sendMessage(LocaleLoader.getString("Commands.GodMode.Forbidden"));
} }
@ -128,7 +126,7 @@ public class PlayerListener implements Listener {
return; return;
} }
UserManager.addUser(player).getProfile().actualizeRespawnATS(); UserManager.addUser(player).actualizeRespawnATS();
} }
} }
@ -140,9 +138,9 @@ public class PlayerListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerDropItemEvent(PlayerDropItemEvent event) { public void onPlayerDropItemEvent(PlayerDropItemEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
PlayerProfile playerProfile = UserManager.getPlayer(player).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
if (playerProfile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) || playerProfile.getAbilityMode(AbilityType.SUPER_BREAKER)) { if (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) || mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -261,7 +259,7 @@ public class PlayerListener implements Listener {
return; return;
} }
UserManager.getPlayer(player).getProfile().actualizeRespawnATS(); UserManager.getPlayer(player).actualizeRespawnATS();
} }
/** /**

View File

@ -3,7 +3,7 @@ package com.gmail.nossr50.runnables.skills;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Misc;
@ -20,14 +20,14 @@ public class SkillMonitorTask implements Runnable {
continue; continue;
} }
PlayerProfile profile = UserManager.getPlayer(player).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
/* /*
* MONITOR SKILLS * MONITOR SKILLS
*/ */
for (SkillType skill : SkillType.values()) { for (SkillType skill : SkillType.values()) {
if (skill.getTool() != null && skill.getAbility() != null) { if (skill.getTool() != null && skill.getAbility() != null) {
SkillUtils.monitorSkill(player, profile, curTime, skill); SkillUtils.monitorSkill(mcMMOPlayer, curTime, skill);
} }
} }
@ -36,7 +36,7 @@ public class SkillMonitorTask implements Runnable {
*/ */
for (AbilityType ability : AbilityType.values()) { for (AbilityType ability : AbilityType.values()) {
if (ability.getCooldown() > 0) { if (ability.getCooldown() > 0) {
SkillUtils.watchCooldown(player, profile, ability); SkillUtils.watchCooldown(mcMMOPlayer, ability);
} }
} }
} }

View File

@ -6,7 +6,6 @@ import org.bukkit.entity.LightningStrike;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.skills.SkillManager;
@ -52,14 +51,12 @@ public class AcrobaticsManager extends SkillManager {
if (!isFatal(modifiedDamage) && SkillUtils.activationSuccessful(player, skill, Acrobatics.dodgeMaxChance, Acrobatics.dodgeMaxBonusLevel)) { if (!isFatal(modifiedDamage) && SkillUtils.activationSuccessful(player, skill, Acrobatics.dodgeMaxChance, Acrobatics.dodgeMaxBonusLevel)) {
ParticleEffectUtils.playDodgeEffect(player); ParticleEffectUtils.playDodgeEffect(player);
PlayerProfile playerProfile = getProfile(); if (mcMMOPlayer.useChatNotifications()) {
if (playerProfile.useChatNotifications()) {
player.sendMessage(LocaleLoader.getString("Acrobatics.Combat.Proc")); player.sendMessage(LocaleLoader.getString("Acrobatics.Combat.Proc"));
} }
// Why do we check respawn cooldown here? // Why do we check respawn cooldown here?
if (System.currentTimeMillis() >= playerProfile.getRespawnATS() + Misc.PLAYER_RESPAWN_COOLDOWN_SECONDS) { if (System.currentTimeMillis() >= mcMMOPlayer.getRespawnATS() + Misc.PLAYER_RESPAWN_COOLDOWN_SECONDS) {
applyXpGain(damage * Acrobatics.dodgeXpModifier); applyXpGain(damage * Acrobatics.dodgeXpModifier);
} }

View File

@ -86,11 +86,11 @@ public class ArcheryManager extends SkillManager {
defender.teleport(dazedLocation); defender.teleport(dazedLocation);
defender.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 20 * 10, 10)); defender.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 20 * 10, 10));
if (UserManager.getPlayer(defender).getProfile().useChatNotifications()) { if (UserManager.getPlayer(defender).useChatNotifications()) {
defender.sendMessage(LocaleLoader.getString("Combat.TouchedFuzzy")); defender.sendMessage(LocaleLoader.getString("Combat.TouchedFuzzy"));
} }
if (getProfile().useChatNotifications()) { if (mcMMOPlayer.useChatNotifications()) {
attacker.sendMessage(LocaleLoader.getString("Combat.TargetDazed")); attacker.sendMessage(LocaleLoader.getString("Combat.TargetDazed"));
} }

View File

@ -41,11 +41,11 @@ public class AxesManager extends SkillManager {
} }
public boolean canUseSkullSplitter(LivingEntity target) { public boolean canUseSkullSplitter(LivingEntity target) {
return target.isValid() && getProfile().getAbilityMode(AbilityType.SKULL_SPLITTER) && Permissions.skullSplitter(getPlayer()); return target.isValid() && mcMMOPlayer.getAbilityMode(AbilityType.SKULL_SPLITTER) && Permissions.skullSplitter(getPlayer());
} }
public boolean canActivateAbility() { public boolean canActivateAbility() {
return getProfile().getToolPreparationMode(ToolType.AXE) && Permissions.skullSplitter(getPlayer()); return mcMMOPlayer.getToolPreparationMode(ToolType.AXE) && Permissions.skullSplitter(getPlayer());
} }
/** /**
@ -118,14 +118,14 @@ public class AxesManager extends SkillManager {
ParticleEffectUtils.playGreaterImpactEffect(target); ParticleEffectUtils.playGreaterImpactEffect(target);
target.setVelocity(player.getLocation().getDirection().normalize().multiply(Axes.greaterImpactKnockbackMultiplier)); target.setVelocity(player.getLocation().getDirection().normalize().multiply(Axes.greaterImpactKnockbackMultiplier));
if (getProfile().useChatNotifications()) { if (mcMMOPlayer.useChatNotifications()) {
player.sendMessage(LocaleLoader.getString("Axes.Combat.GI.Proc")); player.sendMessage(LocaleLoader.getString("Axes.Combat.GI.Proc"));
} }
if (target instanceof Player) { if (target instanceof Player) {
Player defender = (Player) target; Player defender = (Player) target;
if (UserManager.getPlayer(defender).getProfile().useChatNotifications()) { if (UserManager.getPlayer(defender).useChatNotifications()) {
defender.sendMessage(LocaleLoader.getString("Axes.Combat.GI.Struck")); defender.sendMessage(LocaleLoader.getString("Axes.Combat.GI.Struck"));
} }
} }

View File

@ -15,7 +15,6 @@ import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.treasure.TreasureConfig; import com.gmail.nossr50.config.treasure.TreasureConfig;
import com.gmail.nossr50.datatypes.mods.CustomBlock; import com.gmail.nossr50.datatypes.mods.CustomBlock;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.datatypes.skills.ToolType;
@ -30,7 +29,6 @@ import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.ModUtils; import com.gmail.nossr50.util.ModUtils;
import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.StringUtils;
import com.gmail.nossr50.util.player.UserManager;
import com.gmail.nossr50.util.skills.SkillUtils; import com.gmail.nossr50.util.skills.SkillUtils;
public class HerbalismManager extends SkillManager { public class HerbalismManager extends SkillManager {
@ -62,15 +60,15 @@ public class HerbalismManager extends SkillManager {
} }
public boolean canGreenTerraBlock(BlockState blockState) { public boolean canGreenTerraBlock(BlockState blockState) {
return getProfile().getAbilityMode(AbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState); return mcMMOPlayer.getAbilityMode(AbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState);
} }
public boolean canActivateAbility() { public boolean canActivateAbility() {
return getProfile().getToolPreparationMode(ToolType.HOE) && Permissions.greenTerra(getPlayer()); return mcMMOPlayer.getToolPreparationMode(ToolType.HOE) && Permissions.greenTerra(getPlayer());
} }
public boolean canGreenTerraPlant() { public boolean canGreenTerraPlant() {
return getProfile().getAbilityMode(AbilityType.GREEN_TERRA); return mcMMOPlayer.getAbilityMode(AbilityType.GREEN_TERRA);
} }
/** /**
@ -288,9 +286,7 @@ public class HerbalismManager extends SkillManager {
return; return;
} }
PlayerProfile playerProfile = UserManager.getPlayer(player).getProfile(); if (mcMMOPlayer.getAbilityMode(AbilityType.GREEN_TERRA)) {
if (playerProfile.getAbilityMode(AbilityType.GREEN_TERRA)) {
playerInventory.removeItem(seed); playerInventory.removeItem(seed);
player.updateInventory(); // Needed until replacement available player.updateInventory(); // Needed until replacement available

View File

@ -86,7 +86,6 @@ public class MiningManager extends SkillManager{
return; return;
} }
PlayerProfile profile = getProfile();
TNTPrimed tnt = player.getWorld().spawn(targetBlock.getLocation(), TNTPrimed.class); TNTPrimed tnt = player.getWorld().spawn(targetBlock.getLocation(), TNTPrimed.class);
SkillUtils.sendSkillMessage(player, AbilityType.BLAST_MINING.getAbilityPlayer(player)); SkillUtils.sendSkillMessage(player, AbilityType.BLAST_MINING.getAbilityPlayer(player));
@ -97,8 +96,8 @@ public class MiningManager extends SkillManager{
targetBlock.setData((byte) 0x0); targetBlock.setData((byte) 0x0);
targetBlock.setType(Material.AIR); targetBlock.setType(Material.AIR);
profile.setSkillDATS(AbilityType.BLAST_MINING, System.currentTimeMillis()); getProfile().setSkillDATS(AbilityType.BLAST_MINING, System.currentTimeMillis());
profile.setAbilityInformed(AbilityType.BLAST_MINING, false); mcMMOPlayer.setAbilityInformed(AbilityType.BLAST_MINING, false);
} }
/** /**

View File

@ -204,9 +204,9 @@ public class Repair {
* @param anvilID The item ID of the anvil block * @param anvilID The item ID of the anvil block
*/ */
public static void placedAnvilCheck(Player player, int anvilID) { public static void placedAnvilCheck(Player player, int anvilID) {
PlayerProfile profile = UserManager.getPlayer(player).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
if (!profile.getPlacedAnvil()) { if (!mcMMOPlayer.getPlacedAnvil()) {
if (mcMMO.spoutEnabled) { if (mcMMO.spoutEnabled) {
SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
@ -219,7 +219,7 @@ public class Repair {
} }
player.playSound(player.getLocation(), Sound.ANVIL_LAND, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH); player.playSound(player.getLocation(), Sound.ANVIL_LAND, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH);
profile.togglePlacedAnvil(); mcMMOPlayer.togglePlacedAnvil();
} }
} }

View File

@ -11,7 +11,7 @@ import org.getspout.spoutapi.player.SpoutPlayer;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.util.ItemUtils; import com.gmail.nossr50.util.ItemUtils;
@ -59,9 +59,9 @@ public class Salvage {
* @param anvilID The item ID of the anvil block * @param anvilID The item ID of the anvil block
*/ */
public static void placedAnvilCheck(final Player player, final int anvilID) { public static void placedAnvilCheck(final Player player, final int anvilID) {
final PlayerProfile profile = UserManager.getPlayer(player).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
if (!profile.getPlacedSalvageAnvil()) { if (!mcMMOPlayer.getPlacedSalvageAnvil()) {
if (mcMMO.spoutEnabled) { if (mcMMO.spoutEnabled) {
final SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player); final SpoutPlayer spoutPlayer = SpoutManager.getPlayer(player);
@ -74,7 +74,7 @@ public class Salvage {
} }
player.playSound(player.getLocation(), Sound.ANVIL_LAND, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH); player.playSound(player.getLocation(), Sound.ANVIL_LAND, Misc.ANVIL_USE_VOLUME, Misc.ANVIL_USE_PITCH);
profile.togglePlacedSalvageAnvil(); mcMMOPlayer.togglePlacedSalvageAnvil();
} }
} }

View File

@ -34,14 +34,14 @@ public class SwordsManager extends SkillManager {
BleedTimerTask.add(target, Swords.bleedBaseTicks); BleedTimerTask.add(target, Swords.bleedBaseTicks);
} }
if (getProfile().useChatNotifications()) { if (mcMMOPlayer.useChatNotifications()) {
player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleeding")); player.sendMessage(LocaleLoader.getString("Swords.Combat.Bleeding"));
} }
if (target instanceof Player) { if (target instanceof Player) {
Player defender = (Player) target; Player defender = (Player) target;
if (UserManager.getPlayer(defender).getProfile().useChatNotifications()) { if (UserManager.getPlayer(defender).useChatNotifications()) {
defender.sendMessage(LocaleLoader.getString("Swords.Combat.Bleeding.Started")); defender.sendMessage(LocaleLoader.getString("Swords.Combat.Bleeding.Started"));
} }
} }

View File

@ -108,7 +108,7 @@ public class TamingManager extends SkillManager {
* @param livingEntity The entity to examine * @param livingEntity The entity to examine
*/ */
public void beastLore(LivingEntity livingEntity) { public void beastLore(LivingEntity livingEntity) {
BeastLoreEventHandler eventHandler = new BeastLoreEventHandler(mcMMOPlayer.getPlayer(), livingEntity); BeastLoreEventHandler eventHandler = new BeastLoreEventHandler(getPlayer(), livingEntity);
eventHandler.sendInspectMessage(); eventHandler.sendInspectMessage();
} }
@ -119,11 +119,11 @@ public class TamingManager extends SkillManager {
* @param summonAmount The amount of material needed to summon the entity * @param summonAmount The amount of material needed to summon the entity
*/ */
private void callOfTheWild(EntityType type, int summonAmount) { private void callOfTheWild(EntityType type, int summonAmount) {
if (!Permissions.callOfTheWild(mcMMOPlayer.getPlayer())) { if (!Permissions.callOfTheWild(getPlayer())) {
return; return;
} }
CallOfTheWildEventHandler eventHandler = new CallOfTheWildEventHandler(mcMMOPlayer.getPlayer(), type, summonAmount); CallOfTheWildEventHandler eventHandler = new CallOfTheWildEventHandler(getPlayer(), type, summonAmount);
ItemStack inHand = eventHandler.inHand; ItemStack inHand = eventHandler.inHand;
int inHandAmount = inHand.getAmount(); int inHandAmount = inHand.getAmount();

View File

@ -6,7 +6,6 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.locale.LocaleLoader;
import com.gmail.nossr50.metrics.MetricsManager; import com.gmail.nossr50.metrics.MetricsManager;
import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.player.UserManager;
@ -27,10 +26,9 @@ public final class ChimaeraWing {
return; return;
} }
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
Block block = player.getLocation().getBlock(); Block block = player.getLocation().getBlock();
int amount = inHand.getAmount(); int amount = inHand.getAmount();
long recentlyHurt = profile.getRecentlyHurt() * Misc.TIME_CONVERSION_FACTOR; long recentlyHurt = UserManager.getPlayer(player).getRecentlyHurt() * Misc.TIME_CONVERSION_FACTOR;
if (Permissions.chimaeraWing(player) && inHand.getTypeId() == Config.getInstance().getChimaeraItemId()) { if (Permissions.chimaeraWing(player) && inHand.getTypeId() == Config.getInstance().getChimaeraItemId()) {
if (SkillUtils.cooldownOver(recentlyHurt, 60, player) && amount >= Config.getInstance().getChimaeraCost()) { if (SkillUtils.cooldownOver(recentlyHurt, 60, player) && amount >= Config.getInstance().getChimaeraCost()) {

View File

@ -21,7 +21,6 @@ import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.datatypes.skills.ToolType;
@ -90,11 +89,10 @@ public final class CombatUtils {
} }
if (Permissions.skillEnabled(player, SkillType.SWORDS)) { if (Permissions.skillEnabled(player, SkillType.SWORDS)) {
PlayerProfile profile = mcMMOPlayer.getProfile();
boolean canSerratedStrike = Permissions.serratedStrikes(player); // So we don't have to check the same permission twice boolean canSerratedStrike = Permissions.serratedStrikes(player); // So we don't have to check the same permission twice
if (profile.getToolPreparationMode(ToolType.SWORD) && canSerratedStrike) { if (mcMMOPlayer.getToolPreparationMode(ToolType.SWORD) && canSerratedStrike) {
SkillUtils.abilityCheck(player, SkillType.SWORDS); SkillUtils.abilityCheck(mcMMOPlayer, SkillType.SWORDS);
} }
SwordsManager swordsManager = mcMMOPlayer.getSwordsManager(); SwordsManager swordsManager = mcMMOPlayer.getSwordsManager();
@ -103,7 +101,7 @@ public final class CombatUtils {
swordsManager.bleedCheck(target); swordsManager.bleedCheck(target);
} }
if (profile.getAbilityMode(AbilityType.SERRATED_STRIKES) && canSerratedStrike) { if (mcMMOPlayer.getAbilityMode(AbilityType.SERRATED_STRIKES) && canSerratedStrike) {
swordsManager.serratedStrikes(target, event.getDamage()); swordsManager.serratedStrikes(target, event.getDamage());
} }
@ -119,7 +117,7 @@ public final class CombatUtils {
AxesManager axesManager = mcMMOPlayer.getAxesManager(); AxesManager axesManager = mcMMOPlayer.getAxesManager();
if (axesManager.canActivateAbility()) { if (axesManager.canActivateAbility()) {
SkillUtils.abilityCheck(player, SkillType.AXES); SkillUtils.abilityCheck(mcMMOPlayer, SkillType.AXES);
} }
if (axesManager.canUseAxeMastery()) { if (axesManager.canUseAxeMastery()) {
@ -155,12 +153,10 @@ public final class CombatUtils {
} }
if (Permissions.skillEnabled(player, SkillType.UNARMED)) { if (Permissions.skillEnabled(player, SkillType.UNARMED)) {
PlayerProfile profile = mcMMOPlayer.getProfile();
boolean canBerserk = Permissions.berserk(player); // So we don't have to check the same permission twice boolean canBerserk = Permissions.berserk(player); // So we don't have to check the same permission twice
if (profile.getToolPreparationMode(ToolType.FISTS) && canBerserk) { if (mcMMOPlayer.getToolPreparationMode(ToolType.FISTS) && canBerserk) {
SkillUtils.abilityCheck(player, SkillType.UNARMED); SkillUtils.abilityCheck(mcMMOPlayer, SkillType.UNARMED);
} }
UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager(); UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager();
@ -169,7 +165,7 @@ public final class CombatUtils {
event.setDamage(unarmedManager.ironArmCheck(event.getDamage())); event.setDamage(unarmedManager.ironArmCheck(event.getDamage()));
} }
if (profile.getAbilityMode(AbilityType.BERSERK) && canBerserk) { if (mcMMOPlayer.getAbilityMode(AbilityType.BERSERK) && canBerserk) {
event.setDamage(unarmedManager.berserkDamage(event.getDamage())); event.setDamage(unarmedManager.berserkDamage(event.getDamage()));
} }
@ -450,7 +446,7 @@ public final class CombatUtils {
Player defender = (Player) target; Player defender = (Player) target;
if (System.currentTimeMillis() >= UserManager.getPlayer(defender).getProfile().getRespawnATS() + 5) { if (System.currentTimeMillis() >= UserManager.getPlayer(defender).getRespawnATS() + 5) {
baseXP = 20 * Config.getInstance().getPlayerVersusPlayerXP(); baseXP = 20 * Config.getInstance().getPlayerVersusPlayerXP();
} }
} }
@ -538,7 +534,7 @@ public final class CombatUtils {
if (entity instanceof Player) { if (entity instanceof Player) {
Player defender = (Player) entity; Player defender = (Player) entity;
if (!defender.getWorld().getPVP() || defender == player || UserManager.getPlayer(defender).getProfile().getGodMode()) { if (!defender.getWorld().getPVP() || defender == player || UserManager.getPlayer(defender).getGodMode()) {
return false; return false;
} }

View File

@ -21,6 +21,7 @@ import com.gmail.nossr50.config.AdvancedConfig;
import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.config.HiddenConfig; import com.gmail.nossr50.config.HiddenConfig;
import com.gmail.nossr50.config.spout.SpoutConfig; import com.gmail.nossr50.config.spout.SpoutConfig;
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.player.PlayerProfile;
import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.datatypes.skills.AbilityType;
import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.SkillType;
@ -87,17 +88,18 @@ public class SkillUtils {
/** /**
* Sends a message to the player when the cooldown expires. * Sends a message to the player when the cooldown expires.
* *
* @param player The player to send a message to * @param mcMMOPlayer The player to send a message to
* @param profile The profile of the player
* @param ability The ability to watch cooldowns for * @param ability The ability to watch cooldowns for
*/ */
public static void watchCooldown(Player player, PlayerProfile profile, AbilityType ability) { public static void watchCooldown(McMMOPlayer mcMMOPlayer, AbilityType ability) {
if (player == null || profile == null || ability == null) { if (mcMMOPlayer == null || ability == null) {
return; return;
} }
if (!profile.getAbilityInformed(ability) && cooldownOver(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) { Player player = mcMMOPlayer.getPlayer();
profile.setAbilityInformed(ability, true);
if (!mcMMOPlayer.getAbilityInformed(ability) && cooldownOver(mcMMOPlayer.getProfile().getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
mcMMOPlayer.setAbilityInformed(ability, true);
player.sendMessage(ability.getAbilityRefresh()); player.sendMessage(ability.getAbilityRefresh());
} }
} }
@ -113,7 +115,7 @@ public class SkillUtils {
return; return;
} }
PlayerProfile profile = UserManager.getPlayer(player).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
AbilityType ability = skill.getAbility(); AbilityType ability = skill.getAbility();
ToolType tool = skill.getTool(); ToolType tool = skill.getTool();
ItemStack inHand = player.getItemInHand(); ItemStack inHand = player.getItemInHand();
@ -122,29 +124,26 @@ public class SkillUtils {
return; return;
} }
/* Check if any abilities are active */ if (!mcMMOPlayer.getAbilityUse()) {
if (profile == null) {
return; return;
} }
if (!profile.getAbilityUse()) { for (AbilityType abilityType : AbilityType.values()) {
return; if (mcMMOPlayer.getAbilityMode(abilityType)) {
}
for (AbilityType x : AbilityType.values()) {
if (profile.getAbilityMode(x)) {
return; return;
} }
} }
PlayerProfile playerProfile = mcMMOPlayer.getProfile();
/* /*
* Woodcutting & Axes need to be treated differently. * Woodcutting & Axes need to be treated differently.
* Basically the tool always needs to ready and we check to see if the cooldown is over when the user takes action * Basically the tool always needs to ready and we check to see if the cooldown is over when the user takes action
*/ */
if (ability.getPermissions(player) && tool.inHand(inHand) && !profile.getToolPreparationMode(tool)) { if (ability.getPermissions(player) && tool.inHand(inHand) && !mcMMOPlayer.getToolPreparationMode(tool)) {
if (skill != SkillType.WOODCUTTING && skill != SkillType.AXES) { if (skill != SkillType.WOODCUTTING && skill != SkillType.AXES) {
if (!profile.getAbilityMode(ability) && !cooldownOver(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) { if (!mcMMOPlayer.getAbilityMode(ability) && !cooldownOver(playerProfile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
player.sendMessage(LocaleLoader.getString("Skills.TooTired", calculateTimeLeft(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player))); player.sendMessage(LocaleLoader.getString("Skills.TooTired", calculateTimeLeft(playerProfile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)));
return; return;
} }
} }
@ -153,39 +152,36 @@ public class SkillUtils {
player.sendMessage(tool.getRaiseTool()); player.sendMessage(tool.getRaiseTool());
} }
profile.setToolPreparationATS(tool, System.currentTimeMillis()); mcMMOPlayer.setToolPreparationATS(tool, System.currentTimeMillis());
profile.setToolPreparationMode(tool, true); mcMMOPlayer.setToolPreparationMode(tool, true);
} }
} }
/** /**
* Monitors various things relating to skill abilities. * Monitors various things relating to skill abilities.
* *
* @param player The player using the skill * @param mcMMOPlayer The player using the skill
* @param profile The profile of the player * @param profile The profile of the player
* @param curTime The current system time * @param curTime The current system time
* @param skill The skill being monitored * @param skill The skill being monitored
*/ */
public static void monitorSkill(Player player, PlayerProfile profile, long curTime, SkillType skill) { public static void monitorSkill(McMMOPlayer mcMMOPlayer, long curTime, SkillType skill) {
final int FOUR_SECONDS = 4000; final int FOUR_SECONDS = 4000;
ToolType tool = skill.getTool(); ToolType tool = skill.getTool();
AbilityType ability = skill.getAbility();
if (profile == null) { if (mcMMOPlayer.getToolPreparationMode(tool) && curTime - (mcMMOPlayer.getToolPreparationATS(tool) * Misc.TIME_CONVERSION_FACTOR) >= FOUR_SECONDS) {
return; mcMMOPlayer.setToolPreparationMode(tool, false);
}
if (profile.getToolPreparationMode(tool) && curTime - (profile.getToolPreparationATS(tool) * Misc.TIME_CONVERSION_FACTOR) >= FOUR_SECONDS) {
profile.setToolPreparationMode(tool, false);
if (Config.getInstance().getAbilityMessagesEnabled()) { if (Config.getInstance().getAbilityMessagesEnabled()) {
player.sendMessage(tool.getLowerTool()); mcMMOPlayer.getPlayer().sendMessage(tool.getLowerTool());
} }
} }
AbilityType ability = skill.getAbility();
Player player = mcMMOPlayer.getPlayer();
if (ability.getPermissions(player)) { if (ability.getPermissions(player)) {
if (profile.getAbilityMode(ability) && (profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR) <= curTime) { if (mcMMOPlayer.getAbilityMode(ability) && (mcMMOPlayer.getProfile().getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR) <= curTime) {
if (ability == AbilityType.BERSERK) { if (ability == AbilityType.BERSERK) {
player.setCanPickupItems(true); player.setCanPickupItems(true);
} }
@ -193,12 +189,12 @@ public class SkillUtils {
handleAbilitySpeedDecrease(player); handleAbilitySpeedDecrease(player);
} }
profile.setAbilityMode(ability, false); mcMMOPlayer.setAbilityMode(ability, false);
profile.setAbilityInformed(ability, false); mcMMOPlayer.setAbilityInformed(ability, false);
ParticleEffectUtils.playAbilityDisabledEffect(player); ParticleEffectUtils.playAbilityDisabledEffect(player);
if (profile.useChatNotifications()) { if (mcMMOPlayer.useChatNotifications()) {
player.sendMessage(ability.getAbilityOff()); player.sendMessage(ability.getAbilityOff());
} }
@ -368,40 +364,42 @@ public class SkillUtils {
/** /**
* Check to see if an ability can be activated. * Check to see if an ability can be activated.
* *
* @param player The player activating the ability * @param mcMMOPlayer The player activating the ability
* @param type The skill the ability is based on * @param type The skill the ability is based on
*/ */
public static void abilityCheck(Player player, SkillType type) { public static void abilityCheck(McMMOPlayer mcMMOPlayer, SkillType type) {
PlayerProfile profile = UserManager.getPlayer(player).getProfile();
ToolType tool = type.getTool(); ToolType tool = type.getTool();
AbilityType ability = type.getAbility(); AbilityType ability = type.getAbility();
profile.setToolPreparationMode(tool, false); mcMMOPlayer.setToolPreparationMode(tool, false);
Player player = mcMMOPlayer.getPlayer();
PlayerProfile playerProfile = mcMMOPlayer.getProfile();
/* /*
* Axes and Woodcutting are odd because they share the same tool. * Axes and Woodcutting are odd because they share the same tool.
* We show them the too tired message when they take action. * We show them the too tired message when they take action.
*/ */
if (type == SkillType.WOODCUTTING || type == SkillType.AXES) { if (type == SkillType.WOODCUTTING || type == SkillType.AXES) {
if (!profile.getAbilityMode(ability) && !cooldownOver(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) { if (!mcMMOPlayer.getAbilityMode(ability) && !cooldownOver(playerProfile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)) {
player.sendMessage(LocaleLoader.getString("Skills.TooTired", calculateTimeLeft(profile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player))); player.sendMessage(LocaleLoader.getString("Skills.TooTired", calculateTimeLeft(playerProfile.getSkillDATS(ability) * Misc.TIME_CONVERSION_FACTOR, ability.getCooldown(), player)));
return; return;
} }
} }
if (!profile.getAbilityMode(ability) && cooldownOver(profile.getSkillDATS(ability), ability.getCooldown(), player)) { if (!mcMMOPlayer.getAbilityMode(ability) && cooldownOver(playerProfile.getSkillDATS(ability), ability.getCooldown(), player)) {
int ticks = PerksUtils.handleActivationPerks(player, 2 + (profile.getSkillLevel(type) / AdvancedConfig.getInstance().getAbilityLength()), ability.getMaxTicks()); int ticks = PerksUtils.handleActivationPerks(player, 2 + (playerProfile.getSkillLevel(type) / AdvancedConfig.getInstance().getAbilityLength()), ability.getMaxTicks());
ParticleEffectUtils.playAbilityEnabledEffect(player); ParticleEffectUtils.playAbilityEnabledEffect(player);
if (profile.useChatNotifications()) { if (mcMMOPlayer.useChatNotifications()) {
player.sendMessage(ability.getAbilityOn()); player.sendMessage(ability.getAbilityOn());
} }
SkillUtils.sendSkillMessage(player, ability.getAbilityPlayer(player)); SkillUtils.sendSkillMessage(player, ability.getAbilityPlayer(player));
profile.setSkillDATS(ability, System.currentTimeMillis() + (ticks * Misc.TIME_CONVERSION_FACTOR)); playerProfile.setSkillDATS(ability, System.currentTimeMillis() + (ticks * Misc.TIME_CONVERSION_FACTOR));
profile.setAbilityMode(ability, true); mcMMOPlayer.setAbilityMode(ability, true);
if (ability == AbilityType.BERSERK) { if (ability == AbilityType.BERSERK) {
player.setCanPickupItems(false); player.setCanPickupItems(false);
@ -514,14 +512,14 @@ public class SkillUtils {
} }
} }
PlayerProfile profile = UserManager.getPlayer(player).getProfile(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
int ticks = 0; int ticks = 0;
if (profile.getAbilityMode(AbilityType.SUPER_BREAKER)) { if (mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) {
ticks = ((int) (profile.getSkillDATS(AbilityType.SUPER_BREAKER) - System.currentTimeMillis())) / Misc.TIME_CONVERSION_FACTOR; ticks = ((int) (mcMMOPlayer.getProfile().getSkillDATS(AbilityType.SUPER_BREAKER) - System.currentTimeMillis())) / Misc.TIME_CONVERSION_FACTOR;
} }
else if (profile.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER)) { else if (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER)) {
ticks = ((int) (profile.getSkillDATS(AbilityType.GIGA_DRILL_BREAKER) - System.currentTimeMillis())) / Misc.TIME_CONVERSION_FACTOR; ticks = ((int) (mcMMOPlayer.getProfile().getSkillDATS(AbilityType.GIGA_DRILL_BREAKER) - System.currentTimeMillis())) / Misc.TIME_CONVERSION_FACTOR;
} }
PotionEffect abilityBuff = new PotionEffect(PotionEffectType.FAST_DIGGING, duration + ticks, amplifier + 10); PotionEffect abilityBuff = new PotionEffect(PotionEffectType.FAST_DIGGING, duration + ticks, amplifier + 10);