From 956bf2d7632e7304fa4d0ae9a2b7cc9953e2822a Mon Sep 17 00:00:00 2001 From: TfT_02 Date: Fri, 23 Aug 2013 17:49:56 +0200 Subject: [PATCH] Added McMMOPlayerLevelDownEvent and McMMOPlayerLevelChangeEvent --- Changelog.txt | 2 ++ .../commands/experience/MmoeditCommand.java | 14 ++++++-- .../experience/SkillresetCommand.java | 4 +-- .../McMMOPlayerLevelChangeEvent.java | 15 ++++++++ .../experience/McMMOPlayerLevelDownEvent.java | 36 +++++++++++++++++++ .../experience/McMMOPlayerLevelUpEvent.java | 2 +- 6 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java create mode 100644 src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java diff --git a/Changelog.txt b/Changelog.txt index 576b67e01..815e0103a 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -17,6 +17,8 @@ Version 1.4.07-dev + Added a 5 second cooldown after teleporting before Acrobatics XP can be earned. + Config option to disable + Added new API methods to ExperienceAPI to get a players rank on the leaderboards + Added new McMMOPlayerDeathPenaltyEvent, fired when a player dies and would lose levels + + Added new McMMOPlayerLevelChangeEvent, fired when a players level changes + + Added new McMMOPlayerLevelDownEvent, fired when a player loses levels = Fixed bug which allowed players to bypass fishing's exploit prevention = Fixed bug with Skull Splitter not finding the locale string = Fixed issue where locale strings could cause the scoreboard header to be longer than 16 characters. diff --git a/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java index 929c11143..10e01e8d7 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java @@ -4,6 +4,7 @@ import org.bukkit.command.CommandSender; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.events.experience.McMMOPlayerLevelDownEvent; import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; @@ -24,8 +25,17 @@ public class MmoeditCommand extends ExperienceCommand { protected void handleCommand(SkillType skill) { profile.modifySkill(skill, value); - if (player != null) { - mcMMO.p.getServer().getPluginManager().callEvent(new McMMOPlayerLevelUpEvent(player, skill, value - profile.getSkillLevel(skill))); + if (player == null) { + return; + } + + int skillLevel = profile.getSkillLevel(skill); + + if (value > skillLevel) { + mcMMO.p.getServer().getPluginManager().callEvent(new McMMOPlayerLevelUpEvent(player, skill, value - skillLevel)); + } + else if (value < skillLevel) { + mcMMO.p.getServer().getPluginManager().callEvent(new McMMOPlayerLevelDownEvent(player, skill, skillLevel - value)); } } diff --git a/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java index c1313ca32..ebbea6a6b 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java @@ -6,7 +6,7 @@ import org.bukkit.entity.Player; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.skills.SkillType; -import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent; +import com.gmail.nossr50.events.experience.McMMOPlayerLevelDownEvent; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; @@ -106,7 +106,7 @@ public class SkillresetCommand extends ExperienceCommand { profile.modifySkill(skill, 0); if (player != null) { - mcMMO.p.getServer().getPluginManager().callEvent(new McMMOPlayerLevelUpEvent(player, skill, 0 - profile.getSkillLevel(skill))); + mcMMO.p.getServer().getPluginManager().callEvent(new McMMOPlayerLevelDownEvent(player, skill, profile.getSkillLevel(skill))); } } diff --git a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java new file mode 100644 index 000000000..9a5439667 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java @@ -0,0 +1,15 @@ +package com.gmail.nossr50.events.experience; + +import org.bukkit.entity.Player; + +import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.mcMMO; + +/** + * Called when a user levels change + */ +public abstract class McMMOPlayerLevelChangeEvent extends McMMOPlayerExperienceEvent { + public McMMOPlayerLevelChangeEvent(Player player, SkillType skill) { + super(player, skill); + } +} diff --git a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java new file mode 100644 index 000000000..3f5198954 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java @@ -0,0 +1,36 @@ +package com.gmail.nossr50.events.experience; + +import org.bukkit.entity.Player; + +import com.gmail.nossr50.datatypes.skills.SkillType; + +/** + * Called when a user loses levels in a skill + */ +public class McMMOPlayerLevelDownEvent extends McMMOPlayerLevelChangeEvent { + private int levelsLost; + + public McMMOPlayerLevelDownEvent(Player player, SkillType skill) { + super(player, skill); + this.levelsLost = 1; + } + + public McMMOPlayerLevelDownEvent(Player player, SkillType skill, int levelsLost) { + super(player, skill); + this.levelsLost = levelsLost; + } + + /** + * @param levelsLost Set the number of levels lost in this event + */ + public void setLevelsLost(int levelsLost) { + this.levelsLost = levelsLost; + } + + /** + * @return The number of levels lost in this event + */ + public int getLevelsLost() { + return levelsLost; + } +} diff --git a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java index 244ffb297..2e3deb1d6 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java @@ -7,7 +7,7 @@ import com.gmail.nossr50.datatypes.skills.SkillType; /** * Called when a user levels up in a skill */ -public class McMMOPlayerLevelUpEvent extends McMMOPlayerExperienceEvent { +public class McMMOPlayerLevelUpEvent extends McMMOPlayerLevelChangeEvent { private int levelsGained; public McMMOPlayerLevelUpEvent(Player player, SkillType skill) {