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

79 lines
3.7 KiB
Diff
Raw Normal View History

2023-05-11 07:10:33 +10:00
From 359b4fd43131b83c94ca435824039883fd4716a5 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
2021-03-16 09:00:00 +11:00
diff --git a/src/main/java/net/minecraft/world/entity/EntityLightning.java b/src/main/java/net/minecraft/world/entity/EntityLightning.java
2023-05-11 07:10:33 +10:00
index 6cfecdd9b1..0d75880e0d 100644
2021-03-16 09:00:00 +11:00
--- a/src/main/java/net/minecraft/world/entity/EntityLightning.java
+++ b/src/main/java/net/minecraft/world/entity/EntityLightning.java
2022-12-08 03:00:00 +11:00
@@ -46,6 +46,7 @@ public class EntityLightning extends Entity {
2021-06-11 15:00:00 +10:00
private EntityPlayer cause;
private final Set<Entity> hitEntities = Sets.newHashSet();
private int blocksSetOnFire;
2014-04-12 14:18:37 +10:00
+ public boolean isSilent = false; // Spigot
2016-03-01 08:33:06 +11:00
2020-06-25 10:00:00 +10:00
public EntityLightning(EntityTypes<? extends EntityLightning> entitytypes, World world) {
super(entitytypes, world);
2022-12-08 03:00:00 +11:00
@@ -86,7 +87,7 @@ public class EntityLightning extends Entity {
2019-04-23 12:00:00 +10:00
@Override
2018-07-15 10:00:00 +10:00
public void tick() {
super.tick();
2021-06-11 15:00:00 +10:00
- if (this.life == 2) {
+ if (!isSilent && this.life == 2) { // Spigot
if (this.level.isClientSide()) {
2021-11-22 09:00:00 +11:00
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);
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
2023-05-11 07:10:33 +10:00
index e53b53fdc8..9aa39b9f57 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
2023-05-11 07:10:33 +10:00
@@ -1933,6 +1933,27 @@ public class CraftWorld extends CraftRegionAccessor implements World {
2018-07-15 10:00:00 +10:00
// Spigot start
2021-03-09 08:47:45 +11:00
private final org.bukkit.World.Spigot spigot = new org.bukkit.World.Spigot()
2018-07-15 10:00:00 +10:00
{
2014-04-12 14:18:37 +10:00
+
+ @Override
+ public LightningStrike strikeLightning(Location loc, boolean isSilent)
+ {
2021-11-22 09:00:00 +11:00
+ EntityLightning lightning = EntityTypes.LIGHTNING_BOLT.create( world );
+ lightning.moveTo( loc.getX(), loc.getY(), loc.getZ() );
2020-06-25 10:00:00 +10:00
+ lightning.isSilent = isSilent;
+ world.strikeLightning( lightning, LightningStrikeEvent.Cause.CUSTOM );
2020-06-25 10:00:00 +10:00
+ return (LightningStrike) lightning.getBukkitEntity();
2014-04-12 14:18:37 +10:00
+ }
+
+ @Override
+ public LightningStrike strikeLightningEffect(Location loc, boolean isSilent)
+ {
2021-11-22 09:00:00 +11:00
+ EntityLightning lightning = EntityTypes.LIGHTNING_BOLT.create( world );
+ lightning.moveTo( loc.getX(), loc.getY(), loc.getZ() );
2021-06-11 15:00:00 +10:00
+ lightning.visualOnly = true;
2020-06-25 10:00:00 +10:00
+ lightning.isSilent = isSilent;
+ world.strikeLightning( lightning, LightningStrikeEvent.Cause.CUSTOM );
2020-06-25 10:00:00 +10:00
+ return (LightningStrike) lightning.getBukkitEntity();
2014-04-12 14:18:37 +10:00
+ }
};
2021-03-09 08:47:45 +11:00
public org.bukkit.World.Spigot spigot()
2014-04-12 14:18:37 +10:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLightningStrike.java
2023-05-11 07:10:33 +10:00
index e63833dcda..8819f7684e 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
--
2023-05-11 07:10:33 +10:00
2.40.1
2014-04-12 14:18:37 +10:00