2f782a6652
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: 17543ecf SPIGOT-5035: Error Using Virtual Merchant GUI 0fc6922b SPIGOT-5028: Villager#setVillagerExperience() doesn't work bdbdbe44 SPIGOT-5024: Fox error - Unknown target reason
73 lines
3.7 KiB
Diff
73 lines
3.7 KiB
Diff
From 80b4651cd69d232159b0564f23477d163709ca67 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 a5ec0bc0e0..6a307d5dd6 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -151,4 +151,9 @@ public class PaperWorldConfig {
|
|
optimizeExplosions = getBoolean("optimize-explosions", false);
|
|
log("Optimize explosions: " + optimizeExplosions);
|
|
}
|
|
+
|
|
+ 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 678dae6dae..061f708aea 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
@@ -1118,6 +1118,7 @@ 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);
|
|
@@ -1136,6 +1137,7 @@ public abstract class EntityLiving extends Entity {
|
|
b0 = 2;
|
|
}
|
|
|
|
+ if (!knockbackCancelled) // Paper - Disable explosion knockback
|
|
this.world.broadcastEntityEffect(this, b0);
|
|
}
|
|
|
|
@@ -1159,6 +1161,8 @@ public abstract class EntityLiving extends Entity {
|
|
}
|
|
}
|
|
|
|
+ if (knockbackCancelled) this.world.broadcastEntityEffect(this, (byte) 2); // Paper - Disable explosion knockback
|
|
+
|
|
if (this.getHealth() <= 0.0F) {
|
|
if (!this.f(damagesource)) {
|
|
SoundEffect soundeffect = this.getSoundDeath();
|
|
diff --git a/src/main/java/net/minecraft/server/Explosion.java b/src/main/java/net/minecraft/server/Explosion.java
|
|
index bcff117619..6eeff4ce59 100644
|
|
--- a/src/main/java/net/minecraft/server/Explosion.java
|
|
+++ b/src/main/java/net/minecraft/server/Explosion.java
|
|
@@ -188,14 +188,14 @@ public class Explosion {
|
|
double d14 = d13;
|
|
|
|
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.setMot(entity.getMot().add(d8 * d14, d9 * d14, d10 * d14));
|
|
if (entity instanceof EntityHuman) {
|
|
EntityHuman entityhuman = (EntityHuman) entity;
|
|
|
|
- if (!entityhuman.isSpectator() && (!entityhuman.isCreative() || !entityhuman.abilities.isFlying)) {
|
|
+ if (!entityhuman.isSpectator() && (!entityhuman.isCreative() && !world.paperConfig.disableExplosionKnockback || !entityhuman.abilities.isFlying)) { // Paper - Disable explosion knockback
|
|
this.l.put(entityhuman, new Vec3D(d8 * d13, d9 * d13, d10 * d13));
|
|
}
|
|
}
|
|
--
|
|
2.21.0
|
|
|