diff --git a/src/main/java/com/gmail/nossr50/listeners/HardcoreListener.java b/src/main/java/com/gmail/nossr50/listeners/HardcoreListener.java new file mode 100644 index 000000000..b8547239e --- /dev/null +++ b/src/main/java/com/gmail/nossr50/listeners/HardcoreListener.java @@ -0,0 +1,20 @@ +package com.gmail.nossr50.listeners; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.PlayerDeathEvent; + +import com.gmail.nossr50.util.Hardcore; +import com.gmail.nossr50.util.Permissions; + +public class HardcoreListener implements Listener { + + @EventHandler() + public void PlayerDeathEvent(PlayerDeathEvent event) { + Player player = event.getEntity(); //Note this returns a Player object for this subevent + if(!Permissions.getInstance().hardcoremodeBypass(player)) { + Hardcore.invokeStatPenalty(player); + } + } +} diff --git a/src/main/java/com/gmail/nossr50/util/Hardcore.java b/src/main/java/com/gmail/nossr50/util/Hardcore.java new file mode 100644 index 000000000..f84e6a477 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/util/Hardcore.java @@ -0,0 +1,27 @@ +package com.gmail.nossr50.util; + +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; + +import com.gmail.nossr50.config.Config; +import com.gmail.nossr50.datatypes.PlayerProfile; +import com.gmail.nossr50.datatypes.SkillType; + +public class Hardcore { + public static void invokeStatPenalty(Player player) { + PlayerProfile PP = Users.getProfile(player); + + for(SkillType st : SkillType.values()) { + if(st.equals(SkillType.ALL)) + continue; + int newValue = (int) (PP.getSkillLevel(st) / Config.getInstance().getHardcoreDeathStatPenaltyPercentage()); + + if(newValue < 0) + newValue = 0; + + PP.modifySkill(st, newValue); + } + + player.sendMessage(ChatColor.GOLD+"[mcMMO] "+ChatColor.DARK_RED+"You've suffered a penalty to your knowledge from death."); + } +} \ No newline at end of file