Files
Purpur/patches/server/0161-Config-for-health-to-impact-Creeper-explosion-radius.patch
Ben Kerllenevich d839ab0989 like 50 more patches
2023-06-08 19:39:47 -04:00

43 lines
2.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Encode42 <me@encode42.dev>
Date: Thu, 29 Apr 2021 20:28:18 -0400
Subject: [PATCH] Config for health to impact Creeper explosion radius
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
index 656ddb0011eebc7acb9eb72a79fc372b796aaafe..ec2d07e96241d8d0f100bb5492ae3bb6eb92ad85 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -295,9 +295,10 @@ public class Creeper extends Monster implements PowerableMob {
this.exploding = true; // Purpur
if (!this.level().isClientSide) {
float f = this.isPowered() ? 2.0F : 1.0F;
+ float multiplier = this.level.purpurConfig.creeperHealthRadius ? this.getHealth() / this.getMaxHealth() : 1; // Purpur
// CraftBukkit start
- ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), this.explosionRadius * f, false);
+ ExplosionPrimeEvent event = new ExplosionPrimeEvent(this.getBukkitEntity(), (this.explosionRadius * f) * multiplier, false); // Purpur
this.level().getCraftServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
this.dead = true;
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
index deb4f2e232e572a00a5e9eade4a82d0c9522600d..0a6a67d4fb74eebedab5b674d85f81c26013f3b5 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
@@ -856,6 +856,7 @@ public class PurpurWorldConfig {
public boolean creeperBypassMobGriefing = false;
public boolean creeperTakeDamageFromWater = false;
public boolean creeperExplodeWhenKilled = false;
+ public boolean creeperHealthRadius = false;
private void creeperSettings() {
if (PurpurConfig.version < 10) {
double oldValue = getDouble("mobs.creeper.attributes.max-health", creeperMaxHealth);
@@ -868,6 +869,7 @@ public class PurpurWorldConfig {
creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
creeperTakeDamageFromWater = getBoolean("mobs.creeper.takes-damage-from-water", creeperTakeDamageFromWater);
creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled);
+ creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius);
}
public double dolphinMaxHealth = 10.0D;