mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 17:37:42 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: 5b20df6bf added PlayerNameEntityEvent ff9c82444 Add worldborder events 616b1f3cd consider enchants for destroy speed aaef1d5cc fix file conversion 674d8f7f7 Make discovered maps config work in treasure maps from loot tables too be1687914 stop firing pressure plate EntityInteractEvent for ignored entities (fixes #4962) 7d56f38ed Do not use the bukkit singleton for the GUI (Fixes #5301) 4c9bdf53a Updated Upstream (Bukkit/CraftBukkit/Spigot) (#5299) 8647bd130 Improve ServerGUI fcc6d3359 Throw proper exception on empty JsonList file 17d2e1291 Fix interact event in adventure mode 964e0bf42 MC-29274: Fix Wither hostility towards players 9e24a5213 Fixed furnace cook-speed multiplier losing precision when calculating cook time c7e42faa3 Do not create unnecessary copies of the passenger list 40881ad67 added tnt minecarts to the tnt height nerf 26be708f4 Remove streams from SensorNearest 5b5989b21 fix nullability of playerlist header/footer, closes #5290 45bc531dd Fix Material#getTranslationKey for Block Materials (#5294)
72 lines
3.7 KiB
Diff
72 lines
3.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: jmp <jasonpenilla2@me.com>
|
|
Date: Thu, 20 Aug 2020 17:38:12 -0700
|
|
Subject: [PATCH] Customizable wither health and healing
|
|
|
|
Adds the ability to customize the health of the wither, as well as the amount that it heals, and how often.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java
|
|
index f149eeb4dd2be51ef028998c0ec6398cb9b3f4bb..cc4b0945fb9186c6975136d48ce8dfc12b4d4230 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityWither.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityWither.java
|
|
@@ -150,6 +150,11 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
|
|
skull.setPositionRaw(headX, headY, headZ);
|
|
world.addEntity(skull);
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public void initAttributes() {
|
|
+ this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(world.purpurConfig.witherMaxHealth);
|
|
+ }
|
|
// Purpur end
|
|
|
|
@Override
|
|
@@ -354,7 +359,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
|
|
|
|
this.setInvul(i);
|
|
if (this.ticksLived % 10 == 0) {
|
|
- this.heal(10.0F, EntityRegainHealthEvent.RegainReason.WITHER_SPAWN); // CraftBukkit
|
|
+ this.heal(this.getMaxHealth() / 33, EntityRegainHealthEvent.RegainReason.WITHER_SPAWN); // CraftBukkit // Purpur - use max health for healing instead of a constant
|
|
}
|
|
|
|
} else {
|
|
@@ -463,8 +468,10 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
|
|
}
|
|
}
|
|
|
|
- if (this.ticksLived % 20 == 0) {
|
|
- this.heal(1.0F, EntityRegainHealthEvent.RegainReason.REGEN); // CraftBukkit
|
|
+ // Purpur start - customizable heal rate and amount
|
|
+ if (this.ticksLived % world.purpurConfig.witherHealthRegenDelay == 0) {
|
|
+ this.heal(world.purpurConfig.witherHealthRegenAmount, EntityRegainHealthEvent.RegainReason.REGEN); // CraftBukkit
|
|
+ // Purpur end
|
|
}
|
|
|
|
//this.bossBattle.setProgress(this.getHealth() / this.getMaxHealth()); // Paper - Moved down
|
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
index cf4ac765fdbaf961e913ca028edc084373eba978..94a870113dc45201379c1efc7e83162c303573df 100644
|
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
|
@@ -921,10 +921,21 @@ public class PurpurWorldConfig {
|
|
public boolean witherRidable = false;
|
|
public boolean witherRidableInWater = false;
|
|
public double witherMaxY = 256D;
|
|
+ public float witherHealthRegenAmount = 1.0f;
|
|
+ public int witherHealthRegenDelay = 20;
|
|
+ public double witherMaxHealth = 300.0D;
|
|
private void witherSettings() {
|
|
witherRidable = getBoolean("mobs.wither.ridable", witherRidable);
|
|
witherRidableInWater = getBoolean("mobs.wither.ridable-in-water", witherRidableInWater);
|
|
witherMaxY = getDouble("mobs.wither.ridable-max-y", witherMaxY);
|
|
+ witherHealthRegenAmount = (float) getDouble("mobs.wither.health-regen-amount", witherHealthRegenAmount);
|
|
+ witherHealthRegenDelay = getInt("mobs.wither.health-regen-delay", witherHealthRegenDelay);
|
|
+ if (PurpurConfig.version < 8) {
|
|
+ double oldValue = getDouble("mobs.wither.max-health", witherMaxHealth);
|
|
+ set("mobs.wither.attributes.max-health", oldValue);
|
|
+ set("mobs.wither.max-health", null);
|
|
+ }
|
|
+ witherMaxHealth = getDouble("mobs.wither.attributes.max-health", witherMaxHealth);
|
|
}
|
|
|
|
public boolean witherSkeletonRidable = false;
|