瀏覽代碼

New api event

T00thpick1 12 年之前
父節點
當前提交
de12970486

+ 32 - 0
src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityActivateEvent.java

@@ -0,0 +1,32 @@
+package com.gmail.nossr50.events.skills.abilities;
+
+import org.bukkit.entity.Player;
+
+import com.gmail.nossr50.datatypes.skills.AbilityType;
+import com.gmail.nossr50.datatypes.skills.SkillType;
+import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent;
+
+public class McMMOPlayerAbilityActivateEvent extends McMMOPlayerSkillEvent {
+
+    private AbilityType abilityType;
+    private boolean cancelled;
+
+    public McMMOPlayerAbilityActivateEvent(Player player, SkillType skill) {
+        super(player, skill);
+        abilityType = skill.getAbility();
+        cancelled = false;
+    }
+    
+    public AbilityType getAbilityType() {
+        return abilityType;
+    }
+
+    public boolean isCancelled() {
+        return cancelled;
+    }
+    
+    public void setCancelled(boolean value) {
+        this.cancelled = value;
+    }
+
+}

+ 8 - 0
src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java

@@ -30,6 +30,7 @@ import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent;
 import com.gmail.nossr50.events.fake.FakeBlockBreakEvent;
 import com.gmail.nossr50.events.fake.FakeBlockBreakEvent;
 import com.gmail.nossr50.events.fake.FakeBlockDamageEvent;
 import com.gmail.nossr50.events.fake.FakeBlockDamageEvent;
 import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
 import com.gmail.nossr50.events.fake.FakePlayerAnimationEvent;
+import com.gmail.nossr50.events.skills.abilities.McMMOPlayerAbilityActivateEvent;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.locale.LocaleLoader;
 import com.gmail.nossr50.runnables.skills.AbilityDisableTask;
 import com.gmail.nossr50.runnables.skills.AbilityDisableTask;
 import com.gmail.nossr50.runnables.skills.ToolLowerTask;
 import com.gmail.nossr50.runnables.skills.ToolLowerTask;
@@ -329,6 +330,13 @@ public class SkillUtils {
         }
         }
 
 
         if (!mcMMOPlayer.getAbilityMode(ability) && cooldownOver(playerProfile.getSkillDATS(ability), ability.getCooldown(), player)) {
         if (!mcMMOPlayer.getAbilityMode(ability) && cooldownOver(playerProfile.getSkillDATS(ability), ability.getCooldown(), player)) {
+            McMMOPlayerAbilityActivateEvent event = new McMMOPlayerAbilityActivateEvent(player, type);
+            mcMMO.p.getServer().getPluginManager().callEvent(event);
+            
+            if (event.isCancelled()) {
+                return;
+            }
+            
             int ticks = PerksUtils.handleActivationPerks(player, 2 + (playerProfile.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);