Files
Purpur/patches/server/0194-Config-for-health-to-impact-Creeper-explosion-radius.patch
William Blake Galbreath 8bd08ceeea Updated Upstream (Paper & Airplane)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
06db5d08b0 Updated Upstream (Bukkit/CraftBukkit) (#6589)
810d200bb4 Improve interact distance check (#6591)

Airplane Changes:
8207533bdf Upstream
2021-09-12 22:24:02 -05:00

43 lines
2.9 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 ba12eb0b3b4023371938ec4c076cbac3166099a8..02ebc4ee80d433f895e643bfbc618aa85d96cc43 100644
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
@@ -356,9 +356,10 @@ public class Creeper extends Monster implements PowerableMob {
if (!this.level.isClientSide) {
Explosion.BlockInteraction explosion_effect = (this.level.purpurConfig.creeperBypassMobGriefing || this.level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) && level.purpurConfig.creeperAllowGriefing ? Explosion.BlockInteraction.DESTROY : Explosion.BlockInteraction.NONE; // Purpur
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/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 4b85856a4b16892fdb8574f68eae231ec4509a62..ded9e1e0c302ffe3a9730a8247cc7b5331d90a88 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -907,6 +907,7 @@ public class PurpurWorldConfig {
public boolean creeperAllowGriefing = true;
public boolean creeperBypassMobGriefing = false;
public boolean creeperExplodeWhenKilled = false;
+ public boolean creeperHealthRadius = false;
private void creeperSettings() {
creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable);
creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater);
@@ -920,6 +921,7 @@ public class PurpurWorldConfig {
creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing);
creeperBypassMobGriefing = getBoolean("mobs.creeper.bypass-mob-griefing", creeperBypassMobGriefing);
creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled);
+ creeperHealthRadius = getBoolean("mobs.creeper.health-impacts-explosion", creeperHealthRadius);
}
public boolean dolphinRidable = false;