mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +01:00
Configurable damage tick when blocking with shield (#10877)
A long standing bug in spigot and its derivatives was the fact that players taking damage while blocking with a shield would not receive invulnerability, while they do in vanilla. This enabled the pvp technique of disabling a shield and immediately attacking again to knock a player into the air. While upstream fixed this and properly aligned itself with vanilla damage logic (in this specific case) changing such long standing behaviour has some downsides. To allow players used to this specific bug to still use it, this patch introduces a configuration option to re-introduce said bug. As there is no easy way to *only* re-add this bug, the option is found in the unsupported section as it may introduce other damage related disparity from vanilla.
This commit is contained in:
parent
87aea64a44
commit
cffcda2bc7
2 changed files with 21 additions and 0 deletions
|
@ -0,0 +1,19 @@
|
||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Bjarne Koll <git@lynxplay.dev>
|
||||||
|
Date: Thu, 13 Jun 2024 17:16:01 +0200
|
||||||
|
Subject: [PATCH] Configurable damage tick when blocking with shield
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||||
|
@@ -0,0 +0,0 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||||
|
CriteriaTriggers.PLAYER_HURT_ENTITY.trigger((ServerPlayer) damagesource.getEntity(), this, damagesource, originalDamage, f, true); // Paper - fix taken/dealt param order
|
||||||
|
}
|
||||||
|
|
||||||
|
- return true;
|
||||||
|
+ return !io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.skipVanillaDamageTickWhenShieldBlocked; // Paper - this should always return true, however expose an unsupported setting to flip this to false to enable "shield stunning".
|
||||||
|
} else {
|
||||||
|
return true; // Paper - return false ONLY if event was cancelled
|
||||||
|
}
|
|
@ -651,6 +651,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||||
+ public boolean performUsernameValidation = true;
|
+ public boolean performUsernameValidation = true;
|
||||||
+ @Comment("This setting controls if players should be able to create headless pistons.")
|
+ @Comment("This setting controls if players should be able to create headless pistons.")
|
||||||
+ public boolean allowHeadlessPistons = false;
|
+ public boolean allowHeadlessPistons = false;
|
||||||
|
+ @Comment("This setting controls if the vanilla damage tick should be skipped if damage was blocked via a shield.")
|
||||||
|
+ public boolean skipVanillaDamageTickWhenShieldBlocked = false;
|
||||||
+ @Comment("This setting controls what compression format is used for region files.")
|
+ @Comment("This setting controls what compression format is used for region files.")
|
||||||
+ public CompressionFormat compressionFormat = CompressionFormat.ZLIB;
|
+ public CompressionFormat compressionFormat = CompressionFormat.ZLIB;
|
||||||
+
|
+
|
||||||
|
|
Loading…
Reference in a new issue