papermc/CraftBukkit-Patches/0111-Implement-Silenceable-Lightning-API.patch
2014-03-10 08:37:28 +11:00

105 lines
3.8 KiB
Diff

From 70e8bd8516a104cbcd2c7c4113b537ef384d0b79 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 36923bb..ae8753f 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);
}
@@ -61,9 +63,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
this.world.makeSound(this.locX, this.locY, this.locZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.random.nextFloat() * 0.2F);
this.world.makeSound(this.locX, this.locY, this.locZ, "random.explode", 2.0F, 0.5F + 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 948e81d..ab87519 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -1326,6 +1326,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.8.3.2