Files
Purpur/patches/server/0133-One-Punch-Man.patch
granny c9aee076fc Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@996d529 Resend entity using the bundle packet (#9853)
PaperMC/Paper@8cf2503 Updated Upstream (Bukkit/CraftBukkit) (#9876)
PaperMC/Paper@2935067 Fix null item in sendEquipmentChange (#9869)
PaperMC/Paper@b3cac04 Fix crash when version_history.json is empty (#9871)
PaperMC/Paper@b1faa5d Fix PotionAPI ignores icon flag (#9864)
PaperMC/Paper@52849f6 Cleanup disable explosion knockback patch (#9858)
PaperMC/Paper@8b1ac39 Fix warden spawn reason from DEFAULT to NATURAL (#8744)
PaperMC/Paper@c6fac38 fix UnsafeValues#loadAdvancement doesn't recalculate position (#9846)
PaperMC/Paper@5bdfb29 Add player idle duration API (#9833)
PaperMC/Paper@a81a384 Implement Velocity VarInt optimizations (#8418)
PaperMC/Paper@415d708 [ci skip] Fix author in last patch
PaperMC/Paper@3e4eaf2 [ci skip] Fix module derp
PaperMC/Paper@5bb30ce Fix entity camera not being reset when cancelling spectating start/stop events (#9883)
PaperMC/Paper@1865625 Fix NPE when no valid world is found on legacy Players (#9885)
2023-10-29 12:39:53 -07:00

52 lines
2.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Fourmisain <8464472+Fourmisain@users.noreply.github.com>
Date: Fri, 5 Mar 2021 17:42:35 -0500
Subject: [PATCH] One Punch Man!
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 704eccf1d65d650ce1f6709136c75133f9ef59be..9b33b879324278796447dbb5a880dd9e1ba0450b 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -2328,6 +2328,20 @@ public abstract class LivingEntity extends Entity implements Attackable {
}
}
+ // Purpur start
+ if (damagesource.getEntity() instanceof net.minecraft.world.entity.player.Player player && damagesource.getEntity().level().purpurConfig.creativeOnePunch) {
+ if (player.isCreative()) {
+ double attackDamage = 0;
+ for (AttributeModifier modifier : player.getMainHandItem().getAttributeModifiers(EquipmentSlot.MAINHAND).get(Attributes.ATTACK_DAMAGE)) {
+ attackDamage += modifier.getAmount();
+ }
+ if (attackDamage == 0) {
+ this.setHealth(0);
+ }
+ }
+ }
+ // Purpur end
+
if (f > 0 || !human) {
if (human) {
// PAIL: Be sure to drag all this code from the EntityHuman subclass each update.
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index 651448bc3b84686b675349f0e72c699ce506ab82..50d10795981069b031170ef0de3a50603541f1c8 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -344,6 +344,7 @@ public class PurpurWorldConfig {
public boolean teleportIfOutsideBorder = false;
public boolean totemOfUndyingWorksInInventory = false;
public boolean playerFixStuckPortal = false;
+ public boolean creativeOnePunch = false;
private void playerSettings() {
if (PurpurConfig.version < 19) {
boolean oldVal = getBoolean("gameplay-mechanics.player.idle-timeout.mods-target", idleTimeoutTargetPlayer);
@@ -360,6 +361,7 @@ public class PurpurWorldConfig {
teleportIfOutsideBorder = getBoolean("gameplay-mechanics.player.teleport-if-outside-border", teleportIfOutsideBorder);
totemOfUndyingWorksInInventory = getBoolean("gameplay-mechanics.player.totem-of-undying-works-in-inventory", totemOfUndyingWorksInInventory);
playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal);
+ creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch);
}
private static boolean projectileDespawnRateSettingsMigrated = false;