geforkt von Mirrors/Paper
7a5a4fd400
This makes it easier for downstream projects (forks) to replace the version fetching system with their own. It is as simple as implementing an interface and overriding the default implementation of org.bukkit.UnsafeValues#getVersionFetcher() It also makes it easier for us to organize things like the version history feature. Lastly I have updated the paper implementation to check against the site API rather than against jenkins.
84 Zeilen
4.7 KiB
Diff
84 Zeilen
4.7 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 2c27be63e..fb44fccc9 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 adf68d165..fbcda86b3 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 Entity {
|
|
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 Entity {
|
|
}
|
|
}
|
|
// 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 9860175ec..9c4ef2e00 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 {
|
|
}
|
|
// CraftBukkit end
|
|
this.globalEntityList.add(entitylightning);
|
|
- this.server.getPlayerList().sendPacketNearby((EntityHuman) null, entitylightning.locX, entitylightning.locY, entitylightning.locZ, 512.0D, this, new PacketPlayOutSpawnEntityWeather(entitylightning)); // Paper - use world instead of dimension
|
|
+ this.server.getPlayerList().sendPacketNearby((EntityHuman) null, entitylightning.locX, entitylightning.locY, entitylightning.locZ, paperConfig.maxLightningFlashDistance, this, new PacketPlayOutSpawnEntityWeather(entitylightning)); // Paper - use world instead of dimension, limit lightning strike effect distance
|
|
}
|
|
|
|
@Override
|
|
--
|