ソースを参照

Only play ability effects if there's room above the player.

GJ 12 年 前
コミット
76cf0ebb01

+ 21 - 2
src/main/java/com/gmail/nossr50/util/skills/ParticleEffectUtils.java

@@ -7,6 +7,7 @@ import org.bukkit.FireworkEffect.Type;
 import org.bukkit.Location;
 import org.bukkit.Location;
 import org.bukkit.Material;
 import org.bukkit.Material;
 import org.bukkit.World;
 import org.bukkit.World;
+import org.bukkit.block.Block;
 import org.bukkit.block.BlockFace;
 import org.bukkit.block.BlockFace;
 import org.bukkit.entity.EntityType;
 import org.bukkit.entity.EntityType;
 import org.bukkit.entity.Firework;
 import org.bukkit.entity.Firework;
@@ -63,7 +64,9 @@ public final class ParticleEffectUtils {
             return;
             return;
         }
         }
 
 
-        fireworkParticleShower(player, Color.GREEN);
+        if (hasHeadRoom(player)) {
+            fireworkParticleShower(player, Color.GREEN);
+        }
     }
     }
 
 
     public static void playAbilityDisabledEffect(Player player) {
     public static void playAbilityDisabledEffect(Player player) {
@@ -71,7 +74,9 @@ public final class ParticleEffectUtils {
             return;
             return;
         }
         }
 
 
-        fireworkParticleShower(player, Color.RED);
+        if (hasHeadRoom(player)) {
+            fireworkParticleShower(player, Color.RED);
+        }
     }
     }
 
 
     public static void runescapeModeCelebration(Player player, SkillType skill) {
     public static void runescapeModeCelebration(Player player, SkillType skill) {
@@ -91,4 +96,18 @@ public final class ParticleEffectUtils {
         fireworkMeta.setPower(0);
         fireworkMeta.setPower(0);
         firework.setFireworkMeta(fireworkMeta);
         firework.setFireworkMeta(fireworkMeta);
     }
     }
+
+    private static boolean hasHeadRoom(Player player) {
+        boolean hasHeadRoom = true;
+        Block headBlock = player.getEyeLocation().getBlock();
+
+        for (int i = 0; i < 3; i++) {
+            if (!headBlock.getRelative(BlockFace.UP, i).isEmpty()) {
+                hasHeadRoom = false;
+                break;
+            }
+        }
+
+        return hasHeadRoom;
+    }
 }
 }