瀏覽代碼

Moved more of the Staves checks into Staves.java, rather than the
mcEntityListener.

GJ 13 年之前
父節點
當前提交
45974d2a19

+ 1 - 23
src/main/java/com/gmail/nossr50/listeners/mcEntityListener.java

@@ -5,7 +5,6 @@ import org.bukkit.entity.Entity;
 import org.bukkit.entity.EntityType;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
-import org.bukkit.entity.Projectile;
 import org.bukkit.entity.TNTPrimed;
 import org.bukkit.entity.Wolf;
 import org.bukkit.event.EventHandler;
@@ -81,28 +80,7 @@ public class mcEntityListener implements Listener {
 
             if (!m.isInvincible(livingDefender, event)) {
                 Combat.combatChecks(event, plugin);
-            }
-
-            if (attacker.hasMetadata("mcmmoFiredFromStaff")) {
-                event.setDamage(0);
-
-                Projectile projectile = (Projectile) attacker;
-                Player shooter = (Player) projectile.getShooter();
-
-                switch (attacker.getType()) {
-                case EGG:
-                    Staves.eggEffect(livingDefender, shooter);
-                    break;
-
-                case FIREBALL:
-                    break;
-
-                case SNOWBALL:
-                    break;
-
-                default:
-                    break;
-                }
+                Staves.altFireCheck(event);
             }
         }
     }

+ 57 - 1
src/main/java/com/gmail/nossr50/skills/Staves.java

@@ -4,11 +4,13 @@ import java.util.Collection;
 
 import org.bukkit.Material;
 import org.bukkit.entity.Egg;
+import org.bukkit.entity.EntityType;
 import org.bukkit.entity.Fireball;
 import org.bukkit.entity.LivingEntity;
 import org.bukkit.entity.Player;
 import org.bukkit.entity.Projectile;
 import org.bukkit.entity.Snowball;
+import org.bukkit.event.entity.EntityDamageByEntityEvent;
 import org.bukkit.metadata.FixedMetadataValue;
 import org.bukkit.potion.PotionEffect;
 import org.bukkit.potion.PotionEffectType;
@@ -17,7 +19,36 @@ import com.gmail.nossr50.mcMMO;
 import com.gmail.nossr50.party.Party;
 
 public class Staves {
+
+    public static void altFireCheck(EntityDamageByEntityEvent event) {
+        LivingEntity defender = (LivingEntity) event.getEntity();
+        Projectile attacker = (Projectile) event.getDamager();
+
+        if (attacker.hasMetadata("mcmmoFiredFromStaff")) {
+            event.setDamage(0);
+
+            Projectile projectile = (Projectile) attacker;
+            Player shooter = (Player) projectile.getShooter();
+
+            switch (attacker.getType()) {
+            case EGG:
+                eggEffect(defender, shooter);
+                break;
+
+            case FIREBALL:
+                break;
+
+            case SNOWBALL:
+                if (defender.getType().equals(EntityType.PLAYER)) {
+                    snowballEffect((Player) defender, shooter);
+                }
+                break;
     
+            default:
+                break;
+            }
+        }
+    }
 
     /**
      * Fire a projectile on alt-fire from a staff.
@@ -55,7 +86,7 @@ public class Staves {
      * @param target Entity hit by the projectile
      * @param shooter Player who fired the projectile
      */
-    public static void eggEffect(LivingEntity target, Player shooter) {
+    private static void eggEffect(LivingEntity target, Player shooter) {
         final int TICKS_PER_SECOND = 20;
         final int MAX_SLOW_DURATION_SECONDS = 240;
         final int MAX_SPEED_DURATION_SECONDS = 800;
@@ -97,6 +128,21 @@ public class Staves {
         }
     }
 
+    /**
+     * Handle the effects of the Bone's projectile.
+     *
+     * @param target Entity hit by the projectile
+     * @param shooter Player who fired the projectile
+     */
+    private static void snowballEffect(Player target, Player shooter) {
+        if (Party.getInstance().inSameParty(target, shooter)) {
+            
+        }
+        else {
+            
+        }
+    }
+
     private static int durationCalulate() {
         //TODO: Calculate duration based off time held
         return 80;
@@ -106,4 +152,14 @@ public class Staves {
         //TODO: Calculate amplifier based off skill level
         return 10;
     }
+
+    private static int levelLossCalculate() {
+        //TODO: Calculate levels lost based on time held
+        return 2;
+    }
+
+    private static int levelGainCalculate() {
+        //TODO: Calculate levels gained based on skill level
+        return 1;
+    }
 }