aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0645-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0645-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch')
-rw-r--r--patches/server/0645-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch131
1 files changed, 131 insertions, 0 deletions
diff --git a/patches/server/0645-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch b/patches/server/0645-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
new file mode 100644
index 0000000000..9fc439f344
--- /dev/null
+++ b/patches/server/0645-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
@@ -0,0 +1,131 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: MeFisto94 <[email protected]>
+Date: Tue, 11 May 2021 00:48:33 +0200
+Subject: [PATCH] Add a "should burn in sunlight" API for Phantoms and
+ Skeletons
+
+
+diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+index ecf12ed5014202181e78af051e4a9ca88a275794..e23fe546291e670f89447398507d08a0a07efa85 100644
+--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
++++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+@@ -96,9 +96,15 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
+ return MobType.UNDEAD;
+ }
+
++ // Paper start
++ private boolean shouldBurnInDay = true;
++ public boolean shouldBurnInDay() { return shouldBurnInDay; }
++ public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; }
++ // Paper end
++
+ @Override
+ public void aiStep() {
+- boolean flag = this.isSunBurnTick();
++ boolean flag = shouldBurnInDay && this.isSunBurnTick(); // Paper - Configurable Burning
+
+ if (flag) {
+ ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD);
+@@ -222,7 +228,20 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo
+ public void readAdditionalSaveData(CompoundTag nbt) {
+ super.readAdditionalSaveData(nbt);
+ this.reassessWeaponGoal();
++ // Paper start
++ if (nbt.contains("Paper.ShouldBurnInDay")) {
++ this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay");
++ }
++ // Paper end
++ }
++
++ // Paper start
++ @Override
++ public void addAdditionalSaveData(CompoundTag nbt) {
++ super.addAdditionalSaveData(nbt);
++ nbt.putBoolean("Paper.ShouldBurnInDay", this.shouldBurnInDay);
+ }
++ // Paper end
+
+ @Override
+ public void setItemSlot(EquipmentSlot slot, ItemStack stack) {
+diff --git a/src/main/java/net/minecraft/world/entity/monster/Phantom.java b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+index ca9324381a60fc3072719c39918a1c16ac88799b..b55640ed068becd40cbb7d7507b4e67ae9ee792a 100644
+--- a/src/main/java/net/minecraft/world/entity/monster/Phantom.java
++++ b/src/main/java/net/minecraft/world/entity/monster/Phantom.java
+@@ -144,7 +144,7 @@ public class Phantom extends FlyingMob implements Enemy {
+
+ @Override
+ public void aiStep() {
+- if (this.isAlive() && this.isSunBurnTick()) {
++ if (this.isAlive() && shouldBurnInDay && this.isSunBurnTick()) { // Paper - Configurable Burning
+ this.setSecondsOnFire(8);
+ }
+
+@@ -175,6 +175,9 @@ public class Phantom extends FlyingMob implements Enemy {
+ if (nbt.hasUUID("Paper.SpawningEntity")) {
+ this.spawningEntity = nbt.getUUID("Paper.SpawningEntity");
+ }
++ if (nbt.contains("Paper.ShouldBurnInDay")) {
++ this.shouldBurnInDay = nbt.getBoolean("Paper.ShouldBurnInDay");
++ }
+ // Paper end
+ }
+
+@@ -189,6 +192,7 @@ public class Phantom extends FlyingMob implements Enemy {
+ if (this.spawningEntity != null) {
+ nbt.putUUID("Paper.SpawningEntity", this.spawningEntity);
+ }
++ nbt.putBoolean("Paper.ShouldBurnInDay", shouldBurnInDay);
+ // Paper end
+ }
+
+@@ -248,6 +252,10 @@ public class Phantom extends FlyingMob implements Enemy {
+ return spawningEntity;
+ }
+ public void setSpawningEntity(java.util.UUID entity) { this.spawningEntity = entity; }
++
++ private boolean shouldBurnInDay = true;
++ public boolean shouldBurnInDay() { return shouldBurnInDay; }
++ public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; }
+ // Paper end
+ private static enum AttackPhase {
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractSkeleton.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractSkeleton.java
+index 5ff566186431440c25a26900aba14e4adb642031..5beaa2bb0d58fe477ce8d2de8b77600d3b416d8c 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractSkeleton.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractSkeleton.java
+@@ -20,4 +20,15 @@ public abstract class CraftAbstractSkeleton extends CraftMonster implements Abst
+ return (net.minecraft.world.entity.monster.AbstractSkeleton) super.getHandle();
+ }
+ // Paper end
++ // Paper start
++ @Override
++ public boolean shouldBurnInDay() {
++ return getHandle().shouldBurnInDay();
++ }
++
++ @Override
++ public void setShouldBurnInDay(boolean shouldBurnInDay) {
++ getHandle().setShouldBurnInDay(shouldBurnInDay);
++ }
++ // Paper end
+ }
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
+index c9dab70b0b284fe1c1daafd3c1f5bd08b14fa35d..dce23f3878b1588c26b6116d80e597d08070edbc 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
+@@ -40,5 +40,15 @@ public class CraftPhantom extends CraftFlying implements Phantom {
+ public java.util.UUID getSpawningEntity() {
+ return getHandle().getSpawningEntity();
+ }
++
++ @Override
++ public boolean shouldBurnInDay() {
++ return getHandle().shouldBurnInDay();
++ }
++
++ @Override
++ public void setShouldBurnInDay(boolean shouldBurnInDay) {
++ getHandle().setShouldBurnInDay(shouldBurnInDay);
++ }
+ // Paper end
+ }