aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0603-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0603-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch')
-rw-r--r--patches/server/0603-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch131
1 files changed, 131 insertions, 0 deletions
diff --git a/patches/server/0603-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch b/patches/server/0603-Add-a-should-burn-in-sunlight-API-for-Phantoms-and-S.patch
new file mode 100644
index 0000000000..45fefcead5
--- /dev/null
+++ b/patches/server/0603-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 ef525e5f523966c9af7380e8d09ff5092e56e7c5..9ca1e9d95e62929c0015d5ca2c2f9c70e421842e 100644
+--- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
++++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java
+@@ -98,9 +98,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);
+@@ -228,7 +234,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 ab639cb2faaafaeb33be91bfe99ffad6d23088db..4a132c3eff6978e927bcd4df56b9ce0306af6d19 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
+ }
+
+@@ -253,6 +257,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 1ebb83fe98f573d0a982397096d4dba7249aef4b..6b71f8b373ef524f5df16023b773e92249bb2532 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, CraftEnemy {
+ 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
+ }