mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-01 12:41:50 +01:00
7c7f8b83ab
Use an optimized method to test if a block position meets a desired light level. This method benefits from returning as soon as the desired light level matches. Also Optimize Grass more
73 lines
3.7 KiB
Diff
73 lines
3.7 KiB
Diff
From 79f474e20de6c1d0267e736b5310a2054523816f Mon Sep 17 00:00:00 2001
|
|
From: Sudzzy <originmc@outlook.com>
|
|
Date: Wed, 2 Mar 2016 14:48:03 -0600
|
|
Subject: [PATCH] Disable explosion knockback
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index 78a1e59..6fce2b3 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -221,4 +221,9 @@ public class PaperWorldConfig {
|
|
lavaFlowSpeedNormal = getInt("lava-flow-speed.normal", 30);
|
|
lavaFlowSpeedNether = getInt("lava-flow-speed.nether", 10);
|
|
}
|
|
+
|
|
+ public boolean disableExplosionKnockback;
|
|
+ private void disableExplosionKnockback(){
|
|
+ disableExplosionKnockback = getBoolean("disable-explosion-knockback", false);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
index 8122cae..d24987b 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
@@ -854,12 +854,14 @@ public abstract class EntityLiving extends Entity {
|
|
}
|
|
}
|
|
|
|
+ boolean knockbackCancelled = world.paperConfig.disableExplosionKnockback && damagesource.isExplosion() && this instanceof EntityHuman; // Paper - Disable explosion knockback
|
|
if (flag1) {
|
|
if (flag) {
|
|
this.world.broadcastEntityEffect(this, (byte) 29);
|
|
} else if (damagesource instanceof EntityDamageSource && ((EntityDamageSource) damagesource).x()) {
|
|
this.world.broadcastEntityEffect(this, (byte) 33);
|
|
} else {
|
|
+ if (!knockbackCancelled) // Paper - Disable explosion knockback
|
|
this.world.broadcastEntityEffect(this, (byte) 2);
|
|
}
|
|
|
|
@@ -883,6 +885,8 @@ public abstract class EntityLiving extends Entity {
|
|
}
|
|
}
|
|
|
|
+ if (knockbackCancelled) this.world.broadcastEntityEffect(this, (byte) 2); // Paper - Disable explosion knockback
|
|
+
|
|
if (this.getHealth() <= 0.0F) {
|
|
SoundEffect soundeffect = this.bS();
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java
|
|
index 5bb2510..418ee29 100644
|
|
--- a/src/main/java/net/minecraft/server/Explosion.java
|
|
+++ b/src/main/java/net/minecraft/server/Explosion.java
|
|
@@ -145,7 +145,7 @@ public class Explosion {
|
|
double d14 = 1.0D;
|
|
|
|
if (entity instanceof EntityLiving) {
|
|
- d14 = EnchantmentProtection.a((EntityLiving) entity, d13);
|
|
+ d14 = entity instanceof EntityHuman && world.paperConfig.disableExplosionKnockback ? 0 : EnchantmentProtection.a((EntityLiving) entity, d13); // Paper - Disable explosion knockback
|
|
}
|
|
|
|
entity.motX += d8 * d14;
|
|
@@ -154,7 +154,7 @@ public class Explosion {
|
|
if (entity instanceof EntityHuman) {
|
|
EntityHuman entityhuman = (EntityHuman) entity;
|
|
|
|
- if (!entityhuman.isSpectator() && (!entityhuman.l_() || !entityhuman.abilities.isFlying)) {
|
|
+ if (!entityhuman.isSpectator() && (!entityhuman.l_() && !world.paperConfig.disableExplosionKnockback|| !entityhuman.abilities.isFlying)) { // Paper - Disable explosion knockback
|
|
this.k.put(entityhuman, new Vec3D(d8 * d13, d9 * d13, d10 * d13));
|
|
}
|
|
}
|
|
--
|
|
2.7.4
|
|
|