From 1f53c62ced7ac39c0ec929e30b807c85793dc759 Mon Sep 17 00:00:00 2001 From: TfT_02 Date: Wed, 7 Aug 2013 01:21:52 +0200 Subject: [PATCH] Added McMMOPlayerDeathPenaltyEvent Called when a player dies and mcMMO tries to invoke Hardcore mode or Vampirism --- Changelog.txt | 1 + .../McMMOPlayerDeathPenaltyEvent.java | 38 +++++++++++++++++++ .../gmail/nossr50/util/HardcoreManager.java | 16 ++++++++ 3 files changed, 55 insertions(+) create mode 100644 src/main/java/com/gmail/nossr50/events/hardcore/McMMOPlayerDeathPenaltyEvent.java diff --git a/Changelog.txt b/Changelog.txt index bfb854c6d..29b843aff 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -12,6 +12,7 @@ Version 1.4.07-dev + Added new experience curve option. Cumulative curve, calculates experience needed for next level using power level. + Added extra settings to config.yml for Call of the Wild (Taming) + Added a 5 cooldown after teleporting before Acrobatics XP can be earned. + Config option to disable + + Added new McMMOPlayerDeathPenaltyEvent, fired when a player dies and would lose levels = 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. = Fixed a bug with Beast Lore when the entity had no owner but was tamed. diff --git a/src/main/java/com/gmail/nossr50/events/hardcore/McMMOPlayerDeathPenaltyEvent.java b/src/main/java/com/gmail/nossr50/events/hardcore/McMMOPlayerDeathPenaltyEvent.java new file mode 100644 index 000000000..5b3b1838d --- /dev/null +++ b/src/main/java/com/gmail/nossr50/events/hardcore/McMMOPlayerDeathPenaltyEvent.java @@ -0,0 +1,38 @@ +package com.gmail.nossr50.events.hardcore; + +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; + +public class McMMOPlayerDeathPenaltyEvent extends PlayerEvent implements Cancellable { + private boolean cancelled; + + public McMMOPlayerDeathPenaltyEvent(Player player) { + super(player); + this.cancelled = false; + } + + /** Following are required for Cancellable **/ + @Override + public boolean isCancelled() { + return cancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + /** Rest of file is required boilerplate for custom events **/ + private static final HandlerList handlers = new HandlerList(); + + @Override + public HandlerList getHandlers() { + return handlers; + } + + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/src/main/java/com/gmail/nossr50/util/HardcoreManager.java b/src/main/java/com/gmail/nossr50/util/HardcoreManager.java index cebc27388..6fc3b3fa9 100644 --- a/src/main/java/com/gmail/nossr50/util/HardcoreManager.java +++ b/src/main/java/com/gmail/nossr50/util/HardcoreManager.java @@ -2,9 +2,11 @@ package com.gmail.nossr50.util; import org.bukkit.entity.Player; +import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.events.hardcore.McMMOPlayerDeathPenaltyEvent; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.player.UserManager; @@ -18,6 +20,13 @@ public final class HardcoreManager { return; } + McMMOPlayerDeathPenaltyEvent eventToFire = new McMMOPlayerDeathPenaltyEvent(player); + mcMMO.p.getServer().getPluginManager().callEvent(eventToFire); + + if (eventToFire.isCancelled()) { + return; + } + PlayerProfile playerProfile = UserManager.getPlayer(player).getProfile(); int totalLost = 0; @@ -44,6 +53,13 @@ public final class HardcoreManager { return; } + McMMOPlayerDeathPenaltyEvent eventToFire = new McMMOPlayerDeathPenaltyEvent(victim); + mcMMO.p.getServer().getPluginManager().callEvent(eventToFire); + + if (eventToFire.isCancelled()) { + return; + } + PlayerProfile killerProfile = UserManager.getPlayer(killer).getProfile(); PlayerProfile victimProfile = UserManager.getPlayer(victim).getProfile(); int totalStolen = 0;