spigot/CraftBukkit-Patches/0062-Implement-Silenceable-Lightning-API.patch
2018-07-22 12:00:00 +10:00

88 lines
3.6 KiB
Diff

From 8d560f4efa523d049243d3b8d252498c49a0ddf9 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/server/EntityLightning.java b/src/main/java/net/minecraft/server/EntityLightning.java
index e69d6cf55..afbe43dd3 100644
--- a/src/main/java/net/minecraft/server/EntityLightning.java
+++ b/src/main/java/net/minecraft/server/EntityLightning.java
@@ -15,6 +15,7 @@ public class EntityLightning extends EntityWeather {
@Nullable
private EntityPlayer e;
public boolean isEffect; // CraftBukkit
+ public boolean isSilent = false; // Spigot
public EntityLightning(World world, double d0, double d1, double d2, boolean flag) {
super(EntityTypes.LIGHTNING_BOLT, world);
@@ -32,6 +33,14 @@ 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 SoundCategory bV() {
return SoundCategory.WEATHER;
}
@@ -42,7 +51,7 @@ public class EntityLightning extends EntityWeather {
public void tick() {
super.tick();
- if (this.lifeTicks == 2) {
+ if (!isSilent && this.lifeTicks == 2) { // Spigot
// CraftBukkit start - Use relative location for far away sounds
// this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_LIGHTNING_BOLT_THUNDER, SoundCategory.WEATHER, 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 1834fae6c..a5dd39348 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1590,6 +1590,22 @@ public class CraftWorld implements World {
// Spigot start
private final Spigot spigot = new Spigot()
{
+
+ @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 194d830e1..ddd5ccd58 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java
@@ -31,6 +31,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.17.1