From 81d47173905b4ca774bc99346725d4d2007af677 Mon Sep 17 00:00:00 2001 From: drXor Date: Sun, 23 Feb 2014 16:16:59 -0400 Subject: [PATCH] Implement Silenceable Lightning API diff --git a/src/main/java/net/minecraft/server/EntityLightning.java b/src/main/java/net/minecraft/server/EntityLightning.java index 66402a0..0671659 100644 --- a/src/main/java/net/minecraft/server/EntityLightning.java +++ b/src/main/java/net/minecraft/server/EntityLightning.java @@ -13,6 +13,8 @@ public class EntityLightning extends EntityWeather { // CraftBukkit start public boolean isEffect = false; + public boolean isSilent = false; // Spigot + public EntityLightning(World world, double d0, double d1, double d2) { this(world, d0, d1, d2, false); } @@ -60,9 +62,17 @@ public class EntityLightning extends EntityWeather { } } + // Spigot start + public EntityLightning(World world, double d0, double d1, double d2, boolean isEffect, boolean isSilent) + { + this( world, d0, d1, d2, isEffect ); + this.isSilent = isSilent; + } + // Spigot end + public void h() { super.h(); - if (this.lifeTicks == 2) { + if (!isSilent && this.lifeTicks == 2) { // Spigot // CraftBukkit start - Use relative location for far away sounds //this.world.makeSound(this.locX, this.locY, this.locZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.random.nextFloat() * 0.2F); float pitch = 0.8F + this.random.nextFloat() * 0.2F; diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 92c9851..d9e3436 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -1361,6 +1361,22 @@ public class CraftWorld implements World { { CraftWorld.this.playEffect( location, effect, 0 ); } + + @Override + public LightningStrike strikeLightning(Location loc, boolean isSilent) + { + EntityLightning lightning = new EntityLightning( world, loc.getX(), loc.getY(), loc.getZ(), false, isSilent ); + world.strikeLightning( lightning ); + return new CraftLightningStrike( server, lightning ); + } + + @Override + public LightningStrike strikeLightningEffect(Location loc, boolean isSilent) + { + EntityLightning lightning = new EntityLightning( world, loc.getX(), loc.getY(), loc.getZ(), true, isSilent ); + world.strikeLightning( lightning ); + return new CraftLightningStrike( server, lightning ); + } }; public Spigot spigot() diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java index 64e346d..be4f10f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java @@ -1,7 +1,9 @@ package org.bukkit.craftbukkit.entity; import net.minecraft.server.EntityLightning; + import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.entity.Arrow; import org.bukkit.entity.EntityType; import org.bukkit.entity.LightningStrike; @@ -27,4 +29,22 @@ public class CraftLightningStrike extends CraftEntity implements LightningStrike public EntityType getType() { return EntityType.LIGHTNING; } + + // Spigot start + private final LightningStrike.Spigot spigot = new LightningStrike.Spigot() + { + + @Override + public boolean isSilent() + { + return getHandle().isSilent; + } + + }; + + public LightningStrike.Spigot spigot() + { + return this.spigot; + } + // Spigot end } -- 1.9.1