geforkt von Mirrors/Paper
84c81146c1
Portion of diff was dropped in the mappings update commit. Also remove the option to remove invalid statistics. The server will automatically do this now as of... 1.13?, our option wasn't even doing anything.
84 Zeilen
4.8 KiB
Diff
84 Zeilen
4.8 KiB
Diff
From 0000000000000000000000000000000000000000 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 94c544714..48920b045 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -0,0 +0,0 @@ public class PaperWorldConfig {
|
|
skeleHorseSpawnChance = 0.01D; // Vanilla value
|
|
}
|
|
}
|
|
+
|
|
+ public double sqrMaxThunderDistance;
|
|
+ public double sqrMaxLightningImpactSoundDistance;
|
|
+ public double maxLightningFlashDistance;
|
|
+ private void lightningStrikeDistanceLimit() {
|
|
+ sqrMaxThunderDistance = getInt("lightning-strike-distance-limit.sound", -1);
|
|
+ if (sqrMaxThunderDistance > 0) {
|
|
+ sqrMaxThunderDistance *= sqrMaxThunderDistance;
|
|
+ }
|
|
+
|
|
+ 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..d732be52e 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLightning.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLightning.java
|
|
@@ -0,0 +0,0 @@ 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 (world.paperConfig.sqrMaxThunderDistance != -1 && distanceSquared >= world.paperConfig.sqrMaxThunderDistance) {
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ // Paper end
|
|
if (distanceSquared > viewDistance * viewDistance) {
|
|
double deltaLength = Math.sqrt(distanceSquared);
|
|
double relativeX = player.locX + (deltaX / deltaLength) * viewDistance;
|
|
@@ -0,0 +0,0 @@ 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 af68074c1..899c7f5f7 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -0,0 +0,0 @@ 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;
|
|
--
|