From 94fc60328ebb8efe82bade3c1693d51852bc4b0b Mon Sep 17 00:00:00 2001 From: drXor <mcyoungsota@gmail.com> Date: Sun, 23 Feb 2014 16:16:59 -0400 Subject: [PATCH] Implement Silenceable Lightning API diff --git a/src/main/java/net/minecraft/world/entity/EntityLightning.java b/src/main/java/net/minecraft/world/entity/EntityLightning.java index 95985a722..9170b85e3 100644 --- a/src/main/java/net/minecraft/world/entity/EntityLightning.java +++ b/src/main/java/net/minecraft/world/entity/EntityLightning.java @@ -48,6 +48,7 @@ public class EntityLightning extends Entity { private EntityPlayer cause; private final Set<Entity> hitEntities = Sets.newHashSet(); private int blocksSetOnFire; + public boolean isSilent = false; // Spigot public EntityLightning(EntityTypes<? extends EntityLightning> entitytypes, World world) { super(entitytypes, world); @@ -88,7 +89,7 @@ public class EntityLightning extends Entity { @Override public void tick() { super.tick(); - if (this.life == 2) { + if (!isSilent && this.life == 2) { // Spigot if (this.level.isClientSide()) { this.level.playLocalSound(this.getX(), this.getY(), this.getZ(), SoundEffects.LIGHTNING_BOLT_THUNDER, SoundCategory.WEATHER, 10000.0F, 0.8F + this.random.nextFloat() * 0.2F, false); this.level.playLocalSound(this.getX(), this.getY(), this.getZ(), SoundEffects.LIGHTNING_BOLT_IMPACT, SoundCategory.WEATHER, 2.0F, 0.5F + this.random.nextFloat() * 0.2F, false); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 6912ece1e..ba8c02f65 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -1921,6 +1921,26 @@ public class CraftWorld extends CraftRegionAccessor implements World { // Spigot start private final org.bukkit.World.Spigot spigot = new org.bukkit.World.Spigot() { + + @Override + public LightningStrike strikeLightning(Location loc, boolean isSilent) + { + EntityLightning lightning = EntityTypes.LIGHTNING_BOLT.create( world ); + lightning.moveTo( loc.getX(), loc.getY(), loc.getZ() ); + lightning.isSilent = isSilent; + world.strikeLightning( lightning ); + return (LightningStrike) lightning.getBukkitEntity(); + } + + @Override + public LightningStrike strikeLightningEffect(Location loc, boolean isSilent) + { + EntityLightning lightning = EntityTypes.LIGHTNING_BOLT.create( world ); + lightning.moveTo( loc.getX(), loc.getY(), loc.getZ() ); + lightning.visualOnly = true; + lightning.isSilent = isSilent; + return (LightningStrike) lightning.getBukkitEntity(); + } }; public org.bukkit.World.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 e63833dcd..8819f7684 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java @@ -33,6 +33,11 @@ public class CraftLightningStrike extends CraftEntity implements LightningStrike // Spigot start private final LightningStrike.Spigot spigot = new LightningStrike.Spigot() { + @Override + public boolean isSilent() + { + return getHandle().isSilent; + } }; @Override -- 2.34.1