spigot/CraftBukkit-Patches/0051-Implement-Silenceable-Lightning-API.patch

89 lines
3.6 KiB
Diff
Raw Normal View History

2020-06-06 19:28:03 +10:00
From 4fbd32bca84cbaeb5ea2be7f74bbfd7a3839d4c5 Mon Sep 17 00:00:00 2001
2014-04-12 14:18:37 +10:00
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
2019-12-22 10:00:03 +11:00
index c074d7a40..7c518983a 100644
2014-04-12 14:18:37 +10:00
--- a/src/main/java/net/minecraft/server/EntityLightning.java
+++ b/src/main/java/net/minecraft/server/EntityLightning.java
2019-04-23 12:00:00 +10:00
@@ -16,6 +16,7 @@ public class EntityLightning extends Entity {
2018-07-15 10:00:00 +10:00
@Nullable
2019-04-23 12:00:00 +10:00
private EntityPlayer f;
2016-03-01 08:33:06 +11:00
public boolean isEffect; // CraftBukkit
2014-04-12 14:18:37 +10:00
+ public boolean isSilent = false; // Spigot
2016-03-01 08:33:06 +11:00
public EntityLightning(World world, double d0, double d1, double d2, boolean flag) {
2018-07-15 10:00:00 +10:00
super(EntityTypes.LIGHTNING_BOLT, world);
2019-04-23 12:00:00 +10:00
@@ -34,6 +35,14 @@ public class EntityLightning extends Entity {
2016-03-01 08:33:06 +11:00
2014-04-12 14:18:37 +10:00
}
+ // 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;
2016-03-01 08:33:06 +11:00
+ }
2014-04-12 14:18:37 +10:00
+ // Spigot end
2016-03-01 08:33:06 +11:00
+
2019-04-23 12:00:00 +10:00
@Override
public SoundCategory getSoundCategory() {
2016-03-01 08:33:06 +11:00
return SoundCategory.WEATHER;
2019-04-23 12:00:00 +10:00
@@ -46,7 +55,7 @@ public class EntityLightning extends Entity {
@Override
2018-07-15 10:00:00 +10:00
public void tick() {
super.tick();
2014-04-12 14:18:37 +10:00
- if (this.lifeTicks == 2) {
+ if (!isSilent && this.lifeTicks == 2) { // Spigot
2014-07-20 00:27:03 +01:00
// CraftBukkit start - Use relative location for far away sounds
2019-12-11 09:00:00 +11:00
// this.world.playSound((EntityHuman) null, this.locX(), this.locY(), this.locZ(), SoundEffects.ENTITY_LIGHTNING_BOLT_THUNDER, SoundCategory.WEATHER, 10000.0F, 0.8F + this.random.nextFloat() * 0.2F);
2014-07-20 00:27:03 +01:00
float pitch = 0.8F + this.random.nextFloat() * 0.2F;
2014-04-12 14:18:37 +10:00
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
2020-06-06 19:28:03 +10:00
index 7aefdbc9a..1e4f45ef7 100644
2014-04-12 14:18:37 +10:00
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
2020-06-06 19:28:03 +10:00
@@ -2303,6 +2303,22 @@ public class CraftWorld implements World {
2018-07-15 10:00:00 +10:00
// Spigot start
private final Spigot spigot = new Spigot()
{
2014-04-12 14:18:37 +10:00
+
+ @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
2019-12-22 10:00:03 +11:00
index 1d4ba473a..e41de11c1 100644
2014-04-12 14:18:37 +10:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java
2019-04-28 11:41:06 +10:00
@@ -33,6 +33,11 @@ public class CraftLightningStrike extends CraftEntity implements LightningStrike
// Spigot start
private final LightningStrike.Spigot spigot = new LightningStrike.Spigot() {
2016-11-17 12:41:12 +11:00
2014-04-12 14:18:37 +10:00
+ @Override
+ public boolean isSilent()
+ {
+ return getHandle().isSilent;
+ }
};
2016-11-17 12:41:12 +11:00
@Override
2014-04-12 14:18:37 +10:00
--
2.25.1
2014-04-12 14:18:37 +10:00