mirror of
https://github.com/PaperMC/Paper.git
synced 2024-08-21 20:02:55 +02:00
85 lines
4.9 KiB
Diff
85 lines
4.9 KiB
Diff
|
From 9562e7d3f00411e9426c18af31edd06e519a1ed3 Mon Sep 17 00:00:00 2001
|
||
|
From: Trigary <trigary0@gmail.com>
|
||
|
Date: Fri, 14 Sep 2018 17:42:08 +0200
|
||
|
Subject: [PATCH] Limit lightning strike effect distance
|
||
|
|
||
|
|
||
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||
|
index 93bf8c6d3..25246eac5 100644
|
||
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||
|
@@ -237,6 +237,30 @@ public class PaperWorldConfig {
|
||
|
skeleHorseSpawnChance = 0.01D; // Vanilla value
|
||
|
}
|
||
|
}
|
||
|
+
|
||
|
+ public double sqrMaxLightningSoundDistance;
|
||
|
+ public double sqrMaxLightningImpactSoundDistance;
|
||
|
+ public double maxLightningFlashDistance;
|
||
|
+ private void lightningStrikeDistanceLimit() {
|
||
|
+ sqrMaxLightningSoundDistance = getInt("lightning-strike-distance-limit.sound", -1);
|
||
|
+ if (sqrMaxLightningSoundDistance < 0) {
|
||
|
+ sqrMaxLightningSoundDistance = Double.MAX_VALUE;
|
||
|
+ } else {
|
||
|
+ sqrMaxLightningSoundDistance *= sqrMaxLightningSoundDistance;
|
||
|
+ }
|
||
|
+
|
||
|
+ sqrMaxLightningImpactSoundDistance = getInt("lightning-strike-distance-limit.impact-sound", -1);
|
||
|
+ if (sqrMaxLightningImpactSoundDistance < 0) {
|
||
|
+ sqrMaxLightningImpactSoundDistance = 32 * 32; //Vanilla value
|
||
|
+ } else {
|
||
|
+ sqrMaxLightningImpactSoundDistance *= sqrMaxLightningImpactSoundDistance;
|
||
|
+ }
|
||
|
+
|
||
|
+ maxLightningFlashDistance = getInt("lightning-strike-distance-limit.flash", -1);
|
||
|
+ if (maxLightningFlashDistance < 0) {
|
||
|
+ maxLightningFlashDistance = 512; // Vanilla value
|
||
|
+ }
|
||
|
+ }
|
||
|
|
||
|
public boolean firePhysicsEventForRedstone = false;
|
||
|
private void firePhysicsEventForRedstone() {
|
||
|
diff --git a/src/main/java/net/minecraft/server/EntityLightning.java b/src/main/java/net/minecraft/server/EntityLightning.java
|
||
|
index afbe43dd3..b7e88d346 100644
|
||
|
--- a/src/main/java/net/minecraft/server/EntityLightning.java
|
||
|
+++ b/src/main/java/net/minecraft/server/EntityLightning.java
|
||
|
@@ -60,6 +60,13 @@ public class EntityLightning extends EntityWeather {
|
||
|
double deltaX = this.locX - player.locX;
|
||
|
double deltaZ = this.locZ - player.locZ;
|
||
|
double distanceSquared = deltaX * deltaX + deltaZ * deltaZ;
|
||
|
+ // Paper start - Limit lightning strike effect distance
|
||
|
+ if (distanceSquared < this.world.paperConfig.sqrMaxLightningImpactSoundDistance) {
|
||
|
+ player.playerConnection.sendPacket(new PacketPlayOutNamedSoundEffect(SoundEffects.ENTITY_LIGHTNING_BOLT_IMPACT,
|
||
|
+ SoundCategory.WEATHER, this.locX, this.locY, this.locZ, 2.0f, 0.5F + this.random.nextFloat() * 0.2F));
|
||
|
+ }
|
||
|
+ if (distanceSquared > this.world.paperConfig.sqrMaxLightningSoundDistance) continue;
|
||
|
+ // Paper end
|
||
|
if (distanceSquared > viewDistance * viewDistance) {
|
||
|
double deltaLength = Math.sqrt(distanceSquared);
|
||
|
double relativeX = player.locX + (deltaX / deltaLength) * viewDistance;
|
||
|
@@ -70,7 +77,7 @@ public class EntityLightning extends EntityWeather {
|
||
|
}
|
||
|
}
|
||
|
// CraftBukkit end
|
||
|
- this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_LIGHTNING_BOLT_IMPACT, SoundCategory.WEATHER, 2.0F, 0.5F + this.random.nextFloat() * 0.2F);
|
||
|
+ //this.world.a((EntityHuman) null, this.locX, this.locY, this.locZ, SoundEffects.ENTITY_LIGHTNING_BOLT_IMPACT, SoundCategory.WEATHER, 2.0f, 0.5F + this.random.nextFloat() * 0.2F); // Paper - Limit lightning strike effect distance (the packet is now sent from inside the loop)
|
||
|
}
|
||
|
|
||
|
--this.lifeTicks;
|
||
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||
|
index 0a7648263..b41dc3a73 100644
|
||
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||
|
@@ -1087,7 +1087,7 @@ public class WorldServer extends World implements IAsyncTaskHandler {
|
||
|
}
|
||
|
// CraftBukkit end
|
||
|
if (super.strikeLightning(entity)) {
|
||
|
- this.server.getPlayerList().sendPacketNearby((EntityHuman) null, entity.locX, entity.locY, entity.locZ, 512.0D, this, new PacketPlayOutSpawnEntityWeather(entity)); // CraftBukkit - Use dimension, // Paper - use world instead of dimension
|
||
|
+ this.server.getPlayerList().sendPacketNearby((EntityHuman) null, entity.locX, entity.locY, entity.locZ, this.paperConfig.maxLightningFlashDistance, this, new PacketPlayOutSpawnEntityWeather(entity)); // CraftBukkit - Use dimension, // Paper - use world instead of dimension, limit lightning strike effect distance
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
--
|
||
|
2.19.0
|
||
|
|